telephone-clients 4.0.0-1-89 → 4.0.0-1-90

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/package.json +2 -2
  2. package/src/components/pc/MaintenanceWorker.vue +152 -0
  3. package/src/components/pc/NewRepairPaper.vue +704 -704
  4. package/src/components/pc/NewRepairTablePaper.vue +442 -442
  5. package/src/components/pc/WorkHistory.vue +650 -650
  6. package/src/components/pc/WorkListNew.vue +838 -838
  7. package/src/components/sendsingle/onlinecharge.vue +424 -424
  8. package/src/components/workorder/ChangeMeterPageNew.vue +663 -663
  9. package/src/components/workorder/ChangeMeterUserInfo.vue +130 -130
  10. package/src/components/workorder/RepairFirstV.vue +736 -736
  11. package/src/components/workorder/RepairInfo.vue +178 -178
  12. package/src/components/workorder/RepairOrderT.vue +713 -713
  13. package/src/components/workorder/oldMeterPage.vue +104 -104
  14. package/src/components/workorder/repairFirstTable.vue +715 -715
  15. package/src/filiale/jinhong/android/FaultAll.vue +936 -936
  16. package/src/filiale/jinhong/android/ZHihuanFirst.vue +540 -540
  17. package/src/filiale/jinhong/pc/WorkListAllNew.vue +884 -884
  18. package/src/filiale/jinhong/telephone.js +10 -10
  19. package/src/filiale/jinhong/telephoneAndroid.js +13 -13
  20. package/src/filiale/meihekou/android/Othercharge.vue +454 -454
  21. package/src/filiale/meihekou/android/PhoneStandWorkNew.vue +692 -692
  22. package/src/filiale/meihekou/android/ServiceOnlineQuery.vue +477 -477
  23. package/src/filiale/meihekou/pc/WorkListAllNew.vue +925 -901
  24. package/src/filiale/meihekou/pc/WorkListNew.vue +1103 -1049
  25. package/src/filiale/meihekou/telephoneAndroid.js +26 -26
  26. package/src/filiale/xinjiangdexin/telephone.js +16 -16
  27. package/src/filiale/xinliansihui/android/FaultAll.vue +923 -923
  28. package/src/filiale/xinliansihui/android/RepairFirstV.vue +734 -734
  29. package/src/filiale/xinliansihui/android/RepairOrderT.vue +713 -713
  30. package/src/main.js +1 -1
  31. package/src/telephone-android.js +425 -425
  32. package/src/telephone.js +799 -796
