sale-client 3.6.167 → 3.6.169

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://121.36.106.17:8400/', 'http://121.36.106.17:8400/']
2
+ const [ serverRul, localUrl ] = ['http://121.36.106.17:8400/', 'http://127.0.0.1:8080/']
3
3
  var merge = require('webpack-merge')
4
4
  var baseConfig = require('./webpack.dev.conf')
5
5
  var devConfig = {
@@ -18,7 +18,10 @@ var devConfig = {
18
18
  },
19
19
  proxy: {
20
20
  '/rs/file': {
21
- target: serverRul
21
+ target: localUrl
22
+ },
23
+ '/rs/downloadfile': {
24
+ target: localUrl
22
25
  },
23
26
  '/webapps': {
24
27
  target: serverRul
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.6.167",
3
+ "version": "3.6.169",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -44,7 +44,7 @@
44
44
  timer: null,
45
45
  // 收费成功id
46
46
  sellinggasId: null,
47
- canPayment: this.$appdata.getSingleValue('微信支付付款方式') ? this.$appdata.getSingleValue('微信支付付款方式') : '微信支付',
47
+ canPayment: this.$appdata.getSingleValue('微信支付付款方式') ? this.$appdata.getSingleValue('微信支付付款方式') : '',
48
48
  }
49
49
  },
50
50
  created () {
@@ -152,6 +152,7 @@
152
152
  </thead>
153
153
  <tr v-for="checkitem in model.safecheckitem">
154
154
  <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ checkitem.f_item_name }}</td>
155
+ <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%">{{ checkitem.f_is_repaired }}</td>
155
156
  <td style="text-align: center;border: #E9E9E9 solid 1px;width: 33%" v-if="checkitem.f_path!='' && checkitem.f_path!=null">
156
157
  <img-self :src="'rs/image/file/'+checkitem.f_path" style="float: left" width="100" height="150"></img-self>
157
158
  </td>
