sale-client 3.6.81 → 3.6.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  var path = require('path')
2
- const [serverRul, localUrl ] = ['http://203.57.101.233:8400/', 'http://203.57.101.233:8400/']
2
+ const [serverRul, localUrl ] = ['http://192.168.50.4:8400/', 'http://localhost:8080/']
3
3
  var merge = require('webpack-merge')
4
4
  var baseConfig = require('./webpack.dev.conf')
5
5
  var devConfig = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.6.81",
3
+ "version": "3.6.83",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -6,12 +6,13 @@
6
6
  </header>
7
7
  <article slot="modal-body" class="modal-body" style="height: auto" v-show="!showTable">
8
8
  <div class="flex-row flex-deviceinfo">
9
- <div class="flex-row flex-two-info panel panel-default" v-for="row in devicesinfo">
9
+ <div class="flex-row flex-two-info panel panel-default" v-for="(index,row) in devicesinfo">
10
10
  <avatar-upload :img-src.sync="row.img.content" :filename.sync="row.img.filename"></avatar-upload>
11
11
  <form class="form-horizontal select-overspread " style="flex: 1;">
12
12
  <div style="margin-top: 2%">
13
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 style="color: #999999;text-decoration: none"></a>
14
+ <a style="font-size: 16px;font-weight: 500;">设备基本信息</a>&nbsp;<a
15
+ style="color: #999999;text-decoration: none"></a>
15
16
  </div>
16
17
  <div class="row auto" style="margin-top: 10px;margin-left: 10px;">
17
18
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
@@ -23,11 +24,13 @@
23
24
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
24
25
  <label class=" font_normal_body">设备编号</label>
25
26
  <input type="text" class="input_search" style="width:60%" v-model="row.f_devices_no"
27
+ @blur="devicesNoBlur(index)"
26
28
  placeholder='设备编号' v-next-el="{id: $index+'brand'}">
27
29
  </div>
28
30
  </div>
29
- <div class="row auto" style="margin-left: 10px;">
30
- <div class="col-sm-6 form-group" style="padding-right: 5px;" :class="[!row.f_brand && (row.f_devices_type == '壁挂炉' || row.f_devices_type == '热水器') ? 'has-error' : '']">
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' : '']">
31
34
  <label class="font_normal_body">设备品牌</label>
32
35
  <input type="text" class="input_search" style="width:60%" v-model="row.f_brand" placeholder='设备品牌'
33
36
  v-next-el="{id: $index+'devicesmodel'}" :id="$index+'brand'">
@@ -38,14 +41,32 @@
38
41
  placeholder='设备型号' :id="$index+'devicesmodel'">
39
42
  </div>
40
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>
41
62
  <div class="row auto" style="margin-left: 10px;">
42
63
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
43
64
  <label class="font_normal_body">施工单位</label>
44
65
  <v-select :value.sync="row.f_builderunit" v-model="row.f_builderunit"
45
- :options='builders' placeholder='施工单位' :value-single="true"
46
- close-on-select></v-select>
66
+ :options='builders' placeholder='施工单位' :value-single="true"
67
+ close-on-select></v-select>
47
68
  <!--<input type="text" class="input_search" style="width:60%" v-model="row.f_builderunit"-->
48
- <!--placeholder='施工单位'>-->
69
+ <!--placeholder='施工单位'>-->
49
70
  </div>
50
71
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
51
72
  <label class="font_normal_body">联系电话</label>
@@ -54,15 +75,17 @@
54
75
  </div>
55
76
  </div>
56
77
  <div class="row auto" style="margin-left: 10px;">
57
- <div class="col-sm-6 form-group" style="padding-right: 5px;" :class="[row.f_devices_type == '壁挂炉' && (row.f_input_person == '' || row.f_input_person == null) ? 'has-error' : '']">
78
+ <div class="col-sm-6 form-group" style="padding-right: 5px;"
79
+ :class="[row.f_devices_type == '壁挂炉' && (row.f_input_person == '' || row.f_input_person == null) ? 'has-error' : '']">
58
80
  <label class="font_normal_body">安装人&nbsp;&nbsp;&nbsp;</label>
59
- <!-- <input type="text" class="input_search" style="width:60%" v-model="row.f_input_person"-->
60
- <!-- placeholder='安装人'>-->
81
+ <!-- <input type="text" class="input_search" style="width:60%" v-model="row.f_input_person"-->
82
+ <!-- placeholder='安装人'>-->
61
83
  <v-select :value.sync="row.f_input_person" v-model="row.f_input_person"
62
84
  :options='installperson' placeholder='安装人'
63
85
  close-on-select></v-select>
64
86
  </div>
65
- <div class="col-sm-6 form-group" style="padding-right: 5px;" :class="[row.f_devices_type == '壁挂炉' && row.f_input_date == '' ? 'has-error' : '']">
87
+ <div class="col-sm-6 form-group" style="padding-right: 5px;"
88
+ :class="[row.f_devices_type == '壁挂炉' && row.f_input_date == '' ? 'has-error' : '']">
66
89
  <label class="font_normal_body">安装日期</label>
67
90
  <datepicker placeholder="安装日期" style="width: 60%"
68
91
  v-model="row.f_input_date"
@@ -85,7 +108,7 @@
85
108
  <label class="font_normal_body">使用年限</label>
86
109
  <input type="number" class="input_search" style="width: 60%" v-model="row.f_service_life"
87
110
  :value.sync="row.f_service_life"
88
- :onchange="expireDate($index)" >
111
+ :onchange="expireDate($index)">
89
112
  </div>
90
113
  </div>
91
114
  <div class="row auto" style="margin-left: 10px;">
@@ -93,7 +116,7 @@
93
116
  <label class="font_normal_body">到期日期</label>
94
117
  <input type="test" class="input_search" style="width: 60%" v-model="row.f_expire_date"
95
118
  :value.sync="row.f_expire_date"
96
- placeholder="到期日期" disabled></input>
119
+ placeholder="到期日期" disabled></input>
97
120
  </div>
98
121
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
99
122
  <label class="font_normal_body">设备数量</label>
@@ -107,9 +130,11 @@
107
130
  <label class="font_normal_body" title="用户设备状态">设备状态</label>
108
131
  <v-select :value.sync="row.f_userinfodevices_state" v-model="row.f_userinfodevices_state"
109
132
  :options='userdevicestate' placeholder='设备状态' :value-single="true"
133
+
110
134
  close-on-select></v-select>
111
135
  </div>
112
- <div class="col-sm-6 form-group" style="padding-right: 5px;" :class="[row.f_devices_type == '壁挂炉' && row.watchpurchase == '' ? 'has-error' : '']">
136
+ <div class="col-sm-6 form-group" style="padding-right: 5px;"
137
+ :class="[row.f_devices_type == '壁挂炉' && row.watchpurchase == '' ? 'has-error' : '']">
113
138
  <label class="font_normal_body">购买方式</label>
114
139
  <v-select :value.sync="row.watchpurchase" v-model="row.watchpurchase"
115
140
  :options='WatchPurchases' placeholder='购买方式' :value-single="true"
