sale-client 3.5.150 → 3.5.152

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,195 +1,195 @@
1
- var express = require('express')
2
- var webpack = require('webpack')
3
- var config = require('./webpack.dev.conf')
4
- var proxyMiddleware = require('http-proxy-middleware')
5
- // var httpProxy = require('http-proxy')
6
-
7
- var app = express()
8
- var compiler = webpack(config)
9
- // var proxy = httpProxy.createProxyServer()
10
-
11
- // Define HTTP proxies to your custom API backend
12
- // https://github.com/chimurai/http-proxy-middleware
13
- var bendi = 'http://121.36.106.17:8400', bendi1 = 'http://121.36.106.17:8400/'
14
- // 公司测试服务
15
- // var fuwu = 'http://192.168.50.4:8400'
16
- // var fuwu = 'http://39.99.85.14:8400'
17
- var fuwu = 'http://39.108.82.124:8400'
18
- // var fuwu = 'http://47.93.217.125:8400'
19
- // var fuwu = 'http://121.36.106.17:8400/'
20
- // 铜川正式
21
- // var fuwu = 'http://61.134.55.234:9999/'
22
- // 铜川测试
23
- // var fuwu = 'http://61.134.55.234:9999/'
24
- // var fuwu = 'http://60.222.250.39:8300/'
25
- // 韶关
26
- // var fuwu = 'http://119.146.1.106:8300/'
27
- // 巩义测试服务
28
- // var fuwu = 'http://192.168.0.227:8400'
29
- // 燎原测试服务
30
- // var fuwu = 'http://121.41.19.238:8400 '
31
- // var fuwu = 'http://121.41.19.238:9001/'
32
-
33
- // var fuwu = 'http://139.214.92.34:8301/'
34
-
35
- var proxyTable = {
36
- // '/'
37
- // '/rs/logic/stopBasicLivingNew':{
38
- // target:'http://127.0.0.1:8080'
39
- // },
40
- // '/rs/logic/getBatchOperaPro':{
41
- // target:'http://127.0.0.1:8080'
42
- // },
43
- // '/rs/sql/sale_getUser':{
44
- // target:'http://127.0.0.1:8080'
45
- // },
46
- // '/rs/logic/getOperBtns':{
47
- // target:'http://127.0.0.1:8080'
48
- // },
49
- // '/rs/file/uploadFile':{
50
- // target:'http://127.0.0.1:8080'
51
- // },
52
- // '/rs/business/batchRunExcelDefault/filemanage_fileSave/newSettleFileImport':{
53
- // target:'http://127.0.0.1:8080'
54
- // },
55
- // '/rs/business/batchRunNew/BatchmachineDownHand/machineDownHand':{
56
- // target:'http:127.0.0.1:8080'
57
- // },
58
- // '/rs/sql/getDownPlan':{
59
- // target:'http:127.0.0.1:8080'
60
- // },
61
- // '/rs/logic/saleExport': {
62
- // target: fuwu
63
- // },
64
- // '/rs/logic/saleGetExportProgress': {
65
- // target: fuwu
66
- // },
67
- // '/rs/logic/getWarningMsg': {
68
- // target: 'http://localhost:8080/'
69
- // },
70
- '/rs/file': {
71
- target: fuwu
72
- },
73
- '/files': {
74
- target: fuwu
75
- },
76
- // 查找资源服务数据
77
- '/rs/search': {
78
- target: fuwu
79
- },
80
- // 查找资源服务数据
81
- '/rs/logic/getLogin': {
82
- target: fuwu
83
- },
84
- // 查找资源服务数据
85
- '/rs/logic/getInitData': {
86
- target: fuwu
87
- },
88
- '/rs/logic/getSaleInitData': {
89
- target: fuwu
90
- },
91
- '/invoice': {
92
- target: fuwu
93
- },
94
- // 用户登录服务地址
95
- '/rs/user': {
96
- target: fuwu
97
- },
98
- '/rs/path/getParams': {
99
- target: fuwu
100
- },
101
- '/rs/data': {
102
- target: fuwu
103
- },
104
- '/rs/license': {
105
- target: fuwu
106
- },
107
- '/rs/db': {
108
- target: fuwu
109
- },
110
- '/excel': {
111
- target: fuwu
112
- },
113
- '/rs/config': {
114
- target: fuwu
115
- },
116
- '/rs/sql/getLicenseById': {
117
- target: fuwu
118
- },
119
- '/rs/sql/manage_getarealist': {
120
- target: fuwu
121
- },
122
- '/rs/sql/manage_getstreetlist': {
123
- target: fuwu
124
- },
125
- '/rs/report': {
126
- target: 'http://121.36.106.17:8400/'
127
- },
128
- '/rs/vue': {
129
- target: fuwu
130
- },
131
- '/webmeter': {
132
- target: 'http://192.168.50.4:8450'
133
- },
134
- '/rs': {
135
- // target: 'http://192.168.30.63:8081/'
136
- // target: 'http://121.36.106.17:8400/'
137
- target: fuwu
138
- }
139
- }
140
-
141
- var devMiddleware = require('webpack-dev-middleware')(compiler, {
142
- publicPath: config.output.publicPath,
143
- stats: {
144
- colors: true,
145
- chunks: false
146
- }
147
- })
148
-
149
- var hotMiddleware = require('webpack-hot-middleware')(compiler)
150
- // force page reload when html-webpack-plugin template changes
151
- compiler.plugin('compilation', function (compilation) {
152
- compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
153
- hotMiddleware.publish({action: 'reload'})
154
- cb()
155
- })
156
- })
157
-
158
- // proxy api requests
159
- Object.keys(proxyTable).forEach(function (context) {
160
- var options = proxyTable[context]
161
- if (typeof options === 'string') {
162
- options = {target: options}
163
- }
164
- app.use(proxyMiddleware(context, options))
165
- })
166
-
167
- // handle fallback for HTML5 history API
168
- app.use(require('connect-history-api-fallback')())
169
- // app.use(function (req, res, next) {
170
- // res.header('Access-Control-Allow-Origin', '*')
171
- // res.header('Access-Control-Allow-Headers', 'X-Requested-With')
172
- // res.header('Access-Control-Allow-Methods', 'PUT, POST, GET,DELETE, OPTIONS')
173
- // res.header('X-Powered-By', '3,2,1')
174
- // res.header('Access-Control-Allow-Credentials', 'true')
175
- // res.header('Content-Type', 'application/json;charset=utf-8')
176
- // next()
177
- // })
178
-
179
- // serve webpack bundle output
180
- app.use(devMiddleware)
181
-
182
- // enable hot-reload and state-preserving
183
- // compilation error display
184
- app.use(hotMiddleware)
185
-
186
- // serve pure static assets
187
- app.use('/static', express.static('./static'))
188
-
189
- module.exports = app.listen(8089, function (err) {
190
- if (err) {
191
- console.log(err)
192
- return
193
- }
194
- console.log('Listening at http://localhost:8089')
195
- })
1
+ var express = require('express')
2
+ var webpack = require('webpack')
3
+ var config = require('./webpack.dev.conf')
4
+ var proxyMiddleware = require('http-proxy-middleware')
5
+ // var httpProxy = require('http-proxy')
6
+
7
+ var app = express()
8
+ var compiler = webpack(config)
9
+ // var proxy = httpProxy.createProxyServer()
10
+
11
+ // Define HTTP proxies to your custom API backend
12
+ // https://github.com/chimurai/http-proxy-middleware
13
+ var bendi = 'http://121.36.106.17:8400', bendi1 = 'http://121.36.106.17:8400/'
14
+ // 公司测试服务
15
+ // var fuwu = 'http://192.168.50.4:8400'
16
+ // var fuwu = 'http://39.99.85.14:8400'
17
+ var fuwu = 'http://121.36.60.63:8800/'
18
+ // var fuwu = 'http://47.93.217.125:8400'
19
+ // var fuwu = 'http://121.36.106.17:8400/'
20
+ // 铜川正式
21
+ // var fuwu = 'http://61.134.55.234:9999/'
22
+ // 铜川测试
23
+ // var fuwu = 'http://61.134.55.234:9999/'
24
+ // var fuwu = 'http://60.222.250.39:8300/'
25
+ // 韶关
26
+ // var fuwu = 'http://119.146.1.106:8300/'
27
+ // 巩义测试服务
28
+ // var fuwu = 'http://192.168.0.227:8400'
29
+ // 燎原测试服务
30
+ // var fuwu = 'http://121.41.19.238:8400 '
31
+ // var fuwu = 'http://121.41.19.238:9001/'
32
+
33
+ // var fuwu = 'http://139.214.92.34:8301/'
34
+
35
+ var proxyTable = {
36
+ // '/'
37
+ // '/rs/logic/stopBasicLivingNew':{
38
+ // target:'http://127.0.0.1:8080'
39
+ // },
40
+ // '/rs/logic/getBatchOperaPro':{
41
+ // target:'http://127.0.0.1:8080'
42
+ // },
43
+ // '/rs/sql/sale_getUser':{
44
+ // target:'http://127.0.0.1:8080'
45
+ // },
46
+ // '/rs/logic/getOperBtns':{
47
+ // target:'http://127.0.0.1:8080'
48
+ // },
49
+ // '/rs/file/uploadFile':{
50
+ // target:'http://127.0.0.1:8080'
51
+ // },
52
+ // '/rs/business/batchRunExcelDefault/filemanage_fileSave/newSettleFileImport':{
53
+ // target:'http://127.0.0.1:8080'
54
+ // },
55
+ // '/rs/business/batchRunNew/BatchmachineDownHand/machineDownHand':{
56
+ // target:'http:127.0.0.1:8080'
57
+ // },
58
+ // '/rs/sql/getDownPlan':{
59
+ // target:'http:127.0.0.1:8080'
60
+ // },
61
+ // '/rs/logic/saleExport': {
62
+ // target: fuwu
63
+ // },
64
+ // '/rs/logic/saleGetExportProgress': {
65
+ // target: fuwu
66
+ // },
67
+ // '/rs/logic/getWarningMsg': {
68
+ // target: 'http://localhost:8080/'
69
+ // },
70
+ '/rs/file': {
71
+ target: fuwu
72
+ },
73
+ '/files': {
74
+ target: fuwu
75
+ },
76
+ // 查找资源服务数据
77
+ '/rs/search': {
78
+ target: fuwu
79
+ },
80
+ // 查找资源服务数据
81
+ '/rs/logic/getLogin': {
82
+ target: fuwu
83
+ },
84
+ // 查找资源服务数据
85
+ '/rs/logic/getInitData': {
86
+ target: fuwu
87
+ },
88
+ '/rs/logic/getSaleInitData': {
89
+ target: fuwu
90
+ },
91
+ '/invoice': {
92
+ target: fuwu
93
+ },
94
+ // 用户登录服务地址
95
+ '/rs/user': {
96
+ target: fuwu
97
+ },
98
+ '/rs/path/getParams': {
99
+ target: fuwu
100
+ },
101
+ '/rs/data': {
102
+ target: fuwu
103
+ },
104
+ '/rs/license': {
105
+ target: fuwu
106
+ },
107
+ '/rs/db': {
108
+ target: fuwu
109
+ },
110
+ '/excel': {
111
+ target: fuwu
112
+ },
113
+ '/rs/config': {
114
+ target: fuwu
115
+ },
116
+ '/rs/sql/getLicenseById': {
117
+ target: fuwu
118
+ },
119
+ '/rs/sql/manage_getarealist': {
120
+ target: fuwu
121
+ },
122
+ '/rs/sql/manage_getstreetlist': {
123
+ target: fuwu
124
+ },
125
+ '/rs/report': {
126
+ target: 'http://121.36.106.17:8400/'
127
+ },
128
+ '/rs/vue': {
129
+ target: fuwu
130
+ },
131
+ '/webmeter': {
132
+ target: 'http://192.168.50.4:8450'
133
+ },
134
+ '/rs': {
135
+ // target: 'http://192.168.30.63:8081/'
136
+ // target: 'http://121.36.106.17:8400/'
137
+ target: fuwu
138
+ }
139
+ }
140
+
141
+ var devMiddleware = require('webpack-dev-middleware')(compiler, {
142
+ publicPath: config.output.publicPath,
143
+ stats: {
144
+ colors: true,
145
+ chunks: false
146
+ }
147
+ })
148
+
149
+ var hotMiddleware = require('webpack-hot-middleware')(compiler)
150
+ // force page reload when html-webpack-plugin template changes
151
+ compiler.plugin('compilation', function (compilation) {
152
+ compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
153
+ hotMiddleware.publish({action: 'reload'})
154
+ cb()
155
+ })
156
+ })
157
+
158
+ // proxy api requests
159
+ Object.keys(proxyTable).forEach(function (context) {
160
+ var options = proxyTable[context]
161
+ if (typeof options === 'string') {
162
+ options = {target: options}
163
+ }
164
+ app.use(proxyMiddleware(context, options))
165
+ })
166
+
167
+ // handle fallback for HTML5 history API
168
+ app.use(require('connect-history-api-fallback')())
169
+ // app.use(function (req, res, next) {
170
+ // res.header('Access-Control-Allow-Origin', '*')
171
+ // res.header('Access-Control-Allow-Headers', 'X-Requested-With')
172
+ // res.header('Access-Control-Allow-Methods', 'PUT, POST, GET,DELETE, OPTIONS')
173
+ // res.header('X-Powered-By', '3,2,1')
174
+ // res.header('Access-Control-Allow-Credentials', 'true')
175
+ // res.header('Content-Type', 'application/json;charset=utf-8')
176
+ // next()
177
+ // })
178
+
179
+ // serve webpack bundle output
180
+ app.use(devMiddleware)
181
+
182
+ // enable hot-reload and state-preserving
183
+ // compilation error display
184
+ app.use(hotMiddleware)
185
+
186
+ // serve pure static assets
187
+ app.use('/static', express.static('./static'))
188
+
189
+ module.exports = app.listen(8089, function (err) {
190
+ if (err) {
191
+ console.log(err)
192
+ return
193
+ }
194
+ console.log('Listening at http://localhost:8089')
195
+ })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.5.150",
3
+ "version": "3.5.152",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -58,7 +58,7 @@
58
58
  <footer slot="modal-footer" class="modal-footer">
