ソースを参照

外呼,冲突

liuzhihui 3 年 前
コミット
5b26d3b5de

+ 25 - 1
CallCenterWeb.UI/RMYY/src/api/faultRepairManagement/faultRepair.js

@@ -71,7 +71,7 @@ export function postReturnWork(params) {
71 71
   })
72 72
 }
73 73
 
74
-// 返修工单
74
+// 评价工单
75 75
 export function postEvaluteWorkOrder(params) {
76 76
   return request({
77 77
     url: 'FaultRepair/EvaluteWorkOrder',
@@ -121,3 +121,27 @@ export function getDicValueList(params) {
121 121
     params
122 122
   })
123 123
 }
124
+//工单列表撤回
125
+export function postRetractWorkOrder(params) {
126
+  return request({
127
+    url: 'FaultRepair/Retract',
128
+    method: 'post',
129
+    data: params
130
+  })
131
+}
132
+//工单列表退回
133
+export function postReBackWorkOrder(params) {
134
+  return request({
135
+    url: 'FaultRepair/ReBack',
136
+    method: 'post',
137
+    data: params
138
+  })
139
+}
140
+//我的撤回
141
+export function postMyRetractWorkOrder(params) {
142
+  return request({
143
+    url: 'FaultRepair/MyRetract',
144
+    method: 'post',
145
+    data: params
146
+  })
147
+}

+ 8 - 0
CallCenterWeb.UI/RMYY/src/api/orderManagement/orderList.js

@@ -141,3 +141,11 @@ export function  UpdateFaultRepair(params) {
141 141
     params
142 142
   })
143 143
 }
144
+//我的提交撤回后故障报修编辑
145
+export function MyUpdateFaultRepairWorkOrder(params) {
146
+  return request({
147
+    url: 'FaultRepair/MyUpdateFaultRepairWorkOrder',
148
+    method: 'get',
149
+    params
150
+  })
151
+}

+ 50 - 21
CallCenterWeb.UI/RMYY/src/components/button/orderList.vue

@@ -1,7 +1,7 @@
1 1
 <template>
2 2
   <div>
3
-    <!-- 异常完结 -->
4
-    <el-dialog :visible.sync="dialogStatus.dialog_zixingjiejue" title="异常完结">
3
+    <!-- 自行解决 -->
4
+    <el-dialog :visible.sync="dialogStatus.dialog_zixingjiejue" title="自行解决">
5 5
       <el-form ref="errorDoneForm" :model="errorDoneForm" :rules="rules" label-width="100px">
6 6
         <el-form-item label="原因" prop="result">
7 7
           <el-input :autosize="{ minRows: 4, maxRows: 8}" v-model="errorDoneForm.result" show-word-limit maxlength="100" type="textarea"/>
@@ -27,14 +27,17 @@
27 27
     <!-- 工单评价 -->
28 28
     <el-dialog :visible.sync="dialogStatus.dialog_pingjia" title="评价">
29 29
       <el-form ref="evaluateForm" :model="evaluateForm" :rules="rules" label-width="100px">
30
-        <el-form-item label="服务态度" prop="attitude">
31
-          <el-rate v-model="evaluateForm.attitude" :texts="evaluateText" show-text/>
30
+        <el-form-item label="服务态度" prop="Attitude">
31
+          <el-rate v-model="evaluateForm.Attitude" :texts="evaluateText" show-text/>
32 32
         </el-form-item>
33
-        <el-form-item label="维修质量" prop="quality">
34
-          <el-rate v-model="evaluateForm.quality" :texts="evaluateText" show-text/>
33
+        <el-form-item label="维修质量" prop="Quality">
34
+          <el-rate v-model="evaluateForm.Quality" :texts="evaluateText" show-text/>
35 35
         </el-form-item>
36
-        <el-form-item label="文字评价" prop="evaluateContent">
37
-          <el-input :autosize="{ minRows: 4, maxRows: 8}" v-model="evaluateForm.evaluateContent" show-word-limit maxlength="100" type="textarea"/>
36
+        <el-form-item label="完成时效" prop="Efficiency">
37
+          <el-rate v-model="evaluateForm.Efficiency" :texts="evaluateText" show-text/>
38
+        </el-form-item>
39
+        <el-form-item label="文字评价" prop="EvaluateContent">
40
+          <el-input :autosize="{ minRows: 4, maxRows: 8}" v-model="evaluateForm.EvaluateContent" show-word-limit maxlength="100" type="textarea"/>
38 41
         </el-form-item>
39 42
       </el-form>
40 43
       <div slot="footer" class="dialog-footer">
@@ -45,7 +48,6 @@
45 48
     <!-- 指派 -->
46 49
     <el-dialog :visible.sync="dialogStatus.dialog_zhipai" title="指派">
47 50
       <el-form ref="transferForm" :model="transferForm" :rules="rules" label-width="100px">
48
-
49 51
         <el-form-item label="部门" prop="todept">
50 52
           <select-dept-tree :deptparam="deptidArr" v-model="transferForm.todept" @post-deptid="getDeptid" />
51 53
         </el-form-item>
@@ -61,7 +63,6 @@
61 63
             </el-select>
62 64
           </el-form-item>
63 65
         </el-row>
64
-
65 66
       </el-form>
66 67
       <div slot="footer" class="dialog-footer">
67 68
         <el-button @click="dialogStatus.dialog_zhipai = false">取 消</el-button>
@@ -72,7 +73,7 @@
72 73
 </template>
73 74
 
74 75
 <script>
75
-import { postDealWorkOrder, postReturnWork, postEvaluteWorkOrder, postTransferWorkOrder, postDelWorkOrder } from '@/api/faultRepairManagement/faultRepair'
76
+import { postDealWorkOrder, postReturnWork, postEvaluteWorkOrder, postTransferWorkOrder, postDelWorkOrder,postReBackWorkOrder,postRetractWorkOrder,postMyRetractWorkOrder } from '@/api/faultRepairManagement/faultRepair'
76 77
 import { GetPerson } from '@/api/commonAPI'
77 78
 export default {
78 79
   name: 'OrderButtonOperation',
@@ -88,20 +89,37 @@ export default {
88 89
         dialog_pingjia: false,
89 90
         dialog_fanxiu: false,
90 91
         dialog_zhipai: false,
92
+        dialog_chehuibianji: false,
91 93
         dialog_bianji: false,
92 94
         dialog_shanchu: {
93 95
           text: '确定删除该数据吗?',
94 96
           action: postDelWorkOrder,
95 97
           type: 'confirm'
96
-        }
98
+        },
99
+        dialog_gongdantuihui: {
100
+          text: '确定要退回吗?',
101
+          action: postReBackWorkOrder,
102
+          type: 'confirm'
103
+        },
104
+        dialog_chehui: {
105
+          text: '确定要撤回吗?',
106
+          action: postRetractWorkOrder,
107
+          type: 'confirm'
108
+        },
109
+        dialog_mychehui: {
110
+          text: '确定要撤回吗?',
111
+          action: postMyRetractWorkOrder,
112
+          type: 'confirm'
113
+        },
97 114
       },
98 115
       evaluateText: [
99 116
         '极差', '失望', '一般', '满意', '惊喜'
100 117
       ],
101 118
       evaluateForm: {
102
-        attitude: 0,
103
-        quality: 0,
104
-        evaluateContent: ''
119
+        Attitude: 0,
120
+        Quality: 0,
121
+        Efficiency:0,
122
+        EvaluateContent: ''
105 123
       },
106 124
       transferForm: {
107 125
         todept: 0,
@@ -132,16 +150,19 @@ export default {
132 150
           { required: true, message: '请输入返修原因', trigger: 'blur' },
133 151
           { min: 1, max: 100, message: '长度在 1 到 100 个字符', trigger: 'blur' }
134 152
         ],
135
-        attitude: [
153
+        Attitude: [
136 154
           { required: true, message: '请选择服务态度', trigger: 'blur' }
137 155
         ],
138
-        quality: [
156
+        Quality: [
139 157
           { required: true, message: '请选择维修质量', trigger: 'blur' }
140 158
         ],
141
-        evaluateContent: [
142
-          { required: true, message: '请输入文字评价', trigger: 'blur' },
143
-          { min: 1, max: 100, message: '长度在 1 到 100 个字符', trigger: 'blur' }
144
-        ]
159
+        Efficiency: [
160
+          { required: true, message: '请选择完工时效', trigger: 'blur' }
161
+        ],
162
+        // evaluateContent: [
163
+        //   { required: true, message: '请输入文字评价', trigger: 'blur' },
164
+        //   { min: 1, max: 100, message: '长度在 1 到 100 个字符', trigger: 'blur' }
165
+        // ]
145 166
       }
146 167
     }
147 168
   },
@@ -221,6 +242,14 @@ export default {
221 242
       this.transferForm.tousercode = data
222 243
     },
