sale-client 3.6.143 → 3.6.144

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  var path = require('path')
2
- const [ serverRul, localUrl ] = ['http://192.168.50.4:8400/', 'http://127.0.0.1:8080/']
2
+ const [ serverRul, localUrl ] = ['http://113.219.193.157:8100/', 'http://113.219.193.157:8100/']
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.143",
3
+ "version": "3.6.144",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -629,7 +629,11 @@
629
629
  let calFee = ((this.model.f_collection - 0) + (this.row.f_balance) - (this.alldue_fee)).toFixed(4)
630
630
  // 通过收款进行划价
631
631
  let getGas = await this.$CommonService.feeCalculate(this.model, calFee)
632
- this.model.f_pregas = parseInt(getGas.data.gas)
632
+ if (this.row.f_isdecimal === '是') {
633
+ this.model.f_pregas = getGas.data.gas.toFixed(this.row.f_gas_decimal || 4)
634
+ } else {
635
+ this.model.f_pregas = parseInt(getGas.data.gas)
636
+ }
633
637
  let dymoney2 = await this.$CommonService.gasCalculate(this.model, this.model.f_pregas)
634
638
  this.model.chargeprice = dymoney2.data.chargeprice
635
639
  Object.assign(this.model, this.model, dymoney2.data)
@@ -607,7 +607,7 @@ export default {
607
607
  if (!row.f_tablebase || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(3) < 0) {
608
608
  return
609
609
  }
610
- if (row.f_tablebase.toString().split(".")[1].length>3) {
610
+ if (row.f_tablebase.toString().split(".").length>1 && row.f_tablebase.toString().split(".")[1].length>3) {
611
611
  Vue.set(row, 'error', '底数最多只能输入小数点后3位')
612
612
  return
613
613
  }
@@ -75,7 +75,7 @@
75
75
  </td>
76
76
  <td style="text-align:center">已{{row.f_bill_state}}</td>
77
77
  <td style="text-align:center">
78
- <dropdown v-if="row.f_using_number != row.f_end_number">
78
+ <dropdown>
79
79
  <button type="button" data-toggle="dropdown" style="border: 0px;background: none;">
80
80
  <span class="glyphicon glyphicon-th-list" style="position: inherit;"></span>
81
81
  </button>
@@ -138,6 +138,7 @@ export default {
138
138
  f_bill_number: req.FPHM,
139
139
  f_jym: req.INVOICE_CHECK_CODE,
140
140
  f_bill_url: req.PDF_URL,
141
+ f_local_bill_url: req.localPath,
141
142
  f_bill_state: '开票成功',
142
143
  f_sign_result: req.RETURN_MESSAGE
143
144
  }
@@ -221,6 +222,7 @@ export default {
221
222
  f_bill_number: req.FPHM,
222
223
  f_jym: req.INVOICE_CHECK_CODE,
223
224
  f_bill_url: req.PDF_RED_URL,
225
+ f_local_bill_url: req.localPath,
224
226
  f_sign_result: req.RETURN_MESSAGE,
225
227
  f_bill_state: '冲红'
226
228
  })
@@ -330,6 +332,7 @@ export default {
330
332
  f_bill_number: req.FPHM,
331
333
  f_jym: req.INVOICE_CHECK_CODE,
332
334
  f_bill_url: req.PDF_URL,
335
+ f_local_bill_url: req.localPath,
333
336
  f_sign_result: req.RETURN_MESSAGE,
334
337
  f_bill_state: '开票成功'
335
338
  })
@@ -128,8 +128,8 @@
128
128
  <th style="text-align:center">{{ row.f_charge_type }}</th>
129
129
  <th style="text-align:center">{{ row.f_operate_date }}</th>
130
130
  <th style="text-align:center">
131
- <button class="btn btn-link" v-if="row.f_bill_url"
132
- @click="$parent.$parent.$parent.watch_ch(row.f_bill_url)">
131
+ <button class="btn btn-link" v-if="row.f_local_bill_url || row.f_bill_url"
132
+ @click="$parent.$parent.$parent.watch_ch(row.f_local_bill_url || row.f_bill_url)">
133
133
  查看发票
134
134
  </button>
135
135
  </th>
