sale-client 3.5.192 → 3.5.194

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,67 +1,73 @@
1
- const express = require('express')
2
- const webpack = require('webpack')
3
- const config = require('./webpack.dev.conf')
4
- const proxyMiddleware = require('http-proxy-middleware')
5
- const app = express()
6
- const compiler = webpack(config)
7
-
8
- // 自己改了这里不要提交 来回覆盖挺麻烦的
9
- const [local, server] = ['http://127.0.0.1:8080', 'http://192.168.50.4:8400']
10
- const port = 8089
11
-
12
- const proxyTable = {
13
- '/text': {
14
- target: local
15
- },
16
- '/files': {
17
- target: server
18
- },
19
- '/excel': {
20
- target: server
21
- },
22
- '/webmeter': {
23
- target: server
24
- },
25
- '/rs/logic': {
26
- target: server
27
- },
28
- '/rs': {
29
- target: server
30
- }
31
- }
32
-
33
- const devMiddleware = require('webpack-dev-middleware')(compiler, {
34
- publicPath: config.output.publicPath,
35
- stats: {
36
- colors: true,
37
- chunks: false
38
- }
39
- })
40
-
41
- const hotMiddleware = require('webpack-hot-middleware')(compiler)
42
- compiler.plugin('compilation', function (compilation) {
43
- compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
44
- hotMiddleware.publish({action: 'reload'})
45
- cb()
46
- })
47
- })
48
-
49
- Object.keys(proxyTable).forEach(function (context) {
50
- let options = proxyTable[context]
51
- if (typeof options === 'string') {
52
- options = {target: options}
53
- }
54
- app.use(proxyMiddleware(context, options))
55
- })
56
- app.use(require('connect-history-api-fallback')())
57
- app.use(devMiddleware)
58
- app.use(hotMiddleware)
59
- app.use('/static', express.static('./static'))
60
-
61
- module.exports = app.listen(port, function (err) {
62
- if (err) {
63
- console.log(err)
64
- return
65
- }
66
- console.log('Listening at http://localhost:' + port)
67
- })
1
+ const express = require('express')
2
+ const webpack = require('webpack')
3
+ const config = require('./webpack.dev.conf')
4
+ const proxyMiddleware = require('http-proxy-middleware')
5
+ const app = express()
6
+ const compiler = webpack(config)
7
+
8
+ // 自己改了这里不要提交 来回覆盖挺麻烦的
9
+ const [local, server] = ['http://127.0.0.1:8080', 'http://192.168.50.4:8400']
10
+ const port = 8089
11
+
12
+ const proxyTable = {
13
+ '/text': {
14
+ target: local,
15
+ // changeOrigin: true //https请求需要加
16
+ },
17
+ '/files': {
18
+ target: server,
19
+ // changeOrigin: true
20
+ },
21
+ '/excel': {
22
+ target: server,
23
+ // changeOrigin: true
24
+ },
25
+ '/webmeter': {
26
+ target: server,
27
+ // changeOrigin: true
28
+ },
29
+ '/rs/logic': {
30
+ target: server,
31
+ // changeOrigin: true
32
+ },
33
+ '/rs': {
34
+ target: server,
35
+ // changeOrigin: true
36
+ }
37
+ }
38
+
39
+ const devMiddleware = require('webpack-dev-middleware')(compiler, {
40
+ publicPath: config.output.publicPath,
41
+ stats: {
42
+ colors: true,
43
+ chunks: false
44
+ }
45
+ })
46
+
47
+ const hotMiddleware = require('webpack-hot-middleware')(compiler)
48
+ compiler.plugin('compilation', function (compilation) {
49
+ compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
50
+ hotMiddleware.publish({action: 'reload'})
51
+ cb()
52
+ })
53
+ })
54
+
55
+ Object.keys(proxyTable).forEach(function (context) {
56
+ let options = proxyTable[context]
57
+ if (typeof options === 'string') {
58
+ options = {target: options}
59
+ }
60
+ app.use(proxyMiddleware(context, options))
61
+ })
62
+ app.use(require('connect-history-api-fallback')())
63
+ app.use(devMiddleware)
64
+ app.use(hotMiddleware)
65
+ app.use('/static', express.static('./static'))
66
+
67
+ module.exports = app.listen(port, function (err) {
68
+ if (err) {
69
+ console.log(err)
70
+ return
71
+ }
72
+ console.log('Listening at http://localhost:' + port)
73
+ })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.5.192",
3
+ "version": "3.5.194",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -491,7 +491,7 @@
491
491
  serialShow: false,
