sale-client 3.6.192 → 3.6.193

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.192",
3
+ "version": "3.6.193",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -28,7 +28,7 @@
28
28
  placeholder='设备编号' v-next-el="{id: $index+'brand'}">
29
29
  </div>
30
30
  </div>
31
- <div class="row auto" style="margin-left: 10px;" v-if="row.f_devices_type != '报警器'">
31
+ <div class="row auto" style="margin-left: 10px;">
32
32
  <div class="col-sm-6 form-group" style="padding-right: 5px;"
33
33
  :class="[!row.f_brand && (row.f_devices_type == '壁挂炉' || row.f_devices_type == '热水器') ? 'has-error' : '']">
34
34
  <label class="font_normal_body">设备品牌</label>
@@ -41,24 +41,6 @@
41
41
  placeholder='设备型号' :id="$index+'devicesmodel'">
42
42
  </div>
43
43
  </div>
44
- <div class="row auto" style="margin-left: 10px;" v-if="row.f_devices_type == '报警器'">
45
- <div class="col-sm-6 form-group" style="padding-right: 5px;"
46
- :class="[!row.f_brand && (row.f_devices_type == '壁挂炉' || row.f_devices_type == '热水器') ? 'has-error' : '']">
47
- <label class="font_normal_body">设备品牌</label>
48
- <v-select :value.sync="row.f_brand" v-model="row.f_brand"
49
- :options='brands' placeholder='设备品牌' :value-single="true"
50
- :onchange="brandChange(index)"
51
- close-on-select>
52
- </v-select>
53
- </div>
54
- <div class="col-sm-6 form-group" style="padding-right: 5px;">
55
- <label class="font_normal_body">设备型号</label>
56
- <v-select :value.sync="row.f_devices_model" v-model="row.f_devices_model"
57
- :options='devicesModel' placeholder='设备型号' :value-single="true"
58
- close-on-select>
59
- </v-select>
60
- </div>
61
- </div>
62
44
  <div class="row auto" style="margin-left: 10px;">
63
45
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
64
46
  <label class="font_normal_body">施工单位</label>
@@ -268,8 +250,6 @@
268
250
 
269
251
  <script>
270
252
  import moment from 'moment'
271
- import {HttpResetClass} from "vue-client"
272
-
273
253
  export default {
274
254
  title: '表具设备信息',
275
255
  data () {
@@ -284,8 +264,6 @@ export default {
284
264
  installtype: this.$appdata.getParam('安装方式'),
285
265
  userdevicestate: this.$appdata.getParam('用户设备状态'),
286
266
  builders: this.$appdata.getParam('施工单位'),
287
- brands: [],
288
- devicesModel: [],
289
267
  f_make_date: '',
290
268
  f_expire_date: '',
291
269
  f_service_life: 0,
@@ -321,46 +299,8 @@ export default {
321
299
  // },
322
300
  },
323
301
  ready () {
324
- this.initParams()
325
302
  },
326
303
  methods: {
327
- async devicesNoBlur (index) {
328
- if (!this.devicesinfo[index].id) {
329
- if (this.devicesinfo[index].f_devices_type == '报警器') {
330
- console.log('看看进来了吗?')
331
- let http = new HttpResetClass()
332
- let data = {
333
- items: 'id',
334
- tablename: 't_devices',
335
- condition: `f_devices_type = '报警器' and f_devices_no = '${this.devicesinfo[index].f_devices_no}'`,
336
- orderitem: 'id'
337
- }
338
- let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: null})
339
- if (res.data.length > 0) {
340
- this.$showAlert(`报警器编号必须唯一,请重新输入报警器编号`, 'warning', 3000)
341
- this.devicesinfo[index].f_devices_no = ''
342
- }
343
- }
344
- }
345
- },
346
- async initParams () {
347
- try {
348
- let http = new HttpResetClass()
349
- let data = {
350
- items: 'id,f_brand',
351
- tablename: 't_iot_device_brand',
352
- condition: `1=1`,
353
- orderitem: 'id'
354
- }
355
- let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: null})
356
- this.brands = []
357
- for (let row of res.data) {
358
- this.brands.push({label: row.f_brand, value: `${row.id}`})
359
- }
360
- } catch (e) {
361
- console.log(e)
362
- }
363
- },
364
304
  showTableBtn () {
365
305
  this.showTable = !this.showTable
366
306
  console.log('表具信息', this.devicesinfo)
@@ -397,27 +337,6 @@ export default {
397
337
  })
398
338
  }
399
339
  },
