sale-client 3.6.378 → 3.6.379

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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.6.378",
3
+ "version": "3.6.379",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -196,8 +196,20 @@ let getFileGen = async function (self, data) {
196
196
  self.data.meterinfo.forEach((item) => {
197
197
  item.devicesinfo.forEach((item2) => {
198
198
  if (item2.img.content) {
199
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
200
- item2.img.content = 'http://' + location.host + '/' + URL
199
+ if (item2.img.content.startsWith('data:image/')) {
200
+ console.log('base64,直接展示不做处理')
201
+ } else if (item2.img.content.startsWith('http')) {
202
+ console.log('http,直接展示不做处理')
203
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
204
+ // windwos 路径处理
205
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
206
+ // eslint-disable-next-line no-undef
207
+ item2.img.content = 'http://' + location.host + '/' + URL
208
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
209
+ // linux 路径处理
210
+ // eslint-disable-next-line no-undef
211
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
212
+ }
201
213
  }
202
214
  })
203
215
  })
@@ -327,6 +327,9 @@
327
327
  <th v-if="!$parent.$parent.$parent.isOper">
328
328
  <nobr>客户地址</nobr>
329
329
  </th>
330
+ <th>
331
+ <nobr>行政门牌号</nobr>
332
+ </th>
330
333
  <th>
331
334
  <nobr>客户类型</nobr>
332
335
  </th>
@@ -375,6 +378,7 @@
375
378
  <td style="text-align: center;" v-if="!$parent.$parent.$parent.isOper">{{row.f_address_detail ? row.f_address + row.f_address_detail :
376
379
  row.f_address}}
377
380
  </td>
381
+ <td style="text-align: center;">{{row.f_municipal_number}}</td>
378
382
  <td style="text-align: center;">{{row.f_user_type}}</td>
379
383
  <td style="text-align: center;">{{row.f_gasproperties}}</td>
380
384
  <td style="text-align: center;">{{row.f_meter_classify}}</td>
@@ -0,0 +1,611 @@
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" 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:55%"
18
+ :placeholder="getConfigPlaceholder('f_user_phone','客户电话')"
19
+ v-el:phone v-next-el="area">
20
+ <button type="button" class="glyphicon glyphicon-plus" @click.stop="phoneManage()"></button>
21
+ </div>
22
+
23
+ <div style=""
24
+ v-show="(formconfig && formconfig.f_rent_phone && formconfig.f_rent_phone.required) || !onlyshowmust"
25
+ :class="[$v.f_rent_phone.required ? 'has-error' : '']"
26
+ class="col-sm-4 form-group" v-if="getConfigShowItem('f_rent_phone')">
27
+ <label for="f_rent_phone" class="font_normal_body">&ensp;{{getConfigLabelName('f_rent_phone','曾用电话')}}</label>
28
+ <input type="text" v-model="baseinfo.base.f_rent_phone" class="input_search" style="width:60%"
29
+ v-validate:f_rent_phone=getConfigValidate("f_rent_phone",false)
30
+ :placeholder="getConfigPlaceholder('f_rent_phone','曾用电话')">
31
+ </div>
32
+
33
+ <div class="col-sm-4 form-group" style="" v-if="true">
34
+ <label for="f_user_state" class="font_normal_body">&ensp;{{getConfigLabelName('f_user_state','客户状态')}}</label>
35
+ <v-select :value.sync="baseinfo.base.f_user_state"
36
+ :disabled="true"
37
+ :value-single="true"
38
+ :options='userstates' :placeholder="getConfigPlaceholder('f_user_state','客户状态')"
39
+ close-on-select></v-select>
40
+ </div>
41
+ <div class="col-sm-4 form-group" style="" >
42
+ <label for="f_uservent_date" class="font_normal_body">&ensp;{{getConfigLabelName('f_uservent_date','通气日期')}}</label>
43
+ <datepicker style="width:60%" placeholder="用户通气日期"
44
+ v-model="baseinfo.base.f_uservent_date"
45
+ v-ref:f_uservent_date
46
+ :value.sync="baseinfo.base.f_uservent_date"
47
+ :format="'yyyy-MM-dd HH:mm:ss'"
48
+ ></datepicker>
49
+ </div>
50
+ </div>
51
+ <div class="row">
52
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_credentials')">
53
+ <label for="f_credentials" class="font_normal_body">&ensp;{{getConfigLabelName('f_credentials','证件类型')}}</label>
54
+ <v-select id="idCardType" :value.sync="baseinfo.base.f_credentials"
55
+ v-model="baseinfo.base.f_credentials"
56
+ :value-single="true"
57
+ :options='credentials'
58
+ :placeholder="getConfigPlaceholder('f_credentials','证件类型')"
59
+ style="width: 65%"
60
+ close-on-select></v-select>
61
+ </div>
62
+ <div style="" class="col-sm-8 form-group"
63
+ :class="[$v.f_idnumber2.identityCardValid ? 'has-error' : '']"
64
+ v-if="baseinfo.base.f_credentials === '身份证' && config.f_idnumber ">
65
+ <label for="f_idnumber" class="font_normal_body">*证件号码</label>
66
+ <input type="text" maxlength="18" v-model="baseinfo.base.f_idnumber"
67
+ v-validate:f_idnumber2='{identityCardValid: true}' class="input_search" style="width:80%"
68
+ :placeholder="getConfigPlaceholder('f_idnumber','证件号码')">
69
+ </div>
70
+ <div style="" class="col-sm-8 form-group" v-if="baseinfo.base.f_credentials !== '身份证' || !config.f_idnumber ">
71
+ <label class="font_normal_body">&ensp;证件号码</label>
72
+ <input type="text" v-model="baseinfo.base.f_idnumber" class="input_search" style="width:80%"
73
+ :placeholder="getConfigPlaceholder('f_idnumber','证件号码')">
74
+ </div>
75
+ </div>
76
+ <div class="row">
77
+ <div class="col-sm-12 form-group" :class="[$v.f_address.required ? 'has-error' : '']">
78
+ <label for="f_address" class="font_normal_body">*地址信息</label>
79
+ <input type="text" v-model="addressinfo.f_address" :value.sync="addressinfo.f_address" v-validate:f_address='{required: true }'
80
+ class="input_search" disabled="disabled" style="width:70%;" placeholder="用户地址" >
81
+ <span>
82
+ <button class="button_search button_spacing" type="button" style="width: max-content" v-if="!isedit" @click="selectaddress()">选择地址</button>
83
+ <!-- <button class="button_search button_spacing" type="button" style="width: max-content" v-if="isedit" @click="modifyaddress()">修改地址</button>-->
84
+ <button class="button_search button_spacing" type="button" style="width: max-content" v-if="isedit" @click="selectaddress()">修改地址</button>
85
+ </span>
86
+ </div>
87
+ </div>
88
+ <div class="row">
89
+ <div style=""
90
+ v-show="(formconfig && formconfig.f_used_name && formconfig.f_used_name.required) || !onlyshowmust"
91
+ :class="[$v.f_used_name.required ? 'has-error' : '']"
92
+ class="col-sm-4 form-group" v-if="getConfigShowItem('f_used_name')">
93
+ <label style="letter-spacing: 0.5em;margin-right: -0.5em" for="f_used_name" class="font_normal_body w3">{{getConfigLabelName('f_used_name','曾用名')}}</label>
94
+ <input type="text" v-model="baseinfo.base.f_used_name" class="input_search" style="width:60%"
95
+ v-validate:f_used_name=getConfigValidate("f_used_name",false)
96
+ :placeholder="getConfigPlaceholder('f_used_name','曾用名')">
97
+ </div>
98
+ <div class="col-sm-4 form-group"
99
+ v-show="(formconfig && formconfig.f_people_num && formconfig.f_people_num.required) || !onlyshowmust"
100
+ :class="[$v.f_people_num.dctest ? 'has-error' : '']" v-if="getConfigShowItem('f_people_num')">
101
+ <label for="f_people_num" style="letter-spacing: 0.5em;margin-right: -0.5em" class="font_normal_body w3">{{getConfigLabelName('f_people_num','人口数')}}</label>
102
+ <input type="number" v-model="baseinfo.base.f_people_num" v-show="!peopleMax" v-validate:f_people_num='{dctest: [0, ">=" ]}'
103
+ :disabled="!jurisdiction.includes('修改人口数')" class="input_search" style="width:60%"
104
+ placeholder="家庭人口数">
105
+ <v-select id="f_people_num" :value.sync="baseinfo.base.f_people_num"
106
+ v-if="peopleMax"
107
+ v-model="baseinfo.base.f_people_num"
108
+ :value-single="true"
109
+ :options='peoplenums'
110
+ :placeholder="getConfigPlaceholder('f_people_num','家庭人口数')"
111
+ style="width: 65%"
112
+ close-on-select></v-select>
113
+ </div>
114
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_municipal_number')"
115
+ v-show="(formconfig && formconfig.f_municipal_number && formconfig.f_municipal_number.required) || !onlyshowmust"
116
+ :class="[$v.f_municipal_number.required ? 'has-error' : '']">
117
+ <label for="f_municipal_number" class="font_normal_body">&ensp;{{getConfigLabelName('f_municipal_number','行政门牌号')}}</label>
118
+ <input type="text" v-model="baseinfo.base.f_municipal_number" class="input_search" style="width:60%"
119
+ v-validate:f_municipal_number=getConfigValidate("f_municipal_number",false)
120
+ :placeholder="getConfigPlaceholder('f_municipal_number','行政门牌号')">
121
+ </div>
122
+ </div>
123
+ <div class="row">
124
+ <div style=""
125
+ v-show="(formconfig && formconfig.f_balance && formconfig.f_balance.required) || !onlyshowmust"
126
+ :class="[$v.f_balance.required ? 'has-error' : '']"
127
+ class="col-sm-4 form-group" v-if="getConfigShowItem('f_balance')">
128
+ <label for="f_balance" class="font_normal_body">&ensp;{{getConfigLabelName('f_balance','用户余额')}}</label>
129
+ <input type="text" v-model="baseinfo.base.f_balance" class="input_search" style="width:60%"
130
+ v-validate:f_balance=getConfigValidate("f_balance",false)
131
+ :placeholder="getConfigPlaceholder('f_balance','用户余额')"
132
+ :disabled="!jurisdiction.includes('档案信息查询修改')">
133
+ </div>
134
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_is_mgq')"
135
+ v-show="(formconfig && formconfig.f_is_mgq && formconfig.f_is_mgq.required) || !onlyshowmust"
136
+ :class="[$v.f_is_mgq.required ? 'has-error' : '']">
137
+ <label for="f_is_mgq" style="letter-spacing: 0.5em;margin-right: -0.5em" class="font_normal_body w3">{{getConfigLabelName('f_is_mgq','煤改气')}}</label>
138
+ <input type="text" v-show="false" v-model="baseinfo.base.f_is_mgq"
139
+ v-validate:f_is_mgq=getConfigValidate("f_is_mgq",false)>
140
+ <v-select id="f_is_mgq" :value.sync="baseinfo.base.f_is_mgq" v-model="baseinfo.base.f_is_mgq"
141
+ :placeholder="getConfigPlaceholder('f_is_mgq','是否煤改气')"
142
+ :options='mgq' style="width: 65%" close-on-select></v-select>
143
+ </div>
144
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_book_no')"
145
+ v-show="(formconfig && formconfig.f_book_no && formconfig.f_book_no.required) || !onlyshowmust"
146
+ :class="[$v.f_book_no.required ? 'has-error' : '']">
147
+ <label for="f_contract" class="font_normal_body">&ensp;{{getConfigLabelName('f_book_no','燃气本号')}}</label>
148
+ <input type="text" v-model="baseinfo.base.f_book_no" class="input_search" style="width:60%"
149
+ v-validate:f_book_no=getConfigValidate("f_book_no",false)
150
+ :placeholder="getConfigPlaceholder('f_book_no','用户证号')">
151
+ </div>
152
+ </div>
153
+ <div class="row">
154
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_rent_name')"
155
+ v-show="(formconfig && formconfig.f_rent_name && formconfig.f_rent_name.required) || !onlyshowmust"
156
+ :class="[$v.f_rent_name.required ? 'has-error' : '']">
157
+ <label for="f_rent_name" class="font_normal_body">&ensp;{{getConfigLabelName('f_rent_name','租户姓名')}}</label>
158
+ <input type="text" v-model="baseinfo.base.f_rent_name" class="input_search" style="width:60%"
159
+ v-validate:f_rent_name=getConfigValidate("f_rent_name",false)
160
+ :placeholder="getConfigPlaceholder('f_rent_name','租户姓名')">
161
+ </div>
162
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_zuhu_phone')"
163
+ v-show="(formconfig && formconfig.f_zuhu_phone && formconfig.f_zuhu_phone.required) || !onlyshowmust"
164
+ :class="[$v.f_zuhu_phone.required ? 'has-error' : '']">
165
+ <label for="f_zuhu_phone" class="font_normal_body">{{getConfigLabelName('f_zuhu_phone','租户电话')}}</label>
166
+ <input type="text" v-model="baseinfo.base.f_zuhu_phone" class="input_search" style="width:60%"
167
+ v-validate:f_zuhu_phone=getConfigValidate("f_zuhu_phone",false)
168
+ :placeholder="getConfigPlaceholder('f_zuhu_phone','租户电话')">
169
+ </div>
170
+ </div>
171
+ <div class="row">
172
+ <div style="" class="col-sm-8 form-group"
173
+ v-show="(formconfig && formconfig.f_zuhu_idnumber && formconfig.f_zuhu_idnumber.required) || !onlyshowmust"
174
+ v-if="getConfigShowItem('f_zuhu_idnumber')"
175
+ :class="[$v.f_zuhu_idnumber.required ? 'has-error' : '']">
176
+ <label for="f_zuhu_idnumber" class="font_normal_body">{{getConfigLabelName('f_zuhu_idnumber','租户身份证')}}</label>
177
+ <input type="text" v-model="baseinfo.base.f_zuhu_idnumber" class="input_search" style="width:80%"
178
+ v-validate:f_zuhu_idnumber=getConfigValidate("f_zuhu_idnumber",false)
179
+ :placeholder="getConfigPlaceholder('f_zuhu_idnumber','租户身份证')">
180
+ </div>
181
+ <div style="" class="col-sm-4 form-group"
182
+ v-show="(formconfig && formconfig.f_cost_type && formconfig.f_cost_type.required) || !onlyshowmust"
183
+ v-if="getConfigShowItem('f_cost_type')">
184
+ <label for="f_is_mgq" class="font_normal_body ">&ensp;{{getConfigLabelName('f_cost_type','付款类型')}}</label>
185
+ <v-select id="f_is_mgq" :value.sync="baseinfo.base.f_cost_type" v-model="baseinfo.base.f_cost_type"
186
+ :options='costtype'
187
+ :placeholder="getConfigPlaceholder('f_cost_type','付款类型')" style="width: 65%" close-on-select></v-select>
188
+ </div>
189
+ </div>
190
+ <div class="row">
191
+ <div class="col-sm-8 form-group" v-if="getConfigShowItem('f_contract_id')"
192
+ v-show="(formconfig && formconfig.f_contract_id && formconfig.f_contract_id.required) || !onlyshowmust"
193
+ :class="[$v.f_contract_id.required ? 'has-error' : '']">
194
+ <label for="f_contract" class="font_normal_body">&ensp;{{getConfigLabelName('f_contract_id','合同编号')}}</label>
195
+ <input type="text" v-model="baseinfo.base.f_contract_id" class="input_search" style="width:80%"
196
+ v-validate:f_contract_id=getConfigValidate("f_contract_id",false)
197
+ :placeholder="getConfigPlaceholder('f_contract_id','合同编号')">
198
+ </div>
199
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_house_type')"
200
+ v-show="(formconfig && formconfig.f_house_type && formconfig.f_house_type.required) || !onlyshowmust"
201
+ :class="[$v.f_house_type.required ? 'has-error' : '']">
202
+ <label for="f_user_state" class="font_normal_body">&ensp;{{getConfigLabelName('f_house_type','房屋类型')}}</label>
203
+ <input type="text" v-show="false" v-model="baseinfo.base.f_house_type"
204
+ v-validate:f_house_type=getConfigValidate("f_house_type",false)>
205
+ <v-select :value.sync="baseinfo.base.f_house_type" :search="false" :value-single="true"
206
+ :options='housetype' close-on-select
207
+ :placeholder="getConfigPlaceholder('f_house_type','房屋类型')">
208
+ </v-select>
209
+ </div>
210
+ </div>
211
+ <div class="row">
212
+ <div style="" class="col-sm-4 form-group" v-if="getConfigShowItem('f_user_level')"
213
+ v-show="(formconfig && formconfig.f_user_level && formconfig.f_user_level.required) || !onlyshowmust"
214
+ :class="[$v.f_user_level.required ? 'has-error' : '']">
215
+ <label for="f_user_level" class="font_normal_body ">&ensp;{{getConfigLabelName('f_user_level','用户等级')}}</label>
216
+ <input type="text" v-show="false" v-model="baseinfo.base.f_user_level"
217
+ v-validate:f_user_level=getConfigValidate("f_user_level",false)>
218
+ <v-select :value.sync="baseinfo.base.f_user_level" :search="false" :value-single="true"
219
+ :options='userlevel'
220
+ :placeholder="getConfigPlaceholder('f_user_level','用户等级')" close-on-select>
221
+ </v-select>
222
+ </div>
223
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_user_nature')"
224
+ v-show="(formconfig && formconfig.f_user_nature && formconfig.f_user_nature.required) || !onlyshowmust"
225
+ :class="[$v.f_user_nature.required ? 'has-error' : '']">
226
+ <label for="f_user_nature" class="font_normal_body" title="用户性质">&ensp;{{getConfigLabelName('f_user_nature','用气类型')}}</label>
227
+ <input type="text" v-show="false" v-model="baseinfo.base.f_user_nature"
228
+ v-validate:f_user_nature=getConfigValidate("f_user_nature",false)>
229
+ <v-select :value.sync="baseinfo.base.f_user_nature" :search="false" :value-single="true"
230
+ :placeholder="getConfigPlaceholder('f_user_nature','用气类型')"
231
+ :options='usernature' close-on-select>
232
+ </v-select>
233
+ </div>
234
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_olduserinfo_code')"
235
+ v-show="(formconfig && formconfig.f_olduserinfo_code && formconfig.f_olduserinfo_code.required) || !onlyshowmust"
236
+ :class="[$v.f_olduserinfo_code.required ? 'has-error' : '']">
237
+ <label for="f_user_nature" class="font_normal_body">&ensp;{{getConfigLabelName('f_olduserinfo_code','档案编号')}}</label>
238
+ <input type="text" v-model="baseinfo.base.f_olduserinfo_code" class="input_search" style="width:60%"
239
+ v-validate:f_olduserinfo_code=getConfigValidate("f_olduserinfo_code",false)
240
+ :placeholder="getConfigPlaceholder('f_olduserinfo_code','档案编号')">
241
+ </div>
242
+ <div class="col-sm-4 form-group"
243
+ v-show="(formconfig && formconfig.f_gas_pointsnumber && formconfig.f_gas_pointsnumber.required) || !onlyshowmust"
244
+ :class="[$v.f_gas_pointsnumber.dctest ? 'has-error' : '']" v-if="getConfigShowItem('f_gas_pointsnumber')">
245
+ <label for="f_gas_pointsnumber" class="font_normal_body">{{getConfigLabelName('f_gas_pointsnumber','用气点数量')}}</label>
246
+ <v-select id="f_gas_pointsnumber" :value.sync="baseinfo.base.f_gas_pointsnumber"
247
+ v-model="baseinfo.base.f_gas_pointsnumber"
248
+ :value-single="true"
249
+ :options='pointsnums'
250
+ :placeholder="getConfigPlaceholder('f_gas_pointsnumber','用气点数量')"
251
+ style="width: 65%"
252
+ close-on-select></v-select>
253
+ </div>
254
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_reminder_amount')"
255
+ v-show="(formconfig && formconfig.f_reminder_amount && formconfig.f_reminder_amount.required) || !onlyshowmust"
256
+ :class="[$v.f_reminder_amount.required ? 'has-error' : '']" title="余额小于该值后,微信公众号或短信推送余额不足提醒">
257
+ <label for="f_reminder_amount" :style="{color: baseinfo.base.f_reminder_amount === null || baseinfo.base.f_reminder_amount === '' ? 'red' : null}" class="font_normal_body">{{getConfigLabelName('f_reminder_amount','提示金额')}}</label>
258
+ <input type="number" v-model="baseinfo.base.f_reminder_amount" class="input_search" style="width:60%"
259
+ v-validate:f_reminder_amount=getConfigValidate("f_reminder_amount",false)
260
+ :placeholder="getConfigPlaceholder('f_reminder_amount','提示金额')" @input="reminderAmountHandle">
261
+ </div>
262
+ </div>
263
+ <div class="row">
264
+ <div style="" class="col-sm-12 form-group" v-if="getConfigShowItem('f_comments')"
265
+ v-show="(formconfig && formconfig.f_comments && formconfig.f_comments.required) || !onlyshowmust"
266
+ :class="[$v.f_comments.required ? 'has-error' : '']">
267
+ <label for="f_paper_accoun" class="font_normal_body">&ensp;{{getConfigLabelName('f_comments','备注')}}</label>
268
+ <input class="input_search" style="width:86.5%;height: 40px" v-model="baseinfo.base.f_comments"
269
+ :placeholder="getConfigPlaceholder('f_comments','请输入备注信息')"
270
+ v-validate:f_comments=getConfigValidate("f_comments",false)>
271
+ </div>
272
+ </div>
273
+
274
+ <div class="row" style="margin-top: 2%;">
275
+ <a style="font-size: 16px;font-weight: 500;"
276
+ v-if="baseinfo.base.f_cost_type[0] === '银行代扣'">银行信息</a>
277
+ </div>
278
+ <div v-if="baseinfo.base.f_cost_type[0] === '银行代扣'">
279
+ <div class="row">
280
+ <div class="col-sm-4 form-group"
281
+ :class="[$v.f_bank_accopen.required ? 'has-error' : '']" v-if="getConfigShowItem('f_bank_accopen')">
282
+ <label for="f_username" class="font_normal_body">{{getConfigLabelName('f_bank_accopen','银行户名')}}</label>
283
+ <input type="text" v-model="baseinfo.bank.f_bank_accopen"
284
+ class="input_search" style="width:60%" id="f_username"
285
+ :placeholder="getConfigPlaceholder('f_bank_accopen','客户名称')"
286
+ v-validate:f_bank_accopen=getConfigValidate("f_bank_accopen",false)
287
+ v-next-el="bankaccount">
288
+ </div>
289
+ <div class="col-sm-4 form-group" id=userfiles-useEssInf-银行名称 v-if="getConfigShowItem('f_bank_name')"
290
+ :class="[$v.f_bank_name.required ? 'has-error' : '']">
291
+ <label for="f_username" class="font_normal_body ">{{getConfigLabelName('f_bank_name','银行名称')}}</label>
292
+ <input type="text" v-show="false" v-model="baseinfo.base.f_bank_name"
293
+ v-validate:f_bank_name=getConfigValidate("f_bank_name",false)>
294
+ <v-select :value.sync="baseinfo.bank.f_bank_name"
295
+ :options='banknames'
296
+ :placeholder="getConfigPlaceholder('f_bank_name','银行名称')"
297
+ close-on-select></v-select>
298
+ </div>
299
+ <div class="col-sm-4 form-group" v-if="getConfigShowItem('f_bank_pay_number')"
300
+ :class="[$v.f_bank_pay_number.required ? 'has-error' : '']">
301
+ <label for="f_bank_idnumber" class="font_normal_body">{{getConfigLabelName('f_bank_pay_number','缴费编号')}}</label>
302
+ <input type="text" v-model="baseinfo.bank.f_bank_pay_number"
303
+ class="input_search" style="width:60%"
304
+ v-validate:f_bank_pay_number=getConfigValidate("f_bank_pay_number",false)
305
+ :placeholder="getConfigPlaceholder('f_bank_pay_number','缴费编号')"
306
+ aria-describedby="helpBlock" v-el:bankpaynumber>
307
+ </div>
308
+ <div class="col-sm-12 form-group" v-if="getConfigShowItem('f_bank_idnumber')"
309
+ :class="[$v.f_bank_idnumber.required ? 'has-error' : '']">
310
+ <label for="f_bank_idnumber" class="font_normal_body">{{getConfigLabelName('f_bank_idnumber','身份证号')}}</label>
311
+ <input type="text" v-model="baseinfo.bank.f_bank_idnumber"
312
+ class="input_search" style="width:54%"
313
+ :placeholder="getConfigPlaceholder('f_bank_idnumber','身份证号')"
314
+ v-validate:f_bank_idnumber=getConfigValidate("f_bank_idnumber",false)
315
+ aria-describedby="helpBlock" v-el:bankidnumber>
316
+ </div>
317
+ <div class="col-sm-12 form-group"
318
+ :class="[$v.f_bank_account.required ? 'has-error' : '']" v-if="getConfigShowItem('f_bank_account')">
319
+ <label for="f_userid" class="font_normal_body">{{getConfigLabelName('f_bank_account','银行账号')}}</label>
320
+ <input type="text" v-model="baseinfo.bank.f_bank_account" class="input_search" style="width:54%"
321
+ v-validate:f_bank_account=getConfigValidate("f_bank_account",true) v-el:bankaccount
322
+ :placeholder="getConfigPlaceholder('f_bank_account','银行账号')"
323
+ v-next-el="bankidnumber">
324
+ </div>
325
+ </div>
326
+ </div>
327
+ </form>
328
+ </validator>
329
+ <modal v-if="showselectaddress" :show.sync="showselectaddress" width="50%" height="80%" title="地址信息" v-ref:modal large backdrop="false">
330
+ <article slot="modal-body" class="modal-body" style="height: 700px;padding: 0!important;">
331
+ <file-address-manage :is-select="isSelect" :fileinfo="addressinfo"
332
+ @address-valid="doNothing" :showselectaddress.sync="showselectaddress" v-ref:fileaddress ></file-address-manage>
333
+ </article>
334
+ <footer slot="modal-footer" class="modal-footer">
335
+ </footer>
336
+ </modal>
337
+ <file-user-phone :show.sync="showphone" :userphonelist="userphonelist" :f_userinfo_id="baseinfo.base.f_userinfo_id"></file-user-phone>
338
+ </div>
339
+ </template>
340
+
341
+ <script>
342
+ import {HttpResetClass} from 'vue-client'
343
+ import form from "vue-resource/src/http/interceptor/form";
344
+ // import HighMeter from '../../plugins/HighMeterPlugin'
345
+
346
+ let getEditUserState = async function (self) {
347
+ try {
348
+ let http = new HttpResetClass()
349
+ let result = await http.load('GET', `rs/vue/EditUserState.json`, {}, {resolveMsg: null, rejectMsg: null})
350
+ console.log(result.data.EditUserState)
351
+ self.edituserstate = result.data.EditUserState
352
+ Object.assign(self.config, result.data)
353
+ } catch (e) {
354
+ console.log(e)
355
+ }
356
+ }
357
+
358
+ export default {
359
+ title: '基本信息',
360
+ props: ['baseinfo', 'addressinfo', 'isedit', 'userphonelist', 'formconfig', 'onlyshowmust'],
361
+ data () {
362
+ return {
363
+ showselectaddress: false,
364
+ site: '',
365
+ config: {
366
+ f_idnumber: true
367
+ },
368
+ showphone: false,
369
+ areas: [],
370
+ streets: [],
371
+ residentials: [],
372
+ inputtores: this.$appdata.getParam('抄表员'),
373
+ credentials: this.$appdata.getParam('证件类型'),
374
+ costtypes: this.$appdata.getParam('缴费类型'),
375
+ banknames: this.$appdata.getParam('银行名称'),
376
+ userstates: this.$appdata.getParam('用户状态'),
377
+ mgq: this.$appdata.getParam('是否煤改气'),
378
+ peopleMax: this.$appdata.getSingleValue('最大人口数'),
379
+ pointsMax: this.$appdata.getSingleValue('最大用气点数量'),
380
+ costtype: this.$appdata.getParam('付款类型'),
381
+ usernature: this.$appdata.getParam('用户性质'),
382
+ userlevel: this.$appdata.getParam('用户等级'),
383
+ housetype: this.$appdata.getParam('房屋类型'),
384
+ jurisdiction: this.$login.r,
385
+ edituserstate: false,
386
+ // highMeterPlugin: {},
387
+ readCardFlag: true,
388
+
389
+ isSelect: false,
390
+ rules: {}
391
+ }
392
+ },
393
+ ready () {
394
+ getEditUserState(this)
395
+ this.$resetValidation()
396
+ // this.highMeterPlugin = new HighMeter(this,this.readIDCardCallback)
397
+ },
398
+ beforeDestroy () {
399
+ // this.highMeterPlugin.Stop()
400
+ },
401
+ methods: {
402
+ reminderAmountHandle (e) {
403
+ this.$emit('input', e.target.value)
404
+ e.target.value = (e.target.value.match(/^\d*(\.?\d{0,1})/g)[0]) || null
405
+ this.baseinfo.base.f_reminder_amount = parseInt(e.target.value, 10)
406
+ },
407
+ getConfigValidate (name, defaultVal) {
408
+ this.$resetValidation()
409
+ if (this.formconfig && this.formconfig[name]) {
410
+ let Validate = {}
411
+ if (this.formconfig[name].required) {
412
+ Object.assign(Validate, {required: true})
413
+ }
414
+ if (this.formconfig[name].minlength || this.formconfig[name].minlength === 0) {
415
+ Object.assign(Validate, {minlength: this.formconfig[name].minlength})
416
+ }
417
+ if (this.formconfig[name].maxlength) {
418
+ Object.assign(Validate, {maxlength: this.formconfig[name].maxlength})
419
+ }
420
+ return Validate
421
+ } else if (name === 'f_user_phone') {
422
+ return { minlength: 11, maxlength: 11 }
423
+ } else if (defaultVal) {
424
+ return {required: defaultVal}
425
+ }
426
+ return {}
427
+ },
428
+ getConfigShowItem (name,defaultVal = true) {
429
+ if (this.formconfig && this.formconfig[name] && this.formconfig[name].hasOwnProperty('showItem')) {
430
+ return this.formconfig[name].showItem
431
+ } else {
432
+ return defaultVal
433
+ }
434
+ },
435
+ getConfigLabelName (name, defaultVal) {
436
+ if (this.formconfig && this.formconfig[name] && this.formconfig[name].labelName) {
437
+ return this.formconfig[name].labelName
438
+ } else {
439
+ return defaultVal
440
+ }
441
+ },
442
+ getConfigPlaceholder (name, defaultVal) {
443
+ if (this.formconfig && this.formconfig[name] && this.formconfig[name].placeholder) {
444
+ return this.formconfig[name].placeholder
445
+ } else {
446
+ return defaultVal
447
+ }
448
+ },
449
+ selectaddress () {
450
+ this.showselectaddress = true
451
+ this.isSelect = true
452
+ },
453
+ modifyaddress () {
454
+ this.showselectaddress = true
455
+ this.isSelect = false
456
+ },
457
+ onValid (res) {
458
+ this.$dispatch('valid')
459
+ },
460
+ onInvalid (res) {
461
+ this.$dispatch('invalid')
462
+ },
463
+ doNothing () {
464
+ },
465
+ readIDCardCallback (compoent, msg) {
466
+ console.log('进入高拍仪', msg)
467
+ if (msg.err !== 0) {
468
+ return
469
+ }
470
+ // document.getElementById("idCardType").getElementsByClassName("btn-content")[0].innerHTML="身份证"
471
+ compoent.baseinfo.base.f_idnumber = msg.strID
472
+ compoent.baseinfo.base.f_user_name = msg.strName.trim()
473
+ // compoent.baseinfo.base.f_credentials=["身份证"]
474
+ },
475
+ phoneManage () {
476
+ this.showphone = true
477
+ console.log('查看用户备用电话信息', this.userphonelist)
478
+ }
479
+ },
480
+ watch: {
481
+ 'baseinfo.base.f_userinfo_id' (val) {
482
+ if(this.formconfig.f_reminder_amount!=null){
483
+ if (this.baseinfo.base.f_reminder_amount === null && this.formconfig.f_reminder_amount.required) {
484
+ this.$showAlert('当前用户还未设置余额提示金额,请在提示金额字段进行设置', 'warning', 3000)
485
+ }}
486
+ },
487
+ // 重置验证结果,当证件类型切换时,验证结果不能立即刷新,需要重置
488
+ 'baseinfo.base.f_credentials[0]' () {
489
+ console.log('验证器重置')
490
+ this.$resetValidation()
491
+ },
492
+ 'baseinfo.base.f_cost_type[0]' () {
493
+ console.log('验证器重置')
494
+ this.$resetValidation()
495
+ }
496
+ // 当选择销户,需要给其提醒是否进行销户
497
+ // 'baseinfo.base.f_user_state'(val) {
498
+ // // if (val[0] === '销户') {
499
+ // // this.$showMessage('是否要对该客户进行销户操作?', ['confirm', 'cancel']).then((res) => {
500
+ // // if (res !== 'confirm') {
501
+ // // this.baseinfo.base.f_user_state = ['正常']
502
+ // // }
503
+ // // })
504
+ // // }
505
+ // }
506
+ },
507
+ computed: {
508
+ peoplenums () {
509
+ let peopleMax = this.$appdata.getSingleValue('最大人口数') ? this.$appdata.getSingleValue('最大人口数') : 0
510
+ let nums = []
511
+ for (let i = 1; i <= peopleMax; i++) {
512
+ let temp = {}
513
+ temp.label = i
514
+ temp.value = i
515
+ nums.push(temp)
516
+ }
517
+ return nums
518
+ },
519
+ pointsnums () {
520
+ let pointsMax = this.$appdata.getSingleValue('最大用气点数量') ? this.$appdata.getSingleValue('最大用气点数量') : 10
521
+ let nums = []
522
+ for (let i = 1; i <= pointsMax; i++) {
523
+ let temp = {}
524
+ temp.label = i
525
+ temp.value = i
526
+ nums.push(temp)
527
+ }
528
+ return nums
529
+ }
530
+ },
531
+ events: {
532
+ 'confirmaddress' (res) {
533
+ console.log('选定地址', res)
534
+ this.showselectaddress = false
535
+ this.addressinfo.f_address = res.f_address
536
+ this.addressinfo.id = res.id
537
+ this.$dispatch('defaultOtheret', res)
538
+ }
539
+ }
540
+ }
541
+ </script>
542
+ <style scoped lang="less">
543
+ // 两个字符占用4个字符距离
544
+ .w2 {
545
+ letter-spacing:2em; /*如果需要y个字两端对齐,则为(x-y)/(y-1),这里是(4-2)/(2-1)=2em */
546
+ margin-right:-2em; /*同上*/
547
+ }
548
+ // 三个字符占用4个字符距离
549
+ .w3 {
550
+ letter-spacing: 0.5em;
551
+ margin-right: -0.5em
552
+ }
553
+
554
+ #UserEssential{
555
+ // 去掉number类型输入框的上下箭头
556
+ input[type="number"] {
557
+ &::-webkit-inner-spin-button,
558
+ &::-webkit-outer-spin-button {
559
+ -webkit-appearance: none;
560
+ margin: 0;
561
+ }
562
+
563
+ & {
564
+ -moz-appearance: textfield;
565
+ }
566
+ }
567
+ #addboxmap {
568
+ height: 300px;
569
+ }
570
+ .glyphicon-map-marker:hover {
571
+ color: red;
572
+ }
573
+ .glyphicon-map-marker {
574
+ color: blue;
575
+ cursor: pointer;
576
+ }
577
+ .scrollbar() {
578
+ .font_normal_body {
579
+ width: 73px;
580
+ overflow: auto;
581
+ white-space: nowrap;
582
+ // 指滚动条两边的按钮
583
+ &::-webkit-scrollbar-button {
584
+ display: none;
585
+ }
586
+ // 滚动条的宽度
587
+ &::-webkit-scrollbar {
588
+ width: 5px !important;
589
+ height: 5px !important;
590
+ }
591
+ // 滚动条的设置
592
+ &::-webkit-scrollbar-thumb {
593
+ background-color: #ddd;
594
+ background-clip: padding-box;
595
+ }
596
+ &::-webkit-scrollbar-thumb:hover {
597
+ background-color: #bbb;
598
+ }
599
+ &::-webkit-scrollbar-track {
600
+ /*滚动条里面轨道*/
601
+ box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
602
+ background: #ededed;
603
+ }
604
+ }
605
+ }
606
+
607
+ .col-sm-4 ,.col-sm-12 ,.col-sm-8{
608
+ .scrollbar();
609
+ }
610
+ }
611
+ </style>
@@ -12,4 +12,6 @@ export default function () {
12
12
  Vue.component('new-meter-list', (resolve) => { require(['./NewMeterList'], resolve) })
13
13
  // 单个表具信息
14
14
  Vue.component('file-meter-info', (resolve) => { require(['./FilesManage/MeterinfoTest'], resolve) })
15
+ // 用户基本信息test
16
+ Vue.component('file-user-essential-info', (resolve) => { require(['./UserEssentialInfoTest'], resolve) })
15
17
  }
