sale-client 4.2.23 → 4.2.25
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.
package/package.json
CHANGED
|
@@ -345,8 +345,14 @@
|
|
|
345
345
|
<label for="f_adjustable" class="font_normal_body" style="width: auto;letter-spacing: 0.5em;margin-right: -0.5em;margin-left: -0.5em"> {{getConfigLabelName('f_adjustable','调压箱')}}</label>
|
|
346
346
|
<input type="text" v-model="row.f_adjustable" v-show="false"
|
|
347
347
|
v-validate:f_adjustable=getConfigValidate("f_adjustable",false)>
|
|
348
|
-
<v-select :value.sync="row.f_adjustable"
|
|
349
|
-
|
|
348
|
+
<v-select :value.sync="row.f_adjustable"
|
|
349
|
+
:options='adjustables'
|
|
350
|
+
placeholder='调压箱'
|
|
351
|
+
close-on-select
|
|
352
|
+
@select-search="getAdjustables"
|
|
353
|
+
v-model='row.f_adjustable'
|
|
354
|
+
:search='true'>
|
|
355
|
+
</v-select>
|
|
350
356
|
</div>
|
|
351
357
|
<div class="col-sm-4 form-group" :class="[$m.f_hand_date.required ? 'has-error' : '']"
|
|
352
358
|
v-show="(formconfig && formconfig.f_hand_date && formconfig.f_hand_date.required) || !onlyshowmust"
|
|
@@ -720,6 +726,7 @@
|
|
|
720
726
|
opteratormetrbook: false, // 抄表册操作
|
|
721
727
|
oldrow: [],
|
|
722
728
|
overdueset: [],
|
|
729
|
+
adjustables: [],
|
|
723
730
|
isiot: true,
|
|
724
731
|
meterNumberDisabled: false,
|
|
725
732
|
meterChangeDisabled: this.$appdata.getSingleValue('建档后禁止更改表号') ? this.$appdata.getSingleValue('建档后禁止更改表号') : false,
|
|
@@ -757,8 +764,26 @@
|
|
|
757
764
|
}
|
|
758
765
|
await this.getConcentrators()
|
|
759
766
|
co(meterBookGen(this))
|
|
767
|
+
this.getAdjustables()
|
|
760
768
|
},
|
|
761
769
|
methods: {
|
|
770
|
+
async getAdjustables (searchText) {
|
|
771
|
+
let condition = `f_orgid = '${this.$login.f.orgid}'`
|
|
772
|
+
if (searchText) {
|
|
773
|
+
condition = condition + ` and (f_adjustable_name like '%${searchText}%' or f_adjustable_id like '%${searchText}%')`
|
|
774
|
+
}
|
|
775
|
+
let data = {
|
|
776
|
+
items: 'id,f_adjustable_name,f_adjustable_id',
|
|
777
|
+
tablename: 't_adjustablebox',
|
|
778
|
+
condition: condition,
|
|
779
|
+
orderitem: 'id desc'
|
|
780
|
+
}
|
|
781
|
+
let result = await this.$resetpost('rs/sql/singleTable_OrderBy?pageNo=1&pageSize=100', {data: data}, {resolveMsg: null, rejectMsg: '获取集中器失败!'})
|
|
782
|
+
this.adjustables = [{label: '全部', value: ''}]
|
|
783
|
+
for (let row of result.data) {
|
|
784
|
+
this.adjustables.push({label: `[${row.f_adjustable_id}]-${row.f_adjustable_name}`, value: row})
|
|
785
|
+
}
|
|
786
|
+
},
|
|
762
787
|
validateInput (event, key) {
|
|
763
788
|
const value = event.target.value
|
|
764
789
|
const sanitizedValue = value.replace(/[^0-9.]/g, '')
|
|
@@ -1090,17 +1115,6 @@
|
|
|
1090
1115
|
return Array.from(new Set(result))
|
|
1091
1116
|
},
|
|
1092
1117
|
|
|
1093
|
-
adjustables () {
|
|
1094
|
-
let arr = []
|
|
1095
|
-
let filter = this.f_filialeid
|
|
1096
|
-
this.$GetSaleParam.getAdjustable(filter).forEach((item) => {
|
|
1097
|
-
let temp = {}
|
|
1098
|
-
temp.label = `[${item.value.f_adjustable_id}]-${item.label}`
|
|
1099
|
-
temp.value = item.value
|
|
1100
|
-
arr.push(temp)
|
|
1101
|
-
})
|
|
1102
|
-
return [{label: '全部', value: ''}, ...arr]
|
|
1103
|
-
},
|
|
1104
1118
|
inputtores () {
|
|
1105
1119
|
// return this.$login.f.f_gasman
|
|
1106
1120
|
let rs = new Array()
|
|
@@ -89,13 +89,29 @@
|
|
|
89
89
|
</thead>
|
|
90
90
|
<tbody>
|
|
91
91
|
<tr v-show="nextCheckDateShow">
|
|
92
|
-
<td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px;"
|
|
92
|
+
<td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px;">本次安检时间:</td>
|
|
93
93
|
<td colspan="3" :style=style>{{ model.f_next_check_date }}</td>
|
|
94
94
|
</tr>
|
|
95
95
|
<tr>
|
|
96
96
|
<td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px;">上次安检时间:</td>
|
|
97
97
|
<td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px;">{{ model.f_last_check_date }}</td>
|
|
98
98
|
</tr>
|
|
99
|
+
<tr>
|
|
100
|
+
<td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px;">上次安检结果:</td>
|
|
101
|
+
<td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px;">{{ lastDefectResult }}</td>
|
|
102
|
+
</tr>
|
|
103
|
+
<tr>
|
|
104
|
+
<td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px;">上次是否有隐患:</td>
|
|
105
|
+
<td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px;">{{ lastDefectResult === '有隐患' ? '是' : '否' }}</td>
|
|
106
|
+
</tr>
|
|
107
|
+
<tr>
|
|
108
|
+
<td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px;">上次隐患名称:</td>
|
|
109
|
+
<td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px;">{{ model.f_last_defect_text }}</td>
|
|
110
|
+
</tr>
|
|
111
|
+
<tr>
|
|
112
|
+
<td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px;">上次处理结果:</td>
|
|
113
|
+
<td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px;">{{ model.f_last_repaired === '已修' ? '已处理' : '未处理' }}</td>
|
|
114
|
+
</tr>
|
|
99
115
|
<tr>
|
|
100
116
|
<td colspan="1" style="text-align: center;border: #E9E9E9 solid 1px;">安检员:</td>
|
|
101
117
|
<td colspan="3" style="text-align: center;border: #E9E9E9 solid 1px;">{{model.f_checker_name}}</td>
|
|
@@ -289,11 +305,28 @@
|
|
|
289
305
|
}
|
|
290
306
|
},
|
|
291
307
|
computed: {
|
|
292
|
-
inspectionResult() {
|
|
308
|
+
inspectionResult () {
|
|
293
309
|
if (this.model.safecheckitem == null || this.model.safecheckitem.every(item => item.f_repaire_state === '已处理')) {
|
|
294
|
-
return '正常'
|
|
310
|
+
return '正常'
|
|
311
|
+
}
|
|
312
|
+
return '有隐患'
|
|
313
|
+
},
|
|
314
|
+
lastDefectResult () {
|
|
315
|
+
let content = this.model.f_last_defect_content
|
|
316
|
+
if (!content) return ''
|
|
317
|
+
|
|
318
|
+
try {
|
|
319
|
+
// 先解析一次
|
|
320
|
+
let parsed = typeof content === 'string' ? JSON.parse(content) : content
|
|
321
|
+
// 如果 result 还是 undefined,再尝试一次解析
|
|
322
|
+
if (typeof parsed.result === 'undefined' && typeof parsed === 'string') {
|
|
323
|
+
parsed = JSON.parse(parsed)
|
|
324
|
+
}
|
|
325
|
+
return parsed.result || ''
|
|
326
|
+
} catch (e) {
|
|
327
|
+
console.warn('解析 f_last_defect_content 出错', e)
|
|
328
|
+
return ''
|
|
295
329
|
}
|
|
296
|
-
return '有隐患';
|
|
297
330
|
}
|
|
298
331
|
},
|
|
299
332
|
watch: {
|
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<validator name='v' @valid="$emit('valid')" @invalid="$emit('invalid')">
|
|
4
|
+
<form class="form-horizontal select-overspread ">
|
|
5
|
+
<div class="row">
|
|
6
|
+
<div class="col-sm-4 form-group " :class="[!baseinfo.base.f_user_name ? 'has-error' : '']"
|
|
7
|
+
v-if="getConfigShowItem('f_user_name')">
|
|
8
|
+
<label for="f_user_name" class="font_normal_body">*{{getConfigLabelName('f_user_name','用户姓名')}}</label>
|
|
9
|
+
<input type="text" v-model="baseinfo.base.f_user_name"
|
|
10
|
+
v-validate:f_user_name='getConfigValidate("f_user_name",true)'
|
|
11
|
+
class="input_search" style="width:60%" :placeholder="getConfigPlaceholder('f_user_name','用户姓名')" v-next-el="phone">
|
|
12
|
+
</div>
|
|
13
|
+
<div style="" class="col-sm-4 form-group"
|
|
14
|
+
:class="[$v.f_user_phone.minlength || $v.f_user_phone.maxlength ? 'has-error' : '']" v-if="getConfigShowItem('f_user_phone')">
|
|
15
|
+
<label for="f_user_phone" class="font_normal_body">*{{getConfigLabelName('f_user_phone','客户电话')}}</label>
|
|
16
|
+
<input type="text" maxlength="11" v-model="baseinfo.base.f_user_phone"
|
|
17
|
+
v-validate:f_user_phone="getConfigValidate('f_user_phone')" class="input_search" style="width:60%"
|
|
18
|
+
:placeholder="getConfigPlaceholder('f_user_phone','客户电话')"
|
|
19
|
+
v-el:phone v-next-el="area">
|
|
20
|
+
</div>
|
|
21
|
+
<div class="col-sm-4 form-group">
|
|
22
|
+
<label for="f_user_state" class="font_normal_body"> 客户状态</label>
|
|
23
|
+
<v-select :value.sync="baseinfo.base.f_user_state"
|
|
24
|
+
:disabled="false"
|
|
25
|
+
:value-single="true"
|
|
26
|
+
:options='userstates' placeholder='客户状态'
|
|
27
|
+
close-on-select></v-select>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="row">
|
|
31
|
+
<div style="" class="col-sm-4 form-group" >
|
|
32
|
+
<label for="f_credentials" class="font_normal_body"> 证件类型</label>
|
|
33
|
+
<v-select id="idCardType" :value.sync="baseinfo.base.f_credentials"
|
|
34
|
+
v-model="baseinfo.base.f_credentials"
|
|
35
|
+
:value-single="true"
|
|
36
|
+
:options='credentials'
|
|
37
|
+
:placeholder="getConfigPlaceholder('f_credentials','证件类型')"
|
|
38
|
+
style="width: 65%"
|
|
39
|
+
close-on-select></v-select>
|
|
40
|
+
</div>
|
|
41
|
+
<div style="" class="col-sm-8 form-group"
|
|
42
|
+
key="身份证号码"
|
|
43
|
+
:class="[$v.f_idnumber.identityCardValid ? 'has-error' : '']"
|
|
44
|
+
v-if="baseinfo.base.f_credentials.includes('身份证')">
|
|
45
|
+
<label for="f_idnumber" class="font_normal_body color-red">*证件号码</label>
|
|
46
|
+
<input type="text" maxlength="18" v-model="baseinfo.base.f_idnumber"
|
|
47
|
+
v-validate:f_idnumber='{identityCardValid: true}' class="input_search" style="width:80%"
|
|
48
|
+
:placeholder="getConfigPlaceholder('f_idnumber','证件号码')">
|
|
49
|
+
</div>
|
|
50
|
+
<div style="" class="col-sm-8 form-group"
|
|
51
|
+
key="证件号码"
|
|
52
|
+
v-else>
|
|
53
|
+
<label class="font_normal_body"> 证件号码</label>
|
|
54
|
+
<input type="text" v-model="baseinfo.base.f_idnumber" class="input_search" style="width:80%"
|
|
55
|
+
:placeholder="getConfigPlaceholder('f_idnumber','证件号码')">
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
<div class="row">
|
|
59
|
+
<div class="col-sm-12 form-group" :class="[$v.f_address.required ? 'has-error' : '']">
|
|
60
|
+
<label for="f_address" class="font_normal_body">*地址信息</label>
|
|
61
|
+
<input type="text" v-model="addressinfo.f_address" v-validate:f_address="{required: true}"
|
|
62
|
+
class="input_search" disabled="disabled" style="width:75%;" placeholder="用户地址" >
|
|
63
|
+
<span>
|
|
64
|
+
<button class="button_search button_spacing" type="button" style="width: max-content" v-if="!isedit" @click="selectaddress()">选择地址</button>
|
|
65
|
+
<!-- <button class="button_search button_spacing" type="button" style="width: max-content" v-if="isedit" @click="modifyaddress()">修改地址</button>-->
|
|
66
|
+
<button class="button_search button_spacing" type="button" style="width: max-content" v-if="isedit" @click="selectaddress()">修改地址</button>
|
|
67
|
+
</span>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
<div class="row">
|
|
71
|
+
<div class="col-sm-6 form-group">
|
|
72
|
+
<label style="letter-spacing: 2em;margin-right: -2em;margin-left: -2em" class="font_normal_body w2"> 经度</label>
|
|
73
|
+
<input type="text" v-model="lng"
|
|
74
|
+
class="input_search" :disabled="true" style="width:75%;" placeholder="经度" >
|
|
75
|
+
</div>
|
|
76
|
+
<div class="col-sm-6 form-group">
|
|
77
|
+
<label style="letter-spacing: 2em;margin-right: -2em;margin-left: -2em" class="font_normal_body w2"> 纬度</label>
|
|
78
|
+
<input type="text" v-model="lat"
|
|
79
|
+
class="input_search" :disabled="true" style="width:75%;" placeholder="经度" >
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
<div class="row">
|
|
83
|
+
<div style=""
|
|
84
|
+
v-show="(formconfig && formconfig.f_used_name && formconfig.f_used_name.required) || !onlyshowmust"
|
|
85
|
+
:class="[$v.f_used_name.required ? 'has-error' : '']"
|
|
86
|
+
class="col-sm-4 form-group" v-if="getConfigShowItem('f_used_name')">
|
|
87
|
+
<label style="letter-spacing: 0.5em;margin-right: -0.5em;margin-left: -0.5em" for="f_used_name" class="font_normal_body w3"> {{getConfigLabelName('f_used_name','曾用名')}}</label>
|
|
88
|
+
<input type="text" v-model="baseinfo.base.f_used_name" class="input_search" style="width:60%"
|
|
89
|
+
v-validate:f_used_name="getConfigValidate('f_used_name', false)"
|
|
90
|
+
:placeholder="getConfigPlaceholder('f_used_name','曾用名')">
|
|
91
|
+
</div>
|
|
92
|
+
<div style="" class="col-sm-4 form-group"
|
|
93
|
+
v-show="(formconfig && formconfig.f_rent_phone && formconfig.f_rent_phone.required) || !onlyshowmust"
|
|
94
|
+
:class="[$v.f_rent_phone.required ? 'has-error' : '']" v-if="getConfigShowItem('f_rent_phone')">
|
|
95
|
+
<label for="f_rent_phone" class="font_normal_body"> 备用电话</label>
|
|
96
|
+
<input type="text" v-model="baseinfo.base.f_rent_phone" class="input_search" style="width:60%"
|
|
97
|
+
v-validate:f_rent_phone="getConfigValidate('f_rent_phone', false)"
|
|
98
|
+
placeholder="备用电话">
|
|
99
|
+
</div>
|
|
100
|
+
<div class="col-sm-4 form-group"
|
|
101
|
+
v-show="(formconfig && formconfig.f_people_num && formconfig.f_people_num.required) || !onlyshowmust"
|
|
102
|
+
:class="[$v.f_people_num.dctest ? 'has-error' : '']" v-if="getConfigShowItem('f_people_num')">
|
|
103
|
+
<label for="f_people_num" style="letter-spacing: 0.5em;margin-right: -0.5em" class="font_normal_body w3">{{getConfigLabelName('f_people_num','人口数')}}</label>
|
|
104
|
+
<input type="number" v-model="baseinfo.base.f_people_num" v-show="!peopleMax" v-validate:f_people_num='{dctest: [0, ">=" ]}'
|
|
105
|
+
:disabled="!jurisdiction.includes('修改人口数')" class="input_search" style="width:60%"
|
|
106
|
+
placeholder="家庭人口数">
|
|
107
|
+
<v-select id="f_people_num" :value.sync="baseinfo.base.f_people_num"
|
|
108
|
+
v-if="peopleMax"
|
|
109
|
+
v-model="baseinfo.base.f_people_num"
|
|
110
|
+
:value-single="true"
|
|
111
|
+
:options='peoplenums'
|
|
112
|
+
:placeholder="getConfigPlaceholder('f_people_num','家庭人口数')"
|
|
113
|
+
style="width: 65%"
|
|
114
|
+
close-on-select></v-select>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
<div class="row">
|
|
118
|
+
<div style=""
|
|
119
|
+
v-show="(formconfig && formconfig.f_balance && formconfig.f_balance.required) || !onlyshowmust"
|
|
120
|
+
:class="[$v.f_balance.required ? 'has-error' : '']"
|
|
121
|
+
class="col-sm-4 form-group" v-if="getConfigShowItem('f_balance')">
|
|
122
|
+
<label for="f_balance" class="font_normal_body"> {{getConfigLabelName('f_balance','用户余额')}}</label>
|
|
123
|
+
<input type="text" v-model="baseinfo.base.f_balance" class="input_search" style="width:60%"
|
|
124
|
+
v-validate:f_balance="getConfigValidate('f_balance', false)"
|
|
125
|
+
:placeholder="getConfigPlaceholder('f_balance','用户余额')"
|
|
126
|
+
:disabled="!jurisdiction.includes('档案信息查询修改')">
|
|
127
|
+
</div>
|
|
128
|
+
<div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_is_mgq')"
|
|
129
|
+
v-show="(formconfig && formconfig.f_is_mgq && formconfig.f_is_mgq.required) || !onlyshowmust"
|
|
130
|
+
:class="[$v.f_is_mgq.required ? 'has-error' : '']">
|
|
131
|
+
<label for="f_is_mgq" style="letter-spacing: 0.5em;margin-right: -0.5em" class="font_normal_body w3">{{getConfigLabelName('f_is_mgq','煤改气')}}</label>
|
|
132
|
+
<input type="text" v-show="false" v-model="baseinfo.base.f_is_mgq"
|
|
133
|
+
v-validate:f_is_mgq="getConfigValidate('f_is_mgq', false)">
|
|
134
|
+
<v-select id="f_is_mgq" :value.sync="baseinfo.base.f_is_mgq" v-model="baseinfo.base.f_is_mgq"
|
|
135
|
+
:placeholder="getConfigPlaceholder('f_is_mgq','是否煤改气')"
|
|
136
|
+
:options='mgq' style="width: 65%" close-on-select></v-select>
|
|
137
|
+
</div>
|
|
138
|
+
<div class="col-sm-4 form-group" v-if="getConfigShowItem('f_book_no')"
|
|
139
|
+
v-show="(formconfig && formconfig.f_book_no && formconfig.f_book_no.required) || !onlyshowmust"
|
|
140
|
+
:class="[$v.f_book_no.required ? 'has-error' : '']">
|
|
141
|
+
<label for="f_contract" class="font_normal_body"> {{getConfigLabelName('f_book_no','燃气本号')}}</label>
|
|
142
|
+
<input type="text" v-model="baseinfo.base.f_book_no" class="input_search" style="width:60%"
|
|
143
|
+
v-validate:f_book_no="getConfigValidate('f_book_no', false)"
|
|
144
|
+
:placeholder="getConfigPlaceholder('f_book_no','用户证号')">
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
<div class="row">
|
|
148
|
+
<div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_rent_name')"
|
|
149
|
+
v-show="(formconfig && formconfig.f_rent_name && formconfig.f_rent_name.required) || !onlyshowmust"
|
|
150
|
+
:class="[$v.f_rent_name.required ? 'has-error' : '']">
|
|
151
|
+
<label for="f_rent_name" class="font_normal_body"> {{getConfigLabelName('f_rent_name','租户姓名')}}</label>
|
|
152
|
+
<input type="text" v-model="baseinfo.base.f_rent_name" class="input_search" style="width:60%"
|
|
153
|
+
v-validate:f_rent_name="getConfigValidate('f_rent_name', false)"
|
|
154
|
+
:placeholder="getConfigPlaceholder('f_rent_name','租户姓名')">
|
|
155
|
+
</div>
|
|
156
|
+
<div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_zuhu_phone')"
|
|
157
|
+
v-show="(formconfig && formconfig.f_zuhu_phone && formconfig.f_zuhu_phone.required) || !onlyshowmust"
|
|
158
|
+
:class="[$v.f_zuhu_phone.required ? 'has-error' : '']">
|
|
159
|
+
<label for="f_zuhu_phone" class="font_normal_body">{{getConfigLabelName('f_zuhu_phone','租户电话')}}</label>
|
|
160
|
+
<input type="text" v-model="baseinfo.base.f_zuhu_phone" class="input_search" style="width:60%"
|
|
161
|
+
v-validate:f_zuhu_phone="getConfigValidate('f_zuhu_phone', false)"
|
|
162
|
+
:placeholder="getConfigPlaceholder('f_zuhu_phone','租户电话')">
|
|
163
|
+
</div>
|
|
164
|
+
<div style="" class="col-sm-4 form-group"
|
|
165
|
+
v-show="(formconfig && formconfig.f_cost_type && formconfig.f_cost_type.required) || !onlyshowmust"
|
|
166
|
+
v-if="getConfigShowItem('f_cost_type')">
|
|
167
|
+
<label for="f_is_mgq" class="font_normal_body "> {{getConfigLabelName('f_cost_type','付款类型')}}</label>
|
|
168
|
+
<v-select id="f_is_mgq" :value.sync="baseinfo.base.f_cost_type" v-model="baseinfo.base.f_cost_type"
|
|
169
|
+
:options='costtype'
|
|
170
|
+
:placeholder="getConfigPlaceholder('f_cost_type','付款类型')" style="width: 65%" close-on-select></v-select>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
<div class="row">
|
|
174
|
+
<div class="col-sm-8 form-group" v-if="getConfigShowItem('f_contract_id')"
|
|
175
|
+
v-show="(formconfig && formconfig.f_contract_id && formconfig.f_contract_id.required) || !onlyshowmust"
|
|
176
|
+
:class="[$v.f_contract_id.required ? 'has-error' : '']">
|
|
177
|
+
<label for="f_contract" class="font_normal_body"> {{getConfigLabelName('f_contract_id','合同编号')}}</label>
|
|
178
|
+
<input type="text" v-model="baseinfo.base.f_contract_id" class="input_search" style="width:80%"
|
|
179
|
+
v-validate:f_contract_id="getConfigValidate('f_contract_id', false)"
|
|
180
|
+
:placeholder="getConfigPlaceholder('f_contract_id','合同编号')">
|
|
181
|
+
</div>
|
|
182
|
+
<div class="col-sm-4 form-group"
|
|
183
|
+
v-show="(formconfig && formconfig.f_print_dh && formconfig.f_print_dh.required) || !onlyshowmust"
|
|
184
|
+
:class="[$v.f_print_dh.required ? 'has-error' : '']">
|
|
185
|
+
<label for="f_print_dh" class="font_normal_body "> {{getConfigLabelName('f_print_dh','打印类别')}}</label>
|
|
186
|
+
<input type="text" v-show="false" v-model="baseinfo.base.f_print_dh"
|
|
187
|
+
v-validate:f_print_dh="getConfigValidate('f_print_dh', false)">
|
|
188
|
+
<v-select id="f_print_dh" :value.sync="baseinfo.base.f_print_dh" v-model="baseinfo.base.f_print_dh"
|
|
189
|
+
:value-single="true" :disabled="baseinfo.base.f_print_dh_stats" :search="false"
|
|
190
|
+
:options='printstate' placeholder='流程单 | 点火单' style="width: 65%" close-on-select></v-select>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
</div>
|
|
195
|
+
<div class="row">
|
|
196
|
+
<div style="" class="col-sm-12 form-group" v-if="getConfigShowItem('f_comments')"
|
|
197
|
+
v-show="(formconfig && formconfig.f_comments && formconfig.f_comments.required) || !onlyshowmust"
|
|
198
|
+
:class="[$v.f_comments.required ? 'has-error' : '']">
|
|
199
|
+
<label for="f_paper_accoun" style="letter-spacing: 2em;margin-right: -2em;margin-left: -2em" class="font_normal_body w2"> {{getConfigLabelName('f_comments','备注')}}</label>
|
|
200
|
+
<input class="input_search" style="width:86.5%;height: 40px" v-model="baseinfo.base.f_comments"
|
|
201
|
+
:placeholder="getConfigPlaceholder('f_comments','请输入备注信息')"
|
|
202
|
+
v-validate:f_comments="getConfigValidate('f_comments',false)" />
|
|
203
|
+
</div>
|
|
204
|
+
|
|
205
|
+
<div class="col-sm-4 form-group"
|
|
206
|
+
v-show="((formconfig && formconfig.f_house_type && formconfig.f_house_type.required) || !onlyshowmust) && getConfigShowItem('f_house_type')"
|
|
207
|
+
:class="[$v.f_house_type.required ? 'has-error' : '']">
|
|
208
|
+
<label for="f_user_state" class="font_normal_body"> {{getConfigLabelName('f_house_type','房屋类型')}}</label>
|
|
209
|
+
<input type="text" v-show="false" v-model="baseinfo.base.f_house_type"
|
|
210
|
+
v-validate:f_house_type="getConfigValidate('f_house_type',false)">
|
|
211
|
+
<v-select :value.sync="baseinfo.base.f_house_type"
|
|
212
|
+
:search="false"
|
|
213
|
+
:value-single="true"
|
|
214
|
+
:options='housetype' close-on-select
|
|
215
|
+
:placeholder="getConfigPlaceholder('f_house_type','房屋类型')">
|
|
216
|
+
</v-select>
|
|
217
|
+
</div>
|
|
218
|
+
</div>
|
|
219
|
+
<div class="row">
|
|
220
|
+
<a style="text-decoration: none;font-weight: 300;float: left;color: #333;margin-top: 15px;font-weight: 500"
|
|
221
|
+
v-if="baseinfo.base.f_cost_type[0] === '银行代扣'">银行信息</a>
|
|
222
|
+
</div>
|
|
223
|
+
<div v-if="baseinfo.base.f_cost_type[0] === '银行代扣'">
|
|
224
|
+
<div class="row">
|
|
225
|
+
<div class="col-sm-4 form-group"
|
|
226
|
+
:class="[$v.f_bank_accopen.required ? 'has-error' : '']">
|
|
227
|
+
<label for="f_username" class="font_normal_body">银行户名</label>
|
|
228
|
+
<input type="text" v-model="baseinfo.bank.f_bank_accopen"
|
|
229
|
+
class="input_search" style="width:60%" id="f_username" placeholder="客户名称"
|
|
230
|
+
v-validate:f_bank_accopen='{required: true}'
|
|
231
|
+
v-next-el="bankaccount">
|
|
232
|
+
</div>
|
|
233
|
+
<div class="col-sm-4 form-group" id=userfiles-useEssInf-银行名称>
|
|
234
|
+
<label for="f_username" class="font_normal_body ">银行名称</label>
|
|
235
|
+
<v-select :value.sync="baseinfo.bank.f_bank_name"
|
|
236
|
+
:options='banknames' placeholder='银行名称'
|
|
237
|
+
close-on-select></v-select>
|
|
238
|
+
</div>
|
|
239
|
+
<div class="col-sm-4 form-group">
|
|
240
|
+
<label for="f_bank_idnumber" class="font_normal_body">缴费编号</label>
|
|
241
|
+
<input type="text" v-model="baseinfo.bank.f_bank_pay_number"
|
|
242
|
+
class="input_search" style="width:60%"
|
|
243
|
+
aria-describedby="helpBlock" placeholder="缴费编号" v-el:bankpaynumber>
|
|
244
|
+
</div>
|
|
245
|
+
<div class="col-sm-12 form-group">
|
|
246
|
+
<label for="f_bank_idnumber" class="font_normal_body">身份证号</label>
|
|
247
|
+
<input type="text" v-model="baseinfo.bank.f_bank_idnumber"
|
|
248
|
+
class="input_search" style="width:54%"
|
|
249
|
+
aria-describedby="helpBlock" placeholder="身份证号" v-el:bankidnumber>
|
|
250
|
+
</div>
|
|
251
|
+
<div class="col-sm-12 form-group"
|
|
252
|
+
:class="[$v.f_bank_account.required ? 'has-error' : '']">
|
|
253
|
+
<label for="f_userid" class="font_normal_body">银行账号</label>
|
|
254
|
+
<input type="text" v-model="baseinfo.bank.f_bank_account" class="input_search" style="width:54%"
|
|
255
|
+
v-validate:f_bank_account='{required: true}' placeholder="银行账号" v-el:bankaccount
|
|
256
|
+
v-next-el="bankidnumber">
|
|
257
|
+
</div>
|
|
258
|
+
</div>
|
|
259
|
+
</div>
|
|
260
|
+
</form>
|
|
261
|
+
</validator>
|
|
262
|
+
<modal v-if="showselectaddress" :show.sync="showselectaddress" width="80%" title="地址信息" v-ref:modal large
|
|
263
|
+
backdrop="false">
|
|
264
|
+
<article slot="modal-body" class="modal-body" style="height: 700px;padding: 0!important;">
|
|
265
|
+
<file-address-manage-new :is-select="isSelect" :fileinfo="addressinfo"
|
|
266
|
+
@address-valid="doNothing" :showselectaddress.sync="showselectaddress"
|
|
267
|
+
:f_filialeid="f_filialeid"
|
|
268
|
+
v-ref:fileaddress></file-address-manage-new>
|
|
269
|
+
</article>
|
|
270
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
271
|
+
</footer>
|
|
272
|
+
</modal>
|
|
273
|
+
</div>
|
|
274
|
+
</template>
|
|
275
|
+
|
|
276
|
+
<script>
|
|
277
|
+
import {HttpResetClass} from 'vue-client'
|
|
278
|
+
|
|
279
|
+
let getEditUserState = async function (self) {
|
|
280
|
+
try {
|
|
281
|
+
let http = new HttpResetClass()
|
|
282
|
+
let result = await http.load('GET', `rs/vue/EditUserState.json`, {}, {resolveMsg: null, rejectMsg: null})
|
|
283
|
+
console.log(result.data.EditUserState)
|
|
284
|
+
self.edituserstate = result.data.EditUserState
|
|
285
|
+
Object.assign(self.config, result.data)
|
|
286
|
+
} catch (e) {
|
|
287
|
+
console.log(e)
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export default {
|
|
292
|
+
title: '基本信息',
|
|
293
|
+
props: ['baseinfo', 'addressinfo', 'isedit', 'f_filialeid', 'formconfig', 'onlyshowmust'],
|
|
294
|
+
data () {
|
|
295
|
+
return {
|
|
296
|
+
showselectaddress: false,
|
|
297
|
+
site: '',
|
|
298
|
+
areas: [],
|
|
299
|
+
streets: [],
|
|
300
|
+
residentials: [],
|
|
301
|
+
lng: '',
|
|
302
|
+
lat: '',
|
|
303
|
+
config: {
|
|
304
|
+
f_idnumber: true,
|
|
305
|
+
f_house_type: true
|
|
306
|
+
},
|
|
307
|
+
validateRules: {},
|
|
308
|
+
inputtores: this.$appdata.getParam('抄表员'),
|
|
309
|
+
credentials: this.$appdata.getParam('证件类型'),
|
|
310
|
+
costtypes: this.$appdata.getParam('缴费类型'),
|
|
311
|
+
banknames: this.$appdata.getParam('银行名称'),
|
|
312
|
+
userstates: this.$appdata.getParam('预备客户状态参数') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('预备客户状态参数')] : [{label: '预备', value: '预备'}],
|
|
313
|
+
housetype: this.$appdata.getParam('房屋类型'),
|
|
314
|
+
mgq: this.$appdata.getParam('是否煤改气'),
|
|
315
|
+
costtype: this.$appdata.getParam('付款类型'),
|
|
316
|
+
printstate: this.$appdata.getParam('建档打印类型') ? [{label: '暂不选择', value: '暂不选择'}, ...this.$appdata.getParam('建档打印类型')] : [{label: '暂不选择', value: '暂不选择'}],
|
|
317
|
+
peopleMax: this.$appdata.getSingleValue('最大人口数'),
|
|
318
|
+
jurisdiction: this.$login.r,
|
|
319
|
+
edituserstate: false,
|
|
320
|
+
// highMeterPlugin: {},
|
|
321
|
+
readCardFlag: true,
|
|
322
|
+
|
|
323
|
+
isSelect: false
|
|
324
|
+
}
|
|
325
|
+
},
|
|
326
|
+
ready () {
|
|
327
|
+
getEditUserState(this)
|
|
328
|
+
this.$resetValidation()
|
|
329
|
+
this.lng = this.addressinfo.f_lng
|
|
330
|
+
this.lat = this.addressinfo.f_lat
|
|
331
|
+
console.log('addressinfo', this.addressinfo)
|
|
332
|
+
// this.initValidateRules()
|
|
333
|
+
},
|
|
334
|
+
beforeDestroy () {
|
|
335
|
+
},
|
|
336
|
+
methods: {
|
|
337
|
+
// updateValidateRules() {
|
|
338
|
+
// if (!this.formconfig) return
|
|
339
|
+
//
|
|
340
|
+
// Object.keys(this.formconfig).forEach(field => {
|
|
341
|
+
// const fieldConfig = this.formconfig[field]
|
|
342
|
+
// const rules = {}
|
|
343
|
+
//
|
|
344
|
+
// if (fieldConfig.required) {
|
|
345
|
+
// rules.required = true
|
|
346
|
+
// }
|
|
347
|
+
//
|
|
348
|
+
// if (fieldConfig.minlength || fieldConfig.minlength === 0) {
|
|
349
|
+
// rules.minlength = fieldConfig.minlength
|
|
350
|
+
// }
|
|
351
|
+
//
|
|
352
|
+
// if (fieldConfig.maxlength) {
|
|
353
|
+
// rules.maxlength = fieldConfig.maxlength
|
|
354
|
+
// }
|
|
355
|
+
//
|
|
356
|
+
// this.validateRules[field] = Object.assign({}, this.validateRules[field], rules)
|
|
357
|
+
// })
|
|
358
|
+
// },
|
|
359
|
+
|
|
360
|
+
getConfigValidate (name, defaultVal) {
|
|
361
|
+
this.$resetValidation()
|
|
362
|
+
if (this.formconfig && this.formconfig[name]) {
|
|
363
|
+
let Validate = {}
|
|
364
|
+
if (this.formconfig[name].required) {
|
|
365
|
+
Object.assign(Validate, {required: true})
|
|
366
|
+
}
|
|
367
|
+
if (this.formconfig[name].minlength || this.formconfig[name].minlength === 0) {
|
|
368
|
+
Object.assign(Validate, {minlength: this.formconfig[name].minlength})
|
|
369
|
+
}
|
|
370
|
+
if (this.formconfig[name].maxlength) {
|
|
371
|
+
Object.assign(Validate, {maxlength: this.formconfig[name].maxlength})
|
|
372
|
+
}
|
|
373
|
+
return Validate
|
|
374
|
+
} else if (name === 'f_user_phone') {
|
|
375
|
+
return { minlength: 11, maxlength: 11 }
|
|
376
|
+
} else if (defaultVal) {
|
|
377
|
+
return {required: defaultVal}
|
|
378
|
+
}
|
|
379
|
+
return {}
|
|
380
|
+
},
|
|
381
|
+
getConfigShowItem (name, defaultVal = true) {
|
|
382
|
+
if (this.formconfig && this.formconfig[name] && this.formconfig[name].hasOwnProperty('showItem')) {
|
|
383
|
+
return this.formconfig[name].showItem
|
|
384
|
+
} else {
|
|
385
|
+
return defaultVal
|
|
386
|
+
}
|
|
387
|
+
},
|
|
388
|
+
getConfigLabelName (name, defaultVal) {
|
|
389
|
+
if (this.formconfig && this.formconfig[name] && this.formconfig[name].labelName) {
|
|
390
|
+
return this.formconfig[name].labelName
|
|
391
|
+
} else {
|
|
392
|
+
return defaultVal
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
getConfigPlaceholder (name, defaultVal) {
|
|
396
|
+
if (this.formconfig && this.formconfig[name] && this.formconfig[name].placeholder) {
|
|
397
|
+
return this.formconfig[name].placeholder
|
|
398
|
+
} else {
|
|
399
|
+
return defaultVal
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
selectaddress () {
|
|
403
|
+
this.showselectaddress = true
|
|
404
|
+
this.isSelect = true
|
|
405
|
+
},
|
|
406
|
+
modifyaddress () {
|
|
407
|
+
this.showselectaddress = true
|
|
408
|
+
this.isSelect = false
|
|
409
|
+
},
|
|
410
|
+
onValid (res) {
|
|
411
|
+
this.$dispatch('valid')
|
|
412
|
+
},
|
|
413
|
+
onInvalid (res) {
|
|
414
|
+
// 打印所有校验状态
|
|
415
|
+
this.$dispatch('invalid')
|
|
416
|
+
},
|
|
417
|
+
doNothing () {
|
|
418
|
+
// console.log('啥也不做')
|
|
419
|
+
},
|
|
420
|
+
resetValidation () {
|
|
421
|
+
this.baseinfo = Object.assign({}, this.baseinfo)
|
|
422
|
+
this.$nextTick(() => {
|
|
423
|
+
this.$resetValidation()
|
|
424
|
+
})
|
|
425
|
+
},
|
|
426
|
+
readIDCardCallback (compoent, msg) {
|
|
427
|
+
// console.log('进入高拍仪',msg)
|
|
428
|
+
if (msg.err !== 0) {
|
|
429
|
+
return
|
|
430
|
+
}
|
|
431
|
+
// document.getElementById("idCardType").getElementsByClassName("btn-content")[0].innerHTML="身份证"
|
|
432
|
+
compoent.baseinfo.base.f_idnumber = msg.strID
|
|
433
|
+
compoent.baseinfo.base.f_user_name = msg.strName.trim()
|
|
434
|
+
// compoent.baseinfo.base.f_credentials = '身份证'
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
watch: {
|
|
438
|
+
'baseinfo.base.f_credentials' () {
|
|
439
|
+
this.$resetValidation()
|
|
440
|
+
},
|
|
441
|
+
'baseinfo.base.f_cost_type[0]' () {
|
|
442
|
+
this.$resetValidation()
|
|
443
|
+
},
|
|
444
|
+
'baseinfo.base.f_user_name' (val) {
|
|
445
|
+
console.log('f_user_name变化', val)
|
|
446
|
+
},
|
|
447
|
+
'addressinfo.f_lat' (newVal) {
|
|
448
|
+
this.lat = newVal
|
|
449
|
+
},
|
|
450
|
+
'addressinfo.f_lng' (newVal) {
|
|
451
|
+
this.lng = newVal
|
|
452
|
+
}
|
|
453
|
+
},
|
|
454
|
+
computed: {
|
|
455
|
+
peoplenums () {
|
|
456
|
+
let peopleMax = this.$appdata.getSingleValue('最大人口数') ? this.$appdata.getSingleValue('最大人口数') : 0
|
|
457
|
+
let nums = []
|
|
458
|
+
for (let i = 1; i <= peopleMax; i++) {
|
|
459
|
+
let temp = {}
|
|
460
|
+
temp.label = i
|
|
461
|
+
temp.value = i
|
|
462
|
+
nums.push(temp)
|
|
463
|
+
}
|
|
464
|
+
return nums
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
events: {
|
|
468
|
+
'confirmaddress' (res) {
|
|
469
|
+
this.showselectaddress = false
|
|
470
|
+
this.addressinfo.f_address = res.f_address
|
|
471
|
+
this.addressinfo.id = res.id
|
|
472
|
+
this.lat = res.f_lat
|
|
473
|
+
this.lng = res.f_lng
|
|
474
|
+
this.$dispatch('defaultOtheret', res)
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
</script>
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
data () {
|
|
170
170
|
return {
|
|
171
171
|
condition: '1=1',
|
|
172
|
-
model: new PagedList(`${this.row.f_meter_type === '物联网表'?'api/af-revenue/sql/sale_WebHandplanQuery':'api/af-revenue/sql/sale_HandplanQuery'}`, 20, {f_user_id: this.row.f_user_id}, {
|
|
172
|
+
model: new PagedList(`${this.row.f_meter_type === '物联网表' ? 'api/af-revenue/sql/sale_WebHandplanQuery' : 'api/af-revenue/sql/sale_HandplanQuery'}`, 20, {f_user_id: this.row.f_user_id}, {
|
|
173
173
|
f_oughtfee: 0,
|
|
174
174
|
f_oughtamount: 0,
|
|
175
175
|
f_stairamount1: 0,
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
this.condition = `${this.$refs.paged.$refs.criteria.condition} and ${this.searchValue} = '${this.row[this.searchValue]}'`
|
|
253
253
|
this.model.search(this.condition, this.model)
|
|
254
254
|
let http = new HttpResetClass()
|
|
255
|
-
let res = await http.load('POST', `${this.row.f_meter_type === '物联网表'?'api/af-revenue/sql/sale_WebHandplanQuery':'api/af-revenue/sql/sale_HandplanQuery'}`, {
|
|
255
|
+
let res = await http.load('POST', `${this.row.f_meter_type === '物联网表' ? 'api/af-revenue/sql/sale_WebHandplanQuery' : 'api/af-revenue/sql/sale_HandplanQuery'}`, {
|
|
256
256
|
data: {
|
|
257
257
|
f_user_id: this.row.f_user_id,
|
|
258
258
|
condition: this.condition
|
|
@@ -15,4 +15,6 @@ export default function () {
|
|
|
15
15
|
Vue.component('user-info-detail-manage-new', (resolve) => { require(['./UserInfoDetailManageNew'], resolve) })
|
|
16
16
|
// 物联网退费管理
|
|
17
17
|
Vue.component('iot-refund', (resolve) => { require(['./IOTRefund'], resolve) })
|
|
18
|
+
// 用户基本信息test
|
|
19
|
+
Vue.component('file-user-essential-info', (resolve) => { require(['./UserEssentialInfoTest'], resolve) })
|
|
18
20
|
}
|