sale-client 4.2.21 → 4.2.22

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 (50) hide show
  1. package/build/dev-server.js +52 -32
  2. package/package.json +1 -1
  3. package/src/App.vue +1 -1
  4. package/src/components/revenue/HandManager/MeterBookUser.vue +726 -726
  5. package/src/components/revenue/comprehen/ComprehenOperation/QrPay/QrPaymentDetailed.vue +423 -423
  6. package/src/components/revenue/comprehen/ComprehenOperation/newchangemeter/ChangeMeter.vue +2 -0
  7. package/src/components/revenue/comprehen/Maintenance/hand/handOperate.vue +469 -469
  8. package/src/components/revenue/machineHandManage/ArrearsQuery.vue +938 -938
  9. package/src/components/webMeter/MeterManage/WebMeterBatchOperationValve.vue +970 -970
  10. package/src/filiale/alashan/eticket/EticketRecordList.vue +428 -428
  11. package/src/filiale/bayan/ChargeList.vue +1010 -1010
  12. package/src/filiale/bayan/StockListmain.vue +543 -543
  13. package/src/filiale/beifangshiye/OtherChargeNew.vue +625 -625
  14. package/src/filiale/lixianV3/ArrearsQuery.vue +938 -938
  15. package/src/filiale/lixianV3/InsuranceChargesDetails.vue +425 -425
  16. package/src/filiale/meihekou/common/userinfo_detail/ic_detail/MachineRecordQuery.vue +281 -281
  17. package/src/filiale/qianneng/revenue/sms/AccountMessageList.vue +508 -508
  18. package/src/filiale/ronghao/ArrearsQuery.vue +974 -974
  19. package/src/filiale/ronghao/CardService.js +2144 -2144
  20. package/src/filiale/ronghao/InsuranceManage.vue +58 -58
  21. package/src/filiale/ronghao/MachineChargeService.js +149 -149
  22. package/src/filiale/ronghao/NoCardMeterCenter.vue +534 -534
  23. package/src/filiale/ronghao/PaymentCode.vue +174 -174
  24. package/src/filiale/ronghao/PriceChangeCompensation/CompensationManage.vue +26 -26
  25. package/src/filiale/ronghao/PriceChangeCompensation/IotCompensation.vue +318 -318
  26. package/src/filiale/ronghao/PriceChangeCompensation/JbCompensation.vue +343 -343
  27. package/src/filiale/ronghao/PriceChangeCompensation/SurplusRecordDetail.vue +74 -74
  28. package/src/filiale/ronghao/ReplaceCardManage.vue +415 -415
  29. package/src/filiale/ronghao/Upload.vue +654 -654
  30. package/src/filiale/ronghao/cardDown.vue +1141 -1141
  31. package/src/filiale/ronghao/changemeterOperate.vue +315 -315
  32. package/src/filiale/ronghao/fillgasSpecific.vue +313 -313
  33. package/src/filiale/ronghao/ic_detail/ChargeRecordQuery.vue +106 -106
  34. package/src/filiale/ronghao/ic_detail/WatchCollection.vue +115 -115
  35. package/src/filiale/ronghao/ic_detail/WebHandQueryUser.vue +411 -411
  36. package/src/filiale/ronghao/machineDown.vue +1176 -1176
  37. package/src/filiale/ronghao/replacementSingleInfoOperation.vue +315 -315
  38. package/src/filiale/ronghao/specificInformation.vue +537 -537
  39. package/src/filiale/yangchun/ChargeList.vue +954 -954
  40. package/src/filiale/yuncheng/changemeterListMaintain.vue +504 -504
  41. package/src/filiale/zhongsheng/BlackListList.vue +293 -293
  42. package/src/filiale/zhongyi/HandQueryUser.vue +389 -389
  43. package/src/main.js +1 -1
  44. package/src/plugins/CardService.js +2217 -2217
  45. package/.gradle/5.2.1/fileChanges/last-build.bin +0 -0
  46. package/.gradle/5.2.1/fileHashes/fileHashes.lock +0 -0
  47. package/.gradle/5.2.1/gc.properties +0 -0
  48. package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  49. package/.gradle/buildOutputCleanup/cache.properties +0 -2
  50. package/.gradle/vcs-1/gc.properties +0 -0
