apply-clients 3.4.91 → 3.4.93

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 (44) hide show
  1. package/build/dev-server.js +133 -133
  2. package/package.json +117 -117
  3. package/src/App.vue +26 -21
  4. package/src/components/android/Ignition/VentilationIgnition.vue +312 -312
  5. package/src/components/android/Ignition/VentilationIgnitionHandle.vue +353 -353
  6. package/src/components/product/ApplyCharge/ApplyChargeList.vue +476 -476
  7. package/src/components/product/Function/InstallInfoSelect.vue +326 -326
  8. package/src/components/product/Ignition/IgnitionListManage.vue +420 -420
  9. package/src/components/product/Material/MaterialDetailed.vue +268 -268
  10. package/src/components/product/Material/Materiallist.vue +74 -74
  11. package/src/components/product/Material/Materialmanger.vue +58 -58
  12. package/src/components/product/Process/ExplorationSelect.vue +491 -491
  13. package/src/components/product/Process/Processes/addressAndUserinfoManagement.vue +203 -203
  14. package/src/components/product/Process/ShowBackReason.vue +40 -40
  15. package/src/components/product/Stop/StopApplyList.vue +278 -278
  16. package/src/components/product/Supervisory/SupervisoryControl.vue +140 -140
  17. package/src/filiale/hongda/pc/printChargepc.vue +114 -114
  18. package/src/filiale/hongda/pc/printactivatecard.vue +151 -151
  19. package/src/filiale/linzhou/pc/ApplyChargeList.vue +486 -486
  20. package/src/filiale/linzhou/pc/ServiceControl.vue +1968 -1968
  21. package/src/filiale/linzhou/pc/devicesManagement.vue +494 -494
  22. package/src/filiale/linzhou/pc.js +10 -10
  23. package/src/filiale/qianneng/android/AppAddMaterialScience.vue +477 -477
  24. package/src/filiale/qianneng/android/AppExplorationUser.vue +447 -447
  25. package/src/filiale/qianneng/android/AppServiceControl.vue +1608 -1608
  26. package/src/filiale/qianneng/android/AppServiceView.vue +761 -761
  27. package/src/filiale/qianneng/android/AppSign.vue +152 -152
  28. package/src/filiale/qianneng/android/AppTakePic.vue +140 -140
  29. package/src/filiale/qianneng/android.js +12 -12
  30. package/src/filiale/qianneng/pc/ApplyUpload.vue +290 -290
  31. package/src/filiale/qianneng/pc/Applybatchdispatch.vue +685 -685
  32. package/src/filiale/qianneng/pc/ExplorationUser.vue +189 -189
  33. package/src/filiale/qianneng/pc/InstallationDetails.vue +561 -561
  34. package/src/filiale/qianneng/pc/ServiceView.vue +1118 -1121
  35. package/src/filiale/qianneng/pc/SupervisoryList.vue +344 -344
  36. package/src/filiale/qianneng/pc/SupervisoryhCart.vue +127 -127
  37. package/src/filiale/qianneng/pc/addMaterialScience.vue +464 -464
  38. package/src/filiale/qianneng/pc/addressAndUserinfoManagement.vue +389 -389
  39. package/src/filiale/qianneng/pc/devicesManagement.vue +484 -484
  40. package/src/filiale/qianneng/pc/printactivatecard.vue +295 -295
  41. package/src/filiale/qianneng/pc.js +26 -26
  42. package/src/filiale/yangchunboneng/pc/ApplyChargeList.vue +516 -0
  43. package/src/filiale/yangchunboneng/pc.js +13 -12
  44. package/src/main.js +23 -23
