sale-client 3.4.91 → 3.4.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/webpack.base.conf.js +1 -0
- package/build/webpack.singlepage.conf.js +67 -0
- package/package.json +5 -3
- package/singlepage/FileUserFiles/App.vue +9 -0
- package/singlepage/FileUserFiles/index.html +16 -0
- package/singlepage/FileUserFiles/main.js +20 -0
- package/src/components/charge/gasloss/gasLossOperate.vue +14 -11
- package/src/components/common/userinfo_detail/ic_detail/AutomaticPurse.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/CardHandRecord.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/ChangeMeterQueryUser.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/ChangeRecord.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/ChargeQueryUser.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/DeveiceRecord.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/FillCardQueryUser.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/HandQueryUser.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/MachineRecordQuery.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/OtherChargeQueryUser.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/RecordQueryUser.vue +1 -1
- package/src/components/common/userinfo_detail/ic_detail/TransferQueryUser.vue +1 -1
- package/src/components/revenue/Common/PrintBill.vue +7 -2
- package/src/components/revenue/Common/ReissueBill.vue +8 -3
- package/src/components/revenue/batchPreloads/batchPreloads.vue +41 -0
- package/src/components/revenue/batchPreloads/batchPreloadsCharge.vue +117 -0
- package/src/components/revenue/batchPreloads/batchPreloadsList.vue +225 -0
- package/src/components/revenue/comprehen/Maintenance/revenue/MeterOperatemain.vue +6 -1
- package/src/filiale/macheng/UserBaseInfoNew.vue +1 -1
- package/src/filiale/qianneng/FilesManage/MeterinfoTest.vue +2 -6
- package/src/filiale/qianneng/HighMeter.vue +924 -0
- package/src/filiale/qianneng/js/OcxUtil.js +1659 -0
- package/src/filiale/qianneng/js/WsUtil.js +2505 -0
- package/src/filiale/qianneng/js/axCam_Ocx.js +81 -0
- package/src/filiale/qianneng/js/axCam_Ocx2.js +35 -0
- package/src/filiale/qianneng/sale.js +1 -0
- package/src/filiale/shanggao/FileAddressList.vue +139 -0
- package/src/filiale/shanggao/sale.js +7 -0
- package/src/main.js +1 -1
- package/src/sale.js +12 -12
|
@@ -0,0 +1,225 @@
|
|
|
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="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="f_user_name like '%{}%'" 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="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="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="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
|
+
</tr>
|
|
66
|
+
</template>
|
|
67
|
+
<template partial='body'>
|
|
68
|
+
<td style="text-align: center;"> {{ $index + 1 }}</td>
|
|
69
|
+
<td>{{ row.f_userinfo_code }}</td>
|
|
70
|
+
<td>{{ row.f_user_name }}</td>
|
|
71
|
+
<td>{{ row.f_gasproperties }}</td>
|
|
72
|
+
<td>{{ row.f_collection }}</td>
|
|
73
|
+
<td>{{ row.f_operate_date }}</td>
|
|
74
|
+
<td>{{ row.f_state }}</td>
|
|
75
|
+
<td>{{ row.f_operator }}</td>
|
|
76
|
+
<td>{{ row.f_orgname }}</td>
|
|
77
|
+
<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>
|
|
78
|
+
</td>
|
|
79
|
+
</template>
|
|
80
|
+
</data-grid>
|
|
81
|
+
</criteria-paged>
|
|
82
|
+
<work-busy :is-busy='isbusy'></work-busy>
|
|
83
|
+
<modal :show.sync="fileShow" width="480px" v-ref:modal backdrop="true">
|
|
84
|
+
<header slot="modal-header" class="modal-header">
|
|
85
|
+
<button type="button" class="close" @click="importForThe"><span>×</span></button>
|
|
86
|
+
<h4 class="modal-title">选择文件</h4>
|
|
87
|
+
</header>
|
|
88
|
+
<article slot="modal-body" class="modal-body">
|
|
89
|
+
<div class="form-group">
|
|
90
|
+
<file-upload class="my-file-uploader" name="useraddressUploadFile" action="rs/file/uploadFile" tagname="确定"
|
|
91
|
+
multiple v-ref:file></file-upload>
|
|
92
|
+
</div>
|
|
93
|
+
</article>
|
|
94
|
+
<footer slot="modal-footer" class="modal-footer" style="display: none"></footer>
|
|
95
|
+
</modal>
|
|
96
|
+
</template>
|
|
97
|
+
<script>
|
|
98
|
+
import {PagedList, HttpResetClass} from 'vue-client'
|
|
99
|
+
import Vue from 'vue'
|
|
100
|
+
|
|
101
|
+
export default {
|
|
102
|
+
title: '批量预存',
|
|
103
|
+
props: ['chargeShow'],
|
|
104
|
+
data () {
|
|
105
|
+
return {
|
|
106
|
+
criteriaShow: false,
|
|
107
|
+
model: new PagedList('rs/sql/singleTable_OrderBy', 30,
|
|
108
|
+
{
|
|
109
|
+
orderitem: '" f_operate_date desc "',
|
|
110
|
+
items: '"*"',
|
|
111
|
+
tablename: '" t_batch_preloads "'
|
|
112
|
+
}),
|
|
113
|
+
fileShow: false,
|
|
114
|
+
condition: '',
|
|
115
|
+
searchEd: false,
|
|
116
|
+
states: [
|
|
117
|
+
{label: '待生成', value: '待生成'},
|
|
118
|
+
{label: '已生成', value: '已生成'},
|
|
119
|
+
{label: '作废', value: '作废'}
|
|
120
|
+
],
|
|
121
|
+
isbusy: false
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
ready () {
|
|
126
|
+
},
|
|
127
|
+
methods: {
|
|
128
|
+
selfSearch (args) {
|
|
129
|
+
this.condition = args.condition
|
|
130
|
+
this.model.search(args.condition, this.model)
|
|
131
|
+
this.searchEd = true
|
|
132
|
+
this.$dispatch('reSearch')
|
|
133
|
+
},
|
|
134
|
+
// 待生成记录生成为有效收费记录
|
|
135
|
+
async importToSuccess () {
|
|
136
|
+
if (this.searchEd) {
|
|
137
|
+
// 查询有多少待执行记录
|
|
138
|
+
let condition = this.condition + ` and f_state = '待生成' `
|
|
139
|
+
let http = new HttpResetClass()
|
|
140
|
+
let getCount = await http.load('POST', 'rs/sql/querySingleTable',
|
|
141
|
+
{data: {items: ' * ',
|
|
142
|
+
tablename: 't_batch_preloads',
|
|
143
|
+
condition: condition
|
|
144
|
+
}},
|
|
145
|
+
{resolveMsg: null, rejectMsg: null})
|
|
146
|
+
let sum = getCount.data.length
|
|
147
|
+
if (sum === 0) {
|
|
148
|
+
this.$showAlert('没有待生成的记录', 'warning', 2000)
|
|
149
|
+
return
|
|
150
|
+
}
|
|
151
|
+
this.$showMessage(`确定要生成收费记录吗?共计${sum}条记录`, ['confirm', 'cancel']).then(async (res) => {
|
|
152
|
+
if (res === 'confirm') {
|
|
153
|
+
this.$dispatch('batchToSell', condition)
|
|
154
|
+
}
|
|
155
|
+
})
|
|
156
|
+
} else {
|
|
157
|
+
this.$showAlert('请先执行查询操作', 'warning', 2000)
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
importForThe () {
|
|
161
|
+
this.fileShow = !this.fileShow
|
|
162
|
+
},
|
|
163
|
+
// 作废待生成记录
|
|
164
|
+
async cancel (row) {
|
|
165
|
+
await this.$resetpost('rs/entity/t_batch_preloads', {id: row.id, f_state: '作废'}, {
|
|
166
|
+
resolveMsg: '作废成功',
|
|
167
|
+
rejectMsg: '作废失败!!!'
|
|
168
|
+
})
|
|
169
|
+
await this.search()
|
|
170
|
+
},
|
|
171
|
+
// 隐藏折叠条件
|
|
172
|
+
hidden () {
|
|
173
|
+
this.criteriaShow = !this.criteriaShow
|
|
174
|
+
},
|
|
175
|
+
// 清空
|
|
176
|
+
clear () {
|
|
177
|
+
Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
|
|
178
|
+
this.$refs.paged.$refs.criteria.model[key] = []
|
|
179
|
+
})
|
|
180
|
+
},
|
|
181
|
+
search () {
|
|
182
|
+
this.$refs.paged.$refs.criteria.search()
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
events: {
|
|
186
|
+
onFileUpload: async function (file, res) {
|
|
187
|
+
this.isbusy = true
|
|
188
|
+
let data = {
|
|
189
|
+
filepath: res.f_downloadpath,
|
|
190
|
+
f_operator: Vue.$login.f.name,
|
|
191
|
+
f_operatorid: Vue.$login.f.id,
|
|
192
|
+
f_orgid: Vue.$login.f.orgid,
|
|
193
|
+
f_orgname: Vue.$login.f.orgs,
|
|
194
|
+
f_depid: Vue.$login.f.depids,
|
|
195
|
+
f_depname: Vue.$login.f.deps
|
|
196
|
+
}
|
|
197
|
+
await this.$resetpost(`rs/logic/sale_importPreloads`, data, {
|
|
198
|
+
resolveMsg: null,
|
|
199
|
+
rejectMsg: '导入失败',
|
|
200
|
+
silent: true
|
|
201
|
+
}, 0).then((res) => {
|
|
202
|
+
this.isbusy = false
|
|
203
|
+
if (res.data.type == 'success') {
|
|
204
|
+
this.$showAlert('导入信息:' + res.data.msg, res.data.type, 2000)
|
|
205
|
+
} else {
|
|
206
|
+
this.$showAlert('文件上传失败,请检查数据格式(每个数据字段值都为文本格式,收费金额为数字,日期格式为 年年年年-月月-日日 时时:分分:秒秒),多次错误请尝试重新下载模板', 'warning', 2000)
|
|
207
|
+
}
|
|
208
|
+
// 关闭上传框
|
|
209
|
+
this.importForThe()
|
|
210
|
+
// 重新查询
|
|
211
|
+
this.search()
|
|
212
|
+
}).catch(() => {
|
|
213
|
+
this.$showAlert('文件上传失败,请检查数据格式(每个数据字段值都为文本格式,收费金额为数字,日期格式为 年年年年-月月-日日 时时:分分:秒秒),多次错误请尝试重新下载模板', 'warning', 2000)
|
|
214
|
+
this.isbusy = false
|
|
215
|
+
})
|
|
216
|
+
},
|
|
217
|
+
'onFileError' (error) {
|
|
218
|
+
this.$showAlert('文件上传失败,请检查数据格式(每个数据字段值都为文本格式,收费金额为数字,日期格式为 年年年年-月月-日日 时时:分分:秒秒),多次错误请尝试重新下载模板', 'warning', 2000)
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
}
|
|
223
|
+
</script>
|
|
224
|
+
<style lang="less" scoped>
|
|
225
|
+
</style>
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
<v-select :value.sync="model.f_state" v-model="model.f_state"
|
|
14
14
|
:value-single="true"
|
|
15
15
|
:search="false"
|
|
16
|
+
:disabled="editstate"
|
|
16
17
|
:options='positions' placeholder='收费状态'
|
|
17
18
|
close-on-select>
|
|
18
19
|
</v-select>
|
|
@@ -219,7 +220,8 @@
|
|
|
219
220
|
'f_bill_date': '开票时间',
|
|
220
221
|
'f_bill_operator': '开票人',
|
|
221
222
|
'f_serial_id': '流水号'
|
|
222
|
-
}
|
|
223
|
+
},
|
|
224
|
+
editstate:true,
|
|
223
225
|
}
|
|
224
226
|
},
|
|
225
227
|
props: {
|
|
@@ -231,6 +233,9 @@
|
|
|
231
233
|
if (this.$login.r.includes('维护银行转账信息')) {
|
|
232
234
|
this.editbank = true
|
|
233
235
|
}
|
|
236
|
+
if(this.$login.r.includes('收费记录状态修改')){
|
|
237
|
+
this.editstate=false
|
|
238
|
+
}
|
|
234
239
|
this.oldmodel = JSON.parse(JSON.stringify(this.model))
|
|
235
240
|
this.model.f_bill_state = [this.oldmodel]
|
|
236
241
|
console.log('看看收费id', this.oldmodel)
|
|
@@ -140,7 +140,7 @@
|
|
|
140
140
|
class="button_search" type="button" @click="openUser">开户</button>
|
|
141
141
|
<button v-if="row.f_meter_type.includes('物联网表')"
|
|
142
142
|
class="button_search" type="button" @click="valvecontrol">开关阀</button>
|
|
143
|
-
<button v-if="row.f_meter_type.includes('物联网表')"
|
|
143
|
+
<button title="权限:开关自动阀控" v-if="row.f_meter_type.includes('物联网表')" :disabled="!this.$login.r.includes('开关自动阀控')"
|
|
144
144
|
class="button_search" type="button" @click="zdfk">开关自动阀控</button>
|
|
145
145
|
<div
|
|
146
146
|
:class="{'button_shrink_top':criteriaShow,'button_shrink_bottom':!criteriaShow}"
|
|
@@ -183,12 +183,10 @@
|
|
|
183
183
|
:options='gasperson' placeholder='通气人'
|
|
184
184
|
close-on-select></v-select> -->
|
|
185
185
|
</div>
|
|
186
|
-
<div class="col-sm-4 form-group"
|
|
187
|
-
<input type="text" v-model="$refs.f_gas_date.value" v-show="false" v-validate:f_gas_date='{required: true }'>
|
|
186
|
+
<div class="col-sm-4 form-group" >
|
|
188
187
|
<label for="f_gas_date" class="font_normal_body"> 通气日期</label>
|
|
189
188
|
<datepicker style="width:60%" placeholder="通气日期"
|
|
190
189
|
v-model="row.f_gas_date"
|
|
191
|
-
v-ref:f_gas_date
|
|
192
190
|
:value.sync="row.f_gas_date"
|
|
193
191
|
:format="'yyyy-MM-dd HH:mm:ss'"
|
|
194
192
|
></datepicker>
|
|
@@ -221,14 +219,12 @@
|
|
|
221
219
|
:options='meterbookoptions' placeholder='抄表册'
|
|
222
220
|
close-on-select></v-select>
|
|
223
221
|
</div>
|
|
224
|
-
<div class="col-sm-4 form-group" v-show="true"
|
|
225
|
-
<input type="text" v-model="$refs.f_install_date.value" v-show="false" v-validate:f_install_date='{required: true }'>
|
|
222
|
+
<div class="col-sm-4 form-group" v-show="true" >
|
|
226
223
|
<label for="f_install_date" class="font_normal_body"> 安装日期</label>
|
|
227
224
|
<datepicker style="width:60%" id="startDate" placeholder="安装日期" width='100%'
|
|
228
225
|
v-model="row.f_install_date"
|
|
229
226
|
:value.sync="row.f_install_date"
|
|
230
227
|
class="datepicker"
|
|
231
|
-
v-ref:f_install_date
|
|
232
228
|
:format="'yyyy-MM-dd HH:mm:ss'"
|
|
233
229
|
:show-reset-button="true">
|
|
234
230
|
</datepicker>
|