@@ -0,0 +1,1008 @@
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" style="width: 90px" @click="$parent.$parent.downloadFiles()">模板下载</button>
63
+ <button class="button_search button_spacing" @click="$parent.$parent.clickupshow()">抄表导入</button>
64
+ <!--<button class="button_clear button_spacing" @click="$parent.$parent.searchPrint()">抄表模板导出</button>-->
65
+ <!--<button class="btn btn-success width-100" @click="$parent.$parent.batchAudit()">批量审核</button>
66
+ -->
67
+ <export-excel
68
+ :data="{startDate: $parent.$parent.startDate, endDate: $parent.$parent.endDate, condition: $parent.$parent.model.condition,orderitem: $parent.$parent.orderitem?$parent.$parent.orderitem :'f_userinfo_code'}"
69
+ :field="$parent.$parent.getfield"
70
+ sqlurl="rs/logic/saleExport" progress="saleGetExportProgress" sql-name="getCardPlan"
71
+ template-name='卡表抄表导出'
72
+ :choose-col="true">
73
+ </export-excel>
74
+ <div
75
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
76
+ @click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
77
+ </div>
78
+ </div>
79
+ <div class="row" v-show="$parent.$parent.criteriaShow">
80
+ <div class="col-sm-2 form-group">
81
+ <label class="font_normal_body">&emsp;小区域</label>
82
+ <v-select :value.sync="model.f_small_area" v-model="model.f_small_area"
83
+ :options='$parent.$parent.smallareas' placeholder='小区域'
84
+ close-on-select :search='true'
85
+ condition="f_small_area = '{}'"></v-select>
86
+ </div>
87
+ <div class="col-sm-2 form-group">
88
+ <label class="font_normal_body">用户姓名</label>
89
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_user_name" placeholder='用户姓名'
90
+ condition="f_user_name = '{}'">
91
+ </div>
92
+ <div class="col-sm-2 form-group">
93
+ <label class="font_normal_body">用户地址</label>
94
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_address"
95
+ condition="f_address like '%{}%'" placeholder='用户地址'
96
+ >
97
+ </div>
98
+ <div class="col-sm-2 form-group">
99
+ <label class="font_normal_body">小&emsp;&emsp;区</label>
100
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_residential_area"
101
+ condition="f_residential_area like '%{}%'" placeholder='小区'
102
+ >
103
+ </div>
104
+ <div class="col-sm-2 form-group">
105
+ <label class="font_normal_body">楼&emsp;&emsp;栋</label>
106
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_building"
107
+ condition="f_building like '%{}%'" placeholder='楼栋'
108
+ >
109
+ </div>
110
+ <div class="col-sm-2 form-group">
111
+ <label class="font_normal_body">单&emsp;&emsp;元</label>
112
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_unit"
113
+ condition="f_unit like '%{}%'" placeholder='单元'
114
+ >
115
+ </div>
116
+ <div class="col-sm-2 form-group">
117
+ <label class="font_normal_body">楼&emsp;&emsp;层</label>
118
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_floor"
119
+ condition="f_floor like '%{}%'" placeholder='楼层'
120
+ >
121
+ </div>
122
+ <div class="col-sm-2 form-group">
123
+ <label class="font_normal_body">&emsp;门牌号</label>
124
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_room"
125
+ condition="f_room like '%{}%'" placeholder='门牌号'
126
+ >
127
+ </div>
128
+ <div class="col-sm-2 form-group">
129
+ <label class="font_normal_body">表&emsp;&emsp;号</label>
130
+ <input style="width:60%" type="text" class="form-control" v-model="model.f_meternumber"
131
+ condition="f_meternumber like '%{}%'" placeholder='表号'
132
+ >
133
+ </div>
134
+ <!--</div>-->
135
+ <!--<div class="row">-->
136
+ <div class="col-sm-2 form-group">
137
+ <label class="font_normal_body">&emsp;抄表员</label>
138
+ <v-select :value.sync="model.f_inputtor" v-model='model.f_inputtor'
139
+ :options='$parent.$parent.inputtore' placeholder='抄表员'
140
+ close-on-select multiple="true"
141
+ ></v-select>
142
+ </div>
143
+ <div class="col-sm-2 form-group">
144
+ <label class="font_normal_body">用户类型</label>
145
+ <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
146
+ :options='$parent.$parent.usertypes' placeholder='用户类型'
147
+ close-on-select :search='true'
148
+ condition="f_user_type = '{}'"></v-select>
149
+ </div>
150
+ <div class="col-sm-2 form-group">
151
+ <label class="font_normal_body">用气性质</label>
152
+ <v-select :value.sync="model.f_gasproperties" v-model="model.f_gasproperties"
153
+ :options='$parent.$parent.gasproperties' placeholder='用气性质'
154
+ close-on-select :search='true'
155
+ condition="f_gasproperties = '{}'"></v-select>
156
+ </div>
157
+ <div class="col-sm-2 form-group">
158
+ <label class="font_normal_body">用户等级</label>
159
+ <v-select :value.sync="model.f_user_level" v-model="model.f_user_level"
160
+ :options='$parent.$parent.userlevels' placeholder='用户等级'
161
+ style="width:60%"
162
+ close-on-select
163
+ condition="f_user_level = '{}'"></v-select>
164
+ </div>
165
+ <!-- <div class="col-sm-2 form-group">
166
+ <label class="col-sm-4 font_normal_body">气价名称</label>
167
+ <v-select :value.sync="model.f_price_name"
168
+ v-model="model.f_price_name"
169
+ :options='$parent.$parent.pricenames' placeholder='气价名称'
170
+ condition="f_price_name= '{}'" class="col-sm-8"
171
+ close-on-select></v-select>
172
+ </div>-->
173
+ <div class="col-sm-2 form-group">
174
+ <label class="font_normal_body">抄表状态</label>
175
+ <v-select :value.sync="model.f_meter_state" v-model="model.f_meter_state"
176
+ :options='$parent.$parent.meterstates' placeholder='抄表状态'
177
+ close-on-select f_gasbrand_id
178
+ condition="f_meter_state {}"></v-select>
179
+ </div>
180
+ <div class="col-sm-2 form-group">
181
+ <label class="font_normal_body">气表品牌</label>
182
+ <v-select :value.sync="model.gasbrand" v-model="model.gasbrand"
183
+ :options='$parent.$parent.meterbrands' placeholder='气表品牌' close-on-select
184
+ v-model='$parent.$parent.gasbrand'
185
+ condition="f_meter_brand = '{}'"
186
+ ></v-select>
187
+ </div>
188
+ <res-select-group :show-component="['company','department','operator']" :initres="$parent.$parent.initres"
189
+ @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
190
+ <hl-downdata class="col-sm-1 form-group" :info="model"></hl-downdata>
191
+ </div>
192
+
193
+ </div>
194
+ </criteria>
195
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid id="CardHand">
196
+ <template partial='head'>
197
+ <tr>
198
+ <th>
199
+ <nobr>序号</nobr>
200
+ </th>
201
+ <!-- <th>户编号</th>-->
202
+ <!-- <th>基本信息</th>-->
203
+ <th>
204
+ <nobr>
205
+ <data-order field="f_userinfo_code" name="户编号"
206
+ :order.sync="$parent.$parent.$parent.orderFields.f_userinfo_code"></data-order>
207
+ </nobr>
208
+ </th>
209
+ <th>
210
+ <nobr>
211
+ <data-order field="f_address" name="基本信息"
212
+ :order.sync="$parent.$parent.$parent.orderFields.f_address"></data-order>
213
+ </nobr>
214
+ </th>
215
+ <th>
216
+ <nobr>用户等级</nobr>
217
+ </th>
218
+ <th>
219
+ <nobr>小区</nobr>
220
+ </th>
221
+ <th>
222
+ <nobr>表号</nobr>
223
+ </th>
224
+ <th>
225
+ <nobr>用户电话</nobr>
226
+ </th>
227
+ <th>
228
+ <nobr>抄表员</nobr>
229
+ </th>
230
+ <th>
231
+ <nobr>总购金额</nobr>
232
+ </th>
233
+ <th>
234
+ <nobr>累购气量</nobr>
235
+ </th>
236
+ <th>
237
+ <nobr>
238
+ <data-order field="f_hand_date" name="下发日期"
239
+ :order.sync="$parent.$parent.$parent.orderFields.f_hand_date"></data-order>
240
+ </nobr>
241
+ </th>
242
+ <th>
243
+ <nobr>
244
+ <data-order field="f_last_input_date" name="上次抄表录入日期"
245
+ :order.sync="$parent.$parent.$parent.orderFields.f_last_input_date"></data-order>
246
+ </nobr>
247
+ </th>
248
+ <th>
249
+ <nobr>
250
+ <data-order field="f_input_date" name="抄表录入日期"
251
+ :order.sync="$parent.$parent.$parent.orderFields.f_input_date"></data-order>
252
+ </nobr>
253
+ </th>
254
+ <th>
255
+ <nobr>上期底数</nobr>
256
+ </th>
257
+ <th>
258
+ <nobr>本期底数</nobr>
259
+ </th>
260
+ <th>
261
+ <nobr>表状态</nobr>
262
+ </th>
263
+ <th>
264
+ <nobr>实际用量</nobr>
265
+ </th>
266
+ <th>
267
+ <nobr>剩余气量</nobr>
268
+ </th>
269
+ <th>
270
+ <nobr>状态</nobr>
271
+ </th>
272
+ <th>
273
+ <nobr>操作</nobr>
274
+ </th>
275
+ <th>
276
+ <nobr>备注</nobr>
277
+ </th>
278
+ </tr>
279
+ </template>
280
+ <template partial='body'>
281
+ <td style="text-align: center;">{{ $index + 1 }}</td>
282
+ <td style="text-align: center;">{{ row.f_userinfo_code }}</td>
283
+ <td style="text-align: center;">
284
+ {{ row.f_user_name }}&nbsp;&nbsp;{{ row.f_gasproperties }}&nbsp;&nbsp;{{
285
+ row.f_user_phone
286
+ }}&nbsp;&nbsp;{{ row.f_address }}
287
+ </td>
288
+ <td>{{ row.f_user_level }}</td>
289
+ <td style="text-align: center;">{{ row.f_residential_area }}</td>
290
+ <td style="text-align: center;">{{ row.f_meternumber }}</td>
291
+ <td style="text-align: center;">{{ row.f_user_phone }}</td>
292
+ <td style="text-align: center;">{{ row.f_inputtor }}</td>
293
+ <td style="text-align: center;">{{ row.total_fee }}</td>
294
+ <td style="text-align: center;">{{ row.total_gas }}</td>
295
+ <td>{{row.f_hand_date}}</td>
296
+ <td>{{row.f_last_input_date}}</td>
297
+ <td style="text-align: center;">
298
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
299
+ 'has-success has-feedback': !row.error,
300
+ 'has-error has-feedback': row.error}"
301
+ v-if="row.f_meter_state === '未抄表'">
302
+ <datepicker id="f_hand_date" placeholder="抄表录入日期"
303
+ v-model="row.f_input_date"
304
+ :value.sync="row.f_input_date"
305
+ :format="'yyyy-MM-dd HH:mm:ss'"
306
+ :show-reset-button="true">
307
+ </datepicker>
308
+ </div>
309
+ <div v-else>
310
+ {{ row.f_input_date }}
311
+ </div>
312
+ </td>
313
+ <td style="text-align: center;">{{ row.f_last_tablebase }}</td>
314
+ <td id="hand-creat" v-if="row.f_meter_state === '未抄表' && row.crossyear && $parent.$parent.$parent.config.crossyear ">
315
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
316
+ 'has-success has-feedback': !row.error,
317
+ 'has-error has-feedback': row.error}"
318
+ >
319
+ <button type="button" name="button" class="btn btn-link"
320
+
321
+ @click.stop="$parent.$parent.$parent.yearhand(row) "
322
+ >跨年抄表
323
+ </button>
324
+ <!-- <input title="只能录入整数" type="text" class="input_search" v-model="row.f_tablebase"-->
325
+ <!-- @blur="$parent.$parent.$parent.beforenter($index, row)"-->
326
+ <!-- v-next-el="{id: $index+2}" :id="$index+1" style="width: 100px;padding: 6px;"-->
327
+ <!-- @focus="$parent.$parent.$parent.clearError(row)"-->
328
+ <!-- :disabled="row.state === '开始'">-->
329
+ </div>
330
+
331
+ <span v-if="row.error && row.error !== ''" style="color: #ff0000;">{{row.error}}</span>
332
+ </td>
333
+ <td style="text-align: center;" v-if="row.f_meter_state === '未抄表' && ! row.crossyear ">
334
+ <div class="form-group" style="margin-bottom:0px;" :class="{
335
+ 'has-success has-feedback': row.f_tablebase ? ((row.f_last_tablebase-0) <= (row.f_tablebase -0)) : false,
336
+ 'has-error has-feedback': row.f_tablebase ? ((row.f_last_tablebase-0) > (row.f_tablebase -0) ) : false}"
337
+ >
338
+ <input type="text" class="form-control" v-model="row.f_tablebase"
339
+ @blur="$parent.$parent.$parent.enter(row)"
340
+ v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
341
+ :disabled="row.state === '开始'"
342
+ @focus="$parent.$parent.$parent.clearError(row)">
343
+ </div>
344
+
345
+ <span v-if="row.error" style="color: red;">{{ row.error }}</span>
346
+ </td>
347
+ <td id="hand-creat" v-if="row.f_meter_state !== '未抄表' ">
348
+ {{row.f_tablebase}}
349
+ </td>
350
+ <td>
351
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
352
+ 'has-success has-feedback': !row.error,
353
+ 'has-error has-feedback': row.error}"
354
+ v-if="row.f_meter_state === '未抄表' && row.states !== 0">
355
+ <v-select :value.sync="row.f_result_state" v-model="row.f_result_state"
356
+ :options='$parent.$parent.$parent.resultstate' placeholder='表状态'
357
+ width="100%"
358
+ :value-single="true"
359
+ close-on-select
360
+ condition="f_adjustable_name = '{}'"></v-select>
361
+ <!-- <span id="inputError2Status" class="sr-only">(error)</span> -->
362
+ </div>
363
+ <div v-else>
364
+ {{ row.f_result_state }}
365
+ </div>
366
+ </td>
367
+
368
+
369
+ <td style="text-align: center;">{{ row.f_actualtablebase }}</td>
370
+ <td style="text-align: center;">{{ row.total_gas - (row.f_tablebase - row.f_initial_base) }}</td>
371
+ <td style="text-align: center;">{{ row.f_meter_state }}</td>
372
+ <td style="text-align: center;">
373
+
374
+ <!-- <button type="button" name="button" class="btn btn-link"-->
375
+ <!-- @click.stop="$parent.$parent.$parent.modify(row)"-->
376
+ <!-- v-if="row.f_meter_state === '已抄表' && !$parent.$parent.$parent.jurisdiction.includes('审核权限')">修正</button>-->
377
+
378
+ <!-- <button type="button" name="button" class="btn btn-link"
379
+ @click.stop="$parent.$parent.$parent.pass(row)"
380
+ v-if="$parent.$parent.$parent.jurisdiction.includes('审核权限') && row.f_meter_state === '待审核'">通过</button>
381
+
382
+ <button type="button" name="button" class="btn btn-link"
383
+ @click.stop="$parent.$parent.$parent.nopass(row)"
384
+ v-if="row.f_meter_state === '待审核' && $parent.$parent.$parent.jurisdiction.includes('审核权限')">不通过</button>-->
385
+ <button type="button" name="button" class="button_search button_spacing width-60" title="权限名称:(卡表抄表冲正)"
386
+ @click.stop="$parent.$parent.$parent.cardhandCenter(row)"
387
+ v-if="row.f_meter_state === '已抄表'">冲正
388
+ </button>
389
+ </td>
390
+ <td><span title="{{row.f_card_reason}}"
391
+ v-if="row.f_card_reason">{{ row.f_card_reason.substring(0, 5) }} ...</span>
392
+ </td>
393
+ </template>
394
+ </data-grid>
395
+ </criteria-paged>
396
+ <table class="table-hover">
397
+ <tr style="position: relative" class="table-bordered">
398
+ <td
399
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;color: #5CB95C;font-weight: bold">
400
+ 汇总信息
401
+ </td>
402
+ <td style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px">
403
+ 抄表用量:&emsp;{{ sumsmodel.f_actualtablebase }}
404
+ </td>
405
+ </tr>
406
+ </table>
407
+ <modal :show.sync="showstair" backdrop="false">
408
+ <header slot="modal-header" class="modal-header">
409
+ <button type="button" class="close" @click="closeerr"><span>&times;</span></button>
410
+ <h4 class="modal-title">跨阶抄表</h4>
411
+ </header>
412
+ <article slot="modal-body" class="modal-body">
413
+ <div class="row">
414
+ <div class="form-group col-sm-12">
415
+ <label class="col-xs-2 col-sm-2 col-md-2 form-group">本期表底数</label>
416
+ <div class="col-xs-4 col-sm-4 col-md-4 form-group">
417
+ <input type="number" class="form-control show-font" v-model="row.f_tablebase" width="80%" @blur="getamount(row)" placeholder="本期表底数" maxlength="10">
418
+ </div>
419
+
420
+ </div>
421
+ <div class="form-group col-sm-12">
422
+ <label class="col-xs-2 col-sm-2 col-md-2 form-group">用气量</label>
423
+ <div class="col-xs-4 col-sm-4 col-md-4 form-group">
424
+ <input type="number" class="form-control show-font" v-model="row.f_actualtablebase" width="80%" disabled placeholder="用气量" maxlength="10">
425
+ </div>
426
+ </div>
427
+
428
+ <div v-for="(index,item) in stairdata" class="row">
429
+ <div class="col-xs-2 col-sm-2 col-md-2 form-group">
430
+ <span class="text-left font" style="color: darkblue">{{ item.year }}周期</span>
431
+ </div>
432
+ <div class="col-xs-4 col-sm-4 col-md-4 form-group">
433
+ <input type="number" class="form-control show-font" v-model="item.f_dispensed_amount" width="80%" placeholder="分配量(单位:方)" maxlength="10">
434
+ </div>
435
+ <div class="col-xs-4 col-sm-4 col-md-4 form-group">
436
+ <input type="number" class="form-control show-font" v-model="item.f_dispensed_price" placeholder="金额(单位:元)" maxlength="10">
437
+ </div>
438
+ </div>
439
+ </div>
440
+ </article>
441
+ <footer slot="modal-footer" class="modal-footer">
442
+ <button type="button" class="btn btn-default" @click='closeyear'>取消</button>
443
+ <button type="button" class="btn btn-default" @click='confirmyearhand'>确认</button>
444
+ </footer>
445
+ </modal>
446
+ <modal :show.sync="cardCental" v-ref:modal backdrop="false">
447
+ <header slot="modal-header" class="modal-header">
448
+ <h4 class="modal-title">卡表抄表冲正</h4>
449
+ </header>
450
+ <article slot="modal-body" class="modal-body">
451
+ <div class="form-group">
452
+ <label class="label-control">撤销原因</label>
453
+ <textarea class="form-control" v-model="cardreason" rows="3" placeholder="请填写撤销原因"></textarea>
454
+ </div>
455
+ </article>
456
+ <footer slot="modal-footer" class="modal-footer">
457
+ <button v-show="cardCental" type="button" class="btn btn-default" @click='close'>取消</button>
458
+ <button v-show="cardCental" type="button" class="btn btn-success" @click='cancel(this.cardCentalData)'>确认
459
+ </button>
460
+ </footer>
461
+ </modal>
462
+ </div>
463
+ </div>
464
+ </template>
465
+ <script>
466
+ import {HttpResetClass, PagedList} from 'vue-client'
467
+ import Vue from 'vue'
468
+ import AppData from '../../stores/AppData'
469
+ import * as Util from '../../Util'
470
+ import co from 'co'
471
+
472
+ let loadParamGem = async function (self) {
473
+ await self.$LoadParams.loadParam(self.f_filialeid)
474
+ await self.$getConfig(self, 'CardHandManager')
475
+ self.loadMeterBooks()
476
+ await self.search()
477
+ }
478
+ let modifyGen = function* (self, row, url) {
479
+ console.log('抄表修正,。。。', row, url)
480
+ self.cardCental = false
481
+ self.cardCentalData = ''
482
+ row.f_user_id = row.f_user_id + ''
483
+ // 删除待审核的抄表记录
484
+ let state = yield self.$resetpost(url, {data: row}, {warnMsg: null, rejectMsg: null, resolveMsg: null})
485
+ if (state.data === '异常') {
486
+ Vue.showAlert('该笔抄表有差额记录,请先冲正!!!', 'warning', 4000)
487
+ return
488
+ } else if (state.data === '正常') {
489
+ Vue.showAlert('冲正成功,稍等片刻,正在重新查询!', 'success', 4000)
490
+ }
491
+ self.cardreason = ''
492
+ // 重新查询界面
493
+ self.search()
494
+ }
495
+
496
+ export default {
497
+ title: '卡表抄表',
498
+ data () {
499
+ return {
500
+ timer: null,
501
+ // 请求对象(批量导入,查询进度使用)
502
+ HttpReset: new HttpResetClass(),
503
+ resultstate: this.$appdata.getParam('卡表抄表表状态'),
504
+ criteriaShow: false,
505
+ orderitem: 'f_userinfo_code',
506
+ model: new PagedList('rs/sql/getCardPlan', 50, {orderitem: this.orderitem ? '"' + this.orderitem + ' "' : `'f_userinfo_code'`}, {f_actualtablebase: 0}),
507
+ // model: new PagedList('rs/sql/cardHands', 50),
508
+ startDate: Util.toStartAndEndDateString()[0],
509
+ endDate: Util.toStartAndEndDateString()[1],
510
+ handDate: null,
511
+ row:{},
512
+ stairdata:[],
513
+ showstair:false,
514
+ batch_audit: false,
515
+ config: {
516
+ crossyear: false
517
+ },
518
+ cardCental: false,
519
+ // 合计数据
520
+ sumsmodel: {},
521
+ orderFields: {
522
+ f_userinfo_id: 'no'
523
+ },
524
+ f_filialeid: this.$login.f.orgid,
525
+ cardreason: '',
526
+ cardCentalData: '',
527
+ getfield: {
528
+ 'id': '抄表单编号',
529
+ 'f_userinfo_code': '客户编号',
530
+ 'f_user_name': '基本信息',
531
+ 'f_meternumber': '表号',
532
+ 'f_user_phone': '用户电话',
533
+ 'f_inputtor': '抄表员',
534
+ 'total_fee': '总购金额',
535
+ 'total_gas': '累购气量',
536
+ 'f_hand_date': '下发日期',
537
+ 'f_last_input_date': '上次抄表录入日期',
538
+ 'f_input_date': '抄表录入日期',
539
+ 'f_last_tablebase': '上期底数',
540
+ 'f_tablebase': '本期底数',
541
+ 'f_actualtablebase': '实际用量',
542
+ 'f_meter_state': '状态'
543
+ },
544
+ meterbrands: [{label: '全部', value: ''}],
545
+ upshow: false,
546
+ initres: {
547
+ org: [this.$login.f.orgid],
548
+ dep: [],
549
+ user: []
550
+ },
551
+ orgCondtionStr: ''
552
+ }
553
+ },
554
+ beforeDestroy () {
555
+ // 销毁定时器
556
+ if (this.timer) clearInterval(this.timer)
557
+ },
558
+ ready () {
559
+ this.$refs.paged.$refs.criteria.model.startDate = Util.toStartAndEndDateString()[0]
560
+ this.$refs.paged.$refs.criteria.model.endDate = Util.toStartAndEndDateString()[1]
561
+ loadParamGem(this)
562
+ },
563
+ methods: {
564
+ getamount (row) {
565
+ this.row = row
566
+ if(row.f_tablebase<row.f_last_tablebase){
567
+ this.$showMessage('本地底数小于上期底数')
568
+ }else{
569
+ row.f_actualtablebase = (row.f_tablebase - 0) - (row.f_last_tablebase - 0)
570
+ }
571
+ },
572
+ confirmyearhand () {
573
+ if (this.stairdata){
574
+ let amount = 0
575
+ let price = 0
576
+ let f_actualtablebase = this.row.f_actualtablebase
577
+
578
+ for (let i=0;i<this.stairdata.length;i++){
579
+ console.log('qiliang----------------->',this.stairdata[i].f_dispensed_amount)
580
+ if (this.stairdata[i].f_dispensed_amount && this.stairdata[i].f_dispensed_price){
581
+ amount = amount + parseFloat(this.stairdata[i].f_dispensed_amount)
582
+ console.log("amount-------->",amount)
583
+ price = price + parseFloat(this.stairdata[i].f_dispensed_price)
584
+ console.log("price-------->",price)
585
+ }
586
+ }
587
+
588
+ console.log("amount--最后算的------>",amount)
589
+ console.log("f_actualtablebase--最后算的------>",f_actualtablebase)
590
+
591
+ if (f_actualtablebase !== amount && amount >0){
592
+ this.$showMessage('请重新录入分配气量')
593
+ return
594
+ }
595
+ }
596
+ this.row.dataArr = this.stairdata
597
+ let url = 'rs/logic/yearCardCommonEnter'
598
+ this.$resetpost(url, {data: this.row}, {warnMsg: '确定对这条记录进行抄表吗?'}).then(() => {
599
+ this.search()
600
+ this.showstair =false
601
+ this.row = null
602
+ })
603
+ },
604
+ closeyear(){
605
+ this.showstair =false
606
+ this.row = null
607
+ },
608
+ yearhand (data) {
609
+ this.stairdata = []
610
+ this.row = data
611
+ if (data.f_last_input_date) {
612
+ console.log('核算时间----------', data.f_last_input_date)
613
+ let date1 = data.f_last_input_date // 上次抄表时间
614
+ let date2 = new Date(Date.parse(date1)) // 上次抄表时间
615
+ let date3 = new Date() // 当前时间
616
+ let days = date3.getFullYear() - date2.getFullYear()
617
+ console.log('年份差值----------->', days)
618
+ if (days >= 1) {
619
+ console.log('days大于1就进来')
620
+ for (let i = 0; i <= days; i++) {
621
+ let year = date2.getFullYear() + i
622
+ console.log('加入的年份------->', year)
623
+ let temp = {
624
+ f_dispensed_amount: null,
625
+ f_dispensed_price: null,
626
+ year: year
627
+ }
628
+ this.stairdata.push(temp)
629
+ }
630
+ this.showstair = true
631
+ console.log('数组长度---------->', this.stairdata)
632
+ }
633
+ }
634
+ },
635
+ downloadFiles () {
636
+ let downurl = 'rs/downloadfile/file?filename=卡表批量抄表导入模板'
637
+ this.$resetget(downurl, {}).then(res => {
638
+ var link = document.createElement('a')
639
+ link.target = '_blank'
640
+ link.href = downurl
641
+ link.setAttribute('download', '卡表批量抄表导入模板.xlsx')
642
+ document.body.appendChild(link)
643
+ link.click()
644
+ })
645
+ },
646
+ hidden () {
647
+ this.criteriaShow = !this.criteriaShow
648
+ },
649
+ loadMeterBooks () {
650
+ let meterbrand = this.$GetSaleParam.getGasbrand()
651
+ for (let row of meterbrand) {
652
+ console.log(row)
653
+ this.meterbrands.push({label: row.label, value: row.label})
654
+ }
655
+ },
656
+ search () {
657
+ this.$refs.paged.$refs.criteria.search()
658
+ },
659
+ clickupshow () {
660
+ console.log('in upload', this.upshow, !this.upshow)
661
+ this.upshow = !this.upshow
662
+ },
663
+ searchPrint () {
664
+ console.log('mode', this.model)
665
+ let cons = this.model.params
666
+ console.log('查询条件', cons)
667
+ let data = {
668
+ 'body': {
669
+ 'data': {
670
+ 'condition': ''
671
+ },
672
+ 'field': [],
673
+ 'templateName': '',
674
+ 'sqlName': ''
675
+ },
676
+ 'condition': cons,
677
+ 'sqlname': 'cardHands'
678
+ }
679
+ this.$resetpost('rs/logic/allExportExcel', {data: data}, {resolveMsg: null, rejectMsg: '上传失败'}).then((res) => {
680
+ if (res.data === 'no user') {
681
+ this.$showAlert(`无匹配用户,无法导出对应excel`, 'warning', 2000)
682
+ } else {
683
+ var link = document.createElement('a')
684
+ res.data.forEach((item) => {
685
+ console.log('导出路径', item.filename)
686
+ let path = item.filename
687
+ // 本地
688
+ // let pathName = "http://" + location.host + "/excel" + path.split('excel')[1]
689
+ // 服务器
690
+ let pathName = 'http://' + location.host + '/webapps' + path.split('webapps')[1]
691
+ link.href = pathName
692
+ console.log('=============================', path.split('excel/')[1])
693
+ link.download = path.split('excel/')[1]
694
+ link.dispatchEvent(new MouseEvent('click'))
695
+ })
696
+ }
697
+ })
698
+ },
699
+ changeType () {
700
+ if (this.$refs.paged.$refs.criteria.model.f_meter_classify && this.$refs.paged.$refs.criteria.model.f_meter_classify.length > 0) {
701
+ this.$dispatch('type', this.$refs.paged.$refs.criteria.model.f_meter_classify[0])
702
+ }
703
+ },
704
+ getRes (obj) {
705
+ this.orgCondtionStr = obj
706
+ },
707
+ selfSearch (args) {
708
+ this.sumsmodel = this.$refs.paged.$refs.grid.model.sums
709
+
710
+ this.startDate = this.$refs.paged.$refs.criteria.model.startDate
711
+ this.endDate = this.$refs.paged.$refs.criteria.model.endDate
712
+ console.log('卡表抄表查询参数,。,。', args, this.model)
713
+ this.model.params.startDate = this.$refs.paged.$refs.criteria.model.startDate
714
+ this.model.params.endDate = this.$refs.paged.$refs.criteria.model.endDate
715
+
716
+ // 抄表员查询条件
717
+ this.inputtouPerson = this.$refs.paged.$refs.criteria.model.f_inputtor
718
+ if (this.inputtouPerson.length !== 0) {
719
+ let str = JSON.stringify(this.inputtouPerson)
720
+ str = str.replace(/"/g, `'`)
721
+ str = str.replace(/\[/g, ``)
722
+ str = str.replace(/\]/g, ``)
723
+ console.log('=====抄表员model22222222222绑定====', str)
724
+ // 查询多个抄表员时条件
725
+ args.condition += ` and f_inputtor in ( ${str} )`
726
+ }
727
+
728
+ if (!this.orgCondtionStr) {
729
+ args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
730
+ } else {
731
+ args.condition = `${args.condition}` + this.orgCondtionStr
732
+ }
733
+ if (args.model.f_meter_state.length > 0) {
734
+ console.log('选择待审核状态了', args.model)
735
+ this.batch_audit = args.model.f_meter_state[0] !== '已抄表' && args.model.f_meter_state[0] !== '未抄表'
736
+ }
737
+ this.model.search(args.condition, this.model)
738
+ },
739
+ reflash () {
740
+ this.$refs.paged.$refs.criteria.search()
741
+ },
742
+ enter (row) {
743
+ if (!row.f_tablebase || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(3) < 0) {
744
+ return
745
+ }
746
+ if (row.f_tablebase.toString().split(".").length>1 && row.f_tablebase.toString().split(".")[1].length>3) {
747
+ Vue.set(row, 'error', '底数最多只能输入小数点后3位')
748
+ return
749
+ }
750
+ // || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(3) < 0
751
+ if (row.f_tablebase) {
752
+ // 如果本期底数大于上期底数生成超用收费
753
+ // if ((row.f_tablebase - 0) > (row.f_meter_base - 0)) {
754
+ // row.charge_type = '超用收费'
755
+ // row.f_real_amount = (row.f_tablebase - 0) - (row.f_last_tablebase - 0)
756
+ // } else if ((row.f_tablebase - 0) < (row.f_meter_base - 0)) {
757
+ // // 如果本地底数小于上期底数生成补差收费
758
+ // row.charge_type = '补差收费'
759
+ // row.f_real_amount = (row.f_tablebase - 0) - (row.f_last_tablebase - 0)
760
+ // } else if ((row.f_tablebase - 0) == (row.f_last_tablebase - 0)) {
761
+ // row.charge_type = '正常收费'
762
+ // row.f_real_amount = 0
763
+ // }
764
+ row.f_operator = this.$login.f.name
765
+ row.f_filiale = this.$login.f.f_fengongsi
766
+ row.f_outlets = this.$login.f.f_parentname
767
+ row.f_meter_state = '已抄表'
768
+ if (this.handDate) {
769
+ row.f_input_date = this.handDate
770
+ }
771
+ row.f_input_date = row.f_input_date ? row.f_input_date : Util.toStandardTimeString()
772
+ row.f_last_input_date = row.f_last_input_date ? row.f_last_input_date : row.f_input_date
773
+ row.f_operate_date = Util.toStandardTimeString()
774
+ row.f_filialeids = this.$login.f.orgid
775
+ row.f_orgid = this.$login.f.orgid
776
+ row.f_orgname = this.$login.f.orgs
777
+ row.f_depid = this.$login.f.depids
778
+ row.f_depname = this.$login.f.deps
779
+ row.f_operatorid = this.$login.f.id
780
+ row.f_user_id = row.f_user_id + ''
781
+ row.f_total_gas = row.total_gas
782
+ row.f_total_fee = row.total_fee
783
+ // 余气量=累购-(本期指数-表初始指数)
784
+ row.f_shengyu_gas = (row.f_total_gas - (row.f_tablebase - row.f_initial_base)).toFixed(3)
785
+ console.log('录入完毕。。', row)
786
+ this.$resetpost('rs/logic/cardCommonEnter', row, {resolveMsg: null, rejectMsg: '录入数据出错!!!'}).then((res) => {
787
+ console.log('返回数据', res)
788
+ row.id = res.data.id
789
+ console.log('录入完数据的row值,,', row)
790
+ }).catch((error) => {
791
+ row.state = '失败'
792
+ Vue.set(row, 'error', JSON.stringify(error))
793
+ })
794
+ } else {
795
+
796
+ }
797
+ },
798
+ batchAudit () {
799
+ // 批量审核
800
+ console.log('录入完毕。。', this.model.condition)
801
+ this.$resetpost('rs/logic/batchCardHandAudit', {
802
+ data: {
803
+ condition: this.model.condition,
804
+ startDate: this.$refs.paged.$refs.criteria.model.startDate,
805
+ endDate: this.$refs.paged.$refs.criteria.model.endDate
806
+ }
807
+ }, {resolveMsg: null, rejectMsg: '批量审核出错!!!'}, 0).then((res) => {
808
+ if (res.data.f_state === '异常') {
809
+ this.$showAlert(`本次审核有${res.data.handRepeatLength}户重复抄表,请处理后再进行审核操作!重复用户编号:${res.data.userRepeat}`, 'warning', 10000)
810
+ } else {
811
+ console.log('审核通过', res.data)
812
+ this.$showAlert(`批量审核成功!!! 审核抄表数: ${res.data.total}, 成功条数: ${res.data.success}`, 'success', 4000)
813
+ this.search()
814
+ }
815
+ })
816
+ },
817
+ modify (row) {
818
+ // 录入错误进行修正
819
+ co(modifyGen(this, row, 'rs/logic/cardhandnopass'))
820
+ },
821
+ pass (row) {
822
+ co(modifyGen(this, row, 'rs/logic/cardhandpass'))
823
+ },
824
+ nopass (row) {
825
+ co(modifyGen(this, row, 'rs/logic/cardhandnopass'))
826
+ },
827
+ cardhandCenter (row) {
828
+ // let load = new HttpResetClass()
829
+ // load.load('POST', 'rs/logic/Correct', {data: row}, {warnMsg: null, resolveMsg: null})
830
+ // 抄表加入权限
831
+ if (!this.$login.r.find(value => value == '卡表抄表冲正')) {
832
+ this.$showMessage('当前登录用户没有冲正权限, 请联系管理员!')
833
+ return
834
+ }
835
+ this.cardCental = true
836
+ this.cardCentalData = row
837
+ },
838
+ cancel (row) {
839
+ row.operatorInfo = {
840
+ f_filiale: this.$login.f.f_fengongsi,
841
+ f_outlets: this.$login.f.f_parentname,
842
+ f_operator: this.$login.f.name,
843
+ cardreason: this.cardreason
844
+ }
845
+ row.f_last_hand_date = row.f_last_input_date
846
+ co(modifyGen(this, row, 'rs/logic/cardhandCancel'))
847
+ },
848
+ close () {
849
+ this.cardCental = false
850
+ this.cardCentalData = ''
851
+ this.cardreason = ''
852
+ },
853
+ clearError (row) {
854
+ if (row.f_tablebase === 0) {
855
+ row.f_tablebase = ''
856
+ }
857
+ Vue.set(row, 'error', null)
858
+ },
859
+ // 删除这条计划
860
+ delectHand (row) {
861
+ this.$showMessage('删除后不可恢复,确认删除吗?', ['confirm', 'cancel']).then((res) => {
862
+ if (res === 'confirm') {
863
+ this.$resetpost('rs/logic/deleteCardPlan', {data: row}).then(() => {
864
+ let condition = this.model.condition
865
+ this.selfSearch({condition: condition})
866
+ })
867
+ }
868
+ })
869
+ },
870
+ sort (field, rule) {
871
+ // 将所有排序方式设为不排序,实现相互排斥
872
+ for (let key in this.orderFields) {
873
+ if (key === field) {
874
+ this.orderFields[key] = rule
875
+ } else {
876
+ this.orderFields[key] = 'no'
877
+ }
878
+ }
879
+ // 如果新规则不排序,还原为默认排序
880
+ if (rule === 'no') {
881
+ this.model.paramSource.orderitem = `'${this.orderitem}'`
882
+ } else {
883
+ this.model.paramSource.orderitem = `'${field} ${rule}'`
884
+ }
885
+
886
+ this.search()
887
+ }
888
+ },
889
+ computed: {
890
+ inputtore () {
891
+ // 获取抄表员
892
+ console.log('获取抄表员', this.$login.f)
893
+ let rs = []
894
+ if (this.$login.f.f_gasman.length > 0) {
895
+ for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
896
+ let temp = {
897
+ label: this.$login.f.f_gasman[i].name,
898
+ value: this.$login.f.f_gasman[i].name
899
+ }
900
+ rs.push(temp)
901
+ }
902
+ }
903
+ this.inputtores2 = rs
904
+ return [...rs]
905
+ },
906
+ meterstates () {
907
+ return [{label: '全部', value: ''}, {label: '未抄表', value: "= '未抄表'"}, {
908
+ label: '已抄表',
909
+ value: "= '已抄表'"
910
+ }, {label: '冲正', value: "='冲正'"}]
911
+ },
912
+ specialuser () {
913
+ return [{label: '全部', value: ''}, {label: '正常用户', value: "= '正常用户'"}, {label: '采暖户', value: "= '采暖户'"}]
914
+ },
915
+ usertypes () {
916
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('用户类型')]
917
+ },
918
+ userlevels () {
919
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('用户等级')]
920
+ },
921
+ smallareas () {
922
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('小区域')]
923
+ },
924
+ ventilationstate () {
925
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('通气手续')]
926
+ },
927
+ gasproperties () {
928
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('用气性质')]
929
+ },
930
+ pricenames () {
931
+ let arr = []
932
+ AppData.getOnlyPrice().forEach((item) => {
933
+ let temp = {}
934
+ temp.label = item.label
935
+ temp.value = item.value.f_price_name
936
+ arr.push(temp)
937
+ })
938
+ return [{label: '全部', value: ''}, ...arr]
939
+ },
940
+ whetherpaies () {
941
+ return [
942
+ {label: '全部', value: ''},
943
+ {label: '已缴费', value: '是'},
944
+ {label: '未缴费', value: '否'}
945
+ ]
946
+ },
947
+ // 界面细节权限
948
+ jurisdiction () {
949
+ return this.$login.r ? this.$login.r : []
950
+ },
951
+ brand () {
952
+ return [{
953
+ label: '全部',
954
+ value: {f_meter_brand: '', gasmodel: [{label: '全部', value: {f_meter_style: ''}}]}
955
+ }, ...AppData.getGasbrand()]
956
+ }
957
+ },
958
+ events: {
959
+ onFileUpload: function (file, res) {
960
+ console.log('进入了抄表上传')
961
+ let uuid = this.$login.guid()
962
+ let data1 = {
963
+ filepath: res.f_downloadpath,
964
+ f_operator: this.$login.f.name,
965
+ f_operatorid: this.$login.f.id,
966
+ f_orgid: this.$login.f.orgid,
967
+ f_orgname: this.$login.f.orgs,
968
+ f_depid: this.$login.f.depids,
969
+ f_depname: this.$login.f.deps,
970
+ uuid: uuid
971
+ }
972
+ console.log('传入数据', data1)
973
+ try {
974
+ this.$resetpost('rs/handPlanAudit/cardBatchCommonEnter', data1, {resolveMsg: null, rejectMsg: null}, 1000)
975
+ } catch (e) {
976
+ }
977
+ this.$showMessage(`正在批量处理中, 请耐心等待...`, [])
978
+ // 启动定时器定时查询处理结果
979
+ this.timer = setInterval(async () => {
980
+ let res = await this.HttpReset.load('POST', 'rs/logic/getBatchOperaPro', {data: {uuid: uuid}}, {
981
+ resolveMsg: null,
982
+ rejectMsg: null
983
+ })
984
+ console.log('查询进度返回: ', res)
985
+ if (res.data.msg || res.data.error) {
986
+ clearInterval(this.timer)
987
+ this.$closeMessage()
988
+ if (res.data.error) {
989
+ this.$showAlert(`${res.data.error}`, 'danger')
990
+ return
991
+ }
992
+ await this.$showMessage(`处理总条数: ${res.data.n}, 成功${res.data.success}条, 失败${res.data.fail}条`)
993
+ this.upshow = false
994
+ this.search()
995
+ }
996
+ }, 5000)
997
+ }
998
+ }
999
+ }
1000
+ </script>
1001
+ <style lang="less">
1002
+ #CardHand {
1003
+ thead {
1004
+ position: relative;
1005
+ z-index: 2;
1006
+ }
1007
+ }
1008
+ </style>
@@ -376,7 +376,26 @@
376
376
  <td style="text-align: center;">{{Math.round(row.avggas)}}</td>