@@ -128,10 +153,11 @@
128
153
  <input class="input_search" style="width:60%" v-model="row.f_comments"/>
129
154
  </div>
130
155
  </div>
131
- <div>
132
- <img style="margin-top: -2px;margin-left: 2px" src="../../../static/images/lefticon/矩形1183.png">
133
- <a style="font-size: 16px;font-weight: 500;">连接管信息</a>&nbsp;<a style="color: #999999;text-decoration: none"></a>
134
- </div>
156
+ <div>
157
+ <img style="margin-top: -2px;margin-left: 2px" src="../../../static/images/lefticon/矩形1183.png">
158
+ <a style="font-size: 16px;font-weight: 500;">连接管信息</a>&nbsp;<a
159
+ style="color: #999999;text-decoration: none"></a>
160
+ </div>
135
161
  <div class="row auto" style="margin-left: 10px;">
136
162
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
137
163
  <label class="font_normal_body">管道类型</label>
@@ -164,7 +190,8 @@
164
190
  @click="deleteDevice($index, row)">
165
191
  </div>
166
192
  <div class="panel panel-default flex-two-info text-center" style="line-height: 164px;">
167
- <img :src="imgadd" alt="图片加载失败1" class="img-rounded" style="width: 60px;padding: 10px;cursor: pointer;"
193
+ <img :src="imgadd" alt="图片加载失败1" class="img-rounded"
194
+ style="width: 60px;padding: 10px;cursor: pointer;"
168
195
  @click="addDevice()">
169
196
  </div>
170
197
  </div>
@@ -178,8 +205,8 @@
178
205
  <article slot="modal-body" class="modal-body" style="height: auto" v-show="showTable">
179
206
  <div class="row">
180
207
  <div class=" text-center">
181
- <table class="table table-striped table-bordered" >
182
- <tr align="center">
208
+ <table class="table table-striped table-bordered">
209
+ <tr align="center">
183
210
  <th style="text-align: center">序号</th>
184
211
  <th style="text-align: center">设备类型</th>
185
212
  <th style="text-align: center">设备编号</th>
@@ -195,7 +222,7 @@
195
222
  <th style="text-align: center">操作</th>
196
223
  </tr>
197
224
  <tr style="text-align: center" v-for="row in devicesinfo">
198
- <td style="text-align: center;">{{$index + 1}}</td>
225
+ <td style="text-align: center;">{{ $index + 1 }}</td>
199
226
 
200
227
  <td style="text-align: center">{{row.f_devices_type}}</td>
201
228
  <td style="text-align:center">{{row.f_devices_no}}</td>
@@ -234,6 +261,8 @@
234
261
 
235
262
  <script>
236
263
  import moment from 'moment'
264
+ import {HttpResetClass} from "vue-client"
265
+
237
266
  export default {
238
267
  title: '表具设备信息',
239
268
  data () {
@@ -248,6 +277,8 @@ export default {
248
277
  installtype: this.$appdata.getParam('安装方式'),
249
278
  userdevicestate: this.$appdata.getParam('用户设备状态'),
250
279
  builders: this.$appdata.getParam('施工单位'),
280
+ brands: [],
281
+ devicesModel: [],
251
282
  f_make_date: '',
252
283
  f_expire_date: '',
253
284
  f_service_life: 0,
@@ -281,10 +312,46 @@ export default {
281
312
  // return rs
282
313
  // },
283
314
  },
315
+ ready () {
316
+ this.initParams()
317
+ },
284
318
  methods: {
319
+ async devicesNoBlur (index) {
320
+ if (!this.devicesinfo[index].id) {
321
+ if (this.devicesinfo[index].f_devices_type == '报警器') {
322
+ console.log('看看进来了吗?')
323
+ let http = new HttpResetClass()
324
+ let data = {
325
+ items: 'id',
326
+ tablename: 't_devices',
327
+ condition: `f_devices_type = '报警器' and f_devices_no = '${this.devicesinfo[index].f_devices_no}'`,
328
+ orderitem: 'id'
329
+ }
330
+ let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: null})
331
+ if (res.data.length > 0) {
332
+ this.$showAlert(`报警器编号必须唯一,请重新输入报警器编号`, 'warning', 3000)
333
+ this.devicesinfo[index].f_devices_no = ''
334
+ }
335
+ }
336
+ }
337
+ },
338
+ async initParams () {
339
+ let http = new HttpResetClass()
340
+ let data = {
341
+ items: 'id,f_brand',
342
+ tablename: 't_iot_device_brand',
343
+ condition: `1=1`,
344
+ orderitem: 'id'
345
+ }
346
+ let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: '获取设备品牌失败!'})
347
+ this.brands = []
348
+ for (let row of res.data) {
349
+ this.brands.push({label: row.f_brand, value: `${row.id}`})
350
+ }
351
+ },
285
352
  showTableBtn () {
286
353
  this.showTable = !this.showTable
287
- console.log('表具信息',this.devicesinfo)
354
+ console.log('表具信息', this.devicesinfo)
288
355
  },
289
356
  expireDate (index) {
290
357
  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) {
@@ -302,12 +369,36 @@ export default {
302
369
  })
303
370
  }
304
371
  },