223 244
     submitForm(formName) {
245
+      if(formName=='evaluateForm'){
246
+        if(this.evaluateForm.Attitude<3||this.evaluateForm.Quality<3||this.evaluateForm.Efficiency<3){
247
+          if(this.evaluateForm.EvaluateContent==''){
248
+            this.$message.warning('请输入文字评价')
249
+            return;
250
+          }
251
+        }
252
+      }
224 253
       this.$refs[formName].validate((valid) => {
225 254
         if (valid) {
226 255
           const params = Object.assign({

+ 5 - 1
CallCenterWeb.UI/RMYY/src/views/callScreen/components/AddOrEditOrder.vue

@@ -32,7 +32,7 @@
32 32
       </el-col>
33 33
       <!--故障报修工单 -->
34 34
       <el-col v-if="orderTypeData.F_Type1===3000" :span="20">
35
-        <add-repairbase :callid='callid' :order-type-data="orderTypeData"/>
35
+        <add-repairbase :iswomanage='iswomanage' :callid='callid' :order-type-data="orderTypeData"/>
36 36
       </el-col>
37 37
       <!-- 车辆调度 -->
38 38
       <el-col v-if="orderTypeData.F_Type1===4000" :span="20">
@@ -82,6 +82,10 @@ export default {
82 82
     callid:{
83 83
       type:String,
84 84
       default:''
85
+    },
86
+    iswomanage:{
87
+      type:Number,
88
+      default:''
85 89
     }
86 90
   },
87 91
   data() {

+ 5 - 1
CallCenterWeb.UI/RMYY/src/views/faultRepair/clinicalReporting/components/addRepairbase.vue

@@ -53,7 +53,7 @@
53 53
             </el-form-item>
54 54
           </el-col>
55 55
         </el-row>
56
-        <el-row>
56
+        <el-row v-if="iswomanage!=1">
57 57
           <el-col :span="10">
58 58
             <el-form-item label="指派部门" prop="assignDepart">
59 59
               <select-dept-tree :deptparam="assignArr" @post-deptid="geAssigntDeptid" />
@@ -122,6 +122,10 @@
122 122
       callid:{
123 123
         type:String,
124 124
         default:''
125
+      },
126
+      iswomanage:{
127
+        type:Number,
128
+        default:''
125 129
       }
126 130
     },
127 131
     data() {

+ 13 - 34
CallCenterWeb.UI/RMYY/src/views/faultRepairManagement/repairList/index.vue

@@ -1,38 +1,16 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form label-width="100px">
4
-      <el-row>
5
-        <el-col :span="4">
6
-          <el-form-item label="姓名">
7
-            <el-input v-model="repairman" placeholder="请输入姓名" size="medium" />
8
-          </el-form-item>
9
-        </el-col>
10
-        <el-col :span="4">
11
-          <el-form-item label="电话">
12
-            <el-input v-model="rpairmanphone" placeholder="请输入电话" size="medium" />
13
-          </el-form-item>
14
-        </el-col>
15
-        <el-col :span="5">
16
-          <el-form-item label="工单编号">
17
-            <el-input v-model="workOrderId" placeholder="请输入工单编号" size="medium" />
18
-          </el-form-item>
19
-        </el-col>
20
-        <el-col :span="5">
21
-          <el-form-item label="时间范围">
22
-            <el-date-picker v-model="searchTime" size="medium" type="daterange" format="yyyy-MM-dd"
23
-              value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" />
24
-          </el-form-item>
25
-        </el-col>
26
-        <el-col :span="5">
27
-          <el-form-item style="margin-left:50px;">
28
-            <el-button type="primary" class="filter-btn" @click="getListTask">查询</el-button>
29
-            <el-button type="primary" class="filter-btn" @click="btn_add_list">
30
-              设置列
31
-            </el-button>
32
-          </el-form-item>
33
-        </el-col>
34
-      </el-row>
35
-    </el-form>
3
+    <div class="filter-container">
4
+      <el-input v-model="repairman" placeholder="请输入姓名" clearable class="filter-item" size="medium" />
5
+      <el-input v-model="rpairmanphone" placeholder="请输入电话" clearable class="filter-item" size="medium" />
6
+      <el-input v-model="workOrderId" placeholder="请输入工单编号" clearable class="filter-item" size="medium" />
7
+      <el-date-picker v-model="searchTime" size="medium" type="daterange" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
8
+        range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" />
9
+      <el-button type="primary" class="filter-btn" @click="getListTask">查询</el-button>
10
+      <el-button type="primary" class="filter-btn" @click="btn_add_list">
11
+        设置列
12
+      </el-button>
13
+    </div>
36 14
     <el-tabs v-model="activeName" @tab-click="handleClick">
37 15
       <el-tab-pane label="全部" name="0" />
38 16
       <el-tab-pane label="待接单" name="1" />
@@ -452,7 +430,7 @@
452 430
       postDoneOrder() { // 完工
453 431
         // console.log(this.equipmodellist)
454 432
         if (this.doneForm.equipmodellist) {
455
-          this.doneForm.equipmodellist = JSON.stringify(this.equipmodellist)
433
+          this.doneForm.equipmodellist = this.equipmodellist
456 434
         }
457 435
         this.$refs['doneForm'].validate((valid) => {
458 436
           if (valid) {
@@ -465,6 +443,7 @@
465 443
                     message: '操作成功!'
466 444
                   })
467 445
                   this.dialogDone = false
446
+                  this.equipmodellist = []
468 447
                   this.getListTask()
469 448
                 } else {
470 449
                   this.$message({

+ 1 - 1
CallCenterWeb.UI/RMYY/src/views/orderManage/addWorkOrder/index.vue

@@ -25,7 +25,7 @@
25 25
     <el-col :span="24">
26 26
       <div class="msgbox">添加工单</div>
27 27
       <el-card class="customer_info">
28
-        <add-or-edit-order :callid="callinCallid" @order-type-data="getOrderTypeData" />
28
+        <add-or-edit-order :iswomanage="1" :callid="callinCallid" @order-type-data="getOrderTypeData" />
29 29
       </el-card>
30 30
     </el-col>
31 31
   </div>

+ 5 - 1
CallCenterWeb.UI/RMYY/src/views/orderManage/components/orderDetail.vue

@@ -145,7 +145,11 @@
145 145
                 <div class="evaluate">
146 146
                   <span class="demonstration">维修质量:</span>
147 147
                   <el-rate v-model="evaluateData.F_Quality" show-text disabled style="display: inline-block;"></el-rate>
148
-                </div class="evaluate">
148
+                </div>
149
+                <div class="evaluate">
150
+                  <span class="demonstration">完工时效:</span>
151
+                  <el-rate v-model="evaluateData.F_Efficiency" show-text disabled style="display: inline-block;"></el-rate>
152
+                </div>
149 153
                 <div>
150 154
                   <el-col :md="24" style="font-size: 15px;color: #505050;"> 文字评价:{{evaluateData.F_EvaluateContent}}</el-col>
151 155
                 </div>

+ 339 - 421
CallCenterWeb.UI/RMYY/src/views/orderManage/mySubmit/index.vue

@@ -3,64 +3,19 @@
3 3
     <div class="filter-container">
4 4
       <!-- <el-input v-model="searchData.name" placeholder="请输入姓名" class="filter-item" size="medium" /> -->
5 5
       <!-- <el-input v-model="searchData.phone" placeholder="请输入电话" class="filter-item" size="medium" /> -->
6
-      <el-input
7
-        v-model="searchData.wocode"
8
-        placeholder="请输入工单编号"
9
-        class="filter-item"
10
-        size="medium"
11
-      />
12
-      <el-date-picker
13
-        v-model="searchTime"
14
-        type="daterange"
15
-        format="yyyy年MM月dd日"
16
-        value-format="yyyy-MM-dd"
17
-        align="left"
18
-        unlink-panels
19
-        range-separator="至"
20
-        start-placeholder="开始日期"
21
-        end-placeholder="结束日期"
22
-        size="medium"
23
-      />
24
-      <el-select
25
-        v-model="searchData.type"
26
-        clearable
27
-        placeholder="请选择业务类别"
28
-        size="medium"
29
-        @change="changeOrder"
30
-      >
31
-        <el-option
32
-          v-for="item in orderData"
33
-          :key="item.id"
34
-          :label="item.text"
35
-          :value="item.id"
36
-        />
6
+      <el-input v-model="searchData.wocode" placeholder="请输入工单编号" class="filter-item" size="medium" />
7
+      <el-date-picker v-model="searchTime" type="daterange" format="yyyy年MM月dd日" value-format="yyyy-MM-dd" align="left"
8
+        unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" size="medium" />
9
+      <el-select v-model="searchData.type" clearable placeholder="请选择业务类别" size="medium" @change="changeOrder">
10
+        <el-option v-for="item in orderData" :key="item.id" :label="item.text" :value="item.id" />
37 11
       </el-select>
38
-      <el-cascader
39
-        ref="cascader"
40
-        v-model="searchData.loweltype"
41
-        :options="subclassData"
42
-        :props="defaultProps"
43
-        size="medium"
44
-        placeholder="请选择工单类别"
45
-        filterable
46
-        clearable
47
-        @change="handleChange"
48
-      />
49
-      <el-button
50
-        type="primary"
51
-        class="filter-btn"
52
-        icon="el-icon-search"
53
-        @click="btn_search"
54
-      >
12
+      <el-cascader ref="cascader" v-model="searchData.loweltype" :options="subclassData" :props="defaultProps"
13
+        size="medium" placeholder="请选择工单类别" filterable clearable @change="handleChange" />
14
+      <el-button type="primary" class="filter-btn" icon="el-icon-search" @click="btn_search">
55 15
         搜索
56 16
       </el-button>
57
-      <el-button
58
-        v-permission="'MYSUBSetList'"
59
-        type="primary"
60
-        class="filter-btn"
61
-        icon="el-icon-s-tools"
62
-        @click="btn_add_list"
63
-      >
17
+      <el-button v-permission="'MYSUBSetList'" type="primary" class="filter-btn" icon="el-icon-s-tools"
18
+        @click="btn_add_list">
64 19
         设置列
65 20
       </el-button>
66 21
     </div>
@@ -69,424 +24,387 @@
69 24
       <el-tab-pane label="待处理" name="0" />
70 25
       <el-tab-pane label="已处理" name="1" />
71 26
     </el-tabs>
72
-    <el-table
73
-      v-loading="loading"
74
-      ref="multipleTable"
75
-      :data="dataLists"
76
-      border
77
-      stripe
78
-      row-key="F_Id"
79
-    >
27
+    <el-table v-loading="loading" ref="multipleTable" :data="dataLists" border stripe row-key="F_Id">
80 28
       <!-- <el-table-column type="index" label="编号" align="center" fixed width="60" /> -->
81
-      <el-table-column
82
-        v-if="fieldListFlag.F_WoCode"
83
-        prop="F_WoCode"
84
-        label="工单编号"
85
-        align="center"
86
-        min-width="110"
87
-      >
29
+      <el-table-column v-if="fieldListFlag.F_WoCode" prop="F_WoCode" label="工单编号" align="center" min-width="110">
88 30
         <template slot-scope="scope">
89
-          <el-button
90
-            type="text"
91
-            size="small"
92
-            @click="hadndleOrderCode(scope.row)"
93
-          >
31
+          <el-button type="text" size="small" @click="hadndleOrderCode(scope.row)">
94 32
             {{ scope.row.F_WoCode }}
95 33
           </el-button>
96 34
         </template>
97 35
       </el-table-column>
98
-      <el-table-column
99
-        v-if="fieldListFlag.F_ProposerName"
100
-        prop="F_ProposerName"
101
-        label="姓名"
102
-        align="center"
103
-        min-width
104
-      />
105
-      <el-table-column
106
-        v-if="fieldListFlag.F_SonType"
107
-        :formatter="formtOrder"
108
-        prop="F_SonType"
109
-        label="工单类别"
110
-        align="center"
111
-      />
112
-      <el-table-column
113
-        v-if="fieldListFlag.F_Content"
114
-        prop="F_Content"
115
-        label="工单内容"
116
-        align="center"
117
-      />
118
-      <el-table-column
119
-        v-if="fieldListFlag.StateName"
120
-        prop="StateName"
121
-        label="工单状态"
122
-        align="center"
123
-      />
124
-      <el-table-column
125
-        v-if="fieldListFlag.F_CreateTime"
126
-        prop="F_CreateTime"
127
-        label="创建时间"
128
-        align="center"
129
-      />
130
-      <el-table-column
131
-        label="操作"
132
-        align="center"
133
-        class-name="oparate_btn"
134
-        fixed="right"
135
-      >
36
+      <el-table-column v-if="fieldListFlag.F_ProposerName" prop="F_ProposerName" label="姓名" align="center" min-width />
37
+      <el-table-column v-if="fieldListFlag.F_SonType" :formatter="formtOrder" prop="F_SonType" label="工单类别"
38
+        align="center" />
39
+      <el-table-column v-if="fieldListFlag.F_Content" prop="F_Content" label="工单内容" align="center" />
40
+      <el-table-column v-if="fieldListFlag.StateName" prop="StateName" label="工单状态" align="center" />
41
+      <el-table-column v-if="fieldListFlag.F_CreateTime" prop="F_CreateTime" label="创建时间" align="center" />
42
+      <el-table-column label="操作" align="center" class-name="oparate_btn" fixed="right">
136 43
         <template slot-scope="scope">
137
-          <el-button
138
-            v-for="item in scope.row.Buttons"
139
-            :key="item.key"
140
-            type="text"
141
-            @click="btnClickEvents(item, scope.row.F_WoCode, scope.row)"
142
-          >
44
+          <el-button v-for="item in scope.row.Buttons" :key="item.key" type="text"
45
+            @click="btnClickEvents(item, scope.row.F_WoCode, scope.row)">
143 46
             {{ item.value }}
144 47
           </el-button>
145 48
         </template>
146 49
       </el-table-column>
147 50
     </el-table>
148
-    <pagination
149
-      v-show="pageParams.total > 0"
150
-      :total="pageParams.total"
151
-      :pageindex.sync="pageParams.pageindex"
152
-      :pagesize.sync="pageParams.pagesize"
153
-      class="pagination"
154
-      @pagination="getList"
155
-    />
156
-    <order-button-operation
157
-      ref="butOption"
158
-      :name.sync="buttonName"
159
-      @refList="refList"
160
-    />
51
+    <pagination v-show="pageParams.total > 0" :total="pageParams.total" :pageindex.sync="pageParams.pageindex"
52
+      :pagesize.sync="pageParams.pagesize" class="pagination" @pagination="getList" />
53
+    <order-button-operation ref="butOption" :name.sync="buttonName" @refList="refList" />
161 54
   </div>
162 55
 </template>
163 56
 
164 57
 <script>
165
-import { getOrderTypeDrop } from '@/api/systemSetup/roleSetting/menuSetup'
166
-import {
167
-  getorderList,
168
-  deleteOrder,
169
-  SureOrder,
170
-  AssignOrder,
171
-  CompleteOrder,
172
-  getOrderStateData,
173
-  mySubmitOrderList,
174
-  commonWorkOrderList
175
-} from '@/api/orderManagement/orderList'
58
+  import {
59
+    getOrderTypeDrop
60
+  } from '@/api/systemSetup/roleSetting/menuSetup'
61
+  import {
62
+    getorderList,
63
+    deleteOrder,
64
+    SureOrder,
65
+    AssignOrder,
66
+    CompleteOrder,
67
+    getOrderStateData,
68
+    mySubmitOrderList,
69
+    commonWorkOrderList
70
+  } from '@/api/orderManagement/orderList'
176 71
 
177
-import { getOrderTypeList } from '@/api/commonAPI'
178
-import { GetFiledState } from '@/api/commonAPI'
179
-import addDefinedList from '@/components/context/addDefinedList'
180
-import addOrEditFaultRepair from '../../faultRepair/clinicalReporting/components/addRepairbase.vue'
181
-// import AddOrEditInfOrder from '@/views/orderManage/components/addOrEditInfOrder'
182
-import detail from '../components/orderDetail.vue'
183
-import askDetail from '../components/askdetail.vue'
184
-import evaluate from './evaluate.vue'
185
-import Pagination from '@/components/context/Pagination' // 对el-pagination 二次封装
186
-import OrderButtonOperation from '@/components/button/orderList'
72
+  import {
73
+    getOrderTypeList
74
+  } from '@/api/commonAPI'
75
+  import {
76
+    GetFiledState
77
+  } from '@/api/commonAPI'
78
+  import addDefinedList from '@/components/context/addDefinedList'
79
+  import addOrEditFaultRepair from '../../faultRepair/clinicalReporting/components/addRepairbase.vue'
80
+  import RepairEdit from './repairEdit.vue'
81
+  // import AddOrEditInfOrder from '@/views/orderManage/components/addOrEditInfOrder'
82
+  import detail from '../components/orderDetail.vue'
83
+  import askDetail from '../components/askdetail.vue'
84
+  import evaluate from './evaluate.vue'
85
+  import Pagination from '@/components/context/Pagination' // 对el-pagination 二次封装
86
+  import OrderButtonOperation from '@/components/button/orderList'
187 87
 
188
-export default {
189
-  name: 'MySubmit',
190
-  components: {
191
-    Pagination,
192
-    OrderButtonOperation
193
-  },
194
-  data() {
195
-    return {
196
-      isDisable: false, // 防止多次点击
197
-      loading: false,
198
-      deleteId: [],
199
-      fieldListFlag: {},
200
-      secondOrderData: [],
201
-      searchTime: '',
202
-      buttonName: '',
203
-      searchData: {
204
-        wocode: '', // 工单号
205
-        type: '', // 类型
206
-        loweltype: 0, // 类型
207
-        state: -1, // 工单状态
208
-        starttime: '', // 开始时间
209
-        endtime: '' // 结束时间
210
-        // page: 1, // 第几页
211
-        // pagesize: Number(this.$store.getters.serverConfig.PAGESIZE), // 每页几条信息
212
-      },
213
-      pageParams: {
214
-        pageindex: 1, // 当前第几页
215
-        pagesize: Number(this.$store.getters.serverConfig.PAGESIZE), // 每页几条数据
216
-        total: 0 // 总共多少数据
217
-      },
218
-      dataLists: [], // 列表数据数据
219
-      orderstate: [], // 工单状态数据
220
-      defaultProps: {
221
-        checkStrictly: true,
222
-        children: 'children',
223
-        label: 'text',
224
-        value: 'id'
225
-      },
226
-      activeName: '0',
227
-      orderData: [],
228
-      subclassData: [],
229
-      selfReason: '',
230
-      title: '',
231
-      dialogSelf: false
232
-    }
233
-  },
234
-  created() {
235
-    this.getList()
236
-    this.getTreeList()
237
-    this.getOrderTypeData(2, 1000)
238
-    this.getOrderStat()
239
-    this.getFiledTabDetail(this.$route.path.split('/').join('_'))
240
-    document.onkeyup = (e) => {
241
-      if (e.keyCode === 13) {
242
-        this.getList()
88
+  export default {
89
+    name: 'MySubmit',
90
+    components: {
91
+      Pagination,
92
+      OrderButtonOperation
93
+    },
94
+    data() {
95
+      return {
96
+        activeName:'-1',
97
+        isDisable: false, // 防止多次点击
98
+        loading: false,
99
+        deleteId: [],
100
+        fieldListFlag: {},
101
+        secondOrderData: [],
102
+        searchTime: '',
103
+        buttonName: '',
104
+        searchData: {
105
+          wocode: '', // 工单号
106
+          type: '', // 类型
107
+          loweltype: 0, // 类型
108
+          state: -1, // 工单状态
109
+          starttime: '', // 开始时间
110
+          endtime: '' // 结束时间
111
+          // page: 1, // 第几页
112
+          // pagesize: Number(this.$store.getters.serverConfig.PAGESIZE), // 每页几条信息
113
+        },
114
+        pageParams: {
115
+          pageindex: 1, // 当前第几页
116
+          pagesize: Number(this.$store.getters.serverConfig.PAGESIZE), // 每页几条数据
117
+          total: 0 // 总共多少数据
118
+        },
119
+        dataLists: [], // 列表数据数据
120
+        orderstate: [], // 工单状态数据
121
+        defaultProps: {
122
+          checkStrictly: true,
123
+          children: 'children',
124
+          label: 'text',
125
+          value: 'id'
126
+        },
127
+        // activeName: '0',
128
+        orderData: [],
129
+        subclassData: [],
130
+        selfReason: '',
131
+        title: '',
132
+        dialogSelf: false
243 133
       }
244
-    }
245
-  },
246
-  methods: {
247
-    refList() {
248
-      this.getList()
249 134
     },
250
-    handleClick(res) {
251
-      this.searchData.state = Number(res.name)
135
+    created() {
252 136
       this.getList()
253
-    },
254
-    formtOrder(row, column) {
255
-      if (row.F_SonType) {
256
-        return this.$store.getters.workTypeMap[parseInt(row.F_SonType)].text
137
+      this.getTreeList()
138
+      this.getOrderTypeData(2, 1000)
139
+      this.getOrderStat()
140
+      this.getFiledTabDetail(this.$route.path.split('/').join('_'))
141
+      document.onkeyup = (e) => {
142
+        if (e.keyCode === 13) {
143
+          this.getList()
144
+        }
257 145
       }
258 146
     },
259
-    btnClickEvents(button, wocode, row) {
260
-      this.buttonName = button.key
261
-      this.$refs.butOption.butOptionMethod(this.buttonName, wocode)
262
-    },
263
-    getList() {
264
-      this.loading = true
265
-      return new Promise((resolve) => {
266
-        if (this.searchTime) {
267
-          this.searchData.starttime = this.searchTime[0]
268
-          this.searchData.endtime = this.searchTime[1]
147
+    methods: {
148
+      refList() {
149
+        this.getList()
150
+      },
151
+      handleClick(res) {
152
+        this.searchData.state = Number(res.name)
153
+        this.getList()
154
+      },
155
+      formtOrder(row, column) {
156
+        if (row.F_SonType) {
157
+          return this.$store.getters.workTypeMap[parseInt(row.F_SonType)].text
269 158
         }
270
-        this.searchData.page = this.pageParams.pageindex
271
-        this.searchData.pagesize = this.pageParams.pagesize
272
-        mySubmitOrderList(this.searchData).then((response) => {
273
-          this.loading = false
274
-          if (response.state.toLowerCase() === 'success') {
275
-            this.pageParams.total = response.total
276
-            this.dataLists = response.rows
277
-          }
159
+      },
160
+      btnClickEvents(button, wocode, row) {
161
+        this.buttonName = button.key
162
+        this.$refs.butOption.butOptionMethod(this.buttonName, wocode)
163
+        if (this.buttonName === 'chehuibianji') {
164
+          this.btn_edit(wocode)
165
+        }
166
+      },
167
+      // 编辑
168
+      btn_edit(rid) {
169
+        this.$layer.iframe({
170
+          content: {
171
+            content: RepairEdit, // 传递的组件对象
172
+            parent: this, // 当前的vue对象
173
+            data: {
174
+              wid: rid
175
+            } // props
176
+          },
177
+          area: ['70%', '70%'],
178
+          title: '编辑工单'
278 179
         })
279
-        resolve()
280
-      })
281
-    },
282
-    btn_add_list() {
283
-      this.$layer.iframe({
284
-        content: {
285
-          content: addDefinedList, // 传递的组件对象
286
-          parent: this, // 当前的vue对象
287
-          data: {
288
-            definedId: this.$route.path
289
-          } // props
290
-        },
291
-        area: ['70%', '30%'],
292
-        title: '自定义字段'
293
-      })
294
-    },
295
-    getFiledTabDetail(TableId) {
296
-      GetFiledState(TableId).then((res) => {
297
-        const filedsData = res.F_Fileds
298
-        const filedsObj = {}
299
-        if (filedsData) {
300
-          filedsData.forEach((element) => {
301
-            filedsObj[element] = true
180
+      },
181
+      getList() {
182
+        this.loading = true
183
+        return new Promise((resolve) => {
184
+          if (this.searchTime) {
185
+            this.searchData.starttime = this.searchTime[0]
186
+            this.searchData.endtime = this.searchTime[1]
187
+          }
188
+          this.searchData.page = this.pageParams.pageindex
189
+          this.searchData.pagesize = this.pageParams.pagesize
190
+          mySubmitOrderList(this.searchData).then((response) => {
191
+            this.loading = false
192
+            if (response.state.toLowerCase() === 'success') {
193
+              this.pageParams.total = response.total
194
+              this.dataLists = response.rows
195
+            }
302 196
           })
303
-        }
304
-        this.fieldListFlag = filedsObj
305
-        this.$refs['multipleTable'].doLayout()
306
-      })
307
-    },
308
-    btn_search() {
309
-      this.pageParams.pageindex = 1
310
-      this.getList()
311
-    },
312
-    // 自行解决
313
-    btn_selfsolve(id) {
314
-      this.title = '异常原因'
315
-      this.dialogSelf = true
316
-    },
317
-    // 返工
318
-    btn_rework(id) {
319
-      this.title = '返工'
320
-      this.dialogSelf = true
321
-    },
322
-    // 评价
323
-    btn_evaluate(id) {
324
-      this.$layer.iframe({
325
-        content: {
326
-          content: evaluate, // 传递的组件对象
327
-          parent: this, // 当前的vue对象
328
-          data: {
329
-            rowid: id
330
-          } // props
331
-        },
332
-        area: ['50%', '50%'],
333
-        title: '评价'
334
-      })
335
-    },
336
-    oncancel() {
337
-      this.dialogSelf = false
338
-      this.selfReason = ''
339
-    },
340
-    onsure() {
341
-      this.dialogSelf = false
342
-    },
343
-    // 编辑
344
-    btn_edit(wocode) {
345
-      this.$layer.iframe({
346
-        content: {
347
-          content: addOrEditFaultRepair, // 传递的组件对象
348
-          parent: this, // 当前的vue对象
349
-          data: {
350
-            rowid: wocode
351
-          } // props
352
-        },
353
-        area: ['50%', '70%'],
354
-        title: '编辑订单'
355
-      })
356
-    },
357
-    hadndleOrderCode(row) {
358
-      if (row.F_Type === 3000) {
197
+          resolve()
198
+        })
199
+      },
200
+      btn_add_list() {
359 201
         this.$layer.iframe({
360 202
           content: {
361
-            content: detail, // 传递的组件对象
203
+            content: addDefinedList, // 传递的组件对象
362 204
             parent: this, // 当前的vue对象
363 205
             data: {
364
-              rowid: row.F_WoCode
206
+              definedId: this.$route.path
365 207
             } // props
366 208
           },
367
-          area: ['80%', '90%'],
368
-          title: '订单详情'
209
+          area: ['70%', '30%'],
210
+          title: '自定义字段'
369 211
         })
370
-      }
371
-      if (row.F_Type === 1000) {
212
+      },
213
+      getFiledTabDetail(TableId) {
214
+        GetFiledState(TableId).then((res) => {
215
+          const filedsData = res.F_Fileds
216
+          const filedsObj = {}
217
+          if (filedsData) {
218
+            filedsData.forEach((element) => {
219
+              filedsObj[element] = true
220
+            })
221
+          }
222
+          this.fieldListFlag = filedsObj
223
+          this.$refs['multipleTable'].doLayout()
224
+        })
225
+      },
226
+      btn_search() {
227
+        this.pageParams.pageindex = 1
228
+        this.getList()
229
+      },
230
+      // 自行解决
231
+      btn_selfsolve(id) {
232
+        this.title = '异常原因'
233
+        this.dialogSelf = true
234
+      },
235
+      // 返工
236
+      btn_rework(id) {
237
+        this.title = '返工'
238
+        this.dialogSelf = true
239
+      },
240
+      // 评价
241
+      btn_evaluate(id) {
372 242
         this.$layer.iframe({
373 243
           content: {
374
-            content: askDetail,
375
-            parent: this,
244
+            content: evaluate, // 传递的组件对象
245
+            parent: this, // 当前的vue对象
376 246
             data: {
377
-              rowid: row.F_WoCode
247
+              rowid: id
378 248
             } // props
379 249
           },
380
-          area: ['80%', '90%'],
381
-          title: '订单详情'
250
+          area: ['50%', '50%'],
251
+          title: '评价'
382 252
         })
383
-      }
384
-    },
385
-    // 删除弹框
386
-    btn_delete(operateId) {
387
-      this.deleteId = []
388
-      this.deleteId.push(operateId)
389
-      this.$confirm('此操作将永久删除当前工单, 是否继续?', '提示', {
390
-        confirmButtonText: '确定',
391
-        cancelButtonText: '取消',
392
-        type: 'warning'
393
-      })
394
-        .then(() => {
395
-          deleteOrder(this.deleteId).then((response) => {
396
-            if (response.state.toLowerCase() === 'success') {
397
-              this.getList()
398
-              this.$message.success('删除成功!')
399
-            }
253
+      },
254
+      oncancel() {
255
+        this.dialogSelf = false
256
+        this.selfReason = ''
257
+      },
258
+      onsure() {
259
+        this.dialogSelf = false
260
+      },
261
+      // 编辑
262
+      // btn_edit(wocode) {
263
+      //   this.$layer.iframe({
264
+      //     content: {
265
+      //       content: addOrEditFaultRepair, // 传递的组件对象
266
+      //       parent: this, // 当前的vue对象
267
+      //       data: {
268
+      //         rowid: wocode
269
+      //       } // props
270
+      //     },
271
+      //     area: ['50%', '70%'],
272
+      //     title: '编辑订单'
273
+      //   })
274
+      // },
275
+      hadndleOrderCode(row) {
276
+        if (row.F_Type === 3000) {
277
+          this.$layer.iframe({
278
+            content: {
279
+              content: detail, // 传递的组件对象
280
+              parent: this, // 当前的vue对象
281
+              data: {
282
+                rowid: row.F_WoCode
283
+              } // props
284
+            },
285
+            area: ['80%', '90%'],
286
+            title: '订单详情'
400 287
           })
288
+        }
289
+        if (row.F_Type === 1000) {
290
+          this.$layer.iframe({
291
+            content: {
292
+              content: askDetail,
293
+              parent: this,
294
+              data: {
295
+                rowid: row.F_WoCode
296
+              } // props
297
+            },
298
+            area: ['80%', '90%'],
299
+            title: '订单详情'
300
+          })
301
+        }
302
+      },
303
+      // 删除弹框
304
+      btn_delete(operateId) {
305
+        this.deleteId = []
306
+        this.deleteId.push(operateId)
307
+        this.$confirm('此操作将永久删除当前工单, 是否继续?', '提示', {
308
+            confirmButtonText: '确定',
309
+            cancelButtonText: '取消',
310
+            type: 'warning'
311
+          })
312
+          .then(() => {
313
+            deleteOrder(this.deleteId).then((response) => {
314
+              if (response.state.toLowerCase() === 'success') {
315
+                this.getList()
316
+                this.$message.success('删除成功!')
317
+              }
318
+            })
319
+          })
320
+          .catch(() => {
321
+            this.$message.info('已取消删除')
322
+          })
323
+      },
324
+      // 工单完结
325
+      btn_Complete(operateId) {
326
+        this.$confirm('此操作完结当前工单, 是否继续?', '提示', {
327
+            confirmButtonText: '确定',
328
+            cancelButtonText: '取消',
329
+            type: 'warning'
330
+          })
331
+          .then(() => {
332
+            CompleteOrder(operateId).then((response) => {
333
+              if (response.state.toLowerCase() === 'success') {
334
+                this.getList()
335
+                this.$message.success('完结成功!')
336
+              }
337
+            })
338
+          })
339
+          .catch(() => {
340
+            this.$message.info('已取消完结')
341
+          })
342
+      },
343
+
344
+      // 工单类型
345
+      getOrderTypeData(id, pid) {
346
+        getOrderTypeList(id, pid).then((response) => {
347
+          if (response.rows) {
348
+            this.secondOrderData = response.rows
349
+          }
401 350
         })
402
-        .catch(() => {
403
-          this.$message.info('已取消删除')
351
+      },
352
+      // 工单状态
353
+      getOrderStat() {
354
+        return new Promise((resolve) => {
355
+          const params = {}
356
+          getOrderStateData(params).then((response) => {
357
+            this.loading = false
358
+            if (response) {
359
+              this.orderstate = response
360
+            }
361
+          })
362
+          resolve()
404 363
         })
405
-    },
406
-    // 工单完结
407
-    btn_Complete(operateId) {
408
-      this.$confirm('此操作完结当前工单, 是否继续?', '提示', {
409
-        confirmButtonText: '确定',
410
-        cancelButtonText: '取消',
411
-        type: 'warning'
412
-      })
413
-        .then(() => {
414
-          CompleteOrder(operateId).then((response) => {
364
+      },
365
+      getTreeList() {
366
+        return new Promise((resolve) => {
367
+          getOrderTypeDrop(this.pid).then((response) => {
415 368
             if (response.state.toLowerCase() === 'success') {
416
-              this.getList()
417
-              this.$message.success('完结成功!')
369
+              this.orderData = response.data
418 370
             }
419 371
           })
372
+          resolve()
420 373
         })
421
-        .catch(() => {
422
-          this.$message.info('已取消完结')
423
-        })
424
-    },
425
-
426
-    // 工单类型
427
-    getOrderTypeData(id, pid) {
428
-      getOrderTypeList(id, pid).then((response) => {
429
-        if (response.rows) {
430
-          this.secondOrderData = response.rows
374
+      },
375
+      handleChange(data) {
376
+        console.log(data)
377
+        this.searchData.menutype = data[data.length - 1]
378
+        console.log(this.searchData.menutype)
379
+      },
380
+      changeOrder(data) {
381
+        console.log(data)
382
+        if (!data) {
383
+          return
431 384
         }
432
-      })
433
-    },
434
-    // 工单状态
435
-    getOrderStat() {
436
-      return new Promise((resolve) => {
437
-        const params = {}
438
-        getOrderStateData(params).then((response) => {
439
-          this.loading = false
440
-          if (response) {
441
-            this.orderstate = response
442
-          }
443
-        })
444
-        resolve()
445
-      })
446
-    },
447
-    getTreeList() {
448
-      return new Promise((resolve) => {
449
-        getOrderTypeDrop(this.pid).then((response) => {
450
-          if (response.state.toLowerCase() === 'success') {
451
-            this.orderData = response.data
452
-          }
385
+        this.searchData.menutypeid = data
386
+        const params = {
387
+          pid: data,
388
+          flag: 1
389
+        }
390
+        return new Promise((resolve) => {
391
+          getOrderTypeDrop(params).then((response) => {
392
+            if (response.state.toLowerCase() === 'success') {
393
+              this.subclassData = response.data
394
+            }
395
+          })
396
+          resolve()
453 397
         })
454
-        resolve()
455
-      })
456
-    },
457
-    handleChange(data) {
458
-      console.log(data)
459
-      this.searchData.menutype = data[data.length - 1]
460
-      console.log(this.searchData.menutype)
461
-    },
462
-    changeOrder(data) {
463
-      console.log(data)
464
-      if (!data) {
465
-        return
466
-      }
467
-      this.searchData.menutypeid = data
468
-      const params = {
469
-        pid: data,
470
-        flag: 1
471 398
       }
472
-      return new Promise((resolve) => {
473
-        getOrderTypeDrop(params).then((response) => {
474
-          if (response.state.toLowerCase() === 'success') {
475
-            this.subclassData = response.data
476
-          }
477
-        })
478
-        resolve()
479
-      })
480 399
     }
481 400
   }
482
-}
483 401
 </script>
484 402
 
485 403
 <style rel="stylesheet/scss" lang="scss" scoped>
486
-/deep/.el-tabs__item {
487
-  width: 185px !important;
488
-  text-align: center;
489
-  font-size: 16px !important;
490
-  font-weight: 600;
491
-}
404
+  /deep/.el-tabs__item {
405
+    width: 185px !important;
406
+    text-align: center;
407
+    font-size: 16px !important;
408
+    font-weight: 600;
409
+  }
492 410
 </style>

+ 360 - 0
CallCenterWeb.UI/RMYY/src/views/orderManage/mySubmit/repairEdit.vue

@@ -0,0 +1,360 @@
1
+<template>
2
+  <div style="margin: 0 10px !important;">
3
+    <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px">
4
+      <el-row :gutter="20">
5
+        <el-row>
6
+          <el-col :span="20">
7
+            <el-form-item label="工单类别" prop="repairOrderType">
8
+              <select-order-typeTwo :orderTypeparams='ruleForm.repairOrderType' :second-order-type="secondOrderType"
9
+                @post-second-order-type="getSecondOOrderType" />
10
+            </el-form-item>
11
+          </el-col>
12
+        </el-row>
13
+        <el-row>
14
+          <el-col :span="20">
15
+            <el-form-item label="报修内容" prop="repairCenter">
16
+              <el-input v-model="ruleForm.repairCenter" :autosize="{ minRows: 4, maxRows: 8}" show-word-limit
17
+                maxlength="100" type="textarea" placeholder="请输入报修内容" />
18
+            </el-form-item>
19
+          </el-col>
20
+        </el-row>
21
+        <el-row>
22
+          <el-col :span="20">
23
+            <el-form-item label="报修地点" prop="repairAddress">
24
+              <el-input v-model="ruleForm.repairAddress" placeholder="请输入报修地点" />
25
+            </el-form-item>
26
+          </el-col>
27
+        </el-row>
28
+        <el-row>
29
+          <el-col :span="20">
30
+            <el-form-item label="附件图片" prop="repairImageid">
31
+              <el-upload :headers="headers" :file-list="fileList" :on-success="handle_success" :action="imgUrl"
32
+                list-type="picture-card">
33
+                <i class="el-icon-plus" />
34
+              </el-upload>
35
+            </el-form-item>
36
+          </el-col>
37
+        </el-row>
38
+        <el-form-item>
39
+          <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
40
+        </el-form-item>
41
+      </el-row>
42
+    </el-form>
43
+  </div>
44
+
45
+</template>
46
+
47
+<script>
48
+  import selectDeptTree from '@/components/context/commonSelect/selectDeptTree.vue'
49
+  import selectOrderTypeTwo from '@/components/context/commonSelect/selectOrderTypeTwo.vue'
50
+  import {
51
+    GetPerson
52
+  } from '@/api/commonAPI'
53
+  import {
54
+    GetFaultRepairDetail,
55
+    MyUpdateFaultRepairWorkOrder
56
+  } from '@/api/orderManagement/orderList'
57
+  import {
58
+    getAddRepairbase
59
+  } from '@/api/faultRepairManagement/faultRepair'
60
+  export default {
61
+    name: 'RepairEdit',
62
+    components: {
63
+      selectDeptTree,
64
+      selectOrderTypeTwo
65
+    },
66
+    props: {
67
+      wid: {
68
+        type: String,
69
+        default: ''
70
+      },
71
+      fid: {
72
+        type: String,
73
+        default: ''
74
+      },
75
+      layerid: {
76
+        type: String,
77
+        default: ''
78
+      },
79
+      callid:{
80
+        type:String,
81
+        default:''
82
+      },
83
+      // iswomanage:{
84
+      //   type:Number,
85
+      //   default:''
86
+      // }
87
+    },
88
+    data() {
89
+      return {
90
+        secondOrderType: {
91
+          typeid: 2,
92
+          pid: 3000
93
+        },
94
+        orderarr: [],
95
+        ordertypeArr: [],
96
+        imgUrl: this.$store.getters.serverConfig.BASE_API + 'FaultRepair/UploadFile',
97
+        fileList: [],
98
+        repairman: [], // 申请人数据
99
+        deptidArr: [], // 申请部门默认值
100
+        assignman: [], // 指派人
101
+        assignArr: [], // 默认指派部门
102
+        ruleForm: {
103
+          repairDeptid: '', // 申请部门
104
+          repairmanid: '', // 申请人
105
+          repairmanphone: '', // 申请电话
106
+          repairmanCallNumber: '', // 联系电话
107
+          repairOrderType: [], // 工单类别
108
+          repairCenter: '', // 报修内容
109
+          repairAddress: '', // 报修地点
110
+          repairImageid: '', // 附件
111
+          repairOper: '0', // 下不流程
112
+          assignDepart: '', // 指派部门
113
+          assignMant: '' // 指派人
114
+        },
115
+        headers: {
116
+          Authorization: localStorage.getItem('Admin-Token')
117
+        },
118
+        rules: {
119
+          repairOrderType: [{
120
+            required: true,
121
+            message: '请选择工单类别',
122
+            trigger: 'change'
123
+          }],
124
+          repairCenter: [{
125
+            required: true,
126
+            message: '请输入报修内容',
127
+            trigger: 'blur'
128
+          }],
129
+          repairAddress: [{
130
+            required: true,
131
+            message: '请输入报修地点',
132
+            trigger: 'blur'
133
+          }],
134
+        }
135
+      }
136
+    },
137
+    created() {
138
+      this.ruleForm.repairDeptid = this.deptidArr[this.deptidArr.length - 1]
139
+      this.getRepairman(this.deptidArr[this.deptidArr.length - 1], 0)
140
+      //assignArr
141
+      const deptid = this.$store.getters.teamId
142
+      if (deptid) {
143
+        this.assignArr = this.$store.getters.deptmap[parseInt(deptid)].ids
144
+        this.ruleForm.assignDepart = deptid
145
+
146
+        this.getRepairman(deptid, 1)
147
+      }
148
+      this.ruleForm.assignMant = this.$store.getters.usercode
149
+      if (this.wid) {
150
+        this.getWoDetail(this.wid, '0')
151
+      }
152
+    },
153
+    methods: {
154
+      // 部门
155
+      getDeptid(data) {
156
+        this.ruleForm.repairDeptid = data[data.length - 1]
157
+        this.deptidArr = data
158
+        this.getRepairman(this.ruleForm.repairDeptid, 0)
159
+      },
160
+      geAssigntDeptid(data) {
161
+        this.ruleForm.assignDepart = data[data.length - 1]
162
+        this.assignArr = data
163
+        this.getRepairman(this.ruleForm.assignDepart, 1)
164
+      },
165
+      // 获取申请人数据
166
+      getRepairman(id, state) {
167
+        return new Promise((resolve) => {
168
+          const params = {
169
+            deptid: id // 字典管理的工单标识
170
+          }
171
+          GetPerson(params).then((res) => {
172
+            if (state === 0) {
173
+              this.repairman = res.rows
174
+            } else if (state === 1) {
175
+              this.assignman = res.rows
176
+            }
177
+          })
178
+          resolve()
179
+        })
180
+      },
181
+      // 申请人
182
+      changeRepairman(data) {
183
+        this.ruleForm.repairmanid = data
184
+        const user = this.repairman.find((o) => {
185
+          return o.usercode === data.toString()
186
+        })
187
+        if (user) {
188
+          this.ruleForm.repairmanphone = user.usertelphone
189
+          this.ruleForm.repairmanCallNumber = user.usertelphone
190
+        }
191
+      },
192
+      changeUser(data) { // 指派人
193
+        this.ruleForm.assignMant = data
194
+      },
195
+      //详情
196
+      getWoDetail(rid, type) {
197
+        const params = {
198
+          WorkOrderCode: rid,
199
+          type: type
200
+        }
201
+        GetFaultRepairDetail(params).then((response) => {
202
+          if (response.data[0]) {
203
+            // this.deptidArr = this.$store.getters.deptmap[parseInt(response.data[0].F_ApplicationDept)].ids
204
+            // console.log(this.deptidArr, '666')
205
+            // if (response.data[0].F_MaintenanceDept) {
206
+            //   this.assignArr = this.$store.getters.deptmap[parseInt(response.data[0].F_MaintenanceDept)].ids
207
+            // }
208
+            // this.ruleForm.repairmanid = response.data[0].F_Applicant
209
+            // this.ruleForm.repairmanphone = response.data[0].F_Applicantsphone
210
+            // this.ruleForm.repairmanCallNumber = response.data[0].F_Phone
211
+            this.ruleForm.repairOrderType = this.$store.getters.workTypeMap[parseInt(response.data[0]
212
+              .F_WorkOrderCategory)].ids //工单类别
213
+            this.ruleForm.repairOrderType = this.ruleForm.repairOrderType.slice(1, this.ruleForm.repairOrderType
214
+              .length)
215
+            // this.ruleForm.repairDeptid = response.data[0].F_ApplicationDept //部门
216
+            this.ruleForm.repairCenter = response.data[0].F_Content//内容
217
+            this.ruleForm.repairAddress = response.data[0].F_PlaceOfRepair//地点
218
+            // this.ruleForm.assignDepart = response.data[0].F_MaintenanceDept
219
+            if (response.data[0].FileUrl) {
220
+              for (var i = 0; i < response.data[0].FileUrl.length; i++) {
221
+                this.ruleForm.repairImageid += response.data[0].FileUrl[i].F_FileId + ','
222
+                this.fileList.push({
223
+                  name: response.data[0].FileUrl[i].F_FileName,
224
+                  url: response.data[0].FileUrl[i].F_FileUrl
225
+                })
226
+              }
227
+            }
228
+          }
229
+        })
230
+      },
231
+      // 工单类型
232
+      getSecondOOrderType(data) {
233
+        this.ruleForm.repairOrderType = data.value
234
+        console.log(this.ruleForm.repairOrderType)
235
+      },
236
+      handle_success(res) {
237
+        this.ruleForm.repairImageid += res.data[0].F_FileId + ','
238
+      },
239
+      submitForm(formName) {
240
+        console.log(this.callid,'callid')
241
+        console.log(this.ruleForm.repairDeptid)
242
+        this.$refs[formName].validate((valid) => {
243
+          if (valid) {
244
+            if (this.ruleForm.repairImageid === '') {
245
+              this.ruleForm.repairImageid = ''
246
+            } else {
247
+              this.ruleForm.repairImageid = this.ruleForm.repairImageid.slice(0, this.ruleForm.repairImageid
248
+                .length - 1)
249
+            }
250
+            this.$refs.ruleForm.validate((valid) => {
251
+              if (valid) {
252
+                if (this.wid) { //编辑
253
+                  console.log('bj')
254
+                  const params = {
255
+                    WorkOrderCode: this.wid,
256
+                    WorkOrderCategory: this.ruleForm.repairOrderType, // 工单类别
257
+                    Content: this.ruleForm.repairCenter, // 工单内容
258
+                    PlaceOfRepair: this.ruleForm.repairAddress, // 报修地点
259
+                    File: this.ruleForm.repairImageid, // 附件
260
+                  }
261
+                  MyUpdateFaultRepairWorkOrder(params).then((res) => {
262
+                    if (res.state.toLowerCase() === 'success') {
263
+                      this.$parent.$layer.close(this.layerid)
264
+                      this.$parent.getList()
265
+                      this.$message({
266
+                        message: '恭喜你,编辑工单成功!',
267
+                        type: 'success',
268
+                        duration: 1000
269
+                      })
270
+                    }
271
+                  })
272
+                }
273
+                // if (this.wid == '') {
274
+                //   console.log('tj')
275
+                //   const params = {
276
+                //     LeaveRecordId:this.fid,
277
+                //     CallId:this.callid,
278
+                //     Applicant: this.ruleForm.repairmanid, // 申请人
279
+                //     ApplicationDept: this.ruleForm.repairDeptid, // 申请部门
280
+                //     Applicantsphone: this.ruleForm.repairmanphone, // 申请电话
281
+                //     Phone: this.ruleForm.repairmanCallNumber, // 联系方式
282
+                //     WorkOrderCategory: this.ruleForm.repairOrderType, // 工单类别
283
+                //     Content: this.ruleForm.repairCenter, // 工单内容
284
+                //     PlaceOfRepair: this.ruleForm.repairAddress, // 报修地点
285
+                //     File: this.ruleForm.repairImageid, // 附件
286
+                //     MaintenanceDept: this.ruleForm.assignDepart, // 指派部门
287
+                //     IsEnd: '0', // 是否完结
288
+                //     Maintenancer: this.ruleForm.assignMant // 指派人
289
+                //   }
290
+                //   getAddRepairbase(params).then((res) => {
291
+                //     if (res.state.toLowerCase() === 'success') {
292
+                //       this.$refs.ruleForm.resetFields();
293
+                //       this.deptidArr = []
294
+                //       this.$message({
295
+                //         message: '恭喜你,添加工单成功!',
296
+                //         type: 'success',
297
+                //         duration: 1000
298
+                //       })
299
+                //     }
300
+                //   })
301
+                // }
302
+              } else {
303
+                return false
304
+              }
305
+            })
306
+          } else {
307
+            console.log('error submit!!')
308
+            return false
309
+          }
310
+        })
311
+      }
312
+    }
313
+  }
314
+</script>
315
+<style rel="stylesheet/scss" lang="scss">
316
+  .order_form {
317
+    .form_select {
318
+      width: 100%;
319
+    }
320
+
321
+    .form_date {
322
+      width: 100%;
323
+    }
324
+  }
325
+
326
+  // .wrap {
327
+  //   margin: o auto;
328
+  // }
329
+  .el-input--small .el-input__inner {
330
+    height: 45px !important;
331
+    line-height: 45px !important;
332
+  }
333
+
334
+  .avatar-uploader .el-upload {
335
+    border: 1px dashed #d9d9d9;
336
+    border-radius: 6px;
337
+    cursor: pointer;
338
+    position: relative;
339
+    overflow: hidden;
340
+  }
341
+
342
+  .avatar-uploader .el-upload:hover {
343
+    border-color: #409eff;
344
+  }
345
+
346
+  .avatar-uploader-icon {
347
+    font-size: 28px;
348
+    color: #8c939d;
349
+    width: 148px;
350
+    height: 148px;
351
+    line-height: 178px;
352
+    text-align: center;
353
+  }
354
+
355
+  .avatar {
356
+    width: 178px;
357
+    height: 178px;
358
+    display: block;
359
+  }
360
+</style>

+ 294 - 390
CallCenterWeb.UI/RMYY/src/views/orderManage/orderList/index.vue

@@ -1,453 +1,357 @@
1 1
 <template>
2 2
   <div class="app-container">
3 3
     <div class="filter-container">
4
-      <el-date-picker
5
-        v-model="searchData.searchTime"
6
-        type="daterange"
7
-        format="yyyy年MM月dd日"
8
-        value-format="yyyy-MM-dd"
9
-        align="left"
10
-        unlink-panels
11
-        range-separator="至"
12
-        start-placeholder="开始日期"
13
-        end-placeholder="结束日期"
14
-        size="medium"
15
-      />
4
+      <el-date-picker v-model="searchData.searchTime" type="daterange" format="yyyy年MM月dd日" value-format="yyyy-MM-dd"
5
+        align="left" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" size="medium" />
16 6
       <!-- <el-input v-model="searchData.keyword" placeholder="请输入关键字" class="filter-item" size="medium" /> -->
17
-      <el-select
18
-        v-model="searchData.type"
19
-        clearable
20
-        placeholder="请选择业务类别"
21
-        size="medium"
22
-        @change="changeOrder"
23
-      >
24
-        <el-option
25
-          v-for="item in orderData"
26
-          :key="item.id"
27
-          :label="item.text"
28
-          :value="item.id"
29
-        />
7
+      <el-select v-model="searchData.type" clearable placeholder="请选择业务类别" size="medium" @change="changeOrder">
8
+        <el-option v-for="item in orderData" :key="item.id" :label="item.text" :value="item.id" />
30 9
       </el-select>
31
-      <el-cascader
32
-        ref="cascader"
33
-        v-model="searchData.orderids"
34
-        :options="subclassData"
35
-        :props="defaultProps"
36
-        size="medium"
37
-        placeholder="请选择工单类别"
38
-        filterable
39
-        clearable
40
-        @change="handleChange"
41
-      />
42
-      <el-button
43
-        type="primary"
44
-        class="filter-btn"
45
-        icon="el-icon-search"
46
-        @click="btn_search"
47
-      >
10
+      <el-cascader ref="cascader" v-model="searchData.orderids" :options="subclassData" :props="defaultProps"
11
+        size="medium" placeholder="请选择工单类别" filterable clearable @change="handleChange" />
12
+      <el-button type="primary" class="filter-btn" icon="el-icon-search" @click="btn_search">
48 13
         搜索
49 14
       </el-button>
50
-      <el-button
51
-        v-permission="'orderListSetList'"
52
-        type="primary"
53
-        class="filter-btn"
54
-        icon="el-icon-s-tools"
55
-        @click="btn_add_list"
56
-      >
15
+      <el-button v-permission="'orderListSetList'" type="primary" class="filter-btn" icon="el-icon-s-tools"
16
+        @click="btn_add_list">
57 17
         设置列
58 18
       </el-button>
59 19
     </div>
60
-    <el-table
61
-      v-loading="loading"
62
-      ref="multipleTable"
63
-      :data="dataLists"
64
-      border
65
-      stripe
66
-      row-key="F_Id"
67
-    >
68
-      <el-table-column
69
-        type="index"
70
-        label="编号"
71
-        align="center"
72
-        fixed
73
-        width="60"
74
-      />
75
-      <el-table-column
76
-        v-if="fieldListFlag.F_WoCode"
77
-        prop="F_WoCode"
78
-        label="工单编号"
79
-        align="center"
80
-        min-width="110"
81
-      >
20
+    <el-table v-loading="loading" ref="multipleTable" :data="dataLists" border stripe row-key="F_Id">
21
+      <el-table-column type="index" label="编号" align="center" fixed width="60" />
22
+      <el-table-column v-if="fieldListFlag.F_WoCode" prop="F_WoCode" label="工单编号" align="center" min-width="110">
82 23
         <template slot-scope="scope">
83
-          <el-button
84
-            type="text"
85
-            size="small"
86
-            @click="hadndleOrderCode(scope.row)"
87
-          >
24
+          <el-button type="text" size="small" @click="hadndleOrderCode(scope.row)">
88 25
             {{ scope.row.F_WoCode }}
89 26
           </el-button>
90 27
         </template>
91 28
       </el-table-column>
92
-      <el-table-column
93
-        v-if="fieldListFlag.F_ProposerName"
94
-        prop="F_ProposerName"
95
-        label="姓名"
96
-        align="center"
97
-        min-width
98
-      />
99
-      <el-table-column
100
-        v-if="fieldListFlag.F_SonType"
101
-        :formatter="formtOrder"
102
-        prop="F_SonType"
103
-        label="工单类别"
104
-        align="center"
105
-      />
106
-      <el-table-column
107
-        v-if="fieldListFlag.F_Content"
108
-        prop="F_Content"
109
-        label="工单内容"
110
-        align="center"
111
-      />
112
-      <el-table-column
113
-        v-if="fieldListFlag.StateName"
114
-        prop="StateName"
115
-        label="工单状态"
116
-        align="center"
117
-      />
118
-      <el-table-column
119
-        v-if="fieldListFlag.F_CreateTime"
120
-        prop="F_CreateTime"
121
-        label="创建时间"
122
-        align="center"
123
-      />
29
+      <el-table-column v-if="fieldListFlag.F_ProposerName" prop="F_ProposerName" label="姓名" align="center" min-width />
30
+      <el-table-column v-if="fieldListFlag.F_SonType" :formatter="formtOrder" prop="F_SonType" label="工单类别"
31
+        align="center" />
32
+      <el-table-column v-if="fieldListFlag.F_Content" prop="F_Content" label="工单内容" align="center" />
33
+      <el-table-column v-if="fieldListFlag.StateName" prop="StateName" label="工单状态" align="center" />
34
+      <el-table-column v-if="fieldListFlag.F_CreateTime" prop="F_CreateTime" label="创建时间" align="center" />
124 35
       <el-table-column label="操作" align="center" class-name="oparate_btn">
125 36
         <template slot-scope="scope">
126
-          <el-button
127
-            v-for="item in scope.row.Buttons"
128
-            :key="item.key"
129
-            type="text"
130
-            @click="btnClickEvents(item, scope.row.F_WoCode, scope.row)"
131
-          >
37
+          <el-button v-for="item in scope.row.Buttons" :key="item.key" type="text"
38
+            @click="btnClickEvents(item, scope.row.F_WoCode, scope.row)">
132 39
             {{ item.value }}
133 40
           </el-button>
134 41
         </template>
135 42
       </el-table-column>
136 43
     </el-table>
137
-    <pagination
138
-      v-show="pageParams.total > 0"
139
-      :total="pageParams.total"
140
-      :pageindex.sync="pageParams.pageindex"
141
-      :pagesize.sync="pageParams.pagesize"
142
-      class="pagination"
143
-      @pagination="getList"
144
-    />
44
+    <pagination v-show="pageParams.total > 0" :total="pageParams.total" :pageindex.sync="pageParams.pageindex"
45
+      :pagesize.sync="pageParams.pagesize" class="pagination" @pagination="getList" />
145 46
     <order-button-operation ref="butOption" @refList="refList" />
146 47
   </div>
147 48
 </template>
148 49
 
149 50
 <script>
150
-// import { getDictionaryValueList } from '@/api/commonAPI'
151
-import {
152
-  deleteOrder,
153
-  CompleteOrder,
154
-  comOrderList,
155
-  getOrderStateData
156
-} from '@/api/orderManagement/orderList'
157
-import { getOrderTypeDrop } from '@/api/systemSetup/roleSetting/menuSetup'
158
-import { GetFiledState } from '@/api/commonAPI'
159
-import addOrEditFaultRepair from '../../faultRepair/clinicalReporting/components/addRepairbase.vue'
160
-import detail from '../components/orderDetail.vue'
161
-import askDetail from '../components/askdetail.vue'
162
-import addAudit from './addAudit'
163
-import addDefinedList from '@/components/context/addDefinedList'
164
-import orderDeal from './orderDeal'
165
-import Pagination from '@/components/context/Pagination' // 对el-pagination 二次封装
166
-import OrderButtonOperation from '@/components/button/orderList'
51
+  // import { getDictionaryValueList } from '@/api/commonAPI'
52
+  import {
53
+    deleteOrder,
54
+    CompleteOrder,
55
+    comOrderList,
56
+    getOrderStateData
57
+  } from '@/api/orderManagement/orderList'
58
+  import {
59
+    getOrderTypeDrop
60
+  } from '@/api/systemSetup/roleSetting/menuSetup'
61
+  import {
62
+    GetFiledState
63
+  } from '@/api/commonAPI'
64
+  import addOrEditFaultRepair from '../../faultRepair/clinicalReporting/components/addRepairbase.vue'
65
+  import detail from '../components/orderDetail.vue'
66
+  import askDetail from '../components/askdetail.vue'
67
+  import addAudit from './addAudit'
68
+  import addDefinedList from '@/components/context/addDefinedList'
69
+  import orderDeal from './orderDeal'
70
+  import Pagination from '@/components/context/Pagination' // 对el-pagination 二次封装
71
+  import OrderButtonOperation from '@/components/button/orderList'
167 72
 
168
-export default {
169
-  name: 'OrderList',
170
-  components: {
171
-    Pagination,
172
-    OrderButtonOperation
173
-  },
174
-  data() {
175
-    return {
176
-      isDisable: false, // 防止多次点击
177
-      loading: false,
178
-      deleteId: [],
179
-      fieldListFlag: {},
180
-      buttonName: '',
181
-      searchData: {
182
-        keyword: '', // 关键字
183
-        searchTime: '', // 时间
184
-        starttime: '', // 开始时间
185
-        endtime: '', // 结束时间
186
-        type: '', // 工单类型
187
-        orderids: [],
188
-        menutypeid: '',
189
-        menutype: '',
190
-        state: '' // 工单状态
191
-      },
192
-      pageParams: {
193
-        pageindex: 1, // 当前第几页
194
-        pagesize: Number(this.$store.getters.serverConfig.PAGESIZE), // 每页几条数据
195
-        total: 0 // 总共多少数据
196
-      },
197
-      dataLists: [], // 列表数据数据
198
-      defaultProps: {
199
-        checkStrictly: true,
200
-        children: 'children',
201
-        label: 'text',
202
-        value: 'id'
203
-      },
204
-      orderData: [],
205
-      subclassData: [],
206
-      orderstate: [], // 工单状态数据
207
-      DefinedId: ''
208
-    }
209
-  },
210
-  created() {
211
-    this.getList()
212
-    this.getTreeList()
213
-    this.getOrderStat()
214
-    this.getFiledTabDetail(this.$route.path.split('/').join('_'))
215
-    document.onkeyup = (e) => {
216
-      if (e.keyCode === 13) {
217
-        this.getList()
218
-      }
219
-    }
220
-  },
221
-  methods: {
222
-    refList() {
223
-      this.getList()
73
+  export default {
74
+    name: 'OrderList',
75
+    components: {
76
+      Pagination,
77
+      OrderButtonOperation
224 78
     },
225
-    handleClick(res) {
226
-      this.searchData.state = Number(res.name)
227
-      this.getList()
228
-    },
229
-    formtOrder(row, column) {
230
-      if (row.F_SonType) {
231
-        return this.$store.getters.workTypeMap[parseInt(row.F_SonType)].text
79
+    data() {
80
+      return {
81
+        isDisable: false, // 防止多次点击
82
+        loading: false,
83
+        deleteId: [],
84
+        fieldListFlag: {},
85
+        buttonName: '',
86
+        searchData: {
87
+          keyword: '', // 关键字
88
+          searchTime: '', // 时间
89
+          starttime: '', // 开始时间
90
+          endtime: '', // 结束时间
91
+          type: '', // 工单类型
92
+          orderids: [],
93
+          menutypeid: '',
94
+          menutype: '',
95
+          state: '' // 工单状态
96
+        },
97
+        pageParams: {
98
+          pageindex: 1, // 当前第几页
99
+          pagesize: Number(this.$store.getters.serverConfig.PAGESIZE), // 每页几条数据
100
+          total: 0 // 总共多少数据
101
+        },
102
+        dataLists: [], // 列表数据数据
103
+        defaultProps: {
104
+          checkStrictly: true,
105
+          children: 'children',
106
+          label: 'text',
107
+          value: 'id'
108
+        },
109
+        orderData: [],
110
+        subclassData: [],
111
+        orderstate: [], // 工单状态数据
112
+        DefinedId: ''
232 113
       }
233 114
     },
234
-    btnClickEvents(button, wocode, row) {
235
-      this.buttonName = button.key
236
-      this.$refs.butOption.butOptionMethod(this.buttonName, wocode)
237
-      if (this.buttonName === 'bianji') {
238
-        this.btn_edit(wocode)
115
+    created() {
116
+      this.getList()
117
+      this.getTreeList()
118
+      this.getOrderStat()
119
+      this.getFiledTabDetail(this.$route.path.split('/').join('_'))
120
+      document.onkeyup = (e) => {
121
+        if (e.keyCode === 13) {
122
+          this.getList()
123
+        }
239 124
       }
240 125
     },
241
-    getList() {
242
-      this.loading = true
243
-      return new Promise((resolve) => {
244
-        const params = {
245
-          // keyword: this.searchData.keyword, // 关键字
246
-          starttime: this.searchData.searchTime[0], // 开始时间
247
-          endtime: this.searchData.searchTime[1], // 结束时间
248
-          type: this.searchData.type, // 工单类型
249
-          loweltype:
250
-            this.searchData.orderids[this.searchData.orderids.length - 1],
251
-          state: this.searchData.state, // 工单状态
252
-          pageindex: this.pageParams.pageindex, // int 第几页
253
-          pagesize: this.pageParams.pagesize // int 每页几条信息
126
+    methods: {
127
+      refList() {
128
+        this.getList()
129
+      },
130
+      handleClick(res) {
131
+        this.searchData.state = Number(res.name)
132
+        this.getList()
133
+      },
134
+      formtOrder(row, column) {
135
+        if (row.F_SonType) {
136
+          return this.$store.getters.workTypeMap[parseInt(row.F_SonType)].text
137
+        }
138
+      },
139
+      btnClickEvents(button, wocode, row) {
140
+        this.buttonName = button.key
141
+        this.$refs.butOption.butOptionMethod(this.buttonName, wocode)
142
+        if (this.buttonName === 'bianji') {
143
+          this.btn_edit(wocode)
254 144
         }
255
-        comOrderList(params).then((response) => {
256
-          this.loading = false
257
-          if (response.state.toLowerCase() === 'success') {
258
-            this.pageParams.total = response.total
259
-            this.dataLists = response.rows
145
+      },
146
+      getList() {
147
+        this.loading = true
148
+        return new Promise((resolve) => {
149
+          const params = {
150
+            // keyword: this.searchData.keyword, // 关键字
151
+            starttime: this.searchData.searchTime[0], // 开始时间
152
+            endtime: this.searchData.searchTime[1], // 结束时间
153
+            type: this.searchData.type, // 工单类型
154
+            loweltype: this.searchData.orderids[this.searchData.orderids.length - 1],
155
+            state: this.searchData.state, // 工单状态
156
+            pageindex: this.pageParams.pageindex, // int 第几页
157
+            pagesize: this.pageParams.pagesize // int 每页几条信息
260 158
           }
261
-        })
262
-        resolve()
263
-      })
264
-    },
265
-    getFiledTabDetail(TableId) {
266
-      GetFiledState(TableId).then((res) => {
267
-        const filedsData = res.F_Fileds
268
-        const filedsObj = {}
269
-        if (filedsData) {
270
-          filedsData.forEach((element) => {
271
-            filedsObj[element] = true
159
+          comOrderList(params).then((response) => {
160
+            this.loading = false
161
+            if (response.state.toLowerCase() === 'success') {
162
+              this.pageParams.total = response.total
163
+              this.dataLists = response.rows
164
+            }
272 165
           })
273
-        }
274
-        this.fieldListFlag = filedsObj
275
-        this.$refs['multipleTable'].doLayout()
276
-      })
277
-    },
278
-    btn_search() {
279
-      this.pageParams.pageindex = 1
280
-      this.getList()
281
-    },
282
-    btn_add_list() {
283
-      this.$layer.iframe({
284
-        content: {
285
-          content: addDefinedList, // 传递的组件对象
286
-          parent: this, // 当前的vue对象
287
-          data: {
288
-            definedId: this.$route.path
289
-          } // props
290
-        },
291
-        area: ['70%', '30%'],
292
-        title: '自定义字段'
293
-      })
294
-    },
295
-    // 编辑
296
-    btn_edit(rid) {
297
-      this.$layer.iframe({
298
-        content: {
299
-          content: addOrEditFaultRepair, // 传递的组件对象
300
-          parent: this, // 当前的vue对象
301
-          data: {
302
-            wid: rid
303
-          } // props
304
-        },
305
-        area: ['70%', '70%'],
306
-        title: '编辑工单'
307
-      })
308
-    },
309
-    hadndleOrderCode(row) {
310
-      if (row.F_Type === 3000) {
166
+          resolve()
167
+        })
168
+      },
169
+      getFiledTabDetail(TableId) {
170
+        GetFiledState(TableId).then((res) => {
171
+          const filedsData = res.F_Fileds
172
+          const filedsObj = {}
173
+          if (filedsData) {
174
+            filedsData.forEach((element) => {
175
+              filedsObj[element] = true
176
+            })
177
+          }
178
+          this.fieldListFlag = filedsObj
179
+          this.$refs['multipleTable'].doLayout()
180
+        })
181
+      },
182
+      btn_search() {
183
+        this.pageParams.pageindex = 1
184
+        this.getList()
185
+      },
186
+      btn_add_list() {
311 187
         this.$layer.iframe({
312 188
           content: {
313
-            content: detail, // 传递的组件对象
189
+            content: addDefinedList, // 传递的组件对象
314 190
             parent: this, // 当前的vue对象
315 191
             data: {
316
-              rowid: row.F_WoCode
192
+              definedId: this.$route.path
317 193
             } // props
318 194
           },
319
-          area: ['80%', '90%'],
320
-          title: '订单详情'
195
+          area: ['70%', '30%'],
196
+          title: '自定义字段'
321 197
         })
322
-      }
323
-      if (row.F_Type === 1000) {
198
+      },
199
+      // 编辑
200
+      btn_edit(rid) {
324 201
         this.$layer.iframe({
325 202
           content: {
326
-            content: askDetail,
327
-            parent: this,
203
+            content: addOrEditFaultRepair, // 传递的组件对象
204
+            parent: this, // 当前的vue对象
328 205
             data: {
329
-              rowid: row.F_WoCode
206
+              wid: rid
330 207
             } // props
331 208
           },
332
-          area: ['80%', '90%'],
333
-          title: '订单详情'
209
+          area: ['70%', '70%'],
210
+          title: '编辑工单'
334 211
         })
335
-      }
336
-    },
337
-    // 删除弹框
338
-    btn_delete(operateId) {
339
-      this.deleteId = []
340
-      this.deleteId.push(operateId)
341
-      this.$confirm('此操作将永久删除当前工单, 是否继续?', '提示', {
342
-        confirmButtonText: '确定',
343
-        cancelButtonText: '取消',
344
-        type: 'warning'
345
-      })
346
-        .then(() => {
347
-          deleteOrder(this.deleteId).then((response) => {
348
-            if (response.state.toLowerCase() === 'success') {
349
-              this.getList()
350
-              this.$message.success('删除成功!')
212
+      },
213
+      hadndleOrderCode(row) {
214
+        if (row.F_Type === 3000) {
215
+          this.$layer.iframe({
216
+            content: {
217
+              content: detail, // 传递的组件对象
218
+              parent: this, // 当前的vue对象
219
+              data: {
220
+                rowid: row.F_WoCode
221
+              } // props
222
+            },
223
+            area: ['80%', '90%'],
224
+            title: '订单详情'
225
+          })
226
+        }
227
+        if (row.F_Type === 1000) {
228
+          this.$layer.iframe({
229
+            content: {
230
+              content: askDetail,
231
+              parent: this,
232
+              data: {
233
+                rowid: row.F_WoCode
234
+              } // props
235
+            },
236
+            area: ['80%', '90%'],
237
+            title: '订单详情'
238
+          })
239
+        }
240
+      },
241
+      // 删除弹框
242
+      btn_delete(operateId) {
243
+        this.deleteId = []
244
+        this.deleteId.push(operateId)
245
+        this.$confirm('此操作将永久删除当前工单, 是否继续?', '提示', {
246
+            confirmButtonText: '确定',
247
+            cancelButtonText: '取消',
248
+            type: 'warning'
249
+          })
250
+          .then(() => {
251
+            deleteOrder(this.deleteId).then((response) => {
252
+              if (response.state.toLowerCase() === 'success') {
253
+                this.getList()
254
+                this.$message.success('删除成功!')
255
+              }
256
+            })
257
+          })
258
+          .catch(() => {
259
+            this.$message.info('已取消删除')
260
+          })
261
+      },
262
+      // 工单完结
263
+      btn_Complete(operateId) {
264
+        this.$confirm('此操作完结当前工单, 是否继续?', '提示', {
265
+            confirmButtonText: '确定',
266
+            cancelButtonText: '取消',
267
+            type: 'warning'
268
+          })
269
+          .then(() => {
270
+            CompleteOrder(operateId).then((response) => {
271
+              if (response.state.toLowerCase() === 'success') {
272
+                this.getList()
273
+                this.$message.success('完结成功!')
274
+              }
275
+            })
276
+          })
277
+          .catch(() => {
278
+            this.$message.info('已取消完结')
279
+          })
280
+      },
281
+      // 工单处理 orderDeal
282
+      // btn_Deal(operateId) {
283
+      //   this.$layer.iframe({
284
+      //     content: {
285
+      //       content: orderDeal, // 传递的组件对象
286
+      //       parent: this, // 当前的vue对象
287
+      //       data: {
288
+      //         rowid: operateId
289
+      //       } // props
290
+      //     },
291
+      //     area: ['40%', '30%'],
292
+      //     title: '订单详情'
293
+      //   })
294
+      // },
295
+      // 工单审核
296
+      // btn_Audit(operateId) {
297
+      //   this.$layer.iframe({
298
+      //     content: {
299
+      //       content: addAudit, // 传递的组件对象
300
+      //       parent: this, // 当前的vue对象
301
+      //       data: {
302
+      //         rowid: operateId
303
+      //       } // props
304
+      //     },
305
+      //     area: ['40%', '30%'],
306
+      //     title: '订单详情'
307
+      //   })
308
+      // },
309
+      // 工单状态
310
+      getOrderStat() {
311
+        return new Promise((resolve) => {
312
+          const params = {}
313
+          getOrderStateData(params).then((response) => {
314
+            this.loading = false
315
+            if (response) {
316
+              this.orderstate = response
351 317
             }
352 318
           })
319
+          resolve()
353 320
         })
354
-        .catch(() => {
355
-          this.$message.info('已取消删除')
356
-        })
357
-    },
358
-    // 工单完结
359
-    btn_Complete(operateId) {
360
-      this.$confirm('此操作完结当前工单, 是否继续?', '提示', {
361
-        confirmButtonText: '确定',
362
-        cancelButtonText: '取消',
363
-        type: 'warning'
364
-      })
365
-        .then(() => {
366
-          CompleteOrder(operateId).then((response) => {
321
+      },
322
+      getTreeList() {
323
+        return new Promise((resolve) => {
324
+          getOrderTypeDrop(this.pid).then((response) => {
367 325
             if (response.state.toLowerCase() === 'success') {
368
-              this.getList()
369
-              this.$message.success('完结成功!')
326
+              this.orderData = response.data
370 327
             }
371 328
           })
329
+          resolve()
372 330
         })
373
-        .catch(() => {
374
-          this.$message.info('已取消完结')
375
-        })
376
-    },
377
-    // 工单处理 orderDeal
378
-    // btn_Deal(operateId) {
379
-    //   this.$layer.iframe({
380
-    //     content: {
381
-    //       content: orderDeal, // 传递的组件对象
382
-    //       parent: this, // 当前的vue对象
383
-    //       data: {
384
-    //         rowid: operateId
385
-    //       } // props
386
-    //     },
387
-    //     area: ['40%', '30%'],
388
-    //     title: '订单详情'
389
-    //   })
390
-    // },
391
-    // 工单审核
392
-    // btn_Audit(operateId) {
393
-    //   this.$layer.iframe({
394
-    //     content: {
395
-    //       content: addAudit, // 传递的组件对象
396
-    //       parent: this, // 当前的vue对象
397
-    //       data: {
398
-    //         rowid: operateId
399
-    //       } // props
400
-    //     },
401
-    //     area: ['40%', '30%'],
402
-    //     title: '订单详情'
403
-    //   })
404
-    // },
405
-    // 工单状态
406
-    getOrderStat() {
407
-      return new Promise((resolve) => {
408
-        const params = {}
409
-        getOrderStateData(params).then((response) => {
410
-          this.loading = false
411
-          if (response) {
412
-            this.orderstate = response
413
-          }
414
-        })
415
-        resolve()
416
-      })
417
-    },
418
-    getTreeList() {
419
-      return new Promise((resolve) => {
420
-        getOrderTypeDrop(this.pid).then((response) => {
421
-          if (response.state.toLowerCase() === 'success') {
422
-            this.orderData = response.data
423
-          }
331
+      },
332
+      handleChange(data) {
333
+        this.searchData.menutype = data[data.length - 1]
334
+      },
335
+      changeOrder(data) {
336
+        if (!data) {
337
+          return
338
+        }
339
+        this.searchData.menutypeid = data
340
+        const params = {
341
+          pid: data,
342
+          flag: 1
343
+        }
344
+        return new Promise((resolve) => {
345
+          getOrderTypeDrop(params).then((response) => {
346
+            if (response.state.toLowerCase() === 'success') {
347
+              this.subclassData = response.data
348
+            }
349
+          })
350
+          resolve()
424 351
         })
425
-        resolve()
426
-      })
427
-    },
428
-    handleChange(data) {
429
-      this.searchData.menutype = data[data.length - 1]
430
-    },
431
-    changeOrder(data) {
432
-      if (!data) {
433
-        return
434
-      }
435
-      this.searchData.menutypeid = data
436
-      const params = {
437
-        pid: data,
438
-        flag: 1
439 352
       }
440
-      return new Promise((resolve) => {
441
-        getOrderTypeDrop(params).then((response) => {
442
-          if (response.state.toLowerCase() === 'success') {
443
-            this.subclassData = response.data
444
-          }
445
-        })
446
-        resolve()
447
-      })
448 353
     }
449 354
   }
450
-}
451 355
 </script>
452 356
 
453 357
 <style rel="stylesheet/scss" lang="scss" scoped>

+ 6 - 4
CallCenterWeb.UI/RMYY/src/views/reportForm/trafficWorkReport/index.vue

@@ -8,8 +8,8 @@
8 8
       </el-form-item>
9 9
       <el-form-item>
10 10
         <el-select v-model="ruleForm.way" class="filter-item" filterable clearable placeholder="请选择方式" size="medium" @change="btn_way">
11
-          <el-option :value="0" label="坐席" />
12
-          <el-option :value="1" label="分机号" />
11
+          <el-option :value="1" label="坐席" />
12
+          <el-option :value="0" label="分机号" />
13 13
         </el-select>
14 14
       </el-form-item>
15 15
       <el-form-item>
@@ -18,8 +18,8 @@
18 18
       </el-form-item>
19 19
     </el-form>
20 20
     <el-table :data="dataLists" border highlight-current-row stripe>
21
-      <el-table-column prop="username" v-if="ruleForm.way==0" label="坐席名称" align="center" min-width />
22
-      <el-table-column prop="username" v-if="ruleForm.way==1" label="分机号" align="center" min-width />
21
+      <el-table-column prop="username" v-if="ruleForm.way==1" label="坐席名称" align="center" min-width />
22
+      <el-table-column prop="username" v-if="ruleForm.way==0" label="分机号" align="center" min-width />
23 23
       <el-table-column prop="hurucishu" label="呼入次数" align="center" min-width />
24 24
       <el-table-column prop="hurushichang" label="呼入时长" align="center" min-width>
25 25
         <template slot-scope="scope">
@@ -91,6 +91,7 @@
91 91
         const params = {
92 92
           stime: this.ruleForm.startTime && this.ruleForm.startTime[0],
93 93
           endtime: this.ruleForm.startTime && this.ruleForm.startTime[1],
94
+          groupby:this.ruleForm.way,
94 95
           isdc: 0
95 96
         }
96 97
         return new Promise(resolve => {
@@ -106,6 +107,7 @@
106 107
         const exporParams = {
107 108
           stime: this.ruleForm.startTime && this.ruleForm.startTime[0],
108 109
           endtime: this.ruleForm.startTime && this.ruleForm.startTime[1],
110
+          groupby:this.ruleForm.way,
109 111
           isdc: 1
110 112
         }
111 113
         exportExcel(exporParams, getListExpt)

+ 319 - 432
CallCenterWeb.UI/RMYY/src/views/trafficData/callRecord/index.vue

@@ -1,522 +1,409 @@
1 1
 <template>
2 2
   <div class="app-container">
3 3
     <div class="filter-container">
4
-      <el-date-picker
5
-        v-model="searchDate"
6
-        :picker-options="pickerOptions"
7
-        class="filter-item"
8
-        type="daterange"
9
-        format="yyyy年MM月dd日"
10
-        value-format="yyyy-MM-dd"
11
-        align="left"
12
-        unlink-panels
13
-        range-separator="至"
14
-        start-placeholder="开始日期"
15
-        end-placeholder="结束日期"
16
-      />
17
-      <el-input
18
-        v-model="keyword"
19
-        placeholder="请输入电话号码"
20
-        class="filter-item"
21
-        size="medium"
22
-      />
23
-      <el-input
24
-        v-model="roleId"
25
-        placeholder="请输入坐席工号"
26
-        class="filter-item"
27
-        size="medium"
28
-      />
29
-      <el-select
30
-        v-model="CallType"
31
-        class="filter-item"
32
-        filterable
33
-        clearable
34
-        placeholder="请选择呼叫方向"
35
-        size="medium"
36
-      >
4
+      <el-date-picker v-model="searchDate" :picker-options="pickerOptions" class="filter-item" type="daterange"
5
+        format="yyyy年MM月dd日" value-format="yyyy-MM-dd" align="left" unlink-panels range-separator="至"
6
+        start-placeholder="开始日期" end-placeholder="结束日期" />
7
+      <el-input v-model="keyword" placeholder="请输入电话号码" class="filter-item" size="medium" />
8
+      <el-input v-model="roleId" placeholder="请输入坐席工号" class="filter-item" size="medium" />
9
+      <el-select v-model="CallType" class="filter-item" filterable clearable placeholder="请选择呼叫方向" size="medium">
37 10
         <el-option :value="0" label="呼入" />
38 11
         <el-option :value="1" label="呼出" />
39 12
       </el-select>
40
-      <el-select
41
-        v-model="CallState"
42
-        class="filter-item"
43
-        filterable
44
-        clearable
45
-        placeholder="请选择呼叫状态"
46
-        size="medium"
47
-      >
13
+      <el-select v-model="CallState" class="filter-item" filterable clearable placeholder="请选择呼叫状态" size="medium">
48 14
         <el-option :value="0" label="未接通" />
49 15
         <el-option :value="1" label="已接通" />
50 16
       </el-select>
51
-      <el-button
52
-        type="primary"
53
-        class="filter-item"
54
-        icon="el-icon-search"
55
-        @click="btn_search"
56
-      >
17
+      <el-button type="primary" class="filter-item" icon="el-icon-search" @click="btn_search">
57 18
         搜索
58 19
       </el-button>
59 20
       <el-button type="primary" class="filter-item" @click="btn_export">
60 21
         <svg-icon icon-class="daochu" />导出
61 22
       </el-button>
62
-      <el-button
63
-        v-permission="'callRecordSetList'"
64
-        type="primary"
65
-        class="filter-btn"
66
-        icon="el-icon-s-tools"
67
-        @click="btn_add_list"
68
-      >
23
+      <el-button v-permission="'callRecordSetList'" type="primary" class="filter-btn" icon="el-icon-s-tools"
24
+        @click="btn_add_list">
69 25
         设置列
70 26
       </el-button>
71 27
     </div>
72
-    <el-table
73
-      v-loading="loading"
74
-      ref="multipleTable"
75
-      :data="dataLists"
76
-      border
77
-      stripe
78
-      @selection-change="handleSelectionChange"
79
-    >
28
+    <el-table v-loading="loading" ref="multipleTable" :data="dataLists" border stripe
29
+      @selection-change="handleSelectionChange">
80 30
       <el-table-column type="index" label="编号" align="center" width="80" />
81
-      <el-table-column
82
-        v-if="fieldListFlag.CallNumber"
83
-        label="电话号码"
84
-        prop="CallNumber"
85
-        align="center"
86
-      >
31
+      <el-table-column v-if="fieldListFlag.CallNumber" label="电话号码" prop="CallNumber" align="center">
87 32
         <template slot-scope="scope">
88 33
           <span>{{ scope.row.CallNumber }}</span>
89
-          <i
90
-            v-if="scope.row.CallState == 0"
91
-            class="el-icon-mobile"
92
-            style="
34
+          <i v-if="scope.row.CallState == 0" class="el-icon-mobile" style="
93 35
               color: #24c6c8;
94 36
               font-size: 20px;
95 37
               vertical-align: middle;
96 38
               margin-left: 5px;
97 39
               cursor: pointer;
98
-            "
99
-            @click="oncall(scope.row.CallNumber, scope.row.CallRecordsId)"
100
-          />
40
+            " @click="oncall(scope.row.CallNumber, scope.row.CallRecordsId)" />
101 41
         </template>
102 42
       </el-table-column>
103
-      <el-table-column
104
-        v-if="fieldListFlag.FilePath"
105
-        label="录音"
106
-        align="center"
107
-        min-width
108
-      >
43
+      <el-table-column v-if="fieldListFlag.FilePath" label="录音" align="center" min-width>
109 44
         <template slot-scope="scope">
110
-          <svg-icon
111
-            v-if="scope.row.FilePath"
112
-            class="rec_file"
113
-            icon-class="bofangluyin"
114
-            @click.native="playSound(scope.row.FilePath, scope.row.UserCode)"
115
-          />
45
+          <svg-icon v-if="scope.row.FilePath" class="rec_file" icon-class="bofangluyin"
46
+            @click.native="playSound(scope.row.FilePath, scope.row.UserCode)" />
116 47
           <span v-else>-</span>
117 48
         </template>
118 49
       </el-table-column>
119
-      <el-table-column
120
-        v-if="fieldListFlag.CallType"
121
-        label="呼叫方向"
122
-        align="center"
123
-        min-width
124
-      >
50
+      <el-table-column v-if="fieldListFlag.CallType" label="呼叫方向" align="center" min-width>
125 51
         <template slot-scope="scope">{{
126 52
           scope.row.CallType | calltypeFilter
127 53
         }}</template>
128 54
       </el-table-column>
129
-      <el-table-column
130
-        v-if="fieldListFlag.CallState"
131
-        label="呼叫状态"
132
-        align="center"
133
-        min-width
134
-      >
55
+      <el-table-column v-if="fieldListFlag.CallState" label="呼叫状态" align="center" min-width>
135 56
         <template slot-scope="scope">
136
-          <el-tag
137
-            :type="scope.row.CallState === 1 ? 'success' : 'danger'"
138
-            size="mini"
139
-            disable-transitions
140
-          >
57
+          <el-tag :type="scope.row.CallState === 1 ? 'success' : 'danger'" size="mini" disable-transitions>
141 58
             {{ scope.row.CallState | statusFilter }}
142 59
           </el-tag>
143 60
         </template>
144 61
       </el-table-column>
145
-      <el-table-column
146
-        v-if="fieldListFlag.TypeName"
147
-        prop="TypeName"
148
-        label="业务类型"
149
-        align="center"
150
-        min-width
151
-      />
152
-      <el-table-column
153
-        v-if="fieldListFlag.UserCode"
154
-        prop="UserCode"
155
-        label="坐席工号"
156
-        align="center"
157
-        min-width
158
-      />
159
-      <el-table-column
160
-        v-if="fieldListFlag.UserName1"
161
-        prop="UserName1"
162
-        label="坐席姓名"
163
-        align="center"
164
-        min-width
165
-      />
166
-      <el-table-column
167
-        v-if="fieldListFlag.TalkStartTime"
168
-        label="通话开始时间"
169
-        align="center"
170
-        min-width="110"
171
-      >
62
+      <el-table-column v-if="fieldListFlag.TypeName" prop="TypeName" label="业务类型" align="center" min-width />
63
+      <el-table-column v-if="fieldListFlag.UserCode" prop="UserCode" label="坐席工号" align="center" min-width />
64
+      <el-table-column v-if="fieldListFlag.UserName1" prop="UserName1" label="坐席姓名" align="center" min-width />
65
+      <el-table-column v-if="fieldListFlag.TalkStartTime" label="通话开始时间" align="center" min-width="110">
172 66
         <template slot-scope="scope">
173 67
           <span>{{ scope.row.TalkStartTime | timesFilter }}</span>
174 68
         </template>
175 69
       </el-table-column>
176
-      <el-table-column
177
-        v-if="fieldListFlag.TalkEndTime"
178
-        label="通话结束时间"
179
-        align="center"
180
-        min-width="110"
181
-      >
70
+      <el-table-column v-if="fieldListFlag.TalkEndTime" label="通话结束时间" align="center" min-width="110">
182 71
         <template slot-scope="scope">
183 72
           <span>{{ scope.row.TalkEndTime | timesFilter }}</span>
184 73
         </template>
185 74
       </el-table-column>
186
-      <el-table-column
187
-        v-if="fieldListFlag.TalkLongTime"
188
-        prop="TalkLongTime"
189
-        label="通话时长"
190
-        align="center"
191
-        min-width
192
-      >
75
+      <el-table-column v-if="fieldListFlag.TalkLongTime" prop="TalkLongTime" label="通话时长" align="center" min-width>
193 76
         <template slot-scope="scope">
194 77
           <div v-html="formtTime(scope.row.TalkLongTime)" />
195 78
         </template>
196 79
       </el-table-column>
197
-      <el-table-column
198
-        v-if="fieldListFlag.Showstate"
199
-        prop="Showstate"
200
-        label="是否回复"
201
-        align="center"
202
-        min-width
203
-      />
80
+      <el-table-column v-if="fieldListFlag.Showstate" prop="Showstate" label="是否回复" align="center" min-width />
204 81
     </el-table>
205
-    <pagination
206
-      v-show="pageParams.total > 0"
207
-      :total="pageParams.total"
208
-      :pageindex.sync="pageParams.pageindex"
209
-      :pagesize.sync="pageParams.pagesize"
210
-      class="pagination"
211
-      @pagination="getList"
212
-    />
82
+    <pagination v-show="pageParams.total > 0" :total="pageParams.total" :pageindex.sync="pageParams.pageindex"
83
+      :pagesize.sync="pageParams.pagesize" class="pagination" @pagination="getList" />
213 84
   </div>
214 85
 </template>
215 86
 
216 87
 <script>
217
-import {
218
-  getCallRecords,
219
-  getCallOutprefix,
220
-  getListExpt,
221
-  getUpdateCallRecord
222
-} from '@/api/trafficData/trafficData'
223
-import { GetFiledState } from '@/api/commonAPI'
224
-import addDefinedList from '@/components/context/addDefinedList'
225
-import audioPlayer from '@/components/context/audioPlayer'
226
-import { pickerOptions } from '@/utils'
227
-import { exportExcel } from '@/utils'
228
-import Pagination from '@/components/context/Pagination' // 对el-pagination 二次封装
229
-import store from '@/store'
230
-import { mapGetters } from 'vuex'
231
-export default {
232
-  name: 'CallRecord',
233
-  components: {
234
-    Pagination
235
-  },
236
-  filters: {
237
-    // 呼叫类型
238
-    calltypeFilter(status) {
239
-      const statusMap = {
240
-        0: '呼入',
241
-        1: '呼出'
242
-      }
243
-      return statusMap[status]
88
+  import {
89
+    getCallRecords,
90
+    getCallOutprefix,
91
+    getListExpt,
92
+    getUpdateCallRecord
93
+  } from '@/api/trafficData/trafficData'
94
+  import {
95
+    Send
96
+  } from '@/utils/telWebsocket'
97
+  import {
98
+    GetFiledState
99
+  } from '@/api/commonAPI'
100
+  import addDefinedList from '@/components/context/addDefinedList'
101
+  import audioPlayer from '@/components/context/audioPlayer'
102
+  import {
103
+    pickerOptions
104
+  } from '@/utils'
105
+  import {
106
+    exportExcel
107
+  } from '@/utils'
108
+  import Pagination from '@/components/context/Pagination' // 对el-pagination 二次封装
109
+  import store from '@/store'
110
+  import {
111
+    mapGetters
112
+  } from 'vuex'
113
+  export default {
114
+    name: 'CallRecord',
115
+    components: {
116
+      Pagination
244 117
     },
245
-    // 呼叫状态
246
-    statusFilter(status) {
247
-      const statusMap = {
248
-        0: '未接通',
249
-        1: '已接通'
118
+    filters: {
119
+      // 呼叫类型
120
+      calltypeFilter(status) {
121
+        const statusMap = {
122
+          0: '呼入',
123
+          1: '呼出'
124
+        }
125
+        return statusMap[status]
126
+      },
127
+      // 呼叫状态
128
+      statusFilter(status) {
129
+        const statusMap = {
130
+          0: '未接通',
131
+          1: '已接通'
132
+        }
133
+        return statusMap[status]
134
+      },
135
+      // 外呼类型
136
+      callopttypeFilter(status) {
137
+        const statusMap = {
138
+          0: '拨号外呼',
139
+          1: '回访外呼'
140
+        }
141
+        return statusMap[status]
142
+      },
143
+      // 满意度
144
+      evaluationFilter(status) {
145
+        const statusMap = {
146
+          0: '-',
147
+          1: '非常满意',
148
+          2: '基本满意',
149
+          3: '不满意'
150
+        }
151
+        return statusMap[status]
152
+      },
153
+      // 时间格式化
154
+      timesFilter(tm) {
155
+        if (tm === '1970-01-01 08:00:00') {
156
+          return '-'
157
+        } else {
158
+          return tm
159
+        }
160
+      },
161
+      // 是否回访
162
+      isReturnvisitFilter(status) {
163
+        const statusMap = {
164
+          0: '未回访',
165
+          1: '已回访'
166
+        }
167
+        return statusMap[status]
250 168
       }
251
-      return statusMap[status]
252 169
     },
253
-    // 外呼类型
254
-    callopttypeFilter(status) {
255
-      const statusMap = {
256
-        0: '拨号外呼',
257
-        1: '回访外呼'
170
+    data() {
171
+      return {
172
+        loading: false,
173
+        keyword: '',
174
+        roleId: '',
175
+        CallType: '', // 呼叫类型
176
+        CallState: '', // 呼叫状态
177
+        searchDate: '',
178
+        pickerOptions,
179
+        timer: '',
180
+        recordpath: '', // 录音的路径
181
+        fieldListFlag: {},
182
+        pageParams: {
183
+          pageindex: 1, // 当前第几页
184
+          pagesize: Number(this.$store.getters.serverConfig.PAGESIZE), // 每页几条数据
185
+          total: 0 // 总共多少数据
186
+        },
187
+        dataLists: [], // 列表数据
188
+        multipleSelection: [] // 选中数据
258 189
       }
259
-      return statusMap[status]
260 190
     },
261
-    // 满意度
262
-    evaluationFilter(status) {
263
-      const statusMap = {
264
-        0: '-',
265
-        1: '非常满意',
266
-        2: '基本满意',
267
-        3: '不满意'
268
-      }
269
-      return statusMap[status]
191
+    computed: {
192
+      ...mapGetters([
193
+        'token',
194
+        'usercode', // 工号
195
+        'extension', // 分机号
196
+        'telIsVisCallout' // 外呼面板是否显示
197
+      ])
270 198
     },
271
-    // 时间格式化
272
-    timesFilter(tm) {
273
-      if (tm === '1970-01-01 08:00:00') {
274
-        return '-'
275
-      } else {
276
-        return tm
199
+    created() {
200
+      this.getFiledTabDetail(this.$route.path.split('/').join('_'))
201
+      this.getList()
202
+      document.onkeyup = (e) => {
203
+        if (e.keyCode === 13) {
204
+          this.getList()
205
+        }
277 206
       }
278 207
     },
279
-    // 是否回访
280
-    isReturnvisitFilter(status) {
281
-      const statusMap = {
282
-        0: '未回访',
283
-        1: '已回访'
284
-      }
285
-      return statusMap[status]
286
-    }
287
-  },
288
-  data() {
289
-    return {
290
-      loading: false,
291
-      keyword: '',
292
-      roleId: '',
293
-      CallType: '', // 呼叫类型
294
-      CallState: '', // 呼叫状态
295
-      searchDate: '',
296
-      pickerOptions,
297
-      timer: '',
298
-      recordpath: '', // 录音的路径
299
-      fieldListFlag: {},
300
-      pageParams: {
301
-        pageindex: 1, // 当前第几页
302
-        pagesize: Number(this.$store.getters.serverConfig.PAGESIZE), // 每页几条数据
303
-        total: 0 // 总共多少数据
208
+    mounted() {
209
+      this.timer = setInterval(() => {
210
+        this.getList()
211
+      }, 12000)
212
+    },
213
+    methods: {
214
+      getList() {
215
+        this.loading = true
216
+        return new Promise((resolve) => {
217
+          const params = {
218
+            page: this.pageParams.pageindex, // 第几页
219
+            pagesize: this.pageParams.pagesize, // 每页几条信息
220
+            phone: this.keyword.replace(/\s*/g, ''), //	否	string	模糊查询(呼叫号码)
221
+            usercode: this.roleId, //	否	string	模糊查询(呼叫号码) CallNumber
222
+            calltype: this.CallType == null ? '' : this.CallType, // 呼叫类型
223
+            callstate: this.CallState, // 呼叫状态
224
+            starttime: this.searchDate && this.searchDate[0],
225
+            endtime: this.searchDate && this.searchDate[1]
226
+          }
227
+          getCallRecords(params).then((response) => {
228
+            this.loading = false
229
+            if (response.state.toLowerCase() === 'success') {
230
+              this.pageParams.total = response.total
231
+              this.dataLists = response.rows
232
+            }
233
+          })
234
+          resolve()
235
+        })
304 236
       },
305
-      dataLists: [], // 列表数据
306
-      multipleSelection: [] // 选中数据
307
-    }
308
-  },
309
-  computed: {
310
-    ...mapGetters([
311
-      'token',
312
-      'usercode', // 工号
313
-      'extension', // 分机号
314
-      'telIsVisCallout' // 外呼面板是否显示
315
-    ])
316
-  },
317
-  created() {
318
-    this.getFiledTabDetail(this.$route.path.split('/').join('_'))
319
-    this.getList()
320
-    document.onkeyup = (e) => {
321
-      if (e.keyCode === 13) {
237
+      btn_search() {
322 238
         this.getList()
323
-      }
324
-    }
325
-  },
326
-  mounted() {
327
-    this.timer = setInterval(() => {
328
-      this.getList()
329
-    }, 12000)
330
-  },
331
-  methods: {
332
-    getList() {
333
-      this.loading = true
334
-      return new Promise((resolve) => {
239
+      },
240
+      btn_add_list() {
241
+        this.$layer.iframe({
242
+          content: {
243
+            content: addDefinedList, // 传递的组件对象
244
+            parent: this, // 当前的vue对象
245
+            data: {
246
+              definedId: this.$route.path
247
+            } // props
248
+          },
249
+          area: ['70%', '30%'],
250
+          title: '自定义字段'
251
+        })
252
+      },
253
+      getFiledTabDetail(TableId) {
254
+        GetFiledState(TableId).then((res) => {
255
+          const filedsData = res.F_Fileds
256
+          const filedsObj = {}
257
+          if (filedsData) {
258
+            filedsData.forEach((element) => {
259
+              filedsObj[element] = true
260
+            })
261
+          }
262
+          this.fieldListFlag = filedsObj
263
+          this.$refs['multipleTable'].doLayout()
264
+        })
265
+      },
266
+      oncall(phone, callid) {
267
+        const pas = {
268
+          id: callid
269
+        }
270
+        getUpdateCallRecord(pas).then((response) => {
271
+          if (response.state.toLowerCase() === 'success') {}
272
+        })
335 273
         const params = {
336
-          page: this.pageParams.pageindex, // 第几页
337
-          pagesize: this.pageParams.pagesize, // 每页几条信息
338
-          phone: this.keyword.replace(/\s*/g, ''), //	否	string	模糊查询(呼叫号码)
339
-          usercode: this.roleId, //	否	string	模糊查询(呼叫号码) CallNumber
340
-          calltype: this.CallType == null ? '' : this.CallType, // 呼叫类型
341
-          callstate: this.CallState, // 呼叫状态
342
-          starttime: this.searchDate && this.searchDate[0],
343
-          endtime: this.searchDate && this.searchDate[1]
274
+          phone: phone
344 275
         }
345
-        getCallRecords(params).then((response) => {
346
-          this.loading = false
276
+        getCallOutprefix(params).then((response) => {
347 277
           if (response.state.toLowerCase() === 'success') {
348
-            this.pageParams.total = response.total
349
-            this.dataLists = response.rows
278
+            const scoketDatas = {
279
+              "Type": "MakeCall",
280
+              "AgentID": localStorage.getItem('storageUsercode'),
281
+              "AgentExten": localStorage.getItem('ext'),
282
+              "Header": response.data.fix,
283
+              "DestinationNumber": response.data.phone
284
+            }
285
+            Send(scoketDatas)
350 286
           }
351 287
         })
352
-        resolve()
353
-      })
354
-    },
355
-    btn_search() {
356
-      this.getList()
357
-    },
358
-    btn_add_list() {
359
-      this.$layer.iframe({
360
-        content: {
361
-          content: addDefinedList, // 传递的组件对象
362
-          parent: this, // 当前的vue对象
363
-          data: {
364
-            definedId: this.$route.path
365
-          } // props
366
-        },
367
-        area: ['70%', '30%'],
368
-        title: '自定义字段'
369
-      })
370
-    },
371
-    getFiledTabDetail(TableId) {
372
-      GetFiledState(TableId).then((res) => {
373
-        const filedsData = res.F_Fileds
374
-        const filedsObj = {}
375
-        if (filedsData) {
376
-          filedsData.forEach((element) => {
377
-            filedsObj[element] = true
378
-          })
288
+      },
289
+      // 导出
290
+      btn_export() {
291
+        const exportparams = {
292
+          pageindex: this.pageParams.pageindex,
293
+          pagesize: this.pageParams.pagesize,
294
+          phone: this.keyword.replace(/\s+/g, ''),
295
+          usercode: this.roleId,
296
+          calltype: this.CallType == null ? '' : this.CallType,
297
+          callstate: this.CallState,
298
+          starttime: this.searchDate && this.searchDate[0],
299
+          endtime: this.searchDate && this.searchDate[1],
300
+          isdc: 1
379 301
         }
380
-        this.fieldListFlag = filedsObj
381
-        this.$refs['multipleTable'].doLayout()
382
-      })
383
-    },
384
-    oncall(phone, callid) {
385
-      const pas = {
386
-        id: callid
387
-      }
388
-      getUpdateCallRecord(pas).then((response) => {
389
-        if (response.state.toLowerCase() === 'success') {
302
+        exportExcel(exportparams, getListExpt)
303
+      },
304
+      // 播放录音
305
+      playSound(rec_file, artist) {
306
+        console.log('artist', artist)
307
+        this.$layer.iframe({
308
+          content: {
309
+            content: audioPlayer, // 传递的组件对象
310
+            parent: this, // 当前的vue对象
311
+            data: {
312
+              recFiles: rec_file,
313
+              artists: artist.toString()
314
+            } // props//该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接使用
315
+          },
316
+          area: ['600px', '230px'],
317
+          shadeClose: true,
318
+          title: '录音详情'
319
+        })
320
+      },
321
+      handleSelectionChange(selection) {
322
+        this.multipleSelection = selection
323
+      },
324
+      formtTime(val) {
325
+        if (!val) {
326
+          return '0秒'
390 327
         }
391
-      })
392
-      const params = {
393
-        phone: phone
394
-      }
395
-      getCallOutprefix(params).then((response) => {
396
-        if (response.state.toLowerCase() === 'success') {
397
-          this.$message.success('外呼成功')
398
-          this.getList()
328
+        var secondTime = parseInt(val)
329
+        var minuteTime = 0
330
+        var hourTime = 0
331
+        if (secondTime > 60) {
332
+          minuteTime = parseInt(secondTime / 60)
333
+          secondTime = parseInt(secondTime % 60)
334
+          if (minuteTime > 60) {
335
+            hourTime = parseInt(minuteTime / 60)
336
+            minuteTime = parseInt(minuteTime % 60)
337
+          }
399 338
         }
400
-      })
401
-    },
402
-    // 导出
403
-    btn_export() {
404
-      const exportparams = {
405
-        pageindex: this.pageParams.pageindex,
406
-        pagesize: this.pageParams.pagesize,
407
-        phone: this.keyword.replace(/\s+/g, ''),
408
-        usercode: this.roleId,
409
-        calltype: this.CallType == null ? '' : this.CallType,
410
-        callstate: this.CallState,
411
-        starttime: this.searchDate && this.searchDate[0],
412
-        endtime: this.searchDate && this.searchDate[1],
413
-        isdc: 1
414
-      }
415
-      exportExcel(exportparams, getListExpt)
416
-    },
417
-    // 播放录音
418
-    playSound(rec_file, artist) {
419
-      console.log('artist', artist)
420
-      this.$layer.iframe({
421
-        content: {
422
-          content: audioPlayer, // 传递的组件对象
423
-          parent: this, // 当前的vue对象
424
-          data: {
425
-            recFiles: rec_file,
426
-            artists: artist.toString()
427
-          } // props//该方法会自动添加一个key为layerid的值, 该值为创建层的id, 可以直接使用
428
-        },
429
-        area: ['600px', '230px'],
430
-        shadeClose: true,
431
-        title: '录音详情'
432
-      })
433
-    },
434
-    handleSelectionChange(selection) {
435
-      this.multipleSelection = selection
436
-    },
437
-    formtTime(val) {
438
-      if (!val) {
439
-        return '0秒'
440
-      }
441
-      var secondTime = parseInt(val)
442
-      var minuteTime = 0
443
-      var hourTime = 0
444
-      if (secondTime > 60) {
445
-        minuteTime = parseInt(secondTime / 60)
446
-        secondTime = parseInt(secondTime % 60)
447
-        if (minuteTime > 60) {
448
-          hourTime = parseInt(minuteTime / 60)
449
-          minuteTime = parseInt(minuteTime % 60)
339
+        var result = '' + parseInt(secondTime) + '秒'
340
+        if (minuteTime > 0) {
341
+          result = '' + parseInt(minuteTime) + '分' + result
450 342
         }
451
-      }
452
-      var result = '' + parseInt(secondTime) + '秒'
453
-      if (minuteTime > 0) {
454
-        result = '' + parseInt(minuteTime) + '分' + result
455
-      }
456
-      if (hourTime > 0) {
457
-        result = '' + parseInt(hourTime) + '小时' + result
458
-      }
459
-      return result
460
-    },
343
+        if (hourTime > 0) {
344
+          result = '' + parseInt(hourTime) + '小时' + result
345
+        }
346
+        return result
347
+      },
461 348
 
462
-    // 外呼
463
-    clickCallOut(phoneNumber, id) {
464
-      this.callOut(phoneNumber, id)
465
-    },
466
-    // 外呼
467
-    callOut(phoneNumber, id) {
468
-      if (phoneNumber) {
469
-        // getCallOutprefix(phoneNumber).then((response) => {
470
-        //   if (response.state.toLowerCase() === 'success') {
471
-        //     const res = response.data
472
-        //     this.scoketDatas = {
473
-        //       Type: 'MakeCall',
474
-        //       AgentID: this.usercode,
475
-        //       AgentExten: this.extension,
476
-        //       Header: res.fix, // 号码前缀 用于截断前缀得到真实号码
477
-        //       DestinationNumber: res.phone //
478
-        //     }
479
-        //     store.dispatch('ChangeCallNum', phoneNumber)
480
-        //     Send(this.scoketDatas)
481
-        //     store.dispatch('UpdateCalloutScreen', false) // 关闭外呼面板
482
-        //     store.dispatch('UpdateOutboundScreen', false) // 关闭外呼弹屏
483
-        //   }
484
-        // })
485
-      } else {
486
-        this.$message({
487
-          message: '请先输入电话号码!',
488
-          type: 'warning'
489
-        })
349
+      // 外呼
350
+      clickCallOut(phoneNumber, id) {
351
+        this.callOut(phoneNumber, id)
352
+      },
353
+      // 外呼
354
+      callOut(phoneNumber, id) {
355
+        if (phoneNumber) {
356
+          // getCallOutprefix(phoneNumber).then((response) => {
357
+          //   if (response.state.toLowerCase() === 'success') {
358
+          //     const res = response.data
359
+          //     this.scoketDatas = {
360
+          //       Type: 'MakeCall',
361
+          //       AgentID: this.usercode,
362
+          //       AgentExten: this.extension,
363
+          //       Header: res.fix, // 号码前缀 用于截断前缀得到真实号码
364
+          //       DestinationNumber: res.phone //
365
+          //     }
366
+          //     store.dispatch('ChangeCallNum', phoneNumber)
367
+          //     Send(this.scoketDatas)
368
+          //     store.dispatch('UpdateCalloutScreen', false) // 关闭外呼面板
369
+          //     store.dispatch('UpdateOutboundScreen', false) // 关闭外呼弹屏
370
+          //   }
371
+          // })
372
+        } else {
373
+          this.$message({
374
+            message: '请先输入电话号码!',
375
+            type: 'warning'
376
+          })
377
+        }
490 378
       }
491 379
     }
492 380
   }
493
-}
494 381
 </script>
495 382
 
496 383
 <style rel="stylesheet/scss" lang="scss" scoped>
497
-.app-container {
498
-  padding: 10px;
499
-}
500
-
501
-.phoneIcon {
502
-  cursor: pointer;
503
-}
504
-
505
-.filter-container {
506
-  .el-select {
507
-    margin-right: 10px;
384
+  .app-container {
385
+    padding: 10px;
508 386
   }
509 387
 
510
-  .el-date-editor {
511
-    margin-right: 10px;
388
+  .phoneIcon {
389
+    cursor: pointer;
512 390
   }
513 391
 
514
-  .el-cascader {
515
-    margin-right: 10px;
516
-  }
392
+  .filter-container {
393
+    .el-select {
394
+      margin-right: 10px;
395
+    }
517 396
 
518
-  .filter-item {
519
-    vertical-align: top;
397
+    .el-date-editor {
398
+      margin-right: 10px;
399
+    }
400
+
401
+    .el-cascader {
402
+      margin-right: 10px;
403
+    }
404
+
405
+    .filter-item {
406
+      vertical-align: top;
407
+    }
520 408
   }
521
-}
522 409
 </style>