@@ -123,8 +123,20 @@ let getFileGen = async function (self, data) {
123
123
  self.data.meterinfo.forEach((item) => {
124
124
  item.devicesinfo.forEach((item2) => {
125
125
  if (item2.img.content) {
126
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
127
- item2.img.content = 'http://' + location.host + '/' + URL
126
+ if (item2.img.content.startsWith('data:image/')) {
127
+ console.log('base64,直接展示不做处理')
128
+ } else if (item2.img.content.startsWith('http')) {
129
+ console.log('http,直接展示不做处理')
130
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
131
+ // windwos 路径处理
132
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
133
+ // eslint-disable-next-line no-undef
134
+ item2.img.content = 'http://' + location.host + '/' + URL
135
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
136
+ // linux 路径处理
137
+ // eslint-disable-next-line no-undef
138
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
139
+ }
128
140
  }
129
141
  })
130
142
  })
@@ -126,8 +126,20 @@ let getFileGen = async function (self, data) {
126
126
  self.data.meterinfo.forEach((item) => {
127
127
  item.devicesinfo.forEach((item2) => {
128
128
  if (item2.img.content) {
129
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
130
- item2.img.content = 'http://' + location.host + '/' + URL
129
+ if (item2.img.content.startsWith('data:image/')) {
130
+ console.log('base64,直接展示不做处理')
131
+ } else if (item2.img.content.startsWith('http')) {
132
+ console.log('http,直接展示不做处理')
133
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
134
+ // windwos 路径处理
135
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
136
+ // eslint-disable-next-line no-undef
137
+ item2.img.content = 'http://' + location.host + '/' + URL
138
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
139
+ // linux 路径处理
140
+ // eslint-disable-next-line no-undef
141
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
142
+ }
131
143
  }
132
144
  })
133
145
  })
@@ -125,8 +125,20 @@ let getFileGen = async function (self, data) {
125
125
  self.data.meterinfo.forEach((item) => {
126
126
  item.devicesinfo.forEach((item2) => {
127
127
  if (item2.img.content) {
128
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
129
- item2.img.content = 'http://' + location.host + '/' + URL
128
+ if (item2.img.content.startsWith('data:image/')) {
129
+ console.log('base64,直接展示不做处理')
130
+ } else if (item2.img.content.startsWith('http')) {
131
+ console.log('http,直接展示不做处理')
132
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
133
+ // windwos 路径处理
134
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
135
+ // eslint-disable-next-line no-undef
136
+ item2.img.content = 'http://' + location.host + '/' + URL
137
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
138
+ // linux 路径处理
139
+ // eslint-disable-next-line no-undef
140
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
141
+ }
130
142
  }
131
143
  })
132
144
  })
@@ -124,8 +124,20 @@ let getFileGen = async function (self, data) {
124
124
  self.data.meterinfo.forEach((item) => {
125
125
  item.devicesinfo.forEach((item2) => {
126
126
  if (item2.img.content) {
127
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
128
- item2.img.content = 'http://' + location.host + '/' + URL
127
+ if (item2.img.content.startsWith('data:image/')) {
128
+ console.log('base64,直接展示不做处理')
129
+ } else if (item2.img.content.startsWith('http')) {
130
+ console.log('http,直接展示不做处理')
131
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
132
+ // windwos 路径处理
133
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
134
+ // eslint-disable-next-line no-undef
135
+ item2.img.content = 'http://' + location.host + '/' + URL
136
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
137
+ // linux 路径处理
138
+ // eslint-disable-next-line no-undef
139
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
140
+ }
129
141
  }
130
142
  })
131
143
  })
@@ -114,8 +114,20 @@ let getFileGen = async function (self, data) {
114
114
  self.data.meterinfo.forEach((item) => {
115
115
  item.devicesinfo.forEach((item2) => {
116
116
  if (item2.img.content) {
117
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
118
- item2.img.content = 'http://' + location.host + '/' + URL
117
+ if (item2.img.content.startsWith('data:image/')) {
118
+ console.log('base64,直接展示不做处理')
119
+ } else if (item2.img.content.startsWith('http')) {
120
+ console.log('http,直接展示不做处理')
121
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
122
+ // windwos 路径处理
123
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
124
+ // eslint-disable-next-line no-undef
125
+ item2.img.content = 'http://' + location.host + '/' + URL
126
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
127
+ // linux 路径处理
128
+ // eslint-disable-next-line no-undef
129
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
130
+ }
119
131
  }
120
132
  })
121
133
  })
@@ -36,12 +36,15 @@
36
36
  <div class="row">
37
37
  <label class = "col-sm-5 " >&emsp;用户电话</label>
38
38
  <span class = "col-sm-7">{{data?data.f_user_phone:dafault.f_user_phone}}
39
- <span v-if="data && data.f_user_phone" @click.stop="changeuserphone" class="glyphicon glyphicon-pencil clickchange" title="修正用户电话"></span>
39
+ <span v-if="data && data.f_user_phone" @click.stop="changeuserphone"
40
+ class="glyphicon glyphicon-pencil clickchange" title="修正用户电话"></span>
40
41
  </span>
41
42
  </div>
42
43
  <div class="row">
43
44
  <label class = "col-sm-5 " >&emsp;备用电话</label>
44
45
  <span class = "col-sm-7">{{data?data.f_rent_phone:dafault.f_rent_phone}}</span>
46
+ <span v-if="data && data.f_rent_phone" @click.stop="changerentphone"
47
+ class="glyphicon glyphicon-pencil clickchange" title="修正备用电话"></span>
45
48
  </div>
46
49
  <div class="row">
47
50
  <label class = "col-sm-5 " >&emsp;用户状态</label>
@@ -101,6 +104,31 @@
101
104
  <button type="button" class="button_clear" @click='close'>取消</button>
102
105
  </footer>
103
106
  </modal>
107
+ <modal v-if="showselectncuserrent" :show.sync="showselectncuserrent" width="40%" title="修正客户备用电话"
108
+ v-ref:modal large backdrop="false">
109
+ <article slot="modal-body" class="modal-body">
110
+ <div class="form-horizontal">
111
+ <div class="row">
112
+ <div class="col-sm-12 form-group">
113
+ <label class="font_normal_body">旧客户备用电话</label>
114
+ <input disabled readonly type="text" style="width:80%" class="input_search"
115
+ v-model="data.f_rent_phone" placeholder='旧客户备用电话'>
116
+ </div>
117
+ </div>
118
+ <div class="row">
119
+ <div class="col-sm-12 form-group">
120
+ <label class="font_normal_body">新客户备用电话</label>
121
+ <input type="text" style="width:80%" class="input_search" v-model="newrentphone"
122
+ placeholder='新客户备用电话'>
123
+ </div>
124
+ </div>
125
+ </div>
126
+ </article>
127
+ <footer slot="modal-footer" class="modal-footer">
128
+ <button class="button_search" :disabled='!$m.valid ' @click="modifyUserRent">确定</button>
129
+ <button type="button" class="button_clear" @click='close'>取消</button>
130
+ </footer>
131
+ </modal>
104
132
  </div>
105
133
  </div>
106
134
  </partial-view>
@@ -137,7 +165,9 @@
137
165
  },
138
166
  model: null,
139
167
  showselectncuserinfo: false,
140
- newuserphone: ''
168
+ showselectncuserrent: false,
169
+ newuserphone: '',
170
+ newrentphone: ''
141
171
  }
142
172
  },
143
173
  props: ['data', 'warninginfo'],
@@ -147,6 +177,11 @@
147
177
  this.$dispatch('deal-msg', val)
148
178
  }
149
179
  },
