apply-clients 7.1.36-yuchuan-45 → 7.1.36-yuchuan-46

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.
@@ -1,1166 +1,1166 @@
1
- <template>
2
- <div style="float: right">
3
- <export-excel :data="getConditions"
4
- :field="getfields"
5
- sqlurl="rs/logic/applyExportfile"
6
- sql-name="getApplyUserinfo"
7
- template-name='用户信息导出'
8
- :choose-col="true"></export-excel>
9
- </div>
10
- <div class="col-sm-12" style="margin: 20px 0px;">
11
-
12
- <criteria-paged :model="model" v-ref:cp>
13
- <criteria partial='criteria' @condition-changed='$parent.searchCondition' v-ref:cri>
14
- <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
15
- </div>
16
- </criteria>
17
- <data-grid :model="model" v-ref:grid partial='list' class="list_area table_sy" style="padding: 0px">
18
- <template partial='head'>
19
- <tr>
20
- <th>序号</th>
21
- <th>客户编号</th>
22
- <th>客户名称</th>
23
- <th>客户电话</th>
24
- <th>身份证号</th>
25
- <th>地址信息</th>
26
- <th>表号</th>
27
- <th>气表品牌</th>
28
- <th>气表型号</th>
29
- <th>
30
- <button
31
- type="button"
32
- v-if="$parent.$parent.$parent.selectdata.f_apply_type !== '非民用报建'"
33
- class="btn btn-info head-but"
34
- @click="$parent.$parent.$parent.openModal()"
35
- :disabled="$parent.$parent.$parent.mark === 1 ||
36
- ($parent.$parent.$parent.model.count >= $parent.$parent.$parent.selectdata.f_apply_count &&
37
- $parent.$parent.$parent.selectdata.defname === '报建受理') ||
38
- ($parent.$parent.$parent.model.count >= $parent.$parent.$parent.selectdata.f_install_count &&
39
- $parent.$parent.$parent.selectdata.defname === '工程施工') ||
40
- $parent.$parent.$parent.selectdata.defname === '施工通气'"
41
- >添加用户</button>
42
- <button
43
- v-if="$parent.$parent.$parent.selectdata.defname === '工程施工'"
44
- type="button"
45
- class="btn btn-info head-but"
46
- @click="$parent.$parent.$parent.openSign()"
47
- >签字照片</button>
48
- <template v-if="$parent.$parent.$parent.selectdata.f_apply_type === '民用报建'">
49
- <button type="button" class="btn btn-info head-but" v-if="$parent.$parent.$parent.mark !== 1"
50
- @click="$parent.$parent.$parent.importBefore()">导入</button>
51
- <a type="button" class="btn btn-info head-but" v-if="$parent.$parent.$parent.mark !== 1 && $parent.$parent.$parent.selectdata.f_apply_nature === '小区' && $parent.$parent.$parent.selectdata.defname !== '工程施工'"
52
- href="/apply/download/excel/小区导入.xlsx" download>模板下载</a>
53
- <a type="button" class="btn btn-info head-but" v-if="$parent.$parent.$parent.mark !== 1 && $parent.$parent.$parent.selectdata.f_apply_nature === '散户' && $parent.$parent.$parent.selectdata.defname !== '工程施工'"
54
- href="/apply/download/excel/散户导入模板.xlsx" download>模板下载</a>
55
- <export-excel :data="$parent.$parent.$parent.getCondition"
56
- :field="$parent.$parent.$parent.getfield"
57
- v-if="$parent.$parent.$parent.mark !== 1 && $parent.$parent.$parent.selectdata.f_apply_nature === '小区' && $parent.$parent.$parent.selectdata.defname === '工程施工'"
58
- sqlurl="rs/logic/applyExportfile"
59
- sql-name="getApplyUserinfoExcel"
60
- template-name='待添加表号信息导出'
61
- :choose-col="true"></export-excel>
62
- </template>
63
- </th>
64
- </tr>
65
-
66
- </template>
67
- <template partial='body'>
68
- <tr>
69
- <td style="text-align: center;">
70
- <nobr>{{$index+1}}</nobr>
71
- </td>
72
- <td style="text-align: center;">
73
- <nobr>{{row.f_userinfo_id}}</nobr>
74
- </td>
75
- <td style="text-align: center;">
76
- <nobr>{{row.f_user_name}}</nobr>
77
- </td>
78
- <td style="text-align: center;">
79
- <nobr>{{row.f_user_phone}}</nobr>
80
- </td>
81
- <td style="text-align: center;">
82
- <nobr>{{row.f_idnumber}}</nobr>
83
- </td>
84
- <td style="text-align: center;">
85
- <nobr>{{row.f_address}}{{row.f_address_detail}}</nobr>
86
- </td>
87
- <td style="text-align: center;">
88
- <nobr>{{row.f_meternumber}}</nobr>
89
- </td>
90
- <td style="text-align: center;">
91
- <nobr>{{row.f_meter_brand}}</nobr>
92
- </td>
93
- <td style="text-align: center;">
94
- <nobr>{{row.f_meter_style}}</nobr>
95
- </td>
96
- <td style="text-align: center;">
97
- <nobr>
98
- <button
99
- type="button" name="button" class="btn btn-link"
100
- @click="$parent.$parent.$parent.openModal(row)">
101
- {{$parent.$parent.$parent.mark === 1 || row.f_user_state === '正常' ? '查看' : '修正'}}
102
- </button>
103
- <button
104
- type="button" name="button" class="btn btn-link"
105
- @click="$parent.$parent.$parent.deleteUserinfo(row)"
106
- v-if="$parent.$parent.$parent.showDeleteUserInfo"
107
- :disabled="$parent.$parent.$parent.mark === 1 || row.f_user_state === '正常'"
108
- >
109
- 销户
110
- </button>
111
- <button
112
- type="button" name="button" class="btn btn-link"
113
- @click="$parent.$parent.$parent.deleteUserinfo(row)"
114
- v-if="$parent.$parent.$parent.newShowDeleteUserInfo"
115
- >
116
- 销户
117
- </button>
118
- </nobr>
119
- </td>
120
- </tr>
121
- </template>
122
- </data-grid>
123
- </criteria-paged>
124
- </div>
125
- <modal v-if="showFile" :show.sync="showFile" v-ref:modal :backdrop="false" title="选择文件">
126
- <header slot="modal-header" class="modal-header">
127
- <button type="button" class="close" @click="closeFile"><span>&times;</span></button>
128
- <h4 class="modal-title">选择文件</h4>
129
- </header>
130
- <article slot="modal-body" class="modal-body">
131
- <div class="form-group">
132
- <file-upload class="my-file-uploader" name="useraddressUploadFile" action="rs/file/uploadFile" tagname="确定" v-ref:file></file-upload>
133
- </div>
134
- </article>
135
- <footer slot="modal-footer" class="modal-footer"></footer>
136
- </modal>
137
- <modal v-if="progressShow" :show.sync="progressShow" v-ref:modal :backdrop="false" title="导入进度">
138
- <header slot="modal-header" class="modal-header">
139
- <button type="button" class="close" @click="close"><span>&times;</span></button>
140
- <h4 class="modal-title">导入进度</h4>
141
- </header>
142
- <article slot="modal-body" class="modal-body">
143
- <div class="progress" style="margin: 20px">
144
- <div class="progress-bar progress-bar-success progress-bar-striped active" :style="{width: percent}">
145
- {{ percent }}
146
- </div>
147
- </div>
148
- </article>
149
- <footer slot="modal-footer" class="modal-footer"></footer>
150
- </modal>
151
-
152
- <modal v-if="Sign" :show.sync="Sign" v-ref:modal :large="true" :backdrop="false">
153
- <header slot="modal-header" class="modal-header">
154
- <button type="button" class="close" @click="closeUserFile"><span>&times;</span></button>
155
- <h4 class="modal-title">用户签字</h4>
156
- </header>
157
- <article slot="modal-body" class="modal-body clearfix">
158
- <div class="left col-sm-6 col-xs-6">
159
- <img-self :src="fileurl" width="100%" height="100%"></img-self>
160
- </div>
161
- </article>
162
- <footer slot="modal-footer" class="modal-footer">
163
- <template v-if="mark !== 1 && userinfo.f_user_state !== '正常'">
164
- </template>
165
- </footer>
166
- </modal>
167
- <validator name="v">
168
- <modal v-if="showModal" :show.sync="showModal" v-ref:modal :large="true" :backdrop="false">
169
- <header slot="modal-header" class="modal-header">
170
- <button type="button" class="close" @click="closeUserFile"><span>&times;</span></button>
171
- <h4 class="modal-title">安装明细</h4>
172
- </header>
173
- <article slot="modal-body" class="modal-body clearfix">
174
- <!-- 基本信息 -->
175
- <div class="form-group col-sm-12 panel panel-info" v-if="showUserInfo">
176
- <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
177
- <div class="col-sm-6 text-left">用户信息</div>
178
- </div>
179
- <div class="form-group col-sm-6" :class="[$v.f_user_name.required ? 'has-error' : '']">
180
- <label class="col-sm-4 control-label">客户名称:</label>
181
- <div class="col-sm-8">
182
- <input class="form-control input_view" style=""
183
- v-validate:f_user_name = "['required']"
184
- v-model="userinfo.f_user_name"
185
- :value.sync="showUserInformation.f_user_name"
186
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"
187
- placeholder="客户名称"/>
188
- </div>
189
- </div>
190
- <div class="form-group col-sm-6">
191
- <label class="col-sm-4 control-label">客户电话:</label>
192
- <div class="col-sm-8">
193
- <input class="form-control input_view" style=""
194
- v-model="userinfo.f_user_phone"
195
- :value.sync="showUserInformation.f_user_phone"
196
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"
197
- placeholder="客户电话"/>
198
- </div>
199
- </div>
200
- <div class="form-group col-sm-6">
201
- <label class="col-sm-4 control-label">证件类型:</label>
202
- <div class="col-sm-8">
203
- <input-select
204
- class="select select_list"
205
- :value.sync="showUserInformation.f_credentials"
206
- v-model="userinfo.f_credentials"
207
- :options="credentialsList"
208
- :disable="mark === 1 || userinfo.f_user_state === '正常'"
209
- :valueSingle="true"></input-select>
210
- </div>
211
- </div>
212
- <div class="form-group col-sm-6">
213
- <label class="col-sm-4 control-label">证件号码:</label>
214
- <div class="col-sm-8">
215
- <input class="form-control input_view" style=""
216
- placeholder="证件号码"
217
- v-model="userinfo.f_idnumber"
218
- :value="showUserInformation.f_idnumber"
219
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
220
- </div>
221
- </div>
222
- </div>
223
- <!-- 地址信息 -->
224
- <div class="form-group col-sm-12 panel panel-info" v-if="showAddress">
225
- <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
226
- <div class="col-sm-6 text-left">地址信息</div>
227
- </div>
228
- <div class="form-group col-sm-6" :class="[$v.area.required ? 'has-error' : '']">
229
- <label class="col-sm-4 control-label">小区/巷道:</label>
230
- <div class="col-sm-8">
231
- <input type="text" v-show="false" v-model="area.id" :value.sync="area.id" v-validate:area = "['required']" >
232
- <input-select
233
- class="select select_list"
234
- :value.sync="area"
235
- v-model="area"
236
- :options="areaList"
237
- @change="changeArea(),addressSplicing()"
238
- @select-search = "selectArea"
239
- :disable="mark === 1 || userinfo.f_user_state === '正常'"
240
- :valueSingle="true"></input-select>
241
- </div>
242
- </div>
243
- <div class="form-group col-sm-6">
244
- <label class="col-sm-4 control-label">楼&emsp;&emsp;号:</label>
245
- <div class="col-sm-8">
246
- <input class="form-control input_view" placeholder="楼号"
247
- v-model="userinfo.f_building"
248
- :value="userinfo.f_building"
249
- @change="addressSplicing"
250
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
251
- </div>
252
- </div>
253
- <div class="form-group col-sm-6">
254
- <label class="col-sm-4 control-label">单&emsp;&emsp;元:</label>
255
- <div class="col-sm-8">
256
- <input class="form-control input_view" placeholder="单元"
257
- v-model="userinfo.f_unit"
258
- :value="userinfo.f_unit"
259
- @change="addressSplicing"
260
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
261
- </div>
262
- </div>
263
- <div class="form-group col-sm-6" v-if="false">
264
- <label class="col-sm-4 control-label">楼&emsp;&emsp;层:</label>
265
- <div class="col-sm-8">
266
- <input class="form-control input_view" placeholder="楼层"
267
- v-model="userinfo.f_floor"
268
- :value="userinfo.f_floor"
269
- @change="addressSplicing"
270
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
271
- </div>
272
- </div>
273
- <div class="form-group col-sm-6" :class="[$v.f_room.required ? 'has-error' : '']">
274
- <label class="col-sm-4 control-label">门&ensp;牌&ensp;号:</label>
275
- <div class="col-sm-8">
276
- <input class="form-control input_view" placeholder="门牌号"
277
- v-validate:f_room = "['required']"
278
- v-model="userinfo.f_room"
279
- :value="userinfo.f_room"
280
- @change="addressSplicing"
281
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
282
- </div>
283
- </div>
284
- <div class="form-group col-sm-12">
285
- <label class="col-sm-2 control-label">地&emsp;&emsp;址:</label>
286
- <div class="col-sm-10">
287
- <input class="form-control input_view"
288
- placeholder="地址"
289
- v-model="userinfo.f_address"
290
- :value.sync="userinfo.f_address"
291
- :readonly="true"/>
292
- </div>
293
- </div>
294
- </div>
295
- <!-- 表具信息 -->
296
- <div class="form-group col-sm-12 panel panel-info" v-if="showUserFile">
297
- <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
298
- <div class="col-sm-6 text-left">表具信息</div>
299
- </div>
300
- <div class="form-group col-sm-6" :class="[$v.f_gasbrand_id.required ? 'has-error' : '']">
301
- <label class="col-sm-4 control-label">气表品牌:</label>
302
- <div class="col-sm-8">
303
- <input type="text" v-show="false" v-model="userfile.f_gasbrand_id" :value.sync="userfile.f_gasbrand_id" v-validate:f_gasbrand_id = "['required']" >
304
- <input-select
305
- class="select select_list"
306
- :value.sync="userfile.f_gasbrand_id"
307
- v-model="userfile.f_gasbrand_id"
308
- :options="meterBrandList"
309
- @change="gasbrandChange()"
310
- :disable="mark === 1 || userinfo.f_user_state === '正常' || gasbrandDisable"
311
- :valueSingle="true"></input-select>
312
- </div>
313
- </div>
314
- <div class="form-group col-sm-6" :class="[$v.f_gasmodel_id.required ? 'has-error' : '']">
315
- <label class="col-sm-4 control-label">气表型号:</label>
316
- <div class="col-sm-8">
317
- <input type="text" v-show="false" v-model="userfile.f_gasmodel_id" :value.sync="userfile.f_gasmodel_id" v-validate:f_gasmodel_id = "['required']" >
318
- <input-select
319
- class="select select_list"
320
- :value.sync="userfile.f_gasmodel_id"
321
- v-model="userfile.f_gasmodel_id"
322
- :options.sync="gasModelList"
323
- :disable="mark === 1 || userinfo.f_user_state === '正常' || gasbrandDisable"
324
- :valueSingle="true"></input-select>
325
- </div>
326
- </div>
327
- <template v-if="showInstall">
328
- <div class="form-group col-sm-6" :class="[$v.f_meternumber.required ? 'has-error' : '']">
329
- <label class="col-sm-4 control-label">表&emsp;&emsp;号:</label>
330
- <div class="col-sm-8">
331
- <input class="form-control input_view" style=""
332
- placeholder="表号" v-validate:f_meternumber = "['required']"
333
- v-model="userfile.f_meternumber"
334
- :value.sync="userfile.f_meternumber"
335
- @change="meternumberValidate()"
336
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
337
- </div>
338
- </div>
339
- <div class="form-group col-sm-6">
340
- <label class="col-sm-4 control-label">表&ensp;封&ensp;号:</label>
341
- <div class="col-sm-8">
342
- <input class="form-control input_view" style=""
343
- placeholder="表封号"
344
- v-model="userfile.f_metertitles"
345
- :value="userfile.f_metertitles"
346
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
347
- </div>
348
- </div>
349
- <div class="form-group col-sm-6">
350
- <label class="col-sm-4 control-label">表&ensp;读&ensp;数:</label>
351
- <div class="col-sm-8">
352
- <input class="form-control input_view" style=""
353
- type="number"
354
- placeholder="表读数"
355
- v-model="userfile.f_meter_base"
356
- :value="userfile.f_meter_base"
357
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
358
- </div>
359
- </div>
360
- <div class="form-group col-sm-6" v-show="false">
361
- <label class="col-sm-4 control-label">初始底数:</label>
362
- <div class="col-sm-8">
363
- <input class="form-control input_view" style=""
364
- type="number"
365
- v-model="userfile.f_initial_base"
366
- :value="userfile.f_meter_base"
367
- placeholder="初始底数"
368
- :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
369
- </div>
370
- </div>
371
- <div class="form-group col-sm-6">
372
- <label class="col-sm-4 control-label">表&emsp;&emsp;向:</label>
373
- <div class="col-sm-8">
374
- <input-select
375
- class="select select_list"
376
- :value.sync="userfile.f_aroundmeter"
377
- v-model="userfile.f_aroundmeter"
378
- :options="aroundmeters"
379
- :disable="mark === 1 || userinfo.f_user_state === '正常'"
380
- :valueSingle="true"></input-select>
381
- </div>
382
- </div>
383
- <div class="form-group col-sm-6">
384
- <label class="col-sm-4 control-label">安装位置:</label>
385
- <div class="col-sm-8">
386
- <input-select
387
- class="select select_list"
388
- :value.sync="userfile.f_position"
389
- v-model="userfile.f_position"
390
- :options="positions"
391
- :disable="mark === 1 || userinfo.f_user_state === '正常'"
392
- :valueSingle="true"></input-select>
393
- </div>
394
- </div>
395
- <div class="form-group col-sm-6">
396
- <label class="col-sm-4 control-label">安&ensp;装&ensp;人:</label>
397
- <div class="col-sm-8">
398
- <input class="form-control input_view" style=""
399
- v-model="userfile.f_install_person"
400
- :value.sync="installperson(userfile.f_install_person)"
401
- placeholder="安装人"
402
- readonly/>
403
- </div>
404
- </div>
405
- <div class="form-group col-sm-6">
406
- <label class="col-sm-4 control-label">安装日期:</label>
407
- <div class="col-sm-8">
408
- <input class="form-control input_view" style=""
409
- v-model="userfile.f_install_date"
410
- :value.sync="installdate(userfile.f_install_date)"
411
- placeholder="安装日期"
412
- readonly/>
413
- </div>
414
- </div>
415
- </template>
416
- </div>
417
- <div class="form-group col-sm-12 panel panel-info" v-if="showUserFile" >
418
- <header slot="modal-header" class="modal-header">
419
- <h4 class="modal-title">表具设备信息</h4>
420
- </header>
421
- <div v-for="(i, item) in devicesinfo" class="form-group col-sm-12 panel panel-info">
422
- <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
423
- <div class="col-sm-12 text-left">设备{{$index+1}}信息</div>
424
- </div>
425
- <div class="form-group col-sm-3">
426
- <label class="col-sm-4 control-label">设备:</label>
427
- <div class="col-sm-8">
428
- <input class="form-control input_view" style=""
429
- placeholder="设备类型"
430
- v-model="item.f_devices_type"
431
- :value="item.f_devices_type"
432
- readonly/>
433
- </div>
434
- </div>
435
- <div class="form-group col-sm-3">
436
- <label class="col-sm-4 control-label">编号:</label>
437
- <div class="col-sm-8">
438
- <input class="form-control input_view" style=""
439
- placeholder="设备编号"
440
- v-model="item.f_devices_no"
441
- :value="item.f_devices_no"
442
- readonly/>
443
- </div>
444
- </div>
445
- <div class="form-group col-sm-3">
446
- <label class="col-sm-4 control-label">品牌:</label>
447
- <div class="col-sm-8">
448
- <input class="form-control input_view" style=""
449
- placeholder="设备品牌"
450
- v-model="item.f_brand"
451
- :value="item.f_brand"
452
- readonly/>
453
- </div>
454
- </div>
455
- <div class="form-group col-sm-3">
456
- <label class="col-sm-4 control-label">型号:</label>
457
- <div class="col-sm-8">
458
- <input class="form-control input_view" style=""
459
- placeholder="设备型号"
460
- v-model="item.f_devices_model"
461
- :value="item.f_devices_model"
462
- readonly/>
463
- </div>
464
- </div>
465
- <div class="form-group col-sm-3">
466
- <label class="col-sm-4 control-label">数量:</label>
467
- <div class="col-sm-8">
468
- <input class="form-control input_view" style="" type="number"
469
- placeholder="设备数量"
470
- v-model="item.f_devices_num"
471
- :value="item.f_devices_num"
472
- readonly/>
473
- </div>
474
- </div>
475
- <div class="form-group col-sm-3">
476
- <label class="col-sm-4 control-label">功率:</label>
477
- <div class="col-sm-8">
478
- <input class="form-control input_view" style=""
479
- placeholder="设备功率"
480
- type="number"
481
- v-model="item.f_devices_tonnage"
482
- :value="item.f_devices_tonnage"
483
- readonly/>
484
- </div>
485
- </div>
486
- <div class="form-group col-sm-3">
487
- <label class="col-sm-4 control-label">日期:</label>
488
- <div class="col-sm-8">
489
- <input class="form-control input_view" style=""
490
- placeholder="安装日期"
491
- v-model="item.f_install_date"
492
- :value="item.f_install_date"
493
- readonly/>
494
- </div>
495
- </div>
496
- <div class="form-group col-sm-3">
497
- <label class="col-sm-4 control-label">单位:</label>
498
- <div class="col-sm-8">
499
- <input class="form-control input_view" style=""
500
- placeholder="功率单位"
501
- v-model="item.f_devices_tonnage_unit"
502
- :value="item.f_devices_tonnage_unit"
503
- readonly/>
504
- </div>
505
- </div>
506
- </div>
507
- </div>
508
- </article>
509
- <footer slot="modal-footer" class="modal-footer">
510
- <template v-if="mark !== 1 && userinfo.f_user_state !== '正常'">
511
- <button type="button" class="btn btn-primary" @click="saveUserFile" :disabled="!$v.valid">确认</button>
512
- </template>
513
- </footer>
514
- </modal>
515
- </validator>
516
- <validator name="x">
517
- <modal v-if="showDeleteModel" :show.sync="showDeleteModel" v-ref:modal :large="true" :backdrop="false">
518
- <header slot="modal-header" class="modal-header">
519
- <button type="button" class="close" @click="closeUserFile"><span>&times;</span></button>
520
- <h4 class="modal-title">销户原因</h4>
521
- </header>
522
- <article slot="modal-body" class="modal-body clearfix">
523
- <div class="left col-sm-12 col-xs-12" :class="[$x.f_cancel_cause.required ? 'has-error' : '']">
524
- <div class="form-group col-sm-12">
525
- <label class="col-sm-2 control-label">销户原因:</label>
526
- <div class="col-sm-10">
527
- <input class="form-control input_view" style=""
528
- v-validate:f_cancel_cause = "['required']"
529
- v-model="userinfo.f_cancel_cause"
530
- :value.sync="userinfo.f_cancel_cause"
531
- placeholder="销户原因"/>
532
- </div>
533
- </div>
534
- </div>
535
- </article>
536
- <footer slot="modal-footer" class="modal-footer">
537
- <button type="button" class="btn btn-primary" @click="deleteUser" :disabled="!$x.valid">确认</button>
538
- </footer>
539
- </modal>
540
- </validator>
541
- </template>
542
- <script>
543
- import Vue from 'vue'
544
- import {PagedList} from 'vue-client'
545
- import {HttpResetClass} from 'vue-client'
546
- import {isEmpty} from '../../../Util'
547
- // Date格式化
548
- Date.prototype.Format = function (fmt) {
549
- var o = {
550
- 'M+': this.getMonth() + 1, // 月份
551
- 'd+': this.getDate(), // 日
552
- 'H+': this.getHours(), // 小时
553
- 'm+': this.getMinutes(), // 分
554
- 's+': this.getSeconds(), // 秒
555
- 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
556
- 'S': this.getMilliseconds() // 毫秒
557
- }
558
- if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
559
- for (var k in o) {
560
- if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
561
- }
562
- return fmt
563
- }
564
-
565
- export default {
566
- title: '安装明细',
567
- props: {
568
- selectdata: {
569
- type: Object
570
- },
571
- mark: {
572
- type: Number,
573
- default: 0
574
- }
575
- },
576
- data () {
577
- return {
578
- gasbrandDisable: false,
579
- showFile: false,
580
- showModal: false,
581
- model: new PagedList('rs/sql/getApplyUserinfo', 20, null),
582
- areaList: [],
583
- area: {},
584
- userinfo: {},
585
- userfile: {},
586
- meterBrandList: [],
587
- gasModelList: [],
588
- Sign: false,
589
- fileurl: null,
590
- devicesinfo: [],
591
- showUserInformation: {},
592
- showDeleteModel: false,
593
- uuid: '',
594
- percent: '0%',
595
- progressShow: false,
596
- // 定时器
597
- timer: null,
598
- getfield: {
599
- 'f_userinfo_id': ' 客户编号 ',
600
- 'f_address': ' 地址 ',
601
- 'f_meternumber': ' 表号 ',
602
- 'f_aroundmeter': ' 表向 '
603
- },
604
- getfields:{
605
- 'f_userinfo_id':'客户编号',
606
- 'f_user_name':'客户名称',
607
- 'f_user_phone':'客户电话',
608
- 'f_meter_brand':'气表品牌',
609
- 'f_meter_style':'气表型号',
610
- 'f_idnumber':'身份证号',
611
- 'f_address':'地址',
612
- 'f_meternumber':'表号'
613
- }
614
- }
615
- },
616
- ready () {
617
- this.search()
618
- this.getMeterBrand()
619
- this.getAreaList()
620
- },
621
- methods: {
622
- async deleteUserinfo (row) {
623
- this.userinfo = row
624
- let res = await this.$showMessage('此操作不可撤回,您确定要删除这条记录吗?')
625
- if (res === 'cancel') {
626
- return
627
- }
628
- this.showDeleteModel = !this.showDeleteModel
629
- },
630
- async deleteUser () {
631
- let res = await this.$showMessage('此操作不可撤回,您确定要删除这条记录吗?')
632
- if (res === 'cancel') {
633
- return
634
- }
635
- let data = {
636
- login: this.$login.f,
637
- userinfo: this.userinfo,
638
- selectdata: this.selectdata
639
- }
640
- res = await this.$resetpost('rs/logic/applyDeleteUserinfo', {data:data}, {
641
- resolveMsg: null,
642
- rejectMsg: '删除失败!!!'
643
- })
644
-
645
- this.$dispatch('breakControl', this.selectdata)
646
- },
647
- // 保存档案
648
- async saveUserFile () {
649
- if (this.selectdata.defname === '工程施工'){
650
- await this.meternumberValidate()
651
- if( this.selectdata.f_apply_type === '民用报建'){
652
- if (this.userfile.f_meter_base - 0 === 0 || this.userfile.f_meter_base - 0 > 1.5) {
653
- this.$showAlert('表读数必须大于0小于或等于1.5!', 'warning', 3000)
654
- throw '表读数必须大于0小于或等于1.5!'
655
- }
656
- }
657
- if( this.selectdata.f_apply_type === '非民用报建'){
658
- if (this.userfile.f_meter_base - 0 === 0 || this.userfile.f_meter_base - 0 >30) {
659
- this.$showAlert('表读数必须大于0小于或等于30!', 'warning', 3000)
660
- throw '表读数必须大于0小于或等于30!'
661
- }
662
- }
663
- }
664
- let data = {
665
- user: this.$login.f,
666
- userinfo: this.userinfo,
667
- userfile: this.userfile,
668
- selectdata: this.selectdata
669
- }
670
- let res = await this.$resetpost('rs/logic/applyAddUserinfo', {data:data}, {
671
- resolveMsg: null,
672
- rejectMsg: '用户档案添加失败!!!'
673
- })
674
- this.$dispatch('breakControl', this.selectdata)
675
- },
676
- ifDisable() {
677
- if (this.selectdata.f_apply_type === '非民用报建' && this.selectdata.defname === '工程施工') {
678
- this.gasbrandDisable = true
679
- }
680
- },
681
- // 检查表号是否存在
682
- async meternumberValidate() {
683
- if (!this.userfile.f_gasbrand_id) {
684
- this.userfile.f_meternumber = ''
685
- this.$showAlert('请先选择气表品牌!!!', 'warning', 3000)
686
- return
687
- }
688
- if (this.userfile.f_gasbrand_id && this.userfile.f_meternumber) {
689
- let data = {
690
- f_meternumber: this.userfile.f_meternumber,
691
- f_gasbrand_id: this.userfile.f_gasbrand_id
692
- }
693
- if (this.userfile.f_user_id) {
694
- data.f_user_id = this.userfile.f_user_id
695
- }
696
- let res = await this.$resetpost('rs/logic/meterbrandsNumberValidate', {data:data}, {
697
- resolveMsg: null,
698
- rejectMsg: '表号验证失败!!'
699
- })
700
- console.log(`查询结果${res.data}`)
701
- console.log(res.data)
702
- if (res.data === '表号已存在' || res.data === '表号无效') {
703
- this.userfile.f_meternumber = ''
704
- this.$showAlert(res.data, 'warning', 3000)
705
- throw res.data
706
- }
707
- }
708
- },
709
- // 选择气表品牌
710
- async gasbrandChange() {
711
- // 清空已保存的气表型号
712
- this.userfile.f_gasmodel_id = null
713
- if (isEmpty(this.userfile.f_gasbrand_id)) {
714
- return
715
- }
716
- if (this.userfile.f_gasbrand_id === 'null') {
717
- this.gasModelList.push({label: '无', value: 'null'})
718
- this.userfile.f_meter_classify = 'null'
719
- return
720
- }
721
- let data = {
722
- f_gasbrand_id: this.userfile.f_gasbrand_id
723
- }
724
- let http = new HttpResetClass()
725
- let res = await http.load(
726
- 'POST',
727
- `rs/sql/getGasModel`,
728
- {data: data},
729
- {resolveMsg: null, rejectMsg: '气表型号查询失败!!!'}
730
- )
731
-
732
- this.gasModelList = res.data
733
-
734
- // data = {
735
- // tablename: 't_gasbrand',
736
- // condition: `id = '${this.userfile.f_gasbrand_id}'`
737
- // }
738
- // res = await http.load(
739
- // 'POST',
740
- // `rs/sql/applySingleTable`,
741
- // {data: data},
742
- // {resolveMsg: null, rejectMsg: '表具类型查询失败!!!'}
743
- // )
744
- // this.userfile.f_meter_classify = res.data[0].f_meter_type
745
- this.userfile.f_meter_classify = '物联网表'
746
- },
747
- // 地址拼接
748
- addressSplicing () {
749
- let f_area = this.userinfo.f_area || ''
750
- let f_slice_area = this.userinfo.f_slice_area || ''
751
- let f_street = this.userinfo.f_street || ''
752
- let f_residential_area = this.userinfo.f_residential_area || ''
753
- let f_building = this.userinfo.f_building || ''
754
- let f_building_suffix = f_building ? '号楼' : ''
755
- let f_unit = this.userinfo.f_unit || ''
756
- let f_unit_suffix = f_unit ? '单元' : ''
757
- let f_floor = this.userinfo.f_floor || ''
758
- let f_floor_suffix = f_floor ? '层' : ''
759
- let f_room = this.userinfo.f_room || ''
760
- let f_room_suffix = f_room ? '室' : ''
761
-
762
- Vue.set(this.userinfo, 'f_address', f_area + f_slice_area + f_street + f_residential_area + f_building + f_building_suffix + f_unit + f_unit_suffix + f_floor + f_floor_suffix + f_room + f_room_suffix)
763
- },
764
- // 选择小区
765
- changeArea () {
766
- if (isEmpty(this.area)) {
767
- return
768
- }
769
-
770
- this.userinfo.f_area = this.area.f_area
771
- this.userinfo.f_slice_area = this.area.f_slice_area
772
- this.userinfo.f_street = this.area.f_street
773
- this.userinfo.f_residential_area = this.area.f_residential_area
774
- this.userinfo.f_residential_area_id = this.area.id
775
- // this.addressSplicing()
776
- },
777
- openSign(){
778
- this.getFiles()
779
- this.Sign = true
780
- },
781
- importBefore(){
782
- if (this.selectdata.f_apply_nature === '小区' && !this.selectdata.f_residential_area_id){
783
- this.$showAlert('请选择小区/巷道后导入', 'warning', 3000)
784
- }else {
785
- this.showFile = !this.showFile
786
- }
787
- },
788
- async getFiles() {
789
- let http = new HttpResetClass()
790
- console.log('=========pc签字查看===============')
791
- let data = {
792
- tablename: 't_files',
793
- condition: `f_blobid = '${this.selectdata.f_process_id}' and defname = '工程施工' and fremarks = '报装手机签字文件'`
794
- }
795
- let res = await http.load('POST', `rs/sql/applySingleTable`, {data: data}, {
796
- warnMsg: null,
797
- resolveMsg: null
798
- })
799
- if(res.data.length > 0){
800
- console.log('=========签字地址===============',res.data[0])
801
- let URL = res.data[0].f_downloadpath.substring(res.data[0].f_downloadpath.lastIndexOf(":\\") + 2)
802
- res.data[0].f_downloadURL = "http://" + location.host + "/" + URL
803
- console.log("=====查看文件地址=====",res.data[0].f_downloadURL)
804
- this.fileurl = res.data[0].f_downloadURL
805
- }
806
- },
807
- // 打开安装明细
808
- async openModal (row) {
809
- this.ifDisable()
810
- if (row) {
811
- this.getDeviceList(row)
812
- console.log('------------------修正---------------------',row)
813
- this.userinfo = row
814
-
815
-
816
- let data = {
817
- tablename: 't_userfiles',
818
- condition: `f_userinfo_id = ${row.f_userinfo_id}`
819
- }
820
- let http = new HttpResetClass()
821
- let res = await http.load(
822
- 'POST',
823
- `rs/sql/applySingleTable`,
824
- {data: data},
825
- {resolveMsg: null, rejectMsg: '表档案查询失败!!!'}
826
- )
827
- this.userfile = res.data[0]
828
-
829
- if (this.userfile.f_gasbrand_id === 0) {
830
- this.userfile.f_gasbrand_id = null
831
- }
832
- if (this.userfile.f_gasmodel_id === 0) {
833
- this.userfile.f_gasmodel_id = null
834
- }
835
-
836
- if (!isEmpty(this.userfile.f_gasbrand_id)) {
837
- let data = {
838
- f_gasbrand_id: this.userfile.f_gasbrand_id
839
- }
840
- let http = new HttpResetClass()
841
- let res = await http.load(
842
- 'POST',
843
- `rs/sql/getGasModel`,
844
- {data: data},
845
- {resolveMsg: null, rejectMsg: '气表型号查询失败!!!'}
846
- )
847
-
848
- this.gasModelList = res.data
849
- }
850
- }
851
- if (this.selectdata.f_residential_area_id) {
852
- let data = {
853
- tablename: 't_area_address',
854
- condition: `id = '${this.selectdata.f_residential_area_id}'`
855
- }
856
- let http = new HttpResetClass()
857
- let res = await http.load(
858
- 'POST',
859
- `rs/sql/applySingleTable`,
860
- {data: data},
861
- {resolveMsg: null, rejectMsg: '小区查询失败!!!'}
862
- )
863
-
864
- this.area = res.data[0]
865
- this.selectArea(this.area.f_residential_area)
866
- this.changeArea()
867
- this.addressSplicing()
868
- }
869
-
870
- // 档案回填定位信息
871
- this.userinfo.f_lng = this.selectdata.f_lng
872
- this.userinfo.f_lat = this.selectdata.f_lat
873
- this.userinfo.f_location_address = this.selectdata.f_order_address
874
- if(!row){
875
- // 档案回填用户信息
876
- this.showUserInformation.f_user_name = this.selectdata.f_user_name
877
- this.showUserInformation.f_user_phone = this.selectdata.f_phone
878
- this.showUserInformation.f_credentials = this.selectdata.f_credentials
879
- this.showUserInformation.f_idnumber = this.selectdata.f_idnumber
880
- }
881
- this.showModal = true
882
- },
883
- async getDeviceList(row){
884
- let data = {
885
- tablename: 't_devices',
886
- condition: `f_userinfo_id = '${row.f_userinfo_id}'`
887
- }
888
- let http = new HttpResetClass()
889
- let res = await http.load(
890
- 'POST',
891
- `rs/sql/applySingleTable`,
892
- {data: data},
893
- {resolveMsg: null, rejectMsg: '设备查询失败!!!'}
894
- )
895
- this.devicesinfo = res.data
896
- },
897
- // 获取气表品牌
898
- async getMeterBrand () {
899
- let data = {
900
- }
901
-
902
- let http = new HttpResetClass()
903
- let res = await http.load(
904
- 'POST',
905
- `rs/sql/getMeterBrand`,
906
- {data: data},
907
- {resolveMsg: null, rejectMsg: '气表品牌查询失败!!!'}
908
- )
909
-
910
- this.meterBrandList = res.data
911
- this.meterBrandList.push({label: '无', value: 'null'})
912
- },
913
- // 获取小区
914
- async getAreaList () {
915
- let data = {
916
- tablename: 't_area_address',
917
- condition: `f_filiale like '%${"榆林."+this.$login.f.orgs}%' and f_area_status = '启用'`
918
- }
919
- let http = new HttpResetClass()
920
- let res = await http.load(
921
- 'POST',
922
- `rs/sql/applySingleTable`,
923
- {data: data},
924
- {resolveMsg: null, rejectMsg: '小区查询失败!!!'}
925
- )
926
- this.areaList = res.data.map(item => {
927
- item.id = String(item.id)
928
- return {
929
- label: item.f_residential_area,
930
- value: item
931
- }
932
- })
933
- },
934
- //搜索小区
935
- selectArea (val) {
936
- let pcdText = `and f_residential_area like '%${val}%'`
937
- let data = {
938
- tablename: 't_area_address',
939
- condition: `f_filiale like '%${"榆林."+this.$login.f.orgs}%' and f_area_status = '启用' ${pcdText}`
940
- }
941
- new HttpResetClass().load("POST", `rs/sql/applySingleTable`, {data:data}, {resolveMsg: null, rejectMsg: null}).then((res)=>{
942
- console.log('请求发送完成!!!!!'+JSON.stringify(res))
943
- if(res.data.length>0){
944
- this.areaList = res.data.map(item => {
945
- item.id = String(item.id)
946
- return {
947
- label: item.f_residential_area,
948
- value: item
949
- }
950
- })
951
- }
952
- })
953
- },
954
- searchCondition (args) {
955
- if (this.selectdata.f_apply_type === '分户挂表') {
956
- args.condition = args.condition + `and ui.f_userinfo_id = '${this.selectdata.f_userinfo_id}'`
957
- } else {
958
- args.condition = args.condition + `and ui.f_process_id = '${this.selectdata.f_process_id}'`
959
- }
960
-
961
- this.model.search(args.condition, args.model)
962
- },
963
- // 查询
964
- async search () {
965
- this.$refs.cp.$refs.cri.search()
966
- },
967
- // 关闭安装明细
968
- closeUserFile() {
969
- this.showModal = false
970
- this.devicesinfo = []
971
- this.area = {}
972
- this.userinfo = {}
973
- this.userfile = {}
974
- this.gasModelList = {}
975
- this.Sign = {}
976
- this.showDeleteModel = false
977
- this.search()
978
- },
979
- //关闭导入弹框
980
- closeFile() {
981
- this.showFile = false
982
- // 将选的文件清空
983
- this.$refs.file.$el.querySelector('input').value = ''
984
- this.search()
985
- },
986
- progressQuery() {
987
- console.log('导出进度开始查询')
988
- this.progressShow = true
989
- // 启动定时器之前先关闭定时器,防止之前的定时器未关闭
990
- this.closeTimer()
991
- // 立即执行一遍
992
- this.progressTask()
993
- this.timer = setInterval(this.progressTask, 3000)
994
- },
995
- async progressTask() {
996
- let http = new HttpResetClass()
997
- let res = await http.load('POST', `rs/logic/getBatchOperaPro`,{data: {uuid: this.uuid}}, {resolveMsg: null, rejectMsg: null})
998
- res = res.data
999
- console.log('进度数据', res)
1000
- if (res.result.type === 'error') {
1001
- this.$showAlert(`导入excel错误: ${res.result.msg}`, 'danger', 0)
1002
- await http.load('POST', `rs/logic/updateApplyInstallCount`,{data: this.selectdata}, {resolveMsg: null, rejectMsg: null})
1003
- this.close()
1004
- } else {
1005
- this.percent = Math.floor((res.current && res.total ? res.current/res.total*100 : 0)) + '%'
1006
-
1007
- console.log("导入当前进度",this.percent)
1008
- // 进度100%
1009
- if (this.percent === '100%') {
1010
- await http.load('POST', `rs/logic/updateApplyInstallCount`,{data: this.selectdata}, {resolveMsg: null, rejectMsg: null})
1011
- this.close()
1012
- }
1013
- }
1014
- },
1015
- // 关闭定时器
1016
- closeTimer() {
1017
- if (this.timer) {
1018
- clearInterval(this.timer)
1019
- this.timer = null
1020
- }
1021
- },
1022
- guid() {
1023
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
1024
- let r = Math.random() * 16 | 0,
1025
- v = c == 'x' ? r : (r & 0x3 | 0x8)
1026
- return v.toString(16)
1027
- })
1028
- },
1029
- close() {
1030
- this.closeTimer()
1031
- this.progressShow = false
1032
- this.percent = '0%'
1033
- this.$dispatch('breakControl', this.selectdata)
1034
- },
1035
- },
1036
- events: {
1037
- async 'onFileUpload'(file, result) {
1038
- this.uuid = this.guid();
1039
- let data = {
1040
- selectdata: this.selectdata,
1041
- filepath: result.f_downloadpath,
1042
- user: this.$login.f,
1043
- mark: this.mark,
1044
- uuid: this.uuid
1045
- }
1046
- let http = new HttpResetClass()
1047
- let res = await http.load('POST',`rs/logic/importAddressAndUserinfo`, {data:data}, {
1048
- resolveMsg: null, rejectMsg: '导入失败!!!', silent: true
1049
- }, 0)
1050
- this.showFile = false
1051
- // 将选的文件清空
1052
- this.$refs.file.$el.querySelector('input').value = ''
1053
- this.progressQuery()
1054
- }
1055
- },
1056
- computed: {
1057
- getConditions () {
1058
- return {
1059
- condition: `ui.f_process_id = '${this.selectdata.f_process_id}'`,
1060
- data: {
1061
- userid: this.$login.f.id,
1062
- f_filiale: "榆林."+this.$login.f.orgs
1063
- }
1064
- }
1065
- },
1066
- showDeleteUserInfo () {
1067
- return this.selectdata.f_apply_type === '民用报建' &&
1068
- (this.selectdata.defname === '报建受理' || this.selectdata.defname === '现场勘察')
1069
- },
1070
- newShowDeleteUserInfo () {
1071
- return this.selectdata.f_apply_type === '设备拆除' && this.selectdata.defname === '核对气量'
1072
- },
1073
- showAddress () {
1074
- return (this.selectdata.f_apply_type === '民用报建' || this.selectdata.f_apply_type === '设备拆除') && (this.selectdata.defname !== '工程施工')
1075
- },
1076
- showUserInfo () {
1077
- return (this.selectdata.f_apply_type === '民用报建' && this.selectdata.f_apply_nature !== '分户挂表') || (this.selectdata.f_apply_type === '设备拆除')
1078
- },
1079
- showUserFile () {
1080
- return (this.selectdata.f_apply_type === '民用报建' && this.selectdata.f_apply_nature !== '分户挂表' && this.selectdata.defname === '工程施工') ||
1081
- this.selectdata.f_apply_type === '非民用报建' ||
1082
- this.selectdata.f_apply_type === '设备变更' ||
1083
- this.selectdata.f_apply_type === '设备拆除' ||
1084
- this.selectdata.f_apply_type === '分户挂表'
1085
- },
1086
- showInstall () {
1087
- return (this.showUserFile && (this.selectdata.defname === '工程施工' || this.selectdata.defname === '施工通气' ||
1088
- this.selectdata.defname === '点火通气')) || (this.selectdata.f_apply_type === '设备拆除')
1089
- },
1090
- // 证件类型
1091
- credentialsList() {
1092
- return this.$appdata.getParam('证件类型')
1093
- },
1094
- // 安装人
1095
- installperson() {
1096
- return function (f_install_person) {
1097
- if (isEmpty(f_install_person)) {
1098
- return this.$login.f.name
1099
- }
1100
- return f_install_person
1101
- }
1102
- },
1103
- // 安装时间
1104
- installdate() {
1105
- return function (f_install_date) {
1106
- if (isEmpty(f_install_date)) {
1107
- return new Date().Format('yyyy-MM-dd HH:mm:ss')
1108
- }
1109
- return f_install_date
1110
- }
1111
- },
1112
- // 表向
1113
- aroundmeters() {
1114
- return this.$appdata.getParam('左右表')
1115
- },
1116
- // 安装位置
1117
- positions() {
1118
- return this.$appdata.getParam('安装位置')
1119
- },
1120
- getCondition () {
1121
- return {
1122
- condition: `ui.f_process_id = '${this.selectdata.f_process_id}'`,
1123
- data: {
1124
- userid: this.$login.f.id,
1125
- f_filiale: "榆林."+this.$login.f.orgs
1126
- }
1127
- }
1128
- }
1129
- },
1130
- watch: {
1131
- }
1132
- }
1133
- </script>
1134
- <style scoped>
1135
- .head-but{
1136
- margin-left: 5px;
1137
- height: 34px;
1138
- /*background-color: #6aa6e2;*/
1139
- border-radius: 4px;
1140
- font-family: PingFang;
1141
- color: #ffffff;
1142
- }
1143
- /*清除model中的浮动*/
1144
- .clearfix:after,.clearfix:before{
1145
- display: table;
1146
- }
1147
- .clearfix:after{
1148
- clear: both;
1149
- }
1150
- .input_view{
1151
- background-color: #ffffff;
1152
- border-radius: 2px;
1153
- border: solid 1px #c7c7c7!important;
1154
- color: #333333!important;
1155
- font-size: 15px!important;
1156
- }
1157
-
1158
- .input_view[readonly]{
1159
- border: 1px solid #DDD!important;
1160
- color:#ACA899!important;
1161
- }
1162
- .input_view:disabled{
1163
- border: 1px solid #DDD!important;
1164
- color:#ACA899!important;
1165
- }
1166
- </style>
1
+ <template>
2
+ <div style="float: right">
3
+ <export-excel :data="getConditions"
4
+ :field="getfields"
5
+ sqlurl="rs/logic/applyExportfile"
6
+ sql-name="getApplyUserinfo"
7
+ template-name='用户信息导出'
8
+ :choose-col="true"></export-excel>
9
+ </div>
10
+ <div class="col-sm-12" style="margin: 20px 0px;">
11
+
12
+ <criteria-paged :model="model" v-ref:cp>
13
+ <criteria partial='criteria' @condition-changed='$parent.searchCondition' v-ref:cri>
14
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
15
+ </div>
16
+ </criteria>
17
+ <data-grid :model="model" v-ref:grid partial='list' class="list_area table_sy" style="padding: 0px">
18
+ <template partial='head'>
19
+ <tr>
20
+ <th>序号</th>
21
+ <th>客户编号</th>
22
+ <th>客户名称</th>
23
+ <th>客户电话</th>
24
+ <th>身份证号</th>
25
+ <th>地址信息</th>
26
+ <th>表号</th>
27
+ <th>气表品牌</th>
28
+ <th>气表型号</th>
29
+ <th>
30
+ <button
31
+ type="button"
32
+ v-if="$parent.$parent.$parent.selectdata.f_apply_type !== '非民用报建'"
33
+ class="btn btn-info head-but"
34
+ @click="$parent.$parent.$parent.openModal()"
35
+ :disabled="$parent.$parent.$parent.mark === 1 ||
36
+ ($parent.$parent.$parent.model.count >= $parent.$parent.$parent.selectdata.f_apply_count &&
37
+ $parent.$parent.$parent.selectdata.defname === '报建受理') ||
38
+ ($parent.$parent.$parent.model.count >= $parent.$parent.$parent.selectdata.f_install_count &&
39
+ $parent.$parent.$parent.selectdata.defname === '工程施工') ||
40
+ $parent.$parent.$parent.selectdata.defname === '施工通气'"
41
+ >添加用户</button>
42
+ <button
43
+ v-if="$parent.$parent.$parent.selectdata.defname === '工程施工'"
44
+ type="button"
45
+ class="btn btn-info head-but"
46
+ @click="$parent.$parent.$parent.openSign()"
47
+ >签字照片</button>
48
+ <template v-if="$parent.$parent.$parent.selectdata.f_apply_type === '民用报建'">
49
+ <button type="button" class="btn btn-info head-but" v-if="$parent.$parent.$parent.mark !== 1"
50
+ @click="$parent.$parent.$parent.importBefore()">导入</button>
51
+ <a type="button" class="btn btn-info head-but" v-if="$parent.$parent.$parent.mark !== 1 && $parent.$parent.$parent.selectdata.f_apply_nature === '小区' && $parent.$parent.$parent.selectdata.defname !== '工程施工'"
52
+ href="/apply/download/excel/小区导入.xlsx" download>模板下载</a>
53
+ <a type="button" class="btn btn-info head-but" v-if="$parent.$parent.$parent.mark !== 1 && $parent.$parent.$parent.selectdata.f_apply_nature === '散户' && $parent.$parent.$parent.selectdata.defname !== '工程施工'"
54
+ href="/apply/download/excel/散户导入模板.xlsx" download>模板下载</a>
55
+ <export-excel :data="$parent.$parent.$parent.getCondition"
56
+ :field="$parent.$parent.$parent.getfield"
57
+ v-if="$parent.$parent.$parent.mark !== 1 && $parent.$parent.$parent.selectdata.f_apply_nature === '小区' && $parent.$parent.$parent.selectdata.defname === '工程施工'"
58
+ sqlurl="rs/logic/applyExportfile"
59
+ sql-name="getApplyUserinfoExcel"
60
+ template-name='待添加表号信息导出'
61
+ :choose-col="true"></export-excel>
62
+ </template>
63
+ </th>
64
+ </tr>
65
+
66
+ </template>
67
+ <template partial='body'>
68
+ <tr>
69
+ <td style="text-align: center;">
70
+ <nobr>{{$index+1}}</nobr>
71
+ </td>
72
+ <td style="text-align: center;">
73
+ <nobr>{{row.f_userinfo_id}}</nobr>
74
+ </td>
75
+ <td style="text-align: center;">
76
+ <nobr>{{row.f_user_name}}</nobr>
77
+ </td>
78
+ <td style="text-align: center;">
79
+ <nobr>{{row.f_user_phone}}</nobr>
80
+ </td>
81
+ <td style="text-align: center;">
82
+ <nobr>{{row.f_idnumber}}</nobr>
83
+ </td>
84
+ <td style="text-align: center;">
85
+ <nobr>{{row.f_address}}{{row.f_address_detail}}</nobr>
86
+ </td>
87
+ <td style="text-align: center;">
88
+ <nobr>{{row.f_meternumber}}</nobr>
89
+ </td>
90
+ <td style="text-align: center;">
91
+ <nobr>{{row.f_meter_brand}}</nobr>
92
+ </td>
93
+ <td style="text-align: center;">
94
+ <nobr>{{row.f_meter_style}}</nobr>
95
+ </td>
96
+ <td style="text-align: center;">
97
+ <nobr>
98
+ <button
99
+ type="button" name="button" class="btn btn-link"
100
+ @click="$parent.$parent.$parent.openModal(row)">
101
+ {{$parent.$parent.$parent.mark === 1 || row.f_user_state === '正常' ? '查看' : '修正'}}
102
+ </button>
103
+ <button
104
+ type="button" name="button" class="btn btn-link"
105
+ @click="$parent.$parent.$parent.deleteUserinfo(row)"
106
+ v-if="$parent.$parent.$parent.showDeleteUserInfo"
107
+ :disabled="$parent.$parent.$parent.mark === 1 || row.f_user_state === '正常'"
108
+ >
109
+ 销户
110
+ </button>
111
+ <button
112
+ type="button" name="button" class="btn btn-link"
113
+ @click="$parent.$parent.$parent.deleteUserinfo(row)"
114
+ v-if="$parent.$parent.$parent.newShowDeleteUserInfo"
115
+ >
116
+ 销户
117
+ </button>
118
+ </nobr>
119
+ </td>
120
+ </tr>
121
+ </template>
122
+ </data-grid>
123
+ </criteria-paged>
124
+ </div>
125
+ <modal v-if="showFile" :show.sync="showFile" v-ref:modal :backdrop="false" title="选择文件">
126
+ <header slot="modal-header" class="modal-header">
127
+ <button type="button" class="close" @click="closeFile"><span>&times;</span></button>
128
+ <h4 class="modal-title">选择文件</h4>
129
+ </header>
130
+ <article slot="modal-body" class="modal-body">
131
+ <div class="form-group">
132
+ <file-upload class="my-file-uploader" name="useraddressUploadFile" action="rs/file/uploadFile" tagname="确定" v-ref:file></file-upload>
133
+ </div>
134
+ </article>
135
+ <footer slot="modal-footer" class="modal-footer"></footer>
136
+ </modal>
137
+ <modal v-if="progressShow" :show.sync="progressShow" v-ref:modal :backdrop="false" title="导入进度">
138
+ <header slot="modal-header" class="modal-header">
139
+ <button type="button" class="close" @click="close"><span>&times;</span></button>
140
+ <h4 class="modal-title">导入进度</h4>
141
+ </header>
142
+ <article slot="modal-body" class="modal-body">
143
+ <div class="progress" style="margin: 20px">
144
+ <div class="progress-bar progress-bar-success progress-bar-striped active" :style="{width: percent}">
145
+ {{ percent }}
146
+ </div>
147
+ </div>
148
+ </article>
149
+ <footer slot="modal-footer" class="modal-footer"></footer>
150
+ </modal>
151
+
152
+ <modal v-if="Sign" :show.sync="Sign" v-ref:modal :large="true" :backdrop="false">
153
+ <header slot="modal-header" class="modal-header">
154
+ <button type="button" class="close" @click="closeUserFile"><span>&times;</span></button>
155
+ <h4 class="modal-title">用户签字</h4>
156
+ </header>
157
+ <article slot="modal-body" class="modal-body clearfix">
158
+ <div class="left col-sm-6 col-xs-6">
159
+ <img-self :src="fileurl" width="100%" height="100%"></img-self>
160
+ </div>
161
+ </article>
162
+ <footer slot="modal-footer" class="modal-footer">
163
+ <template v-if="mark !== 1 && userinfo.f_user_state !== '正常'">
164
+ </template>
165
+ </footer>
166
+ </modal>
167
+ <validator name="v">
168
+ <modal v-if="showModal" :show.sync="showModal" v-ref:modal :large="true" :backdrop="false">
169
+ <header slot="modal-header" class="modal-header">
170
+ <button type="button" class="close" @click="closeUserFile"><span>&times;</span></button>
171
+ <h4 class="modal-title">安装明细</h4>
172
+ </header>
173
+ <article slot="modal-body" class="modal-body clearfix">
174
+ <!-- 基本信息 -->
175
+ <div class="form-group col-sm-12 panel panel-info" v-if="showUserInfo">
176
+ <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
177
+ <div class="col-sm-6 text-left">用户信息</div>
178
+ </div>
179
+ <div class="form-group col-sm-6" :class="[$v.f_user_name.required ? 'has-error' : '']">
180
+ <label class="col-sm-4 control-label">客户名称:</label>
181
+ <div class="col-sm-8">
182
+ <input class="form-control input_view" style=""
183
+ v-validate:f_user_name = "['required']"
184
+ v-model="userinfo.f_user_name"
185
+ :value.sync="showUserInformation.f_user_name"
186
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"
187
+ placeholder="客户名称"/>
188
+ </div>
189
+ </div>
190
+ <div class="form-group col-sm-6">
191
+ <label class="col-sm-4 control-label">客户电话:</label>
192
+ <div class="col-sm-8">
193
+ <input class="form-control input_view" style=""
194
+ v-model="userinfo.f_user_phone"
195
+ :value.sync="showUserInformation.f_user_phone"
196
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"
197
+ placeholder="客户电话"/>
198
+ </div>
199
+ </div>
200
+ <div class="form-group col-sm-6">
201
+ <label class="col-sm-4 control-label">证件类型:</label>
202
+ <div class="col-sm-8">
203
+ <input-select
204
+ class="select select_list"
205
+ :value.sync="showUserInformation.f_credentials"
206
+ v-model="userinfo.f_credentials"
207
+ :options="credentialsList"
208
+ :disable="mark === 1 || userinfo.f_user_state === '正常'"
209
+ :valueSingle="true"></input-select>
210
+ </div>
211
+ </div>
212
+ <div class="form-group col-sm-6">
213
+ <label class="col-sm-4 control-label">证件号码:</label>
214
+ <div class="col-sm-8">
215
+ <input class="form-control input_view" style=""
216
+ placeholder="证件号码"
217
+ v-model="userinfo.f_idnumber"
218
+ :value="showUserInformation.f_idnumber"
219
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
220
+ </div>
221
+ </div>
222
+ </div>
223
+ <!-- 地址信息 -->
224
+ <div class="form-group col-sm-12 panel panel-info" v-if="showAddress">
225
+ <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
226
+ <div class="col-sm-6 text-left">地址信息</div>
227
+ </div>
228
+ <div class="form-group col-sm-6" :class="[$v.area.required ? 'has-error' : '']">
229
+ <label class="col-sm-4 control-label">小区/巷道:</label>
230
+ <div class="col-sm-8">
231
+ <input type="text" v-show="false" v-model="area.id" :value.sync="area.id" v-validate:area = "['required']" >
232
+ <input-select
233
+ class="select select_list"
234
+ :value.sync="area"
235
+ v-model="area"
236
+ :options="areaList"
237
+ @change="changeArea(),addressSplicing()"
238
+ @select-search = "selectArea"
239
+ :disable="mark === 1 || userinfo.f_user_state === '正常'"
240
+ :valueSingle="true"></input-select>
241
+ </div>
242
+ </div>
243
+ <div class="form-group col-sm-6">
244
+ <label class="col-sm-4 control-label">楼&emsp;&emsp;号:</label>
245
+ <div class="col-sm-8">
246
+ <input class="form-control input_view" placeholder="楼号"
247
+ v-model="userinfo.f_building"
248
+ :value="userinfo.f_building"
249
+ @change="addressSplicing"
250
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
251
+ </div>
252
+ </div>
253
+ <div class="form-group col-sm-6">
254
+ <label class="col-sm-4 control-label">单&emsp;&emsp;元:</label>
255
+ <div class="col-sm-8">
256
+ <input class="form-control input_view" placeholder="单元"
257
+ v-model="userinfo.f_unit"
258
+ :value="userinfo.f_unit"
259
+ @change="addressSplicing"
260
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
261
+ </div>
262
+ </div>
263
+ <div class="form-group col-sm-6" v-if="false">
264
+ <label class="col-sm-4 control-label">楼&emsp;&emsp;层:</label>
265
+ <div class="col-sm-8">
266
+ <input class="form-control input_view" placeholder="楼层"
267
+ v-model="userinfo.f_floor"
268
+ :value="userinfo.f_floor"
269
+ @change="addressSplicing"
270
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
271
+ </div>
272
+ </div>
273
+ <div class="form-group col-sm-6" :class="[$v.f_room.required ? 'has-error' : '']">
274
+ <label class="col-sm-4 control-label">门&ensp;牌&ensp;号:</label>
275
+ <div class="col-sm-8">
276
+ <input class="form-control input_view" placeholder="门牌号"
277
+ v-validate:f_room = "['required']"
278
+ v-model="userinfo.f_room"
279
+ :value="userinfo.f_room"
280
+ @change="addressSplicing"
281
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
282
+ </div>
283
+ </div>
284
+ <div class="form-group col-sm-12">
285
+ <label class="col-sm-2 control-label">地&emsp;&emsp;址:</label>
286
+ <div class="col-sm-10">
287
+ <input class="form-control input_view"
288
+ placeholder="地址"
289
+ v-model="userinfo.f_address"
290
+ :value.sync="userinfo.f_address"
291
+ :readonly="true"/>
292
+ </div>
293
+ </div>
294
+ </div>
295
+ <!-- 表具信息 -->
296
+ <div class="form-group col-sm-12 panel panel-info" v-if="showUserFile">
297
+ <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
298
+ <div class="col-sm-6 text-left">表具信息</div>
299
+ </div>
300
+ <div class="form-group col-sm-6" :class="[$v.f_gasbrand_id.required ? 'has-error' : '']">
301
+ <label class="col-sm-4 control-label">气表品牌:</label>
302
+ <div class="col-sm-8">
303
+ <input type="text" v-show="false" v-model="userfile.f_gasbrand_id" :value.sync="userfile.f_gasbrand_id" v-validate:f_gasbrand_id = "['required']" >
304
+ <input-select
305
+ class="select select_list"
306
+ :value.sync="userfile.f_gasbrand_id"
307
+ v-model="userfile.f_gasbrand_id"
308
+ :options="meterBrandList"
309
+ @change="gasbrandChange()"
310
+ :disable="mark === 1 || userinfo.f_user_state === '正常' || gasbrandDisable"
311
+ :valueSingle="true"></input-select>
312
+ </div>
313
+ </div>
314
+ <div class="form-group col-sm-6" :class="[$v.f_gasmodel_id.required ? 'has-error' : '']">
315
+ <label class="col-sm-4 control-label">气表型号:</label>
316
+ <div class="col-sm-8">
317
+ <input type="text" v-show="false" v-model="userfile.f_gasmodel_id" :value.sync="userfile.f_gasmodel_id" v-validate:f_gasmodel_id = "['required']" >
318
+ <input-select
319
+ class="select select_list"
320
+ :value.sync="userfile.f_gasmodel_id"
321
+ v-model="userfile.f_gasmodel_id"
322
+ :options.sync="gasModelList"
323
+ :disable="mark === 1 || userinfo.f_user_state === '正常' || gasbrandDisable"
324
+ :valueSingle="true"></input-select>
325
+ </div>
326
+ </div>
327
+ <template v-if="showInstall">
328
+ <div class="form-group col-sm-6" :class="[$v.f_meternumber.required ? 'has-error' : '']">
329
+ <label class="col-sm-4 control-label">表&emsp;&emsp;号:</label>
330
+ <div class="col-sm-8">
331
+ <input class="form-control input_view" style=""
332
+ placeholder="表号" v-validate:f_meternumber = "['required']"
333
+ v-model="userfile.f_meternumber"
334
+ :value.sync="userfile.f_meternumber"
335
+ @change="meternumberValidate()"
336
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
337
+ </div>
338
+ </div>
339
+ <div class="form-group col-sm-6">
340
+ <label class="col-sm-4 control-label">表&ensp;封&ensp;号:</label>
341
+ <div class="col-sm-8">
342
+ <input class="form-control input_view" style=""
343
+ placeholder="表封号"
344
+ v-model="userfile.f_metertitles"
345
+ :value="userfile.f_metertitles"
346
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
347
+ </div>
348
+ </div>
349
+ <div class="form-group col-sm-6">
350
+ <label class="col-sm-4 control-label">表&ensp;读&ensp;数:</label>
351
+ <div class="col-sm-8">
352
+ <input class="form-control input_view" style=""
353
+ type="number"
354
+ placeholder="表读数"
355
+ v-model="userfile.f_meter_base"
356
+ :value="userfile.f_meter_base"
357
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
358
+ </div>
359
+ </div>
360
+ <div class="form-group col-sm-6" v-show="false">
361
+ <label class="col-sm-4 control-label">初始底数:</label>
362
+ <div class="col-sm-8">
363
+ <input class="form-control input_view" style=""
364
+ type="number"
365
+ v-model="userfile.f_initial_base"
366
+ :value="userfile.f_meter_base"
367
+ placeholder="初始底数"
368
+ :readonly="mark === 1 || userinfo.f_user_state === '正常'"/>
369
+ </div>
370
+ </div>
371
+ <div class="form-group col-sm-6">
372
+ <label class="col-sm-4 control-label">表&emsp;&emsp;向:</label>
373
+ <div class="col-sm-8">
374
+ <input-select
375
+ class="select select_list"
376
+ :value.sync="userfile.f_aroundmeter"
377
+ v-model="userfile.f_aroundmeter"
378
+ :options="aroundmeters"
379
+ :disable="mark === 1 || userinfo.f_user_state === '正常'"
380
+ :valueSingle="true"></input-select>
381
+ </div>
382
+ </div>
383
+ <div class="form-group col-sm-6">
384
+ <label class="col-sm-4 control-label">安装位置:</label>
385
+ <div class="col-sm-8">
386
+ <input-select
387
+ class="select select_list"
388
+ :value.sync="userfile.f_position"
389
+ v-model="userfile.f_position"
390
+ :options="positions"
391
+ :disable="mark === 1 || userinfo.f_user_state === '正常'"
392
+ :valueSingle="true"></input-select>
393
+ </div>
394
+ </div>
395
+ <div class="form-group col-sm-6">
396
+ <label class="col-sm-4 control-label">安&ensp;装&ensp;人:</label>
397
+ <div class="col-sm-8">
398
+ <input class="form-control input_view" style=""
399
+ v-model="userfile.f_install_person"
400
+ :value.sync="installperson(userfile.f_install_person)"
401
+ placeholder="安装人"
402
+ readonly/>
403
+ </div>
404
+ </div>
405
+ <div class="form-group col-sm-6">
406
+ <label class="col-sm-4 control-label">安装日期:</label>
407
+ <div class="col-sm-8">
408
+ <input class="form-control input_view" style=""
409
+ v-model="userfile.f_install_date"
410
+ :value.sync="installdate(userfile.f_install_date)"
411
+ placeholder="安装日期"
412
+ readonly/>
413
+ </div>
414
+ </div>
415
+ </template>
416
+ </div>
417
+ <div class="form-group col-sm-12 panel panel-info" v-if="showUserFile" >
418
+ <header slot="modal-header" class="modal-header">
419
+ <h4 class="modal-title">表具设备信息</h4>
420
+ </header>
421
+ <div v-for="(i, item) in devicesinfo" class="form-group col-sm-12 panel panel-info">
422
+ <div class="panel-heading head col-sm-12" style="background-color: #e8f4ff;margin-bottom: 10px">
423
+ <div class="col-sm-12 text-left">设备{{$index+1}}信息</div>
424
+ </div>
425
+ <div class="form-group col-sm-3">
426
+ <label class="col-sm-4 control-label">设备:</label>
427
+ <div class="col-sm-8">
428
+ <input class="form-control input_view" style=""
429
+ placeholder="设备类型"
430
+ v-model="item.f_devices_type"
431
+ :value="item.f_devices_type"
432
+ readonly/>
433
+ </div>
434
+ </div>
435
+ <div class="form-group col-sm-3">
436
+ <label class="col-sm-4 control-label">编号:</label>
437
+ <div class="col-sm-8">
438
+ <input class="form-control input_view" style=""
439
+ placeholder="设备编号"
440
+ v-model="item.f_devices_no"
441
+ :value="item.f_devices_no"
442
+ readonly/>
443
+ </div>
444
+ </div>
445
+ <div class="form-group col-sm-3">
446
+ <label class="col-sm-4 control-label">品牌:</label>
447
+ <div class="col-sm-8">
448
+ <input class="form-control input_view" style=""
449
+ placeholder="设备品牌"
450
+ v-model="item.f_brand"
451
+ :value="item.f_brand"
452
+ readonly/>
453
+ </div>
454
+ </div>
455
+ <div class="form-group col-sm-3">
456
+ <label class="col-sm-4 control-label">型号:</label>
457
+ <div class="col-sm-8">
458
+ <input class="form-control input_view" style=""
459
+ placeholder="设备型号"
460
+ v-model="item.f_devices_model"
461
+ :value="item.f_devices_model"
462
+ readonly/>
463
+ </div>
464
+ </div>
465
+ <div class="form-group col-sm-3">
466
+ <label class="col-sm-4 control-label">数量:</label>
467
+ <div class="col-sm-8">
468
+ <input class="form-control input_view" style="" type="number"
469
+ placeholder="设备数量"
470
+ v-model="item.f_devices_num"
471
+ :value="item.f_devices_num"
472
+ readonly/>
473
+ </div>
474
+ </div>
475
+ <div class="form-group col-sm-3">
476
+ <label class="col-sm-4 control-label">功率:</label>
477
+ <div class="col-sm-8">
478
+ <input class="form-control input_view" style=""
479
+ placeholder="设备功率"
480
+ type="number"
481
+ v-model="item.f_devices_tonnage"
482
+ :value="item.f_devices_tonnage"
483
+ readonly/>
484
+ </div>
485
+ </div>
486
+ <div class="form-group col-sm-3">
487
+ <label class="col-sm-4 control-label">日期:</label>
488
+ <div class="col-sm-8">
489
+ <input class="form-control input_view" style=""
490
+ placeholder="安装日期"
491
+ v-model="item.f_install_date"
492
+ :value="item.f_install_date"
493
+ readonly/>
494
+ </div>
495
+ </div>
496
+ <div class="form-group col-sm-3">
497
+ <label class="col-sm-4 control-label">单位:</label>
498
+ <div class="col-sm-8">
499
+ <input class="form-control input_view" style=""
500
+ placeholder="功率单位"
501
+ v-model="item.f_devices_tonnage_unit"
502
+ :value="item.f_devices_tonnage_unit"
503
+ readonly/>
504
+ </div>
505
+ </div>
506
+ </div>
507
+ </div>
508
+ </article>
509
+ <footer slot="modal-footer" class="modal-footer">
510
+ <template v-if="mark !== 1 && userinfo.f_user_state !== '正常'">
511
+ <button type="button" class="btn btn-primary" @click="saveUserFile" :disabled="!$v.valid">确认</button>
512
+ </template>
513
+ </footer>
514
+ </modal>
515
+ </validator>
516
+ <validator name="x">
517
+ <modal v-if="showDeleteModel" :show.sync="showDeleteModel" v-ref:modal :large="true" :backdrop="false">
518
+ <header slot="modal-header" class="modal-header">
519
+ <button type="button" class="close" @click="closeUserFile"><span>&times;</span></button>
520
+ <h4 class="modal-title">销户原因</h4>
521
+ </header>
522
+ <article slot="modal-body" class="modal-body clearfix">
523
+ <div class="left col-sm-12 col-xs-12" :class="[$x.f_cancel_cause.required ? 'has-error' : '']">
524
+ <div class="form-group col-sm-12">
525
+ <label class="col-sm-2 control-label">销户原因:</label>
526
+ <div class="col-sm-10">
527
+ <input class="form-control input_view" style=""
528
+ v-validate:f_cancel_cause = "['required']"
529
+ v-model="userinfo.f_cancel_cause"
530
+ :value.sync="userinfo.f_cancel_cause"
531
+ placeholder="销户原因"/>
532
+ </div>
533
+ </div>
534
+ </div>
535
+ </article>
536
+ <footer slot="modal-footer" class="modal-footer">
537
+ <button type="button" class="btn btn-primary" @click="deleteUser" :disabled="!$x.valid">确认</button>
538
+ </footer>
539
+ </modal>
540
+ </validator>
541
+ </template>
542
+ <script>
543
+ import Vue from 'vue'
544
+ import {PagedList} from 'vue-client'
545
+ import {HttpResetClass} from 'vue-client'
546
+ import {isEmpty} from '../../../Util'
547
+ // Date格式化
548
+ Date.prototype.Format = function (fmt) {
549
+ var o = {
550
+ 'M+': this.getMonth() + 1, // 月份
551
+ 'd+': this.getDate(), // 日
552
+ 'H+': this.getHours(), // 小时
553
+ 'm+': this.getMinutes(), // 分
554
+ 's+': this.getSeconds(), // 秒
555
+ 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
556
+ 'S': this.getMilliseconds() // 毫秒
557
+ }
558
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
559
+ for (var k in o) {
560
+ if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
561
+ }
562
+ return fmt
563
+ }
564
+
565
+ export default {
566
+ title: '安装明细',
567
+ props: {
568
+ selectdata: {
569
+ type: Object
570
+ },
571
+ mark: {
572
+ type: Number,
573
+ default: 0
574
+ }
575
+ },
576
+ data () {
577
+ return {
578
+ gasbrandDisable: false,
579
+ showFile: false,
580
+ showModal: false,
581
+ model: new PagedList('rs/sql/getApplyUserinfo', 20, null),
582
+ areaList: [],
583
+ area: {},
584
+ userinfo: {},
585
+ userfile: {},
586
+ meterBrandList: [],
587
+ gasModelList: [],
588
+ Sign: false,
589
+ fileurl: null,
590
+ devicesinfo: [],
591
+ showUserInformation: {},
592
+ showDeleteModel: false,
593
+ uuid: '',
594
+ percent: '0%',
595
+ progressShow: false,
596
+ // 定时器
597
+ timer: null,
598
+ getfield: {
599
+ 'f_userinfo_id': ' 客户编号 ',
600
+ 'f_address': ' 地址 ',
601
+ 'f_meternumber': ' 表号 ',
602
+ 'f_aroundmeter': ' 表向 '
603
+ },
604
+ getfields:{
605
+ 'f_userinfo_id':'客户编号',
606
+ 'f_user_name':'客户名称',
607
+ 'f_user_phone':'客户电话',
608
+ 'f_meter_brand':'气表品牌',
609
+ 'f_meter_style':'气表型号',
610
+ 'f_idnumber':'身份证号',
611
+ 'f_address':'地址',
612
+ 'f_meternumber':'表号'
613
+ }
614
+ }
615
+ },
616
+ ready () {
617
+ this.search()
618
+ this.getMeterBrand()
619
+ this.getAreaList()
620
+ },
621
+ methods: {
622
+ async deleteUserinfo (row) {
623
+ this.userinfo = row
624
+ let res = await this.$showMessage('此操作不可撤回,您确定要删除这条记录吗?')
625
+ if (res === 'cancel') {
626
+ return
627
+ }
628
+ this.showDeleteModel = !this.showDeleteModel
629
+ },
630
+ async deleteUser () {
631
+ let res = await this.$showMessage('此操作不可撤回,您确定要删除这条记录吗?')
632
+ if (res === 'cancel') {
633
+ return
634
+ }
635
+ let data = {
636
+ login: this.$login.f,
637
+ userinfo: this.userinfo,
638
+ selectdata: this.selectdata
639
+ }
640
+ res = await this.$resetpost('rs/logic/applyDeleteUserinfo', {data:data}, {
641
+ resolveMsg: null,
642
+ rejectMsg: '删除失败!!!'
643
+ })
644
+
645
+ this.$dispatch('breakControl', this.selectdata)
646
+ },
647
+ // 保存档案
648
+ async saveUserFile () {
649
+ if (this.selectdata.defname === '工程施工'){
650
+ await this.meternumberValidate()
651
+ if( this.selectdata.f_apply_type === '民用报建'){
652
+ if (this.userfile.f_meter_base - 0 === 0 || this.userfile.f_meter_base - 0 > 1.5) {
653
+ this.$showAlert('表读数必须大于0小于或等于1.5!', 'warning', 3000)
654
+ throw '表读数必须大于0小于或等于1.5!'
655
+ }
656
+ }
657
+ if( this.selectdata.f_apply_type === '非民用报建'){
658
+ if (this.userfile.f_meter_base - 0 === 0 || this.userfile.f_meter_base - 0 >30) {
659
+ this.$showAlert('表读数必须大于0小于或等于30!', 'warning', 3000)
660
+ throw '表读数必须大于0小于或等于30!'
661
+ }
662
+ }
663
+ }
664
+ let data = {
665
+ user: this.$login.f,
666
+ userinfo: this.userinfo,
667
+ userfile: this.userfile,
668
+ selectdata: this.selectdata
669
+ }
670
+ let res = await this.$resetpost('rs/logic/applyAddUserinfo', {data:data}, {
671
+ resolveMsg: null,
672
+ rejectMsg: '用户档案添加失败!!!'
673
+ })
674
+ this.$dispatch('breakControl', this.selectdata)
675
+ },
676
+ ifDisable() {
677
+ if (this.selectdata.f_apply_type === '非民用报建' && this.selectdata.defname === '工程施工') {
678
+ this.gasbrandDisable = true
679
+ }
680
+ },
681
+ // 检查表号是否存在
682
+ async meternumberValidate() {
683
+ if (!this.userfile.f_gasbrand_id) {
684
+ this.userfile.f_meternumber = ''
685
+ this.$showAlert('请先选择气表品牌!!!', 'warning', 3000)
686
+ return
687
+ }
688
+ if (this.userfile.f_gasbrand_id && this.userfile.f_meternumber) {
689
+ let data = {
690
+ f_meternumber: this.userfile.f_meternumber,
691
+ f_gasbrand_id: this.userfile.f_gasbrand_id
692
+ }
693
+ if (this.userfile.f_user_id) {
694
+ data.f_user_id = this.userfile.f_user_id
695
+ }
696
+ let res = await this.$resetpost('rs/logic/meterbrandsNumberValidate', {data:data}, {
697
+ resolveMsg: null,
698
+ rejectMsg: '表号验证失败!!'
699
+ })
700
+ console.log(`查询结果${res.data}`)
701
+ console.log(res.data)
702
+ if (res.data === '表号已存在' || res.data === '表号无效') {
703
+ this.userfile.f_meternumber = ''
704
+ this.$showAlert(res.data, 'warning', 3000)
705
+ throw res.data
706
+ }
707
+ }
708
+ },
709
+ // 选择气表品牌
710
+ async gasbrandChange() {
711
+ // 清空已保存的气表型号
712
+ this.userfile.f_gasmodel_id = null
713
+ if (isEmpty(this.userfile.f_gasbrand_id)) {
714
+ return
715
+ }
716
+ if (this.userfile.f_gasbrand_id === 'null') {
717
+ this.gasModelList.push({label: '无', value: 'null'})
718
+ this.userfile.f_meter_classify = 'null'
719
+ return
720
+ }
721
+ let data = {
722
+ f_gasbrand_id: this.userfile.f_gasbrand_id
723
+ }
724
+ let http = new HttpResetClass()
725
+ let res = await http.load(
726
+ 'POST',
727
+ `rs/sql/getGasModel`,
728
+ {data: data},
729
+ {resolveMsg: null, rejectMsg: '气表型号查询失败!!!'}
730
+ )
731
+
732
+ this.gasModelList = res.data
733
+
734
+ // data = {
735
+ // tablename: 't_gasbrand',
736
+ // condition: `id = '${this.userfile.f_gasbrand_id}'`
737
+ // }
738
+ // res = await http.load(
739
+ // 'POST',
740
+ // `rs/sql/applySingleTable`,
741
+ // {data: data},
742
+ // {resolveMsg: null, rejectMsg: '表具类型查询失败!!!'}
743
+ // )
744
+ // this.userfile.f_meter_classify = res.data[0].f_meter_type
745
+ this.userfile.f_meter_classify = '物联网表'
746
+ },
747
+ // 地址拼接
748
+ addressSplicing () {
749
+ let f_area = this.userinfo.f_area || ''
750
+ let f_slice_area = this.userinfo.f_slice_area || ''
751
+ let f_street = this.userinfo.f_street || ''
752
+ let f_residential_area = this.userinfo.f_residential_area || ''
753
+ let f_building = this.userinfo.f_building || ''
754
+ let f_building_suffix = f_building ? '号楼' : ''
755
+ let f_unit = this.userinfo.f_unit || ''
756
+ let f_unit_suffix = f_unit ? '单元' : ''
757
+ let f_floor = this.userinfo.f_floor || ''
758
+ let f_floor_suffix = f_floor ? '层' : ''
759
+ let f_room = this.userinfo.f_room || ''
760
+ let f_room_suffix = f_room ? '室' : ''
761
+
762
+ Vue.set(this.userinfo, 'f_address', f_area + f_slice_area + f_street + f_residential_area + f_building + f_building_suffix + f_unit + f_unit_suffix + f_floor + f_floor_suffix + f_room + f_room_suffix)
763
+ },
764
+ // 选择小区
765
+ changeArea () {
766
+ if (isEmpty(this.area)) {
767
+ return
768
+ }
769
+
770
+ this.userinfo.f_area = this.area.f_area
771
+ this.userinfo.f_slice_area = this.area.f_slice_area
772
+ this.userinfo.f_street = this.area.f_street
773
+ this.userinfo.f_residential_area = this.area.f_residential_area
774
+ this.userinfo.f_residential_area_id = this.area.id
775
+ // this.addressSplicing()
776
+ },
777
+ openSign(){
778
+ this.getFiles()
779
+ this.Sign = true
780
+ },
781
+ importBefore(){
782
+ if (this.selectdata.f_apply_nature === '小区' && !this.selectdata.f_residential_area_id){
783
+ this.$showAlert('请选择小区/巷道后导入', 'warning', 3000)
784
+ }else {
785
+ this.showFile = !this.showFile
786
+ }
787
+ },
788
+ async getFiles() {
789
+ let http = new HttpResetClass()
790
+ console.log('=========pc签字查看===============')
791
+ let data = {
792
+ tablename: 't_files',
793
+ condition: `f_blobid = '${this.selectdata.f_process_id}' and defname = '工程施工' and fremarks = '报装手机签字文件'`
794
+ }
795
+ let res = await http.load('POST', `rs/sql/applySingleTable`, {data: data}, {
796
+ warnMsg: null,
797
+ resolveMsg: null
798
+ })
799
+ if(res.data.length > 0){
800
+ console.log('=========签字地址===============',res.data[0])
801
+ let URL = res.data[0].f_downloadpath.substring(res.data[0].f_downloadpath.lastIndexOf(":\\") + 2)
802
+ res.data[0].f_downloadURL = "http://" + location.host + "/" + URL
803
+ console.log("=====查看文件地址=====",res.data[0].f_downloadURL)
804
+ this.fileurl = res.data[0].f_downloadURL
805
+ }
806
+ },
807
+ // 打开安装明细
808
+ async openModal (row) {
809
+ this.ifDisable()
810
+ if (row) {
811
+ this.getDeviceList(row)
812
+ console.log('------------------修正---------------------',row)
813
+ this.userinfo = row
814
+
815
+
816
+ let data = {
817
+ tablename: 't_userfiles',
818
+ condition: `f_userinfo_id = ${row.f_userinfo_id}`
819
+ }
820
+ let http = new HttpResetClass()
821
+ let res = await http.load(
822
+ 'POST',
823
+ `rs/sql/applySingleTable`,
824
+ {data: data},
825
+ {resolveMsg: null, rejectMsg: '表档案查询失败!!!'}
826
+ )
827
+ this.userfile = res.data[0]
828
+
829
+ if (this.userfile.f_gasbrand_id === 0) {
830
+ this.userfile.f_gasbrand_id = null
831
+ }
832
+ if (this.userfile.f_gasmodel_id === 0) {
833
+ this.userfile.f_gasmodel_id = null
834
+ }
835
+
836
+ if (!isEmpty(this.userfile.f_gasbrand_id)) {
837
+ let data = {
838
+ f_gasbrand_id: this.userfile.f_gasbrand_id
839
+ }
840
+ let http = new HttpResetClass()
841
+ let res = await http.load(
842
+ 'POST',
843
+ `rs/sql/getGasModel`,
844
+ {data: data},
845
+ {resolveMsg: null, rejectMsg: '气表型号查询失败!!!'}
846
+ )
847
+
848
+ this.gasModelList = res.data
849
+ }
850
+ }
851
+ if (this.selectdata.f_residential_area_id) {
852
+ let data = {
853
+ tablename: 't_area_address',
854
+ condition: `id = '${this.selectdata.f_residential_area_id}'`
855
+ }
856
+ let http = new HttpResetClass()
857
+ let res = await http.load(
858
+ 'POST',
859
+ `rs/sql/applySingleTable`,
860
+ {data: data},
861
+ {resolveMsg: null, rejectMsg: '小区查询失败!!!'}
862
+ )
863
+
864
+ this.area = res.data[0]
865
+ this.selectArea(this.area.f_residential_area)
866
+ this.changeArea()
867
+ this.addressSplicing()
868
+ }
869
+
870
+ // 档案回填定位信息
871
+ this.userinfo.f_lng = this.selectdata.f_lng
872
+ this.userinfo.f_lat = this.selectdata.f_lat
873
+ this.userinfo.f_location_address = this.selectdata.f_order_address
874
+ if(!row){
875
+ // 档案回填用户信息
876
+ this.showUserInformation.f_user_name = this.selectdata.f_user_name
877
+ this.showUserInformation.f_user_phone = this.selectdata.f_phone
878
+ this.showUserInformation.f_credentials = this.selectdata.f_credentials
879
+ this.showUserInformation.f_idnumber = this.selectdata.f_idnumber
880
+ }
881
+ this.showModal = true
882
+ },
883
+ async getDeviceList(row){
884
+ let data = {
885
+ tablename: 't_devices',
886
+ condition: `f_userinfo_id = '${row.f_userinfo_id}'`
887
+ }
888
+ let http = new HttpResetClass()
889
+ let res = await http.load(
890
+ 'POST',
891
+ `rs/sql/applySingleTable`,
892
+ {data: data},
893
+ {resolveMsg: null, rejectMsg: '设备查询失败!!!'}
894
+ )
895
+ this.devicesinfo = res.data
896
+ },
897
+ // 获取气表品牌
898
+ async getMeterBrand () {
899
+ let data = {
900
+ }
901
+
902
+ let http = new HttpResetClass()
903
+ let res = await http.load(
904
+ 'POST',
905
+ `rs/sql/getMeterBrand`,
906
+ {data: data},
907
+ {resolveMsg: null, rejectMsg: '气表品牌查询失败!!!'}
908
+ )
909
+
910
+ this.meterBrandList = res.data
911
+ this.meterBrandList.push({label: '无', value: 'null'})
912
+ },
913
+ // 获取小区
914
+ async getAreaList () {
915
+ let data = {
916
+ tablename: 't_area_address',
917
+ condition: `f_filiale like '%${"榆林."+this.$login.f.orgs}%' and f_area_status = '启用'`
918
+ }
919
+ let http = new HttpResetClass()
920
+ let res = await http.load(
921
+ 'POST',
922
+ `rs/sql/applySingleTable`,
923
+ {data: data},
924
+ {resolveMsg: null, rejectMsg: '小区查询失败!!!'}
925
+ )
926
+ this.areaList = res.data.map(item => {
927
+ item.id = String(item.id)
928
+ return {
929
+ label: item.f_residential_area,
930
+ value: item
931
+ }
932
+ })
933
+ },
934
+ //搜索小区
935
+ selectArea (val) {
936
+ let pcdText = `and f_residential_area like '%${val}%'`
937
+ let data = {
938
+ tablename: 't_area_address',
939
+ condition: `f_filiale like '%${"榆林."+this.$login.f.orgs}%' and f_area_status = '启用' ${pcdText}`
940
+ }
941
+ new HttpResetClass().load("POST", `rs/sql/applySingleTable`, {data:data}, {resolveMsg: null, rejectMsg: null}).then((res)=>{
942
+ console.log('请求发送完成!!!!!'+JSON.stringify(res))
943
+ if(res.data.length>0){
944
+ this.areaList = res.data.map(item => {
945
+ item.id = String(item.id)
946
+ return {
947
+ label: item.f_residential_area,
948
+ value: item
949
+ }
950
+ })
951
+ }
952
+ })
953
+ },
954
+ searchCondition (args) {
955
+ if (this.selectdata.f_apply_type === '分户挂表') {
956
+ args.condition = args.condition + `and ui.f_userinfo_id = '${this.selectdata.f_userinfo_id}'`
957
+ } else {
958
+ args.condition = args.condition + `and ui.f_process_id = '${this.selectdata.f_process_id}'`
959
+ }
960
+
961
+ this.model.search(args.condition, args.model)
962
+ },
963
+ // 查询
964
+ async search () {
965
+ this.$refs.cp.$refs.cri.search()
966
+ },
967
+ // 关闭安装明细
968
+ closeUserFile() {
969
+ this.showModal = false
970
+ this.devicesinfo = []
971
+ this.area = {}
972
+ this.userinfo = {}
973
+ this.userfile = {}
974
+ this.gasModelList = {}
975
+ this.Sign = {}
976
+ this.showDeleteModel = false
977
+ this.search()
978
+ },
979
+ //关闭导入弹框
980
+ closeFile() {
981
+ this.showFile = false
982
+ // 将选的文件清空
983
+ this.$refs.file.$el.querySelector('input').value = ''
984
+ this.search()
985
+ },
986
+ progressQuery() {
987
+ console.log('导出进度开始查询')
988
+ this.progressShow = true
989
+ // 启动定时器之前先关闭定时器,防止之前的定时器未关闭
990
+ this.closeTimer()
991
+ // 立即执行一遍
992
+ this.progressTask()
993
+ this.timer = setInterval(this.progressTask, 3000)
994
+ },
995
+ async progressTask() {
996
+ let http = new HttpResetClass()
997
+ let res = await http.load('POST', `rs/logic/getBatchOperaPro`,{data: {uuid: this.uuid}}, {resolveMsg: null, rejectMsg: null})
998
+ res = res.data
999
+ console.log('进度数据', res)
1000
+ if (res.result.type === 'error') {
1001
+ this.$showAlert(`导入excel错误: ${res.result.msg}`, 'danger', 0)
1002
+ await http.load('POST', `rs/logic/updateApplyInstallCount`,{data: this.selectdata}, {resolveMsg: null, rejectMsg: null})
1003
+ this.close()
1004
+ } else {
1005
+ this.percent = Math.floor((res.current && res.total ? res.current/res.total*100 : 0)) + '%'
1006
+
1007
+ console.log("导入当前进度",this.percent)
1008
+ // 进度100%
1009
+ if (this.percent === '100%') {
1010
+ await http.load('POST', `rs/logic/updateApplyInstallCount`,{data: this.selectdata}, {resolveMsg: null, rejectMsg: null})
1011
+ this.close()
1012
+ }
1013
+ }
1014
+ },
1015
+ // 关闭定时器
1016
+ closeTimer() {
1017
+ if (this.timer) {
1018
+ clearInterval(this.timer)
1019
+ this.timer = null
1020
+ }
1021
+ },
1022
+ guid() {
1023
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
1024
+ let r = Math.random() * 16 | 0,
1025
+ v = c == 'x' ? r : (r & 0x3 | 0x8)
1026
+ return v.toString(16)
1027
+ })
1028
+ },
1029
+ close() {
1030
+ this.closeTimer()
1031
+ this.progressShow = false
1032
+ this.percent = '0%'
1033
+ this.$dispatch('breakControl', this.selectdata)
1034
+ },
1035
+ },
1036
+ events: {
1037
+ async 'onFileUpload'(file, result) {
1038
+ this.uuid = this.guid();
1039
+ let data = {
1040
+ selectdata: this.selectdata,
1041
+ filepath: result.f_downloadpath,
1042
+ user: this.$login.f,
1043
+ mark: this.mark,
1044
+ uuid: this.uuid
1045
+ }
1046
+ let http = new HttpResetClass()
1047
+ let res = await http.load('POST',`rs/logic/importAddressAndUserinfo`, {data:data}, {
1048
+ resolveMsg: null, rejectMsg: '导入失败!!!', silent: true
1049
+ }, 0)
1050
+ this.showFile = false
1051
+ // 将选的文件清空
1052
+ this.$refs.file.$el.querySelector('input').value = ''
1053
+ this.progressQuery()
1054
+ }
1055
+ },
1056
+ computed: {
1057
+ getConditions () {
1058
+ return {
1059
+ condition: `ui.f_process_id = '${this.selectdata.f_process_id}'`,
1060
+ data: {
1061
+ userid: this.$login.f.id,
1062
+ f_filiale: "榆林."+this.$login.f.orgs
1063
+ }
1064
+ }
1065
+ },
1066
+ showDeleteUserInfo () {
1067
+ return this.selectdata.f_apply_type === '民用报建' &&
1068
+ (this.selectdata.defname === '报建受理' || this.selectdata.defname === '现场勘察')
1069
+ },
1070
+ newShowDeleteUserInfo () {
1071
+ return this.selectdata.f_apply_type === '设备拆除' && this.selectdata.defname === '核对气量'
1072
+ },
1073
+ showAddress () {
1074
+ return (this.selectdata.f_apply_type === '民用报建' || this.selectdata.f_apply_type === '设备拆除') && (this.selectdata.defname !== '工程施工')
1075
+ },
1076
+ showUserInfo () {
1077
+ return (this.selectdata.f_apply_type === '民用报建' && this.selectdata.f_apply_nature !== '分户挂表') || (this.selectdata.f_apply_type === '设备拆除')
1078
+ },
1079
+ showUserFile () {
1080
+ return (this.selectdata.f_apply_type === '民用报建' && this.selectdata.f_apply_nature !== '分户挂表' && this.selectdata.defname === '工程施工') ||
1081
+ this.selectdata.f_apply_type === '非民用报建' ||
1082
+ this.selectdata.f_apply_type === '设备变更' ||
1083
+ this.selectdata.f_apply_type === '设备拆除' ||
1084
+ this.selectdata.f_apply_type === '分户挂表'
1085
+ },
1086
+ showInstall () {
1087
+ return (this.showUserFile && (this.selectdata.defname === '工程施工' || this.selectdata.defname === '施工通气' ||
1088
+ this.selectdata.defname === '点火通气')) || (this.selectdata.f_apply_type === '设备拆除')
1089
+ },
1090
+ // 证件类型
1091
+ credentialsList() {
1092
+ return this.$appdata.getParam('证件类型')
1093
+ },
1094
+ // 安装人
1095
+ installperson() {
1096
+ return function (f_install_person) {
1097
+ if (isEmpty(f_install_person)) {
1098
+ return this.$login.f.name
1099
+ }
1100
+ return f_install_person
1101
+ }
1102
+ },
1103
+ // 安装时间
1104
+ installdate() {
1105
+ return function (f_install_date) {
1106
+ if (isEmpty(f_install_date)) {
1107
+ return new Date().Format('yyyy-MM-dd HH:mm:ss')
1108
+ }
1109
+ return f_install_date
1110
+ }
1111
+ },
1112
+ // 表向
1113
+ aroundmeters() {
1114
+ return this.$appdata.getParam('左右表')
1115
+ },
1116
+ // 安装位置
1117
+ positions() {
1118
+ return this.$appdata.getParam('安装位置')
1119
+ },
1120
+ getCondition () {
1121
+ return {
1122
+ condition: `ui.f_process_id = '${this.selectdata.f_process_id}'`,
1123
+ data: {
1124
+ userid: this.$login.f.id,
1125
+ f_filiale: "榆林."+this.$login.f.orgs
1126
+ }
1127
+ }
1128
+ }
1129
+ },
1130
+ watch: {
1131
+ }
1132
+ }
1133
+ </script>
1134
+ <style scoped>
1135
+ .head-but{
1136
+ margin-left: 5px;
1137
+ height: 34px;
1138
+ /*background-color: #6aa6e2;*/
1139
+ border-radius: 4px;
1140
+ font-family: PingFang;
1141
+ color: #ffffff;
1142
+ }
1143
+ /*清除model中的浮动*/
1144
+ .clearfix:after,.clearfix:before{
1145
+ display: table;
1146
+ }
1147
+ .clearfix:after{
1148
+ clear: both;
1149
+ }
1150
+ .input_view{
1151
+ background-color: #ffffff;
1152
+ border-radius: 2px;
1153
+ border: solid 1px #c7c7c7!important;
1154
+ color: #333333!important;
1155
+ font-size: 15px!important;
1156
+ }
1157
+
1158
+ .input_view[readonly]{
1159
+ border: 1px solid #DDD!important;
1160
+ color:#ACA899!important;
1161
+ }
1162
+ .input_view:disabled{
1163
+ border: 1px solid #DDD!important;
1164
+ color:#ACA899!important;
1165
+ }
1166
+ </style>