@@ -1,692 +1,692 @@
1
- <template>
2
- <div style="height: auto;width: 100%" class="repair-bg">
3
- <div class="bq-parent">
4
- <blockquote style="color: #499edf;border-left-color: #499edf;font-size: 16px">
5
- <p>
6
- 待派发工单<span v-if="rows">({{rows.length}}单)</span>
7
- <span v-if="!rows">(暂无待派发工单)</span>
8
- </p>
9
- </blockquote>
10
- </div>
11
-
12
- <div>
13
- <form>
14
- <!-- 查询条件-->
15
- <div class="row app-row">
16
- <div class="col-xs-4">
17
- <img src="../../../assets/用户姓名-蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
18
- <label for="f_userinfo_code" class="font text-left">用户姓名:</label>
19
- </div>
20
- <div class="col-xs-8" >
21
- <input type="text" v-model="username" placeholder='用户姓名'
22
- class="search_input input-font" />
23
- </div>
24
- </div>
25
- <div class="row app-row">
26
- <div class="col-xs-4">
27
- <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
28
- <label for="f_userinfo_code" class="font text-left">用户地址:</label>
29
- </div>
30
- <div class="col-xs-8" >
31
- <input type="text" id="f_userinfo_code" class="search_input input-font"
32
- v-model="address" placeholder='用户地址' />
33
- </div>
34
- </div>
35
- <div class="row app-row">
36
- <div class="col-xs-4">
37
- <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
38
- <label class="font text-left">接单站点:</label>
39
- </div>
40
- <input style="width: 60%" type="text" v-show="false" v-model="f_meetunit">
41
- <right-tree islist :userid="userid" :source="source" v-on:re-res="reres2" >
42
- </right-tree>
43
- </div>
44
- <div class="row app-row" >
45
- <div class="col-xs-4">
46
- <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
47
- <label class="font text-left">维修区域:</label>
48
- </div>
49
- <div class="col-xs-8" >
50
- <v-select :value.sync="f_slice_area_id"
51
- v-model="f_slice_area_id"
52
- :options='sliceArea'
53
- placeholder='请选择'
54
- close-on-select
55
- :multiple="false"
56
- ></v-select>
57
- </div>
58
- </div>
59
- <div class="row app-row" >
60
- <div class="col-xs-4">
61
- <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
62
- <label class="font text-left">报修类型:</label>
63
- </div>
64
- <div class="col-xs-8" >
65
- <v-select :value.sync="f_repairtype"
66
- v-model="f_repairtype"
67
- :options='baoxiuType'
68
- placeholder='请选择'
69
- close-on-select
70
- :multiple="false"
71
- ></v-select>
72
- </div>
73
- </div>
74
- <div class="row app-row" >
75
- <div class="col-xs-4">
76
- <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
77
- <label class="font text-left">用户类型:</label>
78
- </div>
79
- <div class="col-xs-8" >
80
- <v-select :value.sync="f_user_type"
81
- v-model="f_user_type"
82
- :options='userType'
83
- placeholder='请选择'
84
- :multiple="false"
85
- close-on-select
86
- ></v-select>
87
- </div>
88
- </div>
89
- <div class="row app-row">
90
- <div class="col-xs-4">
91
- <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
92
- <label class="font text-left">截止时间:</label>
93
- </div>
94
- <div class="col-xs-8" style="display: flex; justify-content: space-between;">
95
- <datepicker id="f_finish_date_start"
96
- placeholder= '起始时间'
97
- :value.sync="f_finish_date_start"
98
- :disabled-days-of-Week="[]"
99
- v-model="f_finish_date_start"
100
- class="input-font"
101
- style="width:60%"
102
- :format="'yyyy-MM-dd 00:00:00'"
103
- :show-reset-button="reset">
104
- </datepicker>
105
- </div>
106
- </div>
107
- <div class="row app-row">
108
- <div class="col-xs-4">
109
- <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
110
- <label class="font text-left">截止时间:</label>
111
- </div>
112
- <div class="col-xs-8" style="display: flex; justify-content: space-between;">
113
- <datepicker id="f_finish_date_end"
114
- placeholder= '结束时间'
115
- :value.sync="f_finish_date_end"
116
- :disabled-days-of-Week="[]"
117
- v-model="f_finish_date_end"
118
- class="input-font"
119
- style="width:60%"
120
- :format="'yyyy-MM-dd 23:59:00'"
121
- :show-reset-button="reset">
122
- </datepicker>
123
- </div>
124
- </div>
125
- <div class="row app-row">
126
- <div class="col-xs-4 col-sm-3">
127
- <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
128
- <label class="font text-left">逾期天数:</label>
129
- </div>
130
- <div class="col-xs-8 col-sm-9">
131
- <div class="row">
132
- <div class="col-xs-4">
133
- <input type="number" min="0" v-model.number="f_over_start"
134
- class="form-control form-control-sm" placeholder="起始天数">
135
- </div>
136
- <div class="col-xs-2 text-center">
137
- <span class="font">至</span>
138
- </div>
139
- <div class="col-xs-4">
140
- <input type="number" min="0" v-model.number="f_over_end"
141
- class="form-control form-control-sm" placeholder="结束天数">
142
- </div>
143
- </div>
144
- </div>
145
- </div>
146
- <div class="row app-row">
147
- <div class="col-xs-4">
148
- <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
149
- <label for="f_userinfo_code" class="font text-left">报修内容:</label>
150
- </div>
151
- <div class="col-xs-8" >
152
- <input type="text" id="f_userinfo_code" class="search_input input-font"
153
- v-model="f_failure" placeholder='报修内容' />
154
- </div>
155
- </div>
156
- <!-- 分割按钮和条件的高度 -->
157
- <div class="row app-row" style="height: 10px;"></div>
158
- <!-- 按钮 -->
159
- <div class="row text-center app-row">
160
- <button type="button" class="btn btn-lg btn-font btn-color" @click="ifsearch()" style="min-width: 25%;">查询</button>
161
- </div>
162
- <div style="height:30px;" class="app-row"></div>
163
- </form>
164
- </div>
165
- <!-- 列表 -->
166
- <div class="panel panel-default repair-info-content auto">
167
- <div class="panel-body">
168
- <div class="panel panel-default well panel-blue-border" :class="row.failure.indexOf('漏气') !== -1 ? 'class-a':''" v-for="row in listData.list" >
169
- <div class="panel-body" style="padding: 10px">
170
- <div class="row form-group">
171
- <div class="col-sm-12 col-xs-12 col-md-12">
172
- <div class="row" >
173
- <div :class="{'text-danger': row.f_remindersign}" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
174
- 工单编号: {{row.f_service_id}}<span v-if="row.f_remindersign">(催单 {{row.f_reminderdata}}) </span>
175
- </div>
176
- <div :class="{'text-danger': row.f_remindersign}" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
177
- 接单站点: {{row.f_meetunit}}<span v-if="row.f_remindersign">(催单 {{row.f_reminderdata}}) </span>
178
- </div>
179
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
180
- 派发时间: {{row.f_created_date}}
181
- </div>
182
- <div v-show="false" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="worktype == '置换通气单'||worktype == '安装单'">
183
- 预约时间: {{row.f_yuyue_date}}
184
- </div>
185
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_repairtype">
186
- 报修类型: {{row.f_repairtype}}
187
- </div>
188
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_finish_date">
189
- 截止天数: {{Math.floor((new Date(row.f_finish_date.substring(0,10)).getTime() - new Date(row.f_created_date.substring(0,10)).getTime()) / 86400000)}}
190
- </div>
191
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_finish_date">
192
- 截止日期: {{row.f_finish_date}}
193
- </div>
194
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_finish_date">
195
- 逾期天数:
196
- {{Math.max(0, Math.floor((new Date().getTime() - new Date(row.f_finish_date.substring(0,10)).getTime()) / 86400000))}}
197
- </div>
198
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_userinfo_code">
199
- 用户编号: {{row.f_userinfo_code}}
200
- </div>
201
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_enter_number">
202
- 用户证号: {{row.f_enter_number}}
203
- </div>
204
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
205
- 用户姓名: {{row.f_user_name}}
206
- </div>
207
- <div v-show="false" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
208
- 来电电话: {{row.f_phone}}
209
- <img src="../../../assets/telphonesend.png" style="width: 12px;" @click.stop.prevent='makeAPhoneCall(row.f_phone)'>
210
- </div>
211
- <div class="col-sm-12 col-xs-12 col-md-12">
212
- 联系电话: {{row.f_contact_phone}}
213
- <img src="../../../assets/telphonesend.png" style="width: 12px;" @click.stop.prevent='makeAPhoneCall(row.f_contact_phone)'>
214
- </div>
215
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
216
- 用户地址: {{row.f_address}}
217
- </div>
218
- <div v-show="row.f_remarks" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
219
- 备注信息: {{row.f_remarks}}
220
- </div>
221
- <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.failure">
222
- <failure-show :value='row.failure'>
223
- </failure-show>
224
- </div>
225
- </div>
226
- </div>
227
- <div class="col-sm-12 col-xs-12 col-md-12">
228
- <button type="button" name="button" class="btn btn-primary btn-sm" style="float: right;margin-right: 5px;" @click="selected(row)">下派</button>
229
- <button type="button" name="button" class="btn btn-primary btn-sm" style="float: right;margin-right: 5px;" @click="returnOrder(row)">退回</button>
230
- <button type="button" name="button" class="btn btn-primary btn-sm" style="float: right;margin-right: 5px;" @click="caseend(row)">结案</button>
231
- </div>
232
- </div>
233
- </div>
234
- </div>
235
- <div style="height:auto;width: 100%;text-align: center">
236
- <a v-if="!listData.isEnd" @click="showMore()">展开更多......</a>
237
- <span v-if="listData.isEnd">到底了......</span>
238
- </div>
239
- </div>
240
- <modal :show.sync="return_modal" v-ref:modalCase backdrop="false">
241
- <header slot="modal-header" class="modal-header">
242
- 工单退回
243
- </header>
244
- <article slot="modal-body" class="modal-body">
245
- <div class="col-sm-12 form-group">
246
- <label class="control-label col-sm-2">退回备注</label>
247
- <div class="col-sm-9">
248
- <input class="form-control" type="text" v-model="return_modal_data.serviceacitivity[0].f_site_back_reason"/>
249
- </div>
250
- </div>
251
- </article>
252
- <footer slot="modal-footer" class="modal-footer">
253
- <button type="button" class="btn btn-success" @click='returnOrderBack()'>确定</button>
254
- <button type="button" class="btn btn-success" @click='returnModalClose()'>关闭</button>
255
- </footer>
256
- </modal>
257
- <modal :show.sync="sendshow" v-ref:modal :backdrop="false">
258
- <div slot="modal-header" class="modal-header">
259
- <h4 class="modal-title">
260
- 派发工单
261
- </h4>
262
- </div>
263
- <div slot="modal-body" class="modal-body">
264
- <div class="row" style="margin-top: 6px">
265
- <label class="col-xs-4 col-md-4 control-label font text-left">派单方式</label>
266
- <div class="col-xs-8">
267
- <v-select :value-single="true" :value.sync="f_handlingtype" v-model="f_handlingtype"
268
- :options='repairerType' placeholder='请选择派单方式'
269
- close-on-select></v-select>
270
- </div>
271
- </div>
272
- <div class="row" style="margin-top: 6px" v-if="f_handlingtype == '转维修员'">
273
- <label class="col-xs-4 col-md-4 control-label font text-left">维修员</label>
274
- <div class="col-xs-8">
275
- <v-select :value="sendselected.serviceacitivity[0].f_reciever" :value-single="true"
276
- :options='repairers' placeholder='请选择维修员'
277
- close-on-select v-on:change="repiarmancg"></v-select>
278
- </div>
279
- </div>
280
- <div class="row" style="margin-top: 6px" v-if="f_handlingtype == '转站点'">
281
- <label class="col-xs-4 col-md-4 control-label font text-left">站点</label>
282
- <input style="width: 60%" type="text" v-show="false" v-model="sendselected.serviceacitivity[0].f_reciever">
283
- <right-tree islist :userid="userid" :source="source" v-on:re-res="reres" :textContent="选择站点管理员">
284
-
285
- </right-tree>
286
- </div>
287
- <div class="row" style="margin-top: 6px">
288
- <label class="control-label font text-left col-md-4 col-xs-4">备注</label>
289
- <div class="col-xs-8 col-md-8">
290
- <input type="text" v-model="sendselected.f_advice"/>
291
- </div>
292
- </div>
293
- </div>
294
- <div slot="modal-footer" class="modal-footer">
295
- <button type="button" class="btn btn-default" @click="worksend()">确定</button>
296
- <button type="button" class="btn btn-default" @click="undo()">取消</button>
297
- </div>
298
- </modal>
299
- <modal :show.sync="caseshow" v-ref:modalCase backdrop="false">
300
- <header slot="modal-header" class="modal-header">
301
- 工单结案
302
- </header>
303
- <article slot="modal-body" class="modal-body">
304
- <div class="col-sm-12 form-group">
305
- <label class="control-label col-sm-2">结案备注</label>
306
- <div class="col-sm-9">
307
- <input class="form-control" type="text" v-model="f_caseremarks"/>
308
- </div>
309
- </div>
310
- </article>
311
- <footer slot="modal-footer" class="modal-footer">
312
- <button type="button" class="btn btn-success" @click='caseok'>确定</button>
313
- <button type="button" class="btn btn-success" @click='caseclose'>关闭</button>
314
- </footer>
315
- </modal>
316
- </div>
317
- </div>
318
- </template>
319
- <script>
320
- import FailureShow from '../../../components/pc/FailureShow'
321
- import { HttpResetClass } from 'vue-client'
322
- import Vue from 'vue'
323
- import * as Util from "../../../components/Util";
324
-
325
- export default{
326
- title: '移动端站点派发',
327
- data () {
328
- return {
329
- return_modal:false,
330
- return_modal_data:{},
331
- userid: Vue.user.id,
332
- source:
333
- 'dep=this.getParentByType($organization$).getSpecialResByType($department$),' +
334
- 'tool.getFullTree(dep.where(row.hasSpecialRole($派单员$)))',
335
- repairName: '',
336
- f_handlingtype:'转维修员',
337
- baoxiuType:this.$appdata.getParam('报修类型'),
338
- repairerType:[{label: '转维修员', value: '转维修员'}, {label: '转站点', value: '转站点'}],
339
- userType:[{label: '全部', value: ''},{label: '民用', value: '民用'}, {label: '非民用', value: '非民用'}],
340
- repairerStands:[],
341
- f_caseremarks:'',
342
- selectone:'',
343
- rows: [],
344
- sliceArea :[],
345
- username:'',
346
- address:'',
347
- f_meetunit: '',
348
- f_slice_area_id: '',
349
- f_user_type: '',
350
- f_finish_date_start: '',
351
- f_finish_date_end: '',
352
- f_over_start: '',
353
- f_over_end: '',
354
- f_failure:'',
355
- sendshow:false,
356
- repairers: [],
357
- areas: [],
358
- caseshow:false,
359
- sendselected:{
360
- serviceacitivity:[
361
- {
362
- f_service_acitivity_type: '派单',
363
- f_reciever:''
364
- }
365
- ],
366
- f_advice:''
367
- },
368
- number:0,
369
- listData: {
370
- list: [],
371
- isEnd: true,
372
- index: 0
373
- }
374
- }
375
- },
376
- props: {
377
- },
378
- methods: {
379
- gerzone(){
380
- new HttpResetClass().load('POST',`/api/af-safecheck/sql/safe_singleTable_OrderBy`, {data: {
381
- items: 'name,id',
382
- tablename: 't_zone',
383
- condition: `f_orgid='${ Vue.user.orgid}'`,
384
- orderitem: 'id'
385
- }}, {resolveMsg: null, rejectMsg: null}).then((res) => {
386
- this.sliceArea=[]
387
- this.sliceArea.push({
388
- label:'全部',
389
- value:''
390
- })
391
- res.data.forEach(ress=>{
392
- this.sliceArea.push({
393
- label:ress.name,
394
- value:ress.id
395
- })
396
- })
397
- })
398
- },
399
- returnOrderBack(){
400
- new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/logic/siteBack`, {model: this.return_modal_data, loginUser: {name: Vue.user.name, ename: Vue.user.ename, id: Vue.user.id}}).then((res) => {
401
- this.returnModalClose()
402
- this.$showMessage(`退回成功`)
403
- })
404
- },
405
- returnModalClose(){
406
- this.return_modal_data = {}
407
- this.return_modal = false
408
- },
409
- returnOrder(row){
410
- row.serviceacitivity = [
411
- {
412
- "f_service_acitivity_type": "打回",
413
- "f_site_back_reason": ""
414
- }
415
- ]
416
- this.return_modal_data = row
417
- this.return_modal = true
418
- },
419
- reres(val){
420
- if(val.res == undefined || val.res[0] == undefined || val.res[0] == ''){
421
- return
422
- }
423
- this.sendselected.serviceacitivity[0].f_meetunit = val.res[0]
424
- this.sendselected.f_meetunit = val.res[0]
425
- this.sendselected.f_filiale_id = val.orgobj[0].parentid
426
- this.sendselected.f_filiale = val.orgobj[0].parentname
427
- this.sendselected.f_outlets = val.res[0]
428
- this.sendselected.serviceacitivity[0].f_reciever = val.resids[0]
429
- },
430
- reres2(val){
431
- if(val.res == undefined || val.res[0] == undefined || val.res[0] == ''){
432
- return
433
- }
434
- this.f_meetunit=val.res[0]
435
- },
436
- caseend(val){
437
- this.selectone = val
438
- this.caseshow = true
439
- },
440
- // 结案确认
441
- caseok(){
442
- // 工单结案操作
443
- let data = {model: this.selectone, loginUser: {name: Vue.user.name, ename: Vue.user.ename},f_caseremarks:this.f_caseremarks}
444
- let HttpReset1 = new HttpResetClass()
445
- // 将数据发送给业务逻辑
446
- HttpReset1.load('POST',`${this.$androidUtil.getProxyUrl()}/af-telephone/rs/logic/serviceCase`, data).then((res) => {
447
- this.f_caseremarks = ''
448
- this.caseshow = false
449
- this.ifsearch()
450
- })
451
- },
452
- // 结案返回
453
- caseclose(){
454
- this.f_caseremarks = ''
455
- this.caseshow = false
456
- this.selectone = ''
457
- },
458
- worksend() {
459
- if (!this.sendselected.serviceacitivity[0].f_reciever) {
460
- this.$showMessage(`请选择接单人员!`, ['confirm'])
461
- return
462
- }
463
- let data = {
464
- model: this.sendselected,
465
- loginUser: {name: Vue.user.name, ename: Vue.user.ename},
466
- f_handlingtype: this.f_handlingtype
467
- }
468
- let HttpReset = new HttpResetClass()
469
- // 将数据发送给业务逻辑
470
- HttpReset.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/logic/siteSend`, data).then((res) => {
471
- if (res.data.code == 300) {
472
- this.sendshow = false
473
- this.sendselected = {
474
- serviceacitivity: [
475
- {
476
- f_service_acitivity_type: '派单',
477
- f_reciever: ''
478
- }
479
- ],
480
- f_advice: ''
481
- }
482
- this.ifsearch()
483
- this.$showMessage(`该单已被派发!`, ['confirm'])
484
- return
485
- } else {
486
- this.sendshow = false
487
- this.sendselected = {
488
- serviceacitivity: [
489
- {
490
- f_service_acitivity_type: '派单',
491
- f_reciever: ''
492
- }
493
- ],
494
- f_advice: ''
495
- }
496
- this.ifsearch()
497
- this.$showMessage(`派发成功!`, ['confirm'])
498
- return
499
- }
500
- })
501
- },
502
- repiarmancg(val){
503
- this.sendselected.serviceacitivity[0].f_reciever = val
504
- },
505
- // 获取维修员
506
- getEmp () {
507
- // 获取接单人数组
508
- let http = new HttpResetClass()
509
- var val = {source: `this.getParentByType($organization$).getChildByName($维修员$).getUsers()`, userid: `${Vue.user.id}`}
510
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/search`, {data: val}, {resolveMsg: null, rejectMsg: null}).then((res) => {
511
- res.data.forEach((item) => {
512
- this.repairers.push({label: `${item.name}`, value: item.name})
513
- })
514
- })
515
- },
516
- ifsearch(){
517
- this.listData.list = []
518
- this.listData.index = 0
519
- this.listData.isEnd = true
520
- var condition = `1 = 1 and tswo.f_workorder_type = '报修单'`
521
- if(this.username != ''){
522
- condition += " and tswo.f_user_name like '%" + this.username + "%'"
523
- }
524
- if(this.address != ''){
525
- condition += " and tswo.f_address like '%" + this.address + "%'"
526
- }
527
- if(this.f_meetunit != ''){
528
- condition += `and ts.f_meetunit = '${this.f_meetunit}' `
529
- }
530
- if(this.f_repairtype != ''){
531
- condition += `and tswo.f_repairtype = '${this.f_repairtype}' `
532
- }
533
- if(this.f_user_type != ''){
534
- condition += `and tswo.f_user_type = '${this.f_user_type}' `
535
- }
536
- if(this.f_finish_date_start != ''){
537
- condition += `and tswo.f_finish_date >= '${this.f_finish_date_start}' `
538
- }
539
- if(this.f_finish_date_end != ''){
540
- condition += `and tswo.f_finish_date <= '${this.f_finish_date_end}' `
541
- }
542
- if(this.f_slice_area_id != ''){
543
- condition += `and tua.f_slice_area_id = '${this.f_slice_area_id}' `
544
- }
545
- if(this.f_failure != ''){
546
- condition += `and tswo.failure_str like '%${this.f_failure}%' `
547
- }
548
- // 逾期天数筛选(SQL Server 语法)
549
- if (this.f_over_start !== '' || this.f_over_end !== '') {
550
- const dateDiffExpr = `DATEDIFF(DAY, CONVERT(DATE, tswo.f_finish_date), CONVERT(DATE, GETDATE()))`;
551
- if (this.f_over_start !== '' && this.f_over_end !== '') {
552
- // 区间筛选
553
- condition += ` AND ${dateDiffExpr} BETWEEN ${this.f_over_start} AND ${this.f_over_end}`;
554
- } else if (this.f_over_start !== '') {
555
- // 最小逾期天数
556
- condition += ` AND ${dateDiffExpr} >= ${this.f_over_start}`;
557
- } else if (this.f_over_end !== '') {
558
- // 最大逾期天数
559
- condition += ` AND ${dateDiffExpr} <= ${this.f_over_end}`;
560
- }
561
- }
562
- var val = {
563
- condition:{
564
- condition:condition,
565
- sign:'1 = 1'
566
- },
567
- userid:Vue.user.name
568
- }
569
- let http = new HttpResetClass()
570
- http.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/sql/operatorServiceNew`, {data: val}, {resolveMsg: null, rejectMsg: null}).then((res) => {
571
- this.rows = res.data
572
- this.showMore()
573
- })
574
- },
575
- selected (row) {
576
- this.sendselected = Object.assign({}, this.sendselected, row)
577
- this.sendshow =true
578
- },
579
- undo(){
580
- this.sendselected ={
581
- serviceacitivity:[
582
- {
583
- f_service_acitivity_type: '派单',
584
- f_reciever:''
585
- }
586
- ],
587
- f_advice:''
588
- }
589
- this.sendshow = false
590
- this.ifsearch()
591
- },
592
- makeAPhoneCall(phoneNumber) {
593
- this.$androidUtil.makeAPhoneCall(phoneNumber)
594
- },
595
- showMore() {
596
- if (!this.rows) {
597
- return
598
- }
599
- let endIndex = this.listData.index + 10
600
- if (endIndex > this.rows.length) {
601
- endIndex = this.rows.length
602
- }
603
- for (; this.listData.index < endIndex; this.listData.index++) {
604
- this.listData.list.push(this.rows[this.listData.index])
605
- }
606
- if(this.listData.index == this.rows.length){
607
- this.listData.isEnd = true
608
- }else {
609
- this.listData.isEnd = false
610
- }
611
- }
612
- },
613
- ready () {
614
- this.gerzone()
615
- this.getEmp()
616
- this.ifsearch()
617
- },
618
- components: {
619
- FailureShow,
620
- 'failure-show': FailureShow
621
- }
622
- }
623
- </script>
624
- <style scoped>
625
- /* 在 <style> 部分添加 */
626
- .form-control-sm {
627
- padding: 0.25rem 0.5rem;
628
- font-size: 0.875rem;
629
- }
630
-
631
- .input-group-addon {
632
- padding: 0.375rem 0.75rem;
633
- font-weight: 500;
634
- color: #666;
635
- }
636
-
637
- @media (max-width: 768px) {
638
- .app-row .form-control {
639
- width: 100%;
640
- margin-bottom: 0.5rem;
641
- }
642
- }
643
- .searBtn {
644
- background: #FFFFFF;
645
- color: #0096fb;
646
- border: 1px solid #0096fb;
647
- border-radius: 5px;
648
- padding: 8px;
649
- text-align: center;
650
- font-size: 1.2em;
651
- z-index: 10;
652
- opacity:0.5;
653
- bottom: 50px;
654
- margin-top: -10px;
655
- height: 40px;
656
- }
657
- .bg {
658
- background-color: #499edf;
659
- height: 1px;
660
- border: 0;
661
- }
662
- .app-row {
663
- background-color: white;
664
- padding: 10px 10px 0 10px;
665
- border-bottom: 1px solid rgba(235, 235, 235, 0.5);
666
- }
667
- .search_input {
668
- border: 0;
669
- outline: none;
670
- }
671
- .font{
672
- font: 15px PingFang-SC-Medium;
673
- color: #666666;
674
- }
675
- .input-font{
676
- font: 15px PingFang-SC-Medium;
677
- color: #333333;
678
- }
679
- .btn-font{
680
- font:600 16px PingFang-SC-Bold;
681
- color: #499EDF;
682
- }
683
- .btn-color{
684
- background-color: #FFFFFF;
685
- border-radius: 10px ;
686
- border: 1px solid #499EDF;
687
- }
688
- .panel-blue-border {
689
- border: 1px solid #499edf;
690
- border-radius: 5px;
691
- }
692
- </style>
1
+ <template>
2
+ <div style="height: auto;width: 100%" class="repair-bg">
3
+ <div class="bq-parent">
4
+ <blockquote style="color: #499edf;border-left-color: #499edf;font-size: 16px">
5
+ <p>
6
+ 待派发工单<span v-if="rows">({{rows.length}}单)</span>
7
+ <span v-if="!rows">(暂无待派发工单)</span>
8
+ </p>
9
+ </blockquote>
10
+ </div>
11
+
12
+ <div>
13
+ <form>
14
+ <!-- 查询条件-->
15
+ <div class="row app-row">
16
+ <div class="col-xs-4">
17
+ <img src="../../../assets/用户姓名-蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
18
+ <label for="f_userinfo_code" class="font text-left">用户姓名:</label>
19
+ </div>
20
+ <div class="col-xs-8" >
21
+ <input type="text" v-model="username" placeholder='用户姓名'
22
+ class="search_input input-font" />
23
+ </div>
24
+ </div>
25
+ <div class="row app-row">
26
+ <div class="col-xs-4">
27
+ <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
28
+ <label for="f_userinfo_code" class="font text-left">用户地址:</label>
29
+ </div>
30
+ <div class="col-xs-8" >
31
+ <input type="text" id="f_userinfo_code" class="search_input input-font"
32
+ v-model="address" placeholder='用户地址' />
33
+ </div>
34
+ </div>
35
+ <div class="row app-row">
36
+ <div class="col-xs-4">
37
+ <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
38
+ <label class="font text-left">接单站点:</label>
39
+ </div>
40
+ <input style="width: 60%" type="text" v-show="false" v-model="f_meetunit">
41
+ <right-tree islist :userid="userid" :source="source" v-on:re-res="reres2" >
42
+ </right-tree>
43
+ </div>
44
+ <div class="row app-row" >
45
+ <div class="col-xs-4">
46
+ <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
47
+ <label class="font text-left">维修区域:</label>
48
+ </div>
49
+ <div class="col-xs-8" >
50
+ <v-select :value.sync="f_slice_area_id"
51
+ v-model="f_slice_area_id"
52
+ :options='sliceArea'
53
+ placeholder='请选择'
54
+ close-on-select
55
+ :multiple="false"
56
+ ></v-select>
57
+ </div>
58
+ </div>
59
+ <div class="row app-row" >
60
+ <div class="col-xs-4">
61
+ <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
62
+ <label class="font text-left">报修类型:</label>
63
+ </div>
64
+ <div class="col-xs-8" >
65
+ <v-select :value.sync="f_repairtype"
66
+ v-model="f_repairtype"
67
+ :options='baoxiuType'
68
+ placeholder='请选择'
69
+ close-on-select
70
+ :multiple="false"
71
+ ></v-select>
72
+ </div>
73
+ </div>
74
+ <div class="row app-row" >
75
+ <div class="col-xs-4">
76
+ <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
77
+ <label class="font text-left">用户类型:</label>
78
+ </div>
79
+ <div class="col-xs-8" >
80
+ <v-select :value.sync="f_user_type"
81
+ v-model="f_user_type"
82
+ :options='userType'
83
+ placeholder='请选择'
84
+ :multiple="false"
85
+ close-on-select
86
+ ></v-select>
87
+ </div>
88
+ </div>
89
+ <div class="row app-row">
90
+ <div class="col-xs-4">
91
+ <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
92
+ <label class="font text-left">截止时间:</label>
93
+ </div>
94
+ <div class="col-xs-8" style="display: flex; justify-content: space-between;">
95
+ <datepicker id="f_finish_date_start"
96
+ placeholder= '起始时间'
97
+ :value.sync="f_finish_date_start"
98
+ :disabled-days-of-Week="[]"
99
+ v-model="f_finish_date_start"
100
+ class="input-font"
101
+ style="width:60%"
102
+ :format="'yyyy-MM-dd 00:00:00'"
103
+ :show-reset-button="reset">
104
+ </datepicker>
105
+ </div>
106
+ </div>
107
+ <div class="row app-row">
108
+ <div class="col-xs-4">
109
+ <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
110
+ <label class="font text-left">截止时间:</label>
111
+ </div>
112
+ <div class="col-xs-8" style="display: flex; justify-content: space-between;">
113
+ <datepicker id="f_finish_date_end"
114
+ placeholder= '结束时间'
115
+ :value.sync="f_finish_date_end"
116
+ :disabled-days-of-Week="[]"
117
+ v-model="f_finish_date_end"
118
+ class="input-font"
119
+ style="width:60%"
120
+ :format="'yyyy-MM-dd 23:59:00'"
121
+ :show-reset-button="reset">
122
+ </datepicker>
123
+ </div>
124
+ </div>
125
+ <div class="row app-row">
126
+ <div class="col-xs-4 col-sm-3">
127
+ <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
128
+ <label class="font text-left">逾期天数:</label>
129
+ </div>
130
+ <div class="col-xs-8 col-sm-9">
131
+ <div class="row">
132
+ <div class="col-xs-4">
133
+ <input type="number" min="0" v-model.number="f_over_start"
134
+ class="form-control form-control-sm" placeholder="起始天数">
135
+ </div>
136
+ <div class="col-xs-2 text-center">
137
+ <span class="font">至</span>
138
+ </div>
139
+ <div class="col-xs-4">
140
+ <input type="number" min="0" v-model.number="f_over_end"
141
+ class="form-control form-control-sm" placeholder="结束天数">
142
+ </div>
143
+ </div>
144
+ </div>
145
+ </div>
146
+ <div class="row app-row">
147
+ <div class="col-xs-4">
148
+ <img src="../../../assets/小区蓝色.png" style="width: 20px;margin-bottom: 5px" alt="">
149
+ <label for="f_userinfo_code" class="font text-left">报修内容:</label>
150
+ </div>
151
+ <div class="col-xs-8" >
152
+ <input type="text" id="f_userinfo_code" class="search_input input-font"
153
+ v-model="f_failure" placeholder='报修内容' />
154
+ </div>
155
+ </div>
156
+ <!-- 分割按钮和条件的高度 -->
157
+ <div class="row app-row" style="height: 10px;"></div>
158
+ <!-- 按钮 -->
159
+ <div class="row text-center app-row">
160
+ <button type="button" class="btn btn-lg btn-font btn-color" @click="ifsearch()" style="min-width: 25%;">查询</button>
161
+ </div>
162
+ <div style="height:30px;" class="app-row"></div>
163
+ </form>
164
+ </div>
165
+ <!-- 列表 -->
166
+ <div class="panel panel-default repair-info-content auto">
167
+ <div class="panel-body">
168
+ <div class="panel panel-default well panel-blue-border" :class="row.failure.indexOf('漏气') !== -1 ? 'class-a':''" v-for="row in listData.list" >
169
+ <div class="panel-body" style="padding: 10px">
170
+ <div class="row form-group">
171
+ <div class="col-sm-12 col-xs-12 col-md-12">
172
+ <div class="row" >
173
+ <div :class="{'text-danger': row.f_remindersign}" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
174
+ 工单编号: {{row.f_service_id}}<span v-if="row.f_remindersign">(催单 {{row.f_reminderdata}}) </span>
175
+ </div>
176
+ <div :class="{'text-danger': row.f_remindersign}" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
177
+ 接单站点: {{row.f_meetunit}}<span v-if="row.f_remindersign">(催单 {{row.f_reminderdata}}) </span>
178
+ </div>
179
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
180
+ 派发时间: {{row.f_created_date}}
181
+ </div>
182
+ <div v-show="false" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="worktype == '置换通气单'||worktype == '安装单'">
183
+ 预约时间: {{row.f_yuyue_date}}
184
+ </div>
185
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_repairtype">
186
+ 报修类型: {{row.f_repairtype}}
187
+ </div>
188
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_finish_date">
189
+ 截止天数: {{Math.floor((new Date(row.f_finish_date.substring(0,10)).getTime() - new Date(row.f_created_date.substring(0,10)).getTime()) / 86400000)}}
190
+ </div>
191
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_finish_date">
192
+ 截止日期: {{row.f_finish_date}}
193
+ </div>
194
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_finish_date">
195
+ 逾期天数:
196
+ {{Math.max(0, Math.floor((new Date().getTime() - new Date(row.f_finish_date.substring(0,10)).getTime()) / 86400000))}}
197
+ </div>
198
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_userinfo_code">
199
+ 用户编号: {{row.f_userinfo_code}}
200
+ </div>
201
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.f_enter_number">
202
+ 用户证号: {{row.f_enter_number}}
203
+ </div>
204
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
205
+ 用户姓名: {{row.f_user_name}}
206
+ </div>
207
+ <div v-show="false" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
208
+ 来电电话: {{row.f_phone}}
209
+ <img src="../../../assets/telphonesend.png" style="width: 12px;" @click.stop.prevent='makeAPhoneCall(row.f_phone)'>
210
+ </div>
211
+ <div class="col-sm-12 col-xs-12 col-md-12">
212
+ 联系电话: {{row.f_contact_phone}}
213
+ <img src="../../../assets/telphonesend.png" style="width: 12px;" @click.stop.prevent='makeAPhoneCall(row.f_contact_phone)'>
214
+ </div>
215
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
216
+ 用户地址: {{row.f_address}}
217
+ </div>
218
+ <div v-show="row.f_remarks" class="col-sm-12 col-xs-12 col-md-12 padd-div-shu">
219
+ 备注信息: {{row.f_remarks}}
220
+ </div>
221
+ <div class="col-sm-12 col-xs-12 col-md-12 padd-div-shu" v-if="row.failure">
222
+ <failure-show :value='row.failure'>
223
+ </failure-show>
224
+ </div>
225
+ </div>
226
+ </div>
227
+ <div class="col-sm-12 col-xs-12 col-md-12">
228
+ <button type="button" name="button" class="btn btn-primary btn-sm" style="float: right;margin-right: 5px;" @click="selected(row)">下派</button>
229
+ <button type="button" name="button" class="btn btn-primary btn-sm" style="float: right;margin-right: 5px;" @click="returnOrder(row)">退回</button>
230
+ <button type="button" name="button" class="btn btn-primary btn-sm" style="float: right;margin-right: 5px;" @click="caseend(row)">结案</button>
231
+ </div>
232
+ </div>
233
+ </div>
234
+ </div>
235
+ <div style="height:auto;width: 100%;text-align: center">
236
+ <a v-if="!listData.isEnd" @click="showMore()">展开更多......</a>
237
+ <span v-if="listData.isEnd">到底了......</span>
238
+ </div>
239
+ </div>
240
+ <modal :show.sync="return_modal" v-ref:modalCase backdrop="false">
241
+ <header slot="modal-header" class="modal-header">
242
+ 工单退回
243
+ </header>
244
+ <article slot="modal-body" class="modal-body">
245
+ <div class="col-sm-12 form-group">
246
+ <label class="control-label col-sm-2">退回备注</label>
247
+ <div class="col-sm-9">
248
+ <input class="form-control" type="text" v-model="return_modal_data.serviceacitivity[0].f_site_back_reason"/>
249
+ </div>
250
+ </div>
251
+ </article>
252
+ <footer slot="modal-footer" class="modal-footer">
253
+ <button type="button" class="btn btn-success" @click='returnOrderBack()'>确定</button>
254
+ <button type="button" class="btn btn-success" @click='returnModalClose()'>关闭</button>
255
+ </footer>
256
+ </modal>
257
+ <modal :show.sync="sendshow" v-ref:modal :backdrop="false">
258
+ <div slot="modal-header" class="modal-header">
259
+ <h4 class="modal-title">
260
+ 派发工单
261
+ </h4>
262
+ </div>
263
+ <div slot="modal-body" class="modal-body">
264
+ <div class="row" style="margin-top: 6px">
265
+ <label class="col-xs-4 col-md-4 control-label font text-left">派单方式</label>
266
+ <div class="col-xs-8">
267
+ <v-select :value-single="true" :value.sync="f_handlingtype" v-model="f_handlingtype"
268
+ :options='repairerType' placeholder='请选择派单方式'
269
+ close-on-select></v-select>
270
+ </div>
271
+ </div>
272
+ <div class="row" style="margin-top: 6px" v-if="f_handlingtype == '转维修员'">
273
+ <label class="col-xs-4 col-md-4 control-label font text-left">维修员</label>
274
+ <div class="col-xs-8">
275
+ <v-select :value="sendselected.serviceacitivity[0].f_reciever" :value-single="true"
276
+ :options='repairers' placeholder='请选择维修员'
277
+ close-on-select v-on:change="repiarmancg"></v-select>
278
+ </div>
279
+ </div>
280
+ <div class="row" style="margin-top: 6px" v-if="f_handlingtype == '转站点'">
281
+ <label class="col-xs-4 col-md-4 control-label font text-left">站点</label>
282
+ <input style="width: 60%" type="text" v-show="false" v-model="sendselected.serviceacitivity[0].f_reciever">
283
+ <right-tree islist :userid="userid" :source="source" v-on:re-res="reres" :textContent="选择站点管理员">
284
+
285
+ </right-tree>
286
+ </div>
287
+ <div class="row" style="margin-top: 6px">
288
+ <label class="control-label font text-left col-md-4 col-xs-4">备注</label>
289
+ <div class="col-xs-8 col-md-8">
290
+ <input type="text" v-model="sendselected.f_advice"/>
291
+ </div>
292
+ </div>
293
+ </div>
294
+ <div slot="modal-footer" class="modal-footer">
295
+ <button type="button" class="btn btn-default" @click="worksend()">确定</button>
296
+ <button type="button" class="btn btn-default" @click="undo()">取消</button>
297
+ </div>
298
+ </modal>
299
+ <modal :show.sync="caseshow" v-ref:modalCase backdrop="false">
300
+ <header slot="modal-header" class="modal-header">
301
+ 工单结案
302
+ </header>
303
+ <article slot="modal-body" class="modal-body">
304
+ <div class="col-sm-12 form-group">
305
+ <label class="control-label col-sm-2">结案备注</label>
306
+ <div class="col-sm-9">
307
+ <input class="form-control" type="text" v-model="f_caseremarks"/>
308
+ </div>
309
+ </div>
310
+ </article>
311
+ <footer slot="modal-footer" class="modal-footer">
312
+ <button type="button" class="btn btn-success" @click='caseok'>确定</button>
313
+ <button type="button" class="btn btn-success" @click='caseclose'>关闭</button>
314
+ </footer>
315
+ </modal>
316
+ </div>
317
+ </div>
318
+ </template>
319
+ <script>
320
+ import FailureShow from '../../../components/pc/FailureShow'
321
+ import { HttpResetClass } from 'vue-client'
322
+ import Vue from 'vue'
323
+ import * as Util from "../../../components/Util";
324
+
325
+ export default{
326
+ title: '移动端站点派发',
327
+ data () {
328
+ return {
329
+ return_modal:false,
330
+ return_modal_data:{},
331
+ userid: Vue.user.id,
332
+ source:
333
+ 'dep=this.getParentByType($organization$).getSpecialResByType($department$),' +
334
+ 'tool.getFullTree(dep.where(row.hasSpecialRole($派单员$)))',
335
+ repairName: '',
336
+ f_handlingtype:'转维修员',
337
+ baoxiuType:this.$appdata.getParam('报修类型'),
338
+ repairerType:[{label: '转维修员', value: '转维修员'}, {label: '转站点', value: '转站点'}],
339
+ userType:[{label: '全部', value: ''},{label: '民用', value: '民用'}, {label: '非民用', value: '非民用'}],
340
+ repairerStands:[],
341
+ f_caseremarks:'',
342
+ selectone:'',
343
+ rows: [],
344
+ sliceArea :[],
345
+ username:'',
346
+ address:'',
347
+ f_meetunit: '',
348
+ f_slice_area_id: '',
349
+ f_user_type: '',
350
+ f_finish_date_start: '',
351
+ f_finish_date_end: '',
352
+ f_over_start: '',
353
+ f_over_end: '',
354
+ f_failure:'',
355
+ sendshow:false,
356
+ repairers: [],
357
+ areas: [],
358
+ caseshow:false,
359
+ sendselected:{
360
+ serviceacitivity:[
361
+ {
362
+ f_service_acitivity_type: '派单',
363
+ f_reciever:''
364
+ }
365
+ ],
366
+ f_advice:''
367
+ },
368
+ number:0,
369
+ listData: {
370
+ list: [],
371
+ isEnd: true,
372
+ index: 0
373
+ }
374
+ }
375
+ },
376
+ props: {
377
+ },
378
+ methods: {
379
+ gerzone(){
380
+ new HttpResetClass().load('POST',`/api/af-safecheck/sql/safe_singleTable_OrderBy`, {data: {
381
+ items: 'name,id',
382
+ tablename: 't_zone',
383
+ condition: `f_orgid='${ Vue.user.orgid}'`,
384
+ orderitem: 'id'
385
+ }}, {resolveMsg: null, rejectMsg: null}).then((res) => {
386
+ this.sliceArea=[]
387
+ this.sliceArea.push({
388
+ label:'全部',
389
+ value:''
390
+ })
391
+ res.data.forEach(ress=>{
392
+ this.sliceArea.push({
393
+ label:ress.name,
394
+ value:ress.id
395
+ })
396
+ })
397
+ })
398
+ },
399
+ returnOrderBack(){
400
+ new HttpResetClass().load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/logic/siteBack`, {model: this.return_modal_data, loginUser: {name: Vue.user.name, ename: Vue.user.ename, id: Vue.user.id}}).then((res) => {
401
+ this.returnModalClose()
402
+ this.$showMessage(`退回成功`)
403
+ })
404
+ },
405
+ returnModalClose(){
406
+ this.return_modal_data = {}
407
+ this.return_modal = false
408
+ },
409
+ returnOrder(row){
410
+ row.serviceacitivity = [
411
+ {
412
+ "f_service_acitivity_type": "打回",
413
+ "f_site_back_reason": ""
414
+ }
415
+ ]
416
+ this.return_modal_data = row
417
+ this.return_modal = true
418
+ },
419
+ reres(val){
420
+ if(val.res == undefined || val.res[0] == undefined || val.res[0] == ''){
421
+ return
422
+ }
423
+ this.sendselected.serviceacitivity[0].f_meetunit = val.res[0]
424
+ this.sendselected.f_meetunit = val.res[0]
425
+ this.sendselected.f_filiale_id = val.orgobj[0].parentid
426
+ this.sendselected.f_filiale = val.orgobj[0].parentname
427
+ this.sendselected.f_outlets = val.res[0]
428
+ this.sendselected.serviceacitivity[0].f_reciever = val.resids[0]
429
+ },
430
+ reres2(val){
431
+ if(val.res == undefined || val.res[0] == undefined || val.res[0] == ''){
432
+ return
433
+ }
434
+ this.f_meetunit=val.res[0]
435
+ },
436
+ caseend(val){
437
+ this.selectone = val
438
+ this.caseshow = true
439
+ },
440
+ // 结案确认
441
+ caseok(){
442
+ // 工单结案操作
443
+ let data = {model: this.selectone, loginUser: {name: Vue.user.name, ename: Vue.user.ename},f_caseremarks:this.f_caseremarks}
444
+ let HttpReset1 = new HttpResetClass()
445
+ // 将数据发送给业务逻辑
446
+ HttpReset1.load('POST',`${this.$androidUtil.getProxyUrl()}/af-telephone/rs/logic/serviceCase`, data).then((res) => {
447
+ this.f_caseremarks = ''
448
+ this.caseshow = false
449
+ this.ifsearch()
450
+ })
451
+ },
452
+ // 结案返回
453
+ caseclose(){
454
+ this.f_caseremarks = ''
455
+ this.caseshow = false
456
+ this.selectone = ''
457
+ },
458
+ worksend() {
459
+ if (!this.sendselected.serviceacitivity[0].f_reciever) {
460
+ this.$showMessage(`请选择接单人员!`, ['confirm'])
461
+ return
462
+ }
463
+ let data = {
464
+ model: this.sendselected,
465
+ loginUser: {name: Vue.user.name, ename: Vue.user.ename},
466
+ f_handlingtype: this.f_handlingtype
467
+ }
468
+ let HttpReset = new HttpResetClass()
469
+ // 将数据发送给业务逻辑
470
+ HttpReset.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/logic/siteSend`, data).then((res) => {
471
+ if (res.data.code == 300) {
472
+ this.sendshow = false
473
+ this.sendselected = {
474
+ serviceacitivity: [
475
+ {
476
+ f_service_acitivity_type: '派单',
477
+ f_reciever: ''
478
+ }
479
+ ],
480
+ f_advice: ''
481
+ }
482
+ this.ifsearch()
483
+ this.$showMessage(`该单已被派发!`, ['confirm'])
484
+ return
485
+ } else {
486
+ this.sendshow = false
487
+ this.sendselected = {
488
+ serviceacitivity: [
489
+ {
490
+ f_service_acitivity_type: '派单',
491
+ f_reciever: ''
492
+ }
493
+ ],
494
+ f_advice: ''
495
+ }
496
+ this.ifsearch()
497
+ this.$showMessage(`派发成功!`, ['confirm'])
498
+ return
499
+ }
500
+ })
501
+ },
502
+ repiarmancg(val){
503
+ this.sendselected.serviceacitivity[0].f_reciever = val
504
+ },
505
+ // 获取维修员
506
+ getEmp () {
507
+ // 获取接单人数组
508
+ let http = new HttpResetClass()
509
+ var val = {source: `this.getParentByType($organization$).getChildByName($维修员$).getUsers()`, userid: `${Vue.user.id}`}
510
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/rs/search`, {data: val}, {resolveMsg: null, rejectMsg: null}).then((res) => {
511
+ res.data.forEach((item) => {
512
+ this.repairers.push({label: `${item.name}`, value: item.name})
513
+ })
514
+ })
515
+ },
516
+ ifsearch(){
517
+ this.listData.list = []
518
+ this.listData.index = 0
519
+ this.listData.isEnd = true
520
+ var condition = `1 = 1 and tswo.f_workorder_type = '报修单'`
521
+ if(this.username != ''){
522
+ condition += " and tswo.f_user_name like '%" + this.username + "%'"
523
+ }
524
+ if(this.address != ''){
525
+ condition += " and tswo.f_address like '%" + this.address + "%'"
526
+ }
527
+ if(this.f_meetunit != ''){
528
+ condition += `and ts.f_meetunit = '${this.f_meetunit}' `
529
+ }
530
+ if(this.f_repairtype != ''){
531
+ condition += `and tswo.f_repairtype = '${this.f_repairtype}' `
532
+ }
533
+ if(this.f_user_type != ''){
534
+ condition += `and tswo.f_user_type = '${this.f_user_type}' `
535
+ }
536
+ if(this.f_finish_date_start != ''){
537
+ condition += `and tswo.f_finish_date >= '${this.f_finish_date_start}' `
538
+ }
539
+ if(this.f_finish_date_end != ''){
540
+ condition += `and tswo.f_finish_date <= '${this.f_finish_date_end}' `
541
+ }
542
+ if(this.f_slice_area_id != ''){
543
+ condition += `and tua.f_slice_area_id = '${this.f_slice_area_id}' `
544
+ }
545
+ if(this.f_failure != ''){
546
+ condition += `and tswo.failure_str like '%${this.f_failure}%' `
547
+ }
548
+ // 逾期天数筛选(SQL Server 语法)
549
+ if (this.f_over_start !== '' || this.f_over_end !== '') {
550
+ const dateDiffExpr = `DATEDIFF(DAY, CONVERT(DATE, tswo.f_finish_date), CONVERT(DATE, GETDATE()))`;
551
+ if (this.f_over_start !== '' && this.f_over_end !== '') {
552
+ // 区间筛选
553
+ condition += ` AND ${dateDiffExpr} BETWEEN ${this.f_over_start} AND ${this.f_over_end}`;
554
+ } else if (this.f_over_start !== '') {
555
+ // 最小逾期天数
556
+ condition += ` AND ${dateDiffExpr} >= ${this.f_over_start}`;
557
+ } else if (this.f_over_end !== '') {
558
+ // 最大逾期天数
559
+ condition += ` AND ${dateDiffExpr} <= ${this.f_over_end}`;
560
+ }
561
+ }
562
+ var val = {
563
+ condition:{
564
+ condition:condition,
565
+ sign:'1 = 1'
566
+ },
567
+ userid:Vue.user.name
568
+ }
569
+ let http = new HttpResetClass()
570
+ http.load('POST', `${this.$androidUtil.getProxyUrl()}/af-telephone/rs/sql/operatorServiceNew`, {data: val}, {resolveMsg: null, rejectMsg: null}).then((res) => {
571
+ this.rows = res.data
572
+ this.showMore()
573
+ })
574
+ },
575
+ selected (row) {
576
+ this.sendselected = Object.assign({}, this.sendselected, row)
577
+ this.sendshow =true
578
+ },
579
+ undo(){
580
+ this.sendselected ={
581
+ serviceacitivity:[
582
+ {
583
+ f_service_acitivity_type: '派单',
584
+ f_reciever:''
585
+ }
586
+ ],
587
+ f_advice:''
588
+ }
589
+ this.sendshow = false
590
+ this.ifsearch()
591
+ },
592
+ makeAPhoneCall(phoneNumber) {
593
+ this.$androidUtil.makeAPhoneCall(phoneNumber)
594
+ },
595
+ showMore() {
596
+ if (!this.rows) {
597
+ return
598
+ }
599
+ let endIndex = this.listData.index + 10
600
+ if (endIndex > this.rows.length) {
601
+ endIndex = this.rows.length
602
+ }
603
+ for (; this.listData.index < endIndex; this.listData.index++) {
604
+ this.listData.list.push(this.rows[this.listData.index])
605
+ }
606
+ if(this.listData.index == this.rows.length){
607
+ this.listData.isEnd = true
608
+ }else {
609
+ this.listData.isEnd = false
610
+ }
611
+ }
612
+ },
613
+ ready () {
614
+ this.gerzone()
615
+ this.getEmp()
616
+ this.ifsearch()
617
+ },
618
+ components: {
619
+ FailureShow,
620
+ 'failure-show': FailureShow
621
+ }
622
+ }
623
+ </script>
624
+ <style scoped>
625
+ /* 在 <style> 部分添加 */
626
+ .form-control-sm {
627
+ padding: 0.25rem 0.5rem;
628
+ font-size: 0.875rem;
629
+ }
630
+
631
+ .input-group-addon {
632
+ padding: 0.375rem 0.75rem;
633
+ font-weight: 500;
634
+ color: #666;
635
+ }
636
+
637
+ @media (max-width: 768px) {
638
+ .app-row .form-control {
639
+ width: 100%;
640
+ margin-bottom: 0.5rem;
641
+ }
642
+ }
643
+ .searBtn {
644
+ background: #FFFFFF;
645
+ color: #0096fb;
646
+ border: 1px solid #0096fb;
647
+ border-radius: 5px;
648
+ padding: 8px;
649
+ text-align: center;
650
+ font-size: 1.2em;
651
+ z-index: 10;
652
+ opacity:0.5;
653
+ bottom: 50px;
654
+ margin-top: -10px;
655
+ height: 40px;
656
+ }
657
+ .bg {
658
+ background-color: #499edf;
659
+ height: 1px;
660
+ border: 0;
661
+ }
662
+ .app-row {
663
+ background-color: white;
664
+ padding: 10px 10px 0 10px;
665
+ border-bottom: 1px solid rgba(235, 235, 235, 0.5);
666
+ }
667
+ .search_input {
668
+ border: 0;
669
+ outline: none;
670
+ }
671
+ .font{
672
+ font: 15px PingFang-SC-Medium;
673
+ color: #666666;
674
+ }
675
+ .input-font{
676
+ font: 15px PingFang-SC-Medium;
677
+ color: #333333;
678
+ }
679
+ .btn-font{
680
+ font:600 16px PingFang-SC-Bold;
681
+ color: #499EDF;
682
+ }
683
+ .btn-color{
684
+ background-color: #FFFFFF;
685
+ border-radius: 10px ;
686
+ border: 1px solid #499EDF;
687
+ }
688
+ .panel-blue-border {
689
+ border: 1px solid #499edf;
690
+ border-radius: 5px;
691
+ }
692
+ </style>