180
+ changerentphone () {
181
+ // 修正客户备用电话
182
+ this.showselectncuserrent = true
183
+ this.newrentphone = ''
184
+ },
150
185
  changeuserphone () {
151
186
  // 修正用户电话
152
187
  this.showselectncuserinfo = true
@@ -182,9 +217,41 @@
182
217
  this.$parent.$parent.$refs.list.searchNoData()
183
218
  this.close()
184
219
  },
220
+ async modifyUserRent () {
221
+ let param = {
222
+ new_rentphone: this.newrentphone,
223
+ f_userinfo_id: this.data.f_userinfo_id,
224
+ f_user_id: this.data.f_user_id,
225
+ f_operator: this.$login.f.name,
226
+ f_operatorid: this.$login.f.id,
227
+ f_orgid: this.$login.f.orgid,
228
+ f_orgname: this.$login.f.orgs,
229
+ f_depid: this.$login.f.depids,
230
+ f_depname: this.$login.f.deps
231
+ }
232
+ await this.$resetpost('/rs/logic/changeuserinfo', {data: param}, {resolveMsg: null, rejectMsg: null})
233
+ this.data.f_rent_phone = this.newrentphone
234
+ this.$parent.$parent.close()
235
+ this.$parent.$parent.clean()
236
+ this.$showMessage('修正成功,用户编号已经复制到剪切板!', ['confirm', 'cancel']).then(
237
+ async (response) => {
238
+ if (response === 'confirm') {
239
+ // console.log('编号', this.data)
240
+ await this.$copyText(this.data.f_userinfo_code)
241
+ this.$dispatch('confirm')
242
+ this.$goto('charge-manage', {f: this.$login.f}, 'main')
243
+ } else if (response === 'cancel') {
244
+ this.$dispatch('cancel')
245
+ }
246
+ })
247
+ this.$parent.$parent.$refs.list.searchNoData()
248
+ this.close()
249
+ },
185
250
  close () {
186
251
  this.showselectncuserinfo = false
252
+ this.showselectncuserrent = false
187
253
  this.newuserphone = ''
254
+ this.newrentphone = ''
188
255
  }