@@ -1,1121 +1,1118 @@
1
- <template>
2
- <div class="select-overspread" style="background-color: #ffffff;padding: 20px;overflow: scroll">
3
- <work-busy :is-busy="showbusy"></work-busy>
4
- <validator name='v' @valid="$emit('valid')" @invalid="$emit('invalid')">
5
- <form class="form-horizontal">
6
- <div class="form-group">
7
- <div v-for="(index,item) in data.fields">
8
- <!--input-->
9
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
10
- v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device) && ( item.label != '证件号码')&&( item.label !== '身份证') && (item.label !== '客户电话')"
11
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
12
- <label :style="item.label_style ? item.label_style : ''"
13
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
14
- <div :style="item.value_style ? item.value_style:''"
15
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
16
- <input class="form-control input_view" style=""
17
- :type="item.type"
18
- v-model="data.fields[index].value"
19
- :placeholder="item.placeholder"
20
- :value="data.fields[index].value"
21
- :readonly="item.readonly"
22
- :disabled="item.disabled"
23
- @change="onchange(index)"
24
- @blur="onblur(index)"
25
- @input="oninput(index)"
26
- />
27
- </div>
28
- </div>
29
- <!--input-->
30
- <div :style="item.style ? item.style+';height: 40px; -bottom: 20px':'height: 40px;margin-bottom: 20px'"
31
- v-if="(data.f_credentials != '身份证' && item.label === '证件号码')"
32
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
33
- <label :style="item.label_style ? item.label_style : ''"
34
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
35
- <div :style="item.value_style ? item.value_style:''"
36
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
37
- <input class="form-control input_view" style=""
38
- :type="item.type"
39
- v-model="data.fields[index].value"
40
- :placeholder="item.placeholder"
41
- :value="data.fields[index].value"
42
- :readonly="item.readonly"
43
- :disabled="item.disabled"
44
- @change="onchange(index)"
45
- @blur="onblur(index)"
46
- @input="oninput(index)"
47
- />
48
- </div>
49
- </div>
50
- <!--身份证验证-->
51
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
52
- v-if="(item.label==='身份证') || (data.f_credentials === '身份证' && item.label === '证件号码')"
53
- :class="[$v.f_idnumber2.identityCardValid ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
54
- <label :style="item.label_style ? item.label_style : ''"
55
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
56
- <div :style="item.value_style ? item.value_style:''"
57
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
58
- <input class="form-control input_view" style=""
59
- :type="item.type"
60
- maxlength="18"
61
- v-model="data.fields[index].value"
62
- :placeholder="item.placeholder"
63
- :value="data.fields[index].value"
64
- v-validate:f_idnumber2='{identityCardValid: true}'
65
- :readonly="item.readonly"
66
- :disabled="item.disabled"
67
- @change="onchange(index)"
68
- @blur="onblur(index)"
69
- @input="oninput(index)"
70
- />
71
- </div>
72
- </div>
73
- <!--客户电话-->
74
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
75
- v-if="item.label === '客户电话'"
76
- :class="[$v.f_user_phone.minlength || $v.f_user_phone.maxlength ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
77
- <label :style="item.label_style ? item.label_style : ''"
78
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
79
- <div :style="item.value_style ? item.value_style:''"
80
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
81
- <input class="form-control input_view" style=""
82
- type="number"
83
- oninput="if(value.length > 11) value=value.slice(0,11)"
84
- v-validate:f_user_phone="{minlength: 7, maxlength: 11 }"
85
- v-model="data.fields[index].value"
86
- :placeholder="item.placeholder"
87
- :value="data.fields[index].value"
88
- onKeypress="return(/[\d\.]/.test(String.fromCharCode(event.keyCode)))"
89
- :readonly="item.readonly"
90
- :disabled="item.disabled"
91
- @change="onchange(index)"
92
- @blur="onblur(index)"
93
- @input="oninput(index)"
94
- />
95
- </div>
96
- </div>
97
- <!--时间datepicker-->
98
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
99
- v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)"
100
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped+' form-group':'col-sm-4 form-group']">
101
- <label
102
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label control-label-justify col-sm-6'">{{item.label}}</label>
103
- <div :style="item.value_style ? item.value_style:''"
104
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
105
- <datepicker
106
- @change="onchange(index)"
107
- @blur="onblur(index)"
108
- :placeholder="item.placeholder"
109
- :value.sync="data.fields[index].value"
110
- :format="item.format ? item.format : 'yyyy-MM-dd'"
111
- v-model="data.fields[index].value"
112
- :readonly="item.readonly"
113
- :disabled="item.disabled"
114
- :show-reset-button="reset">
115
- </datepicker>
116
- </div>
117
- </div>
118
- <!--textarea-->
119
- <div :style="item.style ? item.style+';margin-bottom: 20px':'margin-bottom: 20px'"
120
- v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)"
121
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-12 form-group']">
122
- <label :style="item.label_style ? item.label_style : ''"
123
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-3'">{{item.label}}</label>
124
- <div :style="item.value_style ? item.value_style:''"
125
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-10'">
126
- <textarea
127
- :readonly="item.readonly"
128
- :disabled="item.disabled"
129
- class="form-control input_view"
130
- style="width: 100%;height: 100%"
131
- :rows="item.rows"
132
- v-model="data.fields[index].value"
133
- :value="data.fields[index].value"
134
- @change="onchange(index)"
135
- @blur="onblur(index)"
136
- @input="oninput(index)"
137
- >
138
- </textarea>
139
- </div>
140
- </div>
141
- <!--select-->
142
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
143
- v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device) && !item.multiple"
144
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
145
- <label
146
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
147
- <div :style="item.value_style ? item.value_style:''"
148
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
149
- <input-select
150
- class="select select_list"
151
- @blur="onblur(index)"
152
- @change="onchange(index)"
153
- @select-search="selectSearch($arguments,index)"
154
- :readonly="item.readonly"
155
- :disable="item.disabled"
156
- :value.sync="data.fields[index].value"
157
- v-model="data.fields[index].value"
158
- :options='data.fields[index].options'
159
- :valueSingle="true"></input-select>
160
- </div>
161
- </div>
162
- <!--select 多选-->
163
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
164
- v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)&& item.multiple"
165
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
166
- <label
167
- :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
168
- <div :style="item.value_style ? item.value_style:''"
169
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
170
- <v-select
171
- width="100%"
172
- class="select select_list"
173
- @blur="onblur(index)"
174
- @change="onchange(index)"
175
- @select-search="selectSearch($arguments,index)"
176
- :readonly="item.readonly"
177
- :disable="item.disabled"
178
- :value.sync="data.fields[index].value"
179
- v-model="data.fields[index].value"
180
- :options='data.fields[index].options'
181
- :multiple="data.fields[index].multiple"
182
- :valueSingle="true"></v-select>
183
- </div>
184
- </div>
185
- <!--checkbox-->
186
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
187
- v-if="item.type==='checkbox' && !item.hidden && (item.device === 'pc' || !item.device)"
188
- :class="[item.required && item.value.length === 0 ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
189
- <label v-if="item.label"
190
- :class="item.label_bootstraped?item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
191
- <div :style="item.value_style ? item.value_style:''"
192
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
193
- <label class="checkbox-inline" v-for="(index2,row) in item.options">
194
- <input type="checkbox" class=""
195
- :readonly="data.fields[index].readonly"
196
- :disabled="data.fields[index].disabled"
197
- v-model="data.fields[index].value"
198
- :value="data.fields[index].options[index2].value"
199
- @change="onchange(index)"
200
- @blur="onblur(index)">
201
- {{row.label}}
202
- </label>
203
- </div>
204
- </div>
205
- <!--button-->
206
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
207
- v-if="item.type==='button'"
208
- :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
209
- <div :style="item.value_style ? item.value_style:''"
210
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
211
- <button class="button_search button_spacing" :style="item.button_styles" @click.prevent="printclick(index)" :hidden="item.hidden">
212
- {{ item.name }}
213
- </button>
214
- </div>
215
- </div>
216
- <!--换行符-->
217
- <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px;width: 100%':'height: 40px;margin-bottom: 20px;width: 100%'"
218
- v-if="item.type==='br'"
219
- :class="[item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
220
- <label v-if="item.label" style="font-size: 20px"
221
- :class="item.label_bootstraped?item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
222
- </div>
223
- </div>
224
- </div>
225
-
226
- <!-- onetomany -->
227
- <div class="" v-for="(index,item) in data.onetomany">
228
- <onetomany :selectdata="data" :onetomany="item" :index="index" v-if="item.device === 'pc' || !item.device"></onetomany>
229
- </div>
230
-
231
- <div v-for="(i,item) in data.components">
232
- <h3 v-if="item.device === 'pc'"><nbr >{{item.title}}</nbr></h3>
233
- <component v-if="item.device === 'pc' || !item.device" :is="item.name" :selectdata="data" :mark="item.mark"></component>
234
- </div>
235
-
236
- <!--自定义组件-->
237
- <slot>
238
- </slot>
239
- <!--公司等属性-->
240
- <div class="col-sm-12 form-group text-center" style="padding-top:8px">
241
- <div class="col-sm-3 form-group center-block">
242
- <label class="col-sm-5">所属公司:</label>
243
- <div class="col-sm-6" style="text-align: left">
244
- {{model.orgs}}
245
- </div>
246
- </div>
247
- <div class="col-sm-3 form-group center-block">
248
- <label class="col-sm-5">部门:</label>
249
- <div class="col-sm-6" style="text-align: left">
250
- {{model.parentname}}
251
- </div>
252
- </div>
253
- <div class="col-sm-3 form-group center-block">
254
- <label class="col-sm-5">操作人:</label>
255
- <div class="col-sm-6 " style="text-align: left">
256
- {{model.operator}}
257
- </div>
258
- </div>
259
- <div class="col-sm-3 form-group center-block">
260
- <label class="col-sm-5">操作日期:</label>
261
- <div class="col-sm-6" style="text-align: left">
262
- {{model.operate_date}}
263
- </div>
264
- </div>
265
- </div>
266
- <!-- 按钮组 -->
267
- <div class="from-group col-sm-12 text-center">
268
- <!-- 按钮组 -->
269
- <button v-for="(index,button) in data.buttons"
270
- :disabled="(button.disabled && disable_button)"
271
- style="min-width:100px"
272
- :class="button.disabled && disable_button ? 'btn btn-default button_spacing' : 'btn btn-primary button_spacing'"
273
- v-if="!button.hidden && button.button_name !=='提交'&& button.button_name !=='确认'"
274
- @click.prevent="click_but(button)"
275
- >
276
- {{button.button_name}}
277
- </button>
278
- <button v-for="(index,button) in data.buttons"
279
- :disabled="(button.disabled && disable_button) || (!$v.valid)"
280
- style="min-width:100px"
281
- :class="button.disabled && disable_button || (!$v.valid) ? 'btn btn-default button_spacing' : 'btn btn-primary button_spacing'"
282
- v-if="!button.hidden && (button.button_name ==='提交'||button.button_name ==='确认')"
283
- @click.prevent="click_but(button)"
284
- >
285
- {{button.button_name}}
286
- </button>
287
- </div>
288
-
289
- <!-- 按钮模态框 -->
290
- <modal v-if="showButModal" :show.sync="showButModal" backdrop="false" large>
291
- <header slot="modal-header" class="modal-header">
292
- <button type="button" class="close" @click="closeModal()"><span>&times;</span></button>
293
- <span class="modal-title"><font
294
- size="3">{{data.button.button_name}}</font></span>
295
- </header>
296
- <article slot="modal-body" class="modal-body clearfix">
297
- <div class="form-group" style="padding: 0 150px">
298
- <div v-for="(index,item) in data.button.button_fields">
299
- <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group' : 'form-group']"
300
- v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device)">
301
- <label :style="item.label_style ? item.label_style : ''"
302
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
303
- <div :style="item.value_style ? item.value_style : ''"
304
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
305
- <input class="form-control input_view"
306
- :placeholder="item.placeholder"
307
- :type="item.type"
308
- v-model="item.value"
309
- :value="item.value"
310
- :readonly="item.readonly"
311
- :disabled="item.disabled"
312
- @change="onbutchange(index)"
313
- @blur="onbutblur(index)"
314
- @input="onbutinput(index)"
315
- />
316
- </div>
317
- </div>
318
-
319
- <!--时间datepicker-->
320
- <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
321
- v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)">
322
- <label :style="item.label_style ? item.label_style : ''"
323
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
324
- <div :style="item.value_style ? item.value_style : ''"
325
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
326
- <datepicker
327
- :placeholder="item.placeholder"
328
- :value.sync="item.value"
329
- v-model="item.value"
330
- :readonly="item.readonly"
331
- :disabled="item.disabled"
332
- :format="item.format ? item.format : 'yyyy-MM-dd'"
333
- :show-reset-button="true"
334
- @change="onbutchange(index)"
335
- @blur="onbutblur(index)"
336
- ></datepicker>
337
- </div>
338
- </div>
339
-
340
- <!--select-->
341
- <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
342
- v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)">
343
- <label :style="item.label_style ? item.label_style : ''"
344
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
345
- <div :style="item.value_style ? item.value_style : ''"
346
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
347
- <input-select
348
- class="select select_list"
349
- :value.sync="item.value"
350
- v-model="item.value"
351
- :options='item.options'
352
- :readonly="item.readonly"
353
- :disable="item.disabled"
354
- :valueSingle="true"
355
- @blur="onbutblur(index)"
356
- @change="onbutchange(index)"
357
- ></input-select>
358
- </div>
359
- </div>
360
-
361
- <!--textarea-->
362
- <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
363
- v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)">
364
- <label :style="item.label_style ? item.label_style : ''"
365
- :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
366
- <div :style="item.value_style ? item.value_style : ''"
367
- :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
368
- <textarea
369
- class="form-control input_view"
370
- style="width: 100%;height: 100%"
371
- v-model="item.value"
372
- :value="item.value"
373
- :rows="item.rows"
374
- :readonly="item.readonly"
375
- :disabled="item.disabled"
376
- @change="onbutchange(index)"
377
- @blur="onbutblur(index)"
378
- @input="onbutinput(index)"
379
- ></textarea>
380
- </div>
381
- </div>
382
- </div>
383
- </div>
384
- </article>
385
- <footer slot="modal-footer" class="modal-footer">
386
- <button :class="disable_modal_button ? 'btn btn-default':'btn btn-primary'"
387
- :disabled="disable_modal_button" type="button" @click="confirmModal()">
388
- 确认
389
- </button>
390
- </footer>
391
- </modal>
392
- </form>
393
- <modal v-if="showPrint" :show.sync="showPrint" v-ref:modal :large="true" :backdrop="false" title="打印预览">
394
- <header slot="modal-header" class="modal-header">
395
- <button type="button" class="close" @click="closePrint"><span>&times;</span></button>
396
- <h4 class="modal-title">打印预览</h4>
397
- </header>
398
- <article slot="modal-body" class="modal-body clearfix">
399
- <!--开通卡-->
400
- <apply-print-activatecard :selectdata="data" type="PRINT" v-ref:print></apply-print-activatecard>
401
- </article>
402
- <footer slot="modal-footer" class="modal-footer">
403
- <button type="button" class="btn btn-primary" @click="print()">打印</button>
404
- </footer>
405
- </modal>
406
- <modal v-if="showqrcode" :show.sync="showqrcode" v-ref:modal :large="true" :backdrop="false" title="扫码预览">
407
- <header slot="modal-header" class="modal-header">
408
- <button type="button" class="close" @click="closePrint"><span>&times;</span></button>
409
- <h4 class="modal-title">扫码预览</h4>
410
- </header>
411
- <article slot="modal-body" class="modal-body clearfix">
412
- <div class="form-group">
413
- <label class="col-sm-3 control-label">证件类型:</label>
414
- <div class="col-sm-9">
415
- <v-select
416
- v-model="qrcode.optype"
417
- placeholder='请选择需要的证件类型'
418
- :value.sync="qrcode.optype"
419
- :options='optypes'
420
- :value-single="true"
421
- class="select select_list"
422
- :search="false"
423
- close-on-select ></v-select>
424
- </div>
425
- </div>
426
- <div class="form-group" >
427
- <label class="col-sm-3 control-label" style="margin-top:15px">扫码信息:</label>
428
- <div class="col-sm-9" style="margin-top: 10px">
429
- <input
430
- style="width: 60%"
431
- class="form-control"
432
- v-model="qrcode.qrcodeInfo"
433
- @change="getuseinfo()"
434
- />
435
- </div>
436
- </div>
437
- </article>
438
- <footer slot="modal-footer" class="modal-footer">
439
- <button type="button" class="btn btn-primary" @click="getuseinfo()">确认</button>
440
- </footer>
441
- </modal>
442
- </div>
443
- </template>
444
- <script>
445
- import Vue from 'vue'
446
- import {isEmpty} from '../../../components/Util'
447
- import {HttpResetClass} from 'vue-client'
448
- import sm2 from 'sm-crypto/src/sm2'
449
-
450
- // Date格式化
451
- Date.prototype.Format = function (fmt) {
452
- var o = {
453
- 'M+': this.getMonth() + 1, // 月份
454
- 'd+': this.getDate(), // 日
455
- 'H+': this.getHours(), // 小时
456
- 'm+': this.getMinutes(), // 分
457
- 's+': this.getSeconds(), // 秒
458
- 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
459
- 'S': this.getMilliseconds() // 毫秒
460
- }
461
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
462
- for (var k in o) {
463
- if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
464
- }
465
- return fmt
466
- }
467
-
468
- export default {
469
- title: '报建业务通用组件',
470
- props: {
471
- data: {
472
- type: Object
473
- }
474
- },
475
- data () {
476
- return {
477
- model: {}, // 公司等属性
478
- disable_button: true, // 控制按钮禁用
479
- disable_modal_button: true, // 控制按钮禁用
480
- //初始化省市区数据
481
- pcdslist: [],
482
- //初始化街道数据
483
- streetslist: [],
484
- //初始化街道数据
485
- areaslist: [],
486
- showButModal: false,
487
- areaData:{
488
- sjvalue:'',
489
- xianvalue:'',
490
- sqvalue:'',
491
- },
492
- templatlng: {
493
- gaodetemplng: "",
494
- gaodetemplat: "",
495
- baidutemplng: "",
496
- baidutemplat: ""
497
- },
498
- showPrint: false, // 打印控件
499
- showqrcode: false, // 爱山东扫码
500
- optypes:[{label:'身份证',value:1},{label:'港澳通行证',value:3},{label:'台湾通行证',value:4},{label:'外籍人士永久居留证',value:5}],
501
- qrcode:{
502
- qrcodeInfo:'',
503
- optype: 1
504
- },
505
- showbusy:false
506
- }
507
- },
508
- watch: {
509
- deep: true
510
- },
511
- computed: {
512
-
513
- },
514
- created () {
515
- // 初始化数据
516
- this.initializtion()
517
- if (this.data.readyEvent) {
518
- this.$dispatch(this.data.readyEvent)
519
- }
520
- this.$dispatch('initializtionView')
521
- },
522
- methods: {
523
- // 初始化数据
524
- initializtion () {
525
- for (const item of this.data.fields) {
526
- this.data[item.field] = item.value
527
- }
528
-
529
- // 是否禁用按钮
530
- this.disableButton()
531
- // 公司等属性初始化
532
- if (this.data.orgs) {
533
- this.model.orgs = this.data.orgs
534
- } else {
535
- this.model.orgs = this.$login.f.orgs
536
- }
537
- if (this.data.parentname) {
538
- this.model.parentname = this.data.parentname
539
- } else {
540
- this.model.parentname = this.$login.f.f_department_name
541
- }
542
- if (this.data.operate_date) {
543
- this.model.operate_date = this.data.operate_date
544
- } else {
545
- this.model.operate_date = new Date().Format('yyyy-MM-dd')
546
- }
547
- if (this.data.operator) {
548
- this.model.operator = this.data.operator
549
- } else {
550
- this.model.operator = this.$login.f.name
551
- }
552
-
553
- this.initpcds(` j_orgid = '${this.$login.f.orgid}'`)
554
- },
555
- async getSelectShijiValue(sjvalue,sjlable) {
556
- this.areaData.sjvalue = sjvalue
557
- console.log("这是父级接收的市级值:",sjvalue,sjlable)
558
- this.data.areaData = this.areaData
559
-
560
- // 是否禁用按钮
561
- this.disableButton()
562
- },
563
- async getSelectXianValue(xianvalue,xianlable) {
564
- this.areaData.xianvalue = xianvalue
565
- this.data.areaData = this.areaData
566
- console.log("这是父级接收的县级值:",xianvalue,xianlable)
567
-
568
- // 是否禁用按钮
569
- this.disableButton()
570
- },
571
- async getSelectShequValue(sqvalue,sqlable) {
572
- this.areaData.sqvalue = sqvalue
573
- this.data.areaData = this.areaData
574
- console.log("这是父级接收的社区值:",sqvalue,sqlable)
575
-
576
- // 是否禁用按钮
577
- this.disableButton()
578
- },
579
- //初始化省市区,添加街道
580
- async initpcds(pconditon) {
581
- // console.log('initpcds', pconditon)
582
- // this.pcdslist = []
583
- // let HttpReset = new HttpResetClass()
584
- // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy?pageNo=1&pageSize=9999999', {
585
- // data: {
586
- // items: '*',
587
- // tablename: 'j_bjqpcd',
588
- // orderitem: 'id',
589
- // condition: pconditon
590
- // }
591
- // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
592
- // let redata = []
593
- // req.data.forEach((row, n) => {
594
- // redata[n] = {
595
- // label: row.j_areaname,
596
- // value: row.j_areaid,
597
- // data: row,
598
- // id: row.id
599
- // }
600
- // })
601
- // console.log('市区', redata)
602
- // this.pcdslist = redata
603
- },
604
- //初始化街道 添加小区
605
- async initstreets(pconditon) {
606
- // console.log('市区32', pconditon)
607
- // this.streetslist = []
608
- // let HttpReset = new HttpResetClass()
609
- // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy', {
610
- // data: {
611
- // items: '*',
612
- // tablename: 'j_bjqstreet',
613
- // orderitem: 'id',
614
- // condition: pconditon
615
- // }
616
- // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
617
- // let redata = []
618
- // req.data.forEach((row, n) => {
619
- // redata[n] = {
620
- // label: row.j_areaname,
621
- // value: row.j_areaid,
622
- // data: row,
623
- // id: row.id
624
- // }
625
- // })
626
- // console.log('市区333', redata)
627
- // this.streetslist = redata
628
- // this.model.f_iscity = this.findbyid(this.streetslist, this.model.f_street_id).f_iscity
629
- },
630
- //初始化小区添加小区
631
- async initareas(pconditon) {
632
- // if(this.usertype){
633
- // pconditon=pconditon+` and f_special='1' `
634
- // }
635
- // this.areaslist = []
636
- // let HttpReset = new HttpResetClass()
637
- // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy?pageNo=1&pageSize=100', {
638
- // data: {
639
- // items: '*',
640
- // tablename: 'j_bjqarea',
641
- // orderitem: 'id',
642
- // condition: pconditon
643
- // }
644
- // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
645
- // let redata = []
646
- // req.data.forEach((row) => {
647
- // redata.push({
648
- // label: row.j_areaname,
649
- // value: row.j_areaid,
650
- // data: row,
651
- // id: row.id
652
- // })
653
- // })
654
- // console.log('市区666', redata)
655
- // if (redata.length>0){
656
- // this.areaslist = redata
657
- // }
658
- },
659
- //省/市/区变化
660
- async pcdChange(val) {
661
-
662
- // console.log("省/市/区变化", val)
663
- // console.log("省/市/区变化", ` f_pcd_id ='${val}' `)
664
- // if (val) {
665
- // //那就把[小区,街道]重新组织一下
666
- // await this.initstreets(` j_parentid ='${val}' `)
667
- // if (this.model.f_street_id) {
668
- // if (this.findbyid(this.streetslist, this.model.f_street_id)) {
669
- // let pcd_id = this.findbyid(this.streetslist, this.model.f_street_id).f_pcd_id
670
- // if (pcd_id != val) {
671
- // this.model.f_street_id = ''
672
- // }
673
- // } else {
674
- // this.model.f_street_id = ''
675
- // }
676
- //
677
- // //那就把[小区,街道]重新组织一下
678
- // if (this.model.f_street_id) {
679
- // await this.initareas(` j_parentid ='${this.model.f_street_id}' `)
680
- // if (this.model.f_residential_area_id) {
681
- // if (this.findbyid(this.areaslist, this.model.f_residential_area_id)) {
682
- // let pcd_id = this.findbyid(this.areaslist, this.model.f_residential_area_id).f_pcd_id
683
- // if (pcd_id != val) {
684
- // this.model.f_residential_area_id = ''
685
- // }
686
- // } else {
687
- // this.model.f_residential_area_id = ''
688
- // }
689
- //
690
- // }
691
- // }
692
- // }
693
- // }
694
- // this.$resetValidation()
695
- },
696
- //街道变化
697
- async streetChange(val) {
698
- // console.log("街道变化", val)
699
- // if (this.streetslist[0]) {
700
- // var street = ''
701
- // this.streetslist.forEach((item) => {
702
- // if (item.id === val) {
703
- // street = item.label
704
- // }
705
- // })
706
- // this.model.f_address = street
707
- // }
708
- // if (val) {
709
- // //那就把[小区]重新组织一下
710
- // await this.initareas(` j_parentid ='${val}' `)
711
- // if (this.model.f_residential_area_id) {
712
- // if (this.findbyid(this.areaslist, this.model.f_residential_area_id)) {
713
- // let street_id = this.findbyid(this.areaslist, this.model.f_residential_area_id).f_street_id
714
- // if (street_id != val) {
715
- // this.model.f_residential_area_id = ''
716
- // }
717
- // } else {
718
- // this.model.f_residential_area_id = ''
719
- // }
720
- //
721
- // }
722
- // }
723
- // this.$resetValidation()
724
- },
725
- // 是否禁用按钮
726
- disableButton () {
727
- let flag = false
728
- for (const field of this.data.fields) {
729
- if (field.required && !field.value && !field.hidden && field.value !== 0) {
730
- flag = true
731
- }
732
-
733
- // 任何选择框只要是否都不能提交
734
- if (field.type === 'select' && field.value === '否' && field.value_no_disable) {
735
- flag = true
736
- }
737
-
738
- if (field.type === 'checkbox' && field.required && field.value.length === 0) {
739
- flag = true
740
- }
741
- }
742
-
743
- //区域下拉框必选 流程模式为报警器报建
744
- if ((this.data.f_apply_type === '报警器报建' || this.data.f_apply_type === '工商业报警器报建') && this.data.defname === '工程施工' && this.data.title === '工程施工' && this.data.f_sub_state !='完工'){
745
- if (!flag){
746
- if (this.areaData.sjvalue ==null || this.areaData.sjvalue.length ==0 || this.areaData.sqvalue == null || this.areaData.sqvalue.length ==0
747
- || this.areaData.xianvalue == null || this.areaData.xianvalue.length == 0){
748
- console.log("区域为空禁止提交:",this.areaData)
749
- flag = true
750
- }
751
-
752
- if (this.templatlng.baidutemplat ==null || this.templatlng.baidutemplat.length ==0 || this.templatlng.baidutemplng == null || this.templatlng.baidutemplng.length ==0
753
- || this.templatlng.gaodetemplat == null || this.templatlng.gaodetemplat.length == 0 || this.templatlng.gaodetemplng == null || this.templatlng.gaodetemplng.length == 0){
754
- console.log("地图坐标为空禁止提交:",this.templatlng)
755
- flag = true
756
- }
757
- }
758
- }
759
- this.disable_button = flag
760
- },
761
- // 失去焦点且值最终发生变化触发
762
- async onchange (index) {
763
- // 是否禁用按钮
764
- this.disableButton()
765
-
766
- if (!isEmpty(this.data.fields[index].value)) {
767
- // 前缀、后缀
768
- if (this.data.fields[index].prefix) {
769
- this.data.fields[index].value = this.data.fields[index].prefix + this.data.fields[index].value
770
- }
771
- if (this.data.fields[index].suffix) {
772
- this.data.fields[index].value = this.data.fields[index].value + this.data.fields[index].suffix
773
- }
774
- }
775
-
776
- // data赋值
777
- this.data[this.data.fields[index].field] = this.data.fields[index].value
778
-
779
- if (this.data.fields[index].type === 'datepicker') {
780
- this.check_datepicker(index)
781
- }
782
-
783
- if (this.data.fields[index].onchange) {
784
- this.$dispatch(this.data.fields[index].onchange, index)
785
- }
786
- this.$dispatch('onchange', index)
787
- },
788
- // 失去焦点触发,无论值是否发生变化
789
- onblur (index) {
790
- this.disableButton()
791
-
792
- if (this.data.fields[index].onblur) {
793
- this.$dispatch(this.data.fields[index].onblur, index)
794
- }
795
-
796
- this.$dispatch('onblur', index)
797
- },
798
- oninput (index) {
799
- // 是否禁用按钮
800
- this.disableButton()
801
-
802
- if (this.data.fields[index].oninput) {
803
- this.$dispatch(this.data.fields[index].oninput, index)
804
- }
805
- this.$dispatch('oninput', index)
806
- },
807
- selectSearch(event, index) {
808
- if (this.data.fields[index].selectSearch) {
809
- this.$dispatch(this.data.fields[index].selectSearch, event[0], index)
810
- }
811
- this.$dispatch('selectSearch', event[0], index)
812
- },
813
- // 点击按钮组按钮
814
- async click_but (button) {
815
- //报警器区域地址
816
- this.data.areaData = this.areaData
817
- this.data.templatlng = this.templatlng
818
-
819
- this.disable_button = true
820
-
821
- this.data.fields.forEach(item => {
822
- this.data[item.field] = item.value
823
- })
824
-
825
- this.data.button = button
826
-
827
- if (button.button_fields && button.button_fields.length > 0) {
828
- this.showButModal = true
829
- return
830
- }
831
-
832
- if (this.data.button.event) {
833
- this.$dispatch(this.data.button.event)
834
- } else {
835
- this.$dispatch('button')
836
- }
837
-
838
- },
839
- confirmModal () {
840
- this.closeModal()
841
-
842
- this.data.button.button_fields.forEach(item => {
843
- this.data.button[item.field] = item.value
844
- })
845
-
846
- if (this.data.button.event) {
847
- this.$dispatch(this.data.button.event)
848
- } else {
849
- this.$dispatch('button')
850
- }
851
- },
852
- // 关闭模态框
853
- closeModal () {
854
- this.showButModal = false
855
- this.disable_modal_button = false
856
- },
857
- onbutchange (index) {
858
- // 是否禁用按钮
859
- this.disableModalButton()
860
-
861
- if (this.data.button.button_fields[index].onchange) {
862
- this.$dispatch(this.data.button.button_fields[index].onchange, index)
863
- } else {
864
- this.$dispatch('onbutchange', index)
865
- }
866
-
867
- },
868
- onbutblur (index) {
869
- this.disableModalButton()
870
-
871
- if (this.data.button.button_fields[index].onblur) {
872
- this.$dispatch(this.data.button.button_fields[index].onblur, index)
873
- } else {
874
- this.$dispatch('onbutblur', index)
875
- }
876
- },
877
- onbutinput (index) {
878
- // 是否禁用按钮
879
- this.disableModalButton()
880
-
881
- if (this.data.button.button_fields[index].oninput) {
882
- this.$dispatch(this.data.button.button_fields[index].oninput, index)
883
- } else {
884
- this.$dispatch('onbutinput', index)
885
- }
886
- },
887
- disableModalButton () {
888
- let flag = false
889
-
890
-
891
- for (const item of this.data.button.button_fields) {
892
- if (item.required && !item.value) {
893
- if (item.value === 0) {
894
- flag = false
895
- } else {
896
- flag = true
897
- }
898
- }
899
- }
900
-
901
- this.disable_modal_button = flag
902
- },
903
- check_datepicker (index) {
904
- // 时间格式检测
905
- if (!isEmpty(this.data.fields[index].value)) {
906
-
907
- let dateReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/
908
- let timeReg = /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
909
- let datetimeReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
910
- if (this.data.fields[index].format) {
911
- if (this.data.fields[index].format === 'yyyy-MM-dd') {
912
- if (!dateReg.test(this.data.fields[index].value)) {
913
- this.data.fields[index].value = ''
914
- this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
915
- }
916
- }
917
- if (this.data.fields[index].format === 'HH:mm:ss') {
918
- if (!timeReg.test(this.data.fields[index].value)) {
919
- this.data.fields[index].value = ''
920
- this.$showAlert(this.data.fields[index].label + '格式错误如:00:00:00', 'warning', 2000)
921
- }
922
- }
923
- if (this.data.fields[index].format === 'yyyy-MM-dd HH:mm:ss') {
924
- if (!datetimeReg.test(this.data.fields[index].value)) {
925
- this.data.fields[index].value = ''
926
- this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01 00:00:00', 'warning', 2000)
927
- }
928
- }
929
- } else {
930
- if (!dateReg.test(this.data.fields[index].value)) {
931
- this.data.fields[index].value = ''
932
- this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
933
- }
934
- }
935
- }
936
- },
937
- printclick (index) {
938
- if (this.data.fields[index].name == '打印派工单'){
939
- this.showPrint = true
940
- }
941
- if (this.data.fields[index].name == '爱山东扫码'){
942
- this.showqrcode = true
943
- }
944
-
945
- },
946
- closePrint () {
947
- this.showPrint = false
948
- this.showqrcode = false
949
- },
950
- print () {
951
- this.$refs.print.$refs.print.PrintTable()
952
- this.closePrint()
953
- },
954
- setLabelValue(label, value) {
955
- for (const item of this.data.fields) {
956
- if (item.label === label) {
957
- item.value = value
958
- this.data[item.field] = value
959
- }
960
- }
961
- },
962
- async getuseinfo(){
963
- this.showbusy = true
964
- let http = new HttpResetClass()
965
- console.log('公司',this.$login.f)
966
- if(this.$login.f.orgs == '成武县潜能燃气有限公司'){
967
- this.qrcode.orgs = this.$login.f.orgs
968
- let res = await http.load('post','rs/logic/aishandongyanma',{data:this.qrcode},{rejectMsg:null,resolveMsg:null})
969
- console.log('res--->',res.data)
970
- if (res.data.errcode == 0){
971
- let user = JSON.parse(this.sm2key(res.data.data.userinfo))
972
- console.log('解密',user)
973
- this.setLabelValue('客户名称',user.NAME)
974
- this.setLabelValue('客户电话',user.TEL)
975
- this.setLabelValue('证件号码',user.IDNO)
976
- for (let i = 0;i < this.optypes.length;i++){
977
- if (user.IDTYPE == this.optypes[i].value){
978
- this.setLabelValue('证件类型',this.optypes[i].label)
979
- }
980
- }
981
- }else {
982
- this.$showMessage("扫码失败")
983
- }
984
- }
985
- if(this.$login.f.orgs == '济宁潜能燃气有限公司'||this.$login.f.orgs == '金乡县潜能燃气有限公司'){
986
- let acceptOrgId = this.$appdata.getSingleValue("鲁通码用码机构")
987
- let pinToken = this.$appdata.getSingleValue("鲁通码pinToken")
988
- let pinId = this.$appdata.getSingleValue("鲁通码pinId")
989
- let url = this.$appdata.getSingleValue("鲁通码url")
990
- if (isEmpty(acceptOrgId)){
991
- this.$showMessage('请在参数管理配置鲁通码用码机构!!')
992
- return
993
- }
994
- if (isEmpty(pinToken)){
995
- this.$showMessage('请在参数管理配置鲁通码pinToken!!')
996
- return
997
- }
998
- if (isEmpty(pinId)){
999
- this.$showMessage('请在参数管理配置鲁通码pinId!!')
1000
- return
1001
- }
1002
- if (isEmpty(url)){
1003
- this.$showMessage('请在参数管理配置鲁通码url!!')
1004
- return
1005
- }
1006
- let data = {
1007
- orgs: this.$login.f.orgs,
1008
- qrcodeInfo:this.qrcode.qrcodeInfo,
1009
- acceptOrgId: acceptOrgId,
1010
- pinToken:pinToken,
1011
- pinId:pinId,
1012
- url:url
1013
- }
1014
- let res = await http.load('post','rs/logic/aishandongyanma',{data:data},{rejectMsg:null,resolveMsg:null})
1015
- console.log('res--->',res.data)
1016
- console.log('Error--->',res.data.Error)
1017
- if (isEmpty(res.data.Error)){
1018
- this.setLabelValue('客户名称',res.data.name)
1019
- this.setLabelValue('客户电话',res.data.tel)
1020
- this.setLabelValue('证件号码',res.data.idno)
1021
- for (let i = 0;i < this.optypes.length;i++){
1022
- if (res.data.idtype == this.optypes[i].value){
1023
- this.setLabelValue('证件类型',this.optypes[i].label)
1024
- }
1025
- }
1026
- }else {
1027
- this.$showMessage(res.data.Error.Message)
1028
- }
1029
- }
1030
- this.closePrint()
1031
- this.qrcode = {
1032
- qrcodeInfo:'',
1033
- optype: 1
1034
- }
1035
- this.showbusy = false
1036
- },
1037
- sm2key(value){
1038
- let key = '2eb82d557583294a3d649c14fb0bd8550254efc2f0b9b18664574d576a6d11ab'
1039
- return sm2.doDecrypt(value.slice(2,value.length),key,1)
1040
- }
1041
- },
1042
- events: {
1043
-
1044
- }
1045
- }
1046
- </script>
1047
- <style>
1048
- .datepicker{
1049
- width: 100%!important;
1050
- }
1051
- .datepicker-input{
1052
- background-color: #ffffff!important;
1053
- width: 100%!important;
1054
- }
1055
- .datepicker-input:disabled{
1056
- border: 1px solid #DDD!important;
1057
- color: #ACA899!important;
1058
- width: 100%!important;
1059
- }
1060
- </style>
1061
- <style scoped>
1062
- th{
1063
- font-size: 15px !important;
1064
- text-align: center !important;
1065
- background-color: #dfedfb!important;
1066
- color: #666666 !important;
1067
- font-family: PINGFANG-BOLD !important;
1068
- font-weight: normal!important;
1069
- }
1070
- /*清除model中的浮动*/
1071
- .clearfix:after,.clearfix:before{
1072
- display: table;
1073
- }
1074
- .clearfix:after{
1075
- clear: both;
1076
- }
1077
-
1078
- .input_view{
1079
- padding: 8px;
1080
- background-color: #ffffff;
1081
- border-radius: 2px;
1082
- border: solid 1px #c7c7c7!important;
1083
- color: #2b2b2b!important;
1084
- font-size: 15px!important;
1085
- }
1086
-
1087
- .input_view[readonly]{
1088
- border: 1px solid #DDD!important;
1089
- color: #2b2b2b !important;
1090
- }
1091
- .input_view:disabled{
1092
- border: 1px solid #DDD!important;
1093
- color: #2b2b2b !important;
1094
- }
1095
-
1096
- .control-label-justify {
1097
- display: inline-block;
1098
- vertical-align: top;
1099
- width: 110px;
1100
- text-align: justify;
1101
- font-family: PingFang-SC-Bold;
1102
- }
1103
-
1104
- .control-label-justify::after {
1105
- content: "";
1106
- display: inline-block;
1107
- width: 100%;
1108
- overflow: hidden;
1109
- height: 0;
1110
- }
1111
-
1112
- input::-webkit-outer-spin-button,
1113
- input::-webkit-inner-spin-button {
1114
- -webkit-appearance: none;
1115
- }
1116
-
1117
- input[type="number"] {
1118
- -moz-appearance: textfield;
1119
- }
1120
-
1121
- </style>
1
+ <template>
2
+ <div class="select-overspread" style="background-color: #ffffff;padding: 20px;overflow: scroll">
3
+ <work-busy :is-busy="showbusy"></work-busy>
4
+ <validator name='v' @valid="$emit('valid')" @invalid="$emit('invalid')">
5
+ <form class="form-horizontal">
6
+ <div class="form-group">
7
+ <div v-for="(index,item) in data.fields">
8
+ <!--input-->
9
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
10
+ v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device) && ( item.label != '证件号码')&&( item.label !== '身份证') && (item.label !== '客户电话')"
11
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
12
+ <label :style="item.label_style ? item.label_style : ''"
13
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
14
+ <div :style="item.value_style ? item.value_style:''"
15
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
16
+ <input class="form-control input_view" style=""
17
+ :type="item.type"
18
+ v-model="data.fields[index].value"
19
+ :placeholder="item.placeholder"
20
+ :value="data.fields[index].value"
21
+ :readonly="item.readonly"
22
+ :disabled="item.disabled"
23
+ @change="onchange(index)"
24
+ @blur="onblur(index)"
25
+ @input="oninput(index)"
26
+ />
27
+ </div>
28
+ </div>
29
+ <!--input-->
30
+ <div :style="item.style ? item.style+';height: 40px; -bottom: 20px':'height: 40px;margin-bottom: 20px'"
31
+ v-if="(data.f_credentials != '身份证' && item.label === '证件号码')"
32
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
33
+ <label :style="item.label_style ? item.label_style : ''"
34
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
35
+ <div :style="item.value_style ? item.value_style:''"
36
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
37
+ <input class="form-control input_view" style=""
38
+ :type="item.type"
39
+ v-model="data.fields[index].value"
40
+ :placeholder="item.placeholder"
41
+ :value="data.fields[index].value"
42
+ :readonly="item.readonly"
43
+ :disabled="item.disabled"
44
+ @change="onchange(index)"
45
+ @blur="onblur(index)"
46
+ @input="oninput(index)"
47
+ />
48
+ </div>
49
+ </div>
50
+ <!--身份证验证-->
51
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
52
+ v-if="(item.label==='身份证') || (data.f_credentials === '身份证' && item.label === '证件号码')"
53
+ :class="[$v.f_idnumber2.identityCardValid ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
54
+ <label :style="item.label_style ? item.label_style : ''"
55
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
56
+ <div :style="item.value_style ? item.value_style:''"
57
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
58
+ <input class="form-control input_view" style=""
59
+ :type="item.type"
60
+ maxlength="18"
61
+ v-model="data.fields[index].value"
62
+ :placeholder="item.placeholder"
63
+ :value="data.fields[index].value"
64
+ v-validate:f_idnumber2='{identityCardValid: true}'
65
+ :readonly="item.readonly"
66
+ :disabled="item.disabled"
67
+ @change="onchange(index)"
68
+ @blur="onblur(index)"
69
+ @input="oninput(index)"
70
+ />
71
+ </div>
72
+ </div>
73
+ <!--客户电话-->
74
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
75
+ v-if="item.label === '客户电话'"
76
+ :class="[$v.f_user_phone.minlength || $v.f_user_phone.maxlength ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
77
+ <label :style="item.label_style ? item.label_style : ''"
78
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
79
+ <div :style="item.value_style ? item.value_style:''"
80
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
81
+ <input class="form-control input_view" style=""
82
+ type="number"
83
+ oninput="if(value.length > 11) value=value.slice(0,11)"
84
+ v-validate:f_user_phone="{minlength: 7, maxlength: 11 }"
85
+ v-model="data.fields[index].value"
86
+ :placeholder="item.placeholder"
87
+ :value="data.fields[index].value"
88
+ onKeypress="return(/[\d\.]/.test(String.fromCharCode(event.keyCode)))"
89
+ :readonly="item.readonly"
90
+ :disabled="item.disabled"
91
+ @change="onchange(index)"
92
+ @blur="onblur(index)"
93
+ @input="oninput(index)"
94
+ />
95
+ </div>
96
+ </div>
97
+ <!--时间datepicker-->
98
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
99
+ v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)"
100
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped+' form-group':'col-sm-4 form-group']">
101
+ <label
102
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label-justify control-label' : 'control-label control-label-justify col-sm-6'">{{item.label}}</label>
103
+ <div :style="item.value_style ? item.value_style:''"
104
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
105
+ <datepicker
106
+ @change="onchange(index)"
107
+ @blur="onblur(index)"
108
+ :placeholder="item.placeholder"
109
+ :value.sync="data.fields[index].value"
110
+ :format="item.format ? item.format : 'yyyy-MM-dd'"
111
+ v-model="data.fields[index].value"
112
+ :readonly="item.readonly"
113
+ :disabled="item.disabled"
114
+ :show-reset-button="reset">
115
+ </datepicker>
116
+ </div>
117
+ </div>
118
+ <!--textarea-->
119
+ <div :style="item.style ? item.style+';margin-bottom: 20px':'margin-bottom: 20px'"
120
+ v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)"
121
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-12 form-group']">
122
+ <label :style="item.label_style ? item.label_style : ''"
123
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-3'">{{item.label}}</label>
124
+ <div :style="item.value_style ? item.value_style:''"
125
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-10'">
126
+ <textarea
127
+ :readonly="item.readonly"
128
+ :disabled="item.disabled"
129
+ class="form-control input_view"
130
+ style="width: 100%;height: 100%"
131
+ :rows="item.rows"
132
+ v-model="data.fields[index].value"
133
+ :value="data.fields[index].value"
134
+ @change="onchange(index)"
135
+ @blur="onblur(index)"
136
+ @input="oninput(index)"
137
+ >
138
+ </textarea>
139
+ </div>
140
+ </div>
141
+ <!--select-->
142
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
143
+ v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device) && !item.multiple"
144
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
145
+ <label
146
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
147
+ <div :style="item.value_style ? item.value_style:''"
148
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
149
+ <input-select
150
+ class="select select_list"
151
+ @blur="onblur(index)"
152
+ @change="onchange(index)"
153
+ @select-search="selectSearch($arguments,index)"
154
+ :readonly="item.readonly"
155
+ :disable="item.disabled"
156
+ :value.sync="data.fields[index].value"
157
+ v-model="data.fields[index].value"
158
+ :options='data.fields[index].options'
159
+ :valueSingle="true"></input-select>
160
+ </div>
161
+ </div>
162
+ <!--select 多选-->
163
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
164
+ v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)&& item.multiple"
165
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
166
+ <label
167
+ :class="item.label_bootstraped ? item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
168
+ <div :style="item.value_style ? item.value_style:''"
169
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
170
+ <v-select
171
+ width="100%"
172
+ class="select select_list"
173
+ @blur="onblur(index)"
174
+ @change="onchange(index)"
175
+ @select-search="selectSearch($arguments,index)"
176
+ :readonly="item.readonly"
177
+ :disable="item.disabled"
178
+ :value.sync="data.fields[index].value"
179
+ v-model="data.fields[index].value"
180
+ :options='data.fields[index].options'
181
+ :multiple="data.fields[index].multiple"
182
+ :valueSingle="true"></v-select>
183
+ </div>
184
+ </div>
185
+ <!--checkbox-->
186
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
187
+ v-if="item.type==='checkbox' && !item.hidden && (item.device === 'pc' || !item.device)"
188
+ :class="[item.required && item.value.length === 0 ? 'has-error' : '',item.bootstraped?item.bootstraped+' form-group':'col-sm-4 form-group']">
189
+ <label v-if="item.label"
190
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
191
+ <div :style="item.value_style ? item.value_style:''"
192
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
193
+ <label class="checkbox-inline" v-for="(index2,row) in item.options">
194
+ <input type="checkbox" class=""
195
+ :readonly="data.fields[index].readonly"
196
+ :disabled="data.fields[index].disabled"
197
+ v-model="data.fields[index].value"
198
+ :value="data.fields[index].options[index2].value"
199
+ @change="onchange(index)"
200
+ @blur="onblur(index)">
201
+ {{row.label}}
202
+ </label>
203
+ </div>
204
+ </div>
205
+ <!--button-->
206
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px':'height: 40px;margin-bottom: 20px'"
207
+ v-if="item.type==='button'"
208
+ :class="[item.required && !(item.value) ? 'has-error' : '',item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
209
+ <div :style="item.value_style ? item.value_style:''"
210
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-6'">
211
+ <button class="button_search button_spacing" :style="item.button_styles" @click.prevent="printclick(index)" :hidden="item.hidden">
212
+ {{ item.name }}
213
+ </button>
214
+ </div>
215
+ </div>
216
+ <!--换行符-->
217
+ <div :style="item.style ? item.style+';height: 40px;margin-bottom: 20px;width: 100%':'height: 40px;margin-bottom: 20px;width: 100%'"
218
+ v-if="item.type==='br'"
219
+ :class="[item.bootstraped ? item.bootstraped + ' form-group':'col-sm-4 form-group']">
220
+ <label v-if="item.label" style="font-size: 20px"
221
+ :class="item.label_bootstraped?item.label_bootstraped+' control-label control-label-justify':'control-label-justify control-label col-sm-6'">{{item.label}}</label>
222
+ </div>
223
+ </div>
224
+ </div>
225
+
226
+ <!-- onetomany -->
227
+ <div class="" v-for="(index,item) in data.onetomany">
228
+ <onetomany :selectdata="data" :onetomany="item" :index="index" v-if="item.device === 'pc' || !item.device"></onetomany>
229
+ </div>
230
+
231
+ <div v-for="(i,item) in data.components">
232
+ <h3 v-if="item.device === 'pc'"><nbr >{{item.title}}</nbr></h3>
233
+ <component v-if="item.device === 'pc' || !item.device" :is="item.name" :selectdata="data" :mark="item.mark"></component>
234
+ </div>
235
+
236
+ <!--自定义组件-->
237
+ <slot>
238
+ </slot>
239
+ <!--公司等属性-->
240
+ <div class="col-sm-12 form-group text-center" style="padding-top:8px">
241
+ <div class="col-sm-3 form-group center-block">
242
+ <label class="col-sm-5">所属公司:</label>
243
+ <div class="col-sm-6" style="text-align: left">
244
+ {{model.orgs}}
245
+ </div>
246
+ </div>
247
+ <div class="col-sm-3 form-group center-block">
248
+ <label class="col-sm-5">部门:</label>
249
+ <div class="col-sm-6" style="text-align: left">
250
+ {{model.parentname}}
251
+ </div>
252
+ </div>
253
+ <div class="col-sm-3 form-group center-block">
254
+ <label class="col-sm-5">操作人:</label>
255
+ <div class="col-sm-6 " style="text-align: left">
256
+ {{model.operator}}
257
+ </div>
258
+ </div>
259
+ <div class="col-sm-3 form-group center-block">
260
+ <label class="col-sm-5">操作日期:</label>
261
+ <div class="col-sm-6" style="text-align: left">
262
+ {{model.operate_date}}
263
+ </div>
264
+ </div>
265
+ </div>
266
+ <!-- 按钮组 -->
267
+ <div class="from-group col-sm-12 text-center">
268
+ <!-- 按钮组 -->
269
+ <button v-for="(index,button) in data.buttons"
270
+ :disabled="(button.disabled && disable_button)"
271
+ style="min-width:100px"
272
+ :class="button.disabled && disable_button ? 'btn btn-default button_spacing' : 'btn btn-primary button_spacing'"
273
+ v-if="!button.hidden && button.button_name !=='提交'&& button.button_name !=='确认'"
274
+ @click.prevent="click_but(button)"
275
+ >
276
+ {{button.button_name}}
277
+ </button>
278
+ <button v-for="(index,button) in data.buttons"
279
+ :disabled="(button.disabled && disable_button) || (!$v.valid)"
280
+ style="min-width:100px"
281
+ :class="button.disabled && disable_button || (!$v.valid) ? 'btn btn-default button_spacing' : 'btn btn-primary button_spacing'"
282
+ v-if="!button.hidden && (button.button_name ==='提交'||button.button_name ==='确认')"
283
+ @click.prevent="click_but(button)"
284
+ >
285
+ {{button.button_name}}
286
+ </button>
287
+ </div>
288
+
289
+ <!-- 按钮模态框 -->
290
+ <modal v-if="showButModal" :show.sync="showButModal" backdrop="false" large>
291
+ <header slot="modal-header" class="modal-header">
292
+ <button type="button" class="close" @click="closeModal()"><span>&times;</span></button>
293
+ <span class="modal-title"><font
294
+ size="3">{{data.button.button_name}}</font></span>
295
+ </header>
296
+ <article slot="modal-body" class="modal-body clearfix">
297
+ <div class="form-group" style="padding: 0 150px">
298
+ <div v-for="(index,item) in data.button.button_fields">
299
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group' : 'form-group']"
300
+ v-if="(item.type==='input' || item.type==='number'||item.type === 'tel'||item.type === 'email') && !item.hidden && (item.device === 'pc' || !item.device)">
301
+ <label :style="item.label_style ? item.label_style : ''"
302
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
303
+ <div :style="item.value_style ? item.value_style : ''"
304
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
305
+ <input class="form-control input_view"
306
+ :placeholder="item.placeholder"
307
+ :type="item.type"
308
+ v-model="item.value"
309
+ :value="item.value"
310
+ :readonly="item.readonly"
311
+ :disabled="item.disabled"
312
+ @change="onbutchange(index)"
313
+ @blur="onbutblur(index)"
314
+ @input="onbutinput(index)"
315
+ />
316
+ </div>
317
+ </div>
318
+
319
+ <!--时间datepicker-->
320
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
321
+ v-if="item.type==='datepicker' && !item.hidden && (item.device === 'pc' || !item.device)">
322
+ <label :style="item.label_style ? item.label_style : ''"
323
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
324
+ <div :style="item.value_style ? item.value_style : ''"
325
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
326
+ <datepicker
327
+ :placeholder="item.placeholder"
328
+ :value.sync="item.value"
329
+ v-model="item.value"
330
+ :readonly="item.readonly"
331
+ :disabled="item.disabled"
332
+ :format="item.format ? item.format : 'yyyy-MM-dd'"
333
+ :show-reset-button="true"
334
+ @change="onbutchange(index)"
335
+ @blur="onbutblur(index)"
336
+ ></datepicker>
337
+ </div>
338
+ </div>
339
+
340
+ <!--select-->
341
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
342
+ v-if="item.type==='select' && !item.hidden && (item.device === 'pc' || !item.device)">
343
+ <label :style="item.label_style ? item.label_style : ''"
344
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
345
+ <div :style="item.value_style ? item.value_style : ''"
346
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
347
+ <input-select
348
+ class="select select_list"
349
+ :value.sync="item.value"
350
+ v-model="item.value"
351
+ :options='item.options'
352
+ :readonly="item.readonly"
353
+ :disable="item.disabled"
354
+ :valueSingle="true"
355
+ @blur="onbutblur(index)"
356
+ @change="onbutchange(index)"
357
+ ></input-select>
358
+ </div>
359
+ </div>
360
+
361
+ <!--textarea-->
362
+ <div :style="item.style ? item.style : ''" :class="[item.required && !(item.value) ? 'has-error' : '', item.bootstraped ? item.bootstraped + ' form-group':'form-group']"
363
+ v-if="item.type==='textarea' && !item.hidden && (item.device === 'pc' || !item.device)">
364
+ <label :style="item.label_style ? item.label_style : ''"
365
+ :class="item.label_bootstraped ? item.label_bootstraped + ' control-label-justify control-label' : 'control-label-justify control-label col-sm-6'">{{item.label}}</label>
366
+ <div :style="item.value_style ? item.value_style : ''"
367
+ :class="item.value_bootstraped ? item.value_bootstraped : 'col-sm-9'">
368
+ <textarea
369
+ class="form-control input_view"
370
+ style="width: 100%;height: 100%"
371
+ v-model="item.value"
372
+ :value="item.value"
373
+ :rows="item.rows"
374
+ :readonly="item.readonly"
375
+ :disabled="item.disabled"
376
+ @change="onbutchange(index)"
377
+ @blur="onbutblur(index)"
378
+ @input="onbutinput(index)"
379
+ ></textarea>
380
+ </div>
381
+ </div>
382
+ </div>
383
+ </div>
384
+ </article>
385
+ <footer slot="modal-footer" class="modal-footer">
386
+ <button :class="disable_modal_button ? 'btn btn-default':'btn btn-primary'"
387
+ :disabled="disable_modal_button" type="button" @click="confirmModal()">
388
+ 确认
389
+ </button>
390
+ </footer>
391
+ </modal>
392
+ </form>
393
+ <modal v-if="showPrint" :show.sync="showPrint" v-ref:modal :large="true" :backdrop="false" title="打印预览">
394
+ <header slot="modal-header" class="modal-header">
395
+ <button type="button" class="close" @click="closePrint"><span>&times;</span></button>
396
+ <h4 class="modal-title">打印预览</h4>
397
+ </header>
398
+ <article slot="modal-body" class="modal-body clearfix">
399
+ <!--开通卡-->
400
+ <apply-print-activatecard :selectdata="data" type="PRINT" v-ref:print></apply-print-activatecard>
401
+ </article>
402
+ <footer slot="modal-footer" class="modal-footer">
403
+ <button type="button" class="btn btn-primary" @click="print()">打印</button>
404
+ </footer>
405
+ </modal>
406
+ <modal v-if="showqrcode" :show.sync="showqrcode" v-ref:modal :large="true" :backdrop="false" title="扫码预览">
407
+ <header slot="modal-header" class="modal-header">
408
+ <button type="button" class="close" @click="closePrint"><span>&times;</span></button>
409
+ <h4 class="modal-title">扫码预览</h4>
410
+ </header>
411
+ <article slot="modal-body" class="modal-body clearfix">
412
+ <div class="form-group">
413
+ <label class="col-sm-3 control-label">证件类型:</label>
414
+ <div class="col-sm-9">
415
+ <v-select
416
+ v-model="qrcode.optype"
417
+ placeholder='请选择需要的证件类型'
418
+ :value.sync="qrcode.optype"
419
+ :options='optypes'
420
+ :value-single="true"
421
+ class="select select_list"
422
+ :search="false"
423
+ close-on-select ></v-select>
424
+ </div>
425
+ </div>
426
+ <div class="form-group" >
427
+ <label class="col-sm-3 control-label" style="margin-top:15px">扫码信息:</label>
428
+ <div class="col-sm-9" style="margin-top: 10px">
429
+ <input
430
+ style="width: 60%"
431
+ class="form-control"
432
+ v-model="qrcode.qrcodeInfo"
433
+ @change="getuseinfo()"
434
+ />
435
+ </div>
436
+ </div>
437
+ </article>
438
+ <footer slot="modal-footer" class="modal-footer">
439
+ <button type="button" class="btn btn-primary" @click="getuseinfo()">确认</button>
440
+ </footer>
441
+ </modal>
442
+ </div>
443
+ </template>
444
+ <script>
445
+ import Vue from 'vue'
446
+ import {isEmpty} from '../../../components/Util'
447
+ import {HttpResetClass} from 'vue-client'
448
+ import sm2 from 'sm-crypto/src/sm2'
449
+
450
+ // Date格式化
451
+ Date.prototype.Format = function (fmt) {
452
+ var o = {
453
+ 'M+': this.getMonth() + 1, // 月份
454
+ 'd+': this.getDate(), // 日
455
+ 'H+': this.getHours(), // 小时
456
+ 'm+': this.getMinutes(), // 分
457
+ 's+': this.getSeconds(), // 秒
458
+ 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
459
+ 'S': this.getMilliseconds() // 毫秒
460
+ }
461
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
462
+ for (var k in o) {
463
+ if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
464
+ }
465
+ return fmt
466
+ }
467
+
468
+ export default {
469
+ title: '报建业务通用组件',
470
+ props: {
471
+ data: {
472
+ type: Object
473
+ }
474
+ },
475
+ data () {
476
+ return {
477
+ model: {}, // 公司等属性
478
+ disable_button: true, // 控制按钮禁用
479
+ disable_modal_button: true, // 控制按钮禁用
480
+ //初始化省市区数据
481
+ pcdslist: [],
482
+ //初始化街道数据
483
+ streetslist: [],
484
+ //初始化街道数据
485
+ areaslist: [],
486
+ showButModal: false,
487
+ areaData:{
488
+ sjvalue:'',
489
+ xianvalue:'',
490
+ sqvalue:'',
491
+ },
492
+ templatlng: {
493
+ gaodetemplng: "",
494
+ gaodetemplat: "",
495
+ baidutemplng: "",
496
+ baidutemplat: ""
497
+ },
498
+ showPrint: false, // 打印控件
499
+ showqrcode: false, // 爱山东扫码
500
+ optypes:[{label:'身份证',value:10},{label:'港澳居民来往内地通行证',value:30},{label:'台湾居民来往内地通行证',value:40},{label:'护照',value:50}],
501
+ qrcode:{
502
+ qrcodeInfo:'',
503
+ optype: 10
504
+ },
505
+ showbusy:false
506
+ }
507
+ },
508
+ watch: {
509
+ deep: true
510
+ },
511
+ computed: {
512
+
513
+ },
514
+ created () {
515
+ // 初始化数据
516
+ this.initializtion()
517
+ if (this.data.readyEvent) {
518
+ this.$dispatch(this.data.readyEvent)
519
+ }
520
+ this.$dispatch('initializtionView')
521
+ },
522
+ methods: {
523
+ // 初始化数据
524
+ initializtion () {
525
+ for (const item of this.data.fields) {
526
+ this.data[item.field] = item.value
527
+ }
528
+
529
+ // 是否禁用按钮
530
+ this.disableButton()
531
+ // 公司等属性初始化
532
+ if (this.data.orgs) {
533
+ this.model.orgs = this.data.orgs
534
+ } else {
535
+ this.model.orgs = this.$login.f.orgs
536
+ }
537
+ if (this.data.parentname) {
538
+ this.model.parentname = this.data.parentname
539
+ } else {
540
+ this.model.parentname = this.$login.f.f_department_name
541
+ }
542
+ if (this.data.operate_date) {
543
+ this.model.operate_date = this.data.operate_date
544
+ } else {
545
+ this.model.operate_date = new Date().Format('yyyy-MM-dd')
546
+ }
547
+ if (this.data.operator) {
548
+ this.model.operator = this.data.operator
549
+ } else {
550
+ this.model.operator = this.$login.f.name
551
+ }
552
+
553
+ this.initpcds(` j_orgid = '${this.$login.f.orgid}'`)
554
+ },
555
+ async getSelectShijiValue(sjvalue,sjlable) {
556
+ this.areaData.sjvalue = sjvalue
557
+ console.log("这是父级接收的市级值:",sjvalue,sjlable)
558
+ this.data.areaData = this.areaData
559
+
560
+ // 是否禁用按钮
561
+ this.disableButton()
562
+ },
563
+ async getSelectXianValue(xianvalue,xianlable) {
564
+ this.areaData.xianvalue = xianvalue
565
+ this.data.areaData = this.areaData
566
+ console.log("这是父级接收的县级值:",xianvalue,xianlable)
567
+
568
+ // 是否禁用按钮
569
+ this.disableButton()
570
+ },
571
+ async getSelectShequValue(sqvalue,sqlable) {
572
+ this.areaData.sqvalue = sqvalue
573
+ this.data.areaData = this.areaData
574
+ console.log("这是父级接收的社区值:",sqvalue,sqlable)
575
+
576
+ // 是否禁用按钮
577
+ this.disableButton()
578
+ },
579
+ //初始化省市区,添加街道
580
+ async initpcds(pconditon) {
581
+ // console.log('initpcds', pconditon)
582
+ // this.pcdslist = []
583
+ // let HttpReset = new HttpResetClass()
584
+ // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy?pageNo=1&pageSize=9999999', {
585
+ // data: {
586
+ // items: '*',
587
+ // tablename: 'j_bjqpcd',
588
+ // orderitem: 'id',
589
+ // condition: pconditon
590
+ // }
591
+ // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
592
+ // let redata = []
593
+ // req.data.forEach((row, n) => {
594
+ // redata[n] = {
595
+ // label: row.j_areaname,
596
+ // value: row.j_areaid,
597
+ // data: row,
598
+ // id: row.id
599
+ // }
600
+ // })
601
+ // console.log('市区', redata)
602
+ // this.pcdslist = redata
603
+ },
604
+ //初始化街道 添加小区
605
+ async initstreets(pconditon) {
606
+ // console.log('市区32', pconditon)
607
+ // this.streetslist = []
608
+ // let HttpReset = new HttpResetClass()
609
+ // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy', {
610
+ // data: {
611
+ // items: '*',
612
+ // tablename: 'j_bjqstreet',
613
+ // orderitem: 'id',
614
+ // condition: pconditon
615
+ // }
616
+ // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
617
+ // let redata = []
618
+ // req.data.forEach((row, n) => {
619
+ // redata[n] = {
620
+ // label: row.j_areaname,
621
+ // value: row.j_areaid,
622
+ // data: row,
623
+ // id: row.id
624
+ // }
625
+ // })
626
+ // console.log('市区333', redata)
627
+ // this.streetslist = redata
628
+ // this.model.f_iscity = this.findbyid(this.streetslist, this.model.f_street_id).f_iscity
629
+ },
630
+ //初始化小区添加小区
631
+ async initareas(pconditon) {
632
+ // if(this.usertype){
633
+ // pconditon=pconditon+` and f_special='1' `
634
+ // }
635
+ // this.areaslist = []
636
+ // let HttpReset = new HttpResetClass()
637
+ // let req = await HttpReset.load('POST', 'rs/sql/address_singleTableOrderBy?pageNo=1&pageSize=100', {
638
+ // data: {
639
+ // items: '*',
640
+ // tablename: 'j_bjqarea',
641
+ // orderitem: 'id',
642
+ // condition: pconditon
643
+ // }
644
+ // }, {resolveMsg: null, rejectMsg: '获取地址失败!'})
645
+ // let redata = []
646
+ // req.data.forEach((row) => {
647
+ // redata.push({
648
+ // label: row.j_areaname,
649
+ // value: row.j_areaid,
650
+ // data: row,
651
+ // id: row.id
652
+ // })
653
+ // })
654
+ // console.log('市区666', redata)
655
+ // if (redata.length>0){
656
+ // this.areaslist = redata
657
+ // }
658
+ },
659
+ //省/市/区变化
660
+ async pcdChange(val) {
661
+
662
+ // console.log("省/市/区变化", val)
663
+ // console.log("省/市/区变化", ` f_pcd_id ='${val}' `)
664
+ // if (val) {
665
+ // //那就把[小区,街道]重新组织一下
666
+ // await this.initstreets(` j_parentid ='${val}' `)
667
+ // if (this.model.f_street_id) {
668
+ // if (this.findbyid(this.streetslist, this.model.f_street_id)) {
669
+ // let pcd_id = this.findbyid(this.streetslist, this.model.f_street_id).f_pcd_id
670
+ // if (pcd_id != val) {
671
+ // this.model.f_street_id = ''
672
+ // }
673
+ // } else {
674
+ // this.model.f_street_id = ''
675
+ // }
676
+ //
677
+ // //那就把[小区,街道]重新组织一下
678
+ // if (this.model.f_street_id) {
679
+ // await this.initareas(` j_parentid ='${this.model.f_street_id}' `)
680
+ // if (this.model.f_residential_area_id) {
681
+ // if (this.findbyid(this.areaslist, this.model.f_residential_area_id)) {
682
+ // let pcd_id = this.findbyid(this.areaslist, this.model.f_residential_area_id).f_pcd_id
683
+ // if (pcd_id != val) {
684
+ // this.model.f_residential_area_id = ''
685
+ // }
686
+ // } else {
687
+ // this.model.f_residential_area_id = ''
688
+ // }
689
+ //
690
+ // }
691
+ // }
692
+ // }
693
+ // }
694
+ // this.$resetValidation()
695
+ },
696
+ //街道变化
697
+ async streetChange(val) {
698
+ // console.log("街道变化", val)
699
+ // if (this.streetslist[0]) {
700
+ // var street = ''
701
+ // this.streetslist.forEach((item) => {
702
+ // if (item.id === val) {
703
+ // street = item.label
704
+ // }
705
+ // })
706
+ // this.model.f_address = street
707
+ // }
708
+ // if (val) {
709
+ // //那就把[小区]重新组织一下
710
+ // await this.initareas(` j_parentid ='${val}' `)
711
+ // if (this.model.f_residential_area_id) {
712
+ // if (this.findbyid(this.areaslist, this.model.f_residential_area_id)) {
713
+ // let street_id = this.findbyid(this.areaslist, this.model.f_residential_area_id).f_street_id
714
+ // if (street_id != val) {
715
+ // this.model.f_residential_area_id = ''
716
+ // }
717
+ // } else {
718
+ // this.model.f_residential_area_id = ''
719
+ // }
720
+ //
721
+ // }
722
+ // }
723
+ // this.$resetValidation()
724
+ },
725
+ // 是否禁用按钮
726
+ disableButton () {
727
+ let flag = false
728
+ for (const field of this.data.fields) {
729
+ if (field.required && !field.value && !field.hidden && field.value !== 0) {
730
+ flag = true
731
+ }
732
+
733
+ // 任何选择框只要是否都不能提交
734
+ if (field.type === 'select' && field.value === '否' && field.value_no_disable) {
735
+ flag = true
736
+ }
737
+
738
+ if (field.type === 'checkbox' && field.required && field.value.length === 0) {
739
+ flag = true
740
+ }
741
+ }
742
+
743
+ //区域下拉框必选 流程模式为报警器报建
744
+ if ((this.data.f_apply_type === '报警器报建' || this.data.f_apply_type === '工商业报警器报建') && this.data.defname === '工程施工' && this.data.title === '工程施工' && this.data.f_sub_state !='完工'){
745
+ if (!flag){
746
+ if (this.areaData.sjvalue ==null || this.areaData.sjvalue.length ==0 || this.areaData.sqvalue == null || this.areaData.sqvalue.length ==0
747
+ || this.areaData.xianvalue == null || this.areaData.xianvalue.length == 0){
748
+ console.log("区域为空禁止提交:",this.areaData)
749
+ flag = true
750
+ }
751
+
752
+ if (this.templatlng.baidutemplat ==null || this.templatlng.baidutemplat.length ==0 || this.templatlng.baidutemplng == null || this.templatlng.baidutemplng.length ==0
753
+ || this.templatlng.gaodetemplat == null || this.templatlng.gaodetemplat.length == 0 || this.templatlng.gaodetemplng == null || this.templatlng.gaodetemplng.length == 0){
754
+ console.log("地图坐标为空禁止提交:",this.templatlng)
755
+ flag = true
756
+ }
757
+ }
758
+ }
759
+ this.disable_button = flag
760
+ },
761
+ // 失去焦点且值最终发生变化触发
762
+ async onchange (index) {
763
+ // 是否禁用按钮
764
+ this.disableButton()
765
+
766
+ if (!isEmpty(this.data.fields[index].value)) {
767
+ // 前缀、后缀
768
+ if (this.data.fields[index].prefix) {
769
+ this.data.fields[index].value = this.data.fields[index].prefix + this.data.fields[index].value
770
+ }
771
+ if (this.data.fields[index].suffix) {
772
+ this.data.fields[index].value = this.data.fields[index].value + this.data.fields[index].suffix
773
+ }
774
+ }
775
+
776
+ // data赋值
777
+ this.data[this.data.fields[index].field] = this.data.fields[index].value
778
+
779
+ if (this.data.fields[index].type === 'datepicker') {
780
+ this.check_datepicker(index)
781
+ }
782
+
783
+ if (this.data.fields[index].onchange) {
784
+ this.$dispatch(this.data.fields[index].onchange, index)
785
+ }
786
+ this.$dispatch('onchange', index)
787
+ },
788
+ // 失去焦点触发,无论值是否发生变化
789
+ onblur (index) {
790
+ this.disableButton()
791
+
792
+ if (this.data.fields[index].onblur) {
793
+ this.$dispatch(this.data.fields[index].onblur, index)
794
+ }
795
+
796
+ this.$dispatch('onblur', index)
797
+ },
798
+ oninput (index) {
799
+ // 是否禁用按钮
800
+ this.disableButton()
801
+
802
+ if (this.data.fields[index].oninput) {
803
+ this.$dispatch(this.data.fields[index].oninput, index)
804
+ }
805
+ this.$dispatch('oninput', index)
806
+ },
807
+ selectSearch(event, index) {
808
+ if (this.data.fields[index].selectSearch) {
809
+ this.$dispatch(this.data.fields[index].selectSearch, event[0], index)
810
+ }
811
+ this.$dispatch('selectSearch', event[0], index)
812
+ },
813
+ // 点击按钮组按钮
814
+ async click_but (button) {
815
+ //报警器区域地址
816
+ this.data.areaData = this.areaData
817
+ this.data.templatlng = this.templatlng
818
+
819
+ this.disable_button = true
820
+
821
+ this.data.fields.forEach(item => {
822
+ this.data[item.field] = item.value
823
+ })
824
+
825
+ this.data.button = button
826
+
827
+ if (button.button_fields && button.button_fields.length > 0) {
828
+ this.showButModal = true
829
+ return
830
+ }
831
+
832
+ if (this.data.button.event) {
833
+ this.$dispatch(this.data.button.event)
834
+ } else {
835
+ this.$dispatch('button')
836
+ }
837
+
838
+ },
839
+ confirmModal () {
840
+ this.closeModal()
841
+
842
+ this.data.button.button_fields.forEach(item => {
843
+ this.data.button[item.field] = item.value
844
+ })
845
+
846
+ if (this.data.button.event) {
847
+ this.$dispatch(this.data.button.event)
848
+ } else {
849
+ this.$dispatch('button')
850
+ }
851
+ },
852
+ // 关闭模态框
853
+ closeModal () {
854
+ this.showButModal = false
855
+ this.disable_modal_button = false
856
+ },
857
+ onbutchange (index) {
858
+ // 是否禁用按钮
859
+ this.disableModalButton()
860
+
861
+ if (this.data.button.button_fields[index].onchange) {
862
+ this.$dispatch(this.data.button.button_fields[index].onchange, index)
863
+ } else {
864
+ this.$dispatch('onbutchange', index)
865
+ }
866
+
867
+ },
868
+ onbutblur (index) {
869
+ this.disableModalButton()
870
+
871
+ if (this.data.button.button_fields[index].onblur) {
872
+ this.$dispatch(this.data.button.button_fields[index].onblur, index)
873
+ } else {
874
+ this.$dispatch('onbutblur', index)
875
+ }
876
+ },
877
+ onbutinput (index) {
878
+ // 是否禁用按钮
879
+ this.disableModalButton()
880
+
881
+ if (this.data.button.button_fields[index].oninput) {
882
+ this.$dispatch(this.data.button.button_fields[index].oninput, index)
883
+ } else {
884
+ this.$dispatch('onbutinput', index)
885
+ }
886
+ },
887
+ disableModalButton () {
888
+ let flag = false
889
+
890
+
891
+ for (const item of this.data.button.button_fields) {
892
+ if (item.required && !item.value) {
893
+ if (item.value === 0) {
894
+ flag = false
895
+ } else {
896
+ flag = true
897
+ }
898
+ }
899
+ }
900
+
901
+ this.disable_modal_button = flag
902
+ },
903
+ check_datepicker (index) {
904
+ // 时间格式检测
905
+ if (!isEmpty(this.data.fields[index].value)) {
906
+
907
+ let dateReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/
908
+ let timeReg = /^(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
909
+ let datetimeReg = /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$/
910
+ if (this.data.fields[index].format) {
911
+ if (this.data.fields[index].format === 'yyyy-MM-dd') {
912
+ if (!dateReg.test(this.data.fields[index].value)) {
913
+ this.data.fields[index].value = ''
914
+ this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
915
+ }
916
+ }
917
+ if (this.data.fields[index].format === 'HH:mm:ss') {
918
+ if (!timeReg.test(this.data.fields[index].value)) {
919
+ this.data.fields[index].value = ''
920
+ this.$showAlert(this.data.fields[index].label + '格式错误如:00:00:00', 'warning', 2000)
921
+ }
922
+ }
923
+ if (this.data.fields[index].format === 'yyyy-MM-dd HH:mm:ss') {
924
+ if (!datetimeReg.test(this.data.fields[index].value)) {
925
+ this.data.fields[index].value = ''
926
+ this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01 00:00:00', 'warning', 2000)
927
+ }
928
+ }
929
+ } else {
930
+ if (!dateReg.test(this.data.fields[index].value)) {
931
+ this.data.fields[index].value = ''
932
+ this.$showAlert(this.data.fields[index].label + '格式错误如:2021-01-01', 'warning', 2000)
933
+ }
934
+ }
935
+ }
936
+ },
937
+ printclick (index) {
938
+ if (this.data.fields[index].name == '打印派工单'){
939
+ this.showPrint = true
940
+ }
941
+ if (this.data.fields[index].name == '爱山东扫码'){
942
+ this.showqrcode = true
943
+ }
944
+
945
+ },
946
+ closePrint () {
947
+ this.showPrint = false
948
+ this.showqrcode = false
949
+ },
950
+ print () {
951
+ this.$refs.print.$refs.print.PrintTable()
952
+ this.closePrint()
953
+ },
954
+ setLabelValue(label, value) {
955
+ for (const item of this.data.fields) {
956
+ if (item.label === label) {
957
+ item.value = value
958
+ this.data[item.field] = value
959
+ }
960
+ }
961
+ },
962
+ async getuseinfo(){
963
+ this.showbusy = true
964
+ let http = new HttpResetClass()
965
+ console.log('公司',this.$login.f)
966
+ if(this.$login.f.orgs == '成武县潜能燃气有限公司'){
967
+ this.qrcode.orgs = this.$login.f.orgs
968
+ this.qrcode.f_process_id = this.data.f_process_id
969
+ let res = await http.load('post','rs/logic/aishandongyanma',{data:this.qrcode},{rejectMsg:null,resolveMsg:null})
970
+ console.log('res--->',res.data)
971
+ if (res.data.errCode == 200){
972
+ let user = res.data.data
973
+ console.log('解密',user)
974
+ this.setLabelValue('客户名称',user.userName)
975
+ this.setLabelValue('客户电话',user.phone)
976
+ this.setLabelValue('证件号码',user.idNumber)
977
+ this.setLabelValue('证件类型',"身份证")
978
+ }else {
979
+ this.$showMessage(res.data.errMsg)
980
+ }
981
+ }
982
+ if(this.$login.f.orgs == '济宁潜能燃气有限公司'||this.$login.f.orgs == '金乡县潜能燃气有限公司'){
983
+ let acceptOrgId = this.$appdata.getSingleValue("鲁通码用码机构")
984
+ let pinToken = this.$appdata.getSingleValue("鲁通码pinToken")
985
+ let pinId = this.$appdata.getSingleValue("鲁通码pinId")
986
+ let url = this.$appdata.getSingleValue("鲁通码url")
987
+ if (isEmpty(acceptOrgId)){
988
+ this.$showMessage('请在参数管理配置鲁通码用码机构!!')
989
+ return
990
+ }
991
+ if (isEmpty(pinToken)){
992
+ this.$showMessage('请在参数管理配置鲁通码pinToken!!')
993
+ return
994
+ }
995
+ if (isEmpty(pinId)){
996
+ this.$showMessage('请在参数管理配置鲁通码pinId!!')
997
+ return
998
+ }
999
+ if (isEmpty(url)){
1000
+ this.$showMessage('请在参数管理配置鲁通码url!!')
1001
+ return
1002
+ }
1003
+ let data = {
1004
+ orgs: this.$login.f.orgs,
1005
+ qrcodeInfo:this.qrcode.qrcodeInfo,
1006
+ acceptOrgId: acceptOrgId,
1007
+ pinToken:pinToken,
1008
+ pinId:pinId,
1009
+ url:url
1010
+ }
1011
+ let res = await http.load('post','rs/logic/aishandongyanma',{data:data},{rejectMsg:null,resolveMsg:null})
1012
+ console.log('res--->',res.data)
1013
+ console.log('Error--->',res.data.Error)
1014
+ if (isEmpty(res.data.Error)){
1015
+ this.setLabelValue('客户名称',res.data.name)
1016
+ this.setLabelValue('客户电话',res.data.tel)
1017
+ this.setLabelValue('证件号码',res.data.idno)
1018
+ for (let i = 0;i < this.optypes.length;i++){
1019
+ if (res.data.idtype == this.optypes[i].value){
1020
+ this.setLabelValue('证件类型',this.optypes[i].label)
1021
+ }
1022
+ }
1023
+ }else {
1024
+ this.$showMessage(res.data.Error.Message)
1025
+ }
1026
+ }
1027
+ this.closePrint()
1028
+ this.qrcode = {
1029
+ qrcodeInfo:'',
1030
+ optype: 1
1031
+ }
1032
+ this.showbusy = false
1033
+ },
1034
+ /*sm2key(value){
1035
+ let key = '2eb82d557583294a3d649c14fb0bd8550254efc2f0b9b18664574d576a6d11ab'
1036
+ return sm2.doDecrypt(value.slice(2,value.length),key,1)
1037
+ }*/
1038
+ },
1039
+ events: {
1040
+
1041
+ }
1042
+ }
1043
+ </script>
1044
+ <style>
1045
+ .datepicker{
1046
+ width: 100%!important;
1047
+ }
1048
+ .datepicker-input{
1049
+ background-color: #ffffff!important;
1050
+ width: 100%!important;
1051
+ }
1052
+ .datepicker-input:disabled{
1053
+ border: 1px solid #DDD!important;
1054
+ color: #ACA899!important;
1055
+ width: 100%!important;
1056
+ }
1057
+ </style>
1058
+ <style scoped>
1059
+ th{
1060
+ font-size: 15px !important;
1061
+ text-align: center !important;
1062
+ background-color: #dfedfb!important;
1063
+ color: #666666 !important;
1064
+ font-family: PINGFANG-BOLD !important;
1065
+ font-weight: normal!important;
1066
+ }
1067
+ /*清除model中的浮动*/
1068
+ .clearfix:after,.clearfix:before{
1069
+ display: table;
1070
+ }
1071
+ .clearfix:after{
1072
+ clear: both;
1073
+ }
1074
+
1075
+ .input_view{
1076
+ padding: 8px;
1077
+ background-color: #ffffff;
1078
+ border-radius: 2px;
1079
+ border: solid 1px #c7c7c7!important;
1080
+ color: #2b2b2b!important;
1081
+ font-size: 15px!important;
1082
+ }
1083
+
1084
+ .input_view[readonly]{
1085
+ border: 1px solid #DDD!important;
1086
+ color: #2b2b2b !important;
1087
+ }
1088
+ .input_view:disabled{
1089
+ border: 1px solid #DDD!important;
1090
+ color: #2b2b2b !important;
1091
+ }
1092
+
1093
+ .control-label-justify {
1094
+ display: inline-block;
1095
+ vertical-align: top;
1096
+ width: 110px;
1097
+ text-align: justify;
1098
+ font-family: PingFang-SC-Bold;
1099
+ }
1100
+
1101
+ .control-label-justify::after {
1102
+ content: "";
1103
+ display: inline-block;
1104
+ width: 100%;
1105
+ overflow: hidden;
1106
+ height: 0;
1107
+ }
1108
+
1109
+ input::-webkit-outer-spin-button,
1110
+ input::-webkit-inner-spin-button {
1111
+ -webkit-appearance: none;
1112
+ }
1113
+
1114
+ input[type="number"] {
1115
+ -moz-appearance: textfield;
1116
+ }
1117
+
1118
+ </style>