telephone-clients 4.0.0-1-55 → 4.0.0-1-56

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.
@@ -0,0 +1,423 @@
1
+ <template>
2
+ <div class="select-overspread repair-bg" style="padding-bottom: 5px;overflow: auto;background-color: white;">
3
+ <div class="bq-parent">
4
+ <blockquote style="color: #499edf;border-left-color: #499edf;font-size: 16px">
5
+ <p>创建维修工单</p>
6
+ </blockquote>
7
+ </div>
8
+ <div class="panel panel-default auto">
9
+ <div class="panel-body" style="padding-top:3px;">
10
+ <div class="auto repair-info-content compatible" style="padding: 0px;margin-top: 10px;margin-bottom: 5px;">
11
+ <div class="row auto" style="margin-left: -30px;">
12
+ <div class="{{shuclass}}" style="margin-top: 20px">
13
+ <label class="mylabel">用户名称</label>
14
+ <input v-model="model.user_name" class="myinput" type="text">
15
+ </div>
16
+ <div class="{{shuclass}}">
17
+ <label class="mylabel">联系电话</label>
18
+ <input v-model="model.link_telphone" class="myinput" type="text">
19
+ </div>
20
+ <div class="{{shuclass}}">
21
+ <label class="mylabel">卡号</label>
22
+ <input v-model="model.card_id" class="myinput" type="text">
23
+ </div>
24
+ <!-- <div class="{{shuclass}}">-->
25
+ <!-- <label class="mylabel">街道</label>-->
26
+ <!-- <input v-model="model.street" class="myinput" type="text">-->
27
+ <!-- </div>-->
28
+ <div class="{{shuclass}}">
29
+ <label class="mylabel">小区名称</label>
30
+ <input v-model="model.village_name" class="myinput" type="text">
31
+ </div>
32
+ <div class="{{shuclass}}">
33
+ <label class="mylabel">详细地址</label>
34
+ <input v-model="model.user_address" class="myinput" type="text">
35
+ </div>
36
+ <div class="{{shuclass}}">
37
+ <label class="mylabel">楼号</label>
38
+ <input v-model="model.cus_dom" class="myinput" type="text">
39
+ </div>
40
+ <div class="{{shuclass}}">
41
+ <label class="mylabel">单元号</label>
42
+ <input v-model="model.cus_dy" class="myinput" type="text">
43
+ </div>
44
+ <div class="{{shuclass}}">
45
+ <label class="mylabel">楼层</label>
46
+ <input v-model="model.cus_floor" class="myinput" type="text">
47
+ </div>
48
+ <div class="{{shuclass}}">
49
+ <label class="mylabel">房号</label>
50
+ <input v-model="model.cus_room" class="myinput" type="text">
51
+ </div>
52
+ <div class="{{shuclass}}">
53
+ <label class="mylabel">用户性质</label>
54
+ <v-select v-model="model.user_type" :close-on-select="true" :options='userTypes' :width="'100%'"
55
+ :value-single="true" :value.sync="model.user_type" class="custom-select">
56
+ </v-select>
57
+ </div>
58
+ <div class="{{shuclass}}" v-if="model.user_type">
59
+ <label class="mylabel">故障位置</label>
60
+ <v-select v-model="model.slip_spot" :close-on-select="true" :options='slipSpots'
61
+ :value-single="true" :value.sync="model.slip_spot">
62
+ </v-select>
63
+ </div>
64
+ <div class="{{shuclass}}" v-if="model.slip_spot">
65
+ <label class="mylabel">故障设备</label>
66
+ <v-select v-model="model.slip_equipment" :close-on-select="true" :options='equipments'
67
+ :value-single="true" :value.sync="model.slip_equipment">
68
+ </v-select>
69
+ </div>
70
+
71
+ <!-- <div class="{{shuclass}}">-->
72
+ <!-- <label class="mylabel">处置部门</label>-->
73
+ <!-- <v-select v-model="model.space_depname" :close-on-select="true" :options='space_depnames'-->
74
+ <!-- :value-single="true" :value.sync="model.space_depname">-->
75
+ <!-- </v-select>-->
76
+ <!-- </div>-->
77
+ <div class="{{shuclass}}">
78
+ <label class="mylabel">工单内容</label>
79
+ <input v-model="model.repair_content" class="myinput" type="text">
80
+ </div>
81
+ <!-- <div class="{{shuclass}}">-->
82
+ <!-- <label class="mylabel">派单说明</label>-->
83
+ <!-- <input v-model="model.payout_ins" class="myinput" type="text">-->
84
+ <!-- </div>-->
85
+ <div class="{{shuclass}}">
86
+ <label class="mylabel">备注</label>
87
+ <input v-model="model.mark" class="myinput" type="text">
88
+ </div>
89
+ </div>
90
+ </div>
91
+ <div style="display: flex;justify-content: center;align-items: center;margin-top:15px;">
92
+ <button :disabled="isSubmitting" class="btn btn-primary"
93
+ style="background-color:#499edf;width: 30%;height:30px;margin-right: 20px;"
94
+ type="button"
95
+ @click="submitForm">
96
+ {{ isSubmitting ? '提交中...' : '提交' }}
97
+ </button>
98
+ <button :disabled="isSubmitting" class="btn btn-default"
99
+ style="width: 30%;height:30px;"
100
+ type="button"
101
+ @click="resetForm">重置
102
+ </button>
103
+ </div>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ </template>
108
+
109
+ <script>
110
+ import Vue from 'vue'
111
+ import {HttpResetClass} from "vue-client";
112
+ import * as Util from "../Util";
113
+
114
+ export default {
115
+ title: '创建维修工单',
116
+ data() {
117
+ return {
118
+ shuclass: 'col-xs-12 col-sm-12 col-md-12 form-group form-input-group',
119
+ isSubmitting: false, // 添加提交状态控制变量
120
+ model: {
121
+ repair_code: '',
122
+ call_telphone: '',
123
+ user_type: '民用',
124
+ slip_spot: '',
125
+ slip_equipment: '',
126
+ repair_content: '',
127
+ user_address: '',
128
+ city: '',
129
+ area: '',
130
+ street: '',
131
+ village_name: '',
132
+ cus_dom: '',
133
+ cus_dy: '',
134
+ cus_floor: '',
135
+ cus_room: '',
136
+ user_name: '',
137
+ link_telphone: '',
138
+ mark: '',
139
+ card_id: '',
140
+ take_limit: '1',
141
+ to_examine: '未审核',
142
+ payout_state: '下派',
143
+ f_source: '平板',
144
+ payout_date: Util.toStandardTimeString(),
145
+ payout_people: Vue.user.ename.substring(0,3),
146
+ repair_date: null,
147
+ repair_people: '',
148
+ back_date: null,
149
+ back_people: '',
150
+ is_wrong: '否',
151
+ wrong_send: null,
152
+ wrong_operate_code: '',
153
+ sec_dep: Vue.user.parent.selfid,
154
+ sec_depname: Vue.user.parent.name,
155
+ space_dep: Vue.user.parent.stationdepid,
156
+ space_depname: '客服',
157
+ sendpad: Vue.user.ename,
158
+ printed: '否',
159
+ payout_ins: ''
160
+ },
161
+ cities: [],
162
+ areas: [],
163
+ streets: [],
164
+ villages: [],
165
+ sites: [],
166
+ departments: []
167
+ }
168
+ },
169
+ watch: {
170
+ 'model.card_id'(newValue) {
171
+ if (newValue) {
172
+ const filteredValue = newValue.replace(/[^\d]/g, '');
173
+ if (filteredValue.length > 10) {
174
+ this.model.card_id = filteredValue.slice(0, 10);
175
+ this.$showMessage('卡号长度不能超过10位');
176
+ } else {
177
+ this.model.card_id = filteredValue;
178
+ }
179
+ }
180
+ }
181
+ },
182
+ methods: {
183
+ // 生成工单编号
184
+ generateRepairCode() {
185
+ const now = new Date();
186
+ const year = now.getFullYear().toString();
187
+ const month = (now.getMonth() + 1).toString().padStart(2, '0');
188
+ const day = now.getDate().toString().padStart(2, '0');
189
+ this.model.repair_code = `Z${year}${month}${day}`
190
+ },
191
+
192
+ // 初始化数据
193
+ initData() {
194
+ // 生成工单编号
195
+ this.generateRepairCode();
196
+
197
+ // 设置默认值
198
+ this.model.payout_people = Vue.user.ename.substring(0,3)
199
+
200
+ // 设置派单信息默认值
201
+ this.model.sec_dep = Vue.user.parent.selfid
202
+ this.model.sec_depname = Vue.user.parent.name
203
+
204
+ this.model.space_dep = Vue.user.parent.stationdepid
205
+ this.model.space_depname = '客服'
206
+ this.model.sendpad = Vue.user.ename
207
+ this.model.payout_state = '下派'
208
+ },
209
+
210
+ // 提交表单
211
+ submitForm() {
212
+ // 表单验证
213
+ if (!this.validateForm()) {
214
+ return;
215
+ }
216
+ // 设置按钮为提交中状态
217
+ this.isSubmitting = true;
218
+ // 设置派单时间
219
+ this.model.payout_date = Util.toStandardTimeString()
220
+ new HttpResetClass().load('post', `${this.$androidUtil.getProxyUrl()}/rs/logic/selfBuildCreated`, {data: this.model}, {
221
+ resolveMsg: null,
222
+ rejectMsg: null
223
+ }).then(result => {
224
+ this.$showMessage('工单创建成功')
225
+ this.resetForm()
226
+ this.isSubmitting = false;
227
+ }).catch((error) => {
228
+ // 发生错误,恢复按钮状态
229
+ this.isSubmitting = false;
230
+ this.$showMessage('工单创建失败');
231
+ console.error('提交工单时发生错误:', error);
232
+ })
233
+ },
234
+
235
+ // 表单验证
236
+ validateForm() {
237
+ if (!this.model.user_name) {
238
+ this.$showMessage('请输入用户名称');
239
+ return false;
240
+ }
241
+
242
+ if (!this.model.link_telphone) {
243
+ this.$showMessage('请输入联系电话');
244
+ return false;
245
+ }
246
+
247
+ if (!this.model.card_id) {
248
+ this.$showMessage('请输入卡号');
249
+ return false;
250
+ }
251
+
252
+ if (this.model.card_id) {
253
+ if (!/^\d+$/.test(this.model.card_id)) {
254
+ this.$showMessage('卡号必须是纯数字');
255
+ return false;
256
+ }
257
+ if (this.model.card_id.length > 10) {
258
+ this.$showMessage('卡号长度不能超过10位');
259
+ return false;
260
+ }
261
+ }
262
+
263
+ if (!this.model.user_address) {
264
+ this.$showMessage('请输入地址');
265
+ return false;
266
+ }
267
+
268
+ // if (!this.model.space_depname) {
269
+ // this.$showMessage('请选择处置部门');
270
+ // return false;
271
+ // }
272
+
273
+ if (!this.model.repair_content) {
274
+ this.$showMessage('请输入工单内容');
275
+ return false;
276
+ }
277
+
278
+ return true;
279
+ },
280
+
281
+ // 重置表单
282
+ resetForm() {
283
+ this.model = {
284
+ repair_code: '',
285
+ call_telphone: '',
286
+ user_type: '民用',
287
+ slip_spot: '',
288
+ slip_equipment: '',
289
+ repair_content: '',
290
+ user_address: '',
291
+ city: '',
292
+ area: '',
293
+ street: '',
294
+ village_name: '',
295
+ cus_dom: '',
296
+ cus_dy: '',
297
+ cus_floor: '',
298
+ cus_room: '',
299
+ user_name: '',
300
+ link_telphone: '',
301
+ mark: '',
302
+ card_id: '',
303
+ take_limit: '1',
304
+ payout_state: '下派',
305
+ f_source: '平板',
306
+ to_examine: '未审核',
307
+ payout_date: Util.toStandardTimeString(),
308
+ payout_people: Vue.user.ename.substring(0,3),
309
+ repair_date: null,
310
+ repair_people: '',
311
+ back_date: null,
312
+ back_people: '',
313
+ is_wrong: '否',
314
+ wrong_send: null,
315
+ wrong_operate_code: '',
316
+ sec_dep: Vue.user.parent.selfid,
317
+ sec_depname: Vue.user.parent.name,
318
+ space_dep: Vue.user.parent.stationdepid,
319
+ space_depname: '客服',
320
+ sendpad: Vue.user.ename,
321
+ printed: '否',
322
+ payout_ins: ''
323
+ }
324
+ this.generateRepairCode()
325
+ }
326
+ },
327
+ computed: {
328
+ userTypes() {
329
+ return [
330
+ ...this.$appdata.getParam('用户性质') || []
331
+ ]
332
+ },
333
+ slipSpots() {
334
+ return [
335
+ ...this.$appdata.getParam('故障位置') || []
336
+ ]
337
+ },
338
+ equipments() {
339
+ return [
340
+ ...this.$appdata.getParam('故障设备') || []
341
+ ]
342
+ },
343
+ // space_depnames() {
344
+ // return [
345
+ // ...this.$appdata.getParam('处置部门') || []
346
+ // ]
347
+ // },
348
+ },
349
+ ready() {
350
+ this.initData();
351
+ }
352
+ }
353
+ </script>
354
+
355
+ <style scoped>
356
+ .form-input-group label {
357
+ text-align: justify !important;
358
+ margin-left: 20px;
359
+ margin-right: -5px;
360
+ }
361
+
362
+ .myinput {
363
+ height: 40px;
364
+ width: 100%;
365
+ }
366
+
367
+ /* 添加v-select自定义样式 */
368
+ .custom-select {
369
+ height: 40px;
370
+ width: 100%;
371
+ }
372
+
373
+ /* 调整v-select内部样式 */
374
+ .custom-select >>> .dropdown-toggle {
375
+ height: 40px;
376
+ border-radius: 4px;
377
+ border: 1px solid #ccc;
378
+ }
379
+
380
+ /* 确保v-select内容垂直居中 */
381
+ .custom-select >>> .selected-tag {
382
+ display: flex;
383
+ align-items: center;
384
+ height: 38px;
385
+ }
386
+
387
+ .btn-group > button {
388
+ height: 40px !important;
389
+ }
390
+
391
+ .btn-group > button .btn-content {
392
+ font-size: 16px;
393
+ }
394
+
395
+ .mylabel {
396
+ font-size: 16px;
397
+ padding-top: 10px;
398
+ margin-right: 14px;
399
+ }
400
+
401
+ .app-botton {
402
+ position: fixed;
403
+ background: #87b2dd;
404
+ color: #FFF;
405
+ padding: 8px;
406
+ text-align: center;
407
+ font-size: 1.2em;
408
+ z-index: 10;
409
+ opacity: 0.5;
410
+ bottom: 50px;
411
+ margin-top: -10px;
412
+ height: 40px;
413
+ }
414
+
415
+ .section-title {
416
+ font-size: 16px;
417
+ font-weight: bold;
418
+ margin: 15px 0 10px 0;
419
+ padding-bottom: 5px;
420
+ border-bottom: 1px solid #eee;
421
+ color: #499edf;
422
+ }
423
+ </style>