Bladeren bron

fix:开发站内信、修改增次明细

wuguojie 1 jaar geleden
bovenliggende
commit
f112e4a66c

+ 16 - 0
src/http/moudules/letter.js

@@ -1512,3 +1512,19 @@ export const yangGuangautoWriteOff = (data) => {
   })
 }
 
+// 站内信
+export const getMessage = (data) => {
+  return axios({
+    url: '/sys/message/get',
+    method: 'post',
+    data
+  })
+}
+
+// 站内信更改为已读状态
+export const updateMessage = (data) => {
+  return axios({
+    url: `/sys/message/update?id=${data}`,
+    method: 'post'
+  })
+}

+ 9 - 0
src/http/moudules/quote.js

@@ -102,3 +102,12 @@ export const getAppendUserQuotePage = (data) => {
     data
   })
 }
+
+// 增次明细详情
+export const getAppendUserQuoteInfo = (data) => {
+  return axios({
+    url: '/quoteConfig/getAppendUserQuoteInfo',
+    method: 'post',
+    data
+  })
+}

+ 8 - 4
src/store/modules/user.js

@@ -4,7 +4,8 @@ export default {
     state: {
         perms: [],  // 用户权限标识集合
         token: getToken(),
-        roles:{}
+        roles:{},
+        myTimer: null,
     },
     getters: {
       // roles: state => state.roles
@@ -18,6 +19,9 @@ export default {
           },
         SET_USER: (state, roles) => {
           state.roles = roles
+        },
+        SET_TIMER: (state, myTimer) => {
+          state.myTimer = myTimer
         }
     },
     actions: {
@@ -59,7 +63,7 @@ export default {
               })
             })
           },
-      
-       
+
+
     }
-}
+}

+ 6 - 5
src/views/Core/PersonalPanel.vue