492
492
  resid: [], // 存放新增的f_files表中id
493
493
  config: {
494
- calculatePreByCollection: true, // 可以更具收款来反向计算预购
494
+ calculatePreByCollection: false, // 可以更具收款来反向计算预购
495
495
  notShowFormula: false, // 不显示计算公式,默认显示
496
496
  autoCollection: true, // 自动填写收款
497
497
  showupload: true, // 显示上传
@@ -463,7 +463,7 @@ export default {
463
463
  resid: [],
464
464
  config: {
465
465
  notShowFormula: false, // 不显示计算公式,默认显示
466
- calculatePreByCollection: true, // 可以更具收款来反向计算预购
466
+ calculatePreByCollection: false, // 可以更具收款来反向计算预购
467
467
  showupload: true, // 默认不显示上传附件
468
468
  hasPrint: false, // 默认打票
469
469
  floor: true, // 是否取整收费
@@ -9,21 +9,30 @@
9
9
  <saletab header="机表流水查询" v-if="permission('机表流水查询')&&row.f_meter_type.includes('机表')">
10
10
  <machine-record-query :row="row" v-if="show == '机表流水查询'" @deal-msg="dealMsg"></machine-record-query>
11
11
  </saletab>
12
- <saletab header="收费查询" v-if="permission('收费查询')">
12
+ <saletab header="收费查询" v-if="!newWebHand && permission('收费查询')">
13
+ <charge-query-user :row="row" v-if="show == '收费查询'" @deal-msg="dealMsg"></charge-query-user>
14
+ </saletab>
15
+ <saletab header="收费查询" v-if="newWebHand && permission('收费查询')">
13
16
  <charge-query-user :row="row" v-if="show == '收费查询'" @deal-msg="dealMsg"></charge-query-user>
14
17
  </saletab>
15
18
  <saletab header="累购查询" v-if="permission('累购查询')">
16
19
  <Repurchase :row="row" v-if="show == '累购查询'" @deal-msg="dealMsg"></Repurchase>
17
20
  </saletab>
18
- <saletab header="下账查询" v-if="row.f_meter_type.includes('物联网表')&&permission('自动下账查询')">
21
+ <saletab header="下账查询" v-if="!newWebHand && row.f_meter_type.includes('物联网表')&&permission('自动下账查询')">
19
22
  <automatic-purse :row="row" @deal-msg="dealMsg"></automatic-purse>
20
23
  </saletab>
24
+ <saletab header="下账查询" v-if="newWebHand && row.f_meter_type.includes('物联网表')&&permission('自动下账查询')">
25
+ <web-automatic-purse :row="row" @deal-msg="dealMsg"></web-automatic-purse>
26
+ </saletab>
21
27
  <saletab header="抄表记录" v-if="row.f_meter_type.includes('卡表')&&permission('抄表记录')">
22
28
  <card-hand-record :row="row" v-if="show == '抄表记录'" @deal-msg="dealMsg"></card-hand-record>
23
29
  </saletab>
24
- <saletab header="抄表记录" v-if="!row.f_meter_type.includes('卡表')&&permission('抄表记录')">
30
+ <saletab header="抄表记录" v-if="!newWebHand && !row.f_meter_type.includes('卡表')&&permission('抄表记录')">
25
31
  <hand-query-user :row="row" v-if="show == '抄表记录'" @deal-msg="dealMsg"></hand-query-user>
26
32
  </saletab>
33
+ <saletab header="抄表记录" v-if="newWebHand && !row.f_meter_type.includes('卡表')&&permission('抄表记录')">
34
+ <web-hand-query-user :row="row" v-if="show == '抄表记录'" @deal-msg="dealMsg"></web-hand-query-user>
35
+ </saletab>
27
36
  <saletab header="补卡查询" v-if="row.f_meter_type.includes('卡表')&&permission('补卡查询')">
28
37
  <fill-card-query-user :row="row" v-if="show == '补卡查询'" @deal-msg="dealMsg"></fill-card-query-user>
29
38
  </saletab>
@@ -92,6 +101,10 @@
92
101
  import AutomaticPurse from './ic_detail/AutomaticPurse'
93
102
  import Repurchase from './ic_detail/Repurchase'
94
103
  import MachineRecordQuery from './ic_detail/MachineRecordQuery'
104
+ import WebAutomaticPurse from './ic_detail/WebAutomaticPurse'
105
+ import WebChargeQueryUser from './ic_detail/WebChargeQueryUser'
106
+ import WebHandQueryUser from './ic_detail/WebHandQueryUser'
107
+
95
108
  // 导入物联网相关查询
96
109
  import QueryInstruct from './iot_detail/QueryInstruct'
97
110
  import QueryHistoryInstruct from './iot_detail/QueryHistoryInstruct'
@@ -109,6 +122,9 @@ export default {
109
122
  PriceAdjustmentQueryUser,
110
123
  PriceChangeQueryUser,
111
124
  AutomaticPurse,
125
+ WebAutomaticPurse,
126
+ WebChargeQueryUser,
127
+ WebHandQueryUser,
112
128
  Repurchase,
113
129
  ChangeMeterQueryUser,
114
130
  ChargeQueryUser,
@@ -132,6 +148,7 @@ export default {
132
148
  return {
133
149
  row: null,
134
150
  name: '自动下账查询',
151
+ newWebHand: this.$appdata.getSingleValue('新抄表'),
135
152
  show: ''
136
153
  }
137
154
  },
@@ -173,7 +173,7 @@ let reprintGen = function * (self, row) {
173
173
  reissue_show: false,
174
174
  reissue_data: null,
175
175
  condition: '1=1',
176
- model: new PagedList('rs/sql/sale_ChargeQuery', 20, {}, {
176
+ model: new PagedList('rs/sql/sale_ChargeQuery', 20, {f_user_id: this.row.f_user_id}, {
177
177
  f_preamount: 0,
178
178
  f_pregas: 0,
179
179
  f_oughtfee: 0,
@@ -227,6 +227,7 @@ let reprintGen = function * (self, row) {
227
227
  props: ['row'],
228
228
  ready () {
229
229
  this.$refs.paged.$refs.criteria.model.f_state = ['有效']
230
+ this.$refs.paged.$refs.criteria.model.f_user_id = this.row.f_user_id
230
231
  this.$refs.paged.$refs.criteria.search()
231
232
  },
232
233
  methods: {
@@ -237,7 +238,8 @@ let reprintGen = function * (self, row) {
237
238
  let http = new HttpResetClass()
238
239
  let res = await http.load('POST', 'rs/sql/sale_ChargeQuery', {
239
240
  data: {
240
- condition: this.condition
241
+ condition: this.condition,
242
+ f_user_id: this.row.f_user_id
241
243
  }
242
244
  }, {resolveMsg: null, rejectMsg: null})
243
245
  this.printModel.rows = res.data
@@ -0,0 +1,297 @@
1
+ <template >
2
+ <div class="flex" style="justify-content: space-between;">
3
+ <div @keyup.enter="search" style="">
4
+ <criteria-paged :model="model" v-ref:paged>
5
+ <criteria @condition-changed='$parent.search' partial='criteria' v-ref:criteria>
6
+ <div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
7
+ <div class="row" width="100%">
8
+ <div class="col-sm-2 form-group">
9
+ <label class="font_normal_body">开始时间</label>
10
+ <datepicker :format="'yyyy-MM-dd'" :value.sync="model.f_start_date"
11
+ class="datepicker"
12
+ condition="f_operate_date >= '{} 00:00:00' "
13
+ placeholder="起始时间"
14
+ style="width:60%"
15
+ v-model="model.f_start_date"
16
+ ></datepicker>
17
+ </div>
18
+ <div class="col-sm-2 form-group" >
19
+ <label class="font_normal_body" >结束时间</label>
20
+ <datepicker :format="'yyyy-MM-dd'" :value.sync="model.f_end_date"
21
+ class="datepicker"
22
+ condition="f_operate_date <= '{} 23:59:59' "
23
+ placeholder="结束时间"
24
+ style="width:60%"
25
+ v-model="model.f_end_date"
26
+ ></datepicker>
27
+ </div>
28
+ <div class="col-sm-2 form-group">
29
+ <label class="font_normal_body">缴费状态</label>
30
+ <v-select :value.sync="model.f_state" v-model='model.f_state'
31
+ style="width:60%"
32
+ :options='$parent.$parent.jiaofeistates' placeholder='缴费状态'
33
+ close-on-select
34
+ condition="s.f_state = '{}'"></v-select>
35
+ </div>
36
+
37
+ <div style="float: right">
38
+ <button @click="search()" class="button_search" style="margin-right: 10px" v-el:cba>查询</button>
39
+ <print-data :defaultfield="$parent.$parent.defaultfield" :field="$parent.$parent.fields" :is-selected="true" :model="$parent.$parent.printModel"
40
+ @print-data="$parent.$parent.print()" print-name="购气流水"></print-data>
41
+ </div>
42
+ </div>
43
+ </div>
44
+
45
+
46
+ </criteria>
47
+ <data-grid :model="model" class="list_area table_sy" partial='list' v-ref:grid>
48
+ <template partial='head'>
49
+ <tr>
50
+ <th><nobr>缴费日期</nobr></th>
51
+ <th><nobr>缴费时间</nobr></th>
52
+ <!-- <th><nobr>表号</nobr></th>-->
53
+ <th><nobr>上期指数</nobr></th>
54
+ <th><nobr>本期指数</nobr></th>
55
+ <th>使用方量</th>
56
+ <th><nobr>扣费单价</nobr></th>
57
+ <th><nobr>扣费金额</nobr></th>
58
+ <th><nobr>表内余额</nobr></th>
59
+ </tr>
60
+ </template>
61
+ <template partial='body' partial='list' v-ref:grid>
62
+ <tr >
63
+ <td style="text-align:center">{{row.f_operate_date.substring(0,10)}}</td>
64
+ <td style="text-align:center">{{row.f_operate_date.substring(11,19)}}</td>
65
+ <td style="text-align:center">{{row.f_last_tablebase}}</td>
66
+ <td style="text-align:center">{{row.f_tablebase}}</td>
67
+ <td style="text-align:center">{{row.f_pregas}}</td>
68
+ <td style="text-align:center">{{row.f_price}}</td>
69
+ <td style="text-align:center">{{row.f_preamount}}</td>
70
+ <td style="text-align:center">{{row.f_meterBalanceAmt}}</td>
71
+ </tr>
72
+ </template>
73
+ <template partial='foot'></template>
74
+ </data-grid>
75
+ </criteria-paged>
76
+ </div>
77
+ <table class="table-hover">
78
+ <tr class="table-bordered" style="position: relative">
79
+ <td
80
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;color: #5CB95C;font-weight: bold">
81
+ 汇总信息
82
+ </td>
83
+ <td style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px">
84
+ 气量合计:&emsp;{{model.sums.f_pregas}}
85
+ </td>
86
+ <td style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px">
87
+ 金额合计:&emsp;{{model.sums.f_preamount}}
88
+ </td>
89
+ </tr>
90
+ </table>
91
+ <reissue-bill :data="reissue_data" :show.sync="reissue_show" @cancel="reissueOper()" @reissue-success="reissueSucc()" v-if="reissue_show"></reissue-bill>
92
+
93
+ </div>
94
+ </template>
95
+
96
+ <script>
97
+ import {HttpResetClass, PagedList} from 'vue-client'
98
+ import co from 'co'
99
+ let reprintGen = function *(self, row) {
100
+ try {
101
+ let reissueData = {}
102
+ reissueData = Object.assign({}, reissueData, row)
103
+
104
+ reissueData.f_bill_type = row.type
105
+ reissueData.f_bill_style = '普通收据'
106
+ reissueData.f_operator = self.$login.f.name
107
+ reissueData.f_operatorid = self.$login.f.id
108
+ reissueData.f_orgid = self.$login.f.orgid
109
+ reissueData.f_orgname = self.$login.f.orgs
110
+ reissueData.f_depid = self.$login.f.depids
111
+ reissueData.f_depname = self.$login.f.deps
112
+ reissueData.billUrl = self.getBillUrl(row.type)
113
+
114
+ self.reissue_data = reissueData
115
+ self.reissue_show = true
116
+ } catch (error) {
117
+ if (error.status) {
118
+ self.$warn(`加载数据出错, ${JSON.stringify(error)}`, 'CardList')
119
+ }
120
+ throw error
121
+ }
122
+ }
123
+ export default {
124
+ title: '自动下账',
125
+ data () {
126
+ return {
127
+ reissue_show: false,
128
+ reissue_data: null,
129
+ condition: '1=1',
130
+ model: new PagedList(`${this.row.f_meter_type === '物联网表'?'rs/sql/sale_WebAutomaticPurse':'rs/sql/sale_AutomaticPurse'}`, 20, {}, {
131
+ f_preamount: 0,
132
+ f_pregas: 0
133
+ }),
134
+ show: false,
135
+ list: [],
136
+ jiaofeistates: this.$appdata.getParam('缴费状态') ? [{
137
+ label: '全部',
138
+ value: ''
139
+ }, ...this.$appdata.getParam('缴费状态')] : [],
140
+ // 控制单选
141
+ radio: [],
142
+ // 选中的页
143
+ all: [],
144
+ // row数据
145
+ rowsdata: [],
146
+ fields: {'f_userinfo_code': '客户编号', 'f_user_name': '客户姓名', 'f_preamount': '购气金额', 'f_pregas': '购气量', 'f_operate_date,': '缴费时间', 'f_operator': '操作员', 'f_comments': '备注'},
147
+ defaultfield: [
148
+ 'f_userinfo_code', 'f_user_name', 'f_preamount', 'f_pregas', 'f_operate_date', 'f_operator', 'f_comments'
149
+ ],
150
+ printModel: {
151
+ rows: []
152
+ }
153
+ }
154
+ },
155
+ props: ['row'],
156
+ ready () {
157
+ this.$refs.paged.$refs.criteria.model.f_state = ['有效']
158
+ },
159
+ methods: {
160
+ async search () {
161
+ console.log('aaa:', this.$refs.paged.$refs.criteria.condition)
162
+ this.condition = `${this.$refs.paged.$refs.criteria.condition} and f_user_id = '${this.row.f_user_id}' and f_orgid = '${this.$login.f.orgid}'`
163
+ this.model.search(this.condition, this.model)
164
+ let http = new HttpResetClass()
165
+ let res = await http.load('POST', `${this.row.f_meter_type === '物联网表'?'rs/sql/sale_WebAutomaticPurse':'rs/sql/sale_AutomaticPurse'}`, {
166
+ data: {
167
+ condition: this.condition
168
+ }
169
+ }, {resolveMsg: null, rejectMsg: null})
170
+ this.printModel.rows = res.data
171
+ },
172
+ // 多选框初始化
173
+ selectInit () {
174
+ this.rowsdata = []
175
+ this.all = []
176
+ this.radio = []
177
+ },
178
+ reissueSucc () {
179
+ this.reissue_show = false
180
+ this.$dispatch('refresh')
181
+ },
182
+ reissueOper () {
183
+ this.reissue_data = null
184
+ this.reissue_show = false
185
+ },
186
+ getBillUrl (type) {
187
+ let name = ''
188
+ // 根据type数据 选择调用的Logic
189
+ if (type === '机表收费') {
190
+ name = 'rs/report/machine_bill'
191
+ } else if (type === '物联网收费') {
192
+ name = 'rs/report/iot_bill'
193
+ } else if (type === '超用收费') {
194
+ name = 'rs/report/overuse_bill'
195
+ } else if (type === '其他收费') {
196
+ name = 'rs/report/otherCharge_bill'
197
+ } else if (type === '发卡售气') {
198
+ name = 'rs/report/sendCard_bill'
199
+ } else if (type === '卡表收费') {
200
+ name = 'rs/report/card_bill'
201
+ }
202
+ return name
203
+ },
204
+ report (row) {
205
+ let reprint = reprintGen(this, row)
206
+ return co(reprint)
207
+ },
208
+ print () {
209
+ this.selectInit()
210
+ },
211
+ select () {
212
+ let index = this.model.pageIndex - 1
213
+ if (!this.radio[index]) {
214
+ this.radio.$set(index, [])
215
+ }
216
+ if (this.all[index]) {
217
+ // 数据
218
+ this.rowsdata[index] = Object.assign([], this.model.rows)
219
+ // 勾选
220
+ for (var i = 0; i < this.model.rows.length; i++) {
221
+ this.radio[index].$set(i, true)
222
+ }
223
+ } else {
224
+ // 数据
225
+ this.rowsdata[index] = []
226
+ // 不勾选
227
+ for (var i = 0; i < this.model.rows.length; i++) {
228
+ this.radio[index].$set(i, false)
229
+ }
230
+ }
231
+ let z = 0
232
+ for (let i = 0; i < this.all.length; i++) {
233
+ for (let j = 0; this.rowsdata[i] && j < this.rowsdata[i].length; j++) {
234
+ this.printModel.rows[z++] = this.rowsdata[i][j]
235
+ }
236
+ }
237
+ },
238
+ selectOne (event, row, i) {
239
+ let index = this.model.pageIndex - 1
240
+ if (!this.rowsdata[index]) {
241
+ this.rowsdata[index] = []
242
+ }
243
+ if (!this.radio[index]) {
244
+ this.radio.$set(index, [])
245
+ }
246
+ if (event.target.checked) {
247
+ // 数据
248
+ this.rowsdata[index][i] = row
249
+ // 勾选
250
+ this.radio[index].$set(i, true)
251
+ // 判断是否全部选中
252
+ var allState = true
253
+ if (this.model.rows.length != this.radio[index].length) {
254
+ allState = false
255
+ }
256
+ for (var state of this.radio[index]) {
257
+ if (!state) {
258
+ allState = false
259
+ }
260
+ }
261
+ if (allState) {
262
+ this.all.$set(index, true)
263
+ } else {
264
+ this.all.$set(index, false)
265
+ }
266
+ } else {
267
+ // 数据
268
+ this.rowsdata[index][i] = []
269
+ // 不勾选
270
+ this.radio[index].$set(i, false)
271
+ // 任意取消一个则全选状态设为false
272
+ this.all.$set(index, false)
273
+ }
274
+ let z = 0
275
+ this.printModel.rows = []
276
+ for (let i = 0; i < this.all.length; i++) {
277
+ for (let j = 0; this.rowsdata[i] && j < this.rowsdata[i].length; j++) {
278
+ if (this.rowsdata[i][j] && this.rowsdata[i][j].f_user_id) {
279
+ this.printModel.rows[z++] = this.rowsdata[i][j]
280
+ }
281
+ }
282
+ }
283
+ }
284
+ },
285
+ computed: {
286
+ ischecked () {
287
+ return function (index, i) {
288
+ if (!this.radio[index]) {
289
+ return false
290
+ }
291
+ return this.radio[index][i]
292
+ }
293
+ }
294
+ }
295
+ }
296
+ </script>
297
+