sale-client 4.2.80 → 4.2.81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/build/dev-server.js +52 -30
  2. package/index.html +7 -2
  3. package/package.json +1 -1
  4. package/src/App.vue +1 -1
  5. package/src/components/revenue/HandManager/MeterBookUser.vue +726 -726
  6. package/src/components/revenue/comprehen/ComprehenOperation/QrPay/QrPaymentDetailed.vue +423 -423
  7. package/src/components/revenue/comprehen/Maintenance/hand/handOperate.vue +469 -469
  8. package/src/components/revenue/machineHandManage/ArrearsQuery.vue +938 -938
  9. package/src/filiale/alashan/eticket/EticketRecordList.vue +428 -428
  10. package/src/filiale/bayan/ChargeList.vue +1010 -1010
  11. package/src/filiale/bayan/StockListmain.vue +543 -543
  12. package/src/filiale/bazhong/UserInfoDetailManageNew.vue +245 -245
  13. package/src/filiale/bazhong/ic_detail/ChangeMeterQueryUser.vue +370 -370
  14. package/src/filiale/bazhong/sale.js +8 -8
  15. package/src/filiale/beifangshiye/FilesManage/UserEssentialInfoTest.vue +668 -0
  16. package/src/filiale/beifangshiye/OtherChargeNew.vue +625 -625
  17. package/src/filiale/beifangshiye/sale.js +2 -0
  18. package/src/filiale/lixianV3/ArrearsQuery.vue +938 -938
  19. package/src/filiale/lixianV3/InsuranceChargesDetails.vue +425 -425
  20. package/src/filiale/meihekou/common/userinfo_detail/ic_detail/MachineRecordQuery.vue +281 -281
  21. package/src/filiale/ronghao/ArrearsQuery.vue +974 -974
  22. package/src/filiale/ronghao/CardService.js +2144 -2144
  23. package/src/filiale/ronghao/InsuranceManage.vue +58 -58
  24. package/src/filiale/ronghao/MachineChargeService.js +149 -149
  25. package/src/filiale/ronghao/PaymentCode.vue +174 -174
  26. package/src/filiale/ronghao/PriceChangeCompensation/CompensationManage.vue +26 -26
  27. package/src/filiale/ronghao/PriceChangeCompensation/IotCompensation.vue +318 -318
  28. package/src/filiale/ronghao/PriceChangeCompensation/JbCompensation.vue +343 -343
  29. package/src/filiale/ronghao/PriceChangeCompensation/SurplusRecordDetail.vue +74 -74
  30. package/src/filiale/ronghao/ReplaceCardManage.vue +415 -415
  31. package/src/filiale/ronghao/Upload.vue +654 -654
  32. package/src/filiale/ronghao/cardDown.vue +1141 -1141
  33. package/src/filiale/ronghao/changemeterOperate.vue +315 -315
  34. package/src/filiale/ronghao/fillgasSpecific.vue +313 -313
  35. package/src/filiale/ronghao/ic_detail/ChargeRecordQuery.vue +106 -106
  36. package/src/filiale/ronghao/ic_detail/WatchCollection.vue +115 -115
  37. package/src/filiale/ronghao/ic_detail/WebHandQueryUser.vue +411 -411
  38. package/src/filiale/ronghao/machineDown.vue +1176 -1176
  39. package/src/filiale/ronghao/replacementSingleInfoOperation.vue +315 -315
  40. package/src/filiale/ronghao/specificInformation.vue +537 -537
  41. package/src/filiale/yangchun/ChargeList.vue +954 -954
  42. package/src/filiale/yuncheng/changemeterListMaintain.vue +504 -504
  43. package/src/filiale/zhongsheng/BlackListList.vue +293 -293
  44. package/src/filiale/zhongyi/HandQueryUser.vue +389 -389
  45. package/src/main.js +3 -3
  46. package/src/plugins/FileManageService.js +1 -0