372
+ async brandChange (index) {
373
+ console.log('this.devicesinfo[index].f_brand', this.devicesinfo[index].f_brand)
374
+ this.devicesModel = []
375
+ if (this.devicesinfo.length > 0) {
376
+ if (this.devicesinfo[index].f_devices_type == '报警器') {
377
+ if (this.devicesinfo[index].f_brand) {
378
+ let http = new HttpResetClass()
379
+ let data = {
380
+ items: 'id,f_model',
381
+ tablename: 't_iot_device_model',
382
+ condition: `f_brand_id = ${this.devicesinfo[index].f_brand}`,
383
+ orderitem: 'id'
384
+ }
385
+ let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: '获取设备型号失败!'})
386
+ for (let row of res.data) {
387
+ this.devicesModel.push({label: row.f_model, value: row.id})
388
+ }
389
+ }
390
+ }
391
+ }
392
+ },
305
393
  deleteDevice (index, row) {
306
394
  console.log('删除的信息', row)
307
395
  if (row.id) {
308
396
  this.$showMessage('此操作无法还原,是否确定要删除此设备?', ['confirm', 'cancel']).then((res) => {
309
397
  if (res === 'confirm') {
310
- this.$resetpost('rs/logic/deletedevices', {param: row}, {resolveMsg: `成功删除此设备`, rejectMsg: '删除设备失败'}).then((res) => {
398
+ this.$resetpost('rs/logic/deletedevices', {param: row}, {
399
+ resolveMsg: `成功删除此设备`,
400
+ rejectMsg: '删除设备失败'
401
+ }).then((res) => {
311
402
  this.devicesinfo.splice(index, 1)
312
403
  })
313
404
  }
@@ -348,7 +348,7 @@ export default {
348
348
  // 不是修改直接保存
349
349
  if (!this.filechangeDetailsShow) this.confirmation()
350
350
  },
351
- confirmation () {
351
+ async confirmation () {
352
352
  if (this.fileSaveData.reason && this.fileSaveData.reason !== '其他') {
353
353
  this.fileSaveData.modifyReason = this.fileSaveData.reason
354
354
  }
@@ -368,8 +368,10 @@ export default {
368
368
  this.fileSaveData.userinfo.userfiles.f_depid = parentnameId
369
369
  }
370
370
  }
371
- this.$FileManageService.fileSave(this.fileSaveData).then((res) => {
371
+ let userinfoid = null
372
+ await this.$FileManageService.fileSave(this.fileSaveData).then((res) => {
372
373
  this.$parent.resdata = res.data.result[0].f_userinfo_code
374
+ userinfoid = res.data.result[0].f_userinfo_id
373
375
  if (!this.row) {
374
376
  this.$parent.resshow = true
375
377
  }
@@ -382,6 +384,51 @@ export default {
382
384
  this.seaching = false
383
385
  this.$dispatch('error', '档案保存', this.data, error)
384
386
  })
387
+ try {
388
+ // 如果是物联网表并且设备类型是报警器的话,调用物联监控平台存储报警器信息
389
+ let http = new HttpResetClass()
390
+ await this.fileSaveData.userinfo.userfiles.forEach(row => {
391
+ if (row.f_meter_classify == '物联网表') {
392
+ if (row.devicesinfo.length > 0) {
393
+ row.devicesinfo.forEach(obj => {
394
+ if (obj.f_devices_type == '报警器') {
395
+ let param = {
396
+ userinfoId: userinfoid,
397
+ deviceNo: obj.f_devices_no,
398
+ state: 1,
399
+ brandId: obj.f_brand,
400
+ modelId: obj.f_devices_model,
401
+ inputtor: obj.f_operator,
402
+ inputDate: this.$login.toStandardTimeString(),
403
+ installDate: obj.f_input_date
404
+ }
405
+ if (obj.f_input_person.length > 0) {
406
+ param.installPerson = obj.f_input_person[0]
407
+ }
408
+ if (!obj.id) {
409
+ http.load('POST', '/webmeter/rs/logic/deviceSyncIotDevice', {data: param}, {resolveMsg: null, rejectMsg: null})
410
+ } else {
411
+ let data = {
412
+ items: 'id',
413
+ tablename: 't_iot_device',
414
+ condition: `f_device_no = '${obj.f_devices_no}'`,
415
+ orderitem: 'id'
416
+ }
417
+ http.load('POST', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: null})
418
+ .then(res => {
419
+ if (res.data.length > 0) {
420
+ http.load('POST', '/webmeter/rs/logic/deviceSyncIotDevice', {data: param}, {resolveMsg: null, rejectMsg: null})
421
+ }
422
+ })
423
+ }
424
+ }
425
+ })
426
+ }
427
+ }
428
+ })
429
+ } catch (e) {
430
+ console.log(e)
431
+ }
385
432
  },
386
433
  convertBase64ToBlob (base64String) {
387
434
  // 将base64解码
@@ -88,13 +88,13 @@
88
88
  <div class="col-sm-4">
89
89
  <label for="f_balance" class="font_normal_body">上期结余</label>
90
90
  <input class="input_search" style="width:60%" type="number" v-model="model.f_balance"
91
- v-scale="[model.f_balance, 4]" placeholder="上期结余" disabled>
91
+ v-scale="[model.f_balance, row.f_fee_decimal||4]" placeholder="上期结余" disabled>
92
92
  </div>
93
93
 
94
94
  <div class="col-sm-4">
95
95
  <label for="f_curbalance" class="font_normal_body">&nbsp;本期结余</label>
96
96
  <input class="input_search" style="width:60%" type="number" v-model="curbalance"
97
- v-scale="[curbalance, 4]" placeholder="本期结余" disabled>
97
+ v-scale="[curbalance, row.f_fee_decimal||4]" placeholder="本期结余" disabled>
98
98
  </div>
99
99
 
100
100
  <div class="col-sm-3" v-if="row.f_collection_type === '按气量' && model.f_payment!='赠气' && row.f_meter_type.includes('卡表') && !config.calculatePreByCollection"
@@ -103,7 +103,7 @@
103
103
  <input id="f_collection" class="input_search" style="width:60%" type="number" v-model="model.f_collection"
104
104
  v-validate:f_collection='{required: true, dctest: [(model.f_totalcost - 0), ">=" ] }'
105
105
  v-el:fcollection @keyup.enter="checkInvoiceMsg((!$v.valid || validateOk || !islegal || clickConfirm))"
106
- v-scale="[model.f_totalcost, 4]" :disabled="$refs.givechange.promptText != ''"/>
106
+ v-scale="[model.f_totalcost, row.f_fee_decimal||4]" :disabled="$refs.givechange.promptText != ''"/>
107
107
  </div>
108
108
  <div class="col-sm-3" v-if="row.f_collection_type === '按气量' && model.f_payment!='赠气' && row.f_meter_type.includes('卡表') && config.calculatePreByCollection"
109
109
  :class="[$v.f_collection.required ? 'has-error' : 'has-success']">
@@ -119,13 +119,13 @@
119
119
  <label for="f_collection" class=" font_normal_body"><font size="4px" style="font-weight:bold">*收&emsp;款</font></label>
120
120
  <input id="f_collection" class="input_search" style="width:60%;font-size: 18px;font-weight:bold;" type="number" v-model="model.f_collection"
121
121
  @blur="config.calculatePreByCollection && calculatePreByCollection()"
122
- v-el:fcollection @keyup.enter="checkInvoiceMsg((!$v.valid || validateOk || !islegal || clickConfirm))" v-scale="[model.f_totalcost, 4]" :disabled="$refs.givechange.promptText != ''">
122
+ v-el:fcollection @keyup.enter="checkInvoiceMsg((!$v.valid || validateOk || !islegal || clickConfirm))" v-scale="[model.f_totalcost, row.f_fee_decimal||4]" :disabled="$refs.givechange.promptText != ''">
123
123
  </div>
124
124
  <div class="col-sm-3" v-if="row.f_collection_type === '按金额' && row.f_meter_type.includes('卡表')">
125
125
  <label for="f_collection" class=" font_normal_body"><font size="4px" style="font-weight:bold">*收&emsp;款</font></label>
126
126
  <input id="f_collection" class="input_search" style="width:50%;font-size: 18px;font-weight:bold;" type="number" v-model="model.f_collection"
127
127
  @blur="config.calculatePreByCollection && calculatePreByCollection()"
128
- v-el:fcollection @keyup.enter="checkInvoiceMsg((!$v.valid || validateOk || !islegal || clickConfirm))" v-scale="[model.f_collection, 4]" :disabled="$refs.givechange.promptText != ''">
128
+ v-el:fcollection @keyup.enter="checkInvoiceMsg((!$v.valid || validateOk || !islegal || clickConfirm))" v-scale="[model.f_collection, row.f_fee_decimal||4]" :disabled="$refs.givechange.promptText != ''">
129
129
  </div>
130
130
  <div class="col-sm-4" v-if="!row.f_meter_type.includes('卡表')">
131
131
  <label for="f_collection" class=" font_normal_body"><font size="4px"
@@ -135,7 +135,7 @@
135
135
  v-el:fcollection
136
136
  @blur="config.calculatePreByCollection && calculatePreByCollection()"
137
137
  @keyup.enter="checkInvoiceMsg((!$v.valid || validateOk || !islegal || clickConfirm))"
138
- v-scale="[model.f_collection, 4]" :disabled="!config.calculatePreByCollection">
138
+ v-scale="[model.f_collection, row.f_fee_decimal||4]" :disabled="!config.calculatePreByCollection">
139
139
  </div>
140
140
  <div class="col-sm-1 form-group" v-show=" row.f_meter_type.includes('卡表')">
141
141
  <give-change :curbalance="curbalance" :collection.sync="model.f_collection" v-ref:givechange></give-change>
@@ -161,12 +161,12 @@
161
161
  <div class="col-sm-4">
162
162
  <label for="f_preamount" class=" font_normal_body">&nbsp;优惠金额</label>
163
163
  <input class="input_search" style="width:60%" type="number" v-model="model.f_privilege_money"
164
- v-scale="[model.f_privilege_money, 2]" placeholder="优惠金额" disabled>
164
+ v-scale="[model.f_privilege_money, row.f_fee_decimal||4]" placeholder="优惠金额" disabled>
165
165
  </div>
166
166
  <div class="col-sm-4">
167
167
  <label for="f_preamount" class=" font_normal_body">&nbsp;实际收款</label>
168
168
  <input class="input_search" style="width:60%" type="number" v-model="model.f_after_discount"
169
- v-scale="[model.f_after_discount, 2]" placeholder="优惠后收款" disabled>
169
+ v-scale="[model.f_after_discount, row.f_fee_decimal||4]" placeholder="优惠后收款" disabled>
170
170
  </div>
171
171
  </div>
172
172
 
@@ -32,7 +32,7 @@
32
32
  <label for="f_preamount" class=" font_normal_body">预购金额</label>
33
33
  <input class="input_search" style="width:60%" @blur="preamount()" type="number" v-model="model.f_preamount"
34
34
  v-validate:f_preamount='{required: true, dctest: [maxmoney, "<=" ] }'
35
- v-scale="[model.f_preamount, 2]" placeholder="预购金额" >
35
+ v-scale="[model.f_preamount, row.f_fee_decimal||4]" placeholder="预购金额" >
36
36
  </div>
37
37
  </div>
38
38
  <div class="row" style="margin-top:6px;">
@@ -70,20 +70,20 @@
70
70
  <input class="input_search" style="width:60%" type="number"
71
71
  @blur="preamount()" v-model="model.f_totalcost"
72
72
  v-validate:f_totalcost='{required: true, dctest: [0, ">=" ] }' placeholder="应收金额"
73
- v-next-el='sk' v-scale="[model.f_totalcost, 2]" disabled>
73
+ v-next-el='sk' v-scale="[model.f_totalcost, row.f_fee_decimal||4]" disabled>
74
74
  </div>
75
75
  </div>
76
76
  <div class="row">
77
77
  <div class="col-sm-4 form-group">
78
78
  <label for="f_balance" class="font_normal_body">上期结余</label>
79
79
  <input class="input_search" style="width:60%" type="number" v-model="model.f_balance"
80
- v-scale="[model.f_balance, 2]" placeholder="上期结余" disabled>
80
+ v-scale="[model.f_balance, row.f_fee_decimal||4]" placeholder="上期结余" disabled>
81
81
  </div>
82
82
 
83
83
  <div class="col-sm-4 form-group">
84
84
  <label for="f_curbalance" class="font_normal_body">本期结余</label>
85
85
  <input class="input_search" style="width:60%" type="number" v-model="curbalance"
86
- v-scale="[model.f_curbalance, 2]" placeholder="本期结余" disabled>
86
+ v-scale="[model.f_curbalance, row.f_fee_decimal||4]" placeholder="本期结余" disabled>
87
87
  </div>
88
88
 
89
89
  <!-- <div class="col-sm-3 form-group" v-if="row.f_collection_type === '按气量' && model.f_payment!='赠气'"-->
@@ -102,7 +102,7 @@
102
102
  <div class="col-sm-3 form-group">
103
103
  <label for="f_collection" class=" font_normal_body">&nbsp;&nbsp;&nbsp;收款&nbsp;&nbsp;&nbsp;</label>
104
104
  <input id="f_collection" class="input_search" style="width:60%" type="number" v-model="model.f_collection"
105
- v-el:sk v-scale="[model.f_collection, 2]" disabled>
105
+ v-el:sk v-scale="[model.f_collection, row.f_fee_decimal||4]" disabled>
106
106
  </div>
107
107
  <div class="col-sm-1 form-group">
108
108
  <give-change :curbalance="curbalance" :collection.sync="model.f_collection" v-ref:givechange></give-change>
@@ -127,12 +127,12 @@
127
127
  <div class="col-sm-4 form-group">
128
128
  <label for="f_preamount" class=" font_normal_body">&nbsp;优惠金额</label>
129
129
  <input class="input_search" style="width:60%" type="number" v-model="model.f_privilege_money"
130
- v-scale="[model.f_privilege_money, 2]" placeholder="优惠金额" disabled>
130
+ v-scale="[model.f_privilege_money, row.f_fee_decimal||4]" placeholder="优惠金额" disabled>
131
131
  </div>
132
132
  <div class="col-sm-4 form-group">
133
133
  <label for="f_preamount" class=" font_normal_body">&nbsp;实际收款</label>
134
134
  <input class="input_search" style="width:60%" type="number" v-model="model.f_after_discount"
135
- v-scale="[model.f_after_discount, 2]" placeholder="优惠后收款" disabled>
135
+ v-scale="[model.f_after_discount, row.f_fee_decimal||4]" placeholder="优惠后收款" disabled>
136
136
  </div>
137
137
  </div>
138
138
  <div class="row" v-if="model.f_payment[0].includes('POS')">
@@ -224,7 +224,7 @@
224
224
  if (self.row.f_alias === 'QiaoSong') {
225
225
  self.model.f_pregas = (getGas.data.gas - 0).toFixed(1)
226
226
  } else {
227
- self.model.f_pregas = (getGas.data.gas - 0).toFixed(4)
227
+ self.model.f_pregas = (getGas.data.gas - 0).toFixed(self.row.f_gas_decimal || 4)
228
228
  }
229
229
  self.dymoney = 0
230
230
  } else {
@@ -245,11 +245,11 @@
245
245
  if (self.config.priceCalculation) {
246
246
  self.model.f_pregas = 0
247
247
  }
248
- self.model.f_totalcost = ((self.row.f_balance - 0) > (self.model.f_preamount - 0) ? 0 : ((self.model.f_preamount - 0) - (self.row.f_balance - 0)).toFixed(4))
248
+ self.model.f_totalcost = ((self.row.f_balance - 0) > (self.model.f_preamount - 0) ? 0 : ((self.model.f_preamount - 0) - (self.row.f_balance - 0)).toFixed(self.row.f_fee_decimal || 4))
249
249
 
250
250
  self.model.chargeprice = getGas.data.chargeprice
251
251
  Object.assign(self.model, self.model, getGas.data)
252
- self.model.f_totalcost = ((self.model.f_totalcost - 0) - (self.dymoney - 0)).toFixed(2)
252
+ self.model.f_totalcost = ((self.model.f_totalcost - 0) - (self.dymoney - 0)).toFixed(self.row.f_fee_decimal || 4)
253
253
  if (self.config.floor) {
254
254
  self.model.f_totalcost = Math.ceil(self.model.f_totalcost)
255
255
  }
@@ -265,7 +265,7 @@
265
265
  // 输入气量,换算金额
266
266
  let pregasGen = async function (self) {
267
267
  if (self.row.f_isdecimal === '是') {
268
- self.model.f_pregas = (self.model.f_pregas - 0).toFixed(4)
268
+ self.model.f_pregas = (self.model.f_pregas - 0).toFixed(self.row.f_gas_decimal || 4)
269
269
  } else {
270
270
  self.model.f_pregas = (self.model.f_pregas - 0).toFixed(0)
271
271
  }
@@ -273,7 +273,7 @@
273
273
  self.model.f_meter_type = self.row.f_meter_type
274
274
  let getAmount = await self.$CommonService.gasCalculate(self.model, self.model.f_pregas)
275
275
  self.model.f_preamount = getAmount.data.chargenum
276
- self.model.f_totalcost = (self.row.f_balance - 0) > (getAmount.data.chargenum - 0) ? 0 : ((getAmount.data.chargenum - 0) - (self.row.f_balance - 0)).toFixed(4)
276
+ self.model.f_totalcost = (self.row.f_balance - 0) > (getAmount.data.chargenum - 0) ? 0 : ((getAmount.data.chargenum - 0) - (self.row.f_balance - 0)).toFixed(self.row.f_fee_decimal || 4)
277
277
  Object.assign(self.model, self.model, getAmount.data)
278
278
  self.model.chargeprice = getAmount.data.chargeprice
279
279
  if (self.config.floor) {
@@ -8,7 +8,7 @@
8
8
  <!-- </div>-->
9
9
  <div style="margin-top:10px;" v-for="(index, row) in model.otherdetail">
10
10
  <div class="row">
11
- <div class="col-sm-4" :class="{'has-success':row.f_brand_spec,'select-error':!row.f_brand_spec}">
11
+ <div class="col-sm-4" :class="{'select-error': row.f_brand_spec.length === 0 && config.checkFlag}">
12
12
  <label for="f_brand_spec" class="font_normal_body " title="参数名称:品名及规格">{{brandType}}</label>
13
13
  <v-select id="f_brand_spec"
14
14
  placeholder='请选择'
@@ -155,16 +155,16 @@
155
155
  <!-- <tax-other-bill :show="taxprint" v-ref:taxprintbill :row='row' :logic='model' v-on:success="close" v-on:toggle="close"></tax-other-bill> -->
156
156
  <div style="text-align:right;height: 25%;">
157
157
  <button v-if="config.modificationList" class="button_search" @click="confirm(true)"
158
- :disabled=' validflag || validateOk'>确认并转单
158
+ :disabled=' validflag || validateOk || chargetypecheckflag'>确认并转单
159
159
  </button>
160
- <payment-code-button :clickable=" validflag || validateOk"
160
+ <payment-code-button :clickable=" validflag || validateOk || chargetypecheckflag"
161
161
  :payment.sync="model.f_payment" :payment-data="paytype"
162
162
  @confirm-payment="confirm()">
163
163
  </payment-code-button>
164
164
  <button class="button_search btn-gn" v-if="authArr.includes('其它欠费生成')" @click="createQianfei()"
165
165
  :disabled=' validflag || validateOk'>生成欠费
166
166
  </button>
167
- <button class="button_search btn-gn" @click="checkInvoiceMsg()" :disabled='validflag || validateOk'>确认
167
+ <button class="button_search btn-gn" @click="checkInvoiceMsg()" :disabled='validflag || validateOk || chargetypecheckflag'>确认
168
168
  </button>
169
169
  <button class="button_clear btn-gn" @click="clean()">取消</button>
170
170
  </div>
@@ -285,6 +285,7 @@ export default {
285
285
  return {
286
286
  config: {
287
287
  showupload: true,
288
+ // 验证收费类型是否必填
288
289
  checkFlag: false,
289
290
  modificationList: false,
290
291
  dispatch: false,
@@ -309,7 +310,7 @@ export default {
309
310
  t_userfees: '',
310
311
  f_fee_type: ['其他费用'],
311
312
  f_fee_time: ['12'],
312
- otherdetail: [{f_brand_spec: [''],typeNameList:[],f_typenumber:'',typenumberList:[], f_unitprice: '', f_number: ''}]
313
+ otherdetail: [{f_brand_spec: [''], typeNameList: [], f_typenumber: '', typenumberList: [], f_unitprice: '', f_number: ''}]
313
314
  },
314
315
  eticket_msg: false,
315
316
  eticket_show: false,
@@ -372,7 +373,7 @@ export default {
372
373
  }
373
374
  },
374
375
  setTypeprice (val) {
375
- console.log("单价变化:",val)
376
+ console.log('单价变化:', val)
376
377
  if (this.model.otherdetail[val] && this.model.otherdetail[val].f_typenumber[0]) {
377
378
  let unitprice = this.$appdata.getSingleValue(this.model.otherdetail[val].f_typenumber[0])
378
379
  if (unitprice !== undefined) {
@@ -449,7 +450,7 @@ export default {
449
450
  this.eticket_show = false
450
451
  this.$dispatch('success')
451
452
  },
452
- async setTypename (val,index) {
453
+ async setTypename (val, index) {
453
454
  this.model.otherdetail[index].f_typenumber = ''
454
455
  this.model.otherdetail[index].typeNameList = this.$appdata.getParam(val.f_brand_spec[0])
455
456
  this.model.otherdetail[index].typenumberList = []
@@ -470,7 +471,7 @@ export default {
470
471
  }
471
472
  }
472
473
  },
473
- setTypenumber (val,index) {
474
+ setTypenumber (val, index) {
474
475
  this.model.otherdetail[index].typenumberList = this.$appdata.getParam(val.f_typename[0 ])
475
476
  this.model.otherdetail[index].f_unitprice = ''
476
477
  },
@@ -515,7 +516,7 @@ export default {
515
516
  if (!flag) this.model.f_collection = ''
516
517
  },
517
518
  addadetail () {
518
- this.$set(`model.otherdetail[${this.model.otherdetail.length}]`, {f_brand_spec: [''],f_typenumber:'',typeNameList:[],typenumberList:[], f_unitprice: '', f_number: ''})
519
+ this.$set(`model.otherdetail[${this.model.otherdetail.length}]`, {f_brand_spec: [''], f_typenumber: '', typeNameList: [], typenumberList: [], f_unitprice: '', f_number: ''})
519
520
  console.log(JSON.stringify(this.model.otherdetail))
520
521
  },
521
522
  delthisdetail (index) {
@@ -549,6 +550,18 @@ export default {
549
550
  return !this.$v.valid
550
551
  }
551
552
  },
553
+ // 验证收费类型是否必填
554
+ chargetypecheckflag () {
555
+ let b = false
556
+ if (this.config.checkFlag) {
557
+ this.model.otherdetail.forEach((item) => {
558
+ if (item.f_brand_spec && item.f_brand_spec.length === 0) {
559
+ b = true
560
+ }
561
+ })
562
+ }
563
+ return b
564
+ },
552
565
  feetime () {
553
566
  return [{label: '一个月', value: '1'}, {label: '三个月', value: '3'}, {label: '六个月', value: '6'}, {
554
567
  label: '一年',
@@ -221,6 +221,9 @@
221
221
  <th>
222
222
  <nobr>表号</nobr>
223
223
  </th>
224
+ <th>
225
+ <nobr>用户电话</nobr>
226
+ </th>
224
227
  <th>
225
228
  <nobr>抄表员</nobr>
226
229
  </th>
@@ -285,6 +288,7 @@
285
288
  <td>{{ row.f_user_level }}</td>
286
289
  <td style="text-align: center;">{{ row.f_residential_area }}</td>
287
290
  <td style="text-align: center;">{{ row.f_meternumber }}</td>
291
+ <td style="text-align: center;">{{ row.f_user_phone }}</td>
288
292
  <td style="text-align: center;">{{ row.f_inputtor }}</td>
289
293
  <td style="text-align: center;">{{ row.total_fee }}</td>
290
294
  <td style="text-align: center;">{{ row.total_gas }}</td>
@@ -460,6 +464,7 @@ export default {
460
464
  'f_userinfo_code': '客户编号',
461
465
  'f_user_name': '基本信息',
462
466
  'f_meternumber': '表号',
467
+ 'f_user_phone': '用户电话',
463
468
  'f_inputtor': '抄表员',
464
469
  'total_fee': '总购金额',
465
470
  'total_gas': '累购气量',
@@ -599,14 +604,14 @@ export default {
599
604
  this.$refs.paged.$refs.criteria.search()
600
605
  },
601
606
  enter (row) {
602
- if (!row.f_tablebase || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(2) < 0) {
607
+ if (!row.f_tablebase || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(3) < 0) {
603
608
  return
604
609
  }
605
- if (row.f_tablebase - parseInt(row.f_tablebase) !== 0) {
606
- Vue.set(row, 'error', '底数只能输入整数')
610
+ if (row.f_tablebase.toString().split(".")[1].length>3) {
611
+ Vue.set(row, 'error', '底数最多只能输入小数点后3位')
607
612
  return
608
613
  }
609
- // || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(2) < 0
614
+ // || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(3) < 0
610
615
  if (row.f_tablebase) {
611
616
  // 如果本期底数大于上期底数生成超用收费
612
617
  // if ((row.f_tablebase - 0) > (row.f_meter_base - 0)) {
@@ -640,7 +645,7 @@ export default {
640
645
  row.f_total_gas = row.total_gas
641
646
  row.f_total_fee = row.total_fee
642
647
  // 余气量=累购-(本期指数-表初始指数)
643
- row.f_shengyu_gas = (row.f_total_gas - (row.f_tablebase - row.f_initial_base)).toFixed(2)
648
+ row.f_shengyu_gas = (row.f_total_gas - (row.f_tablebase - row.f_initial_base)).toFixed(3)
644
649
  console.log('录入完毕。。', row)
645
650
  this.$resetpost('rs/logic/cardCommonEnter', row, {resolveMsg: null, rejectMsg: '录入数据出错!!!'}).then((res) => {
646
651
  console.log('返回数据', res)
@@ -53,10 +53,10 @@
53
53
  </div>
54
54
  </div>
55
55
  <div class="row" style="margin-top:10px;">
56
- <div class="col-sm-4" :class="[$v.f_transfer_fees.dctest ? 'has-error' : 'has-success']">
56
+ <div class="col-sm-4">
57
57
  <label id="label" for="f_transfer_fees" class="font_normal_body" title="单值管理:过户费">&nbsp;过&ensp;户&ensp;费</label>
58
58
  <input class="input_search" style="width:60%" type="number" v-model="model.f_transfer_fees" placeholder="过户费"
59
- v-next-el='accopen' v-el:fees v-validate:f_transfer_fees='{dctest: [0, ">=" ]}'>
59
+ v-next-el='accopen' v-el:fees >
60
60
  </div>
61
61
  <div class="col-sm-4" :class="[$v.payment.required ? 'has-error' : '']">
62
62
  <label id="label" for="f_paymenttype" class="font_normal_body">&nbsp;付款方式</label>
@@ -416,6 +416,7 @@ export default {
416
416
  payment: '现金缴费',
417
417
  open_way: '指令开户',
418
418
  hasArrearsChange: false, // 是否可以有欠费换表
419
+ isPraseInt: false,
419
420
  dispatch: false, // 是否派工
420
421
  showupload: true, //
421
422
  approve: false // 是否开启审核
@@ -630,7 +631,8 @@ export default {
630
631
  async confirm () {
631
632
  let msg = ''
632
633
  if (this.row.f_meter_type.includes('机表') || this.row.f_meter_type.includes('物联网表')) {
633
- if ((parseInt(this.model.f_using_base_old) > parseInt(this.row.f_meter_base))) {
634
+ let isPraseInt = this.config.isPraseInt
635
+ if ((parseInt(this.model.f_using_base_old) > parseInt(this.row.f_meter_base)) || (isPraseInt && this.model.f_using_base_old > this.row.f_meter_base)) {
634
636
  msg = (this.row.f_meter_type === '机表' ? '该用户表底数大于上次抄表底数,请确定是否继续生成欠费记录' : '该用户表底数大于上次抄表底数,请确定是否进行结算')
635
637
  } else if (this.row.f_capacity && this.row.f_capacity > 0 && (parseInt(this.model.f_using_base_old) < parseInt(this.row.f_meter_base))) {
636
638
  msg = '该用户表底数大于上次抄表底数,且已超越最大量程,请确定是否继续生成欠费记录'
@@ -808,7 +810,8 @@ export default {
808
810
  }
809
811
  let msg = ''
810
812
  if (this.row.f_meter_type.includes('机表') || this.row.f_meter_type.includes('物联网表')) {
811
- if ((parseInt(this.model.f_using_base_old) > parseInt(this.row.f_meter_base))) {
813
+ let isPraseInt = this.config.isPraseInt
814
+ if ((parseInt(this.model.f_using_base_old) > parseInt(this.row.f_meter_base)) || (isPraseInt && this.model.f_using_base_old > this.row.f_meter_base)) {
812
815
  msg = (this.row.f_meter_type === '机表' ? '该用户表底数大于上次抄表底数,请确定是否继续生成欠费记录' : '该用户表底数大于上次抄表底数,请确定是否进行结算')
813
816
  } else if (this.row.f_capacity && this.row.f_capacity > 0 && (parseInt(this.model.f_using_base_old) < parseInt(this.row.f_meter_base))) {
814
817
  msg = '该用户表底数大于上次抄表底数,且已超越最大量程,请确定是否继续生成欠费记录'
@@ -191,9 +191,11 @@
191
191
  condition="f_oughtfee_new > '{}'" placeholder="气费金额大于">
192
192
  </div>
193
193
  <div class="col-sm-2 form-group">
194
- <label class="font_normal_body" title="欠费金额大于">欠费金额</label>
195
- <input type="text" style="width:60%" class="input_search" v-model="model.f_oughtfee_all"
196
- condition="f_oughtfee_all > '{}'" placeholder="欠费金额大于">
194
+ <label class="font_normal_body">欠费金额</label>
195
+ <input type="text" style="width:30%" class="input_search" title="大于等于" v-model="model.f_oughtfee_all_small"
196
+ condition="f_oughtfee_all >= '{}' " placeholder="大于等于">
197
+ <input type="text" style="width:30%" class="input_search" title="小于等于" v-model="model.f_oughtfee_all_big"
198
+ condition="f_oughtfee_all <= '{}' " placeholder="小于等于">
197
199
  </div>
198
200
  <div class="col-sm-2 form-group">
199
201
  <label class="font_normal_body">欠费期数</label>
@@ -287,6 +287,9 @@
287
287
  <th>
288
288
  <nobr>表号</nobr>
289
289
  </th>
290
+ <th>
291
+ <nobr>用户电话</nobr>
292
+ </th>
290
293
  <th>
291
294
  <nobr>上期底数</nobr>
292
295
  </th>
@@ -375,6 +378,7 @@
375
378
  <td style="text-align: center;">{{row.f_balance}}</td>
376
379
  <td style="text-align: center;">{{Math.round(row.avggas)}}</td>
377
380
  <td>{{row.f_meternumber}}</td>
381
+ <td>{{row.f_user_phone}}</td>
378
382
  <td>{{row.f_last_tablebase}}</td>
379
383
  <td id="hand-creat" v-if="row.f_meter_state === '未抄表' ">
380
384
  <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
@@ -382,7 +386,7 @@
382
386
  'has-error has-feedback': row.error}"
383
387
  >
384
388
 
385
- <input title="只能录入整数" type="text" class="input_search" v-model="row.f_tablebase"
389
+ <input title="可录入小数点后三位" type="text" class="input_search" v-model="row.f_tablebase"
386
390
  @blur="$parent.$parent.$parent.beforenter($index, row)"
387
391
  v-next-el="{id: $index+2}" :id="$index+1" style="width: 100px;padding: 6px;"
388
392
  @focus="$parent.$parent.$parent.clearError(row)"
@@ -399,7 +403,7 @@
399
403
  <td style="text-align: center;">
400
404
  <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{'has-success has-feedback': !row.error,'has-error has-feedback': row.error}"
401
405
  v-if="row.f_meter_state === '未抄表' && row.states !== 0 && $parent.$parent.$parent.jurisdiction.includes('增量录入')">
402
- <input title="只能录入整数" type="number" class="input_search" v-model="row.f_adjustment_volume"
406
+ <input title="底数最多只能输入小数点后3位" type="number" class="input_search" v-model="row.f_adjustment_volume"
403
407
  style="width: 100px;padding: 6px;"
404
408
  :disabled="row.state === '开始'">
405
409
  </div>
@@ -702,11 +706,11 @@
702
706
  </div>
703
707
  <div class="col-sm-4 form-group">
704
708
  <label class="font_normal_body">总用气量</label>
705
- <p class="form-control" style="width:60%" disabled>{{ ((row.f_stair_gas1 - 0)+(row.f_stair_gas2 - 0)+(row.f_stair_gas3 - 0)).toFixed(2) }}</p>
709
+ <p class="form-control" style="width:60%" disabled>{{ ((row.f_stair_gas1 - 0)+(row.f_stair_gas2 - 0)+(row.f_stair_gas3 - 0)).toFixed(3) }}</p>
706
710
  </div>
707
711
  <div class="col-sm-4 form-group">
708
712
  <label class="font_normal_body">总用气金额</label>
709
- <p class="form-control" style="width:60%" disabled>{{ row.f_oughtfee = ((row.f_stair_money1 - 0)+(row.f_stair_money2 - 0)+(row.f_stair_money3 - 0)).toFixed(2) }}</p>
713
+ <p class="form-control" style="width:60%" disabled>{{ row.f_oughtfee = ((row.f_stair_money1 - 0)+(row.f_stair_money2 - 0)+(row.f_stair_money3 - 0)).toFixed(3) }}</p>
710
714
  </div>
711
715
  <p style="color: red">注意: 自定义气量总量必须等于本次抄表用气量, 本次抄表总量: {{row.f_oughtamount}}</p>
712
716
  </div>
@@ -940,7 +944,7 @@
940
944
  },
941
945
  methods: {
942
946
  stairMoney (price, gas) {
943
- return (price * gas).toFixed(2) - 0
947
+ return (price * gas).toFixed(3) - 0
944
948
  },
945
949
  async customPricingConfirm () {
946
950
  let sumGas = (this.row.f_stair_gas1 - 0) + (this.row.f_stair_gas2 - 0) + (this.row.f_stair_gas3 - 0)
@@ -997,12 +1001,12 @@
997
1001
  let oughtamount = null
998
1002
  if (row.f_tablebase) {
999
1003
  if (row.f_share_gas) {
1000
- oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(4) + (row.f_share_gas > 0 ? '+' : '') + row.f_share_gas.toFixed(2)
1004
+ oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(4) + (row.f_share_gas > 0 ? '+' : '') + row.f_share_gas.toFixed(3)
1001
1005
  } else {
1002
1006
  if (row.f_capacity && row.f_capacity > 0 && row.f_tablebase < row.f_last_tablebase) {
1003
- oughtamount = (row.f_tablebase - 0 + (row.f_capacity - row.f_last_tablebase)).toFixed(2)
1007
+ oughtamount = (row.f_tablebase - 0 + (row.f_capacity - row.f_last_tablebase)).toFixed(3)
1004
1008
  } else {
1005
- oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(2)
1009
+ oughtamount = (row.f_tablebase - 0 - (row.f_last_tablebase - 0)).toFixed(3)
1006
1010
  }
1007
1011
  }
1008
1012
  } else {
@@ -1105,8 +1109,8 @@
1105
1109
  if (this.danhu.f_tablebase < 0) {
1106
1110
  this.$showAlert(`底数不能小于0,请注意!`, 'warning', 2000)
1107
1111
  return
1108
- } else if (this.danhu.f_tablebase - parseInt(this.danhu.f_tablebase) !== 0) {
1109
- this.$showAlert(`底数只能输入整数,请注意!`, 'warning', 2000)
1112
+ } else if (this.danhu.f_tablebase.toString().split(".")[1].length>3) {
1113
+ this.$showAlert(`底数最多只能输入小数点后3位,请注意!`, 'warning', 2000)
1110
1114
  return
1111
1115
  } else if (this.danhu.f_tablebase < this.danhu.info.f_tablebase && !this.danhu.info.f_capacity) {
1112
1116
  this.$showAlert(`本期表底数不能低于上期表底数`, 'warning', 2000)
@@ -1470,10 +1474,10 @@
1470
1474
  row.state = '失败'
1471
1475
  Vue.set(row, 'error', '底数不能小于0')
1472
1476
  this.speckText('底数不能小于0,请注意!')
1473
- } else if (row.f_tablebase - parseInt(row.f_tablebase) !== 0) {
1477
+ } else if (row.f_tablebase.toString().split(".")[1].length>3) {
1474
1478
  row.state = '失败'
1475
- Vue.set(row, 'error', '底数只能输入整数')
1476
- this.speckText('底数只能输入整数,请注意!')
1479
+ Vue.set(row, 'error', '底数最多只能输入小数点后3位')
1480
+ this.speckText('底数最多只能输入小数点后3位,请注意!')
1477
1481
  } else if (row.f_tablebase < row.f_last_tablebase && !row.f_capacity) {
1478
1482
  row.state = '失败'
1479
1483
  Vue.set(row, 'error', '本期表底数不能低于上期表底数')
@@ -1810,7 +1814,7 @@
1810
1814
  if (this.row.f_price_type === '固定气价') {
1811
1815
  let price = this.$refs.mix_price.model.f_price
1812
1816
  // 可以购买的总气量
1813
- let purchaseSum = (money / price).toFixed(2)
1817
+ let purchaseSum = (money / price).toFixed(3)
1814
1818
  // 计算应抄底数
1815
1819
  this.should_base = (this.row.f_last_tablebase - 0) + (purchaseSum - 0)
1816
1820
  // 计算公式
@@ -1822,7 +1826,7 @@
1822
1826
  // 把1阶买完的钱
1823
1827
  let price1 = surplus1 * mydata.f_stair1price
1824
1828
  // 剩余2阶气量
1825
- let surplus2 = (mydata.f_stair2ceiling - mydata.f_stair1ceiling - (mydata.f_hasuse2 > 0 ? mydata.f_hasuse2 : 0)).toFixed(2)
1829
+ let surplus2 = (mydata.f_stair2ceiling - mydata.f_stair1ceiling - (mydata.f_hasuse2 > 0 ? mydata.f_hasuse2 : 0)).toFixed(3)
1826
1830
  // 把2阶买完的钱
1827
1831
  let price2 = surplus2 * mydata.f_stair2price
1828
1832
  // 兼容一下
@@ -1835,14 +1839,14 @@
1835
1839
  let purchase2 = 0
1836
1840
  let purchase3 = 0
1837
1841
  if (money <= price1) {
1838
- purchase1 = (money / mydata.f_stair1price).toFixed(2)
1842
+ purchase1 = (money / mydata.f_stair1price).toFixed(3)
1839
1843
  } else if (money <= (price1 + price2)) {
1840
1844
  purchase1 = surplus1
1841
- purchase2 = ((money - price1) / mydata.f_stair2price).toFixed(2)
1845
+ purchase2 = ((money - price1) / mydata.f_stair2price).toFixed(3)
1842
1846
  } else {
1843
1847
  purchase1 = surplus1
1844
1848
  purchase2 = surplus2
1845
- purchase3 = ((money - price1 - price2) / mydata.f_stair3price).toFixed(2)
1849
+ purchase3 = ((money - price1 - price2) / mydata.f_stair3price).toFixed(3)
1846
1850
  }
1847
1851
  // 可以购买的总气量
1848
1852
  let purchaseSum = (purchase1 - 0) + (purchase2 - 0) + (purchase3 - 0)
@@ -1851,7 +1855,7 @@
1851
1855
  // 计算公式
1852
1856
  this.designFormulas = `${purchase1}X${mydata.f_stair1price} + ${purchase2}X${mydata.f_stair2price} + ${purchase3}X${mydata.f_stair3price}`
1853
1857
  }
1854
- this.should_base = this.should_base.toFixed(2) - 0
1858
+ this.should_base = this.should_base.toFixed(3) - 0
1855
1859
  }
1856
1860
  },
1857
1861
  watch: {
@@ -43,10 +43,6 @@
43
43
  <label for="f_metertitles" class="font_normal_body">表具状态</label>
44
44
  <input type="text" class="input_search" style="width:60%" v-model="row.f_table_state" placeholder='表具状态' disabled>
45
45
  </div>
46
- <div class="col-sm-4 form-group">
47
- <label for="f_meter_base" class="font_normal_body">报警器编号</label>
48
- <input type="text" class="input_search" style="width:60%" v-model="row.f_alarm_number" placeholder='报警器编号'>
49
- </div>
50
46
  <div class="col-sm-4 form-group">
51
47
  <label for="f_meter_base" class="font_normal_body">&ensp;表&ensp;读&ensp;数</label>
52
48
  <input type="number" class="input_search" style="width:60%" v-model="row.f_meter_base" placeholder='表底数'
@@ -2,7 +2,7 @@
2
2
  <div class="auto">
3
3
  <div class="auto form-group-new row">
4
4
  <div class="col-sm-6" style="height:auto;width:49%;">
5
- <p style="font-weight: bold;margin: 0"><img src="../../../../static/mainicon/矩形1828.png"/>&nbsp;&nbsp;基本信息</p>
5
+ <p style="font-weight: bold;margin: 0"><img src="../../../static/mainicon/矩形1828.png"/>&nbsp;&nbsp;基本信息</p>
6
6
  <!-- 第一行数据-->
7
7
  <div class="col-sm-4">
8
8
  <label class="font_normal_body_new">客户编号</label>
@@ -58,7 +58,7 @@
58
58
  </div>
59
59
  </div>
60
60
  <div class="col-sm-6" style="height:auto;width:49%;">
61
- <p style="font-weight: bold;margin: 0"><img src="../../../../static/mainicon/矩形1828.png"/>&nbsp;&nbsp;表具信息</p>
61
+ <p style="font-weight: bold;margin: 0"><img src="../../../static/mainicon/矩形1828.png"/>&nbsp;&nbsp;表具信息</p>
62
62
  <div class="col-sm-4">
63
63
  <label class="font_normal_body_new">表&emsp;号&emsp;</label>
64
64
  <input class="input-underline" style="width:60%" :value="row.f_meternumber" readonly>
@@ -120,8 +120,6 @@ let FileManageService = {
120
120
  meter.f_install_person = meter.f_install_person.length > 0 ? meter.f_install_person[0] : null
121
121
  meter.f_limit_sms = meter.f_limit_sms == '' ? meter.f_limit_sms = 30 : parseInt(meter.f_limit_sms)
122
122
  meter.f_card_id = meter.f_card_id ? meter.f_card_id : null
123
- // 宝乐报警器编号
124
- meter.f_alarm_number = meter.f_alarm_number ? meter.f_alarm_number : null
125
123
  // 安城表前阀状态
126
124
  meter.f_bqf_state = meter.f_bqf_state && meter.f_bqf_state.length > 0 ? meter.f_bqf_state[0] : null
127
125
  // meter.f_aroundmeter = meter.f_aroundmeter.length > 0 ? meter.f_aroundmeter[0] : null