377
377
  <td>{{row.f_meternumber}}</td>
378
378
  <td>{{row.f_last_tablebase}}</td>
379
- <td id="hand-creat" v-if="row.f_meter_state === '未抄表' ">
379
+ <td id="hand-creat" v-if="row.f_meter_state === '未抄表' && row.crossyear && $parent.$parent.$parent.config.crossyear ">
380
+ <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
381
+ 'has-success has-feedback': !row.error,
382
+ 'has-error has-feedback': row.error}"
383
+ >
384
+ <button type="button" name="button" class="btn btn-link"
385
+
386
+ @click.stop="$parent.$parent.$parent.yearhand(row) "
387
+ >跨年抄表
388
+ </button>
389
+ <!-- <input title="只能录入整数" type="text" class="input_search" v-model="row.f_tablebase"-->
390
+ <!-- @blur="$parent.$parent.$parent.beforenter($index, row)"-->
391
+ <!-- v-next-el="{id: $index+2}" :id="$index+1" style="width: 100px;padding: 6px;"-->
392
+ <!-- @focus="$parent.$parent.$parent.clearError(row)"-->
393
+ <!-- :disabled="row.state === '开始'">-->
394
+ </div>
395
+
396
+ <span v-if="row.error && row.error !== ''" style="color: #ff0000;">{{row.error}}</span>
397
+ </td>
398
+ <td id="hand-creat" v-if="row.f_meter_state === '未抄表' && ! row.crossyear ">
380
399
  <div class="form-group" style="margin-bottom:0px;display: contents;" :class="{