@@ -199,12 +199,12 @@ export default {
     personalInformation(){
       this.backupVisible=true
     },
- //消息通知
-  notify() {
+    //消息通知
+    notify() {
       // this.$refs.messagePanel.setBackupVisible(true)
-    this.$router.push({
-      path: '/message'
-    })
+      this.$router.push({
+        path: '/message'
+      })
     },
     //闪电增员
     recruiting() {
@@ -230,6 +230,7 @@ export default {
         type: "warning"
       })
         .then(() => {
+          this.$emit('handle-clear')
           localStorage.clear()
           closeWebsocket()
           sessionStorage.removeItem("user")

+ 25 - 0
src/views/HeadBar/HeadBar.vue

@@ -190,6 +190,11 @@ export default {
       this.screenWidth = document.body.clientWidth
     }
     this.sysName = "Zgdd Platform";
+
+    this.$store.commit('SET_TIMER', setInterval(() => {
+      this.getMessage()
+    }, 3000))
+
     // var user = sessionStorage.getItem("user")
 
 
@@ -222,6 +227,26 @@ export default {
     // }
   },
   methods: {
+    getMessage() {
+      let that = this
+      that.$api.letter.getMessage({
+        pageNum: 1,
+        pageSize: 10
+      }).then(res => {
+        if(res.code === 200) {
+          if(res.data.list&&res.data.list.length>0) {
+            let list = res.data.list.filter(item => item.state === '0')
+            if(list.length>0) {
+              that.isDot = true
+            } else {
+              that.isDot = false
+            }
+          } else {
+            that.isDot = false
+          }
+        }
+      })
+    },
     show(e){
       this.toolbarActive=true;
     },

+ 3 - 2
src/views/Login.vue

@@ -316,8 +316,8 @@ export default {
                     "token"
                   ).toString();
                   window.location.href =process.env.CONSOLE_KHGX_URL + "?token=" + token;
-    
-                } 
+
+                }
                 else {
                   this.getUser();
                   Cookies.set("token", res.data); // 放置token到Cookie
@@ -501,6 +501,7 @@ export default {
     this.stopPolling();
   },
   mounted() {
+    clearInterval(this.$store.state.user.myTimer)
     this.refreshCaptcha();
     /**获取当前登录的ip地址 */
     getUserIP((ip) => {

+ 18 - 7
src/views/PeopleManage/Agent/AddCountDetail.vue

@@ -57,7 +57,7 @@
           <el-input v-model="addCountForm.company"></el-input>
         </el-form-item>
         <el-form-item label="今日已报价" style="width: 80%">
-          <el-input v-model="addCountForm.dayAllOrder"></el-input>
+          <el-input v-model="addCountForm.numCount"></el-input>
         </el-form-item>
         <el-form-item label="今日已承保" style="width: 80%">
           <el-input v-model="addCountForm.dayCoverOrder"></el-input>
@@ -67,7 +67,7 @@
           <span style="font-size: 12px; color: #999;">报价出单比=承保单数/报价单数*100%(四舍五入到小数点后两位)</span>
         </el-form-item>
         <el-form-item label="增加次数" style="width: 80%">
-          <el-input v-model="addCountForm.quoteNumber"></el-input>
+          <el-input v-model="addCountForm.dayMaxQuoteNum"></el-input>
         </el-form-item>
         <el-form-item label="备注" style="width: 80%">
           <el-input type="textarea" v-model="addCountForm.remark"></el-input>
@@ -82,6 +82,7 @@
 
 <script>
 import KtButton from "../../Core/KtButton.vue";
+import {getAppendUserQuoteInfo} from "../../../http/moudules/quote";
 
 export default {
   components: { KtButton },
@@ -141,20 +142,30 @@ export default {
     // 分页(每页条数变化)
     handleSizeChange(size) {
       this.pageSize = size
-      this.quoteDetailForm = {}
       this.initData();
     },
     // 分页(页码改变)
     handlePageChange(page) {
       this.pageNum = page
-      this.quoteDetailForm = {}
       this.initData();
     },
     // 点击详情
     handleDetail(row) {
-      this.dialogVisible = true
-      row.agent = `${row.name}-${row.userId}`
-      this.addCountForm = {...row}
+      this.$api.quote.getAppendUserQuoteInfo({
+        id: row.id,
+        companyId: row.companyId,
+        agentId: row.userId
+      }).then(res => {
+        if(res.code === 200) {
+          this.dialogVisible = true
+          console.log(123, res.data)
+          let obj = {...res.data}
+          obj.agent = `${obj.name}-${obj.userId}`
+          this.addCountForm = {...obj}
+        } else {
+          this.$message.warning(res.msg)
+        }
+      })
     }
   },
   mounted() {

+ 2 - 2
src/views/PeopleManage/Agent/QuoteCountManagement.vue

@@ -31,7 +31,7 @@
               :data="selectList"
             >
               <el-table-column prop="deptId" label="部门编码"></el-table-column>
-              <el-table-column prop="organization" label="机构名称"></el-table-column>
+<!--              <el-table-column prop="organization" label="机构名称"></el-table-column>-->
               <el-table-column prop="deptName" label="部门名称"></el-table-column>
               <el-table-column prop="id" label="工号"></el-table-column>
               <el-table-column prop="name" label="姓名"></el-table-column>
@@ -145,7 +145,7 @@
       >
         <el-table-column type="selection"></el-table-column>
         <el-table-column prop="deptId" label="部门编码"></el-table-column>
-        <el-table-column prop="organization" label="机构名称"></el-table-column>
+<!--        <el-table-column prop="organization" label="机构名称"></el-table-column>-->
         <el-table-column prop="deptName" label="部门名称"></el-table-column>
         <el-table-column prop="id" label="工号"></el-table-column>
         <el-table-column prop="name" label="姓名"></el-table-column>

+ 1 - 6
src/views/PeopleManage/Agent/QuoteDetail.vue

@@ -58,10 +58,7 @@
       <el-table-column prop="userId" label="工号"></el-table-column>
       <el-table-column prop="name" label="姓名"></el-table-column>
       <el-table-column prop="mobile" label="联系电话"></el-table-column>
-      <el-table-column prop="result" label="结果"
-        :filters="resultList"
-        :filter-method="filterResult"
-      ></el-table-column>
+      <el-table-column prop="result" label="结果"></el-table-column>
     </el-table>
     <div class="flex-box">
       <el-pagination
@@ -134,13 +131,11 @@ export default {
     // 分页(每页条数变化)
     handleSizeChange(size) {
       this.pageSize = size
-      this.quoteDetailForm = {}
       this.initData();
     },
     // 分页(页码改变)
     handlePageChange(page) {
       this.pageNum = page
-      this.quoteDetailForm = {}
       this.initData();
     },
     // 获取列表数据

+ 0 - 2
src/views/PeopleManage/Agent/QuoteManagement.vue

@@ -180,13 +180,11 @@ export default {
     // 分页(每页条数变化)
     handleSizeChange(size) {
       this.pageSize = size
-      this.quoteForm = {}
       this.initData();
     },
     // 分页(页码改变)
     handlePageChange(page) {
       this.pageNum = page
-      this.quoteForm = {}
       this.initData();
     },
     // 增加次数保存

+ 118 - 10
src/views/message/index.vue

@@ -2,49 +2,147 @@
   <el-row class="message">
     <el-col :span="4" class="colLeft">
       <div class="menu">
-        <div class="menuItem" :class="{'active':menuIndex === index}" @click="menuIndex = index" v-for="(item, index) in menuList" :key="item+index">
+        <div class="menuItem" :class="{'active':menuIndex === index}" @click="handleClick(item,index)" v-for="(item, index) in menuList" :key="item+index">
           <el-badge :value="item.value" :max="99">{{ item.text }}</el-badge>
         </div>
       </div>
     </el-col>
     <el-col :span="20" class="colRight">
       <div class="message-list">
-        <el-row :gutter="20" class="message-item" v-for="(item, index) in message" :key="index">
+        <el-row style="cursor: pointer" :gutter="20" class="message-item" v-for="(item, index) in menuList[menuIndex].list" :key="index">
           <el-col :span="3" style="text-align: right; color: #cccccc">
-            <p>16:52:02</p>
-            <p>2024.12.03</p>
+            <p @click="handleItemClick(item, index)">{{ item.time }}</p>
+            <p></p>
+            <p @click="handleItemClick(item, index)">{{item.day}}</p>
           </el-col>
           <el-col :span="21">
-            <p class="title">标题</p>
-            <p class="content">内容</p>
+            <p class="title" @click="handleItemClick(item, index)">{{ item.title }}</p>
+            <p class="content" @click="handleItemClick(item, index)" :class="{'custom': item.state !== '0'}" v-html="item.content"></p>
           </el-col>
         </el-row>
+        <div v-if="menuList[menuIndex].list.length===0" style="height: 100%;display: flex; align-items: center; justify-content: center">
+          <el-empty description="暂无数据"></el-empty>
+        </div>
+      </div>
+      <div class="flex-box">
+        <el-pagination
+          @current-change="handlePageChange"
+          @size-change="handleSizeChange"
+          :current-page="pageNum"
+          :page-sizes="[10, 20, 30, 40]"
+          :page-size="pageSize"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="total">
+        </el-pagination>
       </div>
     </el-col>
   </el-row>
 </template>
 
 <script>
+import {updateMessage} from "../../http/moudules/letter";
+
 export default {
   data() {
     return {
       menuList: [
         {
           text: '增员信息',
-          value: 100
+          value: 0,
+          type: 1,
+          list: [],
         },
         {
           text: '待我审批',
-          value: 0
+          value: 0,
+          type: 3,
+          list: [],
         },
         {
           text: '审批结果',
-          value: 0
+          value: 0,
+          type: 2,
+          list: [],
         },
       ],
       menuIndex: 0,
-      message: [1,2,3,4,5,6,7,8,9,10]
+      pageNum: 1,
+      pageSize: 10,
+      total: 0,
+      msgType: 1
     }
+  },
+  methods:{
+    initData(type) {
+      this.$api.letter.getMessage({
+        msgType: type?type:null,
+        pageNum: this.pageNum,
+        pageSize: this.pageSize
+      }).then(res => {
+        if(res.code === 200) {
+          this.total = res.data.total
+          this.menuList.forEach(item => {
+            if(item.type === type) {
+              item.value = res.data.list.filter(item => item.state === '0').length
+              item.list = res.data.list.map(item => {
+                return {
+                  time: item.sendTime?item.sendTime.split(' ')[1]:'',
+                  day: item.sendTime?item.sendTime.split(' ')[0]:'',
+                  highList: item.highLight?item.highLight.split(';'):[],
+                  ...item
+                }
+              })
+            }
+          })
+          this.menuList.forEach(item => {
+            item.list.forEach(sub => {
+              if(sub.highList.length>0) {
+                sub.highList.forEach(str => {
+                  sub.content = `${sub.content.substring(0,sub.content.indexOf(str))}<a style="color: ${sub.state === '0'?'#00C2FF':'#cccccc'}">${sub.content.substring(sub.content.indexOf(str),sub.content.indexOf(str)+str.length)}</a>${sub.content.substring(sub.content.indexOf(str)+str.length, sub.content.length-1)}`
+                })
+              }
+            })
+          })
+        }
+      })
+    },
+    handleClick(item, index) {
+      this.menuIndex = index
+      this.msgType = item.type
+      this.initData(this.msgType)
+    },
+    handlePageChange(page) {
+      this.pageNum = page
+      this.initData(this.msgType)
+    },
+    handleSizeChange(size) {
+      this.pageSize = size
+      this.initData(this.msgType)
+    },
+    handleItemClick(item, index) {
+      console.log(123, item)
+      if(item.state === '0') {
+        this.$api.letter.updateMessage(item.id).then(res => {
+          if(res.code === 200) {
+            this.$message.success(res.msg)
+            this.initData(this.msgType)
+          } else {
+            this.$message.warning(res.msg)
+          }
+        })
+      }
+      if(item.jump === '1') {
+        this.$router.push({
+          path: item.jumpUrl
+        })
+      }
+    }
+  },
+  mounted() {
+    this.initData(1);
+    this.initData(2);
+    this.initData(3);
+    this.initData();
   }
 }
 </script>
@@ -65,6 +163,7 @@ export default {
         width: 100%;
         overflow-y: auto;
         .menuItem{
+          cursor: pointer;
           padding: 10px 20px;
           width: calc(100% - 40px);
           text-overflow: ellipsis;
@@ -80,6 +179,8 @@ export default {
     .message-list{
       margin: 10px 40px;
       width: calc(100% - 80px);
+      height: calc(100% - 60px);
+      overflow-y: auto;
       .message-item{
         border-bottom: 1px solid #cccccc;
         width: 100%;
@@ -90,7 +191,14 @@ export default {
           word-break: break-all;
           white-space: nowrap;
         }
+        .custom{
+          color: #ccc;
+        }
       }
     }
+    .flex-box{
+      display: flex;
+      justify-content: flex-end;
+    }
   }
 </style>