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">-->
+<!--            &lt;!&ndash; <i class="el-icon-bell"></i> &ndash;&gt;-->
+<!--            <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