381
400
  'has-success has-feedback': !row.error,
382
401
  'has-error has-feedback': row.error}"
@@ -571,7 +590,45 @@
571
590
  <button type="button" v-show="examinetype" class="btn btn-success" @click='cancelHand5()'>审核通过</button>
572
591
  </footer>
573
592
  </modal>
593
+ <modal :show.sync="showstair" backdrop="false">
594
+ <header slot="modal-header" class="modal-header">
595
+ <button type="button" class="close" @click="closeerr"><span>&times;</span></button>
596
+ <h4 class="modal-title">跨阶抄表</h4>
597
+ </header>
598
+ <article slot="modal-body" class="modal-body">
599
+ <div class="row">
600
+ <div class="form-group col-sm-12">
601
+ <label class="col-xs-2 col-sm-2 col-md-2 form-group">本期表底数</label>
602
+ <div class="col-xs-4 col-sm-4 col-md-4 form-group">
603
+ <input type="number" class="form-control show-font" v-model="row.f_tablebase" width="80%" @blur="getamount(row)" placeholder="本期表底数" maxlength="10">
604
+ </div>
605
+
606
+ </div>
607
+ <div class="form-group col-sm-12">
608
+ <label class="col-xs-2 col-sm-2 col-md-2 form-group">用气量</label>
609
+ <div class="col-xs-4 col-sm-4 col-md-4 form-group">
610
+ <input type="number" class="form-control show-font" v-model="row.f_oughtamount" width="80%" disabled placeholder="用气量" maxlength="10">
611
+ </div>
612
+ </div>
574
613
 
