Browse Source

商家/平台/商场公告通知

july 4 years ago
parent
commit
acdd4fe568

+ 5 - 5
src/api/ldt_notice/notice.js

@@ -2,7 +2,7 @@ import request from '@/router/axios';
 
 export const getList = (current, size, params) => {
   return request({
-    url: '/api/ldt_notice/notice/list',
+    url: '/api/ldt_notice/noticecontent/list',
     method: 'get',
     params: {
       ...params,
@@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
 
 export const getDetail = (id) => {
   return request({
-    url: '/api/ldt_notice/notice/detail',
+    url: '/api/ldt_notice/noticecontent/detail',
     method: 'get',
     params: {
       id
@@ -24,7 +24,7 @@ export const getDetail = (id) => {
 
 export const remove = (ids) => {
   return request({
-    url: '/api/ldt_notice/notice/remove',
+    url: '/api/ldt_notice/noticecontent/remove',
     method: 'post',
     params: {
       ids,
@@ -34,7 +34,7 @@ export const remove = (ids) => {
 
 export const add = (row) => {
   return request({
-    url: '/api/ldt_notice/notice/submit',
+    url: '/api/ldt_notice/noticecontent/submitAndPush',
     method: 'post',
     data: row
   })
@@ -42,7 +42,7 @@ export const add = (row) => {
 
 export const update = (row) => {
   return request({
-    url: '/api/ldt_notice/notice/submit',
+    url: '/api/ldt_notice/noticecontent/submit',
     method: 'post',
     data: row
   })

+ 50 - 0
src/api/ldt_notice/noticereceiver.js

@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/ldt_notice/notice/list',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/ldt_notice/notice/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/ldt_notice/notice/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/ldt_notice/notice/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/ldt_notice/notice/submit',
+    method: 'post',
+    data: row
+  })
+}
+

+ 1 - 1
src/config/env.js

@@ -1,5 +1,5 @@
 // 阿里矢量图标库配置
-let iconfontVersion = ['2880418_9kghzf387b'];
+let iconfontVersion = ['2880418_c4r48qm6fvo'];
 let iconfontUrl = `//at.alicdn.com/t/font_$key.css`;
 
 let baseUrl = '';

+ 162 - 0
src/views/ldt_notice/notice-receiver.vue

@@ -0,0 +1,162 @@
+<template>
+  <div>
+    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" v-model="form"
+               ref="crud" @search-change="searchChange" @search-reset="searchReset" @current-change="currentChange"
+               @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+
+    </avue-crud>
+  </div>
+</template>
+
+<script>
+import {getList} from "@/api/ldt_notice/noticereceiver";
+import {mapGetters} from "vuex";
+
+export default {
+  props: {
+    operateId: String
+  },
+  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,
+        selection: false,
+        viewBtn: false,
+        editBtn: false,
+        delBtn: false,
+        addBtn: false,
+        refreshBtn: true,
+        columnBtn: false,
+        dialogClickModal: false,
+        menu: false,
+        column: [
+          {
+            label: "接收人",
+            prop: "receiver",
+            addDisplay: false,
+            rules: [{
+              required: true,
+              message: "请输入接收人",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "身份",
+            labelWidth: 100,
+            prop: "receiverType",
+            type: "checkbox",
+            search: true,
+            searchLabelWidth: 90,
+            span: 24,
+            dicData: [],
+            rules: [{
+              required: true,
+              message: "接受者类型",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: "是否已读",
+            prop: "isRead",
+            type: "switch",
+            search: true,
+            addDisplay: false,
+            dicData: [
+              {
+                label: "未读",
+                value: false
+              },
+              {
+                label: "已读",
+                value: true
+              }
+            ],
+            value: false,
+            rules: [{
+              required: true,
+              message: "请输入是否已读",
+              trigger: "blur"
+            }],
+          }
+        ]
+      }
+    }
+  },
+  computed: {
+    ...mapGetters(["userInfo"]),
+  },
+  created() {
+    const receiverType = this.option.column.find(ele => {
+      return ele.prop === "receiverType";
+    });
+    receiverType.dicData = this.receiverTypeDicDataFun();
+  },
+  methods: {
+    searchReset() {
+      this.query = {};
+      this.onLoad(this.page);
+    },
+    searchChange(params, done) {
+      this.query = params;
+      this.page.currentPage = 1;
+      this.onLoad(this.page, params);
+      done();
+    },
+    currentChange(currentPage) {
+      this.page.currentPage = currentPage;
+    },
+    sizeChange(pageSize) {
+      this.page.pageSize = pageSize;
+    },
+    refreshChange() {
+      this.onLoad(this.page, this.query);
+    },
+    receiverTypeDicDataFun() {
+      const data =
+        [
+          {label: "商家", value: "SHOP"}
+        ];
+      if (this.userInfo.tenant_id === '000000') {
+        data.push({label: "商场", value: "MALL"});
+        data.push({label: "用户", value: "CONSUMER"});
+      } else {
+        data.push({label: "会员", value: "MEMBER"});
+      }
+      return data;
+    },
+    selectionClear() {
+      this.selectionList = [];
+      this.$refs.crud.toggleSelection();
+    },
+    onLoad(page, params = {}) {
+      this.query.contentId = this.operateId;
+      this.loading = true;
+      getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.data = data.records;
+        this.loading = false;
+        this.selectionClear();
+      });
+    }
+  }
+};
+</script>
+
+<style>
+</style>

+ 57 - 66
src/views/ldt_notice/notice.vue

@@ -1,5 +1,12 @@
 <template>
   <basic-container>
+    <el-dialog @close="dialogShow=false" append-to-body :close-on-click-modal="false" :visible.sync="dialogShow"
+               :destroy-on-close="true"
+               :title="dialogTitle" width="60%">
+      <notice-receiver v-if="dialogTitle==='接收列表'&& dialogShow" ref="refName" :operateId="operateId"
+                       :isResubmit="isResubmit" @finish="dialogShow=false"></notice-receiver>
+    </el-dialog>
+
     <avue-crud :option="option"
                :table-loading="loading"
                :data="data"
@@ -24,6 +31,9 @@
                    v-if="(userInfo.tenant_id === '000000' && scope.row.senderType === '平台')||(userInfo.tenant_id !== '000000' && scope.row.senderType === '商场')"
                    @click="rowDel(scope.row)">删除
         </el-button>
+        <el-button type="text" size="small" icon="icon-navicon-xxjsr" plain class="none-border"
+                   @click.stop="openDialog(scope.row.id,'接收列表')">接收列表
+        </el-button>
       </template>
     </avue-crud>
   </basic-container>
@@ -32,10 +42,15 @@
 <script>
 import {add, getDetail, getList, remove, update} from "@/api/ldt_notice/notice";
 import {mapGetters} from "vuex";
+import NoticeReceiver from "./notice-receiver";
 
 export default {
+  components: {NoticeReceiver},
   data() {
     return {
+      dialogShow: false,
+      operateId: '',
+      dialogTitle: '',
       form: {},
       query: {},
       loading: true,
@@ -55,9 +70,6 @@ export default {
         index: true,
         viewBtn: true,
         selection: true,
-        addBtn: true,
-        editBtn: false,
-        delBtn: false,
         dialogClickModal: false,
         column: [
           {
@@ -72,23 +84,13 @@ export default {
           {
             label: "发送人",
             prop: "sender",
-            addDisplay: false,
+            display: false,
             rules: [{
               required: true,
               message: "请输入发送人",
               trigger: "blur"
             }]
           },
-          {
-            label: "接收人",
-            prop: "receiver",
-            addDisplay: false,
-            rules: [{
-              required: true,
-              message: "请输入接收人",
-              trigger: "blur"
-            }]
-          },
           {
             label: "发送者类型",
             labelWidth: 100,
@@ -96,8 +98,7 @@ export default {
             type: "select",
             search: true,
             searchLabelWidth: 90,
-            searchslot: true,
-            addDisplay: false,
+            display: false,
             dicData: [],
             rules: [{
               required: true,
@@ -108,42 +109,19 @@ export default {
           {
             label: "接收者类型",
             labelWidth: 100,
-            prop: "receiverType",
+            prop: "receiverTypes",
             type: "checkbox",
-            search: true,
             searchLabelWidth: 90,
-            searchslot: true,
+            hide: true,
+            display: false,
             span: 24,
             dicData: [],
             rules: [{
               required: true,
-              message: "接者类型",
+              message: "接者类型",
               trigger: "blur"
             }]
           },
-          {
-            label: "是否已读",
-            prop: "isRead",
-            type: "switch",
-            search: true,
-            addDisplay: false,
-            dicData: [
-              {
-                label: "未读",
-                value: false
-              },
-              {
-                label: "已读",
-                value: true
-              }
-            ],
-            value: false,
-            rules: [{
-              required: true,
-              message: "请输入是否已读",
-              trigger: "blur"
-            }],
-          },
           {
             label: "内容",
             prop: "content",
@@ -164,6 +142,12 @@ export default {
               trigger: "blur"
             }]
           },
+          {
+            label: "创建时间",
+            prop: "createTime",
+            addDisplay: false,
+            editDisplay: false,
+          },
         ]
       },
       data: []
@@ -188,29 +172,24 @@ export default {
     }
   },
   created() {
-    const receiverType = this.option.column.find(ele => {
-      return ele.prop === "receiverType";
-    });
-    receiverType.dicData = this.receiverTypeDicDataFun();
-
     const senderType = this.option.column.find(ele => {
       return ele.prop === "senderType";
     });
     senderType.dicData = this.senderTypeDicDataFun();
 
-    if (this.userInfo.tenant_id === '000000') {
-      this.form.senderType = 'PLATFORM';
-    } else {
-      this.form.senderType = 'MALL';
-    }
+    const receiverTypes = this.option.column.find(ele => {
+      return ele.prop === "receiverTypes";
+    });
+    receiverTypes.dicData = this.receiverTypesDicDataFun();
   },
   methods: {
     rowDel(row, index) {
       this.$refs.crud.rowDel(row, index)
     },
     rowSave(row, done, loading) {
-      row.receiverTypes = row.receiverType;
-      row.receiverType = null;
+      const content = encodeURIComponent(row.content);
+      row.content = content;
+      console.log(row);
       add(row).then(() => {
         this.onLoad(this.page);
         this.$message({
@@ -279,13 +258,12 @@ export default {
       if (["edit", "view"].includes(type)) {
         getDetail(this.form.id).then(res => {
           this.form = res.data.data;
+          this.form.content = decodeURIComponent(res.data.data.content);
         });
       }
       done();
     },
     searchReset() {
-      //this.senderTypeValue = "";
-      //this.receiverTypeValue = "";
       this.query = {};
       this.onLoad(this.page);
     },
@@ -311,31 +289,43 @@ export default {
     refreshChange() {
       this.onLoad(this.page, this.query);
     },
-    receiverTypeDicDataFun() {
+    senderTypeDicDataFun() {
       const data =
         [
+          {label: "商场", value: "MALL"},
           {label: "商家", value: "SHOP"}
         ];
       if (this.userInfo.tenant_id === '000000') {
-        data.push({label: "商场", value: "MALL"});
-        data.push({label: "用户", value: "CONSUMER"});
-      } else {
-        data.push({label: "会员", value: "MEMBER"});
+        data.push({label: "平台", value: "PLATFORM"});
       }
-
       return data;
     },
-    senderTypeDicDataFun() {
+    receiverTypesDicDataFun() {
       const data =
         [
-          {label: "商场", value: "MALL"},
           {label: "商家", value: "SHOP"}
         ];
       if (this.userInfo.tenant_id === '000000') {
-        data.push({label: "平台", value: "PLATFORM"});
+        data.push({label: "商场", value: "MALL"});
+        data.push({label: "用户", value: "CONSUMER"});
+      } else {
+        data.push({label: "会员", value: "MEMBER"});
       }
       return data;
     },
+    openDialog(id, name) {
+      this.dialogTitle = name
+      this.operateId = id
+      this.dialogShow = true
+      this.canReset = true
+    },
+    handleSenderType() {
+      if (this.userInfo.tenant_id === '000000') {
+        this.form.senderType = 'PLATFORM';
+      } else {
+        this.form.senderType = 'MALL';
+      }
+    },
     onLoad(page, params = {}) {
       this.loading = true;
       getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
@@ -344,6 +334,7 @@ export default {
         this.data = data.records;
         this.loading = false;
         this.selectionClear();
+        this.handleSenderType();
       });
     }
   }