@@ -0,0 +1,47 @@
1
+ <template>
2
+ <div class="flex-row">
3
+ <div class="basic-main" :class="{'basic-main':!chargeShow,'binary-left':chargeShow}" style="height: 98%;">
4
+ <batch-deduction-list :charge-show="chargeShow" v-ref:deductionlist></batch-deduction-list>
5
+ </div>
6
+ <div style="height: 98%;width: 40%" class="binary-right" v-if="chargeShow">
7
+ <batch-deduction-oper :batch-id="batch_id" v-ref:oper></batch-deduction-oper>
8
+ </div>
9
+ <work-busy :is-busy="isbusy"></work-busy>
10
+ </div>
11
+ </template>
12
+ <script>
13
+ export default {
14
+ title: '批量补扣费',
15
+ data () {
16
+ return {
17
+ chargeShow: false,
18
+ batch_id: '',
19
+ isbusy: false
20
+ }
21
+ },
22
+ ready () {},
23
+ methods: {},
24
+ events: {
25
+ async batchToSell (condition) {
26
+ this.isbusy = true
27
+ await this.$resetpost(`rs/logic/sale_chargeDeduction`, {condition}, {
28
+ resolveMsg: '生成收费记录成功',
29
+ rejectMsg: '生成收费记录失败',
30
+ silent: true
31
+ }, 0).then(res => {
32
+ this.batch_id = res.data
33
+ this.isbusy = false
34
+ }).catch(e => {
35
+ this.isbusy = false
36
+ })
37
+ await this.$refs.deductionlist.search()
38
+ this.chargeShow = true
39
+ },
40
+ reSearch () {
41
+ this.chargeShow = false
42
+ }
43
+ }
44
+ }
45
+ </script>
46
+ <style lang="less" scoped>
47
+ </style>
@@ -0,0 +1,238 @@
1
+ <template>
2
+ <criteria-paged :model="model" v-ref:paged>
3
+ <criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch">
4
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
5
+ <div class="row">
6
+ <div class="form-group col-sm-2">
7
+ <label class="font_normal_body"><nobr>用户编号</nobr></label>
8
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
9
+ condition="tbd.f_userinfo_code='{}'" placeholder='用户编号'>
10
+ </div>
11
+ <div class="form-group col-sm-2">
12
+ <label class="font_normal_body"><nobr>用户姓名</nobr></label>
13
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
14
+ condition="tbd.f_user_name = '{}'" placeholder='用户姓名'>
15
+ </div>
16
+ <div class="form-group col-sm-2" v-if="!$parent.$parent.chargeShow" >
17
+ <label class="font_normal_body"><nobr>用气性质</nobr></label>
18
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_gasproperties"
19
+ condition="uf.f_gasproperties='{}'" placeholder='用气性质'>
20
+ </div>
21
+
22
+ <div class="span" style="float:right;">
23
+ <button class="button_export button_spacing" @click="$parent.$parent.importToSuccess()">一键生成补扣费记录</button>
24
+ <button class="button_export button_spacing" @click="$parent.$parent.importForThe()">导入待处理记录</button>
25
+ <button class="button_search button_spacing" @click="$parent.$parent.search()">查询</button>
26
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
27
+
28
+ <div style="float: right" class="button_spacing"
29
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
30
+ @click="$parent.$parent.hidden()"></div>
31
+ </div>
32
+ </div>
33
+ <div class="row" v-show="$parent.$parent.criteriaShow">
34
+ <div class="form-group col-sm-2">
35
+ <label class="font_normal_body"><nobr>记录状态</nobr></label>
36
+ <v-select v-model="model.f_state"
37
+ placeholder='记录状态'
38
+ :value.sync="model.f_state"
39
+ :options='$parent.$parent.states'
40
+ condition="tbd.f_state = '{}'"
41
+ style="width: 60%"
42
+ close-on-select></v-select>
43
+ </div>
44
+ <div class="form-group col-sm-2" v-if="$parent.$parent.chargeShow" >
45
+ <label class="font_normal_body"><nobr>用气性质</nobr></label>
46
+ <input type="text" style="width:60%" class="input_search" v-model="model.f_gasproperties"
47
+ condition="uf.f_gasproperties='{}'" placeholder='用气性质'>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </criteria>
52
+ <data-grid :model="model" partial='list' v-ref:grid class="list_area table_sy">
53
+ <template partial='head'>
54
+ <tr>
55
+ <th>序号</th>
56
+ <th>客户编号</th>
57
+ <th>用户姓名</th>
58
+ <th>用气性质</th>
59
+ <th>表上余额</th>
60
+ <th>系统余额</th>
61
+ <th>金额</th>
62
+ <th>业务类型</th>
63
+ <th>收费时间</th>
64
+ <th>记录状态</th>
65
+ <th>生成记录人员</th>
66
+ <th>所属分公司</th>
67
+ <th>操作</th>
68
+ </tr>
69
+ </template>
70
+ <template partial='body'>
71
+ <td style="text-align: center;"> {{ $index + 1 }}</td>
72
+ <td>{{ row.f_userinfo_code }}</td>
73
+ <td>{{ row.f_user_name }}</td>
74
+ <td>{{ row.f_gasproperties }}</td>
75
+ <td>{{ row.f_jval }}</td>
76
+ <td>{{ row.f_balance_amount }}</td>
77
+ <td>{{ row.f_collection }}</td>
78
+ <td>{{ row.f_collection < 0 ? '扣费' : '补费' }}</td>
79
+ <td>{{ row.f_operate_date }}</td>
80
+ <td>{{ row.f_state }}</td>
81
+ <td>{{ row.f_operator }}</td>
82
+ <td>{{ row.f_orgname }}</td>
83
+ <td style="text-align: center"> <button v-if="row.f_state === '待生成'" type="button" class="btn btn-danger" @click.stop="$parent.$parent.$parent.cancel(row)">作废</button>&nbsp;&nbsp;&nbsp;
84
+ </td>
85
+ </template>
86
+ </data-grid>
87
+ </criteria-paged>
88
+ <work-busy :is-busy='isbusy'></work-busy>
89
+ <modal :show.sync="fileShow" width="480px" v-ref:modal backdrop="true">
90
+ <header slot="modal-header" class="modal-header">
91
+ <button type="button" class="close" @click="importForThe"><span>&times;</span></button>
92
+ <h4 class="modal-title">选择文件</h4>
93
+ </header>
94
+ <article slot="modal-body" class="modal-body">
95
+ <div class="form-group">
96
+ <file-upload class="my-file-uploader" name="useraddressUploadFile" action="rs/file/uploadFile" tagname="确定"
97
+ multiple v-ref:file></file-upload>
98
+ <button type="button" style="margin-top: 10px;" @click="downloadFiles()" class="button_clear btn-gn">模板下载</button>
99
+ </div>
100
+ </article>
101
+ <footer slot="modal-footer" class="modal-footer" style="display: none"></footer>
102
+ </modal>
103
+ </template>
104
+ <script>
105
+ import {PagedList, HttpResetClass} from 'vue-client'
106
+ import Vue from 'vue'
107
+
108
+ export default {
109
+ title: '批量预存',
110
+ props: ['chargeShow'],
111
+ data () {
112
+ return {
113
+ criteriaShow: false,
114
+ model: new PagedList('rs/sql/getDeductionRecord', 30 ,{}),
115
+ fileShow: false,
116
+ condition: '',
117
+ searchEd: false,
118
+ templateName: '批量补扣费导入模板',
119
+ states: [
120
+ {label: '待生成', value: '待生成'},
121
+ {label: '已生成', value: '已生成'},
122
+ {label: '作废', value: '作废'}
123
+ ],
124
+ isbusy: false
125
+ }
126
+ },
127
+
128
+ ready () {
129
+ },
130
+ methods: {
131
+ downloadFiles () {
132
+ let downurl = 'rs/downloadfile/file?filename=' + this.templateName
133
+ this.$downFile(downurl, this.templateName + '.xlsx')
134
+ },
135
+ selfSearch (args) {
136
+ this.condition = args.condition
137
+ this.model.search(args.condition, this.model)
138
+ this.searchEd = true
139
+ this.$dispatch('reSearch')
140
+ },
141
+ // 待生成记录生成为有效收费记录
142
+ async importToSuccess () {
143
+ if (this.searchEd) {
144
+ // 查询有多少待执行记录
145
+ let condition = this.condition + ` and tbd.f_state = '待生成' `
146
+ let http = new HttpResetClass()
147
+ let getCount = await http.load('POST', 'rs/sql/getDeductionRecord',
148
+ {data: {
149
+ condition: condition
150
+ }},
151
+ {resolveMsg: null, rejectMsg: null})
152
+ let sum = getCount.data.length
153
+ if (sum === 0) {
154
+ this.$showAlert('没有待生成的记录', 'warning', 2000)
155
+ return
156
+ }
157
+ this.$showMessage(`确定要生成收费记录吗?共计${sum}条记录`, ['confirm', 'cancel']).then(async (res) => {
158
+ if (res === 'confirm') {
159
+ this.$dispatch('batchToSell', condition)
160
+ }
161
+ })
162
+ } else {
163
+ this.$showAlert('请先执行查询操作', 'warning', 2000)
164
+ }
165
+ },
166
+ importForThe () {
167
+ this.fileShow = !this.fileShow
168
+ },
169
+ // 作废待生成记录
170
+ async cancel (row) {
171
+ await this.$resetpost('rs/entity/t_batch_deductions', {id: row.id, f_state: '作废'}, {
172
+ resolveMsg: '作废成功',
173
+ rejectMsg: '作废失败!!!'
174
+ })
175
+ await this.search()
176
+ },
177
+ // 隐藏折叠条件
178
+ hidden () {
179
+ this.criteriaShow = !this.criteriaShow
180
+ },
181
+ // 清空
182
+ clear () {
183
+ Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
184
+ this.$refs.paged.$refs.criteria.model[key] = []
185
+ })
186
+ },
187
+ search () {
188
+ this.$refs.paged.$refs.criteria.search()
189
+ }
190
+ },
191
+ events: {
192
+ onFileUpload: async function (file, res) {
193
+ this.isbusy = true
194
+ let data = {
195
+ filepath: res.f_downloadpath,
196
+ f_operator: Vue.$login.f.name,
197
+ f_operatorid: Vue.$login.f.id,
198
+ f_orgid: Vue.$login.f.orgid,
199
+ f_orgname: Vue.$login.f.orgs,
200
+ f_depid: Vue.$login.f.depids,
201
+ f_depname: Vue.$login.f.deps
202
+ }
203
+ await this.$resetpost(`rs/logic/sale_importPreloads`, data, {
204
+ resolveMsg: null,
205
+ rejectMsg: '导入失败',
206
+ silent: true
207
+ }, 0).then((res) => {
208
+ this.isbusy = false
209
+ if (res.data.type == 'success') {
210
+ this.$showAlert('导入信息:' + res.data.msg, res.data.type, 2000)
211
+ } else {
212
+ this.$showAlert('文件上传失败,请检查数据格式(每个数据字段值都为文本格式,收费金额为数字,日期格式为 年年年年-月月-日日 时时:分分:秒秒),多次错误请尝试重新下载模板', 'warning', 2000)
213
+ }
214
+ // 关闭上传框
215
+ this.importForThe()
216
+ // 重新查询
217
+ this.search()
218
+ }).catch(() => {
219
+ this.$showAlert('文件上传失败,请检查数据格式(每个数据字段值都为文本格式,收费金额为数字,日期格式为 年年年年-月月-日日 时时:分分:秒秒),多次错误请尝试重新下载模板', 'warning', 2000)
220
+ this.isbusy = false
221
+ })
222
+ },
223
+ 'onFileError' (error) {
224
+ this.$showAlert('文件上传失败,请检查数据格式(每个数据字段值都为文本格式,收费金额为数字,日期格式为 年年年年-月月-日日 时时:分分:秒秒),多次错误请尝试重新下载模板', 'warning', 2000)
225
+ }
226
+ }
227
+
228
+ }
229
+ </script>
230
+ <style lang="less" scoped>
231
+ .table_sy {
232
+ tr {
233
+ td {
234
+ text-align: center;
235
+ }
236
+ }
237
+ }
238
+ </style>
@@ -0,0 +1,119 @@
1
+ <template>
2
+ <criteria-paged :simple="true" :model="model" v-ref:paged>
3
+ <criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch">
4
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
5
+ </div>
6
+ </criteria>
7
+ <data-grid :model="model" partial='list' v-ref:grid class="list_area table_sy">
8
+ <template partial='head'>
9
+ <tr>
10
+ <th>客户编号</th>
11
+ <th>用户姓名</th>
12
+ <th>用气性质</th>
13
+ <th>金额</th>
14
+ <th>业务类型</th>
15
+ <th>操作</th>
16
+ </tr>
17
+ </template>
18
+ <template partial='body'>
19
+ <td>{{ row.f_userinfo_code }}</td>
20
+ <td>{{ row.f_user_name }}</td>
21
+ <td>{{ row.f_gasproperties }}</td>
22
+ <td>{{ row.f_collection }}</td>
23
+ <td>{{ row.type }}</td>
24
+ <td style="text-align: center;">
25
+ <button @click.stop="$parent.$parent.$parent.report(row)" class="btn btn-link" name="button" type="button"
26
+ v-if="row.f_state==='已生成'">票据补打
27
+ </button>
28
+ <!-- <button @click.stop="$parent.$parent.$parent.cancel(row)" class="btn btn-link" name="button" type="button"-->
29
+ <!-- v-if="row.f_state==='已生成'">撤销记录-->
30
+ <!-- </button>-->
31
+ </td>
32
+ </template>
33
+ </data-grid>
34
+ </criteria-paged>
35
+ <record-cancel :data="cancel_data" :show.sync="cancel_show" @cancel="cancelOper()" @cancel-success="cancelSucc()" v-if="cancel_show"></record-cancel>
36
+ <reissue-bill :data="reissue_data" :show.sync="reissue_show" @cancel="reissueOper()" @reissue-success="reissueSucc()"
37
+ v-if="reissue_show"></reissue-bill>
38
+ </template>
39
+ <script>
40
+ import {PagedList} from 'vue-client'
41
+ import co from 'co'
42
+
43
+ let reprintGen = function* (self, row) {
44
+ try {
45
+ let reissueData = {}
46
+ reissueData = Object.assign({}, reissueData, row)
47
+ reissueData.f_bill_type = '预存缴费'
48
+ reissueData.f_bill_style = '普通收据'
49
+ reissueData.f_operator = self.$login.f.name
50
+ reissueData.f_operatorid = self.$login.f.id
51
+ reissueData.f_orgid = self.$login.f.orgid
52
+ reissueData.f_orgname = self.$login.f.orgs
53
+ reissueData.f_depid = self.$login.f.depids
54
+ reissueData.f_depname = self.$login.f.deps
55
+ reissueData.billUrl = 'rs/report/MakeUp'
56
+ self.reissue_data = reissueData
57
+ self.reissue_show = true
58
+ } catch (error) {
59
+ if (error.status) {
60
+ self.$warn(`加载数据出错, ${JSON.stringify(error)}`, 'CardList')
61
+ }
62
+ throw error
63
+ }
64
+ }
65
+ export default {
66
+ title: '批量预存',
67
+ props: ['batchId'],
68
+ data () {
69
+ return {
70
+ model: new PagedList('rs/sql/batchDeductionQuery', 30),
71
+ reissue_show: false,
72
+ cancel_show: false,
73
+ cancel_data: null,
74
+ reissue_data: null
75
+ }
76
+ },
77
+
78
+ ready () {
79
+ this.search()
80
+ },
81
+ methods: {
82
+ cancel (row) {
83
+ this.cancel_show = true
84
+ this.cancel_data = row
85
+ },
86
+ cancelOper () {
87
+ this.cancel_data = null
88
+ this.cancel_show = false
89
+ },
90
+ cancelSucc () {
91
+ this.cancel_show = false
92
+ this.search()
93
+ this.$dispatch('refresh')
94
+ },
95
+ selfSearch (args) {
96
+ args.condition = args.condition + ` and tbd.f_batch_id = '${this.batchId}'`
97
+ this.model.search(args.condition, this.model)
98
+ },
99
+ reissueSucc () {
100
+ this.reissue_show = false
101
+ this.$dispatch('refresh')
102
+ },
103
+ reissueOper () {
104
+ this.reissue_data = null
105
+ this.reissue_show = false
106
+ },
107
+ report (row) {
108
+ let reprint = reprintGen(this, row)
109
+ return co(reprint)
110
+ },
111
+ search () {
112
+ this.$refs.paged.$refs.criteria.search()
113
+ }
114
+ }
115
+
116
+ }
117
+ </script>
118
+ <style lang="less" scoped>
119
+ </style>
@@ -1,20 +1,19 @@
1
1
  <template>
