阅行客电子档案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

222 lines
8.4 KiB

<template>
<div class="app-container row-container">
<div class="head-container">
<div class="head-search">
<!-- 搜索 -->
<el-input v-model="query.search" clearable size="small" placeholder="输入关键字搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" />
<date-range-picker v-model="blurryTime" class="date-item" />
<rrOperation />
</div>
<crudOperation>
<template v-slot:left>
<el-button size="mini" @click="crud.toAdd">
<i class="iconfont icon-fabu" />
发布
</el-button>
</template>
</crudOperation>
</div>
<div class="container-wrap">
<span class="right-top-line" />
<span class="left-bottom-line" />
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
style="width: 100%;"
@row-dblclick="handleDbClick"
>
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="noticeType" label="消息类型" align="center" min-width="100">
<template slot-scope="scope">
<span v-if="scope.row.noticeType===0">系统消息</span>
</template>
</el-table-column>
<el-table-column prop="noticeTitle" :show-overflow-tooltip="true" label="标题" min-width="150" align="center" />
<el-table-column prop="noticeContext" :show-overflow-tooltip="true" label="内容" align="center" min-width="200" />
<el-table-column :show-overflow-tooltip="true" label="发送对象" align="center" min-width="200">
<template v-if="scope.row.noticeDevices.length !== 0" slot-scope="scope">
{{ scope.row.noticeDevices.join(',') }}
<!-- <div class="tag-hidden">
<el-tag v-for="(item,i) in scope.row.noticeDevices" :key="i" style="margin-left:3px; color: #fff">{{ item }}</el-tag>
</div> -->
</template>
<template v-if="scope.row.noticeUsers.length !== 0" slot-scope="scope">
<!-- <div class="tag-hidden">
<el-tag v-for="(item,i) in scope.row.noticeUsers" :key="i" style="margin-left:3px; color: #fff">{{ item }}</el-tag>
</div> -->
{{ scope.row.noticeUsers.join(',') }}
</template>
</el-table-column>
<el-table-column prop="create_by" label="创建人" align="center" min-width="100" />
<el-table-column prop="create_time" label="创建时间" align="center" min-width="180">
<template slot-scope="scope">
<div>{{ scope.row.create_time | parseTime }}</div>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
<!-- 发布 -->
<el-dialog append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :before-close="crud.cancelCU" :visible="crud.status.cu > 0" title="发布通知">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-form ref="form" :rules="rules" :model="form" size="small" label-width="100px">
<el-form-item label="消息类型" prop="noticeType" class="down-select">
<el-input v-model="form.noticeTypeName" disabled />
<!-- <el-select v-model="noticeType" placeholder="请选择">
<el-option
v-for="item in msgTypeOptions"
:key="item.name"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
/>
</el-select> -->
</el-form-item>
<el-form-item label="标题" prop="noticeTitle">
<el-input v-model="form.noticeTitle" placeholder="请输入" style="width: 580px;" />
</el-form-item>
<el-form-item label="内容" prop="noticeContext">
<el-input v-model="form.noticeContext" placeholder="请输入" type="textarea" rows="3" style="width: 580px;" />
</el-form-item>
<el-form-item label="发送对象" prop="userId">
<div class="send-obj">
<span v-if="pushObjItem.length === 0">点击下方按钮选择对象</span>
<el-tag
v-for="tag in pushObjItem"
v-else
:key="tag.userId"
:disable-transitions="false"
>
{{ tag.username }}
</el-tag>
</div>
</el-form-item>
<span class="select-btn iconfont icon-shezhi" @click="openSelectObj" />
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">保存</el-button>
</div>
</div>
</el-dialog>
<SelectObj ref="selectObj" @selectObjItem="handleSelectObjItem" />
<Detail ref="archiveDetailDom" />
</div>
</template>
<script>
import crudNotify from '@/api/system/notify'
import CRUD, { presenter, header, form, crud } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import rrOperation from '@crud/RR.operation'
import DateRangePicker from '@/components/DateRangePicker'
import pagination from '@crud/Pagination'
import SelectObj from './module/selectObj'
import Detail from './module/detail'
const defaultForm = { id: null, noticeTypeName: '系统消息', noticeType: null, noticeTitle: null, noticeContext: null, userId: [], deviceInfoId: [] }
export default {
name: 'NotifyManage',
components: { crudOperation, rrOperation, DateRangePicker, pagination, SelectObj, Detail },
cruds() {
return CRUD({ title: '通知', url: 'api/notice/initNotice', crudMethod: { ...crudNotify }, sort: [], optShow: {
add: false,
edit: false,
del: false,
download: false,
group: false
}})
},
mixins: [presenter(), header(), form(defaultForm), crud()],
data() {
return {
blurryTime: null,
sendVisible: false,
tableData: [],
pushObjItem: [],
msgTypeOptions: [
{ value: 1, label: '系统通知' }
// { value: 2, label: '报警消息', disabled: true },
// { value: 3, label: '借还消息', disabled: true },
// { value: 4, label: '下载消息', disabled: true }
],
rules: {
noticeTitle: [
{ required: true, message: '标题不可为空', trigger: 'blur' }
],
noticeContext: [
{ required: true, message: '内容不可为空', trigger: 'blur' }
],
userId: [
{ required: true, message: '发送对象不可为空', trigger: 'blur' }
]
}
}
},
async created() {
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
if (this.blurryTime) {
this.crud.query.startTime = this.blurryTime[0]
this.crud.query.endTime = this.blurryTime[1]
} else {
this.crud.query.startTime = null
this.crud.query.endTime = null
}
},
openSelectObj() {
this.$refs.selectObj.sendObjVisible = true
this.$refs.selectObj.getFondsDatas()
},
handleSelectObjItem(objType, selectItemAll) {
this.pushObjItem = selectItemAll
if (objType === 0) {
this.form.userId = selectItemAll.map(item => item.userId)
this.form.deviceInfoId = []
} else {
this.form.userId = []
}
},
// 提交前的验证
[CRUD.HOOK.afterValidateCU](crud) {
console.log(crud.form)
crud.form.noticeType = 0
delete crud.form.noticeTypeName
return true
},
handleDbClick(row) {
this.$nextTick(() => {
this.$refs.archiveDetailDom.detailVisible = true
this.$refs.archiveDetailDom.rowData = row
})
}
}
}
</script>
<style lang="scss" scoped>
.select-btn{
display: inline-block;
padding: 4px 11px 4px 14px;
font-size: 18px;
color: #fff;
background: #0348F3;
border-radius: 3px;
margin: 10px 0 0 100px;
text-align: center;
cursor: pointer;
}
.send-obj{
width: 580px;
height: 180px;
padding: 0 10px;
border-radius: 3px 3px 3px 3px;
border: 1px solid #E6E8ED;
}
</style>