614
+ <div v-for="(index,item) in stairdata" class="row">
615
+ <div class="col-xs-2 col-sm-2 col-md-2 form-group">
616
+ <span class="text-left font" style="color: darkblue">{{ item.year }}周期</span>
617
+ </div>
618
+ <div class="col-xs-4 col-sm-4 col-md-4 form-group">
619
+ <input type="number" class="form-control show-font" v-model="item.f_dispensed_amount" width="80%" placeholder="分配量(单位:方)" maxlength="10">
620
+ </div>
621
+ <div class="col-xs-4 col-sm-4 col-md-4 form-group">
622
+ <input type="number" class="form-control show-font" v-model="item.f_dispensed_price" placeholder="金额(单位:元)" maxlength="10">
623
+ </div>
624
+ </div>
625
+ </div>
626
+ </article>
627
+ <footer slot="modal-footer" class="modal-footer">
628
+ <button type="button" class="btn btn-default" @click='closeyear'>取消</button>
629
+ <button type="button" class="btn btn-default" @click='confirmyearhand'>确认</button>
630
+ </footer>
631
+ </modal>
575
632
  <modal :show.sync="showerr" backdrop="false">
576
633
  <header slot="modal-header" class="modal-header">
577
634
  <button type="button" class="close" @click="closeerr"><span>&times;</span></button>
