sale-client 3.6.109 → 3.6.110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.6.109",
3
+ "version": "3.6.110",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -336,17 +336,21 @@ export default {
336
336
  }
337
337
  },
338
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}`})
339
+ try {
340
+ let http = new HttpResetClass()
341
+ let data = {
342
+ items: 'id,f_brand',
343
+ tablename: 't_iot_device_brand',
344
+ condition: `1=1`,
345
+ orderitem: 'id'
346
+ }
347
+ let res = await http.load('post', 'rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: '获取设备品牌失败!'})
348
+ this.brands = []
349
+ for (let row of res.data) {
350
+ this.brands.push({label: row.f_brand, value: `${row.id}`})
351
+ }
352
+ } catch (e) {
353
+ console.log(e)
350
354
  }
351
355
  },
352
356
  showTableBtn () {
@@ -92,17 +92,17 @@
92
92
  condition="f_change_price1 {}"
93
93
  close-on-select></v-select>
94
94
  </div>
95
- <div class="form-group col-sm-2">
96
- <label class="font_normal_body">气表类型</label>
97
- <v-select id="f_source"
98
- v-model="model.f_source"
99
- placeholder='气表类型'
100
- style="width: 60%"
101
- :value.sync="model.f_source"
102
- :options='$parent.$parent.source'
103
- condition="f_source='{}'"
104
- close-on-select></v-select>
105
- </div>
95
+ <!-- <div class="form-group col-sm-2">-->
96
+ <!-- <label class="font_normal_body">气表类型</label>-->
97
+ <!-- <v-select id="f_source"-->
98
+ <!-- v-model="model.f_source"-->
99
+ <!-- placeholder='气表类型'-->
100
+ <!-- style="width: 60%"-->
101
+ <!-- :value.sync="model.f_source"-->
102
+ <!-- :options='$parent.$parent.source'-->
103
+ <!-- condition="f_source='{}'"-->
104
+ <!-- close-on-select></v-select>-->
105
+ <!-- </div>-->
106
106
  <div class="form-group col-sm-2">
107
107
  <label class="font_normal_body">用户类型</label>
108
108
  <v-select id="f_user_tye"
@@ -140,36 +140,36 @@
140
140
  close-on-select></v-select>
141
141
  </div>
142
142
 
143
- <div class="col-sm-2 form-group">
144
- <label class="font_normal_body">抄&ensp;表&ensp;员</label>
145
- <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
146
- style="width:60%"
143
+ <!-- <div class="col-sm-2 form-group">-->
144
+ <!-- <label class="font_normal_body">抄&ensp;表&ensp;员</label>-->
145
+ <!-- <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'-->
146
+ <!-- style="width:60%"-->
147
147
 
148
- :options='$parent.$parent.inputtoreser' placeholder='抄表员'
149
- @change="$parent.$parent.inputtorchange"
150
- close-on-select
151
- v-el:cc></v-select>
152
- </div>
153
- <!--表册片区-->
154
- <div class="col-sm-2 form-group">
155
- <label class="font_normal_body">表册片区</label>
156
- <v-select :value.sync="model.f_book_slice_area" v-model="model.f_book_slice_area"
157
- :options='$parent.$parent.bookSliceArea' placeholder='表册片区'
158
- multiple
159
- style="width:60%"
160
- @change="$parent.$parent.sliceChange"
161
- close-on-select
162
- condition="f_book_slice_area in {}"></v-select>
163
- </div>
164
- <div class="col-sm-2 form-group">
165
- <label class="font_normal_body">抄&ensp;表&ensp;册</label>
166
- <v-select :value.sync="model.f_meter_book" v-model="model.f_meter_book"
167
- :options='$parent.$parent.meterbooks' placeholder='抄表册'
168
- multiple
169
- style="width:60%"
170
- close-on-select
171
- condition="f_meter_book_num in {}"></v-select>
172
- </div>
148
+ <!-- :options='$parent.$parent.inputtoreser' placeholder='抄表员'-->
149
+ <!-- @change="$parent.$parent.inputtorchange"-->
150
+ <!-- close-on-select-->
151
+ <!-- v-el:cc></v-select>-->
152
+ <!-- </div>-->
153
+ <!-- &lt;!&ndash;表册片区&ndash;&gt;-->
154
+ <!-- <div class="col-sm-2 form-group">-->
155
+ <!-- <label class="font_normal_body">表册片区</label>-->
156
+ <!-- <v-select :value.sync="model.f_book_slice_area" v-model="model.f_book_slice_area"-->
157
+ <!-- :options='$parent.$parent.bookSliceArea' placeholder='表册片区'-->
158
+ <!-- multiple-->
159
+ <!-- style="width:60%"-->
160
+ <!-- @change="$parent.$parent.sliceChange"-->
161
+ <!-- close-on-select-->
162
+ <!-- condition="f_book_slice_area in {}"></v-select>-->
163
+ <!-- </div>-->
164
+ <!-- <div class="col-sm-2 form-group">-->
165
+ <!-- <label class="font_normal_body">抄&ensp;表&ensp;册</label>-->
166
+ <!-- <v-select :value.sync="model.f_meter_book" v-model="model.f_meter_book"-->
167
+ <!-- :options='$parent.$parent.meterbooks' placeholder='抄表册'-->
168
+ <!-- multiple-->
169
+ <!-- style="width:60%"-->
170
+ <!-- close-on-select-->
171
+ <!-- condition="f_meter_book_num in {}"></v-select>-->
172
+ <!-- </div>-->
173
173
  </div>
174
174
  </div>
175
175
  </criteria>
@@ -374,7 +374,13 @@
374
374
  self.$refs.paged.$refs.criteria.model.startDate = self.$login.toStandardDateString()
375
375
  self.$refs.paged.$refs.criteria.model.endDate = self.$login.toStandardDateString()
376
376
  self.$refs.paged.$refs.criteria.model.f_change_date = ''
377
- self.$resetpost('rs/sql/getpriceid', {data: {f_filialeids: self.$login.f.orgid}}, {
377
+ getPrice(self)
378
+ self.$showAlert('请输入[气价类型]后进行查询!', 'warning', 2000)
379
+ self.pricechange = false
380
+
381
+ }
382
+ let getPrice = async function(self) {
383
+ self.$resetpost('rs/sql/getpriceid', {data: {f_filialeids: self.f_filialeid}}, {
378
384
  resolveMsg: null,
379
385
  rejectMsg: null
380
386
  }).then((res) => {
@@ -391,9 +397,7 @@
391
397
  }
392
398
  console.log(rs)
393
399
  self.pricers = [ ...rs]
394
- self.$showAlert('请输入[气价类型]后进行查询!', 'warning', 2000)
395
- self.pricechange = false
396
- //self.$refs.paged.$refs.criteria.search()
400
+ self.priceTypeChange()
397
401
  })
398
402
  }
399
403
  let asyncReadyGen = async function (self) {
@@ -855,7 +859,7 @@
855
859
  this.$refs.paged.$refs.criteria.model.f_inputtor = []
856
860
  this.meterbooks = [{label: '全部', value: ''}]
857
861
  if (this.f_filialeid) {
858
- this.updateParams()
862
+ getPrice(this)
859
863
  }
860
864
  }
861
865
  }
@@ -143,13 +143,13 @@
143
143
  <nobr>三阶气量</nobr>
144
144
  </th>
145
145
  <th>
146
- <nobr>一阶补差单价</nobr>
146
+ <nobr>一阶单价</nobr>
147
147
  </th>
148
148
  <th>
149
- <nobr>二阶补差单价</nobr>
149
+ <nobr>二阶单价</nobr>
150
150
  </th>
151
151
  <th>
152
- <nobr>三阶补差单价</nobr>
152
+ <nobr>三阶单价</nobr>
153
153
  </th>
154
154
  <th>
155
155
  <nobr>一阶补差单价</nobr>
@@ -303,8 +303,18 @@
303
303
  let readySomething = async function (self) {
304
304
  self.$refs.paged.$refs.criteria.model.startDate = self.$login.toStandardDateString()
305
305
  self.$refs.paged.$refs.criteria.model.endDate = self.$login.toStandardDateString()
306
- self.$resetpost('rs/sql/getpriceid', {data: {f_filialeids: self.f_filialeid}}, {resolveMsg: null, rejectMsg: null}).then((res) => {
307
- console.log(res.data)
306
+ self.$refs.paged.$refs.criteria.model.f_change_date = ''
307
+ getPrice(self)
308
+ self.$showAlert('请输入[气价类型]后进行查询!', 'warning', 2000)
309
+ self.pricechange = false
310
+
311
+ }
312
+ let getPrice = async function(self) {
313
+ self.$resetpost('rs/sql/getpriceid', {data: {f_filialeids: self.f_filialeid}}, {
314
+ resolveMsg: null,
315
+ rejectMsg: null
316
+ }).then((res) => {
317
+ console.log('气价信息-------->',res.data)
308
318
  let rs = []
309
319
  for (let i = 0; i < res.data.length; i++) {
310
320
  let temp = {
@@ -317,7 +327,7 @@
317
327
  }
318
328
  console.log(rs)
319
329
  self.pricers = [ ...rs]
320
- self.$refs.paged.$refs.criteria.search()
330
+ self.priceTypeChange()
321
331
  })
322
332
  }
323
333
 
@@ -572,6 +582,16 @@
572
582
  computed: {
573
583
  },
574
584
  watch: {
585
+ async 'f_filialeid' (val) {
586
+ // 更新抄表册
587
+ this.$refs.paged.$refs.criteria.model.f_meter_book = []
588
+ this.$refs.paged.$refs.criteria.model.f_book_slice_area = []
589
+ this.$refs.paged.$refs.criteria.model.f_inputtor = []
590
+ this.meterbooks = [{label: '全部', value: ''}]
591
+ if (this.f_filialeid) {
592
+ getPrice(this)
593
+ }
594
+ }
575
595
  }
576
596
  }
577
597
  </script>
@@ -0,0 +1,709 @@
1
+ <template>
2
+ <div class="flex-row" id="machineHandManager">
3
+ <div 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
+
8
+ <res-select-group :initres="$parent.$parent.initres" @re-res="$parent.$parent.getRes"
9
+ v-ref:sel></res-select-group>
10
+ <div class="col-sm-2 form-group">
11
+ <label class="font_normal_body">客户类型</label>
12
+ <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
13
+ :options='$parent.$parent.usertypes' placeholder='客户类型'
14
+ style="width:60%"
15
+ close-on-select
16
+ condition="f_user_type = '{}'"></v-select>
17
+ </div>
18
+ <div class="col-sm-2 form-group">
19
+ <label class="font_normal_body">小&ensp;&ensp;&ensp;&ensp;区</label>
20
+ <v-select :value.sync="model.f_residential_area"
21
+ class="select_list select"
22
+ enter-push
23
+ v-model="model.f_residential_area"
24
+ style="width: 60%"
25
+ multiple="true"
26
+ :options='$parent.$parent.residentialArea' placeholder='选择小区'
27
+ close-on-select v-el:cc>
28
+ </v-select>
29
+ </div>
30
+ <div class="col-sm-2 form-group">
31
+ <label class="font_normal_body">抄&ensp;表&ensp;员</label>
32
+ <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
33
+ style="width:60%"
34
+ multiple="true"
35
+ condition="f_inputtor in {}"
36
+ :options='$parent.$parent.inputtores' placeholder='抄表员'
37
+ close-on-select
38
+ v-el:cc></v-select>
39
+ </div>
40
+ <div class="row">
41
+ <div class="col-sm-2 form-group">
42
+ <label class="font_normal_body">表&emsp;&emsp;号</label>
43
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_meternumber"
44
+ condition="f_meternumber like '%{}%'" placeholder='表号'>
45
+ </div>
46
+ <div class="col-sm-2 form-group">
47
+ <label class="font_normal_body">客户姓名</label>
48
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
49
+ placeholder='客户姓名'
50
+ condition="f_user_name = '{}'">
51
+ </div>
52
+ <div class="col-sm-2 form-group">
53
+ <label class="font_normal_body">客户编号</label>
54
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
55
+ condition="f_userinfo_code='{}'" placeholder='客户编号'>
56
+ </div>
57
+
58
+ <!-- <div class="span" style="float:right;">-->
59
+ <!-- <button v-if="$parent.$parent.jurisdiction.includes('单户抄表')"-->
60
+ <!-- class="button_search button_spacing" style="width:90px" @click="$parent.$parent.danhuShow()">-->
61
+ <!-- 单户抄表-->
62
+ <!-- </button>-->
63
+
64
+ <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
65
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
66
+ <div
67
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
68
+ @click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
69
+ </div>
70
+
71
+ <div class="row" v-show="$parent.$parent.criteriaShow">
72
+
73
+
74
+
75
+ <div class="col-sm-2 form-group">
76
+ <label class="font_normal_body">楼&emsp;&emsp;栋</label>
77
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_building"
78
+ condition="f_building = '{}'" placeholder='楼栋'>
79
+ </div>
80
+ <div class="col-sm-2 form-group">
81
+ <label class="font_normal_body">单&emsp;&emsp;元</label>
82
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_unit"
83
+ condition="f_unit = '{}'" placeholder='单元'>
84
+ </div>
85
+ <div class="col-sm-2 form-group">
86
+ <label class="font_normal_body">楼&emsp;&emsp;层</label>
87
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_floor"
88
+ condition="f_floor = '{}'" placeholder='楼层'>
89
+ </div>
90
+ <div class="col-sm-2 form-group">
91
+ <label class="font_normal_body">门&ensp;牌&ensp;号</label>
92
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_room"
93
+ condition="f_room like '%{}%'" placeholder='门牌号'>
94
+ </div>
95
+ <div class="col-sm-2 form-group">
96
+ <label class="font_normal_body">客户地址</label>
97
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_address"
98
+ condition="f_address like '%{}%'" placeholder='客户地址'>
99
+ </div>
100
+
101
+ </div>
102
+ </div>
103
+ </criteria>
104
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid id="hand_manager_grid">
105
+ <template partial='head'>
106
+ <tr>
107
+ <!--<th><input type='checkbox' v-model="$parent.$parent.$parent.all" @change="$parent.$parent.$parent.chooseAll"></th>-->
108
+ <th>
109
+ <nobr>序号</nobr>
110
+ </th>
111
+ <th>
112
+ <nobr>
113
+ <data-order field="f_userinfo_code" name="客户编号"
114
+ :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order>
115
+ </nobr>
116
+ </th>
117
+ <th>
118
+ <nobr>
119
+ <data-order field="f_address" name="基本信息"
120
+ :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order>
121
+ </nobr>
122
+ </th>
123
+ <th>
124
+ <nobr>身份证号</nobr>
125
+ </th>
126
+
127
+ <th>
128
+ <nobr>卡号</nobr>
129
+ </th>
130
+ <th>
131
+ <nobr>表号</nobr>
132
+ </th>
133
+ <th>
134
+ <nobr>表具状态</nobr>
135
+ </th>
136
+ <th>
137
+ <nobr>上期底数</nobr>
138
+ </th>
139
+ <th>
140
+ <nobr>本期底数</nobr>
141
+ </th>
142
+ <th>
143
+ <nobr>抄表员</nobr>
144
+ </th>
145
+ </tr>
146
+ </template>
147
+ <template partial='body'>
148
+ <td style="text-align: center;">{{ $index + 1 }}</td>
149
+ <td>{{ row.f_userinfo_code }}</td>
150
+ <td>{{ row.f_user_name }}&nbsp;&nbsp;{{ row.f_address }}</td>
151
+ <td>{{ row.f_idnumber }}</td>
152
+ <td>{{ row.f_card_id }}</td>
153
+ <td>{{ row.f_meternumber }}</td>
154
+ <td>{{ row.f_table_state }}</td>
155
+ <td>{{ row.f_meter_base }}</td>
156
+ <td id="hand-creat" >
157
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
158
+ 'has-success has-feedback': !row.error,
159
+ 'has-error has-feedback': row.error}"
160
+ >
161
+ <input title="只能录入整数" type="text" class="input_search" v-model="row.f_tablebase"
162
+ @blur="$parent.$parent.$parent.beforenter($index, row)"
163
+ v-next-el="{id: $index+2}" :id="$index+1" style="width: 100px;padding: 6px;"
164
+ @focus="$parent.$parent.$parent.clearError(row)"
165
+ :disabled="row.state === '开始'">
166
+ </div>
167
+ <td>{{ row.f_inputtor }}</td>
168
+ </template>
169
+ </data-grid>
170
+ </criteria-paged>
171
+ </div>
172
+ </div>
173
+ </template>
174
+ <script>
175
+ import MixPriceInfo from '../../components/revenue/base/leftview/MixPriceInfo'
176
+ import {PagedList, HttpResetClass} from 'vue-client'
177
+ import Vue from 'vue'
178
+ import co from 'co'
179
+ export default {
180
+ title: '物联网表抄表',
181
+ components: {MixPriceInfo},
182
+ data() {
183
+ return {
184
+ priceModel: false,
185
+ initres: {
186
+ org: [this.$login.f.orgid],
187
+ dep: [],
188
+ user: []
189
+ },
190
+ sumsmodel: [],
191
+ orgCondtionStr: '',
192
+ priceSplit: false,
193
+ deletestate: false,
194
+ criteriaShow: false,
195
+ model: new PagedList('rs/sql/getIotHand', 50, {orderitem: this.orderDefault ? '"' + this.orderDefault + ' "' : `'f_hand_date desc'`}),
196
+ meter_state: false, // 是否显示计划下发按钮
197
+ downModel: {
198
+ downDate: Vue.$login.toStandardTimeString(),
199
+ downWay: 'downWithUserfiles',
200
+ downInputtor: []
201
+ },
202
+ inputtorModel: {
203
+ inputtor: [],
204
+ reason: ''
205
+ },
206
+ auditState: [{label: '全部', value: ''}, {label: '未抄表', value: '未抄表'}, {
207
+ label: '待审核',
208
+ value: '待审核'
209
+ }, {label: '已抄表', value: '已抄表'}],
210
+ // 小区
211
+ residentialArea: [],
212
+ // downDate: this.$login.toStandardYearMonth().replace("-", ""),
213
+ msg: '',
214
+ condition: '',
215
+ headers: {'username': Vue.$login.f.name, 'blodid': Vue.$login.guid()},
216
+ orderDefault: 'f_hand_date',
217
+ orderFields: {
218
+ f_userinfo_id: 'no'
219
+ },
220
+ getfield: {},
221
+ outlet: '',
222
+ filiale: '',
223
+ condition2: '',
224
+ area: [],
225
+ inputtouPerson: [],
226
+ usertypes: this.$appdata.getParam('客户类型') ? [{
227
+ label: '全部',
228
+ value: ''
229
+ }, ...this.$appdata.getParam('客户类型')] : [],
230
+ f_filialeid: this.$login.f.orgid,
231
+ upshow: false,
232
+ inputid: 0,
233
+ examineshow: false,
234
+ examinerow: null,
235
+ showfiles: false,
236
+ uploadText: '抄表',
237
+ examinetype: false,
238
+ err: '',
239
+ // 请求对象(批量导入,查询进度使用)
240
+ HttpReset: new HttpResetClass(),
241
+ // 气价使用详情展示
242
+ detailsShow: false,
243
+ row: null,
244
+ // 应抄底数
245
+ should_base: 0
246
+ }
247
+ },
248
+ ready() {
249
+ this.getaddress()
250
+ },
251
+ methods: {
252
+ async getaddress() {
253
+ console.log('开始获取小区')
254
+ let HttpReset = new HttpResetClass()
255
+ var data = await HttpReset.load('POST', 'rs/sql/manage_getarealist', {
256
+ data: {
257
+ condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
258
+ }
259
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
260
+ console.log('小区', data)
261
+ let house = []
262
+ house.push()
263
+ for (let row of data.data) {
264
+ console.log('开始保存小区')
265
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
266
+ }
267
+ this.residentialArea = house
268
+ },
269
+ getRes(obj) {
270
+ this.orgCondtionStr = obj
271
+ },
272
+
273
+ hidden() {
274
+ console.log(this.criteriaShow )
275
+ this.criteriaShow = !this.criteriaShow
276
+ console.log(this.criteriaShow )
277
+ },
278
+ clear() {
279
+ Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
280
+ this.$refs.paged.$refs.criteria.model[key] = []
281
+ })
282
+ },
283
+
284
+ search() {
285
+ // 查询前清空选择项
286
+ this.$refs.paged.$refs.criteria.search()
287
+ },
288
+
289
+ selfSearch(args) {
290
+ if (!this.orgCondtionStr) {
291
+ args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
292
+ } else {
293
+ args.condition = `${args.condition}` + this.orgCondtionStr
294
+ }
295
+ // 抄表员查询条件
296
+ // this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
297
+ // if (this.inputtouPerson.length !== 0) {
298
+ // let str = JSON.stringify(this.inputtouPerson)
299
+ // str = str.replace(/"/g, `'`)
300
+ // str = str.replace(/\[/g, ``)
301
+ // str = str.replace(/\]/g, ``)
302
+ // console.log('=====抄表员model22222222222绑定====', str)
303
+ // // 查询多个抄表员时条件
304
+ // args.condition += ` and f_inputtor in ( ${str} )`
305
+ // }
306
+ // 小区查询条件
307
+ this.area = this.$refs.paged.$refs.criteria.model.f_residential_area
308
+ console.log('=====小区model绑定====', this.area)
309
+ if (this.area.length !== 0) {
310
+ let str = JSON.stringify(this.area)
311
+ str = str.replace(/"/g, `'`)
312
+ str = str.replace(/\[/g, ``)
313
+ str = str.replace(/\]/g, ``)
314
+ console.log('=====小区model22222222222绑定====', str)
315
+ // 查询多个小区时条件
316
+ args.condition += ` and f_residential_area in ( ${str} )`
317
+ }
318
+
319
+ this.model.search(args.condition, this.model)
320
+ },
321
+ reflash() {
322
+ this.$refs.paged.$refs.criteria.model.f_orgid = `${Vue.$login.f.orgid}`
323
+ this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStartAndEndDateString()[0]
324
+ this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStartAndEndDateString()[1]
325
+ this.search()
326
+ },
327
+ beforenter(index, row) {
328
+ this.inputid = index + 1
329
+ // 限制本次抄表不能低于上次
330
+ if (row.f_tablebase) {
331
+ if (row.f_tablebase < 0) {
332
+ row.state = '失败'
333
+ Vue.set(row, 'error', '底数不能小于0')
334
+ this.speckText('底数不能小于0,请注意!')
335
+ } else if (row.f_tablebase - parseInt(row.f_tablebase) !== 0) {
336
+ row.state = '失败'
337
+ Vue.set(row, 'error', '底数只能输入整数')
338
+ this.speckText('底数只能输入整数,请注意!')
339
+ } else if (row.f_tablebase < row.f_last_tablebase && !row.f_capacity) {
340
+ row.state = '失败'
341
+ Vue.set(row, 'error', '本期表底数不能低于上期表底数')
342
+ this.speckText('本期表底数不能低于上期表底数,请注意!')
343
+ } else {
344
+ if (row.f_tablebase < row.f_last_tablebase) {
345
+ this.$showMessage('本次抄表已超越最大量程, 请熟知!')
346
+ }
347
+
348
+ }
349
+ }
350
+ },
351
+
352
+ clearError(row) {
353
+ if (row.f_tablebase === 0) {
354
+ row.f_tablebase = ''
355
+ }
356
+ Vue.set(row, 'error', null)
357
+ },
358
+ async speckText(str) {
359
+ var url = 'http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=6&text=' + encodeURI(str)
360
+ await new Audio(url).play()
361
+ this.err = str
362
+ this.showerr = true
363
+ this.paycodefocus()
364
+ },
365
+ closeerr() {
366
+ this.showerr = false
367
+ },
368
+ fileUpload() {
369
+ this.uploadshow = true
370
+ },
371
+ // 删除这条计划
372
+ delectHand(row) {
373
+ this.$showMessage('删除后不可恢复,确认删除吗?', ['confirm', 'cancel']).then((res) => {
374
+ if (res === 'confirm') {
375
+ this.$resetpost('rs/logic/deletePlan', {data: row}).then(() => {
376
+ this.$dispatch('refresh', '删除计划', row)
377
+ this.search()
378
+ })
379
+ }
380
+ })
381
+ },
382
+ cancelHand4(row) {
383
+ this.examinerow = row
384
+ this.examineshow = true
385
+ this.examinetype = true
386
+ },
387
+ cancelHand2(row) {
388
+ if (this.config.examine) {
389
+ let handdate = new Date(row.f_hand_date)
390
+ console.log('获取月份', handdate.getMonth())
391
+ let ima = new Date()
392
+ console.log('获取月份', ima.getMonth())
393
+ if (handdate.getMonth() == ima.getMonth()) {
394
+ this.cancelHand3(row)
395
+ } else {
396
+ if (!this.$login.r.find(value => value == '抄表隔月冲正')) {
397
+ this.$showMessage('当前登录用户没有隔月冲正权限, 请联系管理员!')
398
+ } else {
399
+ this.cancelHand3(row)
400
+ }
401
+ }
402
+ } else {
403
+ this.cancelHand3(row)
404
+ }
405
+ },
406
+ async cancelHand5() {
407
+ let sqldata = `update t_handplan set f_audit_state ='已审核',f_audit_person='${this.$login.f.name}',
408
+ f_audit_date='${this.$login.toStandardTimeString()}' where id ='${this.examinerow.id}'`
409
+ await this.$resetpost('rs/logic/runSQL', {data: {sql: sqldata}}, {
410
+ resolveMsg: null,
411
+ rejectMsg: '更新收费记录订单号失败'
412
+ })
413
+
414
+ this.cancelHand3(this.examinerow)
415
+ },
416
+ cancelHand3(row) {
417
+ // 抄表加入权限
418
+ if (!this.$login.r.find(value => value == '机表抄表冲正')) {
419
+ this.$showMessage('当前登录用户没有冲正权限, 请联系管理员!')
420
+ return
421
+ }
422
+ // console.log('抄表冲正。、。。、', row)
423
+ let param = {
424
+ f_hand_id: row.id,
425
+ operInfo: {
426
+ f_operator: this.$login.f.name,
427
+ f_operatorid: this.$login.f.id,
428
+ f_orgid: this.$login.f.orgid,
429
+ f_orgname: this.$login.f.orgs,
430
+ f_depid: this.$login.f.depids,
431
+ f_depname: this.$login.f.deps
432
+ }
433
+ }
434
+ let url = 'rs/logic/sale_commonEnterCancel'
435
+ this.$resetpost(url, {data: param}, {warnMsg: '确定对这条记录进行撤销吗?'}).then(() => {
436
+ this.search()
437
+ this.close()
438
+ })
439
+ },
440
+ down(type, condition, data) {
441
+ co(downGen(type, condition, data, this))
442
+ },
443
+ // 单条下发计划
444
+ downHand(row) {
445
+ console.log('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' + row.f_userfiles_id)
446
+ this.down('single', `f_userfiles_id = '${row.f_userfiles_id}'`, row)
447
+ },
448
+ // 批量下发计划
449
+ batchDownHand() {
450
+ this.down('batch', this.model.condition, this.model.count)
451
+ },
452
+ // batchDownHand () {
453
+ // this.condition = ''
454
+ // let count = 0
455
+ // for (let plan of this.plans){
456
+ // if(plan.state){
457
+ // this.condition = this.condition + plan.id + ','
458
+ // count = count + 1
459
+ // }
460
+ // }
461
+ // this.down('batch', `f_user_id in (${this.condition.substring(0,this.condition.length-1)})`,count)
462
+ // },
463
+ // allDownHand () {
464
+ // this.down('all', this.model.condition, this.model.count)
465
+ // },
466
+
467
+ validateDate() {
468
+ let currentDown = new Date(this.downModel.downDate)
469
+ console.log(new Date(this.$refs.paged.$refs.criteria.model.startDate))
470
+ console.log(new Date(this.$refs.paged.$refs.criteria.model.endDate))
471
+ return currentDown >= new Date(this.$refs.paged.$refs.criteria.model.startDate + ' 00:00:00') && currentDown <= new Date(this.$refs.paged.$refs.criteria.model.endDate + ' 23:59:59')
472
+ },
473
+
474
+ async examineconfirm() {
475
+ let sqldata = `update t_handplan set f_audit_state ='审核中',f_examinereason='${this.examinerow.f_examinereason}' where id ='${this.examinerow.id}'`
476
+ await this.$resetpost('rs/logic/runSQL', {data: {sql: sqldata}}, {resolveMsg: null, rejectMsg: null})
477
+ this.close()
478
+ this.search()
479
+ },
480
+ // 关闭下发计划得弹出框
481
+ close() {
482
+ this.show = false
483
+ this.inputtor_show = false
484
+ this.downConfirm = false
485
+ this.examineshow = false
486
+ this.examinetype = false
487
+ this.detailsShow = false
488
+ this.priceModel = false
489
+ // 初始化模态框数据
490
+ this.initModal()
491
+ if (this.uploadshow) {
492
+ this.uploadshow = false
493
+ // 讲选的文件清空
494
+ this.$refs.file.$el.querySelector('input').value = ''
495
+ }
496
+ },
497
+ initModal() {
498
+ this.downModel = {
499
+ downDate: Vue.$login.toStandardDateString(),
500
+ downWay: 'downWithUserfiles',
501
+ downInputtor: []
502
+ }
503
+ this.inputtorModel = {
504
+ inputtor: [],
505
+ reason: ''
506
+ }
507
+ },
508
+ // 判断当前登陆人是不是子公司的人员
509
+ isHead() {
510
+ return this.$login.f.parent.parent.name.includes('统一资源管理')
511
+ },
512
+ sort(field, rule) {
513
+ // 将所有排序方式设为不排序,实现相互排斥
514
+ for (let key in this.orderFields) {
515
+ if (key === field) {
516
+ this.orderFields[key] = rule
517
+ } else {
518
+ this.orderFields[key] = 'no'
519
+ }
520
+ }
521
+ // 如果新规则不排序,还原为默认排序
522
+ if (rule === 'no') {
523
+ this.model.paramSource.orderitem = `'${this.orderDefault}'`
524
+ } else {
525
+ this.model.paramSource.orderitem = `'${field} ${rule}'`
526
+ }
527
+ this.search()
528
+ },
529
+ guid() {
530
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
531
+ let r = Math.random() * 16 | 0,
532
+ v = c == 'x' ? r : (r & 0x3 | 0x8)
533
+ return v.toString(16)
534
+ })
535
+ },
536
+ computeAmount(event) {
537
+ let money = event.target.value
538
+ if (this.row.f_price_type === '固定气价') {
539
+ let price = this.$refs.mix_price.model.f_price
540
+ // 可以购买的总气量
541
+ let purchaseSum = (money / price).toFixed(2)
542
+ // 计算应抄底数
543
+ this.should_base = (this.row.f_last_tablebase - 0) + (purchaseSum - 0)
544
+ // 计算公式
545
+ this.designFormulas = `${purchaseSum}X${price}`
546
+ } else {
547
+ let mydata = this.$refs.statir.mydata
548
+ // 剩余1阶气量
549
+ let surplus1 = (mydata.f_stair1ceiling - (mydata.f_hasuse1 > 0 ? mydata.f_hasuse1 : 0))
550
+ // 把1阶买完的钱
551
+ let price1 = surplus1 * mydata.f_stair1price
552
+ // 剩余2阶气量
553
+ let surplus2 = (mydata.f_stair2ceiling - mydata.f_stair1ceiling - (mydata.f_hasuse2 > 0 ? mydata.f_hasuse2 : 0)).toFixed(2)
554
+ // 把2阶买完的钱
555
+ let price2 = surplus2 * mydata.f_stair2price
556
+ // 兼容一下
557
+ if (this.$refs.statir.jt != 3) {
558
+ this.$showMessage('暂不支持该气价类型的运算,请联系开发人员!')
559
+ }
560
+ // 开始计算
561
+ // 可以购买各阶梯量
562
+ let purchase1 = 0
563
+ let purchase2 = 0
564
+ let purchase3 = 0
565
+ if (money <= price1) {
566
+ purchase1 = (money / mydata.f_stair1price).toFixed(2)
567
+ } else if (money <= (price1 + price2)) {
568
+ purchase1 = surplus1
569
+ purchase2 = ((money - price1) / mydata.f_stair2price).toFixed(2)
570
+ } else {
571
+ purchase1 = surplus1
572
+ purchase2 = surplus2
573
+ purchase3 = ((money - price1 - price2) / mydata.f_stair3price).toFixed(2)
574
+ }
575
+ // 可以购买的总气量
576
+ let purchaseSum = (purchase1 - 0) + (purchase2 - 0) + (purchase3 - 0)
577
+ // 计算应抄底数
578
+ this.should_base = (this.row.f_last_tablebase - 0) + purchaseSum
579
+ // 计算公式
580
+ this.designFormulas = `${purchase1}X${mydata.f_stair1price} + ${purchase2}X${mydata.f_stair2price} + ${purchase3}X${mydata.f_stair3price}`
581
+ }
582
+ this.should_base = this.should_base.toFixed(2) - 0
583
+ }
584
+ },
585
+ watch: {
586
+ 'downModel.downWay'(val) {
587
+ if (val === 'downWithSelf') {
588
+ console.log('抄表员。。', this.inputtores2)
589
+ if (this.inputtores2.length > 0) {
590
+ this.downModel.downInputtor = [this.inputtores2[0].value]
591
+ }
592
+ }
593
+ },
594
+ 'detailsShow'(val) {
595
+ if (!val) {
596
+ this.should_base = 0
597
+ this.designFormulas = null
598
+ this.$els.inputmoney.value = 0
599
+ }
600
+ }
601
+ // 'model.rows'(val){
602
+ // console.log('页面切换',val)
603
+ // if(this.isChooseAll(val)){
604
+ // this.all = true
605
+ // }else{
606
+ // this.all = false
607
+ // }
608
+ // },
609
+ },
610
+ computed: {
611
+ danhutitle() {
612
+ return '单户抄表 当前计划年月:' + this.downModel.downDate
613
+ },
614
+ getCondition() {
615
+ // return {condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr}
616
+ return {
617
+ startDate: this.$refs.paged.$refs.criteria.model.startDate,
618
+ endDate: this.$refs.paged.$refs.criteria.model.endDate,
619
+ orderitem: this.orderDefault ? this.orderDefault : 'id',
620
+ condition: this.condition2
621
+ }
622
+ },
623
+
624
+ inputtores() {
625
+ // 获取抄表员
626
+ console.log('获取抄表员', this.$login.f)
627
+ let rs = []
628
+ if (this.$login.f.f_gasman.length > 0) {
629
+ for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
630
+ let temp = {
631
+ label: this.$login.f.f_gasman[i].name,
632
+ value: this.$login.f.f_gasman[i].name
633
+ }
634
+ rs.push(temp)
635
+ }
636
+ }
637
+ this.inputtores2 = rs
638
+ return [...rs]
639
+ },
640
+ whetherpaies() {
641
+ return [
642
+ {label: '全部', value: ''},
643
+ {label: '已缴费', value: '是'},
644
+ {label: '未缴费', value: '否'}
645
+ ]
646
+ },
647
+ // 界面细节权限
648
+ jurisdiction() {
649
+ console.log('抄表界面细节', this.$login.r)
650
+ return this.$login.r ? this.$login.r : []
651
+ }
652
+ }
653
+ }
654
+ </script>
655
+ <style lang="less">
656
+ #handManager {
657
+ display: flex;
658
+ justify-content: space-around;
659
+ align-items: center;
660
+
661
+ .btn {
662
+ margin: 0px;
663
+ }
664
+
665
+ .hand-loading {
666
+ border: 3px solid #ccc;
667
+ border-right-color: #337ab7;
668
+ border-radius: 50%;
669
+ animation: spin 0.6s linear;
670
+ position: absolute;
671
+ animation-iteration-count: infinite;
672
+ top: 0;
673
+ right: 50%;
674
+ z-index: 2;
675
+ display: block;
676
+ width: 28px;
677
+ height: 28px;
678
+ line-height: 28px;
679
+ text-align: center;
680
+ pointer-events: none;
681
+ }
682
+
683
+ @keyframes spin {
684
+ 100% {
685
+ transform: rotate(360deg);
686
+ }
687
+ }
688
+
689
+ .detail-panel {
690
+ text-align: center;
691
+ color: #31708f;
692
+ background-color: #e8f1f9;
693
+ border-color: #F2F6FA;
694
+ }
695
+ }
696
+
697
+ #hand_manager_grid {
698
+ thead {
699
+ position: relative;
700
+ z-index: 2;
701
+ }
702
+ }
703
+
704
+ #machineHandManager {
705
+ .color-red {
706
+ color: red;
707
+ }
708
+ }
709
+ </style>
@@ -1,6 +1,6 @@
1
1
  // 分公司特殊组件页面注册
2
-
2
+ import Vue from 'vue'
3
3
  export default function () {
4
4
  // 换表 挪到公共 加配置了
5
- // Vue.component('change-meter', (resolve) => { require(['./ChangeMeter'], resolve) })
5
+ // Vue.component('machine-hand', (resolve) => { require(['./iotHand'], resolve) })
6
6
  }