400
- async brandChange (index) {
401
- console.log('this.devicesinfo[index].f_brand', this.devicesinfo[index].f_brand)
402
- this.devicesModel = []
403
- if (this.devicesinfo.length > 0) {
404
- if (this.devicesinfo[index].f_devices_type == '报警器') {
405
- if (this.devicesinfo[index].f_brand) {
406
- let http = new HttpResetClass()
407
- let data = {
408
- items: 'id,f_model',
409
- tablename: 't_iot_device_model',
410
- condition: `f_brand_id = ${this.devicesinfo[index].f_brand}`,
411
- orderitem: 'id'
412
- }
413
- let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: '获取设备型号失败!'})
414
- for (let row of res.data) {
415
- this.devicesModel.push({label: row.f_model, value: row.id})
416
- }
417
- }
418
- }
419
- }
420
- },
421
340
  deleteDevice (index, row) {
422
341
  console.log('删除的信息', row)
423
342
  if (row.id) {
@@ -423,7 +423,7 @@ export default {
423
423
  // 不是修改直接保存
424
424
  if (!this.filechangeDetailsShow) this.confirmation()
425
425
  },
426
- async confirmation () {
426
+ confirmation () {
427
427
  if (this.fileSaveData.reason && this.fileSaveData.reason !== '其他') {
428
428
  this.fileSaveData.modifyReason = this.fileSaveData.reason
429
429
  }
@@ -443,10 +443,8 @@ export default {
443
443
  this.fileSaveData.userinfo.userfiles.f_depid = parentnameId
444
444
  }
445
445
  }
446
- let userinfoid = null
447
- await this.$FileManageService.fileSave(this.fileSaveData).then((res) => {
446
+ this.$FileManageService.fileSave(this.fileSaveData).then((res) => {
448
447
  this.$parent.resdata = res.data.result[0].f_userinfo_code
449
- userinfoid = res.data.result[0].f_userinfo_id
450
448
  if (!this.row) {
451
449
  this.$parent.resshow = true
452
450
  }
@@ -459,57 +457,6 @@ export default {
459
457
  this.seaching = false
460
458
  this.$dispatch('error', '档案保存', this.data, error)
461
459
  })
462
- try {
463
- // 如果是物联网表并且设备类型是报警器的话,调用物联监控平台存储报警器信息
464
- let http = new HttpResetClass()
465
- await this.fileSaveData.userinfo.userfiles.forEach(row => {
466
- if (row.f_meter_classify == '物联网表') {
467
- if (row.devicesinfo.length > 0) {
468
- row.devicesinfo.forEach(obj => {
469
- if (obj.f_devices_type == '报警器') {
470
- let param = {
471
- userinfoId: userinfoid,
472
- deviceNo: obj.f_devices_no,
473
- state: 1,
474
- brandId: obj.f_brand,
475
- modelId: obj.f_devices_model,
476
- inputtor: obj.f_operator,
477
- inputDate: this.$login.toStandardTimeString(),
478
- installDate: obj.f_input_date
479
- }
480
- if (obj.f_input_person.length > 0) {
481
- param.installPerson = obj.f_input_person[0]
482
- }
483
- if (!obj.id) {
484
- http.load('POST', '/webmeter/rs/logic/deviceSyncIotDevice', {data: param}, {
485
- resolveMsg: null,
486
- rejectMsg: null
487
- })
488
- } else {
489
- let data = {
490
- items: 'id',
491
- tablename: 't_iot_device',
492
- condition: `f_device_no = '${obj.f_devices_no}'`,
493
- orderitem: 'id'
494
- }
495
- http.load('POST', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: null})
496
- .then(res => {
497
- if (res.data.length > 0) {
498
- http.load('POST', '/webmeter/rs/logic/deviceSyncIotDevice', {data: param}, {
499
- resolveMsg: null,
500
- rejectMsg: null
501
- })
502
- }
503
- })
504
- }
505
- }
506
- })
507
- }
508
- }
509
- })
510
- } catch (e) {
511
- console.log(e)
512
- }
513
460
  },
514
461
  convertBase64ToBlob (base64String) {
515
462
  // 将base64解码
@@ -20,7 +20,7 @@
20
20
  <button class="button_spacing button_search" @click="search()">查 询</button>
21
21
  <export-excel v-if="$parent.$parent.excelTable"
22
22
  class="auto"
23
- :data="{condition: $parent.$parent.condition}"
23
+ :data="{condition: $parent.$parent.condition,orderitem: $parent.$parent.orderitem}"
24
24
  :field="$parent.$parent.getfield"
25
25
  sqlurl="rs/logic/saleExport" progress="saleGetExportProgress" sql-name="singlling"
26
26
  template-name='缴费记录'
@@ -0,0 +1,533 @@
1
+ <template>
2
+ <div class="auto">
3
+ <modal :show.sync="show_devices" width="80%" title="表具设备信息" v-ref:modal large backdrop="false">
4
+ <header slot="modal-header" class="modal-header">
5
+ <span class="glyphicon glyphicon-remove closebtn" @click="closeModal"></span>
6
+ </header>
7
+ <article slot="modal-body" class="modal-body" style="height: auto" v-show="!showTable">
8
+ <div class="flex-row flex-deviceinfo">
9
+ <div class="flex-row flex-two-info panel panel-default" v-for="(index,row) in devicesinfo">
10
+ <avatar-upload :img-src.sync="row.img.content" :filename.sync="row.img.filename"></avatar-upload>
11
+ <form class="form-horizontal select-overspread " style="flex: 1;">
12
+ <div style="margin-top: 2%">
13
+ <img style="margin-top: -2px;margin-left: 2px" src="../../../../static/images/lefticon/矩形1183.png">
14
+ <a style="font-size: 16px;font-weight: 500;">设备基本信息</a>&nbsp;<a
15
+ style="color: #999999;text-decoration: none"></a>
16
+ </div>
17
+ <div class="row auto" style="margin-top: 10px;margin-left: 10px;">
18
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
19
+ <label class="font_normal_body">设备类型</label>
20
+ <v-select :value.sync="row.f_devices_type" v-model="row.f_devices_type"
21
+ :options='devicetypes' placeholder='设备类型' :value-single="true"
22
+ close-on-select></v-select>
23
+ </div>
24
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
25
+ <label class=" font_normal_body">设备编号</label>
26
+ <input type="text" class="input_search" style="width:60%" v-model="row.f_devices_no"
27
+ @blur="devicesNoBlur(index)"
28
+ placeholder='设备编号' v-next-el="{id: $index+'brand'}">
29
+ </div>
30
+ </div>
31
+ <div class="row auto" style="margin-left: 10px;" v-if="row.f_devices_type != '报警器'">
32
+ <div class="col-sm-6 form-group" style="padding-right: 5px;"
33
+ :class="[!row.f_brand && (row.f_devices_type == '壁挂炉' || row.f_devices_type == '热水器') ? 'has-error' : '']">
34
+ <label class="font_normal_body">设备品牌</label>
35
+ <input type="text" class="input_search" style="width:60%" v-model="row.f_brand" placeholder='设备品牌'
36
+ v-next-el="{id: $index+'devicesmodel'}" :id="$index+'brand'">
37
+ </div>
38
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
39
+ <label class="font_normal_body">设备型号</label>
40
+ <input type="text" class="input_search" style="width:60%" v-model="row.f_devices_model"
41
+ placeholder='设备型号' :id="$index+'devicesmodel'">
42
+ </div>
43
+ </div>
44
+ <div class="row auto" style="margin-left: 10px;" v-if="row.f_devices_type == '报警器'">
45
+ <div class="col-sm-6 form-group" style="padding-right: 5px;"
46
+ :class="[!row.f_brand && (row.f_devices_type == '壁挂炉' || row.f_devices_type == '热水器') ? 'has-error' : '']">
47
+ <label class="font_normal_body">设备品牌</label>
48
+ <v-select :value.sync="row.f_brand" v-model="row.f_brand"
49
+ :options='brands' placeholder='设备品牌' :value-single="true"
50
+ :onchange="brandChange(index)"
51
+ close-on-select>
52
+ </v-select>
53
+ </div>
54
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
55
+ <label class="font_normal_body">设备型号</label>
56
+ <v-select :value.sync="row.f_devices_model" v-model="row.f_devices_model"
57
+ :options='devicesModel' placeholder='设备型号' :value-single="true"
58
+ :onchange="modelChange(index)"
59
+ close-on-select>
60
+ </v-select>
61
+ </div>
62
+ </div>
63
+ <div class="row auto" style="margin-left: 10px;">
64
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
65
+ <label class="font_normal_body">施工单位</label>
66
+ <v-select :value.sync="row.f_builderunit" v-model="row.f_builderunit"
67
+ :options='builders' placeholder='施工单位' :value-single="true"
68
+ close-on-select></v-select>
69
+ <!--<input type="text" class="input_search" style="width:60%" v-model="row.f_builderunit"-->
70
+ <!--placeholder='施工单位'>-->
71
+ </div>
72
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
73
+ <label class="font_normal_body">联系电话</label>
74
+ <input type="text" class="input_search" style="width:60%" v-model="row.f_builder_phone"
75
+ placeholder='施工单位联系方式'>
76
+ </div>
77
+ </div>
78
+ <div class="row auto" style="margin-left: 10px;" v-if="row.f_devices_type == '报警器'">
79
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
80
+ <label class="font_normal_body">imei码&emsp;</label>
81
+ <input type="text" class="input_search" style="width:60%" v-model="row.f_imei"
82
+ placeholder='imei码'>
83
+ <!--<input type="text" class="input_search" style="width:60%" v-model="row.f_builderunit"-->
84
+ <!--placeholder='施工单位'>-->
85
+ </div>
86
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
87
+ <label class="font_normal_body">imsi码&emsp;</label>
88
+ <input type="text" class="input_search" style="width:60%" v-model="row.f_imsi"
89
+ placeholder='imsi码'>
90
+ </div>
91
+ </div>
92
+ <div class="row auto" style="margin-left: 10px;">
93
+ <div class="col-sm-6 form-group" style="padding-right: 5px;"
94
+ :class="[row.f_devices_type == '壁挂炉' && (row.f_input_person == '' || row.f_input_person == null) ? 'has-error' : '']">
95
+ <label class="font_normal_body">安装人&nbsp;&nbsp;&nbsp;</label>
96
+ <!-- <input type="text" class="input_search" style="width:60%" v-model="row.f_input_person"-->
97
+ <!-- placeholder='安装人'>-->
98
+ <v-select :value.sync="row.f_input_person" v-model="row.f_input_person"
99
+ :options='installperson' placeholder='安装人'
100
+ close-on-select></v-select>
101
+ </div>
102
+ <div class="col-sm-6 form-group" style="padding-right: 5px;"
103
+ :class="[row.f_devices_type == '壁挂炉' && row.f_input_date == '' ? 'has-error' : '']">
104
+ <label class="font_normal_body">安装日期</label>
105
+ <datepicker placeholder="安装日期" style="width: 60%"
106
+ v-model="row.f_input_date"
107
+ :value.sync="row.f_input_date"
108
+ :format="'yyyy-MM-dd'">
109
+ </datepicker>
110
+ </div>
111
+ </div>
112
+ <div class="row auto" style="margin-left: 10px;">
113
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
114
+ <label class="font_normal_body">生产日期</label>
115
+ <datepicker placeholder="生产日期" style="width: 60%"
116
+ v-model="row.f_make_date"
117
+ :value.sync="row.f_make_date"
118
+ :onchange="expireDate($index)"
119
+ :format="'yyyy-MM-dd'">
120
+ </datepicker>
121
+ </div>
122
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
123
+ <label class="font_normal_body">使用年限</label>
124
+ <input type="number" class="input_search" style="width: 60%" v-model="row.f_service_life"
125
+ :value.sync="row.f_service_life"
126
+ :onchange="expireDate($index)">
127
+ </div>
128
+ </div>
129
+ <div class="row auto" style="margin-left: 10px;">
130
+ <div class="col-sm-6 form-group" style="padding-right: 5px;" v-if="devicesinfoShow">
131
+ <label class="font_normal_body">到期日期</label>
132
+ <input type="test" class="input_search" style="width: 60%" v-model="row.f_expire_date"
133
+ :value.sync="row.f_expire_date"
134
+ placeholder="到期日期" disabled></input>
135
+ </div>
136
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
137
+ <label class="font_normal_body">设备数量</label>
138
+ <input type="text" class="input_search" style="width:60%" v-model="row.f_devices_num"
139
+ :value.sync="row.f_devices_num"
140
+ placeholder='设备数量' :id="$index+'devicesmodel'">
141
+ </div>
142
+ </div>
143
+ <div class="row auto" style="margin-left: 10px;">
144
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
145
+ <label class="font_normal_body" title="用户设备状态">设备状态</label>
146
+ <v-select :value.sync="row.f_userinfodevices_state" v-model="row.f_userinfodevices_state"
147
+ :options='userdevicestate' placeholder='设备状态' :value-single="true"
148
+
149
+ close-on-select></v-select>
150
+ </div>
151
+ <div class="col-sm-6 form-group" style="padding-right: 5px;"
152
+ :class="[row.f_devices_type == '壁挂炉' && row.watchpurchase == '' ? 'has-error' : '']">
153
+ <label class="font_normal_body">购买方式</label>
154
+ <v-select :value.sync="row.watchpurchase" v-model="row.watchpurchase"
155
+ :options='WatchPurchases' placeholder='购买方式' :value-single="true"
156
+ close-on-select></v-select>
157
+ </div>
158
+ </div>
159
+ <div class="row auto" style="margin-left: 10px;">
160
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
161
+ <label class="font_normal_body">安装方式</label>
162
+ <v-select :value.sync="row.f_install_type" v-model="row.f_install_type"
163
+ :options='installtype' placeholder='安装方式' :value-single="true"
164
+ close-on-select></v-select>
165
+ </div>
166
+ <div style="" class="col-sm-6 form-group">
167
+ <label for="f_comments" class="font_normal_body ">&nbsp;&nbsp;&nbsp;备&nbsp;&nbsp;&nbsp;注</label>
168
+ <input class="input_search" style="width:60%" v-model="row.f_comments"/>
169
+ </div>
170
+ </div>
171
+ <div>
172
+ <img style="margin-top: -2px;margin-left: 2px" src="../../../../static/images/lefticon/矩形1183.png">
173
+ <a style="font-size: 16px;font-weight: 500;">连接管信息</a>&nbsp;<a
174
+ style="color: #999999;text-decoration: none"></a>
175
+ </div>
176
+ <div class="row auto" style="margin-left: 10px;">
177
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
178
+ <label class="font_normal_body">管道类型</label>
179
+ <v-select :value.sync="row.f_pipe_type" v-model="row.f_pipe_type"
180
+ :options='pipetypes' placeholder='管道类型' :value-single="true"
181
+ close-on-select></v-select>
182
+ </div>
183
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
184
+ <label class="font_normal_body" title="连接管安装日期">安装日期</label>
185
+ <datepicker placeholder="连接管安装日期" style="width: 60%"
186
+ v-model="row.f_pipeinstall_date"
187
+ :value.sync="row.f_pipeinstall_date"
188
+ :onchange="ljgexpireDate($index)"
189
+ :format="'yyyy-MM-dd'">
190
+ </datepicker>
191
+ </div>
192
+ </div>
193
+ <div class="row auto" style="margin-left: 10px;">
194
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
195
+ <label class="font_normal_body">使用年限</label>
196
+ <input type="number" class="input_search" style="width: 60%" v-model="row.f_service_liferg"
197
+ :value.sync="row.f_service_liferg"
198
+ :onchange="ljgexpireDate($index)">
199
+ </div>
200
+ <div class="col-sm-6 form-group" style="padding-right: 5px;" v-if="ljgDevicesinfoShow">
201
+ <label class="font_normal_body" title="连接管到期日期">到期日期</label>
202
+ <datepicker placeholder="连接管到期日期" style="width: 60%"
203
+ v-model="row.f_pipeexpire_date"
204
+ :value.sync="row.f_pipeexpire_date"
205
+ :format="'yyyy-MM-dd'">
206
+ </datepicker>
207
+ </div>
208
+ </div>
209
+ </form>
210
+ <img :src="imgdelete" alt="图片加载失败" class="img-rounded"
211
+ style="width: 60px;padding: 20px;margin-left: -15px;cursor: pointer;"
212
+ @click="deleteDevice($index, row)">
213
+ </div>
214
+ <div class="panel panel-default flex-two-info text-center" style="line-height: 164px;">
215
+ <img :src="imgadd" alt="图片加载失败1" class="img-rounded"
216
+ style="width: 60px;padding: 10px;cursor: pointer;"
217
+ @click="addDevice()">
218
+ </div>
219
+ </div>
220
+ <div class="row">
221
+ <div class="text-right">
222
+ <button @click="showTableBtn()" class="button_search button_spacing">列表显示
223
+ </button>
224
+ </div>
225
+ </div>
226
+ </article>
227
+ <article slot="modal-body" class="modal-body" style="height: auto" v-show="showTable">
228
+ <div class="row">
229
+ <div class=" text-center">
230
+ <table class="table table-striped table-bordered">
231
+ <tr align="center">
232
+ <th style="text-align: center">序号</th>
233
+ <th style="text-align: center">设备类型</th>
234
+ <th style="text-align: center">设备编号</th>
235
+ <th style="text-align: center">设备品牌</th>
236
+ <th style="text-align: center">设备型号</th>
237
+ <th style="text-align: center">管道类型</th>
238
+ <th style="text-align: center">安装人</th>
239
+ <th style="text-align: center">安装方式</th>
240
+ <th style="text-align: center">安装日期</th>
241
+ <th style="text-align: center">生产日期</th>
242
+ <th style="text-align: center">设备状态</th>
243
+ <th style="text-align: center">备注</th>
244
+ <th style="text-align: center">操作</th>
245
+ </tr>
246
+ <tr style="text-align: center" v-for="row in devicesinfo">
247
+ <td style="text-align: center;">{{ $index + 1 }}</td>
248
+
249
+ <td style="text-align: center">{{ row.f_devices_type }}</td>
250
+ <td style="text-align:center">{{ row.f_devices_no }}</td>
251
+ <td style="text-align: center">{{ row.f_brand }}</td>
252
+ <td style="text-align: center">{{ row.f_devices_model }}</td>
253
+ <td style="text-align: center">{{ row.f_pipe_type }}</td>
254
+ <td style="text-align:center">{{ row.f_input_person }}</td>
255
+ <td style="text-align:center">{{ row.f_install_type }}</td>
256
+ <td style="text-align:center">{{ row.f_input_date }}</td>
257
+ <td style="text-align:center">{{ row.f_make_date }}</td>
258
+ <td style="text-align:center">{{ row.f_userinfodevices_state }}</td>
259
+ <td style="text-align:center">{{ row.f_comments }}</td>
260
+ <td style="text-align: center">
261
+ <img :src="imgdelete" alt="图片加载失败" class="img-rounded"
262
+ style="width: 60px;padding: 20px;margin-left: -15px;cursor: pointer;"
263
+ @click="deleteDevice($index, row)">
264
+ </td>
265
+ </tr>
266
+ </table>
267
+ </div>
268
+ </div>
269
+ <div class="row">
270
+ <div class="text-right">
271
+ <button @click="showTableBtn()" class="button_search button_spacing">添加表具设备
272
+ </button>
273
+ </div>
274
+ </div>
275
+ </article>
276
+
277
+ <footer slot="modal-footer" class="modal-footer">
278
+ </footer>
279
+ </modal>
280
+ </div>
281
+
282
+ </template>
283
+
284
+ <script>
285
+ import moment from 'moment'
286
+ import {HttpResetClass} from 'vue-client'
287
+
288
+ export default {
289
+ title: '表具设备信息',
290
+ data() {
291
+ return {
292
+ showTable: false,
293
+ imgdelete: '/images/mainicon/deletedevice.png',
294
+ imgadd: '/images/mainicon/adddevice.png',
295
+ devicetypes: this.$appdata.getParam('设备类型'),
296
+ pipetypes: this.$appdata.getParam('管道类型'),
297
+ WatchPurchases: this.$appdata.getParam('购买方式'),
298
+ installperson: this.$appdata.getParam('安装人'),
299
+ installtype: this.$appdata.getParam('安装方式'),
300
+ userdevicestate: this.$appdata.getParam('用户设备状态'),
301
+ builders: this.$appdata.getParam('施工单位'),
302
+ brands: [],
303
+ devicesModel: [],
304
+ f_make_date: '',
305
+ f_expire_date: '',
306
+ f_service_life: 0,
307
+ devicesinfoShow: true,
308
+ ljgDevicesinfoShow: true
309
+ }
310
+ },
311
+ props: {
312
+ devicesinfo: {
313
+ type: Array
314
+ },
315
+ show_devices: {
316
+ type: Boolean,
317
+ default: false
318
+ },
319
+ f_input_person: {
320
+ type: String,
321
+ default: undefined
322
+ }
323
+ },
324
+ computed: {
325
+ // installperson () {
326
+ // // return this.$login.f.f_installman
327
+ // let rs = new Array()
328
+ // for (let i = 0; i < this.$login.f.f_installman.length; i++) {
329
+ // let temp = {
330
+ // label: this.$login.f.f_installman[i].name,
331
+ // value: this.$login.f.f_installman[i].name
332
+ // }
333
+ // rs.push(temp)
334
+ // }
335
+ // return rs
336
+ // },
337
+ },
338
+ ready () {
339
+ this.initParams()
340
+ },
341
+ methods: {
342
+ async devicesNoBlur (index) {
343
+ if (!this.devicesinfo[index].id) {
344
+ if (this.devicesinfo[index].f_devices_type == '报警器') {
345
+ console.log('看看进来了吗?')
346
+ let http = new HttpResetClass()
347
+ let data = {
348
+ items: 'id',
349
+ tablename: 't_devices',
350
+ condition: `f_devices_type = '报警器' and f_devices_no = '${this.devicesinfo[index].f_devices_no}'`,
351
+ orderitem: 'id'
352
+ }
353
+ let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: null})
354
+ if (res.data.length > 0) {
355
+ this.$showAlert(`报警器编号必须唯一,请重新输入报警器编号`, 'warning', 3000)
356
+ this.devicesinfo[index].f_devices_no = ''
357
+ }
358
+ }
359
+ }
360
+ },
361
+ async initParams () {
362
+ try {
363
+ let http = new HttpResetClass()
364
+ let data = {
365
+ items: 'id,f_brand',
366
+ tablename: 't_iot_device_brand',
367
+ condition: `1=1`,
368
+ orderitem: 'id'
369
+ }
370
+ let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: null})
371
+ this.brands = []
372
+ for (let row of res.data) {
373
+ this.brands.push({label: row.f_brand, value: row.f_brand, data: row})
374
+ }
375
+ } catch (e) {
376
+ console.log(e)
377
+ }
378
+ },
379
+ findbyid (list, name) {
380
+ var result
381
+ list.forEach((row, n) => {
382
+ if (name == row.value) {
383
+ result = row.data
384
+ }
385
+ })
386
+ return result
387
+ },
388
+ showTableBtn () {
389
+ this.showTable = !this.showTable
390
+ console.log('表具信息', this.devicesinfo)
391
+ },
392
+ expireDate (index) {
393
+ if (this.devicesinfo[index].f_make_date === '' || this.devicesinfo[index].f_make_date === undefined || this.devicesinfo[index].f_service_life === 0 || this.devicesinfo[index].f_service_life === undefined) {
394
+
395
+ } else {
396
+ var b = new Date(this.devicesinfo[index].f_make_date)
397
+ var year = (b.getFullYear() - 0) + (this.devicesinfo[index].f_service_life - 0)
398
+ var month = (b.getMonth() - 0) + 1
399
+ var day = b.getDate()
400
+ // this.$set(this.devicesinfo, index, {f_expire_date: year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day)})
401
+ this.devicesinfo[index].f_expire_date = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day)
402
+ this.devicesinfoShow = false
403
+ this.$nextTick(() => {
404
+ this.devicesinfoShow = true
405
+ })
406
+ }
407
+ },
408
+ ljgexpireDate (index) {
409
+ if (this.devicesinfo[index].f_pipeinstall_date === '' || this.devicesinfo[index].f_pipeinstall_date === undefined || this.devicesinfo[index].f_service_liferg === 0 || this.devicesinfo[index].f_service_liferg === undefined) {
410
+
411
+ } else {
412
+ var b = new Date(this.devicesinfo[index].f_pipeinstall_date)
413
+ var year = (b.getFullYear() - 0) + (this.devicesinfo[index].f_service_liferg - 0)
414
+ var month = (b.getMonth() - 0) + 1
415
+ var day = b.getDate()
416
+ // this.$set(this.devicesinfo, index, {f_expire_date: year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day)})
417
+ this.devicesinfo[index].f_pipeexpire_date = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day)
418
+ this.ljgDevicesinfoShow = false
419
+ this.$nextTick(() => {
420
+ this.ljgDevicesinfoShow = true
421
+ })
422
+ }
423
+ },
424
+ async brandChange (index) {
425
+ console.log('this.devicesinfo[index].f_brand', this.devicesinfo[index].f_brand)
426
+ this.devicesModel = []
427
+ if (this.devicesinfo.length > 0) {
428
+ if (this.devicesinfo[index].f_devices_type == '报警器') {
429
+ if (this.devicesinfo[index].f_brand) {
430
+ this.devicesinfo[index].f_brand_id = this.findbyid(this.brands, this.devicesinfo[index].f_brand).id
431
+ let http = new HttpResetClass()
432
+ let data = {
433
+ items: 'id,f_model',
434
+ tablename: 't_iot_device_model',
435
+ condition: `f_brand_id = ${this.devicesinfo[index].f_brand_id}`,
436
+ orderitem: 'id'
437
+ }
438
+ let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {
439
+ resolveMsg: null,
440
+ rejectMsg: '获取设备型号失败!'
441
+ })
442
+ for (let row of res.data) {
443
+ this.devicesModel.push({label: row.f_model, value: row.f_model, data: row})
444
+ }
445
+ }
446
+ }
447
+ }
448
+ },
449
+ async modelChange (index) {
450
+ console.log('this.devicesinfo[index].f_devices_model', this.devicesinfo[index].f_devices_model)
451
+ if (this.devicesinfo.length > 0) {
452
+ if (this.devicesinfo[index].f_devices_type == '报警器') {
453
+ if (this.devicesinfo[index].f_devices_model) {
454
+ this.devicesinfo[index].f_devices_model_id = this.findbyid(this.devicesModel, this.devicesinfo[index].f_devices_model).id
455
+ }
456
+ }
457
+ }
458
+ },
459
+ deleteDevice (index, row) {
460
+ console.log('删除的信息', row)
461
+ if (row.id) {
462
+ this.$showMessage('此操作无法还原,是否确定要删除此设备?', ['confirm', 'cancel']).then((res) => {
463
+ if (res === 'confirm') {
464
+ this.$resetpost('rs/logic/deletedevices', {param: row}, {
465
+ resolveMsg: `成功删除此设备`,
466
+ rejectMsg: '删除设备失败'
467
+ }).then((res) => {
468
+ this.devicesinfo.splice(index, 1)
469
+ })
470
+ }
471
+ })
472
+ } else {
473
+ this.devicesinfo.splice(index, 1)
474
+ }
475
+ },
476
+ addDevice () {
477
+ console.log('设备信息', this.devicesinfo)
478
+ this.devicesinfo.push({
479
+ f_devices_type: '家用灶具',
480
+ f_input_person: this.f_input_person,
481
+ f_userinfodevices_state: '正常',
482
+ f_input_date: this.$login.toStandardTimeString()
483
+ })
484
+ },
485
+ closeModal () {
486
+ let cannotclose = false
487
+ let deleteData = []
488
+ for (let [index, row] of this.devicesinfo.entries()) {
489
+ switch (row.f_devices_type) {
490
+ case '壁挂炉':
491
+ if (!(row.f_brand && row.f_input_person && row.f_input_date && row.watchpurchase)) {
492
+ deleteData.push(index)
493
+ cannotclose = true
494
+ }
495
+ break
496
+ case '热水器':
497
+ if (!(row.f_brand)) {
498
+ deleteData.push(index)
499
+ cannotclose = true
500
+ }
501
+ break
502
+ }
503
+ }
504
+ if (cannotclose) {
505
+ this.$showMessage('新增设备有必填项没有填写,如果此时退出当前页面数据会丢失,请确定是否退出?', ['confirm', 'cancel']).then(async (res) => {
506
+ if (res === 'confirm') {
507
+ for (let i = deleteData.length - 1; i >= 0; i--) {
508
+ this.devicesinfo.splice(deleteData[i], 1)
509
+ }
510
+ this.show_devices = false
511
+ }
512
+ })
513
+ } else {
514
+ this.show_devices = false
515
+ }
516
+ }
517
+ }
518
+ }
519
+ </script>
520
+ <style lang="less">
521
+ .flex-deviceinfo {
522
+ padding: 0px 20px;
523
+ justify-content: space-between;
524
+ height: auto;
525
+ flex-wrap: wrap;
526
+ }
527
+
528
+ .flex-two-info {
529
+ margin-bottom: 10px;
530
+ align-items: center;
531
+ width: 48%;
532
+ }
533
+ </style>
@@ -4,4 +4,6 @@ import Vue from 'vue'
4
4
  export default function () {
5
5
  // 单个表具信息
6
6
  Vue.component('file-meter-info', (resolve) => { require(['./FilesManage/MeterinfoTest'], resolve) })
7
+ // 表具设备信息
8
+ Vue.component('file-user-device-info', (resolve) => { require(['./FilesManage/UserDeviceInfoTest'], resolve) })
7
9
  }