@@ -1,508 +1,508 @@
1
- <template>
2
-
3
- <criteria-paged :model="model" v-ref:paged >
4
- <p class="bg-info text-center" style="padding: 8px;font-size: 20px">短信信息
5
- </p>
6
- <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
7
- <div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
8
- <div class="row">
9
- <div class="form-group col-sm-3">
10
- <label class="font_normal_body">短信类型</label>
11
- <v-select id="f_send_type"
12
- v-model="model.f_send_type"
13
- placeholder='短信类型'
14
- style="width: 60%"
15
- :value.sync="model.f_send_type"
16
- :options='$parent.$parent.getsendType'
17
- condition= "f_send_type = '{}'"
18
- close-on-select>
19
- </v-select>
20
- </div>
21
- <div class="form-group col-sm-3">
22
- <label class="font_normal_body">发送状态</label>
23
- <v-select id="f_send"
24
- v-model="model.f_send"
25
- placeholder='发送状态'
26
- style="width: 60%"
27
- :value.sync="model.f_send"
28
- :options='$parent.$parent.sendType'
29
- condition= "f_send = '{}'"
30
- close-on-select>
31
- </v-select>
32
- </div>
33
-
34
-
35
- <div class="span" style="float:right;">
36
- <button class="button_search button_spacing width-60" @click="$parent.$parent.search()" v-el:cba>查询</button>
37
- <button class="button_clear button_spacing width-60" title="权限:短信发送" v-show="$parent.$parent.smsMessaage.includes('短信发送')" @click="$parent.$parent.confirms()" v-el:cba>发送</button>
38
- <button class="button_delete button_spacing width-60" title="权限:短信发送" v-show="$parent.$parent.smsMessaage.includes('短信发送')"@click="$parent.$parent.delete()" v-el:cba>删除</button>
39
- <button v-show="$parent.$parent.alllist" class="button_clear button_spacing width-60" @click="$parent.$parent.retrun()" v-el:cba>返回</button>
40
- <button class="button_export button_spacing" title="权限:短信导入" v-show="$parent.$parent.smsMessaage.includes('短信导入')" @click="$parent.$parent.importSMS()">导入</button>
41
- <export-excel :data="$parent.$parent.getCondition" sql-name="getSendAll"
42
- template-name="短信信息导出" sqlurl="api/af-revenue/logic/saleExport"
43
- :field="$parent.$parent.getfield" :choose-col="true"></export-excel>
44
- <!-- items: 'f_userinfo_id,f_user_name,f_user_phone,f_user_id, f_gas,f_amount,f_balance,f_arreamount,f_arrears_date,f_create_date,f_send_content,f_send,f_send_date, f_filiale,f_outlets',-->
45
- <!-- orderitem: 'id',tablename: 't_sms',-->
46
- <div
47
- :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
48
- @click="$parent.$parent.hidden()" class="button_spacing" style="float: right">
49
- </div>
50
- </div>
51
- </div>
52
- <div class="row" v-show="$parent.$parent.criteriaShow">
53
- <div class="form-group col-sm-3">
54
- <label class="font_normal_body">评价级别</label>
55
- <v-select id="f_reply_type"
56
- v-model="model.f_reply_type"
57
- placeholder='评价级别'
58
- style="width: 60%"
59
- :value.sync="model.f_reply_type"
60
- :options='$parent.$parent.replyType'
61
- condition= "f_reply_type = '{}'"
62
- close-on-select>
63
- </v-select>
64
- </div>
65
- <div class="form-group col-sm-3">
66
- <label class="font_normal_body">用户编号</label>
67
- <input type="text" class="form-control" v-model="model.code" placeholder='用户编号' v-filter v-figure_filter
68
- condition="code = '{}'" v-next-el='yhxm' style="width: 60%"
69
- :size="model.code ? model.f_userinfo_id.length : 4">
70
- </div>
71
- <div class="form-group col-sm-3">
72
- <label class="font_normal_body">用户姓名</label>
73
- <input type="text" class="form-control" v-model="model.f_user_name" placeholder='用户姓名'
74
- condition="f_user_name = '{}'" v-next-el='yhxm' style="width: 60%"
75
- :size="model.f_user_name ? model.f_user_name.length : 4">
76
- </div>
77
- <div class="form-group col-sm-3">
78
- <label class="font_normal_body">用户电话</label>
79
- <input type="text" class="form-control" v-model="model.f_user_phone" placeholder='用户电话'
80
- condition="f_user_phone like '%{}%'" v-next-el='yhxm' style="width: 60%"
81
- :size="model.f_user_phone ? model.f_user_phone.length : 4">
82
- </div>
83
-
84
- <div class="form-group col-sm-3">
85
- <label class="font_normal_body">选择小区</label>
86
- <v-select :value.sync="model.f_residential_area" :value-single="true"
87
- class="select_list select"
88
- style="width: 60%"
89
- :options='$parent.$parent.residentialArea' placeholder='选择小区'
90
- close-on-select search="true">
91
- </v-select>
92
- </div>
93
- <div class="form-group col-sm-3" title="短信生成开始时间">
94
- <label class="font_normal_body">开始日期</label>
95
- <datepicker id="f_create_start_date" placeholder="开始日期"
96
- v-model="model.f_create_start_date"
97
- :value.sync="model.f_create_start_date"
98
- :disabled-days-of-Week="[]"
99
- style="width: 60%"
100
- condition="convert(varchar(10),f_sendtime,120) >= '{}'"
101
- :format="'yyyy-MM-dd'"
102
- :show-reset-button="reset">
103
- </datepicker>
104
- </div>
105
- <div class="form-group col-sm-3" title="短信生成结束时间">
106
- <label class="font_normal_body">结束日期</label>
107
- <datepicker id="f_create_end_date" placeholder="结束日期"
108
- v-model="model.f_create_end_date"
109
- :value.sync="model.f_create_end_date"
110
- :disabled-days-of-Week="[]"
111
- style="width: 60%"
112
- condition="convert(varchar(10),f_sendtime,120) <= '{}'"
113
- :format="'yyyy-MM-dd'"
114
- :show-reset-button="reset">
115
- </datepicker>
116
- </div>
117
- </div>
118
- </div>
119
- </criteria>
120
- <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid>
121
- <template partial='head'>
122
- <tr>
123
- <th>
124
- <input type="checkbox" @click="$parent.$parent.$parent.isAll(model.pageIndex)">
125
- </th>
126
- <th><nobr>序号</nobr></th>
127
- <th><nobr>用户信息</nobr></th>
128
- <th><nobr>用户编号</nobr></th>
129
- <th><nobr>电话号码</nobr></th>
130
- <th><nobr>短信类型</nobr></th>
131
- <th><nobr>短信内容</nobr></th>
132
- <th><nobr>发送状态</nobr></th>
133
- <th><nobr>发送时间</nobr></th>
134
- <th><nobr>状态报告</nobr></th>
135
- <th><nobr>评价级别</nobr></th>
136
- <th><nobr>回执状态</nobr></th>
137
- <th><nobr>评价内容</nobr></th>
138
- <th><nobr>操作人</nobr></th>
139
- <th><nobr>操作</nobr></th>
140
- </tr>
141
- </template>
142
- <template partial='body'>
143
- <td style="text-align:center">
144
- <input type="checkbox" v-model="$parent.$parent.$parent.ids"
145
- :value="row.id">
146
- </td>
147
- <td style="text-align:center"><nobr>{{$index+1}}</nobr></td>
148
- <td style="text-align:center"><nobr>{{row.f_userinfo_id}}|{{row.f_user_name}}|{{row.f_user_phone}}</nobr></td>
149
- <td style="text-align:center"><nobr>{{row.code}}</nobr></td>
150
- <td style="text-align:center"><nobr>{{row.f_phone}}</nobr></td>
151
- <td style="text-align:center"><nobr>{{row.f_send_type}}</nobr></td>
152
- <td style="text-align:center;width: 20px" :title="row.f_content"><nobr>{{row.f_content.substr(0,20)}}</nobr></td>
153
- <td style="text-align:center"><nobr>{{row.f_send}}</nobr></td>
154
- <td style="text-align:center"><nobr>{{row.f_sendtime}}</nobr></td>
155
- <td style="text-align:center"><nobr>{{row.f_statedetail}}</nobr></td>
156
- <td style="text-align:center"><nobr>{{row.f_reply_type}}</nobr></td>
157
- <td style="text-align:center"><nobr>{{row.f_result_msg}}</nobr></td>
158
- <td style="text-align:center"><nobr>{{row.f_reply_content}}</nobr></td>
159
- <td style="text-align:center"><nobr>{{row.f_operator}}</nobr>
160
- </td>
161
- <td :class="'back-blue'" style="text-align: center;" >
162
- <div v-if="row.f_state == '未发'">
163
- <button class="button_clear button_spacing width-50" @click="$parent.$parent.$parent.amendment(row)">修正</button>
164
- <button class="button_delete button_spacing width-50" @click="$parent.$parent.$parent.delete2(row)">删除</button>
165
- </div>
166
- </td>
167
- </template>
168
- </data-grid>
169
- </criteria-paged>
170
-
171
- <modal :show.sync="arrshow" v-ref:modal backdrop="false">
172
- <header slot="modal-header" class="modal-header">
173
- <h4 class="modal-title">修正</h4>
174
- </header>
175
- <article slot="modal-body" class="modal-body">
176
- <div class="form-group">
177
- <input type="text" class="input_search" v-model="amendcontent" :value.sync="amendcontent"
178
- placeholder='短信内容'>
179
- </div>
180
- </article>
181
- <footer slot="modal-footer" class="modal-footer">
182
- <button v-show="arrshow" type="button" class="btn btn-default" @click='close'>取消</button>
183
- <button v-show="arrshow" type="button" class="btn btn-success" @click='create(row)'>确认</button>
184
- </footer>
185
- </modal>
186
- <modal :show.sync="showFile" v-ref:modal backdrop="true">
187
- <header slot="modal-header" class="modal-header">
188
- <button type="button" class="close" @click="closeFile"><span>&times;</span></button>
189
- <h4 class="modal-title">选择文件</h4>
190
- </header>
191
- <article slot="modal-body" class="modal-body">
192
- <div class="form-group">
193
- <file-upload class="my-file-uploader" name="importSms" action="rs/file/uploadFile" tagname="确定" multiple v-ref:file></file-upload>
194
- </div>
195
- </article>
196
- <footer slot="modal-footer" class="modal-footer">
197
- <div class="progress">
198
- <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" :style="{width:progressBar}">
199
- {{progressBar}}
200
- </div>
201
- </div>
202
- </footer>
203
- </modal>
204
- </template>
205
-
206
- <script>
207
- /**
208
- *阶梯气价查询列表
209
- */
210
- import { PagedList, HttpResetClass } from 'vue-client'
211
- import Vue from 'vue'
212
- import axios from 'axios'
213
- export default {
214
- data () {
215
- return {
216
- criteriaShow: false,
217
- model: new PagedList('api/af-revenue/sql/getSendAll', 20),
218
- f_send: '未发送',
219
- downDate: this.$login.toStandardDateString(),
220
- ids: [],
221
- show: false,
222
- pages: [],
223
- arrshow: false,
224
- alllist: false,
225
- // 修正的短信内容
226
- amendcontent: '',
227
- isFirst: true,
228
- amendid: '',
229
- // 小区
230
- residentialArea: [],
231
- sendType: [{label: '全部', value: ''}, ...this.$appdata.getParam('发送状态')],
232
- getsendType: this.$appdata.getParam('短信类型'),
233
- replyType: this.$appdata.getParam('评价级别'),
234
- bodydata: ['f_user_name', 'code', 'f_phone', 'f_send_type', 'f_content', 'f_send', 'f_sendtime', 'f_statedetail', 'f_reply_type', 'f_reply_content', 'f_reply_content'],
235
- header: ['用户姓名', '用户编号', '电话号码', '短信类型', '短信内容', '发送状态', '发送时间', '状态报告', '评价级别', '回执状态', '评价内容'],
236
- showFile: false,
237
- progressBar:'0%'
238
- }
239
- },
240
- props: {
241
- condition: {
242
- type: String
243
- }
244
- },
245
- computed: {
246
- smsMessaage () {
247
- return this.$login.r ? this.$login.r : []
248
- },
249
- getCondition () {
250
- return {condition: this.$refs.paged.$refs.cri.condition}
251
- },
252
- getfield () {
253
- let data = {}
254
- this.bodydata.forEach((value, index) => {
255
- data[this.bodydata[index]] = this.header[index]
256
- })
257
- return data
258
- console.log('field' + data)
259
- }
260
- },
261
- ready () {
262
- // this.getaddress()
263
- },
264
- methods: {
265
- importSMS () {
266
- this.showFile = true
267
- },
268
- // 关闭文件上传对话框
269
- closeFile () {
270
- this.showFile = false
271
- // 将选的文件清空
272
- this.$refs.file.$el.querySelector('input').value = ''
273
- },
274
- hidden () {
275
- this.criteriaShow = !this.criteriaShow
276
- },
277
- async getaddress () {
278
- console.log('开始获取小区')
279
- let HttpReset = new HttpResetClass()
280
- var data = await HttpReset.load('POST', 'api/af-revenue/sql/address_getarealist', {
281
- data: {
282
- condition: '1=1'
283
- }
284
- }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
285
- console.log('小区', data)
286
- let house = []
287
- for (let row of data.data) {
288
- console.log('开始保存小区')
289
- house.push({label: row.f_residential_area, value: row.f_residential_area})
290
- }
291
- this.residentialArea = house
292
- },
293
-
294
- // 把数据库查询数据转换为下拉数据
295
- // calculate(rows){
296
- // let data = []
297
- // rows.forEach((row, n) => {
298
- // data[n] = {label: row.f_residential_area, value: row.f_residential_area}
299
- // })
300
- // return data
301
- // },
302
- amendment (row) {
303
- this.arrshow = true
304
- this.amendid = row.id
305
- },
306
- delete () {
307
- if (this.ids.length !== 0) {
308
- this.$refs.paged.$refs.cri.condition = this.$refs.paged.$refs.cri.condition + 'and id in (' + this.ids + ')'
309
- }
310
- this.$showMessage('删除后不可恢复,确认删除?', ['confirm', 'cancel']).then((res) => {
311
- if (res === 'confirm') {
312
- this.$LogicService.deletMessage(this.$refs.paged.$refs.cri.condition).then((res) => {
313
- this.$dispatch('success')
314
- }).catch((error) => {
315
- this.$dispatch('error', error)
316
- })
317
- }
318
- this.$refs.paged.$refs.cri.search()
319
- })
320
- },
321
- delete2 (row) {
322
- let condition = '1=1' + ' and id = ' + row.id
323
- this.$showMessage('删除后不可恢复,确认删除?', ['confirm', 'cancel']).then((res) => {
324
- console.log('删除2方法')
325
- if (res === 'confirm') {
326
- this.$LogicService.deletMessage(condition).then((res) => {
327
- this.$dispatch('success')
328
- }).catch((error) => {
329
- this.$dispatch('error', error)
330
- })
331
- }
332
- this.$refs.paged.$refs.cri.search()
333
- })
334
- },
335
- retrun () {
336
- this.alllist = false
337
- this.$dispatch('allchange2')
338
- },
339
- close () {
340
- this.arrshow = false
341
- },
342
- create () {
343
- if (this.amendcontent === '' || this.amendcontent === null) {
344
- this.$showAlert('短信内容不能为空', 'warning', 2000)
345
- return
346
- }
347
- this.arrshow = false
348
- // 组织数据
349
- let content = {
350
- // 批量减免金额
351
- f_content: this.amendcontent,
352
- f_operator: Vue.$login.f.name,
353
- f_operatorid: Vue.$login.f.id,
354
- f_orgid: Vue.$login.f.orgid,
355
- f_orgname: Vue.$login.f.orgs,
356
- f_depid: Vue.$login.f.depids,
357
- f_depname: Vue.$login.f.deps,
358
- id: this.amendid
359
-
360
- }
361
- console.log('数据id', content.id)
362
- this.$resetpost('api/af-revenue/logic/amendcontent', content, {
363
- resolveMsg: null,
364
- rejectMsg: '修正短信内容出错!!!'
365
- }).then((res) => {
366
- this.search()
367
- })
368
- },
369
- confirms () {
370
- let data = {
371
- condition: this.$refs.paged.$refs.cri.condition
372
-
373
- }
374
- console.log('this.ids:', this.ids)
375
- console.log('-----------------------------' + data.condition)
376
- if (this.ids.length !== 0) {
377
- data.condition = data.condition + 'and id in (' + this.ids + ')'
378
-
379
- this.$showMessage(`您本次发送短信的条数为${this.ids.length},是否确认下发?`, ['confirm', 'cancel']).then((res) => {
380
- if (res === 'confirm') {
381
- this.ids = []
382
- console.log('data1:', data)
383
- this.$LogicService.sendMessage(data).then((res) => {
384
- this.$dispatch('success')
385
- this.$refs.paged.$refs.cri.search()
386
- }).catch((error) => {
387
- this.$dispatch('error', error)
388
- this.$refs.paged.$refs.cri.search()
389
- })
390
- }
391
- })
392
- } else {
393
- this.$showMessage('是否确认全部发送?', ['confirm', 'cancel']).then((res) => {
394
- if (res === 'confirm') {
395
- this.ids = []
396
- console.log('data2:', data)
397
- this.$LogicService.sendMessage(data).then((res) => {
398
- this.$dispatch('success')
399
- this.$refs.paged.$refs.cri.search()
400
- }).catch((error) => {
401
- this.$dispatch('error', error)
402
- this.$refs.paged.$refs.cri.search()
403
- })
404
- }
405
- })
406
- }
407
- },
408
- search () {
409
- this.$refs.paged.$refs.cri.search()
410
- if (this.isFirst) {
411
- this.isFirst = false
412
- } else {
413
- this.$dispatch('allchange')
414
- this.alllist = true
415
- }
416
- },
417
- selfSearch (args) {
418
- // this.condition = ' and convert(varchar(10),f_create_date,120) = ' + "'" + Util.toStandardDateString() + "'"
419
- // if (!Util.f.parent.parent.name.includes('统一资源管理')) {
420
- // args.condition = `${args.condition} and f_orgid = '${Vue.$login.f.orgid}'`
421
- // }
422
- // args.condition += this.condition
423
- args.condition += ` and f_orgid='${this.$login.f.orgid}' and f_send_type ='账单推送'`
424
- this.model.search(args.condition, this.model)
425
- this.ids = []
426
- },
427
- isAll (page) {
428
- if (this.pages.includes(page)) { // 已添加,取消动作
429
- // 从ids中删除本页所有数据的ids
430
- this.addOrRemove(false)
431
- this.pages = this.pages.filter((item) => {
432
- return item !== page
433
- })
434
- } else { // 未添加
435
- this.pages.push(page) // 添加id,添加动作
436
- this.addOrRemove(true)
437
- }
438
- },
439
- addOrRemove (is) {
440
- let that = this
441
- if (is) { // 添加本页所有数据到ids中
442
- this.ids = []
443
- this.model.rows.forEach((row) => {
444
- if (!that.ids.includes(row.id)) {
445
- that.ids.push(row.id)
446
- }
447
- })
448
- } else { // 从ids中取消所有的数据
449
- this.ids = []
450
- this.model.rows.forEach((row) => {
451
- that.ids = that.ids.filter((item) => {
452
- return item !== row.id
453
- })
454
- })
455
- }
456
- }
457
- },
458
- events: {
459
- 'onFileProgress'(e){
460
- this.progressBar = e.percent+'%'
461
- if(this.progressBar=='100%'){
462
- this.$showAlert(`文件已导入成功,数据正在处理请稍后`, 'warning')
463
- }
464
- },
465
- 'onFileUpload': async function (file, res) {
466
- console.log('this.$login.r', this.$login.f)
467
- let data = {
468
- filepath: res.f_downloadpath,
469
- f_orgid: this.$login.f.orgid,
470
- f_orgname: this.$login.f.f_orgs,
471
- f_operatorid: this.$login.f.id,
472
- f_operator: this.$login.f.name
473
- }
474
- console.log('filepath=' + JSON.stringify(data))
475
- await axios.post('api/af-revenue/logic/importSms',
476
- {data: data},
477
- // {onUploadProgress: (progressEvent)=> {
478
- // var percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)
479
- // this.progressBar = percentCompleted+'%'
480
- // }}
481
- ).then((res)=>{
482
- debugger
483
- if (res.data.success == 'success') {
484
-
485
- // this.$showAlert(`导入成功信息:${res.data.allSms}条,导入失败:${res.data.errorSms}条`, ['confirm', 'cancel'])
486
- this.$showMessage(`导入成功信息:${res.data.allSms}条,导入失败:${res.data.errorSms}条`, ['confirm'],null,'success').then((res) => {
487
- if (res === 'confirm') {
488
- // 关闭上传框
489
- this.closeFile()
490
- this.progressBar='0%'
491
- this.$refs.paged.$refs.cri.search()
492
- }
493
- })
494
- this.$closeAlert()
495
- }
496
- })
497
- },
498
- 'onFileError' (error) {
499
- this.$showAlert(error, 'warning', 2000)
500
- }
501
- }
502
- }
503
- </script>
504
- <style>
505
- #tooltip {
506
- height: auto;
507
- }
508
- </style>
1
+ <template>
2
+
3
+ <criteria-paged :model="model" v-ref:paged >
4
+ <p class="bg-info text-center" style="padding: 8px;font-size: 20px">短信信息
5
+ </p>
6
+ <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
7
+ <div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
8
+ <div class="row">
9
+ <div class="form-group col-sm-3">
10
+ <label class="font_normal_body">短信类型</label>
11
+ <v-select id="f_send_type"
12
+ v-model="model.f_send_type"
13
+ placeholder='短信类型'
14
+ style="width: 60%"
15
+ :value.sync="model.f_send_type"
16
+ :options='$parent.$parent.getsendType'
17
+ condition= "f_send_type = '{}'"
18
+ close-on-select>
19
+ </v-select>
20
+ </div>
21
+ <div class="form-group col-sm-3">
22
+ <label class="font_normal_body">发送状态</label>
23
+ <v-select id="f_send"
24
+ v-model="model.f_send"
25
+ placeholder='发送状态'
26
+ style="width: 60%"
27
+ :value.sync="model.f_send"
28
+ :options='$parent.$parent.sendType'
29
+ condition= "f_send = '{}'"
30
+ close-on-select>
31
+ </v-select>
32
+ </div>
33
+
34
+
35
+ <div class="span" style="float:right;">
36
+ <button class="button_search button_spacing width-60" @click="$parent.$parent.search()" v-el:cba>查询</button>
37
+ <button class="button_clear button_spacing width-60" title="权限:短信发送" v-show="$parent.$parent.smsMessaage.includes('短信发送')" @click="$parent.$parent.confirms()" v-el:cba>发送</button>
38
+ <button class="button_delete button_spacing width-60" title="权限:短信发送" v-show="$parent.$parent.smsMessaage.includes('短信发送')"@click="$parent.$parent.delete()" v-el:cba>删除</button>
39
+ <button v-show="$parent.$parent.alllist" class="button_clear button_spacing width-60" @click="$parent.$parent.retrun()" v-el:cba>返回</button>
40
+ <button class="button_export button_spacing" title="权限:短信导入" v-show="$parent.$parent.smsMessaage.includes('短信导入')" @click="$parent.$parent.importSMS()">导入</button>
41
+ <export-excel :data="$parent.$parent.getCondition" sql-name="getSendAll"
42
+ template-name="短信信息导出" sqlurl="api/af-revenue/logic/saleExport"
43
+ :field="$parent.$parent.getfield" :choose-col="true"></export-excel>
44
+ <!-- items: 'f_userinfo_id,f_user_name,f_user_phone,f_user_id, f_gas,f_amount,f_balance,f_arreamount,f_arrears_date,f_create_date,f_send_content,f_send,f_send_date, f_filiale,f_outlets',-->
45
+ <!-- orderitem: 'id',tablename: 't_sms',-->
46
+ <div
47
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
48
+ @click="$parent.$parent.hidden()" class="button_spacing" style="float: right">
49
+ </div>
50
+ </div>
51
+ </div>
52
+ <div class="row" v-show="$parent.$parent.criteriaShow">
53
+ <div class="form-group col-sm-3">
54
+ <label class="font_normal_body">评价级别</label>
55
+ <v-select id="f_reply_type"
56
+ v-model="model.f_reply_type"
57
+ placeholder='评价级别'
58
+ style="width: 60%"
59
+ :value.sync="model.f_reply_type"
60
+ :options='$parent.$parent.replyType'
61
+ condition= "f_reply_type = '{}'"
62
+ close-on-select>
63
+ </v-select>
64
+ </div>
65
+ <div class="form-group col-sm-3">
66
+ <label class="font_normal_body">用户编号</label>
67
+ <input type="text" class="form-control" v-model="model.code" placeholder='用户编号' v-filter v-figure_filter
68
+ condition="code = '{}'" v-next-el='yhxm' style="width: 60%"
69
+ :size="model.code ? model.f_userinfo_id.length : 4">
70
+ </div>
71
+ <div class="form-group col-sm-3">
72
+ <label class="font_normal_body">用户姓名</label>
73
+ <input type="text" class="form-control" v-model="model.f_user_name" placeholder='用户姓名'
74
+ condition="f_user_name = '{}'" v-next-el='yhxm' style="width: 60%"
75
+ :size="model.f_user_name ? model.f_user_name.length : 4">
76
+ </div>
77
+ <div class="form-group col-sm-3">
78
+ <label class="font_normal_body">用户电话</label>
79
+ <input type="text" class="form-control" v-model="model.f_user_phone" placeholder='用户电话'
80
+ condition="f_user_phone like '%{}%'" v-next-el='yhxm' style="width: 60%"
81
+ :size="model.f_user_phone ? model.f_user_phone.length : 4">
82
+ </div>
83
+
84
+ <div class="form-group col-sm-3">
85
+ <label class="font_normal_body">选择小区</label>
86
+ <v-select :value.sync="model.f_residential_area" :value-single="true"
87
+ class="select_list select"
88
+ style="width: 60%"
89
+ :options='$parent.$parent.residentialArea' placeholder='选择小区'
90
+ close-on-select search="true">
91
+ </v-select>
92
+ </div>
93
+ <div class="form-group col-sm-3" title="短信生成开始时间">
94
+ <label class="font_normal_body">开始日期</label>
95
+ <datepicker id="f_create_start_date" placeholder="开始日期"
96
+ v-model="model.f_create_start_date"
97
+ :value.sync="model.f_create_start_date"
98
+ :disabled-days-of-Week="[]"
99
+ style="width: 60%"
100
+ condition="convert(varchar(10),f_sendtime,120) >= '{}'"
101
+ :format="'yyyy-MM-dd'"
102
+ :show-reset-button="reset">
103
+ </datepicker>
104
+ </div>
105
+ <div class="form-group col-sm-3" title="短信生成结束时间">
106
+ <label class="font_normal_body">结束日期</label>
107
+ <datepicker id="f_create_end_date" placeholder="结束日期"
108
+ v-model="model.f_create_end_date"
109
+ :value.sync="model.f_create_end_date"
110
+ :disabled-days-of-Week="[]"
111
+ style="width: 60%"
112
+ condition="convert(varchar(10),f_sendtime,120) <= '{}'"
113
+ :format="'yyyy-MM-dd'"
114
+ :show-reset-button="reset">
115
+ </datepicker>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </criteria>
120
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid>
121
+ <template partial='head'>
122
+ <tr>
123
+ <th>
124
+ <input type="checkbox" @click="$parent.$parent.$parent.isAll(model.pageIndex)">
125
+ </th>
126
+ <th><nobr>序号</nobr></th>
127
+ <th><nobr>用户信息</nobr></th>
128
+ <th><nobr>用户编号</nobr></th>
129
+ <th><nobr>电话号码</nobr></th>
130
+ <th><nobr>短信类型</nobr></th>
131
+ <th><nobr>短信内容</nobr></th>
132
+ <th><nobr>发送状态</nobr></th>
133
+ <th><nobr>发送时间</nobr></th>
134
+ <th><nobr>状态报告</nobr></th>
135
+ <th><nobr>评价级别</nobr></th>
136
+ <th><nobr>回执状态</nobr></th>
137
+ <th><nobr>评价内容</nobr></th>
138
+ <th><nobr>操作人</nobr></th>
139
+ <th><nobr>操作</nobr></th>
140
+ </tr>
141
+ </template>
142
+ <template partial='body'>
143
+ <td style="text-align:center">
144
+ <input type="checkbox" v-model="$parent.$parent.$parent.ids"
145
+ :value="row.id">
146
+ </td>
147
+ <td style="text-align:center"><nobr>{{$index+1}}</nobr></td>
148
+ <td style="text-align:center"><nobr>{{row.f_userinfo_id}}|{{row.f_user_name}}|{{row.f_user_phone}}</nobr></td>
149
+ <td style="text-align:center"><nobr>{{row.code}}</nobr></td>
150
+ <td style="text-align:center"><nobr>{{row.f_phone}}</nobr></td>
151
+ <td style="text-align:center"><nobr>{{row.f_send_type}}</nobr></td>
152
+ <td style="text-align:center;width: 20px" :title="row.f_content"><nobr>{{row.f_content.substr(0,20)}}</nobr></td>
153
+ <td style="text-align:center"><nobr>{{row.f_send}}</nobr></td>
154
+ <td style="text-align:center"><nobr>{{row.f_sendtime}}</nobr></td>
155
+ <td style="text-align:center"><nobr>{{row.f_statedetail}}</nobr></td>
156
+ <td style="text-align:center"><nobr>{{row.f_reply_type}}</nobr></td>
157
+ <td style="text-align:center"><nobr>{{row.f_result_msg}}</nobr></td>
158
+ <td style="text-align:center"><nobr>{{row.f_reply_content}}</nobr></td>
159
+ <td style="text-align:center"><nobr>{{row.f_operator}}</nobr>
160
+ </td>
161
+ <td :class="'back-blue'" style="text-align: center;" >
162
+ <div v-if="row.f_state == '未发'">
163
+ <button class="button_clear button_spacing width-50" @click="$parent.$parent.$parent.amendment(row)">修正</button>
164
+ <button class="button_delete button_spacing width-50" @click="$parent.$parent.$parent.delete2(row)">删除</button>
165
+ </div>
166
+ </td>
167
+ </template>
168
+ </data-grid>
169
+ </criteria-paged>
170
+
171
+ <modal :show.sync="arrshow" v-ref:modal backdrop="false">
172
+ <header slot="modal-header" class="modal-header">
173
+ <h4 class="modal-title">修正</h4>
174
+ </header>
175
+ <article slot="modal-body" class="modal-body">
176
+ <div class="form-group">
177
+ <input type="text" class="input_search" v-model="amendcontent" :value.sync="amendcontent"
178
+ placeholder='短信内容'>
179
+ </div>
180
+ </article>
181
+ <footer slot="modal-footer" class="modal-footer">
182
+ <button v-show="arrshow" type="button" class="btn btn-default" @click='close'>取消</button>
183
+ <button v-show="arrshow" type="button" class="btn btn-success" @click='create(row)'>确认</button>
184
+ </footer>
185
+ </modal>
186
+ <modal :show.sync="showFile" v-ref:modal backdrop="true">
187
+ <header slot="modal-header" class="modal-header">
188
+ <button type="button" class="close" @click="closeFile"><span>&times;</span></button>
189
+ <h4 class="modal-title">选择文件</h4>
190
+ </header>
191
+ <article slot="modal-body" class="modal-body">
192
+ <div class="form-group">
193
+ <file-upload class="my-file-uploader" name="importSms" action="rs/file/uploadFile" tagname="确定" multiple v-ref:file></file-upload>
194
+ </div>
195
+ </article>
196
+ <footer slot="modal-footer" class="modal-footer">
197
+ <div class="progress">
198
+ <div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" :style="{width:progressBar}">
199
+ {{progressBar}}
200
+ </div>
201
+ </div>
202
+ </footer>
203
+ </modal>
204
+ </template>
205
+
206
+ <script>
207
+ /**
208
+ *阶梯气价查询列表
209
+ */
210
+ import { PagedList, HttpResetClass } from 'vue-client'
211
+ import Vue from 'vue'
212
+ import axios from 'axios'
213
+ export default {
214
+ data () {
215
+ return {
216
+ criteriaShow: false,
217
+ model: new PagedList('api/af-revenue/sql/getSendAll', 20),
218
+ f_send: '未发送',
219
+ downDate: this.$login.toStandardDateString(),
220
+ ids: [],
221
+ show: false,
222
+ pages: [],
223
+ arrshow: false,
224
+ alllist: false,
225
+ // 修正的短信内容
226
+ amendcontent: '',
227
+ isFirst: true,
228
+ amendid: '',
229
+ // 小区
230
+ residentialArea: [],
231
+ sendType: [{label: '全部', value: ''}, ...this.$appdata.getParam('发送状态')],
232
+ getsendType: this.$appdata.getParam('短信类型'),
233
+ replyType: this.$appdata.getParam('评价级别'),
234
+ bodydata: ['f_user_name', 'code', 'f_phone', 'f_send_type', 'f_content', 'f_send', 'f_sendtime', 'f_statedetail', 'f_reply_type', 'f_reply_content', 'f_reply_content'],
235
+ header: ['用户姓名', '用户编号', '电话号码', '短信类型', '短信内容', '发送状态', '发送时间', '状态报告', '评价级别', '回执状态', '评价内容'],
236
+ showFile: false,
237
+ progressBar:'0%'
238
+ }
239
+ },
240
+ props: {
241
+ condition: {
242
+ type: String
243
+ }
244
+ },
245
+ computed: {
246
+ smsMessaage () {
247
+ return this.$login.r ? this.$login.r : []
248
+ },
249
+ getCondition () {
250
+ return {condition: this.$refs.paged.$refs.cri.condition}
251
+ },
252
+ getfield () {
253
+ let data = {}
254
+ this.bodydata.forEach((value, index) => {
255
+ data[this.bodydata[index]] = this.header[index]
256
+ })
257
+ return data
258
+ console.log('field' + data)
259
+ }
260
+ },
261
+ ready () {
262
+ // this.getaddress()
263
+ },
264
+ methods: {
265
+ importSMS () {
266
+ this.showFile = true
267
+ },
268
+ // 关闭文件上传对话框
269
+ closeFile () {
270
+ this.showFile = false
271
+ // 将选的文件清空
272
+ this.$refs.file.$el.querySelector('input').value = ''
273
+ },
274
+ hidden () {
275
+ this.criteriaShow = !this.criteriaShow
276
+ },
277
+ async getaddress () {
278
+ console.log('开始获取小区')
279
+ let HttpReset = new HttpResetClass()
280
+ var data = await HttpReset.load('POST', 'api/af-revenue/sql/address_getarealist', {
281
+ data: {
282
+ condition: '1=1'
283
+ }
284
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
285
+ console.log('小区', data)
286
+ let house = []
287
+ for (let row of data.data) {
288
+ console.log('开始保存小区')
289
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
290
+ }
291
+ this.residentialArea = house
292
+ },
293
+
294
+ // 把数据库查询数据转换为下拉数据
295
+ // calculate(rows){
296
+ // let data = []
297
+ // rows.forEach((row, n) => {
298
+ // data[n] = {label: row.f_residential_area, value: row.f_residential_area}
299
+ // })
300
+ // return data
301
+ // },
302
+ amendment (row) {
303
+ this.arrshow = true
304
+ this.amendid = row.id
305
+ },
306
+ delete () {
307
+ if (this.ids.length !== 0) {
308
+ this.$refs.paged.$refs.cri.condition = this.$refs.paged.$refs.cri.condition + 'and id in (' + this.ids + ')'
309
+ }
310
+ this.$showMessage('删除后不可恢复,确认删除?', ['confirm', 'cancel']).then((res) => {
311
+ if (res === 'confirm') {
312
+ this.$LogicService.deletMessage(this.$refs.paged.$refs.cri.condition).then((res) => {
313
+ this.$dispatch('success')
314
+ }).catch((error) => {
315
+ this.$dispatch('error', error)
316
+ })
317
+ }
318
+ this.$refs.paged.$refs.cri.search()
319
+ })
320
+ },
321
+ delete2 (row) {
322
+ let condition = '1=1' + ' and id = ' + row.id
323
+ this.$showMessage('删除后不可恢复,确认删除?', ['confirm', 'cancel']).then((res) => {
324
+ console.log('删除2方法')
325
+ if (res === 'confirm') {
326
+ this.$LogicService.deletMessage(condition).then((res) => {
327
+ this.$dispatch('success')
328
+ }).catch((error) => {
329
+ this.$dispatch('error', error)
330
+ })
331
+ }
332
+ this.$refs.paged.$refs.cri.search()
333
+ })
334
+ },
335
+ retrun () {
336
+ this.alllist = false
337
+ this.$dispatch('allchange2')
338
+ },
339
+ close () {
340
+ this.arrshow = false
341
+ },
342
+ create () {
343
+ if (this.amendcontent === '' || this.amendcontent === null) {
344
+ this.$showAlert('短信内容不能为空', 'warning', 2000)
345
+ return
346
+ }
347
+ this.arrshow = false
348
+ // 组织数据
349
+ let content = {
350
+ // 批量减免金额
351
+ f_content: this.amendcontent,
352
+ f_operator: Vue.$login.f.name,
353
+ f_operatorid: Vue.$login.f.id,
354
+ f_orgid: Vue.$login.f.orgid,
355
+ f_orgname: Vue.$login.f.orgs,
356
+ f_depid: Vue.$login.f.depids,
357
+ f_depname: Vue.$login.f.deps,
358
+ id: this.amendid
359
+
360
+ }
361
+ console.log('数据id', content.id)
362
+ this.$resetpost('api/af-revenue/logic/amendcontent', content, {
363
+ resolveMsg: null,
364
+ rejectMsg: '修正短信内容出错!!!'
365
+ }).then((res) => {
366
+ this.search()
367
+ })
368
+ },
369
+ confirms () {
370
+ let data = {
371
+ condition: this.$refs.paged.$refs.cri.condition
372
+
373
+ }
374
+ console.log('this.ids:', this.ids)
375
+ console.log('-----------------------------' + data.condition)
376
+ if (this.ids.length !== 0) {
377
+ data.condition = data.condition + 'and id in (' + this.ids + ')'
378
+
379
+ this.$showMessage(`您本次发送短信的条数为${this.ids.length},是否确认下发?`, ['confirm', 'cancel']).then((res) => {
380
+ if (res === 'confirm') {
381
+ this.ids = []
382
+ console.log('data1:', data)
383
+ this.$LogicService.sendMessage(data).then((res) => {
384
+ this.$dispatch('success')
385
+ this.$refs.paged.$refs.cri.search()
386
+ }).catch((error) => {
387
+ this.$dispatch('error', error)
388
+ this.$refs.paged.$refs.cri.search()
389
+ })
390
+ }
391
+ })
392
+ } else {
393
+ this.$showMessage('是否确认全部发送?', ['confirm', 'cancel']).then((res) => {
394
+ if (res === 'confirm') {
395
+ this.ids = []
396
+ console.log('data2:', data)
397
+ this.$LogicService.sendMessage(data).then((res) => {
398
+ this.$dispatch('success')
399
+ this.$refs.paged.$refs.cri.search()
400
+ }).catch((error) => {
401
+ this.$dispatch('error', error)
402
+ this.$refs.paged.$refs.cri.search()
403
+ })
404
+ }
405
+ })
406
+ }
407
+ },
408
+ search () {
409
+ this.$refs.paged.$refs.cri.search()
410
+ if (this.isFirst) {
411
+ this.isFirst = false
412
+ } else {
413
+ this.$dispatch('allchange')
414
+ this.alllist = true
415
+ }
416
+ },
417
+ selfSearch (args) {
418
+ // this.condition = ' and convert(varchar(10),f_create_date,120) = ' + "'" + Util.toStandardDateString() + "'"
419
+ // if (!Util.f.parent.parent.name.includes('统一资源管理')) {
420
+ // args.condition = `${args.condition} and f_orgid = '${Vue.$login.f.orgid}'`
421
+ // }
422
+ // args.condition += this.condition
423
+ args.condition += ` and f_orgid='${this.$login.f.orgid}' and f_send_type ='账单推送'`
424
+ this.model.search(args.condition, this.model)
425
+ this.ids = []
426
+ },
427
+ isAll (page) {
428
+ if (this.pages.includes(page)) { // 已添加,取消动作
429
+ // 从ids中删除本页所有数据的ids
430
+ this.addOrRemove(false)
431
+ this.pages = this.pages.filter((item) => {
432
+ return item !== page
433
+ })
434
+ } else { // 未添加
435
+ this.pages.push(page) // 添加id,添加动作
436
+ this.addOrRemove(true)
437
+ }
438
+ },
439
+ addOrRemove (is) {
440
+ let that = this
441
+ if (is) { // 添加本页所有数据到ids中
442
+ this.ids = []
443
+ this.model.rows.forEach((row) => {
444
+ if (!that.ids.includes(row.id)) {
445
+ that.ids.push(row.id)
446
+ }
447
+ })
448
+ } else { // 从ids中取消所有的数据
449
+ this.ids = []
450
+ this.model.rows.forEach((row) => {
451
+ that.ids = that.ids.filter((item) => {
452
+ return item !== row.id
453
+ })
454
+ })
455
+ }
456
+ }
457
+ },
458
+ events: {
459
+ 'onFileProgress'(e){
460
+ this.progressBar = e.percent+'%'
461
+ if(this.progressBar=='100%'){
462
+ this.$showAlert(`文件已导入成功,数据正在处理请稍后`, 'warning')
463
+ }
464
+ },
465
+ 'onFileUpload': async function (file, res) {
466
+ console.log('this.$login.r', this.$login.f)
467
+ let data = {
468
+ filepath: res.f_downloadpath,
469
+ f_orgid: this.$login.f.orgid,
470
+ f_orgname: this.$login.f.f_orgs,
471
+ f_operatorid: this.$login.f.id,
472
+ f_operator: this.$login.f.name
473
+ }
474
+ console.log('filepath=' + JSON.stringify(data))
475
+ await axios.post('api/af-revenue/logic/importSms',
476
+ {data: data},
477
+ // {onUploadProgress: (progressEvent)=> {
478
+ // var percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total)
479
+ // this.progressBar = percentCompleted+'%'
480
+ // }}
481
+ ).then((res)=>{
482
+ debugger
483
+ if (res.data.success == 'success') {
484
+
485
+ // this.$showAlert(`导入成功信息:${res.data.allSms}条,导入失败:${res.data.errorSms}条`, ['confirm', 'cancel'])
486
+ this.$showMessage(`导入成功信息:${res.data.allSms}条,导入失败:${res.data.errorSms}条`, ['confirm'],null,'success').then((res) => {
487
+ if (res === 'confirm') {
488
+ // 关闭上传框
489
+ this.closeFile()
490
+ this.progressBar='0%'
491
+ this.$refs.paged.$refs.cri.search()
492
+ }
493
+ })
494
+ this.$closeAlert()
495
+ }
496
+ })
497
+ },
498
+ 'onFileError' (error) {
499
+ this.$showAlert(error, 'warning', 2000)
500
+ }
501
+ }
502
+ }
503
+ </script>
504
+ <style>
505
+ #tooltip {
506
+ height: auto;
507
+ }
508
+ </style>