@@ -810,6 +867,8 @@
810
867
  dep: [],
811
868
  user: []
812
869
  },
870
+ showstair: false,
871
+ stairdata: [],
813
872
  sumsmodel: [],
814
873
  orgCondtionStr: '',
815
874
  priceSplit: false,
@@ -820,7 +879,7 @@
820
879
  f_oughtfee: 0
821
880
  }),
822
881
  config: {
823
-
882
+ crossyear: true,
824
883
  // 导出列要和查询列相同
825
884
  excelHeaders: {
826
885
  'f_user_id': '表编号',
@@ -939,6 +998,76 @@
939
998
  document.getElementById(this.inputid).focus()
940
999
  },
941
1000
  methods: {
1001
+ getamount (row) {
1002
+ if(row.f_tablebase<row.f_last_tablebase){
1003
+ this.$showMessage('本地底数小于上期底数')
1004
+ }else{
1005
+ row.f_oughtamount = (row.f_tablebase - 0) - (row.f_last_tablebase - 0)
1006
+ }
1007
+ },
1008
+ closeyear(){
1009
+ this.showstair =false
1010
+ this.row = null
1011
+ },
1012
+ confirmyearhand () {
1013
+ if (this.stairdata){
1014
+ let amount = 0
1015
+ let price = 0
1016
+ let f_oughtamount = this.row.f_oughtamount
1017
+
1018
+ for (let i=0;i<this.stairdata.length;i++){
1019
+ console.log('qiliang----------------->',this.stairdata[i].f_dispensed_amount)
1020
+ if (this.stairdata[i].f_dispensed_amount && this.stairdata[i].f_dispensed_price){
1021
+ amount = amount + parseFloat(this.stairdata[i].f_dispensed_amount)
1022
+ console.log("amount-------->",amount)
1023
+ price = price + parseFloat(this.stairdata[i].f_dispensed_price)
1024
+ console.log("price-------->",price)
1025
+ }
1026
+ }
1027
+
1028
+ console.log("amount--最后算的------>",amount)
1029
+ console.log("f_oughtamount--最后算的------>",f_oughtamount)
1030
+
1031
+ if (f_oughtamount !== amount && amount >0){
1032
+ this.$showMessage('请重新录入分配气量')
1033
+ return
1034
+ }
1035
+ }
1036
+ this.row.dataArr = this.stairdata
1037
+ let url = 'rs/logic/yearCommonEnter'
1038
+ this.$resetpost(url, {data: this.row}, {warnMsg: '确定对这条记录进行抄表吗?'}).then(() => {
1039
+ this.search()
1040
+ this.showstair =false
1041
+ this.row = null
1042
+ })
1043
+ },
1044
+ yearhand (data) {
1045
+ this.stairdata = []
1046
+ this.row = data
1047
+ if (data.f_last_input_date) {
1048
+ console.log('核算时间----------', data.f_last_input_date)
1049
+ let date1 = data.f_last_input_date // 上次抄表时间
1050
+ let date2 = new Date(Date.parse(date1)) // 上次抄表时间
1051
+ let date3 = new Date() // 当前时间
1052
+ let days = date3.getFullYear() - date2.getFullYear()
1053
+ console.log('年份差值----------->', days)
1054
+ if (days >= 1) {
1055
+ console.log('days大于1就进来')
1056
+ for (let i = 0; i <= days; i++) {
1057
+ let year = date2.getFullYear() + i
1058
+ console.log('加入的年份------->', year)
1059
+ let temp = {
1060
+ f_dispensed_amount: null,
1061
+ f_dispensed_price: null,
1062
+ year: year
1063
+ }
1064
+ this.stairdata.push(temp)
1065
+ }
1066
+ this.showstair = true
1067
+ console.log('数组长度---------->', this.stairdata)
1068
+ }
1069
+ }
1070
+ },
942
1071
  stairMoney (price, gas) {
943
1072
  return (price * gas).toFixed(2) - 0
944
1073
  },
@@ -31,6 +31,8 @@ export default function () {
31
31
  Vue.component('machine-down', (resolve) => { require(['./machineDown'], resolve) })
32
32
  // 机表抄表
33
33
  Vue.component('machine-hand', (resolve) => { require(['./machineHand'], resolve) })
34
+ // 机表抄表
35
+ Vue.component('cards-hand', (resolve) => { require(['./cardsHand'], resolve) })
34
36
  // 机表查询
35
37
  Vue.component('sale-handplan-query', (resolve) => { require(['./HandplanQuery'], resolve) })
36
38
  }
package/src/main.js CHANGED
@@ -16,7 +16,7 @@ all()
16
16
  system(false)
17
17
  sale()
18
18
  // wenxi()
19
- FilialeSale()
19
+ // FilialeSale()
20
20
  address()
21
21
  ldap()
22
22
  require('system-clients/src/styles/less/bootstrap.less')