@@ -299,11 +299,11 @@
299
299
  },
300
300
  search () {
301
301
  let condition = '1=1'
302
- // if (this.f_orgid) {
303
- // condition += `and (u.f_filialeid in ${this.f_orgid} or g.f_orgid in ${this.f_orgid}) `
304
- // } else {
305
- // condition += `and (u.f_filialeid = '${this.$login.f.orgid}' or g.f_orgid ='${this.$login.f.orgid}')`
306
- // }
302
+ if (this.f_orgid) {
303
+ condition += `and (u.f_filialeid in ${this.f_orgid} or g.f_orgid in ${this.f_orgid}) `
304
+ } else {
305
+ condition += `and (u.f_filialeid = '${this.$login.f.orgid}' or g.f_orgid ='${this.$login.f.orgid}')`
306
+ }
307
307
  this.$refs.pv.load(this.sqlurl, {data: {condition: condition}}).then((a) => {
308
308
  if (a.data.length === 0) {
309
309
  this.model.rows = []
@@ -1031,18 +1031,17 @@ export default {
1031
1031
  } else {
1032
1032
  // 如果 不能 则只需要获取到记录数,采用相对节省资源的查询
1033
1033
  let books = await http.load('POST', 'rs/sql/singleTable_OrderBy', {
1034
- data: {
1035
- items: 'f_whether_pay',
1036
- tablename: 't_handplan',
1037
- condition: ` f_user_id = '${this.row.f_user_id}' and f_oughtfee > 0 and f_hand_state = '有效' and f_meter_state='已抄表' `,
1038
- orderitem: ' id desc'
1034
+ data: {
1035
+ items: 'f_oughtfee',
1036
+ tablename: 't_handplan',
1037
+ condition: ` f_user_id = '${this.row.f_user_id}' and f_oughtfee > 0 and f_whether_pay = '否' and f_hand_state = '有效' and f_meter_state='已抄表' `,
1038
+ orderitem: ' id desc'
1039
1039
  }
1040
1040
  }, {resolveMsg: null, rejectMsg: null}
1041
1041
  )
1042
- console.log('获取到的欠费记录', books)
1043
- this.books = books
1042
+ console.log(books)
1044
1043
  // 如果是机表验证是否有欠费
1045
- if ((this.row.f_balance - 0) < 0) {
1044
+ if (books.data.length > 0) {
1046
1045
  this.$showAlert('该表有欠费,请到机表缴费界面进行缴费', 'warning', 3000)
1047
1046
  this.$dispatch('button-specifies', {name: '机表收费', value: 'machine-charge'}, this.row)
1048
1047
  }
@@ -265,9 +265,13 @@ let FileManageService = {
265
265
  userfilesdevice.f_state = userfilesdevice.f_state ? userfilesdevice.f_state : '有效'
266
266
  userfilesdevice.f_devices_no = userfilesdevice.f_devices_no ? userfilesdevice.f_devices_no : null
267
267
  userfilesdevice.f_brand = userfilesdevice.f_brand ? userfilesdevice.f_brand : null
268
+ userfilesdevice.f_brand_id = userfilesdevice.f_brand_id ? userfilesdevice.f_brand_id : null
269
+ userfilesdevice.f_imsi = userfilesdevice.f_imsi ? userfilesdevice.f_imsi : null
270
+ userfilesdevice.f_imei = userfilesdevice.f_imei ? userfilesdevice.f_imei : null
268
271
  userfilesdevice.f_builderunit = userfilesdevice.f_builderunit ? userfilesdevice.f_builderunit : null
269
272
  userfilesdevice.f_builder_phone = userfilesdevice.f_builder_phone ? userfilesdevice.f_builder_phone : null
270
273
  userfilesdevice.f_devices_model = userfilesdevice.f_devices_model ? userfilesdevice.f_devices_model : null
274
+ userfilesdevice.f_devices_model_id = userfilesdevice.f_devices_model_id ? userfilesdevice.f_devices_model_id : null
271
275
  userfilesdevice.f_devices_num = userfilesdevice.f_devices_num ? userfilesdevice.f_devices_num : null
272
276
  userfilesdevice.f_input_person = userfilesdevice.f_input_person ? userfilesdevice.f_input_person : null
273
277
  userfilesdevice.f_input_date = userfilesdevice.f_input_date ? userfilesdevice.f_input_date : null