2
2
  <!-- <div v-if="listpage">-->
3
3
  <tab-button v-ref:list>
4
- <tabs header="批量销户审核">
4
+ <tabs header="批量销户审核" v-if="permission('批量销户审核')">
5
5
  <battch-canceluser-audit @deal-msg="dealMsg"></battch-canceluser-audit>
6
6
  </tabs>
7
- <tabs header="修改抄表员">
7
+ <tabs header="修改抄表员" v-if="permission('修改抄表员')">
8
8
  <batch-update-inputtor @deal-msg="dealMsg"></batch-update-inputtor>
9
9
  </tabs>
10
- <tabs header="修改表档案">
10
+ <tabs header="修改表档案" v-if="permission('修改表档案')">
11
+ <batch-edit-manage @deal-msg="dealMsg"></batch-edit-manage>
12
+ </tabs>
13
+ <tabs header="批量补扣费" v-if="permission('批量补扣费')">
11
14
  <batch-edit-manage @deal-msg="dealMsg"></batch-edit-manage>
12
15
  </tabs>
13
16
  </tab-button>
14
- <!-- </div>-->
15
- <!-- <div v-if="!listpage">-->
16
- <!-- <meter-info-manage :row="rowData" :f_start_date="f_start_date" :f_end_date="f_end_date"></meter-info-manage>-->
17
- <!-- </div>-->
18
17
  </template>