59
59
  </footer>
60
60
  </modal>
61
- <high-meter-idcard :show.sync="highmetershow" v-if="highmetershow" @photo-finish="newPhoto" v-on:confirminfo="confirmIdCard"></high-meter-idcard>
61
+ <high-meter :show.sync="highmetershow" v-if="highmetershow" @photo-finish="newPhoto" v-on:confirminfo="confirmIdCard"></high-meter>
62
62
 
63
63
  <modal :show.sync="filechangeDetailsShow" v-ref:filechangeDetailsShow backdrop="false" class="filechangeDetailsShow">
64
64
  <header slot="modal-header" class="modal-header" style="text-align: center">
@@ -333,28 +333,15 @@ export default {
333
333
  if (!this.filechangeDetailsShow) this.confirmation()
334
334
  },
335
335
  confirmation () {
336
- // 权限判断, 没有修改权限,只可以修改电话
337
- // if (this.filechangeDetailsShow && this.filechangeDetails.rows.find(value => value.f_field_name != '用户电话')) {
338
- // if (!this.$login.r.find(value => value == '档案信息查询修改')) {
339
- // this.$showMessage('当前登陆用户没有档案信息查询修改权限, 只能修改用户电话!')
340
- // return
341
- // }
342
- // }
343
336
  if (this.fileSaveData.reason && this.fileSaveData.reason !== '其他') {
344
337
  this.fileSaveData.modifyReason = this.fileSaveData.reason
345
338
  }
346
- //console.log('row-------->', this.row)
347
- //console.log('this.filechangeDetails.rows:-----',this.filechangeDetails.rows)
348
- for (let i = 0;i< this.filechangeDetails.rows.length;i++) {
349
- //console.log('循环查看row里面的值---------->',this.filechangeDetails.rows[i])
350
- //console.log('循环查看修改项---------->',this.filechangeDetails.rows[i].f_field_name)
339
+ for (let i = 0; i < this.filechangeDetails.rows.length; i++) {
351
340
  if (this.filechangeDetails.rows[i].f_field_name === '通气日期') {
352
- //console.log('----------有通气日期就进来------------')
353
341
  let name = this.$login.f.name
354
342
  let nameId = this.$login.f.id
355
343
  let parentname = this.$login.f.deps
356
344
  let parentnameId = this.$login.f.depids
357
- console.log('验证进来了--------------->', name, parentname)
358
345
  this.fileSaveData.userinfo.f_operator = name
359
346
  this.fileSaveData.userinfo.f_operatorid = nameId
360
347
  this.fileSaveData.userinfo.f_depname = parentname
@@ -53,11 +53,24 @@
53
53
  </template>
54
54
 
55
55
  <script>
56
+ import {HttpResetClass} from "vue-client";
57
+
56
58
  let postGen = async function (self, name) {
57
59
  let url = 'rs/logic/' + name
58
-
60
+ let res
59
61
  // 获取冲正后的记录
60
- let res = await self.$CancelService.cancel(url, self.model, self.data)
62
+ if (name == 'batchPaymentCancel') {
63
+ // 批量的使用进度条模式
64
+ self.model.uuid = self.$login.guid()
65
+ try {
66
+ await self.$CancelService.cancel(url, self.model, self.data, true)
67
+ } catch (e) {}
68
+ self.$showMessage(`正在批量处理中, 请耐心等待...`, [])
69
+ self.getProgress()
70
+ return
71
+ } else {
72
+ res = await self.$CancelService.cancel(url, self.model, self.data)
73
+ }
61
74
  console.log('冲正后的记录。。', res, self.model)
62
75
 
63
76
  // 判断需不需要判断冲正发票(发票管理)
@@ -180,13 +193,32 @@
180
193
  },
181
194
  // 启用发票管理需要对票号进行验证
182
195
  hasValidateBill: false,
183
- validateOk: false
196
+ validateOk: false,
197
+ // 请求对象(批量导入,查询进度使用)
198
+ HttpReset: new HttpResetClass(),
199
+ timer: null
184
200
  }
185
201
  },
186
202
  ready () {
187
203
  readyGen(this)
188
204
  },
189
205
  methods: {
206
+ getProgress () {
207
+ // 启动定时器定时查询处理结果
208
+ this.timer = setInterval(async () => {
209
+ let res = await this.HttpReset.load('POST', 'rs/logic/getBatchOperaPro', {data: {uuid: this.model.uuid}}, {resolveMsg: null, rejectMsg: null})
210
+ if (res.data.msg || res.data.error) {
211
+ clearInterval(this.timer)
212
+ this.$closeMessage()
213
+ if (res.data.error) {
214
+ this.$showAlert(`${res.data.error}`, 'danger')
215
+ return
216
+ }
217
+ await this.$showMessage(res.data.msg)
218
+ this.$dispatch('cancel-success')
219
+ }
220
+ }, 5000)
221
+ },
190
222
  confirm () {
191
223
  // 整理数据
192
224
  let name = this.sortdata()
@@ -51,6 +51,9 @@
51
51
  <saletab header="指令查看" v-if="row.f_meter_type.includes('物联网表')&&permission('指令查看')">
52
52
  <query-instruct :row="row" v-if="show == '指令查看'" @deal-msg="dealMsg"></query-instruct>
53
53
  </saletab>
54
+ <saletab header="历史指令查看" v-if="row.f_meter_type.includes('物联网表')&&permission('历史指令查看')">
55
+ <query-history-instruct :row="row" v-if="show == '历史指令查看'" @deal-msg="dealMsg"></query-history-instruct>
56
+ </saletab>
54
57
  <saletab header="异常报警" v-if="row.f_meter_type.includes('物联网表')&&permission('异常报警')">
55
58
  <watch-warning :row="row" v-if="show == '异常报警'" @deal-msg="dealMsg"></watch-warning>
56
59
  </saletab>
@@ -91,6 +94,7 @@
91
94
  import MachineRecordQuery from './ic_detail/MachineRecordQuery'
92
95
  // 导入物联网相关查询
93
96
  import QueryInstruct from './iot_detail/QueryInstruct'
97
+ import QueryHistoryInstruct from './iot_detail/QueryHistoryInstruct'
94
98
  import WatchCollection from './iot_detail/WatchCollection'
95
99
  import WatchWarning from './iot_detail/WatchWarning'
96
100
  import PriceChangeQueryUser from './ic_detail/PriceChangeQueryUser'
@@ -117,6 +121,7 @@ export default {
117
121
  WatchWarning,
118
122
  WatchCollection,
119
123
  QueryInstruct,
124
+ QueryHistoryInstruct,
120
125
  ChangeRecord,
121
126
  CardHandRecord,
122
127
  MeterParam,
@@ -0,0 +1,304 @@
1
+ <template>
2
+ <div @keyup.enter="search" class="span">
3
+ <criteria-paged :model="model" class="list_area table_sy" v-ref:paged>
4
+ <criteria @condition-changed='$parent.search' partial='criteria' v-ref:criteria>
5
+ <div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
6
+ <div class="row">
7
+
8
+ <div class="col-sm-2 form-group">
9
+ <label class="font_normal_body">指令类型</label>
10
+ <v-select :options='$parent.$parent.instructType' :value.sync="model.f_instruct_type"
11
+ close-on-select
12
+ condition="f_instruct_type='{}'"
13
+ placeholder='指令类型'
14
+ style="width: 60%"
15
+ v-model="model.f_instruct_type"></v-select>
16
+ </div>
17
+ <div class="col-sm-2 form-group">
18
+ <label class="font_normal_body">指令状态</label>
19
+ <v-select :options='$parent.$parent.instructState' :value.sync="model.f_instruct_state"
20
+ close-on-select
21
+ condition="f_instruct_state='{}'"
22
+ placeholder='指令状态'
23
+ style="width: 60%"
24
+ v-model="model.f_instruct_state"
25
+ ></v-select>
26
+ </div>
27
+
28
+ <div class="col-sm-2 form-group">
29
+ <label class="font_normal_body">开始时间</label>
30
+ <datepicker :format="'yyyy-MM-dd HH:mm:ss'"
31
+ :value.sync="model.f_start_date"
32
+ class="datepicker"
33
+ condition="f_instruct_date > '{}'"
34
+ placeholder="起始时间"
35
+ style="width: 60%"
36
+ v-model="model.f_start_date"
37
+ ></datepicker>
38
+ </div>
39
+ <div class="col-sm-2 form-group">
40
+ <label class="font_normal_body">结束时间</label>
41
+ <datepicker :format="'yyyy-MM-dd HH:mm:ss'"
42
+ :value.sync="model.f_end_date"
43
+ class="datepicker"
44
+ condition="f_instruct_date < '{}'"
45
+ placeholder="结束时间"
46
+ style="width: 60%"
47
+ v-model="model.f_end_date"
48
+ ></datepicker>
49
+ </div>
50
+ <div style="float: right">
51
+ <button @click="search()" class="button_search" v-el:cba>查询</button>
52
+ </div>
53
+ </div>
54
+
55
+ </div>
56
+ </criteria>
57
+ <data-grid :model="model" class="list_area table_sy" partial='list' v-ref:grid>
58
+ <template partial='head'>
59
+ <tr>
60
+ <th style="text-align:center;">
61
+ <nobr>指令类型</nobr>
62
+ </th>
63
+ <th style="text-align:center;">
64
+ <nobr>指令内容</nobr>
65
+ </th>
66
+ <th style="text-align:center;">
67
+ <nobr>指令状态</nobr>
68
+ </th>
69
+ <th style="text-align:center;">
70
+ <nobr>指令生成时间</nobr>
71
+ </th>
72
+ <th style="text-align:center;">
73
+ <nobr>指令发送时间</nobr>
74
+ </th>
75
+ <th style="text-align:center;">
76
+ <nobr>指令上表时间</nobr>
77
+ </th>
78
+ <th style="text-align:center;">
79
+ <nobr>操作人</nobr>
80
+ </th>
81
+ <th style="text-align:center;">
82
+ <nobr>操作时间(记录)</nobr>
83
+ </th>
84
+ <th style="text-align:center;">
85
+ <nobr>操作类型</nobr>
86
+ </th>
87
+ <!-- 查这里-->
88
+ <th style="text-align:center;">
89
+ <nobr>操作状态</nobr>
90
+ </th>
91
+ <th style="text-align:center;">
92
+ <nobr>操作人(记录)</nobr>
93
+ </th>
94
+ <th style="text-align:center;">
95
+ <nobr>操作内容</nobr>
96
+ </th>
97
+ <th style="text-align:center;">
98
+ <nobr>操作/指令状态</nobr>
99
+ </th>
100
+ <!--<th style="text-align:center;"><nobr>发送原因</nobr></th>
101
+ <th style="text-align:center;"><nobr>取消原因</nobr></th>-->
102
+ <th style="text-align:center;">
103
+ <nobr>备注信息</nobr>
104
+ </th>
105
+ </tr>
106
+ </template>
107
+ <template partial='body'>
108
+ <tr>
109
+ <td style="text-align:center;">
110
+ <nobr>{{row.f_instruct_type}}</nobr>
111
+ </td>
112
+ <td style="text-align:center;">
113
+ <nobr>{{row.f_instruct_title}}</nobr>
114
+ </td>
115
+ <td style="text-align:center;">
116
+ <nobr>{{row.f_instruct_state}}</nobr>
117
+ </td>
118
+ <td style="text-align:center;">
119
+ <nobr>{{row.f_instruct_date}}</nobr>
120
+ </td>
121
+ <td style="text-align:center;">
122
+ <nobr>{{row.f_send_date}}</nobr>
123
+ </td>
124
+ <td style="text-align:center;">
125
+ <nobr>{{row.f_callback_date}}</nobr>
126
+ </td>
127
+ <td style="text-align:center;">
128
+ <nobr>{{row.f_inputtor}}</nobr>
129
+ </td>
130
+ <td style="text-align:center;">
131
+ <nobr>{{row.f_operate_date}}</nobr>
132
+ </td>
133
+ <td style="text-align:center;">
134
+ <nobr>{{row.f_type}}</nobr>
135
+ </td>
136
+ <!-- 这里-->
137
+ <td style="text-align:center;">
138
+ <nobr>{{$parent.$parent.$parent.stateFlow(row)}}</nobr>
139
+ <!-- <nobr>{{row.f_state}}</nobr>-->
140
+ </td>
141
+ <td style="text-align:center;">
142
+ <nobr>{{row.f_operator}}</nobr>
143
+ </td>
144
+ <td style="text-align:center;">
145
+ <nobr>{{row.f_operator_data}}</nobr>
146
+ </td>
147
+ <td style="text-align:center;" v-if="row.f_instruct_state === '待发送' && row.f_instruct_state !== '取消发送'">
148
+ <nobr>
149
+ {{row.f_instruct_state}}
150
+ </nobr>
151
+ </td>
152
+ <td style="text-align:center;" v-if="row.f_instruct_state !== '待发送' && row.f_instruct_state !== '取消发送'">
153
+ <nobr>
154
+ {{row.f_receive_state}}
155
+ </nobr>
156
+ </td>
157
+ <td style="text-align:center;" v-if="row.f_instruct_state === '取消发送'">
158
+ <nobr>
159
+ <span title="操作人:{{row.f_cancel_inputtor}},操作原因:{{row.f_comments}}">已取消</span>
160
+ </nobr>
161
+ </td>
162
+ <!-- <td style="text-align:center;"><nobr>{{row.f_info}}</nobr></td>
163
+ <td style="text-align:center;"><nobr>{{row.f_comments}}</nobr></td>-->
164
+ <td style="text-align:center;">
165
+ <nobr><span >{{row.f_info}}</span></nobr>
166
+ </td>
167
+ </tr>
168
+ </template>
169
+ </data-grid>
170
+ </criteria-paged>
171
+ <modal :show.sync="handcental" backdrop="false" v-ref:modal>
172
+ <header class="modal-header" slot="modal-header">
173
+ <h4 class="modal-title">取消发送</h4>
174
+ </header>
175
+ <article class="modal-body" slot="modal-body">
176
+ <div class="form-group">
177
+ <label class="font_normal_body" >取消发送原因</label>
178
+ <textarea class="form-control" placeholder="请填写取消发送原因" rows="3" v-model="cancelreason"></textarea>
179
+ </div>
180
+ </article>
181
+ <footer class="modal-footer" slot="modal-footer">
182
+ <button @click='close' class="btn btn-default" type="button" v-show="handcental">取消</button>
183
+ <button @click='confirmcenta()' class="button_search" type="button" v-show="handcental">确认</button>
184
+ </footer>
185
+ </modal>
186
+ </div>
187
+
188
+ </template>
189
+ <script>
190
+ import {PagedList} from 'vue-client'
191
+
192
+ export default {
193
+ title: '历史指令查看',
194
+ name: 'QueryHistorylnstruct',
195
+ props: {
196
+ row: {},
197
+ tablename: {
198
+ type: String,
199
+ default: 't_instruct'
200
+ },
201
+ orderitem: {
202
+ type: String,
203
+ default: 'f_instruct_date desc'
204
+ },
205
+ items: {
206
+ type: String,
207
+ default: '*'
208
+ }
209
+ },
210
+ data () {
211
+ return {
212
+ handcental: false,
213
+ cancelreason: '',
214
+ cancelid: '',
215
+ f_userfiles_id: '',
216
+ model: new PagedList('rs/sql/insturctDetailHistoryQuery', 30),
217
+ row: null,
218
+ searchshow: false,
219
+ show: false
220
+ }
221
+ },
222
+
223
+ ready () {
224
+ this.$refs.paged.$refs.criteria.search()
225
+ },
226
+ watch: {
227
+ 'row' (val) {
228
+ this.f_userfiles_id = val.f_userfiles_id
229
+ if (this.row != null) {
230
+ this.$refs.paged.$refs.criteria.search()
231
+ }
232
+ }
233
+ },
234
+ methods: {
235
+ stateFlow: function (row) {
236
+ console.log(row)
237
+ let state = ""
238
+ if (row.f_instruct_type.includes("阀门控制")) {
239
+ let content = JSON.parse(row.f_instruct_content)
240
+ if (content.isOpen !== null) {
241
+ if (content.isOpen === 1) {
242
+ state = "开阀"
243
+ } else if (content.isOpen === 0) {
244
+ state = "关阀"
245
+ } else {
246
+ state = row.f_state
247
+ }
248
+ return state
249
+ }
250
+ } else {
251
+ return row.f_state
252
+ }
253
+ },
254
+ clickshow () {
255
+ this.searchshow = !this.searchshow
256
+ },
257
+ backSend (megrow) {
258
+ if (megrow.f_inputtor != '系统必需') {
259
+ this.handcental = true
260
+ this.cancelid = megrow.id
261
+ } else {
262
+ this.$showAlert('该指令为系统必需状态,无法取消发送。', 'warning', 3000)
263
+ }
264
+ },
265
+ confirmcenta () {
266
+ let send = {
267
+ id: this.cancelid, // 当前记录ID
268
+ f_cancel_inputtor_id: this.$login.f.id, // 撤销人id
269
+ f_cancel_inputtor: this.$login.f.name, // 撤销人姓名
270
+ f_instruct_state: '取消发送',
271
+ f_comments: this.cancelreason
272
+ }
273
+ let param = {
274
+ tablename: 't_instruct',
275
+ basedata: send
276
+ }
277
+ this.$resetpost('rs/logic/iot_saveTable', param).then(() => {
278
+ // this.params.rows.splice(index, 1)
279
+ console.log('更新成功!')
280
+ })
281
+ this.handcental = false
282
+ this.$refs.paged.$refs.criteria.search()
283
+ },
284
+ search (arg) {
285
+ arg.condition = `${arg.condition} and f_userfiles_id='${this.row.f_userfiles_id}'`
286
+ this.model.search(arg.condition, arg.model)
287
+ }
288
+ },
289
+ computed: {
290
+ instructType () {
291
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('指令类型')]
292
+ },
293
+ instructState () {
294
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('指令状态')]
295
+ }
296
+ }
297
+ }
298
+ </script>
299
+ <style>
300
+ .form-input-group label {
301
+ text-align: right;
302
+ width: auto;
303
+ }
304
+ </style>
@@ -3,7 +3,7 @@
3
3
  const Vue = require("vue");
4
4
  let specialComp = {
5
5
  // 高拍仪
6
- 'high-meter-idcard': (resolve) => { require(['./HighMeterIdCard'], resolve) },
6
+ 'high-meter': (resolve) => { require(['./HighMeterIdCard'], resolve) },
7
7
  // 物联网表收费
8
8
  'iot-meter-center': (resolve) => { require(['./IOTMeterCenter'], resolve) },
9
9
  // MISPOS支付
@@ -404,7 +404,7 @@
404
404
  config: {
405
405
  priceCalculation: false, // 划气量控制
406
406
  showupload: true, // 默认不显示附件上传组件
407
- hasPrint: false, // 默认打票
407
+ hasPrint: true, // 默认打票
408
408
  hasBillManage: false, // 默认不启用发票管理
409
409
  billType: '燃气费', // 票据类型(燃气费,其他费用,调用的发票代码不同)
410
410
  printType: '普通收据', // 收据/电子票/专用发票/国税发票
@@ -17,7 +17,8 @@
17
17
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
18
18
  <label class="font_normal_body">设备类型</label>
19
19
  <v-select :value.sync="row.f_devices_type" v-model="row.f_devices_type"
20
- :options='devicetypes' placeholder='设备类型' :value-single="true"
20
+ :options='row.devicetypes' placeholder='设备类型' :value-single="true"
21
+ @change="deviceTypeChange($index, row)"
21
22
  close-on-select></v-select>
22
23
  </div>
23
24
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
@@ -27,7 +28,7 @@
27
28
  </div>
28
29
  </div>
29
30
  <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="col-sm-6 form-group" style="padding-right: 5px;" :class="[!row.f_brand && (row.f_devices_type == '燃气壁挂炉' || row.f_devices_type == '燃气热水器') ? 'has-error' : '']">
31
32
  <label class="font_normal_body">设备品牌</label>
32
33
  <v-select :value.sync="row.f_brand" v-model="row.f_brand"
33
34
  :options='devicebrands' placeholder='设备品牌' :value-single="true"
@@ -39,6 +40,21 @@
39
40
  placeholder='设备型号' :id="$index+'devicesmodel'">
40
41
  </div>
41
42
  </div>
43
+ <div class="row auto" style="margin-top: 10px;margin-left: 10px;">
44
+ <div class="col-sm-6 form-group" style="padding-right: 5px;" v-if="row.f_devices_type.indexOf('燃气报警装置') !== -1">
45
+ <label class="font_normal_body">转接头型号</label>
46
+ <input type="text" class="input_search" style="width:60%" v-model="row.f_conn_model"
47
+ placeholder='转接头型号' :id="$index+'f_conn_model'">
48
+ </div>
49
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
50
+ <label class="font_normal_body">备案日期</label>
51
+ <datepicker placeholder="备案日期" style="width: 60%"
52
+ v-model="row.f_filing_date"
53
+ :value.sync="row.f_filing_date"
54
+ :format="'yyyy-MM-dd HH:mm:ss'">
55
+ </datepicker>
56
+ </div>
57
+ </div>
42
58
  <div class="row auto" style="margin-left: 10px;">
43
59
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
44
60
  <label class="font_normal_body">施工单位</label>
@@ -55,7 +71,7 @@
55
71
  </div>
56
72
  </div>
57
73
  <div class="row auto" style="margin-left: 10px;">
58
- <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' : '']">
74
+ <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' : '']">
59
75
  <label class="font_normal_body">安装人&nbsp;&nbsp;&nbsp;</label>
60
76
  <!-- <input type="text" class="input_search" style="width:60%" v-model="row.f_input_person"-->
61
77
  <!-- placeholder='安装人'>-->
@@ -63,12 +79,12 @@
63
79
  :options='installperson' placeholder='安装人' :value-single="true"
64
80
  close-on-select></v-select>
65
81
  </div>
66
- <div class="col-sm-6 form-group" style="padding-right: 5px;" :class="[row.f_devices_type == '壁挂炉' && row.f_input_date == '' ? 'has-error' : '']">
82
+ <div class="col-sm-6 form-group" style="padding-right: 5px;" :class="[row.f_devices_type == '燃气壁挂炉' && row.f_input_date == '' ? 'has-error' : '']">
67
83
  <label class="font_normal_body">安装日期</label>
68
84
  <datepicker placeholder="安装日期" style="width: 60%"
69
85
  v-model="row.f_input_date"
70
86
  :value.sync="row.f_input_date"
71
- :format="'yyyy-MM-dd'">
87
+ :format="'yyyy-MM-dd HH:mm:ss'">
72
88
  </datepicker>
73
89
  </div>
74
90
  </div>
@@ -79,7 +95,7 @@
79
95
  v-model="row.f_make_date"
80
96
  :value.sync="row.f_make_date"
81
97
  :onchange="expireDate($index)"
82
- :format="'yyyy-MM-dd'">
98
+ :format="'yyyy-MM-dd HH:mm:ss'">
83
99
  </datepicker>
84
100
  </div>
85
101
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
@@ -110,7 +126,7 @@
110
126
  :options='userdevicestate' placeholder='设备状态' :value-single="true"
111
127
  close-on-select></v-select>
112
128
  </div>
113
- <div class="col-sm-6 form-group" style="padding-right: 5px;" :class="[row.f_devices_type == '壁挂炉' && row.watchpurchase == '' ? 'has-error' : '']">
129
+ <div class="col-sm-6 form-group" style="padding-right: 5px;" :class="[row.f_devices_type == '燃气壁挂炉' && row.watchpurchase == '' ? 'has-error' : '']">
114
130
  <label class="font_normal_body">购买方式</label>
115
131
  <v-select :value.sync="row.watchpurchase" v-model="row.watchpurchase"
116
132
  :options='WatchPurchases' placeholder='购买方式' :value-single="true"
@@ -137,7 +153,7 @@
137
153
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
138
154
  <label class="font_normal_body">管道类型</label>
139
155
  <v-select :value.sync="row.f_pipe_type" v-model="row.f_pipe_type"
140
- :options='pipetypes' placeholder='管道类型' :value-single="true"
156
+ :options='row.pipetypes' placeholder='管道类型' :value-single="true"
141
157
  close-on-select></v-select>
142
158
  </div>
143
159
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
@@ -145,7 +161,7 @@
145
161
  <datepicker placeholder="连接管安装日期" style="width: 60%"
146
162
  v-model="row.f_pipeinstall_date"
147
163
  :value.sync="row.f_pipeinstall_date"
148
- :format="'yyyy-MM-dd'">
164
+ :format="'yyyy-MM-dd HH:mm:ss'">
149
165
  </datepicker>
150
166
  </div>
151
167
  </div>
@@ -155,7 +171,7 @@
155
171
  <datepicker placeholder="连接管到期日期" style="width: 60%"
156
172
  v-model="row.f_pipeexpire_date"
157
173
  :value.sync="row.f_pipeexpire_date"
158
- :format="'yyyy-MM-dd'">
174
+ :format="'yyyy-MM-dd HH:mm:ss'">
159
175
  </datepicker>
160
176
  </div>
161
177
  <div class="col-sm-6 form-group" style="padding-right: 5px;">
@@ -165,6 +181,14 @@
165
181
  placeholder='米数'>
166
182
  </div>
167
183
  </div>
184
+ <div class="row auto" style="margin-left: 10px;">
185
+ <div class="col-sm-6 form-group" style="padding-right: 5px;">
186
+ <label class="font_normal_body">材质</label>
187
+ <input type="text" class="input_search" style="width:60%" v-model="row.f_pipe_material"
188
+ :value.sync="row.f_pipe_material"
189
+ placeholder='材质'>
190
+ </div>
191
+ </div>
168
192
  </form>
169
193
  <img :src="imgdelete" alt="图片加载失败" class="img-rounded"
170
194
  style="width: 60px;padding: 20px;margin-left: -15px;cursor: pointer;"
@@ -252,7 +276,8 @@ export default {
252
276
  imgadd: '../../../images/mainicon/adddevice.png',
253
277
  devicetypes: this.$appdata.getParam('设备类型'),
254
278
  devicebrands: this.$appdata.getParam('设备品牌'),
255
- pipetypes: this.$appdata.getParam('管道类型'),
279
+ pipetypes:[],
280
+ pipetypeparams: this.$appdata.getParam('管道类型'),
256
281
  WatchPurchases: this.$appdata.getParam('购买方式'),
257
282
  installperson: this.$appdata.getParam('安装人'),
258
283
  installtype: this.$appdata.getParam('安装方式'),
@@ -280,6 +305,25 @@ export default {
280
305
  computed: {
281
306
  },
282
307
  methods: {
308
+ deviceTypeChange(index, row){
309
+ row.pipetypes = []
310
+ this.devicesinfo[index].f_pipe_type = ''
311
+ if (this.devicesinfo[index].f_devices_type !== '' && this.devicesinfo[index].f_devices_type !== null) {
312
+ if (row.f_devices_type === '燃气计量装置'){
313
+ row.pipetypes.push(
314
+ {label: '燃气连接管', value: '燃气连接管'}
315
+ )
316
+ }
317
+ for (let item of this.pipetypeparams) {
318
+ if (item.label.indexOf(row.f_devices_type) !== -1){
319
+ row.pipetypes.push(
320
+ item
321
+ )
322
+ }
323
+ }
324
+ console.log("筛选之后",row.pipetypes)
325
+ }
326
+ },
283
327
  showTableBtn () {
284
328
  this.showTable = !this.showTable
285
329
  console.log('表具信息',this.devicesinfo)
@@ -292,8 +336,11 @@ export default {
292
336
  var year = (b.getFullYear() - 0) + (this.devicesinfo[index].f_service_life - 0)
293
337
  var month = (b.getMonth() - 0) + 1
294
338
  var day = b.getDate()
339
+ let hh = b.getHours()
340
+ let mm = b.getMinutes()
341
+ let ss = b.getSeconds()
295
342
  // this.$set(this.devicesinfo, index, {f_expire_date: year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day)})
296
- this.devicesinfo[index].f_expire_date = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day)
343
+ this.devicesinfo[index].f_expire_date = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day) + ' '+ (hh < 10 ? '0'+hh : hh)+ ':' + (mm < 10 ? '0'+ mm : mm)+ ':' + (ss < 10 ? '0'+ss : ss)
297
344
  this.devicesinfoShow = false
298
345
  this.$nextTick(() => {
299
346
  this.devicesinfoShow = true
@@ -320,7 +367,9 @@ export default {
320
367
  f_devices_type: '家用灶具',
321
368
  f_input_person: this.f_input_person,
322
369
  f_userinfodevices_state: '正常',
323
- f_input_date: this.$login.toStandardTimeString()
370
+ f_input_date: this.$login.toStandardTimeString(),
371
+ devicetypes: this.$appdata.getParam('设备类型'),
372
+ pipetypes:[]
324
373
  })
325
374
  },
326
375
  closeModal () {
@@ -282,11 +282,14 @@ let CancelService = {
282
282
  },
283
283
 
284
284
  // 撤销操作
285
- async cancel (url, model, data) {
285
+ async cancel (url, model, data, batch) {
286
286
  if (data.type === '机表收费' || data.type === '物联网收费') {
287
287
  return iotchargeCancel(model, data)
288
288
  } else {
289
289
  data.f_user_id = `${data.f_user_id}`
290
+ if (batch) {
291
+ return Vue.resetpost(url, {data: {model: model, recordData: data, f: Vue.$login.f}}, {resolveMsg: null, rejectMsg: null}, 1000)
292
+ }
290
293
  return Vue.resetpost(url, {data: {model: model, recordData: data, f: Vue.$login.f}}, {resolveMsg: '撤销成功', rejectMsg: '撤销失败'})
291
294
  }
292
295
  }
@@ -669,7 +669,6 @@ let ChangeMeterService = {
669
669
  }
670
670
  if (row.f_meter_brand.includes('数码表')) {
671
671
  data.f_userinfo_id = {
672
- f_userfiles_id: row.f_userfiles_id,
673
672
  f_userinfo_id: row.f_userinfo_id,
674
673
  version: row.userinfo_version,
675
674
  f_balance: model.f_curbalance
@@ -677,7 +676,6 @@ let ChangeMeterService = {
677
676
  } else if (row.f_meter_type === '机表') {
678
677
  // delete data.chargeprice
679
678
  data.f_userinfo_id = {
680
- f_userfiles_id: row.f_userfiles_id,
681
679
  f_userinfo_id: row.f_userinfo_id,
682
680
  version: row.userinfo_version,
683
681
  f_balance: model.f_curbalance
@@ -690,7 +688,6 @@ let ChangeMeterService = {
690
688
  version: row.userinfo_version,
691
689
  f_balance: model.f_curbalance,
692
690
  userfiles: {
693
- f_userfiles_id: row.f_userfiles_id,
694
691
  f_user_id: row.f_user_id,
695
692
  f_userfiles_id: row.f_userfiles_id,
696
693
  version: row.version,
@@ -707,7 +704,6 @@ let ChangeMeterService = {
707
704
  version: row.userinfo_version,
708
705
  f_balance: model.f_curbalance,
709
706
  userfiles: {
710
- f_userfiles_id: row.f_userfiles_id,
711
707
  f_user_id: row.f_user_id,
712
708
  f_userfiles_id: row.f_userfiles_id,
713
709
  version: row.version,
@@ -718,7 +714,7 @@ let ChangeMeterService = {
718
714
  }
719
715
  } else if (row.f_meter_type === '物联网表') {
720
716
  // Vue.showAlert('此功能尚未开放,请联系开发人员', 'warning', 3000)
721
- if (row.f_show_way === '按气量') {
717
+ if (row.f_collection_type === '按气量') {
722
718
  data.f_tablebase = model.f_pregas
723
719
  data.f_last_tablebase = row.f_meter_base
724
720
  data.f_userinfo_id = {
@@ -727,13 +723,15 @@ let ChangeMeterService = {
727
723
  f_balance: 0,
728
724
  userfiles: {
729
725
  f_user_id: model.f_user_id,
730
- f_total_fee: ((model.f_totalcost - 0) + (row.f_total_fee - 0)).toFixed(2),
726
+ f_userfiles_id: row.f_userfiles_id,
727
+ f_total_gas: model.addtotal[0]==='是'?(row.f_total_gas - 0) + (model.f_pregas - 0):(row.f_total_gas - 0),
728
+ f_total_fee: model.addtotal[0]==='是'?(row.f_total_fee - 0) + (model.f_preamount - 0):(row.f_total_fee - 0),
731
729
  f_balance_gas: parseFloat(row.f_balance_gas) + parseFloat(model.f_pregas),
732
730
  // f_meter_base: parseFloat(model.f_pregas) + parseFloat(row.f_meter_base),
733
731
  version: row.version
734
732
  }
735
733
  }
736
- } if (row.f_show_way === '按金额') {
734
+ } if (row.f_collection_type === '按金额') {
737
735
  data.f_tablebase = model.f_pregas
738
736
  data.f_last_tablebase = row.f_meter_base
739
737
  data.f_userinfo_id = {
@@ -743,7 +741,7 @@ let ChangeMeterService = {
743
741
  userfiles: {
744
742
  f_userfiles_id: row.f_userfiles_id,
745
743
  f_user_id: model.f_user_id,
746
- f_total_fee: model.addtotal[0]==='是' ? ((row.f_total_fee - 0) + (model.f_collection - 0)).toFixed(2) : (row.f_total_fee - 0),
744
+ f_total_fee: model.addtotal[0]==='是'?(row.f_total_fee - 0) + (model.f_preamount - 0):(row.f_total_fee - 0),
747
745
  // f_meter_base: parseFloat(model.f_pregas) + parseFloat(row.f_meter_base),
748
746
  version: row.version
749
747
  }