Pārlūkot izejas kodu

阜外公告信息提醒,点击外呼问卷,在线聊天注释

miaofuhao 6 gadi atpakaļ
vecāks
revīzija
108f8813c2

+ 8 - 0
fuwaiCallCenterWeb.UI/src/api/customer/customerInfoHY.js

@@ -171,3 +171,11 @@ export function getExpireCusInfo(params) {
171 171
     params
172 172
   })
173 173
 }
174
+// 获取公告信息
175
+export function getNotice(params) {
176
+  return request({
177
+    url: 'messageapi/api/NoticeInfo/getlistsbypage',
178
+    method: 'get',
179
+    params
180
+  })
181
+}

+ 10 - 0
fuwaiCallCenterWeb.UI/src/api/questionnaire/management.js

@@ -28,6 +28,16 @@ export function getPager(pageid) {
28 28
     }
29 29
   })
30 30
 }
31
+// 获取外呼前缀
32
+export function getPhone(phone) {
33
+  return request({
34
+    url: 'callcenterapi/api/calloutopt/getcalloutprefix',
35
+    method: 'get',
36
+    params: {
37
+      phone
38
+    }
39
+  })
40
+}
31 41
 
32 42
 // 获取问卷下拉数据
33 43
 export function getPagerSelect() {

+ 14 - 14
fuwaiCallCenterWeb.UI/src/components/TopNotice/index.vue

@@ -1,27 +1,27 @@
1 1
 <template>
2 2
   <div v-loading="loading" class="topNotice">
3 3
     <div class="header">
4
-      <h5 class="title">最新消息</h5>
4
+      <h5 class="title">公告消息</h5>
5 5
     </div>
6 6
     <el-scrollbar wrap-class="scrollbar-wrapper">
7 7
       <ul v-if="proNoticeDatas.length" class="content">
8 8
         <li v-for="(item, index) in proNoticeDatas" :key="index" class="proitem">
9 9
           <h5 class="proname">
10
-            {{ item.project_name }}
10
+            标题:{{ item.project_name }}
11 11
           </h5>
12 12
           <span class="orderendtime">
13
-            将于 {{ item.orderendtime }} 到期
13
+            发布时间:{{ item.orderendtime }}
14 14
           </span>
15 15
         </li>
16 16
       </ul>
17 17
       <div v-else class="nomsg">
18
-        没有新消息
18
+        没有新公告消息
19 19
       </div>
20 20
     </el-scrollbar>
21 21
     <div class="footer_menu">
22
-      <router-link class="inlineBlock" to="/customer/customerInfoHY">
22
+      <router-link class="inlineBlock" to="/notice/manage">
23 23
         <el-dropdown-item>
24
-          <i class="el-icon-more"/>更多详细信息
24
+          <i class="el-icon-more"/>更多公告信息
25 25
         </el-dropdown-item>
26 26
       </router-link>
27 27
     </div>
@@ -30,7 +30,7 @@
30 30
 
31 31
 <script>
32 32
 
33
-import { getExpireCusInfo } from '@/api/customer/customerInfoHY'
33
+import { getNotice } from '@/api/customer/customerInfoHY'
34 34
 
35 35
 export default {
36 36
   name: 'TopNotice',
@@ -50,20 +50,20 @@ export default {
50 50
       const params = {
51 51
         daykind: 0 // 传值0时获取到期前一月的客户信息,传值1获取当天到期的客户信息
52 52
       }
53
-      getExpireCusInfo(params).then(res => {
53
+      getNotice(params).then(res => {
54 54
         this.loading = false
55 55
         if (res.state.toLowerCase() === 'success') {
56
-          if (res.data.data && res.data.data.length) {
56
+          if (res.data.rows && res.data.rows.length) {
57 57
             this.proNoticeDatas = []
58
-            res.data.data.forEach(item => {
58
+            res.data.rows.forEach(item => {
59 59
               this.proNoticeDatas.unshift({
60
-                project_name: item.project_name,
61
-                orderendtime: item.orderendtime
60
+                project_name: item.title,
61
+                orderendtime: item.createon
62 62
               })
63 63
             })
64 64
             this.$notify({
65
-              title: '项目到期提醒',
66
-              message: `您有${this.proNoticeDatas.length}个项目即将到期!`,
65
+              title: '公告消息提醒',
66
+              message: `您有${this.proNoticeDatas.length}个公告消息!`,
67 67
               type: 'warning',
68 68
               duration: 0,
69 69
               position: 'bottom-right'

+ 0 - 1
fuwaiCallCenterWeb.UI/src/views/autoCallScreen/components/tabPager.vue

@@ -102,7 +102,6 @@ export default {
102 102
         // 修改试题数据用于提交
103 103
         pagerOptions = this.getPagerOptions()
104 104
       }
105
-
106 105
       const data = Object.assign(this.pagerDatas, {
107 106
         result: pagerOptions
108 107
       })

+ 95 - 32
fuwaiCallCenterWeb.UI/src/views/clickoutbound/tasks/components/tabPager.vue

@@ -7,7 +7,7 @@
7 7
           <span v-if="quesName">姓名: {{ quesName }}</span>
8 8
         </el-col>
9 9
         <el-col :lg="8">
10
-          <span v-if="quesPhone">电话: <span class="quesephon" @click="outboundClick">{{ quesPhone }}</span></span>
10
+          <span v-if="quesPhone">电话: <span class="quesephon" @click="outboundClick(quesPhone)">{{ quesPhone }}</span></span>
11 11
         </el-col>
12 12
       </el-row>
13 13
     </p>
@@ -45,11 +45,13 @@
45 45
     <!-- 呼叫结果 -->
46 46
     <el-card v-if="callResults.length" shadow="hover" class="call_result">
47 47
       <h5 class="title">呼叫结果</h5>
48
-      <el-radio-group v-model="callresultid">
49
-        <el-radio v-for="item in callResults" :key="item.id" :label="item.id" border>
50
-          {{ item.name }}
51
-        </el-radio>
52
-      </el-radio-group>
48
+      <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="order_form">
49
+        <el-radio-group v-model="ruleForm.callresultid">
50
+          <el-radio v-for="item in callResults" :key="item.id" :label="item.id" border>
51
+            {{ item.name }}
52
+          </el-radio>
53
+        </el-radio-group>
54
+      </el-form>
53 55
     </el-card>
54 56
     <p v-if="pagerLists.length > 0" class="btn">
55 57
       <el-button type="primary" @click="submitPager">提 交</el-button>
@@ -58,7 +60,10 @@
58 60
 </template>
59 61
 
60 62
 <script>
61
-import { getPager, answerPager, taskId } from '@/api/questionnaire/management'
63
+import store from '@/store'
64
+import { mapGetters } from 'vuex'
65
+import { Send } from '@/utils/telWebsocket'
66
+import { getPager, answerPager, taskId, getPhone } from '@/api/questionnaire/management'
62 67
 import { getDictionary } from '@/api/commonAPI'
63 68
 import { uniqueObjArray } from '@/utils'
64 69
 
@@ -81,7 +86,8 @@ export default {
81 86
   data() {
82 87
     return {
83 88
       ruleForm: {
84
-        id: ''
89
+        id: '',
90
+        callresultid: '5bfe540c5a10b06b7a35a83a'
85 91
       },
86 92
       rules: {
87 93
         callresultid: [{
@@ -93,15 +99,32 @@ export default {
93 99
       loading: false,
94 100
       title: '',
95 101
       quesName: '',
102
+      taskid: '',
103
+      recordid: '',
96 104
       quesPhone: '',
97 105
       remark: '',
98 106
       pagerid: '',
99
-      callresultid: '5bfe540c5a10b06b7a35a83a', //	否	string	话务状态(字典项:外呼结果)
100 107
       pagerLists: [],
101 108
       callResults: [], // 呼叫结果数据
102 109
       jumpItem: [] // 跳过的试题
103 110
     }
104 111
   },
112
+  computed: {
113
+    ...mapGetters([
114
+      'usercode', // 工号
115
+      'extension', // 分机号
116
+      'telIsLogin', // 是否签入
117
+      'telSeatState', // 坐席状态
118
+      'telLineState', // 线路状态
119
+      'telIsVisCallout' // 外呼面板是否显示
120
+    ]),
121
+    // 是否可以点击外呼
122
+    isAllowCallout: function() {
123
+      // `this` 指向 vm 实例
124
+      return this.telIsLogin && this.telSeatState === 2 && this.telLineState === 1
125
+    }
126
+    //
127
+  },
105 128
   watch: {
106 129
     pagerDatas(newValue, oldValue) {
107 130
       // console.log(newValue.pageid, oldValue.pageid)
@@ -110,6 +133,7 @@ export default {
110 133
       }
111 134
     }
112 135
   },
136
+
113 137
   created() {
114 138
     if (this.rowid) {
115 139
       this.ruleForm.id = this.rowid
@@ -127,6 +151,7 @@ export default {
127 151
           this.loading = false
128 152
           if (response.state.toLowerCase() === 'success') {
129 153
             this.taskid = response.data.pagerid
154
+            this.recordid = response.data.tasktel.id
130 155
             this.quesName = response.data.tasktel.cusname
131 156
             this.quesPhone = response.data.tasktel.phone
132 157
             this.getPagers(this.taskid)
@@ -168,30 +193,68 @@ export default {
168 193
 
169 194
     // 提交
170 195
     submitPager() {
171
-      // alert('111')
172
-      // 验证必填项
173
-      // let pagerOptions = []
174
-      // let pagerDatas
175
-      // // 修改试题数据用于提交
176
-      // pagerOptions = this.getPagerOptions()
177
-      // const data = Object.assign(this.pagerDatas, {
178
-      //   result: pagerOptions
179
-      // })
180
-      // console.log(JSON.stringify(data))
181
-      // answerPager(data).then(response => {
182
-      //   this.loading = false
183
-      //   if (response.state.toLowerCase() === 'success') {
184
-      //     debugger
185
-      //     // 触发父组件的方法
186
-      //     this.$emit('getTP')
187
-      //     this.$message.success('恭喜你,数据提交成功!')
188
-      //   }
189
-      // }).catch(() => {
190
-      //   this.loading = false
191
-      // })
196
+      let pagerOptions = []
197
+      let pagerDatas
198
+      // 修改试题数据用于提交
199
+      pagerOptions = this.getPagerOptions()
200
+      // console.log(pagerOptions)
201
+      const data = {
202
+        fullname: this.quesName,
203
+        tel: this.quesPhone,
204
+        pageid: this.taskid,
205
+        recordid: this.recordid,
206
+        result: pagerOptions,
207
+        callresult: this.ruleForm.callresultid
208
+      }
209
+      console.log(this.ruleForm.callresultid)
210
+      answerPager(data).then(response => {
211
+        this.loading = false
212
+        if (response.state.toLowerCase() === 'success') {
213
+          debugger
214
+          // 触发父组件的方法
215
+          this.$emit('getTP')
216
+          this.$message.success('恭喜你,数据提交成功!')
217
+        }
218
+      }).catch(() => {
219
+        this.loading = false
220
+      })
192 221
     },
193
-    outboundClick() {
194
-      // alert('111')
222
+    outboundClick(quesPhone) {
223
+      this.loading = true
224
+      this.$confirm('您确定要对此客户发起呼叫吗?', '提示', {
225
+        confirmButtonText: '确定',
226
+        cancelButtonText: '取消',
227
+        type: 'warning'
228
+      })
229
+        .then(() => {
230
+          getPhone(quesPhone).then(response => {
231
+            if (response.state.toLowerCase() === 'success') {
232
+              const res = response.data
233
+              this.scoketDatas = {
234
+                'Type': 'MakeCall',
235
+                'AgentID': this.usercode,
236
+                'AgentExten': this.extension,
237
+                'Header': res.fix, // 号码前缀 用于截断前缀得到真实号码
238
+                'DestinationNumber': res.phone //
239
+              }
240
+              store.dispatch('ChangeCallNum', quesPhone)
241
+              Send(this.scoketDatas)
242
+              // store.dispatch('UpdateCalloutScreen', false)// 关闭外呼面板
243
+            }
244
+          })
245
+        })
246
+        .catch(() => {
247
+          this.$message.info('已取消呼叫')
248
+        })
249
+      // return new Promise(resolve => {
250
+      //   getPhone(quesPhone).then(response => {
251
+      //     this.loading = false
252
+      //     if (response.state.toLowerCase() === 'success') {
253
+      //       debugger
254
+      //     }
255
+      //   })
256
+      //   resolve()
257
+      // })
195 258
     },
196 259
     // 单选题跳题
197 260
     jumpPage(value, e) {

+ 1 - 1
fuwaiCallCenterWeb.UI/src/views/clickoutbound/tasks/index.vue

@@ -27,7 +27,7 @@
27 27
       </el-table-column>
28 28
       <el-table-column label="呼叫结果" align="center" min-width="110">
29 29
         <template slot-scope="scope">
30
-          {{ callResultsFilter(scope.row.askres) }}
30
+          {{ callResultsFilter(scope.row.hjjgname) }}
31 31
         </template>
32 32
       </el-table-column>
33 33
       <el-table-column prop="userid" label="坐席工号" align="center" min-width=""/>

+ 1 - 1
fuwaiCallCenterWeb.UI/src/views/layout/Layout.vue

@@ -19,7 +19,7 @@
19 19
         <lineChat/>
20 20
       </el-popover>
21 21
     </div>
22
-    <el-button slot="reference" type="primary" class="btns lineChatIcon" icon="el-icon-service" circle @click="visible = !visible"/>
22
+    <!-- <el-button slot="reference" type="primary" class="btns lineChatIcon" icon="el-icon-service" circle @click="visible = !visible"/> -->
23 23
   </div>
24 24
 </template>
25 25
 

+ 25 - 10
fuwaiCallCenterWeb.UI/src/views/notice/manage/addOrEditManege.vue

@@ -7,14 +7,14 @@
7 7
       <el-form-item label="公告信息" prop="content">
8 8
         <el-input v-model="ruleForm.content" type="textarea" autosize placeholder="请输入公告内容"/>
9 9
       </el-form-item>
10
-      <el-form-item label="上级分类" prop="parentids">
10
+      <el-form-item label="用户角色" prop="parentids">
11 11
         <el-tree
12 12
           ref="tree"
13 13
           :data="treelists"
14 14
           :default-expand-all="defaultExpandAll"
15 15
           show-checkbox
16
-          node-key="id"
17 16
           check-strictly
17
+          node-key="id"
18 18
           highlight-current
19 19
           @node-click="treeNodeClick"
20 20
         />
@@ -103,6 +103,8 @@ export default {
103 103
           }
104 104
         }
105 105
       }
106
+      console.log(usercodes)
107
+      console.log(rolecodes)
106 108
       this.$refs.ruleForm.validate((valid) => {
107 109
         if (valid) {
108 110
           this.loading = true
@@ -173,13 +175,11 @@ export default {
173 175
           treeIcheck[tempIcheck[i].id] = tempIcheck[i]
174 176
         }
175 177
       }
176
-      // console.log(treeIcheck)
177 178
       return this.filterTreeidDatas(treeIcheck)
178 179
     },
179 180
     buildTree(list) {
180 181
       const temp = {}
181 182
       const tree = {}
182
-
183 183
       for (const j in list) {
184 184
         temp[list[j].id] = list[j]
185 185
       }
@@ -199,15 +199,30 @@ export default {
199 199
     filterTreeidDatas(treeDatas) {
200 200
       const accessedRouters = []
201 201
       let j = -1
202
+      console.log(treeDatas)
202 203
       for (const i in treeDatas) {
203 204
         j++
204 205
         accessedRouters.push({
205
-          id: treeDatas[i].id
206
+          id: treeDatas[i].id,
207
+          label: treeDatas[i].name,
208
+          code: treeDatas[i].code,
209
+          ischeck: treeDatas[i].ischeck,
210
+          parentid: treeDatas[i].parentid,
211
+          children: []
206 212
         })
207
-        if (treeDatas[i].children) {
208
-          accessedRouters[j].children = this.filterTreeidDatas(
209
-            treeDatas[i].children
210
-          )
213
+        if (treeDatas[i].children.length > 0) {
214
+          for (const n in treeDatas[i].children) {
215
+            if (treeDatas[i].children[n].ischeck) {
216
+              accessedRouters.push({
217
+                id: treeDatas[i].children[n].id,
218
+                label: treeDatas[i].children[n].name,
219
+                code: treeDatas[i].children[n].code,
220
+                ischeck: treeDatas[i].children[n].ischeck,
221
+                parentid: treeDatas[i].children[n].parentid,
222
+                children: []
223
+              })
224
+            }
225
+          }
211 226
         }
212 227
       }
213 228
       return accessedRouters
@@ -236,7 +251,7 @@ export default {
236 251
     },
237 252
     TimeoutExe() {
238 253
       setTimeout(() => {
239
-        console.log(this.treelistIscheck)
254
+        // console.log(this.treelistIscheck)
240 255
         this.$refs.tree.setCheckedNodes(this.treelistIscheck)
241 256
       }, 1000)
242 257
     },

+ 1 - 3
fuwaiCallCenterWeb.UI/src/views/order/orderCreateHY/index.vue

@@ -372,9 +372,7 @@ export default {
372 372
         case '5d0c9e21156ef38d2086d941':// 售后
373 373
           this.businIs = true // 是否是业务类型
374 374
           break
375
-        case '5c47d83fd2bc5f5d5907f296':// 投诉
376
-          alert('投诉')
377
-          this.consultation = false
375
+        case '5c47d83fd2bc5f5d5907f296':// 投诉          this.consultation = false
378 376
           this.afterSale = false
379 377
           this.complaint = true
380 378
           this.businIs = false // 是否是业务类型