sale-client 3.6.154 → 3.6.156

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.
File without changes
File without changes
@@ -1,5 +1,5 @@
1
1
  var path = require('path')
2
- const [ serverRul, localUrl ] = ['http://192.168.50.4:8400/', 'http://localhost:8080/']
2
+ const [ serverRul, localUrl ] = ['http://192.168.50.4:8400/', 'http://192.168.50.4:8400/']
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.154",
3
+ "version": "3.6.156",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -5,7 +5,8 @@
5
5
  <div class="row">
6
6
  <div class="col-sm-4 form-group " :class="[$v.f_user_name.required ? 'has-error' : '']">
7
7
  <label for="f_user_name" class="font_normal_body">*客户姓名</label>
8
- <input type="text" v-model="baseinfo.base.f_user_name" v-validate:f_user_name='{required: true }'
8
+ <input type="text" v-model="baseinfo.base.f_user_name"
9
+ v-validate:f_user_name='()=>getConfigValidate("f_user_name",true)'
9
10
  class="input_search" style="width:60%" placeholder="客户名称" v-next-el="phone">
10
11
  </div>
11
12
  <div style="" class="col-sm-4 form-group"
@@ -242,7 +243,7 @@
242
243
 
243
244
  export default {
244
245
  title: '基本信息',
245
- props: ['baseinfo', 'addressinfo', 'isedit', 'userphonelist'],
246
+ props: ['baseinfo', 'addressinfo', 'isedit', 'userphonelist', 'formconfig'],
246
247
  data () {
247
248
  return {
248
249
  showselectaddress: false,
@@ -282,6 +283,46 @@
282
283
  // this.highMeterPlugin.Stop()
283
284
  },
284
285
  methods: {
286
+ getConfigValidate (name, defaultVal) {
287
+ if (this.formconfig && this.formconfig[name]) {
288
+ let Validate = {}
289
+ if (this.formconfig[name].required) {
290
+ Object.assign(Validate, {required: true})
291
+ }
292
+ if (this.formconfig[name].minlength || this.formconfig[name].minlength === 0) {
293
+ Object.assign(Validate, {minlength: this.formconfig[name].minlength})
294
+ }
295
+ if (this.formconfig[name].maxlength) {
296
+ Object.assign(Validate, {maxlength: this.formconfig[name].maxlength})
297
+ }
298
+ console.log("==================",Validate)
299
+ return Validate
300
+ } else if (defaultVal) {
301
+ return {required: defaultVal}
302
+ }
303
+ return {}
304
+ },
305
+ getConfigShowItem (name) {
306
+ if (this.formconfig && this.formconfig[name]) {
307
+ return this.formconfig[name].showItem
308
+ } else {
309
+ return false
310
+ }
311
+ },
312
+ getConfigLabelName (name) {
313
+ if (this.formconfig && this.formconfig[name]) {
314
+ return this.formconfig[name].labelName
315
+ } else {
316
+ return ''
317
+ }
318
+ },
319
+ getConfigPlaceholder (name) {
320
+ if (this.formconfig && this.formconfig[name]) {
321
+ return this.formconfig[name].placeholder
322
+ } else {
323
+ return ''
324
+ }
325
+ },
285
326
  selectaddress () {
286
327
  this.showselectaddress = true
287
328
  this.isSelect = true
@@ -10,7 +10,7 @@
10
10
  <button class="button_search" style="width: max-content" @click="uploadPictures()">拍照</button>
11
11
  <button class="button_search" style="width: max-content" @click="openBankAccount()" v-if="data.meterinfo[0].f_user_type[0] === '非民用' && ($login.r.includes('银行开户'))">银行开户</button>
12
12
  </div>
13
- <file-user-essential-info :usertype="row?row.f_user_type:null" :userphonelist="data.baseinfo.userphonelist" :baseinfo="data.baseinfo" :addressinfo="data.addressinfo" @valid="essentialInfo = true"
13
+ <file-user-essential-info :formconfig="config.fileUserEssentialInfo" :usertype="row?row.f_user_type:null" :userphonelist="data.baseinfo.userphonelist" :baseinfo="data.baseinfo" :addressinfo="data.addressinfo" @valid="essentialInfo = true"
14
14
  @invalid="essentialInfo = false" v-ref:useressential :isedit="isedit"></file-user-essential-info>
15
15
  <file-userinfo-device :userinfodevices.sync="userinfodevices" :show_userinfodevices.sync="show_userinfodevices"
16
16
  :userinfoid='data.baseinfo.base.f_userinfo_id'></file-userinfo-device>
@@ -115,6 +115,17 @@ import UserPaperInfoTest from './UserPaperInfoTest'
115
115
  import {HttpResetClass} from 'vue-client'
116
116
  import * as Util from '../../Util'
117
117
 
118
+ let getConfigScope = async function (self, name) {
119
+ try {
120
+ let res = await self.$resetget('/rs/vue/' + name + '.json', {resolveMsg: null, rejectMsg: null, newly: true})
121
+ self.config[name] = res.data
122
+ } catch (error) {
123
+ // 忽略704,文件找不到异常
124
+ if (error.status !== 704) {
125
+ throw error
126
+ }
127
+ }
128
+ }
118
129
  let getFileGen = async function (self, data) {
119
130
  let http = new HttpResetClass()
120
131
  try {
@@ -154,7 +165,11 @@ export default {
154
165
  f_building_suffix: '栋',
155
166
  f_unit_suffix: '单元',
156
167
  f_floor_suffix: '层',
157
- f_room_suffix: '室'
168
+ f_room_suffix: '室',
169
+ fileUserEssentialInfo: {},
170
+ fileUserinfoDevice: {},
171
+ fileUserMeterInfo: {},
172
+ userPaperInfo: {}
158
173
  },
159
174
  data: {
160
175
  baseinfo: {
@@ -229,9 +244,20 @@ export default {
229
244
  }
230
245
  },
231
246
  async ready () {
232
- if (this.data.baseinfo.base.f_userinfo_id){
247
+ try {
248
+ console.log('开始获取配置文件')
249
+ // 获取配置文件 用来展示字段是否展示 是否必填
250
+ await getConfigScope(this, 'fileUserEssentialInfo')
251
+ await getConfigScope(this, 'fileUserinfoDevice')
252
+ await getConfigScope(this, 'fileUserMeterInfo')
253
+ await getConfigScope(this, 'userPaperInfo')
254
+ } catch (e) {
255
+ console.warn(e)
256
+ console.warn('获取展示配置失败,按照默认展示')
257
+ }
258
+ if (this.data.baseinfo.base.f_userinfo_id) {
233
259
  this.blodid = this.data.baseinfo.base.f_userinfo_id
234
- }else {
260
+ } else {
235
261
  this.blodid = '临时id' + Date.now()
236
262
  }
237
263
  console.log('ready,,,', this.row)
@@ -242,7 +268,7 @@ export default {
242
268
  // 将小区信息转化为综合信息的格式
243
269
  await this.areainfoInUser(this.areainfo)
244
270
  }
245
- console.log('this.blodid------------>',this.blodid)
271
+ console.log('this.blodid------------>', this.blodid)
246
272
  },
247
273
  watch: {
248
274
  async 'row' (val) {
@@ -33,6 +33,7 @@
33
33
  messText: '',
34
34
  bill: {data: ''},
35
35
  sellingData: [],
36
+ timeOut: this.$appdata.getSingleValue('打印票据间隔时间') ? this.$appdata.getSingleValue('打印票据间隔时间') : 1000,
36
37
  printControl: null
37
38
  }
38
39
  },
@@ -61,8 +62,15 @@
61
62
  for (let row of this.sellingData) {
62
63
  let bill = await this.$resetpost(this.data.billUrl, {data: {condition: row.id, operator: `'${this.data.f_operator}'`}}, {resolveMsg: null})
63
64
  this.bill.data = bill.data
64
- await this.$nextTick()
65
- await this.asyncPrint(select)
65
+ await new Promise(resolve => {
66
+ this.$nextTick(() => {
67
+ setTimeout(() => {
68
+ // 在延迟后执行打印操作
69
+ this.asyncPrint(select)
70
+ resolve()
71
+ }, parseInt(this.timeOut)) // 延迟1秒钟打印下一张票据,可以根据需要调整延迟时间
72
+ })
73
+ })
66
74
  this.printControl = null
67
75
  }
68
76
  this.$dispatch('reissue-success')
@@ -78,6 +78,10 @@
78
78
  <div class="col-sm-3">
79
79
  <p class="form-control-static">{{row.f_people_num}}</p>
80
80
  </div>
81
+ <label class="col-sm-3 control-label">备用电话</label>
82
+ <div class="col-sm-3">
83
+ <p class="form-control-static">{{row.f_rent_phone}}</p>
84
+ </div>
81
85
  </div>
82
86
  </form>
83
87
  </div>
@@ -310,7 +310,7 @@ const myMap = new Map()
310
310
 
311
311
  if (res.data.array[j].uploadday == this.files[i].days) {
312
312
  // 如果使用类型包含导入字样,则是execl文件导入的,不做显示
313
- if (res.data.array[j].fusetype && res.data.array[j].f_filetype.includes('xls')) {
313
+ if ((res.data.array[j].fusetype && res.data.array[j].f_filetype.includes('xls')) || (res.data.array[j].fusetype == '安检照片' && res.data.array[j].f_filename.includes('amr'))) {
314
314
  res.data.array[j].splice(i, 1)
315
315
  i--
316
316
  continue
@@ -226,6 +226,7 @@ export default {
226
226
  },
227
227
  ready () {
228
228
  this.getfield = this.config.excelHeaders
229
+ this.$refs.paged.$refs.cri.model.oughtfee = ['> 0']
229
230
  // this.search()
230
231
  this.readCiTiaoCard()
231
232
  },
@@ -0,0 +1,942 @@
1
+ <template>
2
+ <div class="flex-row">
3
+ <div @keyup.enter="search" class="basic-main">
4
+ <criteria-paged :model="model" v-ref:paged @sort="sort">
5
+ <criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch">
6
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
+ <modal :show.sync="$parent.$parent.upshow" width="500px" title="文件导入" v-ref:modal large backdrop="false">
8
+ <article slot="modal-body" class="modal-body">
9
+ <file-upload class="my-file-uploader " name="UploadFile" class="btn btn-success"
10
+ style="border-radius: 2px;"
11
+ action="rs/file/uploadFile" tagname="导入抄表数据" v-ref:file :headers="headers"
12
+ multiple></file-upload>
13
+ </article>
14
+ <footer slot="modal-footer" class="modal-footer">
15
+ </footer>
16
+ </modal>
17
+ <div class="row">
18
+ <div class="col-sm-2 form-group">
19
+ <label class="font_normal_body">开始日期</label>
20
+ <datepicker style="width:60%" id="startDate" placeholder="开始日期"
21
+ v-model="model.startDate"
22
+ :value.sync="model.startDate"
23
+ :format="'yyyy-MM-dd'"
24
+ :show-reset-button="true">
25
+ </datepicker>
26
+ </div>
27
+ <div class="col-sm-2 form-group">
28
+ <label class="font_normal_body">结束日期</label>
29
+ <!--<label for="endDate" class="control-label">结束日期</label>-->
30
+ <datepicker style="width:60%" id="endDate" placeholder="结束日期"
31
+ v-model="model.endDate"
32
+ :value.sync="model.endDate"
33
+ :format="'yyyy-MM-dd'"
34
+ :show-reset-button="true">
35
+ </datepicker>
36
+ </div>
37
+ <div class="col-sm-2 form-group">
38
+ <label class="font_normal_body">用户编号</label>
39
+ <input style="width:60%" type="text" class="form-control col-sm-6" v-model="model.f_userinfo_code"
40
+ condition="f_userinfo_code='{}'" placeholder='用户编号'
41
+ >
42
+ </div>
43
+
44
+ <div class="col-sm-2 form-group">
45
+ <label class="font_normal_body" style="color:red">抄表日期</label>
46
+ <!--<label for="endDate" class="control-label">结束日期</label>-->
47
+ <datepicker style="width:60%" id="handDate" placeholder="抄表日期"
48
+ v-model="$parent.$parent.handDate"
49
+ :value.sync="$parent.$parent.handDate"
50
+ :format="'yyyy-MM-dd HH:mm:ss'"
51
+ :show-reset-button="true">
52
+ </datepicker>
53
+ </div>
54
+ <!--<div class="form-group">-->
55
+ <!--<input style="width:60%" type="text" class="form-control" v-model="model.f_user_id"-->
56
+ <!--condition="f_user_id='{}'" placeholder='表编号'-->
57
+ <!--:size="model.f_user_id ? model.f_user_id.length : 3">-->
58
+ <!--</div>-->
59
+
60
+ <div class="span" style="float:right;">
61
+ <button class="button_search button_spacing" @click="search()">查询</button>
62
+ <button class="button_search button_spacing" @click="$parent.$parent.clickupshow()">抄表导入</button>
63
+ <!--<button class="button_clear button_spacing" @click="$parent.$parent.searchPrint()">抄表模板导出</button>-->
64
+ <!--<button class="btn btn-success width-100" @click="$parent.$parent.batchAudit()">批量审核</button>
65
+ -->
66
+ <export-excel
67
+ :data="{startDate: $parent.$parent.startDate, endDate: $parent.$parent.endDate, condition: $parent.$parent.model.condition,orderitem: $parent.$parent.orderitem?$parent.$parent.orderitem :'f_userinfo_code'}"
68
+ :field="$parent.$parent.getfield"
69
+ sqlurl="rs/logic/saleExport" progress="saleGetExportProgress" sql-name="cardHands"
70
+ template-name='卡表抄表导出'
71
+ :choose-col="true">
72
+ </export-excel>
73
+ <div
74
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
75
+ @click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
76
+ </div>
77
+ </div>
78
+ <div class="row" v-show="$parent.$parent.criteriaShow">
79
+ <div class="col-sm-2 form-group">
80
+ <label class="font_normal_body">&emsp;小区域</label>
81
+ <v-select :value.sync="model.f_small_area" v-model="model.f_small_area"
82
+ :options='$parent.$parent.smallareas' placeholder='小区域'
83
+ close-on-select :search='true'
84
+ condition="f_small_area = '{}'"></v-select>
85
+ </div>
86
+ <div class="col-sm-2 form-group">
87
+ <label class="font_normal_body">用户姓名</label>
88
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_user_name" placeholder='用户姓名'
89
+ condition="f_user_name like '%{}%'">
90
+ </div>
91
+ <div class="col-sm-2 form-group">
92
+ <label class="font_normal_body">用户地址</label>
93
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_address"
94
+ condition="f_address like '%{}%'" placeholder='用户地址'
95
+ >
96
+ </div>
97
+ <div class="col-sm-2 form-group">
98
+ <label class="font_normal_body">小&emsp;&emsp;区</label>
99
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_residential_area"
100
+ condition="f_residential_area like '%{}%'" placeholder='小区'
101
+ >
102
+ </div>
103
+ <div class="col-sm-2 form-group">
104
+ <label class="font_normal_body">楼&emsp;&emsp;栋</label>
105
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_building"
106
+ condition="f_building like '%{}%'" placeholder='楼栋'
107
+ >
108
+ </div>
109
+ <div class="col-sm-2 form-group">
110
+ <label class="font_normal_body">单&emsp;&emsp;元</label>
111
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_unit"
112
+ condition="f_unit like '%{}%'" placeholder='单元'
113
+ >
114
+ </div>
115
+ <div class="col-sm-2 form-group">
116
+ <label class="font_normal_body">楼&emsp;&emsp;层</label>
117
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_floor"
118
+ condition="f_floor like '%{}%'" placeholder='楼层'
119
+ >
120
+ </div>
121
+ <div class="col-sm-2 form-group">
122
+ <label class="font_normal_body">&emsp;门牌号</label>
123
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_room"
124
+ condition="f_room like '%{}%'" placeholder='门牌号'
125
+ >
126
+ </div>
127
+ <div class="col-sm-2 form-group">
128
+ <label class="font_normal_body">表&emsp;&emsp;号</label>
129
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_meternumber"
130
+ condition="f_meternumber like '%{}%'" placeholder='表号'
131
+ >
132
+ </div>
133
+ <!--</div>-->
134
+ <!--<div class="row">-->
135
+ <div class="col-sm-2 form-group">
136
+ <label class="font_normal_body">&emsp;抄表员</label>
137
+ <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
138
+ :options='$parent.$parent.inputtore' placeholder='抄表员'
139
+ close-on-select multiple="true"
140
+ ></v-select>
141
+ </div>
142
+ <div class="col-sm-2 form-group">
143
+ <label class="font_normal_body">用户类型</label>
144
+ <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
145
+ :options='$parent.$parent.usertypes' placeholder='用户类型'
146
+ close-on-select :search='true'
147
+ condition="f_user_type = '{}'"></v-select>
148
+ </div>
149
+ <div class="col-sm-2 form-group">
150
+ <label class="font_normal_body">用气性质</label>
151
+ <v-select :value.sync="model.f_gasproperties" v-model="model.f_gasproperties"
152
+ :options='$parent.$parent.gasproperties' placeholder='用气性质'
153
+ close-on-select :search='true'
154
+ condition="f_gasproperties = '{}'"></v-select>
155
+ </div>
156
+ <div class="col-sm-2 form-group">
157
+ <label class="font_normal_body">用户等级</label>
158
+ <v-select :value.sync="model.f_user_level" v-model="model.f_user_level"
159
+ :options='$parent.$parent.userlevels' placeholder='用户等级'
160
+ style="width:60%"
161
+ close-on-select
162
+ condition="f_user_level = '{}'"></v-select>
163
+ </div>
164
+ <!-- <div class="col-sm-2 form-group">
165
+ <label class="col-sm-4 font_normal_body">气价名称</label>
166
+ <v-select :value.sync="model.f_price_name"
167
+ v-model="model.f_price_name"
168
+ :options='$parent.$parent.pricenames' placeholder='气价名称'
169
+ condition="f_price_name= '{}'" class="col-sm-8"
170
+ close-on-select></v-select>
171
+ </div>-->
172
+ <div class="col-sm-2 form-group">
173
+ <label class="font_normal_body">抄表状态</label>
174
+ <v-select :value.sync="model.f_meter_state" v-model="model.f_meter_state"
175
+ :options='$parent.$parent.meterstates' placeholder='抄表状态'
176
+ close-on-select f_gasbrand_id
177
+ condition="f_meter_state {}"></v-select>
178
+ </div>
179
+ <div class="col-sm-2 form-group">
180
+ <label class="font_normal_body">气表品牌</label>
181
+ <v-select :value.sync="model.gasbrand" v-model="model.gasbrand"
182
+ :options='$parent.$parent.meterbrands' placeholder='气表品牌' close-on-select
183
+ v-model='$parent.$parent.gasbrand'
184
+ condition="f_gasbrand_id = {}"
185
+ ></v-select>
186
+ </div>
187
+ <res-select-group :show-component="['company','department','operator']" :initres="$parent.$parent.initres"
188
+ @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
189
+ <hl-downdata class="col-sm-1 form-group" :info="model"></hl-downdata>
190
+ </div>
191
+
192
+ </div>
193
+ </criteria>
194
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid id="CardHand">
195
+ <template partial='head'>
196
+ <tr>
197
+ <th>
198
+ <nobr>序号</nobr>
199
+ </th>
200
+ <!-- <th>户编号</th>-->
201
+ <!-- <th>基本信息</th>-->
202
+ <th>
203
+ <nobr>
204
+ <data-order field="f_userinfo_code" name="户编号"
205
+ :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order>
206
+ </nobr>
207
+ </th>
208
+ <th>
209
+ <nobr>
210
+ <data-order field="f_address" name="基本信息"
211
+ :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order>
212
+ </nobr>
213
+ </th>
214
+ <th>
215
+ <nobr>用户等级</nobr>
216
+ </th>
217
+ <th>
218
+ <nobr>小区</nobr>
219
+ </th>
220
+ <th>
221
+ <nobr>表号</nobr>
222
+ </th>
223
+ <th>
224
+ <nobr>抄表员</nobr>
225
+ </th>
226
+ <th>
227
+ <nobr>总购金额</nobr>
228
+ </th>
229
+ <th>
230
+ <nobr>累购气量</nobr>
231
+ </th>
232
+ <!-- <th>抄表日期</th>-->
233
+ <th>
234
+ <nobr>
235
+ <data-order field="f_hand_date" name="抄表日期"
236
+ :order.sync="$parent.$parent.$parent.orderFields.f_hand_date"></data-order>
237
+ </nobr>
238
+ </th>
239
+ <!-- <th>上次抄表日期</th>-->
240
+ <th>
241
+ <nobr>
242
+ <data-order field="f_last_hand_date" name="上次抄表日期"
243
+ :order.sync="$parent.$parent.$parent.orderFields.f_last_hand_date"></data-order>
244
+ </nobr>
245
+ </th>
246
+ <th>
247
+ <nobr>上期底数</nobr>
248
+ </th>
249
+ <th>
250
+ <nobr>本期底数</nobr>
251
+ </th>
252
+ <th>
253
+ <nobr>表状态</nobr>
254
+ </th>
255
+ <th>
256
+ <nobr>实际用量</nobr>
257
+ </th>
258
+ <th>
259
+ <nobr>剩余气量</nobr>
260
+ </th>
261
+ <th>
262
+ <nobr>瞬时流量</nobr>
263
+ </th>
264
+ <th>
265
+ <nobr>压力</nobr>
266
+ </th>
267
+ <th>
268
+ <nobr>温度</nobr>
269
+ </th>
270
+ <th>
271
+ <nobr>流量计电量</nobr>
272
+ </th>
273
+ <th>
274
+ <nobr>控制器电量</nobr>
275
+ </th>
276
+ <th>
277
+ <nobr>阀门开关</nobr>
278
+ </th>
279
+ <th>
280
+ <nobr>状态</nobr>
281
+ </th>
282
+ <th>
283
+ <nobr>操作</nobr>
284
+ </th>
285
+ <th>
286
+ <nobr>备注</nobr>
287
+ </th>
288
+ </tr>
289
+ </template>
290
+ <template partial='body'>
291
+ <td style="text-align: center;">{{$index+1}}</td>
292
+ <td style="text-align: center;">{{row.f_userinfo_code}}</td>
293
+ <td style="text-align: center;">{{row.f_user_name}}&nbsp;&nbsp;{{row.f_gasproperties}}&nbsp;&nbsp;{{row.f_user_phone}}&nbsp;&nbsp;{{row.f_address}}</td>
294
+ <td>{{row.f_user_level}}</td>
295
+ <td style="text-align: center;">{{row.f_residential_area}}</td>
296
+ <td style="text-align: center;">{{row.f_meternumber}}</td>
297
+ <td style="text-align: center;">{{row.f_inputtor}}</td>
298
+ <td style="text-align: center;">{{row.f_total_fee}}</td>
299
+ <td style="text-align: center;">{{row.f_total_gas}}</td>
300
+ <td style="text-align: center;">
301
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
302
+ 'has-success has-feedback': !row.error,
303
+ 'has-error has-feedback': row.error}"
304
+ v-if="row.f_meter_state === '未抄表'">
305
+ <datepicker id="f_hand_date" placeholder="抄表时间"
306
+ v-model="row.f_hand_date"
307
+ :value.sync="row.f_hand_date"
308
+ :format="'yyyy-MM-dd HH:mm:ss'"
309
+ :show-reset-button="true">
310
+ </datepicker>
311
+ </div>
312
+ <div v-else>
313
+ {{row.f_hand_date}}
314
+ </div></td>
315
+ <td style="text-align: center;">{{row.f_last_hand_date}}</td>
316
+ <td style="text-align: center;">{{row.f_last_tablebase}}</td>
317
+ <td style="text-align: center;">
318
+ <div class="form-group" style="margin-bottom:0px;" :class="{
319
+ 'has-success has-feedback': row.f_tablebase ? ((row.f_last_tablebase-0) <= (row.f_tablebase -0)) : false,
320
+ 'has-error has-feedback': row.f_tablebase ? ((row.f_last_tablebase-0) > (row.f_tablebase -0) ) : false}"
321
+ v-if="row.f_meter_state === '未抄表' ">
322
+ <input type="text" class="form-control" v-model="row.f_tablebase"
323
+ @blur="$parent.$parent.$parent.enter(row)"
324
+ v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
325
+ :disabled="row.state === '开始'"
326
+ @focus="$parent.$parent.$parent.clearError(row)">
327
+ </div>
328
+ <div v-else>
329
+ <span v-if="row.f_tablebase">{{row.f_tablebase}}</span>
330
+ </div>
331
+ <span v-if="row.error" style="color: red;">{{row.error}}</span>
332
+ </td>
333
+ <!-- <td style="text-align: center;">{{row.f_tablebase ? (row.f_tablebase - 0) - (row.f_last_tablebase - 0) : null}}</td>-->
334
+
335
+ <td>
336
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
337
+ 'has-success has-feedback': !row.error,
338
+ 'has-error has-feedback': row.error}"
339
+ v-if="row.f_meter_state === '未抄表' && row.states !== 0">
340
+ <v-select :value.sync="row.f_result_state" v-model="row.f_result_state"
341
+ :options='$parent.$parent.$parent.resultstate' placeholder='表状态'
342
+ width="100%"
343
+ :value-single="true"
344
+ close-on-select
345
+ condition="f_adjustable_name = '{}'"></v-select>
346
+ <!-- <span id="inputError2Status" class="sr-only">(error)</span> -->
347
+ </div>
348
+ <div v-else>
349
+ {{row.f_result_state}}
350
+ </div>
351
+ </td>
352
+
353
+
354
+ <td style="text-align: center;">{{row.f_actualtablebase}}</td>
355
+ <td style="text-align: center;">{{row.f_total_gas-(row.f_tablebase-row.f_initial_base)}}</td>
356
+ <td style="text-align: center;">
357
+ <div class="form-group" style="margin-bottom:0px;"
358
+ v-if="row.f_meter_state === '未抄表' ">
359
+ <input type="text" class="form-control" v-model="row.f_instantaneous_flow"
360
+ v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
361
+ :disabled="row.state === '开始'"
362
+ >
363
+ </div>
364
+ <div v-else>
365
+ <span >{{ row.f_instantaneous_flow }}</span>
366
+ </div>
367
+ </td>
368
+ <td style="text-align: center;">
369
+ <!-- <nobr>{{row.f_pressure}}</nobr>-->
370
+ <div class="form-group" style="margin-bottom:0px;"
371
+ v-if="row.f_meter_state === '未抄表' ">
372
+ <input type="text" class="form-control" v-model="row.f_pressure"
373
+ v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
374
+ :disabled="row.state === '开始'"
375
+ >
376
+ </div>
377
+ <div v-else>
378
+ <span >{{ row.f_pressure }}</span>
379
+ </div>
380
+ </td>
381
+ <td style="text-align: center;">
382
+ <!-- <nobr>{{row.f_temperature}}</nobr>-->
383
+ <div class="form-group" style="margin-bottom:0px;"
384
+ v-if="row.f_meter_state === '未抄表' ">
385
+ <input type="text" class="form-control" v-model="row.f_temperature"
386
+ v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
387
+ :disabled="row.state === '开始'"
388
+ >
389
+ </div>
390
+ <div v-else>
391
+ <span >{{ row.f_temperature }}</span>
392
+ </div>
393
+ </td>
394
+ <td style="text-align: center;">
395
+ <nobr>{{row.f_flowmeter_capacity}}</nobr>
396
+ </td>
397
+ <td style="text-align: center;">
398
+ <!-- <nobr>{{row.f_controller_power}}</nobr>-->
399
+ <div class="form-group" style="margin-bottom:0px;"
400
+ v-if="row.f_meter_state === '未抄表' ">
401
+ <input type="text" class="form-control" v-model="row.f_controller_power"
402
+ v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
403
+ :disabled="row.state === '开始'"
404
+ >
405
+ </div>
406
+ <div v-else>
407
+ <span >{{ row.f_controller_power }}</span>
408
+ </div>
409
+ </td>
410
+ <td style="text-align: center;">
411
+ <!-- <nobr>{{row.f_valve_switch}}</nobr>-->
412
+ <div class="form-group" style="margin-bottom:0px;display: contents;"
413
+ v-if="row.f_meter_state === '未抄表' && row.states !== 0">
414
+ <v-select :value.sync="row.f_valve_switch" v-model="row.f_valve_switch"
415
+ :options='$parent.$parent.$parent.valve_switch' placeholder='阀门开关'
416
+ width="100%"
417
+ :value-single="true"
418
+ close-on-select
419
+ ></v-select>
420
+ <!-- <span id="inputError2Status" class="sr-only">(error)</span> -->
421
+ </div>
422
+ <div v-else>
423
+ {{ row.f_valve_switch }}
424
+ </div>
425
+ </td>
426
+ <td style="text-align: center;">{{ row.f_meter_state }}</td>
427
+ <td style="text-align: center;">
428
+
429
+ <!-- <button type="button" name="button" class="btn btn-link"-->
430
+ <!-- @click.stop="$parent.$parent.$parent.modify(row)"-->
431
+ <!-- v-if="row.f_meter_state === '已抄表' && !$parent.$parent.$parent.jurisdiction.includes('审核权限')">修正</button>-->
432
+
433
+ <!-- <button type="button" name="button" class="btn btn-link"
434
+ @click.stop="$parent.$parent.$parent.pass(row)"
435
+ v-if="$parent.$parent.$parent.jurisdiction.includes('审核权限') && row.f_meter_state === '待审核'">通过</button>
436
+
437
+ <button type="button" name="button" class="btn btn-link"
438
+ @click.stop="$parent.$parent.$parent.nopass(row)"
439
+ v-if="row.f_meter_state === '待审核' && $parent.$parent.$parent.jurisdiction.includes('审核权限')">不通过</button>-->
440
+ <button type="button" name="button" class="button_search button_spacing width-60" title="权限名称:(卡表抄表冲正)"
441
+ @click.stop="$parent.$parent.$parent.cardhandCenter(row)"
442
+ v-if="row.f_meter_state === '已抄表'">冲正
443
+ </button>
444
+ </td>
445
+ <td><span title="{{row.f_card_reason}}" v-if="row.f_card_reason !== ''">{{row.f_card_reason.substring(0,5)}} ...</span>
446
+ </td>
447
+ </template>
448
+ </data-grid>
449
+ </criteria-paged>
450
+ <table class="table-hover">
451
+ <tr style="position: relative" class="table-bordered">
452
+ <td
453
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;color: #5CB95C;font-weight: bold">
454
+ 汇总信息
455
+ </td>
456
+ <td style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px">
457
+ 抄表用量:&emsp;{{sumsmodel.f_actualtablebase}}
458
+ </td>
459
+ </tr>
460
+ </table>
461
+ <modal :show.sync="cardCental" v-ref:modal backdrop="false">
462
+ <header slot="modal-header" class="modal-header">
463
+ <h4 class="modal-title">卡表抄表冲正</h4>
464
+ </header>
465
+ <article slot="modal-body" class="modal-body">
466
+ <div class="form-group">
467
+ <label class="label-control">撤销原因</label>
468
+ <textarea class="form-control" v-model="cardreason" rows="3" placeholder="请填写撤销原因"></textarea>
469
+ </div>
470
+ </article>
471
+ <footer slot="modal-footer" class="modal-footer">
472
+ <button v-show="cardCental" type="button" class="btn btn-default" @click='close'>取消</button>
473
+ <button v-show="cardCental" type="button" class="btn btn-success" @click='cancel(this.cardCentalData)'>确认
474
+ </button>
475
+ </footer>
476
+ </modal>
477
+ </div>
478
+ </div>
479
+ </template>
480
+ <script>
481
+ import {HttpResetClass, PagedList} from 'vue-client'
482
+ import Vue from 'vue'
483
+ import AppData from '../../stores/AppData'
484
+ import * as Util from '../../Util'
485
+ import co from 'co'
486
+
487
+ let loadParamGem = async function (self) {
488
+ await self.$LoadParams.loadParam(self.f_filialeid)
489
+
490
+ self.loadMeterBooks()
491
+ await self.search()
492
+ }
493
+ let modifyGen = function* (self, row, url) {
494
+ console.log('抄表修正,。。。', row, url)
495
+ self.cardCental = false
496
+ self.cardCentalData = ''
497
+ row.f_user_id = row.f_user_id + ''
498
+ // 删除待审核的抄表记录
499
+ let state = yield self.$resetpost(url, {data: row}, {warnMsg: null, rejectMsg: null, resolveMsg: null})
500
+ if (state.data === '异常') {
501
+ Vue.showAlert('该笔抄表有差额记录,请先冲正!!!', 'warning', 4000)
502
+ return
503
+ } else if (state.data === '正常') {
504
+ Vue.showAlert('冲正成功,稍等片刻,正在重新查询!', 'success', 4000)
505
+ }
506
+ self.cardreason = ''
507
+ // 重新查询界面
508
+ self.search()
509
+ }
510
+
511
+ export default {
512
+ title: '卡表抄表',
513
+ data () {
514
+ return {
515
+ // 请求对象(批量导入,查询进度使用)
516
+ HttpReset: new HttpResetClass(),
517
+ resultstate: this.$appdata.getParam('卡表抄表表状态'),
518
+ criteriaShow: false,
519
+ orderitem: 'f_userinfo_code',
520
+ model: new PagedList('rs/sql/cardHands', 50, {orderitem: this.orderitem ? '"' + this.orderitem + ' "' : `'f_userinfo_code'`}, {f_actualtablebase: 0}),
521
+ // model: new PagedList('rs/sql/cardHands', 50),
522
+ startDate: Util.toStartAndEndDateString()[0],
523
+ endDate: Util.toStartAndEndDateString()[1],
524
+ handDate: null,
525
+ batch_audit: false,
526
+ valve_switch: this.$appdata.getParam('阀门开关'),
527
+ cardCental: false,
528
+ // 合计数据
529
+ sumsmodel: {},
530
+ orderFields: {
531
+ f_userinfo_id: 'no'
532
+ },
533
+ f_filialeid: this.$login.f.orgid,
534
+ cardreason: '',
535
+ cardCentalData: '',
536
+ getfield: {
537
+ 'f_userinfo_code': '户编号',
538
+ 'f_user_name': '基本信息',
539
+ 'f_meternumber': '表号',
540
+ 'f_inputtor': '抄表员',
541
+ 'f_total_fee': '总购金额',
542
+ 'f_total_gas': '累购气量',
543
+ 'f_hand_date': '抄表日期',
544
+ 'f_last_hand_date': '上次抄表日期',
545
+ 'f_last_tablebase': '上期底数',
546
+ 'f_tablebase': '本期底数',
547
+ 'f_instantaneous_flow': '瞬时流量',
548
+ 'f_pressure': '压力',
549
+ 'f_temperature': '温度',
550
+ 'f_controller_power': '控制器电量',
551
+ 'f_flowmeter_capacity': '流量计电量',
552
+ 'f_valve_switch': '阀门开关',
553
+ 'f_actualtablebase': '实际用量',
554
+ 'f_meter_state': '状态'
555
+ },
556
+ meterbrands: [{label: '全部', value: ''}],
557
+ upshow: false,
558
+ initres: {
559
+ org: [this.$login.f.orgid],
560
+ dep: [],
561
+ user: []
562
+ },
563
+ orgCondtionStr: ''
564
+ }
565
+ },
566
+ ready () {
567
+ this.$refs.paged.$refs.criteria.model.startDate = Util.toStartAndEndDateString()[0]
568
+ this.$refs.paged.$refs.criteria.model.endDate = Util.toStartAndEndDateString()[1]
569
+ loadParamGem(this)
570
+ },
571
+ methods: {
572
+ hidden () {
573
+ this.criteriaShow = !this.criteriaShow
574
+ },
575
+ loadMeterBooks () {
576
+ let meterbrand = this.$GetSaleParam.getGasbrand()
577
+ for (let row of meterbrand) {
578
+ console.log(row)
579
+ this.meterbrands.push({label: row.label, value: row.value.id})
580
+ }
581
+ },
582
+ search () {
583
+ this.$refs.paged.$refs.criteria.search()
584
+ },
585
+ clickupshow () {
586
+ console.log('in upload', this.upshow, !this.upshow)
587
+ this.upshow = !this.upshow
588
+ },
589
+ searchPrint () {
590
+ console.log('mode', this.model)
591
+ let cons = this.model.params
592
+ console.log('查询条件', cons)
593
+ let data = {
594
+ 'body': {
595
+ 'data': {
596
+ 'condition': ''
597
+ },
598
+ 'field': [],
599
+ 'templateName': '',
600
+ 'sqlName': ''
601
+ },
602
+ 'condition': cons,
603
+ 'sqlname': 'cardHands'
604
+ }
605
+ this.$resetpost('rs/logic/allExportExcel', {data: data}, {resolveMsg: null, rejectMsg: '上传失败'}).then((res) => {
606
+ if (res.data === 'no user') {
607
+ this.$showAlert(`无匹配用户,无法导出对应excel`, 'warning', 2000)
608
+ } else {
609
+ var link = document.createElement('a')
610
+ res.data.forEach((item) => {
611
+ console.log('导出路径', item.filename)
612
+ let path = item.filename
613
+ // 本地
614
+ // let pathName = "http://" + location.host + "/excel" + path.split('excel')[1]
615
+ // 服务器
616
+ let pathName = 'http://' + location.host + '/webapps' + path.split('webapps')[1]
617
+ link.href = pathName
618
+ console.log('=============================', path.split('excel/')[1])
619
+ link.download = path.split('excel/')[1]
620
+ link.dispatchEvent(new MouseEvent('click'))
621
+ })
622
+ }
623
+ })
624
+ },
625
+ changeType () {
626
+ if (this.$refs.paged.$refs.criteria.model.f_meter_classify && this.$refs.paged.$refs.criteria.model.f_meter_classify.length > 0) {
627
+ this.$dispatch('type', this.$refs.paged.$refs.criteria.model.f_meter_classify[0])
628
+ }
629
+ },
630
+ getRes (obj) {
631
+ this.orgCondtionStr = obj
632
+ },
633
+ selfSearch (args) {
634
+ this.sumsmodel = this.$refs.paged.$refs.grid.model.sums
635
+
636
+ this.startDate = this.$refs.paged.$refs.criteria.model.startDate
637
+ this.endDate = this.$refs.paged.$refs.criteria.model.endDate
638
+ console.log('卡表抄表查询参数,。,。', args, this.model)
639
+ this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
640
+ this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
641
+
642
+ // 抄表员查询条件
643
+ this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
644
+ if (this.inputtouPerson.length !== 0) {
645
+ let str = JSON.stringify(this.inputtouPerson)
646
+ str = str.replace(/"/g, `'`)
647
+ str = str.replace(/\[/g, ``)
648
+ str = str.replace(/\]/g, ``)
649
+ console.log('=====抄表员model22222222222绑定====', str)
650
+ // 查询多个抄表员时条件
651
+ args.condition += ` and f_inputtor in ( ${str} )`
652
+ }
653
+
654
+ if (!this.orgCondtionStr) {
655
+ args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
656
+ } else {
657
+ args.condition = `${args.condition}` + this.orgCondtionStr
658
+ }
659
+ if (args.model.f_meter_state.length > 0) {
660
+ console.log('选择待审核状态了', args.model)
661
+ this.batch_audit = args.model.f_meter_state[0] !== '已抄表' && args.model.f_meter_state[0] !== '未抄表'
662
+ }
663
+ this.model.search(args.condition, this.model)
664
+ },
665
+ reflash () {
666
+ this.$refs.paged.$refs.criteria.search()
667
+ },
668
+ enter (row) {
669
+ if (!row.f_tablebase || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(2) < 0) {
670
+ return
671
+ }
672
+ if (row.f_tablebase - parseInt(row.f_tablebase) !== 0) {
673
+ Vue.set(row, 'error', '底数只能输入整数')
674
+ return
675
+ }
676
+ // || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(2) < 0
677
+ if (row.f_tablebase) {
678
+ if (!row.id) {
679
+ delete row.id
680
+ }
681
+ // 如果本期底数大于上期底数生成超用收费
682
+ if ((row.f_tablebase - 0) > (row.f_meter_base - 0)) {
683
+ row.charge_type = '超用收费'
684
+ row.f_real_amount = (row.f_tablebase - 0) - (row.f_last_tablebase - 0)
685
+ } else if ((row.f_tablebase - 0) < (row.f_meter_base - 0)) {
686
+ // 如果本地底数小于上期底数生成补差收费
687
+ row.charge_type = '补差收费'
688
+ row.f_real_amount = (row.f_tablebase - 0) - (row.f_last_tablebase - 0)
689
+ } else if ((row.f_tablebase - 0) == (row.f_last_tablebase - 0)) {
690
+ row.charge_type = '正常收费'
691
+ row.f_real_amount = 0
692
+ }
693
+ row.f_operator = this.$login.f.name
694
+ row.f_filiale = this.$login.f.f_fengongsi
695
+ row.f_outlets = this.$login.f.f_parentname
696
+ row.f_meter_state = '已抄表'
697
+ if (this.handDate !== null && this.handDate !== '') {
698
+ row.f_hand_date = this.handDate
699
+ }
700
+ row.f_hand_date = row.f_hand_date? row.f_hand_date: Util.toStandardTimeString()
701
+ row.f_last_input_date = row.f_last_hand_date?row.f_last_hand_date:row.f_hand_date
702
+ row.f_operate_date = Util.toStandardTimeString()
703
+ row.f_filialeids = this.$login.f.orgid
704
+ row.f_orgid = this.$login.f.orgid
705
+ row.f_orgname = this.$login.f.orgs
706
+ row.f_depid = this.$login.f.depids
707
+ row.f_depname = this.$login.f.deps
708
+ row.f_operatorid = this.$login.f.id
709
+ console.log('================================判断前:', row.f_hand_date)
710
+ row.f_user_id = row.f_user_id + ''
711
+ // 余气量=累购-(本期指数-表初始指数)
712
+ row.f_shengyu_gas = (row.f_total_gas - (row.f_tablebase - row.f_initial_base)).toFixed(2)
713
+ console.log('录入完毕。。', row)
714
+ this.$resetpost('rs/logic/cardhands', row, {resolveMsg: null, rejectMsg: '录入数据出错!!!'}).then((res) => {
715
+ console.log('返回数据', res)
716
+ row.id = res.data.id
717
+ console.log('录入完数据的row值,,', row)
718
+ }).catch((error) => {
719
+ row.state = '失败'
720
+ Vue.set(row, 'error', JSON.stringify(error))
721
+ })
722
+ } else {
723
+
724
+ }
725
+ },
726
+ batchAudit () {
727
+ // 批量审核
728
+ console.log('录入完毕。。', this.model.condition)
729
+ this.$resetpost('rs/logic/batchCardHandAudit', {
730
+ data: {
731
+ condition: this.model.condition,
732
+ startDate: this.$refs.paged.$refs.criteria.model.startDate,
733
+ endDate: this.$refs.paged.$refs.criteria.model.endDate
734
+ }
735
+ }, {resolveMsg: null, rejectMsg: '批量审核出错!!!'}, 0).then((res) => {
736
+ if (res.data.f_state === '异常') {
737
+ this.$showAlert(`本次审核有${res.data.handRepeatLength}户重复抄表,请处理后再进行审核操作!重复用户编号:${res.data.userRepeat}`, 'warning', 10000)
738
+ } else {
739
+ console.log('审核通过', res.data)
740
+ this.$showAlert(`批量审核成功!!! 审核抄表数: ${res.data.total}, 成功条数: ${res.data.success}`, 'success', 4000)
741
+ this.search()
742
+ }
743
+ })
744
+ },
745
+ modify (row) {
746
+ // 录入错误进行修正
747
+ co(modifyGen(this, row, 'rs/logic/cardhandnopass'))
748
+ },
749
+ pass (row) {
750
+ co(modifyGen(this, row, 'rs/logic/cardhandpass'))
751
+ },
752
+ nopass (row) {
753
+ co(modifyGen(this, row, 'rs/logic/cardhandnopass'))
754
+ },
755
+ cardhandCenter (row) {
756
+ // let load = new HttpResetClass()
757
+ // load.load('POST', 'rs/logic/Correct', {data: row}, {warnMsg: null, resolveMsg: null})
758
+ // 抄表加入权限
759
+ if (!this.$login.r.find(value => value == '卡表抄表冲正')) {
760
+ this.$showMessage('当前登录用户没有冲正权限, 请联系管理员!')
761
+ return
762
+ }
763
+ this.cardCental = true
764
+ this.cardCentalData = row
765
+ },
766
+ cancel (row) {
767
+ row.operatorInfo = {
768
+ f_filiale: this.$login.f.f_fengongsi,
769
+ f_outlets: this.$login.f.f_parentname,
770
+ f_operator: this.$login.f.name,
771
+ cardreason: this.cardreason
772
+ }
773
+ co(modifyGen(this, row, 'rs/logic/cardhandCancel'))
774
+ },
775
+ close () {
776
+ this.cardCental = false
777
+ this.cardCentalData = ''
778
+ this.cardreason = ''
779
+ },
780
+ clearError (row) {
781
+ if (row.f_tablebase === 0) {
782
+ row.f_tablebase = ''
783
+ }
784
+ Vue.set(row, 'error', null)
785
+ },
786
+ // 删除这条计划
787
+ delectHand (row) {
788
+ this.$showMessage('删除后不可恢复,确认删除吗?', ['confirm', 'cancel']).then((res) => {
789
+ if (res === 'confirm') {
790
+ this.$resetpost('rs/logic/deleteCardPlan', {data: row}).then(() => {
791
+ let condition = this.model.condition
792
+ this.selfSearch({condition: condition})
793
+ })
794
+ }
795
+ })
796
+ },
797
+ sort (field, rule) {
798
+ // 将所有排序方式设为不排序,实现相互排斥
799
+ for (let key in this.orderFields) {
800
+ if (key === field) {
801
+ this.orderFields[key] = rule
802
+ } else {
803
+ this.orderFields[key] = 'no'
804
+ }
805
+ }
806
+ // 如果新规则不排序,还原为默认排序
807
+ if (rule === 'no') {
808
+ this.model.paramSource.orderitem = `'${this.orderitem}'`
809
+ } else {
810
+ this.model.paramSource.orderitem = `'${field} ${rule}'`
811
+ }
812
+
813
+ this.search()
814
+ }
815
+ },
816
+ computed: {
817
+ inputtore () {
818
+ // 获取抄表员
819
+ console.log('获取抄表员', this.$login.f)
820
+ let rs = []
821
+ if (this.$login.f.f_gasman.length > 0) {
822
+ for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
823
+ let temp = {
824
+ label: this.$login.f.f_gasman[i].name,
825
+ value: this.$login.f.f_gasman[i].name
826
+ }
827
+ rs.push(temp)
828
+ }
829
+ }
830
+ this.inputtores2 = rs
831
+ return [...rs]
832
+ },
833
+ meterstates () {
834
+ return [{label: '全部', value: ''}, {label: '未抄表', value: "= '未抄表'"}, {
835
+ label: '已抄表',
836
+ value: "= '已抄表'"
837
+ }, {label: '冲正', value: "='冲正'"}]
838
+ },
839
+ specialuser () {
840
+ return [{label: '全部', value: ''}, {label: '正常用户', value: "= '正常用户'"}, {label: '采暖户', value: "= '采暖户'"}]
841
+ },
842
+ usertypes () {
843
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('用户类型')]
844
+ },
845
+ userlevels () {
846
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('用户等级')]
847
+ },
848
+ smallareas () {
849
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('小区域')]
850
+ },
851
+ ventilationstate () {
852
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('通气手续')]
853
+ },
854
+ gasproperties () {
855
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('用气性质')]
856
+ },
857
+ pricenames () {
858
+ let arr = []
859
+ AppData.getOnlyPrice().forEach((item) => {
860
+ let temp = {}
861
+ temp.label = item.label
862
+ temp.value = item.value.f_price_name
863
+ arr.push(temp)
864
+ })
865
+ return [{label: '全部', value: ''}, ...arr]
866
+ },
867
+ whetherpaies () {
868
+ return [
869
+ {label: '全部', value: ''},
870
+ {label: '已缴费', value: '是'},
871
+ {label: '未缴费', value: '否'}
872
+ ]
873
+ },
874
+ // 界面细节权限
875
+ jurisdiction () {
876
+ return this.$login.r ? this.$login.r : []
877
+ },
878
+ brand () {
879
+ return [{
880
+ label: '全部',
881
+ value: {f_meter_brand: '', gasmodel: [{label: '全部', value: {f_meter_style: ''}}]}
882
+ }, ...AppData.getGasbrand()]
883
+ }
884
+ },
885
+ events: {
886
+ onFileUpload: function (file, res) {
887
+ console.log('进入了抄表上传')
888
+ let uuid = this.$login.guid()
889
+ let data1 = {
890
+ startDate: this.$refs.paged.$refs.criteria.model.startDate,
891
+ endDate: this.$refs.paged.$refs.criteria.model.endDate,
892
+ filepath: res.f_downloadpath,
893
+ f_operator: this.$login.f.name,
894
+ f_operatorid: this.$login.f.id,
895
+ f_orgid: this.$login.f.orgid,
896
+ f_orgname: this.$login.f.orgs,
897
+ f_depid: this.$login.f.depids,
898
+ f_depname: this.$login.f.deps,
899
+ uuid: uuid
900
+ }
901
+ console.log('传入数据', data1)
902
+ try {
903
+ this.$resetpost('rs/logic/cardMeterUpLoad', data1, {resolveMsg: null, rejectMsg: null}, 1000)
904
+ } catch (e) {}
905
+ this.$showAlert(`文件上传成功,正在后台批量结算, 请耐心等待结果......`, 'warning')
906
+ // 启动定时器定时查询处理结果
907
+ let timer = setInterval(async () => {
908
+ let res = await this.HttpReset.load('POST', 'rs/logic/getBatchOperaPro', {data: {uuid: uuid}}, {resolveMsg: null, rejectMsg: null})
909
+ console.log('查询进度返回: ', res)
910
+ if (res.data.msg || res.data.error) {
911
+ clearInterval(timer)
912
+ if (res.data.error) {
913
+ this.$showAlert(`${res.data.error}`, 'danger')
914
+ return
915
+ }
916
+ if (res.data.code === 0) {
917
+ this.$showAlert(`上传成功`, 'success', 3000)
918
+ } else if (res.data.code === -2) {
919
+ this.$showAlert(`未读取到数据`, 'warning', 3000)
920
+ } else if (res.data.code === -1) {
921
+ let show = ''
922
+ res.data.msg.forEach((v) => {
923
+ show = show + v + ' '
924
+ })
925
+ this.$showMessage(`存在扣费大于余额用户,表号:${show}`, ['confirm'])
926
+ }
927
+ this.upshow = false
928
+ this.search()
929
+ }
930
+ }, 5000)
931
+ }
932
+ }
933
+ }
934
+ </script>
935
+ <style lang="less">
936
+ #CardHand {
937
+ thead {
938
+ position: relative;
939
+ z-index: 2;
940
+ }
941
+ }
942
+ </style>
@@ -528,7 +528,7 @@ export default {
528
528
  // 请求对象(批量导入,查询进度使用)
529
529
  HttpReset: new HttpResetClass(),
530
530
  resultstate: this.$appdata.getParam('卡表抄表表状态'),
531
- valve_switch:this.$appdata.getParam('阀门开关'),
531
+ valve_switch: this.$appdata.getParam('阀门开关'),
532
532
  criteriaShow: false,
533
533
  orderitem: 'f_userinfo_code',
534
534
  model: new PagedList('rs/sql/getCardPlan', 50, {orderitem: this.orderitem ? '"' + this.orderitem + ' "' : `'f_userinfo_code'`}, {f_actualtablebase: 0}),
@@ -4,6 +4,7 @@ import Vue from 'vue'
4
4
  export default function () {
5
5
  // 卡表抄表
6
6
  Vue.component('cards-hand', (resolve) => { require(['./cardsHand'], resolve) })
7
+ Vue.component('card-hand', (resolve) => { require(['./cardHand'], resolve) })
7
8
  // 单户调价
8
9
  Vue.component('user-pricechange-manage', (resolve) => { require(['./UserPriceChangeManage'], resolve) })
9
10
  // 表具停用
@@ -19,6 +19,15 @@
19
19
  style="width:60%"
20
20
  close-on-select></v-select>
21
21
  </div>
22
+ <div class="col-sm-4 form-group">
23
+ <label class="font_normal_body" title="参数值:计入/不计入,计入:更新档案结余及累购,不计入:只保存记录不对档案进行操作">计入累购</label>
24
+ <input v-show="false" v-model="model.f_add_gas" v-validate:f_operat_type='{required: true}'>
25
+ <v-select :value.sync="model.f_add_gas" value-single
26
+ :options='addGas' placeholder='请选择'
27
+ selected="是否计入累购"
28
+ style="width:60%"
29
+ close-on-select></v-select>
30
+ </div>
22
31
  <div class="col-sm-4" :class="[$v.f_pregas.dctest ? 'has-error' : 'has-success']">
23
32
  <label class="font_normal_body">赠气</label>
24
33
  <input class="input_search" style="width:60%" type="number" @blur="pregas"
@@ -18,7 +18,15 @@
18
18
  style="width:60%"
19
19
  close-on-select></v-select>
20
20
  </div>
21
-
21
+ <div class="col-sm-4 form-group">
22
+ <label class="font_normal_body" title="参数值:计入/不计入,计入:更新档案结余及累购,不计入:只保存记录不对档案进行操作">计入累购</label>
23
+ <input v-show="false" v-model="model.f_add_gas" v-validate:f_operat_type='{required: true}'>
24
+ <v-select :value.sync="model.f_add_gas" value-single
25
+ :options='addGas' placeholder='请选择'
26
+ selected="是否计入累购"
27
+ style="width:60%"
28
+ close-on-select></v-select>
29
+ </div>
22
30
  <div class="col-sm-4 form-group"
23
31
  :class="[$v.f_preamount.required || $v.f_preamount.dctest ? 'has-error' : 'has-success']">
24
32
  <label class="font_normal_body">&nbsp;金额&nbsp;</label>
@@ -174,6 +182,7 @@ export default {
174
182
  this.model.f_operat_type = ['物联网赠费']
175
183
  }
176
184
  this.model.f_price_id = this.row.f_price_id
185
+ this.model.f_add_gas = '计入'
177
186
  this.model.f_user_id = this.row.f_user_id
178
187
  this.model.f_userfiles_id = this.row.f_userfiles_id
179
188
  this.model.f_userinfo_id = this.row.f_userinfo_id
@@ -226,6 +235,7 @@ export default {
226
235
  f_gasproperties: this.row.f_gasproperties,
227
236
  f_meter_type: this.row.f_meter_type,
228
237
  f_pregas: this.model.f_pregas,
238
+ f_add_gas: this.model.f_add_gas,
229
239
  f_address: this.row.f_address,
230
240
  f_meter_brand: this.row.f_meter_brand,
231
241
  f_preamount: this.model.f_preamount,
@@ -254,6 +264,11 @@ export default {
254
264
  clean () {
255
265
  this.$dispatch('refresh')
256
266
  }
267
+ },
268
+ computed:{
269
+ addGas () {
270
+ return [{label: '计入', value: '计入'}, {label: '不计入', value: '不计入'}]
271
+ }
257
272
  }
258
273
  }
259
274
  </script>
package/src/main.js CHANGED
@@ -4,7 +4,7 @@ import App from './App'
4
4
  import system from 'system-clients/src/system'
5
5
  import sale from './sale'
6
6
  // import wenxi from './filiale/rizhao/sale'
7
- import FilialeSale from './filiale/qianneng/sale'
7
+ import FilialeSale from './filiale/lixianV3/sale'
8
8
  import address from 'address-client/src/address'
9
9
  import ldap from 'ldap-clients/src/ldap'
10
10
  import VueClipboard from 'vue-clipboard2'