19
18
 
20
19
  <script>
@@ -39,12 +38,17 @@
39
38
  show: [true]
40
39
  }
41
40
  },
42
- components: {Tabs, TabButton, Closeaccount },
41
+ components: { Tabs, TabButton, Closeaccount },
43
42
  ready () {
44
- console.log(this.$refs.list)
45
- console.log('批量管理')
43
+ if (!this.permission('批量销户审核') && !this.permission('修改抄表员') && !this.permission('修改表档案') &&
44
+ !this.permission('批量补扣费')) {
45
+ this.$showAlert('您没有该页面的内容权限,请向管理员申请', 'warning', 3000)
46
+ }
46
47
  },
47
48
  methods: {
49
+ permission (name) {
50
+ return this.$login.r.find(value => value == name)
51
+ },
48
52
  cancel (obj) {
49
53
  this.listpage = true
50
54
  },
@@ -1,19 +1,21 @@
1
1
  <template>
2
- <div class="auto select-overspread" style="padding-left: 10px;">
3
- <ul class="nav nav-tabs" style="margin-bottom: 10px">
2
+ <div class="auto select-overspread" style="padding-left: 10px;">
3
+ <ul class="nav nav-tabs" style="margin-bottom: 10px">
4
4
  <li role="presentation" class="active"><a href="#">气表品牌</a></li>
5
5
  </ul>
6
6
  <validator name='v'>
7
- <form novalidate class="form-horizontal select-overspread container-fluid auto">
8
- <div class="row" >
7
+ <form novalidate class="form-horizontal select-overspread container-fluid auto">
8
+ <div class="row">
9
9
  <div class="col-sm-4 form-group" :class="[$v.f_meter_brand.required ? 'has-error' : 'has-success']">
10
- <label for="f_meter_brand" class="font_normal_body">气表品牌</label>
11
- <input class="input_search" style="width: 60%" type="text" v-model="gasmessage.f_meter_brand" v-validate:f_meter_brand="['required']">
10
+ <label for="f_meter_brand" class="font_normal_body">气表品牌</label>
11
+ <input class="input_search" style="width: 60%" type="text" v-model="gasmessage.f_meter_brand"
12
+ v-validate:f_meter_brand="['required']">
12
13
  </div>
13
14
 
14
15
  <div class="col-sm-4 form-group" :class="[$v.metertype.required ? 'has-error' : '']">
15
16
  <label for="f_meter_type" class="font_normal_body">气表类型</label>
16
- <input type="text" class="input_search" style="width: 60%" v-show="false" v-model="$refs.metertype.selectedItems" v-validate:metertype='{required: true }'>
17
+ <input type="text" class="input_search" style="width: 60%" v-show="false"
18
+ v-model="$refs.metertype.selectedItems" v-validate:metertype='{required: true }'>
17
19
  <v-select :value.sync="gasmessage.f_meter_type"
18
20
  v-model="gasmessage.f_meter_type"
19
21
  :options='meterType' placeholder='气表类型'
@@ -21,18 +23,19 @@
21
23
  </div>
22
24
  <div class="col-sm-4 form-group" :class="[$v.f_alias.required ? 'has-error' : 'has-success']">
23
25
  <label for="f_alias" class="font_normal_body">别&emsp;&emsp;名</label>
24
- <input class="input_search" style="width: 60%" type="text" v-model="gasmessage.f_alias" v-validate:f_alias='{required: true }'>
26
+ <input class="input_search" style="width: 60%" type="text" v-model="gasmessage.f_alias"
27
+ v-validate:f_alias='{required: true }'>
25
28
  </div>
26
29
  <div class="col-sm-4 form-group">
27
30
  <label for="f_checkout_limit" class="font_normal_body ">校检年限</label>
28
- <input class="input_search" style="width: 60%" type="number" v-model="gasmessage.f_checkout_limit" >
31
+ <input class="input_search" style="width: 60%" type="number" v-model="gasmessage.f_checkout_limit">
29
32
  </div>
30
33
  <div class="col-sm-4 form-group">
31
34
  <label for="f_collection_type" class="font_normal_body">缴费方式</label>
32
35
  <v-select :value.sync="gasmessage.f_collection_type"
33
36
  v-model="gasmessage.f_collection_type"
34
37
  :options='collectiontypes' placeholder='缴费方式'
35
- close-on-select :disabled='colletype' style="width: 60%"></v-select>
38
+ close-on-select :disabled='colletype' style="width: 60%"></v-select>
36
39
  </div>
37
40
  <div class="col-sm-4 form-group">
38
41
  <label for="f_isdecimal" class="font_normal_body">支持小数</label>
@@ -43,7 +46,7 @@
43
46
  </div>
44
47
  <div class="col-sm-4 form-group" v-if="gasmessage.f_isdecimal[0] ==='是'">
45
48
  <label for="f_isdecimal" class="font_normal_body">气量位数</label>
46
- <v-select :value.sync="gasmessage.f_gas_decimal"
49
+ <v-select :value.sync="gasmessage.f_gas_decimal"
47
50
  v-model="gasmessage.f_gas_decimal"
48
51
  :value-single="true"
49
52
  :search="false"
@@ -59,31 +62,45 @@
59
62
  :options='decimalArray' placeholder='金额位数'
60
63
  close-on-select style="width: 60%"></v-select>
61
64
  </div>
62
- <div class="col-sm-4 form-group" v-if="gasmessage.f_meter_type[0].includes('物联网')" :class="[$v.calculation.required ? 'select-error' : '']">
65
+ <div class="col-sm-4 form-group" v-if="gasmessage.f_meter_type[0].includes('物联网')"
66
+ :class="[$v.calculation.required ? 'select-error' : '']">
63
67
  <label for="f_calculation" class="font_normal_body">结算方式</label>
64
- <input type="text" v-show="false" v-model="$refs.calculation.selectedItems" v-validate:calculation='{required: true }'>
65
- <v-select :value.sync="gasmessage.f_calculation" :width="'60%'" :options='calculation' placeholder='结算方式' close-on-select v-ref:calculation>
68
+ <input type="text" v-show="false" v-model="$refs.calculation.selectedItems"
69
+ v-validate:calculation='{required: true }'>
70
+ <v-select :value.sync="gasmessage.f_calculation" :width="'60%'" :options='calculation'
71
+ placeholder='结算方式' close-on-select v-ref:calculation>
72
+ </v-select>
73
+ </div>
74
+ <div class="col-sm-4 form-group" v-if="gasmessage.f_meter_type[0].includes('物联网') && gasmessage.f_calculation.length
75
+ && gasmessage.f_calculation[0] == '表端结算'">
76
+ <label for="f_calculation" class="font_normal_body">系统结算</label>
77
+ <v-select :value.sync="gasmessage.f_system_settlement" :width="'60%'"
78
+ v-model="gasmessage.f_system_settlement"
79
+ :search="false"
80
+ :options='isdecimal' placeholder='系统是否结算' close-on-select>
66
81
  </v-select>
67
82
  </div>
68
83
  <div class="col-sm-4 form-group" v-if="gasmessage.f_meter_type[0].includes('物联网')">
69
84
  <label for="f_hascard" class="font_normal_body">是否带卡</label>
70
85
 
71
- <v-select :value.sync="gasmessage.f_hascard"
72
- v-model="gasmessage.f_hascard"
73
- :options='isdecimal' placeholder='是否带卡'
74
- close-on-select style="width: 60%"></v-select>
86
+ <v-select :value.sync="gasmessage.f_hascard"
87
+ v-model="gasmessage.f_hascard"
88
+ :options='isdecimal' placeholder='是否带卡'
89
+ close-on-select style="width: 60%"></v-select>
75
90
 
76
91
  </div>
77
- <div class="col-sm-4 form-group" v-if="gasmessage.f_meter_type[0].includes('物联网') && gasmessage.f_hascard[0]==='是'">
92
+ <div class="col-sm-4 form-group"
93
+ v-if="gasmessage.f_meter_type[0].includes('物联网') && gasmessage.f_hascard[0]==='是'">
78
94
  <label for="f_hascard" class="font_normal_body">共用次数</label>
79
95
 
80
- <v-select :value.sync="gasmessage.f_share_times"
81
- v-model="gasmessage.f_share_times"
82
- :options='isdecimal' placeholder='是否共用次数'
83
- close-on-select style="width: 60%"></v-select>
96
+ <v-select :value.sync="gasmessage.f_share_times"
97
+ v-model="gasmessage.f_share_times"
98
+ :options='isdecimal' placeholder='是否共用次数'
99
+ close-on-select style="width: 60%"></v-select>
84
100
 
85
101
  </div>
86
- <div class="col-sm-4 form-group" v-if="gasmessage.f_meter_type[0].includes('物联网') && gasmessage.f_hascard[0]==='是'">
102
+ <div class="col-sm-4 form-group"
103
+ v-if="gasmessage.f_meter_type[0].includes('物联网') && gasmessage.f_hascard[0]==='是'">
87
104
  <label for="f_hascard" class="font_normal_body">共用开户</label>
88
105
 
89
106
  <v-select :value.sync="gasmessage.f_share_open"
@@ -96,14 +113,15 @@
96
113
  <div class="col-sm-4 form-group" v-if="gasmessage.f_meter_type[0].includes('气量卡表')">
97
114
  <label for="hasCard" class="font_normal_body">支持蓝牙</label>
98
115
 
99
- <v-select :value.sync="gasmessage.f_support_bluetooth"
100
- :value-single="true"
101
- v-model="gasmessage.f_support_bluetooth"
102
- :options='isdecimal' placeholder='是否支持蓝牙'
103
- close-on-select style="width: 60%"></v-select>
116
+ <v-select :value.sync="gasmessage.f_support_bluetooth"
117
+ :value-single="true"
118
+ v-model="gasmessage.f_support_bluetooth"
119
+ :options='isdecimal' placeholder='是否支持蓝牙'
120
+ close-on-select style="width: 60%"></v-select>
104
121
 
105
122
  </div>
106
- <div class="col-sm-4 form-group" v-if="gasmessage.f_meter_type[0].includes('卡表')||gasmessage.f_meter_type[0].includes('物联网表')">
123
+ <div class="col-sm-4 form-group"
124
+ v-if="gasmessage.f_meter_type[0].includes('卡表')||gasmessage.f_meter_type[0].includes('物联网表')">
107
125
  <label for="hasCard" class="font_normal_body">是否累购</label>
108
126
  <v-select :value.sync="gasmessage.f_support_purchase"
109
127
  :value-single="true"
@@ -121,18 +139,20 @@
121
139
  </div>
122
140
  <div v-if="gasmessage.f_meter_type[0].includes('卡表') || gasmessage.f_hascard[0]==='是'" class="row">
123
141
  <div class="col-sm-4 form-group" :class="[$v.f_cardnumber.required ? 'has-error' : 'has-success']">
124
- <label for="f_card_password" class="font_normal_body">&nbsp;&nbsp;&nbsp;卡号&nbsp;&nbsp;&nbsp;</label>
125
- <input class="input_search" style="width: 60%" type="text" v-model="gasmessage.f_cardnumber" v-validate:f_cardnumber='{required: true }'>
142
+ <label for="f_card_password" class="font_normal_body">&nbsp;&nbsp;&nbsp;卡号&nbsp;&nbsp;&nbsp;</label>
143
+ <input class="input_search" style="width: 60%" type="text" v-model="gasmessage.f_cardnumber"
144
+ v-validate:f_cardnumber='{required: true }'>
126
145
  </div>
127
- <div class="col-sm-4 form-group" >
128
- <label for="f_card_password" class="font_normal_body">卡&ensp;密&ensp;码</label>
129
- <input class="input_search" style="width: 60%" type="text" v-model="gasmessage.f_card_password" >
146
+ <div class="col-sm-4 form-group">
147
+ <label for="f_card_password" class="font_normal_body">卡&ensp;密&ensp;码</label>
148
+ <input class="input_search" style="width: 60%" type="text" v-model="gasmessage.f_card_password">
130
149
  </div>
131
150
  </div>
132
151
 
133
152
  <div class="col-sm-4 form-group">
134
- <label class="font_normal_body ">优&ensp;先&ensp;级</label>
135
- <input class="input_search" placeholder="优先级" style="width:60%" type="text" v-model="gasmessage.f_priority">
153
+ <label class="font_normal_body ">优&ensp;先&ensp;级</label>
154
+ <input class="input_search" placeholder="优先级" style="width:60%" type="text"
155
+ v-model="gasmessage.f_priority">
136
156
  </div>
137
157
  <div class="col-sm-4 form-group">
138
158
  <label for="f_is_check" class="font_normal_body">是否校验</label>
@@ -156,8 +176,9 @@
156
176
  close-on-select style="width: 60%"></v-select>
157
177
  </div>
158
178
  <div class="col-sm-4 form-group">
159
- <label class="font_normal_body ">表号长度</label>
160
- <input class="input_search" placeholder="表号长度" style="width:60%" type="number" v-model="gasmessage.f_meternumber_len">
179
+ <label class="font_normal_body ">表号长度</label>
180
+ <input class="input_search" placeholder="表号长度" style="width:60%" type="number"
181
+ v-model="gasmessage.f_meternumber_len">
161
182
  </div>
162
183
  <div class="col-sm-4 form-group" v-if="gasmessage.f_meter_type[0].includes('卡表')">
163
184
  <label for="hasCard" class="font_normal_body">动&ensp;态&ensp;库<br/>到&ensp;期&ensp;日</label>
@@ -170,17 +191,24 @@
170
191
 
171
192
 
172
193
  <div class="col-sm-12 form-group" style="height: auto !important;">
173
- <label class="font_normal_body " style="margin-top:-20px">备&emsp;&emsp;注</label>
174
- <textarea class="input_textarea" rows="3" style="width:87%;margin-top:5px" v-model="gasmessage.f_comments"></textarea>
194
+ <label class="font_normal_body " style="margin-top:-20px">备&emsp;&emsp;注</label>
195
+ <textarea class="input_textarea" rows="3" style="width:87%;margin-top:5px"
196
+ v-model="gasmessage.f_comments"></textarea>
175
197
  </div>
176
198
  </div>
177
199
  <p class="bg-info text-center" style="padding: 8px;margin: 8px">气表型号</p>
178
- <add-gas-model :data="gasmessage" :modelvalid.sync="modelvalid" v-on:toggle = "getArrParam" v-ref:addgasmodel></add-gas-model>
200
+ <add-gas-model :data="gasmessage" :modelvalid.sync="modelvalid" v-on:toggle="getArrParam"
201
+ v-ref:addgasmodel></add-gas-model>
179
202
  <div style="text-align:right;height:auto;margin-top:30px;margin-right:50px;">
180
- <button type="button" class="button_search " @click="confirm()" :disabled='!($v.valid && modelvalid) ' v-if ='isConfirm'>保存</button>
181
- <button type="button" class="button_search " @click="modify()" :disabled='!($v.valid && modelvalid)' v-if ='isModify' >修改</button>
182
- <button type="button" class="button_search " @click="delMeter()" v-if='data.counts===0 && isModify'>删除</button>
183
- <button type="button" class="button_clear" @click="cancel()" >取消</button>
203
+ <button type="button" class="button_search " @click="confirm()" :disabled='!($v.valid && modelvalid) '
204
+ v-if='isConfirm'>保存
205
+ </button>
206
+ <button type="button" class="button_search " @click="modify()" :disabled='!($v.valid && modelvalid)'
207
+ v-if='isModify'>修改
208
+ </button>
209
+ <button type="button" class="button_search " @click="delMeter()" v-if='data.counts===0 && isModify'>删除
210
+ </button>
211
+ <button type="button" class="button_clear" @click="cancel()">取消</button>
184
212
  </div>
185
213
  </form>
186
214
  </validator>
@@ -191,9 +219,10 @@
191
219
  import ViewOrg from './ViewOrg'
192
220
  import AddGasModel from './AddGasModel'
193
221
  import {HttpResetClass} from 'vue-client'
222
+
194
223
  /**
195
- *阶梯气价管理组件
196
- */
224
+ *阶梯气价管理组件
225
+ */
197
226
  export default {
198
227
  components: {AddGasModel, ViewOrg},
199
228
  title: '修改气表品牌',
@@ -217,6 +246,7 @@ export default {
217
246
  f_support_bluetooth: '',
218
247
  f_support_purchase: '',
219
248
  f_issupport_feededuction: '',
249
+ f_system_settlement: '',
220
250
  f_share_times: '',
221
251
  f_share_open: '',
222
252
  f_priority: 100,
@@ -239,7 +269,10 @@ export default {
239
269
  isdecimal: [{label: '否', value: '否'}, {label: '是', value: '是'}],
240
270
  decimalArray: [{label: 1, value: 1}, {label: 2, value: 2}, {label: 3, value: 3}, {label: 4, value: 4}],
241
271
  collectiontypes: [{label: '按金额', value: '按金额'}, {label: '按气量', value: '按气量'}],
242
- meterType: [{label: '金额卡表', value: '金额卡表'}, {label: '气量卡表', value: '气量卡表'}, {label: '机表', value: '机表'}, {label: '物联网表', value: '物联网表'}],
272
+ meterType: [{label: '金额卡表', value: '金额卡表'}, {label: '气量卡表', value: '气量卡表'}, {
273
+ label: '机表',
274
+ value: '机表'
275
+ }, {label: '物联网表', value: '物联网表'}],
243
276
  calculation: [{label: '表端结算', value: '表端结算'}, {label: '系统结算', value: '系统结算'}]
244
277
  }
245
278
  },
@@ -291,6 +324,7 @@ export default {
291
324
  this.gasmessage.f_is_step = this.gasmessage.f_is_step ? [this.gasmessage.f_is_step] : []
292
325
  this.gasmessage.f_collection_type = this.gasmessage.f_collection_type ? [this.gasmessage.f_collection_type] : ''
293
326
  this.gasmessage.f_calculation = this.gasmessage.f_calculation ? [this.gasmessage.f_calculation] : ''
327
+ this.gasmessage.f_system_settlement = this.gasmessage.f_system_settlement ? [this.gasmessage.f_system_settlement] : ''
294
328
  this.isConfirm = false
295
329
  this.gasmessage.f_hascard = this.gasmessage.f_hascard ? [this.gasmessage.f_hascard] : []
296
330
  this.gasmessage.f_share_times = this.gasmessage.f_share_times ? [this.gasmessage.f_share_times] : []
@@ -317,14 +351,15 @@ export default {
317
351
  this.model.f_isdecimal = this.model.f_meter_type.includes('物联网') ? '是' : this.model.f_isdecimal[0]
318
352
  this.model.f_collection_type = this.model.f_collection_type[0]
319
353
  this.model.f_calculation = this.model.f_calculation[0]
354
+ this.model.f_system_settlement = this.model.f_system_settlement[0]
320
355
  this.model.useOrg = this.useOrg
321
356
  this.getArrParam()
322
357
  this.$LogicService.addGasBrand(this.model, this.addGasModelArray)
323
- .then(
324
- (res) => {
325
- this.$dispatch('success', '气表品牌增加', this.data, res)
326
- }
327
- ).catch(
358
+ .then(
359
+ (res) => {
360
+ this.$dispatch('success', '气表品牌增加', this.data, res)
361
+ }
362
+ ).catch(
328
363
  (error) => {
329
364
  this.$dispatch('error', '气表品牌增加', this.data, error)
330
365
  }
@@ -356,22 +391,23 @@ export default {
356
391
  console.log('+++++++++++++', this.model)
357
392
  if (this.model.f_meter_type !== '物联网表') {
358
393
  // this.model.f_hascard ='否'
359
- // this.model.f_share_times = '否'
394
+ // this.model.f_share_times = '否'
360
395
  }
361
396
  if (this.model.f_meter_type !== '气量卡表') {
362
- // this.model.f_support_bluetooth = '否'
397
+ // this.model.f_support_bluetooth = '否'
363
398
  }
364
399
  this.model.f_isdecimal = this.model.f_isdecimal[0]
365
400
  this.model.f_collection_type = this.model.f_collection_type[0]
366
401
  this.model.f_calculation = this.model.f_calculation[0]
402
+ this.model.f_system_settlement = this.model.f_system_settlement[0]
367
403
  this.$LogicService.modifyGasBrand(this.model, this.addGasModelArray)
368
- .then(
369
- (res) => {
370
- let http = new HttpResetClass()
371
- http.load('POST', 'rs/logic/delSaleInitData', {data: {}}, {resolveMsg: null, rejectMsg: null})
372
- this.$dispatch('success', '气表品牌修改', this.data, res)
373
- }
374
- ).catch(
404
+ .then(
405
+ (res) => {
406
+ let http = new HttpResetClass()
407
+ http.load('POST', 'rs/logic/delSaleInitData', {data: {}}, {resolveMsg: null, rejectMsg: null})
408
+ this.$dispatch('success', '气表品牌修改', this.data, res)
409
+ }
410
+ ).catch(
375
411
  (error) => {
376
412
  this.$dispatch('error', '气表品牌修改', this.data, error)
377
413
  }
@@ -306,6 +306,7 @@
306
306
  v-model="row.f_hand_date"
307
307
  :value.sync="row.f_hand_date"
308
308
  :format="'yyyy-MM-dd HH:mm:ss'"
309
+ @change="$parent.$parent.$parent.valueChange(row.f_hand_date, row)"
309
310
  :show-reset-button="true">
310
311
  </datepicker>
311
312
  </div>
@@ -342,6 +343,7 @@
342
343
  width="100%"
343
344
  :value-single="true"
344
345
  close-on-select
346
+ @change="$parent.$parent.$parent.valueChange(row.f_result_state, row)"
345
347
  condition="f_adjustable_name = '{}'"></v-select>
346
348
  <!-- <span id="inputError2Status" class="sr-only">(error)</span> -->
347
349
  </div>
@@ -359,6 +361,7 @@
359
361
  <input type="text" class="form-control" v-model="row.f_instantaneous_flow"
360
362
  v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
361
363
  :disabled="row.state === '开始'"
364
+ @blur="$parent.$parent.$parent.enter(row)"
362
365
  >
363
366
  </div>
364
367
  <div v-else>
@@ -372,6 +375,7 @@
372
375
  <input type="text" class="form-control" v-model="row.f_pressure"
373
376
  v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
374
377
  :disabled="row.state === '开始'"
378
+ @blur="$parent.$parent.$parent.enter(row)"
375
379
  >
376
380
  </div>
377
381
  <div v-else>
@@ -385,6 +389,7 @@
385
389
  <input type="text" class="form-control" v-model="row.f_temperature"
386
390
  v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
387
391
  :disabled="row.state === '开始'"
392
+ @blur="$parent.$parent.$parent.enter(row)"
388
393
  >
389
394
  </div>
390
395
  <div v-else>
@@ -392,7 +397,18 @@
392
397
  </div>
393
398
  </td>
394
399
  <td style="text-align: center;">
395
- <nobr>{{row.f_flowmeter_capacity}}</nobr>
400
+ <!-- <nobr>{{row.f_temperature}}</nobr>-->
401
+ <div class="form-group" style="margin-bottom:0px;"
402
+ v-if="row.f_meter_state === '未抄表' ">
403
+ <input type="text" class="form-control" v-model="row.f_flowmeter_capacity"
404
+ v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
405
+ :disabled="row.state === '开始'"
406
+ @blur="$parent.$parent.$parent.enter(row)"
407
+ >
408
+ </div>
409
+ <div v-else>
410
+ <span >{{ row.f_flowmeter_capacity }}</span>
411
+ </div>
396
412
  </td>
397
413
  <td style="text-align: center;">
398
414
  <!-- <nobr>{{row.f_controller_power}}</nobr>-->
@@ -401,6 +417,7 @@
401
417
  <input type="text" class="form-control" v-model="row.f_controller_power"
402
418
  v-next-el="{id: $index+1}" :id="$index" style="width: 100px;padding: 6px;"
403
419
  :disabled="row.state === '开始'"
420
+ @blur="$parent.$parent.$parent.enter(row)"
404
421
  >
405
422
  </div>
406
423
  <div v-else>
@@ -415,6 +432,7 @@
415
432
  :options='$parent.$parent.$parent.valve_switch' placeholder='阀门开关'
416
433
  width="100%"
417
434
  :value-single="true"
435
+ @change="$parent.$parent.$parent.valueChange(row.f_valve_switch, row)"
418
436
  close-on-select
419
437
  ></v-select>
420
438
  <!-- <span id="inputError2Status" class="sr-only">(error)</span> -->
@@ -569,6 +587,12 @@ import {HttpResetClass, PagedList} from 'vue-client'
569
587
  loadParamGem(this)
570
588
  },
571
589
  methods: {
590
+ valueChange (value, row) {
591
+ console.log('value=================>', value)
592
+ if (value) {
593
+ this.enter(row)
594
+ }
595
+ },
572
596
  hidden () {
573
597
  this.criteriaShow = !this.criteriaShow
574
598
  },
@@ -666,6 +690,11 @@ import {HttpResetClass, PagedList} from 'vue-client'
666
690
  this.$refs.paged.$refs.criteria.search()
667
691
  },
668
692
  enter (row) {
693
+ if (!row.f_result_state || !row.f_valve_switch || !row.f_controller_power ||
694
+ !row.f_flowmeter_capacity || !row.f_temperature || !row.f_pressure ||
695
+ !row.f_instantaneous_flow || !row.f_hand_date || !row.f_tablebase) {
696
+ return
697
+ }
669
698
  if (!row.f_tablebase || ((row.f_tablebase - 0) - (row.f_last_tablebase - 0)).toFixed(2) < 0) {
670
699
  return
671
700
  }
@@ -231,6 +231,7 @@ let LogicService = {
231
231
  f_isdecimal: model.f_isdecimal,
232
232
  f_collection_type: model.f_collection_type,
233
233
  f_calculation: model.f_calculation,
234
+ f_system_settlement: model.f_system_settlement,
234
235
  f_comments: model.f_comments,
235
236
  f_is_check: model.f_is_check,
236
237
  f_is_step: model.f_is_step,
package/src/sale.js CHANGED
@@ -1118,6 +1118,10 @@ export default function () {
1118
1118
  Vue.component('batch-preloads', (resolve) => { require(['./components/revenue/batchPreloads/batchPreloads'], resolve) })
1119
1119
  Vue.component('batch-preloads-list', (resolve) => { require(['./components/revenue/batchPreloads/batchPreloadsList'], resolve) })
1120
1120
  Vue.component('batch-preloads-charge', (resolve) => { require(['./components/revenue/batchPreloads/batchPreloadsCharge'], resolve) })
1121
+ // 批量补扣费
1122
+ Vue.component('batch-deduction-manage', (resolve) => { require(['./components/revenue/batchDeduction/batchDeduction'], resolve) })
1123
+ Vue.component('batch-deduction-list', (resolve) => { require(['./components/revenue/batchDeduction/batchDeductionList'], resolve) })
1124
+ Vue.component('batch-deduction-oper', (resolve) => { require(['./components/revenue/batchDeduction/batchDeductionOper'], resolve) })
1121
1125
  // 周口ncc推送日志查看
1122
1126
  Vue.component('log-query', (resolve) => { require(['./components/zhoukou/LogRecordList'], resolve) })
1123
1127
  // 周口ncc创建开发商档案