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.
Files changed (37) hide show
  1. package/build/webpack.base.conf.js +1 -0
  2. package/build/webpack.singlepage.conf.js +67 -0
  3. package/package.json +5 -3
  4. package/singlepage/FileUserFiles/App.vue +9 -0
  5. package/singlepage/FileUserFiles/index.html +16 -0
  6. package/singlepage/FileUserFiles/main.js +20 -0
  7. package/src/components/charge/gasloss/gasLossOperate.vue +14 -11
  8. package/src/components/common/userinfo_detail/ic_detail/AutomaticPurse.vue +1 -1
  9. package/src/components/common/userinfo_detail/ic_detail/CardHandRecord.vue +1 -1
  10. package/src/components/common/userinfo_detail/ic_detail/ChangeMeterQueryUser.vue +1 -1
  11. package/src/components/common/userinfo_detail/ic_detail/ChangeRecord.vue +1 -1
  12. package/src/components/common/userinfo_detail/ic_detail/ChargeQueryUser.vue +1 -1
  13. package/src/components/common/userinfo_detail/ic_detail/DeveiceRecord.vue +1 -1
  14. package/src/components/common/userinfo_detail/ic_detail/FillCardQueryUser.vue +1 -1
  15. package/src/components/common/userinfo_detail/ic_detail/HandQueryUser.vue +1 -1
  16. package/src/components/common/userinfo_detail/ic_detail/MachineRecordQuery.vue +1 -1
  17. package/src/components/common/userinfo_detail/ic_detail/OtherChargeQueryUser.vue +1 -1
  18. package/src/components/common/userinfo_detail/ic_detail/RecordQueryUser.vue +1 -1
  19. package/src/components/common/userinfo_detail/ic_detail/TransferQueryUser.vue +1 -1
  20. package/src/components/revenue/Common/PrintBill.vue +7 -2
  21. package/src/components/revenue/Common/ReissueBill.vue +8 -3
  22. package/src/components/revenue/batchPreloads/batchPreloads.vue +41 -0
  23. package/src/components/revenue/batchPreloads/batchPreloadsCharge.vue +117 -0
  24. package/src/components/revenue/batchPreloads/batchPreloadsList.vue +225 -0
  25. package/src/components/revenue/comprehen/Maintenance/revenue/MeterOperatemain.vue +6 -1
  26. package/src/filiale/macheng/UserBaseInfoNew.vue +1 -1
  27. package/src/filiale/qianneng/FilesManage/MeterinfoTest.vue +2 -6
  28. package/src/filiale/qianneng/HighMeter.vue +924 -0
  29. package/src/filiale/qianneng/js/OcxUtil.js +1659 -0
  30. package/src/filiale/qianneng/js/WsUtil.js +2505 -0
  31. package/src/filiale/qianneng/js/axCam_Ocx.js +81 -0
  32. package/src/filiale/qianneng/js/axCam_Ocx2.js +35 -0
  33. package/src/filiale/qianneng/sale.js +1 -0
  34. package/src/filiale/shanggao/FileAddressList.vue +139 -0
  35. package/src/filiale/shanggao/sale.js +7 -0
  36. package/src/main.js +1 -1
  37. 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>&nbsp;&nbsp;&nbsp;
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>&times;</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" :class="[$m.f_gas_date.required ? 'has-error' : '']">
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">&ensp;通气日期</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" :class="[$m.f_install_date.required ? 'has-error' : '']">
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">&ensp;安装日期</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>