@@ -0,0 +1,668 @@
1
+ <template>
2
+ <div id="UserEssential">
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="[$v.f_user_name.required ? 'has-error' : '']"
7
+ v-if="getConfigShowItem('f_user_name')">
8
+ <label for="f_user_name"
9
+ class="font_normal_body">*{{ getConfigLabelName('f_user_name', '用户姓名') }}</label>
10
+ <input type="text" v-model="baseinfo.base.f_user_name"
11
+ v-validate:f_user_name='getConfigValidate("f_user_name",true)'
12
+ class="input_search" style="width:60%" :placeholder="getConfigPlaceholder('f_user_name','用户姓名')"
13
+ v-next-el="phone">
14
+ </div>
15
+ <div style="" class="col-sm-4 form-group"
16
+ :class="[$v.f_user_phone.minlength || $v.f_user_phone.maxlength ? 'has-error' : '']"
17
+ v-if="getConfigShowItem('f_user_phone')">
18
+ <label for="f_user_phone"
19
+ class="font_normal_body">*{{ getConfigLabelName('f_user_phone', '客户电话') }}</label>
20
+ <input type="text" maxlength="11" v-model="baseinfo.base.f_user_phone"
21
+ v-validate:f_user_phone=getConfigValidate("f_user_phone") class="input_search" style="width:55%"
22
+ :placeholder="getConfigPlaceholder('f_user_phone','客户电话')"
23
+ v-el:phone v-next-el="area">
24
+ <button type="button" class="glyphicon glyphicon-plus" @click.stop="phoneManage()"></button>
25
+ </div>
26
+
27
+ <div style=""
28
+ v-show="(formconfig && formconfig.f_rent_phone && formconfig.f_rent_phone.required) || !onlyshowmust"
29
+ :class="[$v.f_rent_phone.required ? 'has-error' : '']"
30
+ class="col-sm-4 form-group" v-if="getConfigShowItem('f_rent_phone')">
31
+ <label for="f_rent_phone"
32
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_rent_phone', '曾用电话') }}</label>
33
+ <input type="text" v-model="baseinfo.base.f_rent_phone" class="input_search" style="width:60%"
34
+ v-validate:f_rent_phone=getConfigValidate("f_rent_phone",false)
35
+ :placeholder="getConfigPlaceholder('f_rent_phone','曾用电话')">
36
+ </div>
37
+
38
+ <div class="col-sm-4 form-group" style="" v-if="true">
39
+ <label for="f_user_state"
40
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_user_state', '客户状态') }}</label>
41
+ <v-select :value.sync="baseinfo.base.f_user_state"
42
+ :disabled="true"
43
+ :value-single="true"
44
+ :options='userstates' :placeholder="getConfigPlaceholder('f_user_state','客户状态')"
45
+ close-on-select></v-select>
46
+ </div>
47
+ <div class="col-sm-4 form-group" style="">
48
+ <label for="f_uservent_date"
49
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_uservent_date', '通气日期') }}</label>
50
+ <datepicker style="width:60%" placeholder="用户通气日期"
51
+ v-model="baseinfo.base.f_uservent_date"
52
+ v-ref:f_uservent_date
53
+ :value.sync="baseinfo.base.f_uservent_date"
54
+ :format="'yyyy-MM-dd HH:mm:ss'"
55
+ ></datepicker>
56
+ </div>
57
+ </div>
58
+ <div class="row">
59
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_credentials')">
60
+ <label for="f_credentials"
61
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_credentials', '证件类型') }}</label>
62
+ <v-select id="idCardType" :value.sync="baseinfo.base.f_credentials"
63
+ v-model="baseinfo.base.f_credentials"
64
+ :value-single="true"
65
+ :options='credentials'
66
+ :placeholder="getConfigPlaceholder('f_credentials','证件类型')"
67
+ style="width: 65%"
68
+ close-on-select></v-select>
69
+ </div>
70
+ <div style="" class="col-sm-8 form-group"
71
+ :class="[$v.f_idnumber2.identityCardValid ? 'has-error' : '']"
72
+ v-if="baseinfo.base.f_credentials === '身份证' && config.f_idnumber ">
73
+ <label for="f_idnumber" class="font_normal_body">*证件号码</label>
74
+ <input type="text" maxlength="18" v-model="baseinfo.base.f_idnumber"
75
+ v-validate:f_idnumber2='{identityCardValid: true}' class="input_search" style="width:80%"
76
+ :placeholder="getConfigPlaceholder('f_idnumber','证件号码')">
77
+ </div>
78
+ <div style="" class="col-sm-8 form-group"
79
+ v-if="baseinfo.base.f_credentials !== '身份证' || !config.f_idnumber ">
80
+ <label class="font_normal_body">&ensp;证件号码</label>
81
+ <input type="text" v-model="baseinfo.base.f_idnumber" class="input_search" style="width:80%"
82
+ :placeholder="getConfigPlaceholder('f_idnumber','证件号码')">
83
+ </div>
84
+ </div>
85
+ <div class="row">
86
+ <div class="col-sm-12 form-group" :class="[$v.f_address.required ? 'has-error' : '']">
87
+ <label for="f_address" class="font_normal_body">*地址信息</label>
88
+ <input type="text" v-model="addressinfo.f_address" :value.sync="addressinfo.f_address"
89
+ v-validate:f_address='{required: true }'
90
+ class="input_search" disabled="disabled" style="width:70%;" placeholder="用户地址">
91
+ <span>
92
+ <button class="button_search button_spacing" type="button" style="width: max-content" v-if="!isedit"
93
+ @click="selectaddress()">选择地址</button>
94
+ <!-- <button class="button_search button_spacing" type="button" style="width: max-content" v-if="isedit" @click="modifyaddress()">修改地址</button>-->
95
+ <button class="button_search button_spacing" type="button" style="width: max-content" v-if="isedit"
96
+ @click="selectaddress()">修改地址</button>
97
+ </span>
98
+ </div>
99
+ </div>
100
+ <div class="row">
101
+ <div style=""
102
+ v-show="(formconfig && formconfig.f_used_name && formconfig.f_used_name.required) || !onlyshowmust"
103
+ :class="[$v.f_used_name.required ? 'has-error' : '']"
104
+ class="col-sm-4 form-group" v-if="getConfigShowItem('f_used_name')">
105
+ <label style="letter-spacing: 0.5em;margin-right: -0.5em" for="f_used_name"
106
+ class="font_normal_body w3">{{ getConfigLabelName('f_used_name', '曾用名') }}</label>
107
+ <input type="text" v-model="baseinfo.base.f_used_name" class="input_search" style="width:60%"
108
+ v-validate:f_used_name=getConfigValidate("f_used_name",false)
109
+ :placeholder="getConfigPlaceholder('f_used_name','曾用名')">
110
+ </div>
111
+ <div class="col-sm-4 form-group"
112
+ v-show="(formconfig && formconfig.f_people_num && formconfig.f_people_num.required) || !onlyshowmust"
113
+ :class="[$v.f_people_num.dctest ? 'has-error' : '']" v-if="getConfigShowItem('f_people_num')">
114
+ <label for="f_people_num" style="letter-spacing: 0.5em;margin-right: -0.5em"
115
+ class="font_normal_body w3">{{ getConfigLabelName('f_people_num', '人口数') }}</label>
116
+ <input type="number" v-model="baseinfo.base.f_people_num" v-show="!peopleMax"
117
+ v-validate:f_people_num='{dctest: [0, ">=" ]}'
118
+ :disabled="!jurisdiction.includes('修改人口数')" class="input_search" style="width:60%"
119
+ placeholder="家庭人口数">
120
+ <v-select id="f_people_num" :value.sync="baseinfo.base.f_people_num"
121
+ v-if="peopleMax"
122
+ v-model="baseinfo.base.f_people_num"
123
+ :value-single="true"
124
+ :options='peoplenums'
125
+ :placeholder="getConfigPlaceholder('f_people_num','家庭人口数')"
126
+ style="width: 65%"
127
+ close-on-select></v-select>
128
+ </div>
129
+ </div>
130
+ <div class="row">
131
+ <div style=""
132
+ v-show="(formconfig && formconfig.f_balance && formconfig.f_balance.required) || !onlyshowmust"
133
+ :class="[$v.f_balance.required ? 'has-error' : '']"
134
+ class="col-sm-4 form-group" v-if="getConfigShowItem('f_balance')">
135
+ <label for="f_balance"
136
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_balance', '用户余额') }}</label>
137
+ <input type="text" v-model="baseinfo.base.f_balance" class="input_search" style="width:60%"
138
+ v-validate:f_balance=getConfigValidate("f_balance",false)
139
+ :placeholder="getConfigPlaceholder('f_balance','用户余额')"
140
+ :disabled="!jurisdiction.includes('档案信息查询修改')">
141
+ </div>
142
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_is_mgq')"
143
+ v-show="(formconfig && formconfig.f_is_mgq && formconfig.f_is_mgq.required) || !onlyshowmust"
144
+ :class="[$v.f_is_mgq.required ? 'has-error' : '']">
145
+ <label for="f_is_mgq" style="letter-spacing: 0.5em;margin-right: -0.5em"
146
+ class="font_normal_body w3">{{ getConfigLabelName('f_is_mgq', '煤改气') }}</label>
147
+ <input type="text" v-show="false" v-model="baseinfo.base.f_is_mgq"
148
+ v-validate:f_is_mgq=getConfigValidate("f_is_mgq",false)>
149
+ <v-select id="f_is_mgq" :value.sync="baseinfo.base.f_is_mgq" v-model="baseinfo.base.f_is_mgq"
150
+ :placeholder="getConfigPlaceholder('f_is_mgq','是否煤改气')"
151
+ :options='mgq' style="width: 65%" close-on-select></v-select>
152
+ </div>
153
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_book_no')"
154
+ v-show="(formconfig && formconfig.f_book_no && formconfig.f_book_no.required) || !onlyshowmust"
155
+ :class="[$v.f_book_no.required ? 'has-error' : '']">
156
+ <label for="f_contract"
157
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_book_no', '燃气本号') }}</label>
158
+ <input type="text" v-model="baseinfo.base.f_book_no" class="input_search" style="width:60%"
159
+ v-validate:f_book_no=getConfigValidate("f_book_no",false)
160
+ :placeholder="getConfigPlaceholder('f_book_no','用户证号')">
161
+ </div>
162
+ </div>
163
+ <div class="row">
164
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_rent_name')"
165
+ v-show="(formconfig && formconfig.f_rent_name && formconfig.f_rent_name.required) || !onlyshowmust"
166
+ :class="[$v.f_rent_name.required ? 'has-error' : '']">
167
+ <label for="f_rent_name"
168
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_rent_name', '租户姓名') }}</label>
169
+ <input type="text" v-model="baseinfo.base.f_rent_name" class="input_search" style="width:60%"
170
+ v-validate:f_rent_name=getConfigValidate("f_rent_name",false)
171
+ :placeholder="getConfigPlaceholder('f_rent_name','租户姓名')">
172
+ </div>
173
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_zuhu_phone')"
174
+ v-show="(formconfig && formconfig.f_zuhu_phone && formconfig.f_zuhu_phone.required) || !onlyshowmust"
175
+ :class="[$v.f_zuhu_phone.required ? 'has-error' : '']">
176
+ <label for="f_zuhu_phone"
177
+ class="font_normal_body">{{ getConfigLabelName('f_zuhu_phone', '租户电话') }}</label>
178
+ <input type="text" v-model="baseinfo.base.f_zuhu_phone" class="input_search" style="width:60%"
179
+ v-validate:f_zuhu_phone=getConfigValidate("f_zuhu_phone",false)
180
+ :placeholder="getConfigPlaceholder('f_zuhu_phone','租户电话')">
181
+ </div>
182
+ </div>
183
+ <div class="row">
184
+ <div style="" class="col-sm-8 form-group"
185
+ v-show="(formconfig && formconfig.f_zuhu_idnumber && formconfig.f_zuhu_idnumber.required) || !onlyshowmust"
186
+ v-if="getConfigShowItem('f_zuhu_idnumber')"
187
+ :class="[$v.f_zuhu_idnumber.required ? 'has-error' : '']">
188
+ <label for="f_zuhu_idnumber"
189
+ class="font_normal_body">{{ getConfigLabelName('f_zuhu_idnumber', '租户身份证') }}</label>
190
+ <input type="text" v-model="baseinfo.base.f_zuhu_idnumber" class="input_search" style="width:80%"
191
+ v-validate:f_zuhu_idnumber=getConfigValidate("f_zuhu_idnumber",false)
192
+ :placeholder="getConfigPlaceholder('f_zuhu_idnumber','租户身份证')">
193
+ </div>
194
+ <div style="" class="col-sm-4 form-group"
195
+ v-show="(formconfig && formconfig.f_cost_type && formconfig.f_cost_type.required) || !onlyshowmust"
196
+ v-if="getConfigShowItem('f_cost_type')">
197
+ <label for="f_is_mgq"
198
+ class="font_normal_body ">&ensp;{{ getConfigLabelName('f_cost_type', '付款类型') }}</label>
199
+ <v-select id="f_is_mgq" :value.sync="baseinfo.base.f_cost_type" v-model="baseinfo.base.f_cost_type"
200
+ :options='costtype'
201
+ :placeholder="getConfigPlaceholder('f_cost_type','付款类型')" style="width: 65%"
202
+ close-on-select></v-select>
203
+ </div>
204
+ </div>
205
+ <div class="row">
206
+ <div class="col-sm-8 form-group" v-if="getConfigShowItem('f_contract_id')"
207
+ v-show="(formconfig && formconfig.f_contract_id && formconfig.f_contract_id.required) || !onlyshowmust"
208
+ :class="[$v.f_contract_id.required ? 'has-error' : '']">
209
+ <label for="f_contract"
210
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_contract_id', '合同编号') }}</label>
211
+ <input type="text" v-model="baseinfo.base.f_contract_id" class="input_search" style="width:80%"
212
+ v-validate:f_contract_id=getConfigValidate("f_contract_id",false)
213
+ :placeholder="getConfigPlaceholder('f_contract_id','合同编号')">
214
+ </div>
215
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_house_type')"
216
+ v-show="(formconfig && formconfig.f_house_type && formconfig.f_house_type.required) || !onlyshowmust"
217
+ :class="[$v.f_house_type.required ? 'has-error' : '']">
218
+ <label for="f_user_state"
219
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_house_type', '房屋类型') }}</label>
220
+ <input type="text" v-show="false" v-model="baseinfo.base.f_house_type"
221
+ v-validate:f_house_type=getConfigValidate("f_house_type",false)>
222
+ <v-select :value.sync="baseinfo.base.f_house_type" :search="false" :value-single="true"
223
+ :options='housetype' close-on-select
224
+ :placeholder="getConfigPlaceholder('f_house_type','房屋类型')">
225
+ </v-select>
226
+ </div>
227
+ </div>
228
+ <div class="row">
229
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_user_level')"
230
+ v-show="(formconfig && formconfig.f_user_level && formconfig.f_user_level.required) || !onlyshowmust"
231
+ :class="[$v.f_user_level.required ? 'has-error' : '']">
232
+ <label for="f_user_level"
233
+ class="font_normal_body ">&ensp;{{ getConfigLabelName('f_user_level', '用户等级') }}</label>
234
+ <input type="text" v-show="false" v-model="baseinfo.base.f_user_level"
235
+ v-validate:f_user_level=getConfigValidate("f_user_level",false)>
236
+ <v-select :value.sync="baseinfo.base.f_user_level" :search="false" :value-single="true"
237
+ :options='userlevel'
238
+ :placeholder="getConfigPlaceholder('f_user_level','用户等级')" close-on-select>
239
+ </v-select>
240
+ </div>
241
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_user_nature')"
242
+ v-show="(formconfig && formconfig.f_user_nature && formconfig.f_user_nature.required) || !onlyshowmust"
243
+ :class="[$v.f_user_nature.required ? 'has-error' : '']">
244
+ <label for="f_user_nature" class="font_normal_body"
245
+ title="用户性质">&ensp;{{ getConfigLabelName('f_user_nature', '用气类型') }}</label>
246
+ <input type="text" v-show="false" v-model="baseinfo.base.f_user_nature"
247
+ v-validate:f_user_nature=getConfigValidate("f_user_nature",false)>
248
+ <v-select :value.sync="baseinfo.base.f_user_nature" :search="false" :value-single="true"
249
+ :placeholder="getConfigPlaceholder('f_user_nature','用气类型')"
250
+ :options='usernature' close-on-select>
251
+ </v-select>
252
+ </div>
253
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_olduserinfo_code')"
254
+ v-show="(formconfig && formconfig.f_olduserinfo_code && formconfig.f_olduserinfo_code.required) || !onlyshowmust"
255
+ :class="[$v.f_olduserinfo_code.required ? 'has-error' : '']">
256
+ <label for="f_user_nature"
257
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_olduserinfo_code', '档案编号') }}</label>
258
+ <input type="text" v-model="baseinfo.base.f_olduserinfo_code" class="input_search" style="width:60%"
259
+ v-validate:f_olduserinfo_code=getConfigValidate("f_olduserinfo_code",false)
260
+ :placeholder="getConfigPlaceholder('f_olduserinfo_code','档案编号')">
261
+ </div>
262
+ <div class="col-sm-4 form-group"
263
+ v-show="(formconfig && formconfig.f_gas_pointsnumber && formconfig.f_gas_pointsnumber.required) || !onlyshowmust"
264
+ :class="[$v.f_gas_pointsnumber.dctest ? 'has-error' : '']"
265
+ v-if="getConfigShowItem('f_gas_pointsnumber')">
266
+ <label for="f_gas_pointsnumber"
267
+ class="font_normal_body">{{ getConfigLabelName('f_gas_pointsnumber', '用气点数量') }}</label>
268
+ <v-select id="f_gas_pointsnumber" :value.sync="baseinfo.base.f_gas_pointsnumber"
269
+ v-model="baseinfo.base.f_gas_pointsnumber"
270
+ :value-single="true"
271
+ :options='pointsnums'
272
+ :placeholder="getConfigPlaceholder('f_gas_pointsnumber','用气点数量')"
273
+ style="width: 65%"
274
+ close-on-select></v-select>
275
+ </div>
276
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_reminder_amount')"
277
+ v-show="(formconfig && formconfig.f_reminder_amount && formconfig.f_reminder_amount.required) || !onlyshowmust"
278
+ :class="[$v.f_reminder_amount.required ? 'has-error' : '']"
279
+ title="余额小于该值后,微信公众号或短信推送余额不足提醒">
280
+ <label for="f_reminder_amount"
281
+ :style="{color: baseinfo.base.f_reminder_amount === null || baseinfo.base.f_reminder_amount === '' ? 'red' : null}"
282
+ class="font_normal_body">{{ getConfigLabelName('f_reminder_amount', '提示金额') }}</label>
283
+ <input type="number" v-model="baseinfo.base.f_reminder_amount" class="input_search" style="width:60%"
284
+ v-validate:f_reminder_amount=getConfigValidate("f_reminder_amount",false)
285
+ :placeholder="getConfigPlaceholder('f_reminder_amount','提示金额')" @input="reminderAmountHandle">
286
+ </div>
287
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_open_date')"
288
+ v-show="(formconfig && formconfig.f_open_date && formconfig.f_open_date.required) || !onlyshowmust"
289
+ :class="[$v.f_open_date.required ? 'has-error' : '']">
290
+ <label for="f_open_date"
291
+ class="font_normal_body">{{ getConfigLabelName('f_open_date', '开户时间') }}</label>
292
+ <input type="text" v-model="baseinfo.base.f_open_date" v-show="false"
293
+ v-validate:f_open_date=getConfigValidate('f_open_date',true)>
294
+ <datepicker style="width:60%" id="ScrapDate" placeholder="开户时间" width='100%'
295
+ v-model="baseinfo.base.f_open_date"
296
+ :value.sync="baseinfo.base.f_open_date"
297
+ class="datepicker"
298
+ :format="'yyyy-MM-dd HH:mm:ss'"
299
+ :show-reset-button="true">
300
+ </datepicker>
301
+ </div>
302
+ </div>
303
+ <div class="row">
304
+ <div style="" class="col-sm-12 form-group" v-if="getConfigShowItem('f_comments')"
305
+ v-show="(formconfig && formconfig.f_comments && formconfig.f_comments.required) || !onlyshowmust"
306
+ :class="[$v.f_comments.required ? 'has-error' : '']">
307
+ <label for="f_paper_accoun"
308
+ class="font_normal_body">&ensp;{{ getConfigLabelName('f_comments', '备注') }}</label>
309
+ <input class="input_search" style="width:86.5%;height: 40px" v-model="baseinfo.base.f_comments"
310
+ :placeholder="getConfigPlaceholder('f_comments','请输入备注信息')"
311
+ v-validate:f_comments=getConfigValidate("f_comments",false)>
312
+ </div>
313
+ </div>
314
+
315
+ <div class="row" style="margin-top: 2%;">
316
+ <a style="font-size: 16px;font-weight: 500;"
317
+ v-if="baseinfo.base.f_cost_type[0] === '银行代扣'">银行信息</a>
318
+ </div>
319
+ <div v-if="baseinfo.base.f_cost_type[0] === '银行代扣'">
320
+ <div class="row">
321
+ <div class="col-sm-4 form-group"
322
+ :class="[$v.f_bank_accopen.required ? 'has-error' : '']" v-if="getConfigShowItem('f_bank_accopen')">
323
+ <label for="f_username"
324
+ class="font_normal_body">{{ getConfigLabelName('f_bank_accopen', '银行户名') }}</label>
325
+ <input type="text" v-model="baseinfo.bank.f_bank_accopen"
326
+ class="input_search" style="width:60%" id="f_username"
327
+ :placeholder="getConfigPlaceholder('f_bank_accopen','客户名称')"
328
+ v-validate:f_bank_accopen=getConfigValidate("f_bank_accopen",false)
329
+ v-next-el="bankaccount">
330
+ </div>
331
+ <div class="col-sm-4 form-group" id=userfiles-useEssInf-银行名称 v-if="getConfigShowItem('f_bank_name')"
332
+ :class="[$v.f_bank_name.required ? 'has-error' : '']">
333
+ <label for="f_username"
334
+ class="font_normal_body ">{{ getConfigLabelName('f_bank_name', '银行名称') }}</label>
335
+ <input type="text" v-show="false" v-model="baseinfo.base.f_bank_name"
336
+ v-validate:f_bank_name=getConfigValidate("f_bank_name",false)>
337
+ <v-select :value.sync="baseinfo.bank.f_bank_name"
338
+ :options='banknames'
339
+ :placeholder="getConfigPlaceholder('f_bank_name','银行名称')"
340
+ close-on-select></v-select>
341
+ </div>
342
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_bank_pay_number')"
343
+ :class="[$v.f_bank_pay_number.required ? 'has-error' : '']">
344
+ <label for="f_bank_idnumber"
345
+ class="font_normal_body">{{ getConfigLabelName('f_bank_pay_number', '缴费编号') }}</label>
346
+ <input type="text" v-model="baseinfo.bank.f_bank_pay_number"
347
+ class="input_search" style="width:60%"
348
+ v-validate:f_bank_pay_number=getConfigValidate("f_bank_pay_number",false)
349
+ :placeholder="getConfigPlaceholder('f_bank_pay_number','缴费编号')"
350
+ aria-describedby="helpBlock" v-el:bankpaynumber>
351
+ </div>
352
+ <div class="col-sm-12 form-group" v-if="getConfigShowItem('f_bank_idnumber')"
353
+ :class="[$v.f_bank_idnumber.required ? 'has-error' : '']">
354
+ <label for="f_bank_idnumber"
355
+ class="font_normal_body">{{ getConfigLabelName('f_bank_idnumber', '身份证号') }}</label>
356
+ <input type="text" v-model="baseinfo.bank.f_bank_idnumber"
357
+ class="input_search" style="width:54%"
358
+ :placeholder="getConfigPlaceholder('f_bank_idnumber','身份证号')"
359
+ v-validate:f_bank_idnumber=getConfigValidate("f_bank_idnumber",false)
360
+ aria-describedby="helpBlock" v-el:bankidnumber>
361
+ </div>
362
+ <div class="col-sm-12 form-group"
363
+ :class="[$v.f_bank_account.required ? 'has-error' : '']" v-if="getConfigShowItem('f_bank_account')">
364
+ <label for="f_userid"
365
+ class="font_normal_body">{{ getConfigLabelName('f_bank_account', '银行账号') }}</label>
366
+ <input type="text" v-model="baseinfo.bank.f_bank_account" class="input_search" style="width:54%"
367
+ v-validate:f_bank_account=getConfigValidate("f_bank_account",true) v-el:bankaccount
368
+ :placeholder="getConfigPlaceholder('f_bank_account','银行账号')"
369
+ v-next-el="bankidnumber">
370
+ </div>
371
+ </div>
372
+ </div>
373
+ </form>
374
+ </validator>
375
+ <modal v-if="showselectaddress" :show.sync="showselectaddress" width="50%" height="80%" title="地址信息" v-ref:modal
376
+ large backdrop="false">
377
+ <article slot="modal-body" class="modal-body" style="height: 700px;padding: 0!important;">
378
+ <file-address-manage :is-select="isSelect" :fileinfo="addressinfo"
379
+ @address-valid="doNothing" :showselectaddress.sync="showselectaddress"
380
+ v-ref:fileaddress></file-address-manage>
381
+ </article>
382
+ <footer slot="modal-footer" class="modal-footer">
383
+ </footer>
384
+ </modal>
385
+ <file-user-phone :show.sync="showphone" :userphonelist="userphonelist"
386
+ :f_userinfo_id="baseinfo.base.f_userinfo_id"></file-user-phone>
387
+ </div>
388
+ </template>
389
+
390
+ <script>
391
+ import {HttpResetClass} from 'vue-client'
392
+
393
+ let getEditUserState = async function (self) {
394
+ try {
395
+ let http = new HttpResetClass()
396
+ let result = await http.load('GET', `rs/vue/EditUserState.json`, {}, {resolveMsg: null, rejectMsg: null})
397
+ console.log(result.data.EditUserState)
398
+ self.edituserstate = result.data.EditUserState
399
+ Object.assign(self.config, result.data)
400
+ } catch (e) {
401
+ console.log(e)
402
+ }
403
+ }
404
+
405
+ export default {
406
+ title: '基本信息',
407
+ props: ['baseinfo', 'addressinfo', 'isedit', 'userphonelist', 'formconfig', 'onlyshowmust'],
408
+ data () {
409
+ return {
410
+ showselectaddress: false,
411
+ site: '',
412
+ config: {
413
+ f_idnumber: true
414
+ },
415
+ showphone: false,
416
+ areas: [],
417
+ streets: [],
418
+ residentials: [],
419
+ inputtores: this.$appdata.getParam('抄表员'),
420
+ credentials: this.$appdata.getParam('证件类型'),
421
+ costtypes: this.$appdata.getParam('缴费类型'),
422
+ banknames: this.$appdata.getParam('银行名称'),
423
+ userstates: this.$appdata.getParam('用户状态'),
424
+ mgq: this.$appdata.getParam('是否煤改气'),
425
+ peopleMax: this.$appdata.getSingleValue('最大人口数'),
426
+ pointsMax: this.$appdata.getSingleValue('最大用气点数量'),
427
+ costtype: this.$appdata.getParam('付款类型'),
428
+ usernature: this.$appdata.getParam('用户性质'),
429
+ userlevel: this.$appdata.getParam('用户等级'),
430
+ housetype: this.$appdata.getParam('房屋类型'),
431
+ jurisdiction: this.$login.r,
432
+ edituserstate: false,
433
+ // highMeterPlugin: {},
434
+ readCardFlag: true,
435
+
436
+ isSelect: false,
437
+ rules: {}
438
+ }
439
+ },
440
+ ready () {
441
+ getEditUserState(this)
442
+ this.$resetValidation()
443
+ // this.highMeterPlugin = new HighMeter(this,this.readIDCardCallback)
444
+ },
445
+ beforeDestroy () {
446
+ // this.highMeterPlugin.Stop()
447
+ },
448
+ methods: {
449
+ reminderAmountHandle (e) {
450
+ this.$emit('input', e.target.value)
451
+ e.target.value = (e.target.value.match(/^\d*(\.?\d{0,1})/g)[0]) || null
452
+ this.baseinfo.base.f_reminder_amount = parseInt(e.target.value, 10)
453
+ },
454
+ getConfigValidate (name, defaultVal) {
455
+ this.$resetValidation()
456
+ if (this.formconfig && this.formconfig[name]) {
457
+ let Validate = {}
458
+ if (this.formconfig[name].required) {
459
+ Object.assign(Validate, {required: true})
460
+ }
461
+ if (this.formconfig[name].minlength || this.formconfig[name].minlength === 0) {
462
+ Object.assign(Validate, {minlength: this.formconfig[name].minlength})
463
+ }
464
+ if (this.formconfig[name].maxlength) {
465
+ Object.assign(Validate, {maxlength: this.formconfig[name].maxlength})
466
+ }
467
+ return Validate
468
+ } else if (name === 'f_user_phone') {
469
+ return {minlength: 11, maxlength: 11}
470
+ } else if (defaultVal) {
471
+ return {required: defaultVal}
472
+ }
473
+ return {}
474
+ },
475
+ getConfigShowItem (name, defaultVal = true) {
476
+ if (this.formconfig && this.formconfig[name] && this.formconfig[name].hasOwnProperty('showItem')) {
477
+ return this.formconfig[name].showItem
478
+ } else {
479
+ return defaultVal
480
+ }
481
+ },
482
+ getConfigLabelName (name, defaultVal) {
483
+ if (this.formconfig && this.formconfig[name] && this.formconfig[name].labelName) {
484
+ return this.formconfig[name].labelName
485
+ } else {
486
+ return defaultVal
487
+ }
488
+ },
489
+ getConfigPlaceholder (name, defaultVal) {
490
+ if (this.formconfig && this.formconfig[name] && this.formconfig[name].placeholder) {
491
+ return this.formconfig[name].placeholder
492
+ } else {
493
+ return defaultVal
494
+ }
495
+ },
496
+ selectaddress () {
497
+ this.showselectaddress = true
498
+ this.isSelect = true
499
+ },
500
+ modifyaddress () {
501
+ this.showselectaddress = true
502
+ this.isSelect = false
503
+ },
504
+ onValid (res) {
505
+ this.$dispatch('valid')
506
+ },
507
+ onInvalid (res) {
508
+ this.$dispatch('invalid')
509
+ },
510
+ doNothing () {
511
+ },
512
+ readIDCardCallback (compoent, msg) {
513
+ console.log('进入高拍仪', msg)
514
+ if (msg.err !== 0) {
515
+ return
516
+ }
517
+ // document.getElementById("idCardType").getElementsByClassName("btn-content")[0].innerHTML="身份证"
518
+ compoent.baseinfo.base.f_idnumber = msg.strID
519
+ compoent.baseinfo.base.f_user_name = msg.strName.trim()
520
+ // compoent.baseinfo.base.f_credentials=["身份证"]
521
+ },
522
+ phoneManage () {
523
+ this.showphone = true
524
+ console.log('查看用户备用电话信息', this.userphonelist)
525
+ }
526
+ },
527
+ watch: {
528
+ 'baseinfo.base.f_userinfo_id' (val) {
529
+ if (this.formconfig.f_reminder_amount != null) {
530
+ if (this.baseinfo.base.f_reminder_amount === null && this.formconfig.f_reminder_amount.required) {
531
+ this.$showAlert('当前用户还未设置余额提示金额,请在提示金额字段进行设置', 'warning', 3000)
532
+ }
533
+ }
534
+ },
535
+ // 重置验证结果,当证件类型切换时,验证结果不能立即刷新,需要重置
536
+ 'baseinfo.base.f_credentials[0]' () {
537
+ console.log('验证器重置')
538
+ this.$resetValidation()
539
+ },
540
+ 'baseinfo.base.f_cost_type[0]' () {
541
+ console.log('验证器重置')
542
+ this.$resetValidation()
543
+ }
544
+ // 当选择销户,需要给其提醒是否进行销户
545
+ // 'baseinfo.base.f_user_state'(val) {
546
+ // // if (val[0] === '销户') {
547
+ // // this.$showMessage('是否要对该客户进行销户操作?', ['confirm', 'cancel']).then((res) => {
548
+ // // if (res !== 'confirm') {
549
+ // // this.baseinfo.base.f_user_state = ['正常']
550
+ // // }
551
+ // // })
552
+ // // }
553
+ // }
554
+ },
555
+ computed: {
556
+ peoplenums () {
557
+ let peopleMax = this.$appdata.getSingleValue('最大人口数') ? this.$appdata.getSingleValue('最大人口数') : 0
558
+ let nums = []
559
+ for (let i = 1; i <= peopleMax; i++) {
560
+ let temp = {}
561
+ temp.label = i
562
+ temp.value = i
563
+ nums.push(temp)
564
+ }
565
+ return nums
566
+ },
567
+ pointsnums () {
568
+ let pointsMax = this.$appdata.getSingleValue('最大用气点数量') ? this.$appdata.getSingleValue('最大用气点数量') : 10
569
+ let nums = []
570
+ for (let i = 1; i <= pointsMax; i++) {
571
+ let temp = {}
572
+ temp.label = i
573
+ temp.value = i
574
+ nums.push(temp)
575
+ }
576
+ return nums
577
+ }
578
+ },
579
+ events: {
580
+ 'confirmaddress' (res) {
581
+ console.log('选定地址', res)
582
+ this.showselectaddress = false
583
+ this.addressinfo.f_address = res.f_address
584
+ this.addressinfo.id = res.id
585
+ this.$dispatch('defaultOtheret', res)
586
+ }
587
+ }
588
+ }
589
+ </script>
590
+ <style scoped lang="less">
591
+ // 两个字符占用4个字符距离
592
+ .w2 {
593
+ letter-spacing: 2em; /*如果需要y个字两端对齐,则为(x-y)/(y-1),这里是(4-2)/(2-1)=2em */
594
+ margin-right: -2em; /*同上*/
595
+ }
596
+
597
+ // 三个字符占用4个字符距离
598
+ .w3 {
599
+ letter-spacing: 0.5em;
600
+ margin-right: -0.5em
601
+ }
602
+
603
+ #UserEssential {
604
+ // 去掉number类型输入框的上下箭头
605
+ input[type="number"] {
606
+ &::-webkit-inner-spin-button,
607
+ &::-webkit-outer-spin-button {
608
+ -webkit-appearance: none;
609
+ margin: 0;
610
+ }
611
+
612
+ & {
613
+ -moz-appearance: textfield;
614
+ }
615
+ }
616
+
617
+ #addboxmap {
618
+ height: 300px;
619
+ }
620
+
621
+ .glyphicon-map-marker:hover {
622
+ color: red;
623
+ }
624
+
625
+ .glyphicon-map-marker {
626
+ color: blue;
627
+ cursor: pointer;
628
+ }
629
+
630
+ .scrollbar() {
631
+ .font_normal_body {
632
+ width: 73px;
633
+ overflow: auto;
634
+ white-space: nowrap;
635
+ // 指滚动条两边的按钮
636
+ &::-webkit-scrollbar-button {
637
+ display: none;
638
+ }
639
+
640
+ // 滚动条的宽度
641
+ &::-webkit-scrollbar {
642
+ width: 5px !important;
643
+ height: 5px !important;
644
+ }
645
+
646
+ // 滚动条的设置
647
+ &::-webkit-scrollbar-thumb {
648
+ background-color: #ddd;
649
+ background-clip: padding-box;
650
+ }
651
+
652
+ &::-webkit-scrollbar-thumb:hover {
653
+ background-color: #bbb;
654
+ }
655
+
656
+ &::-webkit-scrollbar-track {
657
+ /*滚动条里面轨道*/
658
+ box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
659
+ background: #ededed;
660
+ }
661
+ }
662
+ }
663
+
664
+ .col-sm-4, .col-sm-12, .col-sm-8 {
665
+ .scrollbar();
666
+ }
667
+ }
668
+ </style>