189
256
  },
190
257
  watch: {
@@ -117,8 +117,20 @@ let getFileGen = async function (self, data) {
117
117
  self.data.meterinfo.forEach((item) => {
118
118
  item.devicesinfo.forEach((item2) => {
119
119
  if (item2.img.content) {
120
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
121
- item2.img.content = 'http://' + location.host + '/' + URL
120
+ if (item2.img.content.startsWith('data:image/')) {
121
+ console.log('base64,直接展示不做处理')
122
+ } else if (item2.img.content.startsWith('http')) {
123
+ console.log('http,直接展示不做处理')
124
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
125
+ // windwos 路径处理
126
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
127
+ // eslint-disable-next-line no-undef
128
+ item2.img.content = 'http://' + location.host + '/' + URL
129
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
130
+ // linux 路径处理
131
+ // eslint-disable-next-line no-undef
132
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
133
+ }
122
134
  }
123
135
  })
124
136
  })
@@ -182,8 +182,20 @@ let getFileGen = async function (self, data) {
182
182
  self.data.meterinfo.forEach((item) => {
183
183
  item.devicesinfo.forEach((item2) => {
184
184
  if (item2.img.content) {
185
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
186
- item2.img.content = 'http://' + location.host + '/' + URL
185
+ if (item2.img.content.startsWith('data:image/')) {
186
+ console.log('base64,直接展示不做处理')
187
+ } else if (item2.img.content.startsWith('http')) {
188
+ console.log('http,直接展示不做处理')
189
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
190
+ // windwos 路径处理
191
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
192
+ // eslint-disable-next-line no-undef
193
+ item2.img.content = 'http://' + location.host + '/' + URL
194
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
195
+ // linux 路径处理
196
+ // eslint-disable-next-line no-undef
197
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
198
+ }
187
199
  }
188
200
  })
189
201
  })
@@ -125,8 +125,20 @@ let getFileGen = async function (self, data) {
125
125
  self.data.meterinfo.forEach((item) => {
126
126
  item.devicesinfo.forEach((item2) => {
127
127
  if (item2.img.content) {
128
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
129
- item2.img.content = 'http://' + location.host + '/' + URL
128
+ if (item2.img.content.startsWith('data:image/')) {
129
+ console.log('base64,直接展示不做处理')
130
+ } else if (item2.img.content.startsWith('http')) {
131
+ console.log('http,直接展示不做处理')
132
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
133
+ // windwos 路径处理
134
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
135
+ // eslint-disable-next-line no-undef
136
+ item2.img.content = 'http://' + location.host + '/' + URL
137
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
138
+ // linux 路径处理
139
+ // eslint-disable-next-line no-undef
140
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
141
+ }
130
142
  }
131
143
  })
132
144
  })
@@ -182,8 +182,20 @@ let getFileGen = async function (self, data) {
182
182
  self.data.meterinfo.forEach((item) => {
183
183
  item.devicesinfo.forEach((item2) => {
184
184
  if (item2.img.content) {
185
- let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
186
- item2.img.content = 'http://' + location.host + '/' + URL
185
+ if (item2.img.content.startsWith('data:image/')) {
186
+ console.log('base64,直接展示不做处理')
187
+ } else if (item2.img.content.startsWith('http')) {
188
+ console.log('http,直接展示不做处理')
189
+ } else if (/^[A-Z]:\\/.test(item2.img.content)) {
190
+ // windwos 路径处理
191
+ let URL = item2.img.content.substring(item2.img.content.lastIndexOf(':\\') + 2)
192
+ // eslint-disable-next-line no-undef
193
+ item2.img.content = 'http://' + location.host + '/' + URL
194
+ } else if (item2.img.content.startsWith('/usr/local/tomcat/files')) {
195
+ // linux 路径处理
196
+ // eslint-disable-next-line no-undef
197
+ item2.img.content = 'http://' + location.host + '/' + item2.img.content.replace('/usr/local/tomcat/files', 'resource')
198
+ }
187
199
  }
188
200
  })
189
201
  })