Browse Source

feat:消息管理模块所有页面,消息类型获取接口

zhangsiya 2 years ago
parent
commit
4604465fef

+ 3 - 1
src/store.js

@@ -2,6 +2,7 @@ import Vue from 'vue'
 import Vuex from 'vuex'
 import admin from './store/admin'
 import combo from './store/combo'
+import message from './store/message'
 
 Vue.use(Vuex);
 
@@ -11,6 +12,7 @@ export default new Vuex.Store({
     actions: {},
     modules: {
         admin,
-        combo
+        combo,
+        message
     }
 })

+ 14 - 2
src/store/message.js

@@ -2,23 +2,32 @@ import { request } from '@/plugins/request'
 import { actionUrl } from "@/helper";
 export default {
   state: {
-    messageTypeObj:{},
+    // 消息分类obj
+    messageTypeObj: {},
     // 消息分类
     messageTypeList: []
   },
   mutations: {
     setMessageType (state, data) {
       state.messageTypeList = data || []
+    },
+    setMessageTypeObj (state, obj) {
+      state.messageTypeObj = obj || {}
     }
   },
   actions: {
-    getMessageType({ commit }, data) {
+    getMessageType({ commit }) {
       request({
         type: 'post',
         url: actionUrl('/message/getMsgType'),
         success: (res) => {
           if(res.status === 'success') {
             const resData = res.data || []
+            let obj = {}
+            for(let item of resData) {
+              obj[item.msg_type] = item.name
+            }
+            commit('setMessageTypeObj', obj)
             commit('setMessageType', resData)
           }
         },
@@ -31,6 +40,9 @@ export default {
   getters: {
     messageTypeList (state) {
       return state.messageTypeList
+    },
+    messageTypeObj(state){
+      return state.messageTypeObj
     }
   }
 }

+ 15 - 13
src/views/msgManage/boardDetail.vue

@@ -6,11 +6,11 @@
           <div class="classfity">
             <span><p>模板ID:</p> {{detailData.template_id || '-'}}</span>
             <span><p>模板名称:</p> {{detailData.template_name || '-'}}</span>
-            <span><p>消息类型:</p> {{msgChange(detailData.news_type) || '-'}}</span>
+            <span><p>消息类型:</p> {{msgName || '-'}}</span>
             <span><p>消息标题:</p> {{detailData.news_title || '-'}}</span>
             <span><p>消息内容:</p> {{detailData.news_content || '-'}}</span>
             <span>
-              <p>内容链接:</p> 
+              <p>内容链接:</p>
               pc: {{detailData.pc_link || '-'}}<br/>
               安卓: {{detailData.android_link || '-'}}<br/>
               苹果: {{detailData.apple_link || '-'}}<br/>
@@ -26,13 +26,24 @@
   </div>
 </template>
 <script>
+import {mapGetters} from "vuex";
+
 export default {
     data () {
       return {
-        detailData: []
+        detailData: {}
+      }
+    },
+    computed: {
+      ...mapGetters(['messageTypeObj']),
+      msgName() {
+        return this.messageTypeObj[this.detailData?.news_type]
       }
     },
     created() {
+      if(Object.keys(this.messageTypeObj).length === 0) {
+        this.$store.dispatch('getMessageType')
+      }
       this.$request('/templateManage/info').data({
         id: this.$route.query.id
       }).success((res) => {
@@ -43,16 +54,7 @@ export default {
     },
     methods: {
       msgChange(val) {
-        let obj = {
-          '1': '活动优惠',
-          '2': '服务通知',
-          '3': '订阅消息',
-          '4': '项目动态',
-          '5': '企业动态',
-          '6': '分析报告',
-          '7': '系统通知'
-        }
-        return obj[val]
+        return this.messageTypeObj[val]
       }
     }
 }

+ 22 - 25
src/views/msgManage/boardManage.vue

@@ -1,13 +1,13 @@
 <template>
   <div class="board-manage ding-dan">
     <h1>模板管理</h1>
-      <table-lists 
-          ref="tableLists" 
-          v-model="list" 
-          :filter="filter" 
-          :filterType="2" 
-          :filterReset="0" 
-          requestApi="/templateManage/list" 
+      <table-lists
+          ref="tableLists"
+          v-model="list"
+          :filter="filter"
+          :filterType="2"
+          :filterReset="0"
+          requestApi="/templateManage/list"
           @loading="load"
       >
         <template slot="filterTitle">
@@ -20,9 +20,9 @@
           <Divider style="margin:15px 0" />
         </template>
           <Table
-              ellipsis 
-              :loading="loading" 
-              :columns="columns" 
+              ellipsis
+              :loading="loading"
+              :columns="columns"
               :data="list.lists"
               stripe
           >
@@ -42,10 +42,19 @@
 </template>
 <script>
 import boardModal from './components/boardModal.vue'
+import { mapGetters } from 'vuex'
 export default {
   components: {
     boardModal
   },
+  computed: {
+    ...mapGetters(['messageTypeObj'])
+  },
+  created() {
+    if(Object.keys(this.messageTypeObj).length === 0) {
+      this.$store.dispatch('getMessageType')
+    }
+  },
   methods: {
     load (val) {
       this.loading = val
@@ -70,7 +79,7 @@ export default {
       this.$Modal.confirm({
         title: "确定删除该模板吗?",
         onOk: () => {
-          this.$request('/templateManage/delete').data({ 
+          this.$request('/templateManage/delete').data({
             id: row.id
           }).success(() => {
             this.reload()
@@ -98,18 +107,6 @@ export default {
       } else if (val == 2) {
         return 'fail'
       }
-    },
-    msgChange(val) {
-      let obj = {
-        '1': '活动优惠',
-        '2': '服务通知',
-        '3': '订阅消息',
-        '4': '项目动态',
-        '5': '企业动态',
-        '6': '分析报告',
-        '7': '系统通知'
-      }
-      return obj[val]
     }
   },
   data() {
@@ -156,7 +153,7 @@ export default {
               key: 'news_type',
               align: 'center',
               render: (h, {row}) => {
-                  return h('span', row.news_type ? this.msgChange(row.news_type) : '-')
+                  return h('span', row.news_type ? this.messageTypeObj[row.news_type] : '-')
               }
           },
           {
@@ -241,4 +238,4 @@ export default {
         }
     }
 }
-</style>
+</style>

+ 14 - 12
src/views/msgManage/components/boardModal.vue

@@ -6,7 +6,7 @@
       </FormItem>
       <FormItem label="消息类型:" prop="news_type" style="width:300px">
           <Select v-model="boardArr.news_type" placeholder="请选择消息类型">
-              <Option v-for="item in msgPro" :value="item.v" :key="item.v">{{ item.n }}</Option>
+              <Option v-for="item in messageTypeList" :value="item.msg_type" :key="item.msg_type">{{ item.name }}</Option>
           </Select>
       </FormItem>
       <FormItem label="消息标题:" prop="news_title">
@@ -63,6 +63,8 @@
 </template>
 
 <script>
+import {mapGetters} from "vuex"
+
 export default {
   props: {
     boardData: Object
@@ -77,6 +79,15 @@ export default {
       deep: true
     }
   },
+  computed: {
+    ...mapGetters(['messageTypeList'])
+  },
+  created() {
+    // 获取消息类型
+    if(this.messageTypeList.length === 0) {
+      this.$store.dispatch('getMessageType')
+    }
+  },
   methods: {
     inited() {
       Object.keys(this.boardArr).forEach(key => {
@@ -153,16 +164,7 @@ export default {
           { required: true, message: '请输入消息内容', trigger: 'blur' },
           { type: 'string', max: 200, message: '最多200个字', trigger: 'blur' }
         ]
-      },
-      msgPro: [
-        { v: '1', n: '活动优惠' },
-        { v: '2', n: '服务通知' },
-        // {v: '3', n: '订阅消息'},
-        // {v: '4', n: '项目动态'},
-        // {v: '5', n: '企业动态'},
-        // {v: '6', n: '分析报告'},
-        { v: '7', n: '系统通知' }
-      ],
+      }
     }
   }
 }
@@ -188,4 +190,4 @@ export default {
     margin-right: 10px;
   }
 }
-</style>
+</style>

+ 11 - 27
src/views/msgManage/newUserSendingMsg.vue

@@ -19,7 +19,7 @@
       </FormItem> -->
       <FormItem label="消息类型:" prop="msgType" style="width:300px">
           <Select v-model="send.msgType" placeholder="请选择消息类型">
-              <Option v-for="item in msgPro" :value="item.v" :key="item.v">{{ item.n }}</Option>
+              <Option v-for="item in messageTypeList" :value="item.msg_type" :key="item.msg_type">{{ item.name }}</Option>
           </Select>
       </FormItem>
       <FormItem label="消息标题:" prop="title">
@@ -114,16 +114,18 @@
 
 <script>
 import dateSigle from '@/components/dateSigle'
+import {mapGetters} from "vuex";
 export default {
   components: {
     dateSigle
   },
+  computed: {
+    ...mapGetters(['messageTypeList', 'messageTypeObj'])
+  },
   created() {
-    // this.refreshed()
-    // let rout = this.$route.query.id
-    // if (rout) {
-      
-    // }
+    if(this.messageTypeList.length === 0) {
+      this.$store.dispatch('getMessageType')
+    }
     this.msgBack()
   },
   methods: {
@@ -137,7 +139,7 @@ export default {
           })
           // this.send.userGroupId = res.data.send_usergroup_id?res.data.send_usergroup_id.split(','):[]
           // this.send.userGroupName = res.data.send_usergroup_name?res.data.send_usergroup_name.split(','):[]
-          this.send.msgType = this.msgPro1[res.data.msg_type - 1].v
+          this.send.msgType = res.data?.msg_type?.toString()
           this.send.sendMode = String(res.data.send_mode)
           // this.send.sendTime = res.data.send_time
           // this.$refs.sigleRef3.dataVals = res.data.send_time
@@ -244,7 +246,7 @@ export default {
           setTimeout(() => {
             this.isDis = false
           }, 1000)
-          
+
           this.$request('/message/messageSave').data(obj).success((res) => {
             if (res.status == 'success') {
               this.inited()
@@ -270,28 +272,10 @@ export default {
   data () {
     return {
       isDis: false,
-      msgPro: [
-        {v: '1', n: '活动优惠'},
-        {v: '2', n: '服务通知'},
-        // {v: '3', n: '订阅消息'},
-        // {v: '4', n: '项目动态'},
-        // {v: '5', n: '企业动态'},
-        // {v: '6', n: '分析报告'},
-        {v: '7', n: '系统通知'}
-      ],
       showSelect: [
         {v: 1, n: '是'},
         {v: 0, n: '否'}
       ],
-      msgPro1: [
-        {v: '1', n: '活动优惠'},
-        {v: '2', n: '服务通知'},
-        {v: '3', n: '订阅消息'},
-        {v: '4', n: '项目动态'},
-        {v: '5', n: '企业动态'},
-        {v: '6', n: '分析报告'},
-        {v: '7', n: '系统通知'}
-      ],
       indeterminate: false,
       checkAll: false,
       groupData: [],
@@ -419,4 +403,4 @@ export default {
       pointer-events: none;
     }
   }
-</style>
+</style>

+ 19 - 18
src/views/msgManage/sendDetail.vue

@@ -6,11 +6,11 @@
         <div class="classfity">
           <span><p>发送用户:</p> {{detailData.send_usergroup_name || '-'}}</span>
           <span><p>消息模板:</p> {{detailData.template_name || '-'}}</span>
-          <span><p>消息类型:</p> {{detailData.msg_type?msgPro[detailData.msg_type - 1].n:'-'}}</span>
+          <span><p>消息类型:</p> {{detailData.msg_type ? messageTypeObj[detailData.msg_type] : '-'}}</span>
           <span><p>消息标题:</p> {{detailData.title || '-'}}</span>
           <span><p>消息内容:</p> {{detailData.content || '-'}}</span>
           <span>
-            <p>内容链接:</p> 
+            <p>内容链接:</p>
             pc: {{detailData.link || '-'}}<br/>
             安卓: {{detailData.androidUrl || '-'}}<br/>
             苹果: {{detailData.iosUrl || '-'}}<br/>
@@ -28,17 +28,17 @@
         <Divider style="margin:15px 0" />
         <div class="classfity" v-if="detailData.sign == 1 || detailData.sign == 3">
           <span><p>已选择用户列表(共{{detailList.total}}个用户):</p></span>
-          <Table 
-            ellipsis 
-            :loading="loading" 
-            ref="selection" 
-            :columns="detailData.user_add_way == '1' ? columns : columns1" 
+          <Table
+            ellipsis
+            :loading="loading"
+            ref="selection"
+            :columns="detailData.user_add_way == '1' ? columns : columns1"
             :data="detailList.lists"
             border
             stripe
           />
           <Page
-            :page-size="pageSize" 
+            :page-size="pageSize"
             :total="detailList.total"
             @on-change="changePage"
             v-show="detailList.total > 5"
@@ -49,7 +49,17 @@
   </div>
 </template>
 <script>
+import {mapGetters} from "vuex";
+
 export default {
+  computed: {
+    ...mapGetters(['messageTypeObj'])
+  },
+  created() {
+    if(Object.keys(this.messageTypeObj).length === 0) {
+      this.$store.dispatch('getMessageType')
+    }
+  },
   mounted() {
     this.details()
     this.getUserInfo()
@@ -93,7 +103,7 @@ export default {
         me: '我的',
         other: '新的 webview',
       },
-      detailData: [],
+      detailData: {},
       loading: false,
       allList: {},
       detailList: {
@@ -102,15 +112,6 @@ export default {
       },
       page: 1,
       pageSize: 10,
-      msgPro: [
-        {v: '1', n: '活动优惠'},
-        {v: '2', n: '服务通知'},
-        {v: '3', n: '订阅消息'},
-        {v: '4', n: '项目动态'},
-        {v: '5', n: '企业动态'},
-        {v: '6', n: '分析报告'},
-        {v: '7', n: '系统通知'}
-      ],
       sendPro: [
         {v: '1', n: '待发送'},
         {v: '2', n: '发送中'},

+ 21 - 34
src/views/msgManage/sentList.vue

@@ -2,13 +2,13 @@
 <template>
   <div class="send-list">
     <h1>已发送信息列表</h1>
-    <table-lists 
-        ref="tableLists" 
-        v-model="list" 
+    <table-lists
+        ref="tableLists"
+        v-model="list"
         :filter="filter"
-        :filterSear="1" 
+        :filterSear="1"
         @emptyFilter="emptyFilter"
-        requestApi="/message/messageList" 
+        requestApi="/message/messageList"
         @loading="load"
         class="qie-huan"
     >
@@ -21,7 +21,7 @@
         </FormItem>
         <FormItem label="消息类型:" :label-width="70">
           <Select v-model="filter.msgType" placeholder="请选择消息类型" style="width:136px">
-              <Option v-for="item in msgPro" :value="item.v" :key="item.v">{{ item.n }}</Option>
+              <Option v-for="item in messageTypeList" :value="item.msg_type" :key="item.msg_type">{{ item.name }}</Option>
           </Select>
         </FormItem>
         <FormItem label="消息标题:" :label-width="70">
@@ -67,12 +67,12 @@
           ></Input>
         </FormItem>
       </template>
-      <Table 
-        ellipsis 
-        :loading="loading" 
-        ref="selection" 
-        :columns="columns" 
-        :data="list.lists" 
+      <Table
+        ellipsis
+        :loading="loading"
+        ref="selection"
+        :columns="columns"
+        :data="list.lists"
         stripe
       >
         <template slot-scope="{ row }" slot="_op">
@@ -101,11 +101,19 @@
 </template>
 <script>
 import vDate from '@/components/dateSection'
+import {mapGetters} from "vuex"
 export default {
     components: {
       vDate
     },
+    computed: {
+      ...mapGetters(['messageTypeList', 'messageTypeObj'])
+    },
     created() {
+      // 获取消息类型
+      if(this.messageTypeList.length === 0) {
+        this.$store.dispatch('getMessageType')
+      }
       this.$request('/message/getGroup').data().success((res) => {
         if (res.status == 'success') {
           this.groupData = res.data
@@ -165,9 +173,6 @@ export default {
           const news = this.$router.resolve({path: '/msgManage/sendDetail', query:{id: row.id}})
           window.open(news.href,'_blank')
         },
-        typeFilter(val) {
-          return this.msgPro1[val - 1] ? this.msgPro1[val - 1].n : val
-        },
         statusFilter(val) {
           return this.sendPro[val - 1] ? this.sendPro[val - 1].n : val
         },
@@ -215,24 +220,6 @@ export default {
               updateTimeEnd: '',
               creator: ''
             },
-            msgPro: [
-              {v: '1', n: '活动优惠'},
-              {v: '2', n: '服务通知'},
-              // {v: '3', n: '订阅消息'},
-              // {v: '4', n: '项目动态'},
-              // {v: '5', n: '企业动态'},
-              // {v: '6', n: '分析报告'},
-              {v: '7', n: '系统通知'}
-            ],
-            msgPro1: [
-              {v: '1', n: '活动优惠'},
-              {v: '2', n: '服务通知'},
-              {v: '3', n: '订阅消息'},
-              {v: '4', n: '项目动态'},
-              {v: '5', n: '企业动态'},
-              {v: '6', n: '分析报告'},
-              {v: '7', n: '系统通知'}
-            ],
             sendPro: [
               {v: '1', n: '待发送'},
               {v: '2', n: '发送中'},
@@ -253,7 +240,7 @@ export default {
                     key: 'msg_type',
                     align: 'center',
                     render: (h, {row}) => {
-                        return h('span', row.msg_type ? this.typeFilter(row.msg_type) : '-')
+                        return h('span', row.msg_type ? this.messageTypeObj[row.msg_type] : '-')
                     }
                 },
                 {