From d38ab21933f28fc646e128bcbf637c3f311eb5f2 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Fri, 02 Feb 2024 11:13:49 +0800
Subject: [PATCH] 消息管理,系统消息,我的消息
---
src/api/messageRecord/messageUser.js | 23 +
src/views/message/sysMessage.vue | 337 ++++++++++++++++++
src/views/message/myMessage.vue | 389 +++++++++++++++++++++
src/api/messageRecord/messageRecord.js | 58 +++
src/page/index/top/components/messageContent.vue | 70 +++
src/api/system/dept.js | 10
src/page/index/top/top-notice.vue | 184 ++++++---
7 files changed, 1,009 insertions(+), 62 deletions(-)
diff --git a/src/api/messageRecord/messageRecord.js b/src/api/messageRecord/messageRecord.js
new file mode 100644
index 0000000..e5e9c54
--- /dev/null
+++ b/src/api/messageRecord/messageRecord.js
@@ -0,0 +1,58 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+ return request({
+ url: '/api/messageRecord/messageRecord/page',
+ method: 'get',
+ params: {
+ ...params,
+ current,
+ size,
+ }
+ })
+}
+
+export const getDetail = (id) => {
+ return request({
+ url: '/api/messageRecord/messageRecord/detail',
+ method: 'get',
+ params: {
+ id
+ }
+ })
+}
+
+export const remove = (ids) => {
+ return request({
+ url: '/api/messageRecord/messageRecord/remove',
+ method: 'post',
+ params: {
+ ids,
+ }
+ })
+}
+
+export const add = (row) => {
+ return request({
+ url: '/api/messageRecord/messageRecord/submit',
+ method: 'post',
+ data: row
+ })
+}
+
+export const customizeSave = (row) => {
+ return request({
+ url: '/api/messageRecord/messageRecord/customizeSave',
+ method: 'post',
+ data: row
+ })
+}
+
+export const update = (row) => {
+ return request({
+ url: '/api/messageRecord/messageRecord/submit',
+ method: 'post',
+ data: row
+ })
+}
+
diff --git a/src/api/messageRecord/messageUser.js b/src/api/messageRecord/messageUser.js
new file mode 100644
index 0000000..c180a08
--- /dev/null
+++ b/src/api/messageRecord/messageUser.js
@@ -0,0 +1,23 @@
+import request from '@/router/axios';
+
+export const getMyMessage = (current, size, params) => {
+ return request({
+ url: '/api/messageUser/messageUser/getMessage',
+ method: 'get',
+ params: {
+ ...params,
+ current,
+ size,
+ }
+ })
+}
+
+export const updateIsRead = (ids,isRead) => {
+ return request({
+ url: '/api/messageUser/messageUser/updateIsReadStatus',
+ method: 'post',
+ params:{
+ ids,isRead
+ }
+ })
+}
diff --git a/src/api/system/dept.js b/src/api/system/dept.js
index 117f6fc..6ebf663 100644
--- a/src/api/system/dept.js
+++ b/src/api/system/dept.js
@@ -79,3 +79,13 @@
})
}
+export const getDeptUserTree=(params)=>{
+ return request({
+ url: '/api/blade-system/dept/getDeptAndUserTree',
+ method: 'get',
+ params: {
+ ...params
+ }
+ })
+}
+
diff --git a/src/page/index/top/components/messageContent.vue b/src/page/index/top/components/messageContent.vue
new file mode 100644
index 0000000..2b9f58f
--- /dev/null
+++ b/src/page/index/top/components/messageContent.vue
@@ -0,0 +1,70 @@
+<template>
+ <el-dialog
+ :title="title"
+ append-to-body
+ :visible.sync="box"
+ width="60%"
+ >
+ <avue-form :option="option" v-model="form"> </avue-form>
+ <!-- <sapn>{{ form.content }}</sapn> -->
+ </el-dialog>
+</template>
+<script>
+import {updateIsRead} from "@/api/messageRecord/messageUser";
+
+export default {
+ name: "messsageContent",
+ data() {
+ return {
+ title:"",
+ box: false,
+ form: {},
+ option: {
+ submitBtn: false,
+ emptyBtn: false,
+ column: [
+ // {
+ // label: "主題",
+ // prop: "theme",
+ // disabled:true,
+ // span:24
+ // },
+ {
+ label: "",
+ labelWidth:1,
+ prop: "content",
+ type: "textarea",
+ // disabled:true,
+ span:24
+ },
+ ],
+ }
+ };
+ },
+ created(){
+
+ },
+ methods:{
+ // 初始化
+ init(data){
+ this.title = data.title
+ this.box = true
+ this.form = data;
+ if(data.isRead ==2){
+ this.updateMessage(data)
+ }
+ },
+ updateMessage(data){
+ // 设置为已读
+ updateIsRead(data.id,'1');
+ // 刷新列表
+ this.$emit('reflushList','')
+ }
+ }
+};
+</script>
+<style scoped lang="scss">
+::v-deep(.avue-form__menu--center){
+ display: none !important;
+}
+</style>
diff --git a/src/page/index/top/top-notice.vue b/src/page/index/top/top-notice.vue
index b1c7c13..d487a3a 100644
--- a/src/page/index/top/top-notice.vue
+++ b/src/page/index/top/top-notice.vue
@@ -1,92 +1,138 @@
<template>
- <div class="noticeBtn" @click="noticeBtn">
- <el-badge v-if="!view">
- <img src="img/notice/xiaoxi-png.png" style="width: 26px;height: 26px; display: flex;" />
- </el-badge>
- <el-badge v-if="view">
- <!-- <i class="el-icon-bell"></i> -->
- <img src="img/notice/xiaoxi-gif.gif" style="width: 26px;height: 26px; display: flex;" />
- </el-badge>
- </div>
- <!-- <el-popover placement="bottom"
- width="0"
- trigger="click"> -->
+<!-- <div class="noticeBtn" @click="noticeBtn">-->
+<!-- <el-badge v-if="!view">-->
+<!-- <img src="img/notice/xiaoxi-png.png" style="width: 26px;height: 26px; display: flex;" />-->
+<!-- </el-badge>-->
+<!-- <el-badge v-if="view">-->
+<!-- <!– <i class="el-icon-bell"></i> –>-->
+<!-- <img src="img/notice/xiaoxi-gif.gif" style="width: 26px;height: 26px; display: flex;" />-->
+<!-- </el-badge>-->
+<!-- </div>-->
- <!-- <el-tabs v-model="activeName">
- <el-tab-pane label="邮件(1)"
- name="first"></el-tab-pane>
- <el-tab-pane label="消息(2)"
- name="second"></el-tab-pane>
- <el-tab-pane label="通知"
- name="third"></el-tab-pane>
+
+ <el-popover placement="bottom" width="350" trigger="click">
+ <el-tabs v-model="activeName" @tab-click="handleTabClick">
+ <el-tab-pane label="未读" name="2"></el-tab-pane>
+ <el-tab-pane label="已读" name="1"></el-tab-pane>
</el-tabs>
<el-scrollbar style="height:300px">
- <avue-notice :data="data"
- :option="option"
- @page-change="pageChange"></avue-notice>
- </el-scrollbar> -->
- <!-- <div slot="reference">
+ <avue-notice :data="data" :option="option" :finish="finish" @page-change="pageChange" @click="handleClick"></avue-notice>
+ </el-scrollbar>
+ <div slot="reference">
<el-badge is-dot>
<i class="el-icon-bell"></i>
</el-badge>
- </div> -->
- <!-- </el-popover> -->
+<!-- <el-badge :value="number" :max="99" class="item">-->
+<!-- <i class="el-icon-bell"></i>-->
+<!-- </el-badge>-->
+ </div>
+ <messageContent ref="messageContent" @reflushList="reflushList" />
+ </el-popover>
+
+
+
+
</template>
<script>
import { updateView, getList } from "@/api/task/reportForRepairs"
-let list = [{
- img: '/img/bg/vip1.png',
- title: '史蒂夫·乔布斯 关注了你',
- subtitle: '05-08 15:08',
- tag: '已经开始',
- status: 0
-}, {
- img: '/img/bg/vip2.png',
- title: '斯蒂夫·沃兹尼亚克 关注了你',
- subtitle: '05-08 15:08',
- tag: '未开始',
- status: 1
-}, {
- img: '/img/bg/vip3.png',
- title: '蒂姆·库克 关注了你',
- subtitle: '05-08 15:08',
- status: 3,
- tag: '有错误'
-}, {
- img: '/img/bg/vip4.png',
- title: '比尔·费尔南德斯 关注了你',
- subtitle: '05-08 15:08',
- status: 4,
- tag: '已完成'
-}]
+import {getMyMessage} from "@/api/messageRecord/messageUser";
+import {mapGetters} from "vuex";
+import MessageContent from "@/page/index/top/components/messageContent.vue";
export default {
name: "top-notice",
+ components: {MessageContent},
data () {
return {
+ finish: false,
baseUrl: "https://sk.hubeishuiyi.cn",
total: 0,
view: false,
- activeName: 'first',
+ activeName: '2',
+ page:{
+ current:1,
+ pageSize:5
+ },
option: {
props: {
img: 'img',
title: 'title',
- subtitle: 'subtitle',
- tag: 'tag',
- status: 'status'
+ subtitle: 'time',
+ tag: "tag",
+ status: "s",
},
},
- data: list,
+ data: [],
+
+ number:"",
}
},
+ computed: {
+ ...mapGetters(["userInfo", "permission"]),
+ },
created () {
- this.getNoticeNumber()
+ // this.getNoticeNumber()
+
+ this.getMessage(this.page)
+
+
},
mounted () {
this.createEventSource()
},
methods: {
+ // 刷新
+ reflushList () {
+ // this.getNotReadNumber();
+ this.getMessage(this.page)
+ },
+ // tab 点击事件
+ handleTabClick (tab, event) {
+ this.page = 1
+ this.activeName = tab.name
+ this.getMessage(this.page)
+ },
+ // 行点击
+ handleClick (row) {
+ // 弹窗
+ this.$nextTick(() => {
+ this.$refs.messageContent.init(row)
+ })
+ },
+
+ getMessage(page,params={}){
+ params.messageType = 'receive'
+ params.isRead = this.activeName
+ params.userId = this.userInfo.user_id
+
+ getMyMessage(page.current,page.size,params).then(res=>{
+ const data = res.data.data
+ const record = data.records
+ record.forEach((item) => {
+ item["tag"] = "查看"
+ item["s"] = "查看"
+ })
+
+ this.data = record
+
+ if (params.isRead == 2){
+ this.number = data.total
+
+ if (data.total == 0){
+ this.number = ""
+ }
+
+ }
+
+ if (data.total < 6) {
+ this.finish = true
+ } else {
+ this.finish = false
+ }
+ })
+
+ },
+
getNoticeNumber () {
var values = {
viewType: 2
@@ -151,11 +197,25 @@
}
},
pageChange (page, done) {
- setTimeout(() => {
- this.$message.success('页码' + page)
- this.data = this.data.concat(list)
- done()
- }, 1000)
+ let params = {}
+
+ params.messageType = 'receive'
+ params.isRead = this.activeName
+ params.userId = this.userInfo.user_id
+
+ getMyMessage(page,page.size,params).then(res=>{
+ const data = res.data.data
+ const record = data.records
+ record.forEach((item) => {
+ item["tag"] = "查看"
+ item["s"] = "查看"
+ })
+ this.data = this.data.concat(record)
+ if (this.data.length == data.total) {
+ this.finish = true
+ }
+ done()
+ })
},
}
diff --git a/src/views/message/myMessage.vue b/src/views/message/myMessage.vue
new file mode 100644
index 0000000..ad527a5
--- /dev/null
+++ b/src/views/message/myMessage.vue
@@ -0,0 +1,389 @@
+<template>
+ <basic-container>
+ <avue-crud :option="option"
+ :table-loading="loading"
+ :data="data"
+ :page.sync="page"
+ :permission="permissionList"
+ v-model="form"
+ ref="crud"
+ @row-update="rowUpdate"
+ @row-save="rowSave"
+ @row-del="rowDel"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @selection-change="selectionChange"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @refresh-change="refreshChange"
+ @on-load="onLoad">
+
+ <template slot="menuLeft">
+ <div class="menu-left">
+ <div class="operation">
+ <el-radio-group v-model="mode" size="small" @input="radioChange">
+ <el-radio-button label="receive">收件箱</el-radio-button>
+ <el-radio-button label="send">已发送</el-radio-button>
+ </el-radio-group>
+ </div>
+ <div class="operation">
+ <el-button type="primary" v-if="mode == 'receive'"
+ size="small"
+ icon="el-icon-message"
+ plain
+ @click="handleBatchRead">标为已读
+ </el-button>
+ </div>
+ </div>
+
+
+ </template>
+
+ <template slot-scope="{ row, size, index }" slot="menu">
+ <el-button :size="size" type="text" icon="el-icon-message" v-if="mode == 'receive'"
+ @click="handleIsRead(row)">已读
+ </el-button>
+ </template>
+
+ </avue-crud>
+ </basic-container>
+</template>
+
+<script>
+import {mapGetters} from "vuex";
+import {getDeptUserTree, getLazyList} from "@/api/system/dept";
+import {getMyMessage, updateIsRead} from "@/api/messageRecord/messageUser";
+import {remove} from "@/api/messageRecord/messageRecord";
+
+export default {
+ data() {
+ return {
+ mode: 'receive',
+
+ form: {},
+ query: {},
+ loading: true,
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0
+ },
+ selectionList: [],
+ option: {
+ height: 'auto',
+ calcHeight: 30,
+ tip: false,
+ searchShow: true,
+ searchMenuSpan: 6,
+ border: true,
+ index: true,
+ viewBtn: true,
+ selection: true,
+ dialogClickModal: false,
+ editBtn: false,
+ addBtnText: "消息发送",
+ saveBtnText: "发送",
+ addBtn: false,
+ delBtn: false,
+
+ column: [
+ {
+ label: "标题",
+ prop: "title",
+ search: true,
+ searchSpan: 4,
+ searchLabelWidth:66,
+ type: "input",
+ span: 24,
+ },
+ {
+ label: "内容",
+ prop: "content",
+ type: "textarea",
+ minRow: 5,
+ span: 24,
+ },
+ {
+ label: "发送时间",
+ prop: "time",
+ span: 24,
+ },
+ {
+ label: "发送时间",
+ prop: "dateTime",
+ type: "daterange",
+ format: "yyyy-MM-dd",
+ valueFormat: "yyyy-MM-dd",
+ searchRange: true,
+ hide: true,
+ display: false,
+ search: true,
+ searchLabelWidth:96,
+ },
+ {
+ label: "发送人",
+ prop: "userName",
+ span: 24,
+ },
+ {
+ label: "消息状态",
+ prop: "isRead",
+ dicData: [
+ {label: '已读', value: '1'},
+ {label: '未读', value: '2'}
+ ],
+ props: {
+ label: "label",
+ value: "value",
+ },
+ type: "select",
+ },
+ ]
+ },
+ data: []
+ };
+ },
+ watch: {},
+ computed: {
+ ...mapGetters(["permission", "userInfo"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(this.permission.messageRecord_add, false),
+ viewBtn: this.vaildData(this.permission.messageRecord_view, false),
+ delBtn: this.vaildData(this.permission.messageRecord_delete, false),
+ editBtn: this.vaildData(this.permission.messageRecord_edit, false)
+ };
+ },
+ ids() {
+ let ids = [];
+ this.selectionList.forEach(ele => {
+ ids.push(ele.id);
+ });
+ return ids.join(",");
+ }
+ },
+ created() {
+ // this.getTreeData()
+ },
+ methods: {
+
+ handleBatchRead() {
+
+ if (this.selectionList.length === 0) {
+ this.$message.warning("请选择至少一条数据");
+ return;
+ }
+ this.$confirm("是否已读?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return updateIsRead(this.ids, '1');
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ this.$refs.crud.toggleSelection();
+ });
+
+
+ },
+ handleIsRead(row) {
+ this.$confirm("是否已读?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return updateIsRead(row.id, '1');
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ });
+ },
+ radioChange(data) {
+ this.page.currentPage = 1
+ this.columnChange()
+ this.onLoad(this.page)
+ },
+ columnChange() {
+ let receiveUserColumn = this.findObject(this.option.column, 'userName')
+ if (this.mode == 'receive') {
+ //显示标题,内容,接收时间,发送人,是否已读
+ receiveUserColumn.label = "发送人"
+
+ } else if (this.mode == 'send') {
+ //显示标题,内容,发送时间,发送对象
+ receiveUserColumn.label = "接收人"
+
+ }
+ this.option.column.sort((a, b) => a.sortValue - b.sortValue)
+ this.$refs.crud.refreshTable()
+ console.log(this.option.column)
+ },
+ getTreeData() {
+ let params = {
+ showWg: false
+ }
+
+ getLazyList("", params).then(res => {
+ let data = res.data.data
+ data = data.filter(e => e.name != '群众')
+ let receiver = this.findObject(this.option.column, 'receiver')
+ receiver.dicData = data
+ })
+ },
+
+ rowSave(row, done, loading) {
+ row.type = row.type.split(",").sort((a, b) => a - b).join(",")
+ // row.receiver = row.receiver.join(",")
+ // row.type = row.type.join(",")
+ row['messageResource'] = 1
+ customizeSave(row).then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ done();
+ }, error => {
+ loading();
+ window.console.log(error);
+ });
+ },
+ rowUpdate(row, index, done, loading) {
+ update(row).then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ done();
+ }, error => {
+ loading();
+ console.log(error);
+ });
+ },
+ rowDel(row) {
+ this.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(row.id);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ });
+ },
+ handleDelete() {
+ if (this.selectionList.length === 0) {
+ this.$message.warning("请选择至少一条数据");
+ return;
+ }
+ this.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(this.ids);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ this.$refs.crud.toggleSelection();
+ });
+ },
+ beforeOpen(done, type) {
+ if (["edit", "view"].includes(type)) {
+ getDetail(this.form.id).then(res => {
+ this.form = res.data.data;
+ });
+ }
+ done();
+ },
+ searchReset() {
+ this.query = {};
+ this.onLoad(this.page);
+ },
+ searchChange(params, done) {
+ this.query = params;
+ this.page.currentPage = 1;
+ this.onLoad(this.page, params);
+ done();
+ },
+ selectionChange(list) {
+ this.selectionList = list;
+ },
+ selectionClear() {
+ this.selectionList = [];
+ this.$refs.crud.toggleSelection();
+ },
+ currentChange(currentPage) {
+ this.page.currentPage = currentPage;
+ },
+ sizeChange(pageSize) {
+ this.page.pageSize = pageSize;
+ },
+ refreshChange() {
+ this.onLoad(this.page, this.query);
+ },
+ onLoad(page, params = {}) {
+ this.loading = true;
+
+ params.messageType = this.mode
+ params.userId = this.userInfo.user_id
+ params.type = "1"
+
+ const {dateTime} = this.query
+ let values = {...params,}
+ if (dateTime) {
+ values = {
+ ...params,
+ startTime: dateTime[0],
+ endTime: dateTime[1],
+ ...this.query,
+ }
+ values.dateTime = null
+ }
+
+ getMyMessage(page.currentPage, page.pageSize, values).then(res => {
+ const data = res.data.data;
+ this.page.total = data.total;
+ this.data = data.records;
+ this.loading = false;
+ this.selectionClear();
+ });
+
+ }
+ }
+};
+</script>
+
+<style scoped>
+
+.menu-left {
+ display: flex;
+}
+
+.operation {
+ margin-right: 10px;
+}
+</style>
diff --git a/src/views/message/sysMessage.vue b/src/views/message/sysMessage.vue
new file mode 100644
index 0000000..a0d1c4f
--- /dev/null
+++ b/src/views/message/sysMessage.vue
@@ -0,0 +1,337 @@
+<template>
+ <basic-container>
+ <avue-crud :option="option"
+ :table-loading="loading"
+ :data="data"
+ :page.sync="page"
+ :permission="permissionList"
+ :before-open="beforeOpen"
+ v-model="form"
+ ref="crud"
+ @row-update="rowUpdate"
+ @row-save="rowSave"
+ @row-del="rowDel"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @selection-change="selectionChange"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @refresh-change="refreshChange"
+ @on-load="onLoad">
+ <template slot="menuLeft">
+ <el-button type="danger"
+ size="small"
+ icon="el-icon-delete"
+ plain
+ v-if="permission.messageRecord_delete"
+ @click="handleDelete">删 除
+ </el-button>
+ </template>
+ </avue-crud>
+ </basic-container>
+</template>
+
+<script>
+import {getList, getDetail, add, update, remove, customizeSave} from "@/api/messageRecord/messageRecord";
+import {mapGetters} from "vuex";
+import {getDeptUserTree, getLazyList} from "@/api/system/dept";
+
+export default {
+ data() {
+ return {
+ form: {},
+ query: {},
+ loading: true,
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0
+ },
+ selectionList: [],
+ option: {
+ height: 'auto',
+ calcHeight: 30,
+ tip: false,
+ searchShow: true,
+ searchMenuSpan: 6,
+ border: true,
+ index: true,
+ viewBtn: true,
+ selection: true,
+ dialogClickModal: false,
+ editBtn: false,
+ addBtnText: "消息发送",
+ saveBtnText: "发送",
+ delBtn:false,
+ column: [
+ {
+ label: "消息类型",
+ prop: "type",
+ type: "checkbox",
+ search:true,
+ searchSpan: 4,
+ searchLabelWidth:96,
+ row: true,
+ dicUrl: "/api/blade-system/dict-biz/dictionary?code=messageType",
+ props: {
+ label: "dictValue",
+ value: "dictKey",
+ },
+ rules: [{
+ required: true,
+ message: "请选择消息类型",
+ trigger: "blur"
+ }]
+ },
+ {
+ label: "接收人",
+ prop: "receiver",
+ type: "tree",
+ leafOnly: false,
+ multiple: true,
+ dicUrl: `/api/blade-system/dept/lazy-list`,
+ dicData: [],
+ props: {
+ label: 'name',
+ value: 'id'
+ },
+ span: 24,
+ rules: [{
+ required: true,
+ message: "请选择接收人",
+ trigger: "blur"
+ }]
+ },
+ {
+ label: "标题",
+ prop: "title",
+ type: "input",
+ span: 24,
+ rules: [{
+ required: true,
+ message: "请输入标题",
+ trigger: "blur"
+ }]
+ },
+ {
+ label: "内容",
+ prop: "content",
+ type: "textarea",
+ minRow: 5,
+ span: 24,
+ rules: [{
+ required: true,
+ message: "请输入内容",
+ trigger: "blur"
+ }]
+ },
+ {
+ label: "发送时间",
+ prop: "createTime",
+ span: 24,
+ display:false
+ },
+ {
+ label: "发送时间",
+ prop: "dateTime",
+ type: "daterange",
+ format: "yyyy-MM-dd",
+ valueFormat: "yyyy-MM-dd",
+ searchRange: true,
+ hide: true,
+ display: false,
+ search: true,
+ searchLabelWidth:96,
+ },
+ ]
+ },
+ data: []
+ };
+ },
+ computed: {
+ ...mapGetters(["permission"]),
+ permissionList() {
+ return {
+ addBtn: this.vaildData(this.permission.messageRecord_add, false),
+ viewBtn: this.vaildData(this.permission.messageRecord_view, false),
+ delBtn: this.vaildData(this.permission.messageRecord_delete, false),
+ editBtn: this.vaildData(this.permission.messageRecord_edit, false)
+ };
+ },
+ ids() {
+ let ids = [];
+ this.selectionList.forEach(ele => {
+ ids.push(ele.id);
+ });
+ return ids.join(",");
+ }
+ },
+ created() {
+ this.getTreeData()
+ },
+ methods: {
+
+ getTreeData() {
+ // getDeptUserTree().then(res=>{
+ // console.log(res,"+++++++++++")
+ // let data = res.data.data
+ // let receiveUser = this.findObject(this.option.column, 'receiveUser')
+ // receiveUser.dicData = data
+ //
+ // })
+ let params = {
+ showWg: false
+ }
+
+ getLazyList("", params).then(res => {
+ let data = res.data.data
+ data = data.filter(e => e.name != '群众')
+ let receiver = this.findObject(this.option.column, 'receiver')
+ receiver.dicData = data
+ })
+ },
+
+ rowSave(row, done, loading) {
+ console.log(typeof row.type,"+++++++++++")
+ if (typeof row.type == 'object'){
+ row.type = row.type.sort((a,b)=>a-b).join(",")
+ }else{
+ row.type = row.type.split(",").sort((a,b)=>a-b).join(",")
+ }
+
+ if (typeof row.receiver == 'object'){
+ row.receiver = row.receiver.join(",")
+ }
+
+ // row.receiver = row.receiver.join(",")
+ // row.type = row.type.join(",")
+ row['messageResource'] = 1
+ customizeSave(row).then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ done();
+ }, error => {
+ loading();
+ window.console.log(error);
+ });
+ },
+ rowUpdate(row, index, done, loading) {
+ update(row).then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ done();
+ }, error => {
+ loading();
+ console.log(error);
+ });
+ },
+ rowDel(row) {
+ this.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(row.id);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ });
+ },
+ handleDelete() {
+ if (this.selectionList.length === 0) {
+ this.$message.warning("请选择至少一条数据");
+ return;
+ }
+ this.$confirm("确定将选择数据删除?", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ return remove(this.ids);
+ })
+ .then(() => {
+ this.onLoad(this.page);
+ this.$message({
+ type: "success",
+ message: "操作成功!"
+ });
+ this.$refs.crud.toggleSelection();
+ });
+ },
+ beforeOpen(done, type) {
+ if (["edit", "view"].includes(type)) {
+ getDetail(this.form.id).then(res => {
+ this.form = res.data.data;
+ });
+ }
+ done();
+ },
+ searchReset() {
+ this.query = {};
+ this.onLoad(this.page);
+ },
+ searchChange(params, done) {
+ this.query = params;
+ this.page.currentPage = 1;
+ this.onLoad(this.page, params);
+ done();
+ },
+ selectionChange(list) {
+ this.selectionList = list;
+ },
+ selectionClear() {
+ this.selectionList = [];
+ this.$refs.crud.toggleSelection();
+ },
+ currentChange(currentPage) {
+ this.page.currentPage = currentPage;
+ },
+ sizeChange(pageSize) {
+ this.page.pageSize = pageSize;
+ },
+ refreshChange() {
+ this.onLoad(this.page, this.query);
+ },
+ onLoad(page, params = {}) {
+ this.loading = true;
+ //系统消息
+ params.messageResource = '1'
+
+ const {dateTime} = this.query
+ let values = {...params,}
+ if (dateTime) {
+ values = {
+ ...params,
+ startTime: dateTime[0],
+ endTime: dateTime[1],
+ ...this.query,
+ }
+ values.dateTime = null
+ }
+
+ getList(page.currentPage, page.pageSize, values).then(res => {
+ const data = res.data.data;
+ this.page.total = data.total;
+ this.data = data.records;
+ this.loading = false;
+ this.selectionClear();
+ });
+ }
+ }
+};
+</script>
+
+<style>
+</style>
--
Gitblit v1.9.3