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,543 +1,543 @@
1
- <template>
2
- <div>
3
- <div style="flex: 1.5" class="flex">
4
- <div class="flex">
5
- <criteria-paged :model="model" v-ref:paged @sort="sort">
6
- <criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch"
7
- v-show="$parent.searchshow">
8
- <div novalidate class="form-inline auto" partial>
9
- <div class="row">
10
- <res-select-group :initres="$parent.$parent.initres" :show-component="['company','department']" @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
11
- <div
12
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
13
- class="form-group">
14
- <label class="font_normal_body">客户编号</label>
15
- <input type="text" class="input_search" style="width: 60%" v-model="model.f_userinfo_code"
16
- condition="f_userinfo_code like '%{}%'" placeholder='客户编号'>
17
- </div>
18
- <div
19
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
20
- class="form-group">
21
- <label class="font_normal_body">收费人员</label>
22
- <input type="text" class="input_search" style="width: 60%" v-model="model.f_operatorid"
23
- condition="f_operator like '%{}%'" placeholder='收费人员'>
24
- </div>
25
- <div
26
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
27
- class="form-group">
28
- <label class="font_normal_body">收费形式</label>
29
- <input type="text" class="input_search" style="width: 60%" v-model="model.f_payment"
30
- condition="f_payment like '%{}%'" placeholder='收费形式'>
31
- </div>
32
- <div style="float:right;margin-top: 8px" class="span">
33
- <button class="button_spacing button_search" @click="$parent.$parent.updateAll()">批量维护</button>
34
- <button class="button_spacing button_search" @click="search()">查 询</button>
35
- <export-excel v-if="$parent.$parent.excelTable"
36
- class="auto"
37
- :data="{condition: $parent.$parent.condition,orderitem: $parent.$parent.orderitem}"
38
- :field="$parent.$parent.getfield"
39
- sqlurl="api/af-revenue/logic/saleExport" progress="saleGetExportProgress" sql-name="singlling"
40
- template-name='缴费记录'
41
- :choose-col="true"></export-excel>
42
- <div
43
- :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
44
- @click="$parent.$parent.hidden()"
45
- class="button_spacing"
46
- style="float: right"></div>
47
- </div>
48
- </div>
49
- <div class="row" v-if="$parent.$parent.criteriaShow">
50
- <div
51
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
52
- class="form-group">
53
- <label class="font_normal_body">收费编号</label>
54
- <input type="text" class="input_search" style="width: 60%" v-model="model.id"
55
- condition="id = '{}'" placeholder='用户编号'>
56
- </div>
57
- <div
58
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
59
- class="form-group">
60
- <label class="font_normal_body">客户姓名</label>
61
- <input type="text" class="input_search" style="width: 60%" v-model="model.f_user_name"
62
- condition="f_user_name = '{}'" placeholder='客户姓名'>
63
- </div>
64
- <div
65
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
66
- class="form-group" >
67
- <label class="font_normal_body">有无附件</label>
68
- <v-select :disabled=false
69
- :options='$parent.$parent.pj'
70
- :value-single="true"
71
- :value.sync="model.is_has_file"
72
- close-on-select
73
- placeholder='请选择'
74
- v-model="model.is_has_file"
75
- condition="is_has_file = '{}'"
76
- search=fasle
77
- >
78
- </v-select>
79
- </div>
80
- <div
81
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
82
- class="form-group">
83
- <label class="font_normal_body">客户类型</label>
84
- <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
85
- :options='$parent.$parent.usertypes' placeholder='客户类型'
86
- style="width:60%"
87
- close-on-select
88
- condition="f_user_type = '{}'"></v-select>
89
- </div>
90
- <div
91
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
92
- class="form-group">
93
- <label class="font_normal_body">是否开票</label>
94
- <v-select :value.sync="model.f_has_bill" v-model="model.f_has_bill"
95
- :options='$parent.$parent.hasBill' placeholder='是否开票'
96
- style="width:60%"
97
- close-on-select
98
- condition="f_has_bill = '{}'"></v-select>
99
- </div>
100
- <div
101
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
102
- class="form-group">
103
- <label class="font_normal_body">开始日期</label>
104
- <datepicker placeholder="开始日期" v-model="model.startDate" :value.sync="model.startDate" style="width:60%"
105
- :format="'yyyy-MM-dd 00:00:00'" condition="f_operate_date >= '{}'">
106
- </datepicker>
107
- </div>
108
- <div
109
- :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
110
- class="form-group">
111
- <label class="font_normal_body">结束日期</label>
112
- <datepicker placeholder="结束日期" v-model="model.endDate" :value.sync="model.endDate" style="width:60%"
113
- :format="'yyyy-MM-dd 23:59:59'" condition="f_operate_date <= '{}'">
114
- </datepicker>
115
- </div>
116
- </div>
117
- </div>
118
- </criteria>
119
- <data-grid :model="model" v-ref:grid class="list_area table_sy" partial='list'>
120
- <template partial='head'>
121
- <tr>
122
- <th>
123
- <nobr>全选</nobr>
124
- <input @keyup.enter="search" style="width:60%" type="checkbox" v-model='checked1' :checked="$parent.$parent.$parent.checked1"
125
- @click="$parent.$parent.$parent.checkedALL()"></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><data-order field="f_operate_date" name="收费时间"></data-order></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
- <th><nobr>收费金额</nobr></th>
141
- <th><nobr>是否开票</nobr></th>
142
- <th><nobr>操作员</nobr></th>
143
- <th><nobr>所属部门</nobr></th>
144
- <th><nobr>所属公司</nobr></th>
145
- <th><nobr>附件</nobr></th>
146
- </tr>
147
- </template>
148
- <template partial='body'>
149
- <td style="text-align: center;">
150
- <input @keyup.enter="search" style="width:60%" type="checkbox" checked="checked" name="opertioninput"
151
- @click="$parent.$parent.$parent.checked(row)"></td>
152
- <td style="text-align: center;"><nobr>{{row.id}}</nobr></td>
153
- <td style="text-align: center;"><nobr>{{row.f_meternumber}}</nobr></td>
154
- <td style="text-align: center;"><nobr>{{row.f_userinfo_code}}</nobr></td>
155
- <td style="text-align: center;"><nobr>{{row.f_user_name}}</nobr></td>
156
- <td style="text-align: center;"><nobr>{{row.idnumber}}</nobr></td>
157
- <td style="text-align: center;"><nobr>{{row.f_payment}}</nobr></td>
158
- <td style="text-align: center;"><nobr>{{row.f_state}}</nobr></td>
159
- <td style="text-align: center;"><nobr>{{row.f_bill_style}}</nobr></td>
160
- <td style="text-align: center;"><nobr>{{row.f_operate_date}}</nobr></td>
161
- <td style="text-align: center;"><nobr>{{row.f_accounting_date}}</nobr></td>
162
- <td style="text-align: center;"><nobr>{{row.f_pregas}}</nobr></td>
163
- <td style="text-align: center;"><nobr>{{row.f_address}}</nobr></td>
164
- <td style="text-align: center;"><nobr>{{row.f_user_type}}</nobr></td>
165
- <td style="text-align: center;"><nobr>{{row.f_preamount}}</nobr></td>
166
- <td style="text-align: center;"><nobr>{{row.f_collection}}</nobr></td>
167
- <td style="text-align: center;"><nobr>{{row.f_has_bill}}</nobr></td>
168
- <td style="text-align: center;"><nobr>{{row.f_operator}}</nobr></td>
169
- <td style="text-align: center;"><nobr>{{row.f_depname}}</nobr></td>
170
- <td style="text-align: center;"><nobr>{{row.f_orgname}}</nobr></td>
171
- <td style="text-align: center;"><nobr>
172
- <button v-if="row.is_has_file=='是'" class="btn btn-link" @click.stop="$parent.$parent.$parent.view(row)">查看</button>
173
- </nobr></td>
174
- </template>
175
- </data-grid>
176
- </criteria-paged>
177
- </div>
178
- </div>
179
- </div>
180
- <modal :show.sync="updateall" width="1200px" backdrop="true">
181
- <header slot="modal-header" class="modal-header">
182
- <h3 style="color:black" class="modal-title">批量维护</h3>
183
- </header>
184
- <article slot="modal-body" class="modal-body">
185
- <validator name='v'>
186
- <form class="form-horizontal select-overspread">
187
- <div class="row">
188
- <div class="col-sm-6 form-input-group">
189
- <label class="font_normal_body col-sm-3">财务核算日期</label>
190
- <datepicker style="width:60%" placeholder="财务核算日期"
191
- v-model="updatemodel.f_accounting_date"
192
- :value.sync="updatemodel.f_accounting_date"
193
- :format="'yyyy-MM-dd HH:mm:ss'"
194
- ></datepicker>
195
- </div>
196
- </div>
197
- </form>
198
- </validator>
199
- </article>
200
- <footer slot="modal-footer" class="modal-footer">
201
- <button class="button_search btn-gn" @click="confirm">确认</button>
202
- <button class="button_clear btn-gn" @click="cancel">取消</button>
203
- </footer>
204
- </modal>
205
- </template>
206
-
207
- <script>
208
- import {PagedList} from 'vue-client'
209
- const myMap = new Map()
210
-
211
- export default {
212
- 'title': '收费记录维护',
213
- data () {
214
- return {
215
- usertypes: this.$appdata.getParam('客户类型') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('客户类型')] : [],
216
- hasBill: this.$appdata.getParam('是否开票') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('是否开票')] : [],
217
- pj: this.$appdata.getParam('是否有附件') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('是否有附件')] : [],
218
- model: new PagedList('api/af-revenue/sql/singlling', 20, {orderitem: '"f_operate_date DESC"'}),
219
- // model: new PagedList('api/af-revenue/sql/singleTable_OrderBy', 20, {items: '"s.*,ui.f_userinfo_code"', tablename: '"t_sellinggas s left join t_userinfo ui on s.f_userinfo_id=ui.f_userinfo_id"', orderitem: '"f_delivery_date"'}),
220
- // 排序
221
- orderitem: 'f_operate_date desc',
222
- orderFields: {
223
- f_operate_date: 'no'
224
- },
225
- // 控制查询条件显示
226
- searchshow: true,
227
- criteriaShow: false,
228
- // 控制样式
229
- editList: false,
230
- // 公司下拉
231
- curorgid: [this.$login.f.orgid],
232
- excelTable: true,
233
- condition: '',
234
- getfield: {
235
- 'id': '收费编号',
236
- 'f_meternumber': '表号',
237
- 'f_userinfo_code': '客户编号',
238
- 'f_user_name': '客户姓名',
239
- 'idnumber': '证件号码',
240
- 'f_payment': '收费形式',
241
- 'f_state': '是否有效',
242
- 'f_bill_style': '收据类型',
243
- 'f_operate_date': '收费时间',
244
- 'f_accounting_date': '财务核算时间',
245
- 'f_pregas': '购气气量',
246
- 'f_address': '地址',
247
- 'f_user_type': '气量用途',
248
- 'f_preamount': '用气金额',
249
- 'f_collection': '收费金额',
250
- 'f_operator': '操作员',
251
- 'f_depname': '所属部门',
252
- 'f_orgname': '所属公司'
253
- },
254
- f_orgid: '',
255
- checked1: true,
256
- map: new Map(),
257
- updateall:false,
258
- da: {
259
- rows: []
260
- },
261
- initres: {
262
- org: [this.$login.f.orgid],
263
- dep: [],
264
- user: []
265
- },
266
- orgCondtionStr: '',
267
- f_meternumber: '',
268
- updatemodel:{
269
- f_accounting_date: this.$login.toStandardTimeString()
270
- }
271
- }
272
- },
273
- ready () {
274
- this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStandardDateString() + ' 00:00:00'
275
- this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStandardDateString() + ' 23:59:59'
276
- // this.search()
277
- // this.getwarehouse()
278
- },
279
- events: {
280
- 'showfiles' (val) {
281
- console.log(val)
282
- }
283
- },
284
- props: ['showMessage'],
285
- methods: {
286
- updateAll(){
287
- this.updateall = true
288
- },
289
- cancel(){
290
- this.updateall = false
291
- this.updatemodel = {
292
- f_accounting_date: this.$login.toStandardTimeString()
293
- }
294
- },
295
- async getRes(condition,obj) {
296
- this.orgCondtionStr = condition
297
- this.orgname = obj.orgnames[0]
298
- this.depname = obj.depnames[0]
299
-
300
- },
301
- async confirm(){
302
- let array = []
303
- this.map.forEach((value, key, map) => {
304
- array.push(map.get(key))
305
- })
306
- console.log('asdasd',array)
307
- if (array.length>0){
308
- let condition = `id in (''`
309
- array.forEach((row) => {
310
- condition = condition+`,'${row.id}'`
311
- })
312
- condition = condition+ `)`
313
-
314
- console.log('asdasd',condition)
315
- await this.$resetpost('api/af-revenue/logic/updatesellinggas',{updatemodel:this.updatemodel,condition:condition})
316
- this.search()
317
- this.cancel()
318
- } else{
319
- this.$showMessage('当前未勾选用户,将为所有查询出来的用户添加限购,确定要操作吗?', ['confirm', 'cancel']).then(async (res) => {
320
- if (res === 'confirm') {
321
- await this.$resetpost('api/af-revenue/logic/updatesellinggas',{updatemodel:this.updatemodel,condition:this.condition})
322
- this.search()
323
- this.cancel()
324
- }
325
- })
326
-
327
- }
328
- },
329
- checkedALL () {
330
- this.checked1 = !this.checked1
331
- let box = document.getElementsByName('opertioninput')
332
- for (var i = 0; i < box.length; i++) {
333
- box[i].checked = this.checked1
334
- }
335
- },
336
- checked (val) {
337
- let id = val.id
338
- if (this.map.has(id)) {
339
- this.map.delete(id)
340
- } else {
341
- this.map.set(id, {id: id})
342
- }
343
- },
344
- mapset (array) {
345
- this.map.clear()
346
- for (let i = 0; i < array.length; i++) {
347
- let id = array[i].id
348
- this.map.set(id, {id: id})
349
- }
350
- },
351
- hidden () {
352
- this.criteriaShow = !this.criteriaShow
353
- },
354
- getorg (val) {
355
- this.f_orgid = this.$login.convertToIn(val)
356
- this.f_filialeid = val[0]
357
- },
358
- view (row) {
359
- this.$parent.showupload = true
360
- this.$parent.row = row
361
- },
362
- init () {
363
- this.f_meternumber = ''
364
- this.da.rows = []
365
- myMap.clear()
366
- },
367
- cancelSet () {
368
- this.showSetModal = false
369
- this.init()
370
- },
371
-
372
- jump () {
373
- this.joinshow2 = false
374
- this.showSetModal = true
375
- },
376
- async getwarehouse () {
377
-
378
- },
379
-
380
- join1 (row) {
381
- this.joinrow = row
382
- this.joinshow = true
383
- },
384
-
385
- joinclose () {
386
- this.joinshow = false
387
- },
388
- joinclose2 () {
389
- this.joinshow2 = false
390
- },
391
-
392
- sort (field, rule) {
393
- // 将所有排序方式设为不排序,实现相互排斥
394
- for (let key in this.orderFields) {
395
- if (key === field) {
396
- this.orderFields[key] = rule
397
- } else {
398
- this.orderFields[key] = 'no'
399
- }
400
- }
401
- // 如果新规则不排序,还原为默认排序
402
- if (rule === 'no') {
403
- this.model.paramSource.orderitem = `'${this.orderitem}'`
404
- } else {
405
- this.model.paramSource.orderitem = `'${field} ${rule}'`
406
- }
407
-
408
- this.search()
409
- },
410
- search () {
411
- this.$refs.paged.$refs.criteria.search()
412
- },
413
- importFile () {
414
- this.show = true
415
- },
416
- selfSearch (args) {
417
- if (!this.$refs.paged.$refs.criteria.model.startDate) {
418
- this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStandardDateString() + ' 00:00:00'
419
- }
420
- if (!this.$refs.paged.$refs.criteria.model.endDate) {
421
- this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStandardDateString() + ' 23:59:59'
422
- }
423
- if (!this.orgCondtionStr) {
424
- args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
425
- } else {
426
- args.condition = `${args.condition}` + this.orgCondtionStr
427
- }
428
- this.model.search(args.condition, args.model)
429
- this.condition = args.condition
430
- },
431
- mergeRowData (joinrows) {
432
-
433
- },
434
- // 多选框初始化
435
- selectInit () {
436
- this.rowsdata = []
437
- this.all = []
438
- this.radio = []
439
- },
440
- select () {
441
- let index = this.model1.pageIndex - 1
442
- console.log('全选', this.all[index])
443
- if (!this.radio[index]) {
444
- this.radio.$set(index, [])
445
- }
446
- if (this.all[index]) {
447
- // 数据
448
- this.rowsdata[index] = Object.assign([], this.model1.rows)
449
- // 勾选
450
- for (var i = 0; i < this.model1.rows.length; i++) {
451
- this.radio[index].$set(i, true)
452
- }
453
- } else {
454
- // 数据
455
- this.rowsdata[index] = []
456
- // 不勾选
457
- for (var i = 0; i < this.model1.rows.length; i++) {
458
- this.radio[index].$set(i, false)
459
- }
460
- }
461
- },
462
- selectOne (event, row, i) {
463
- console.log('单选', event.target.checked)
464
- let index = this.model1.pageIndex - 1
465
- if (!this.rowsdata[index]) {
466
- this.rowsdata[index] = []
467
- }
468
- if (!this.radio[index]) {
469
- this.radio.$set(index, [])
470
- }
471
- if (event.target.checked) {
472
- // 数据
473
- this.rowsdata[index][i] = row
474
- // 勾选
475
- this.radio[index].$set(i, true)
476
- // 判断是否全部选中
477
- var allState = true
478
- if (this.model1.rows.length != this.radio[index].length) {
479
- allState = false
480
- }
481
- for (var state of this.radio[index]) {
482
- if (!state) {
483
- allState = false
484
- }
485
- }
486
- if (allState) {
487
- this.all.$set(index, true)
488
- } else {
489
- this.all.$set(index, false)
490
- }
491
- } else {
492
- // 数据
493
- this.rowsdata[index][i] = []
494
- // 不勾选
495
- this.radio[index].$set(i, false)
496
- // 任意取消一个则全选状态设为false
497
- this.all.$set(index, false)
498
- }
499
- }
500
- },
501
- computed: {
502
- ischecked () {
503
- return function (index, i) {
504
- // console.log("计算属性")
505
- if (!this.radio[index]) {
506
- return false
507
- }
508
- return this.radio[index][i]
509
- }
510
- },
511
- distributionstate () {
512
- return [{label: '全部', value: ''}, {label: '待分配', value: 'is null'}, {label: '已入库', value: 'is not null'}]
513
- }
514
- },
515
- watch: {
516
- 'model.pageIndex' () {
517
- this.checked1 = false
518
- this.mapset(this.model.rows)
519
- this.checkedALL()
520
- },
521
- 'model.rows' () {
522
- this.checked1 = false
523
- this.mapset(this.model.rows)
524
- this.checkedALL()
525
- },
526
- 'checked1' (val) {
527
- if (val) {
528
- this.mapset(this.model.rows)
529
- } else {
530
- this.map.clear()
531
- }
532
- }
533
- }
534
- }
535
- </script>
536
- <style>
537
- .datapanel {
538
- color: #333;
539
- background-color: white;
540
- padding: 10px 20px;
541
- border-radius: 15px;
542
- }
543
- </style>
1
+ <template>
2
+ <div>
3
+ <div style="flex: 1.5" class="flex">
4
+ <div class="flex">
5
+ <criteria-paged :model="model" v-ref:paged @sort="sort">
6
+ <criteria partial='criteria' v-ref:criteria @condition-changed="$parent.selfSearch"
7
+ v-show="$parent.searchshow">
8
+ <div novalidate class="form-inline auto" partial>
9
+ <div class="row">
10
+ <res-select-group :initres="$parent.$parent.initres" :show-component="['company','department']" @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
11
+ <div
12
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
13
+ class="form-group">
14
+ <label class="font_normal_body">客户编号</label>
15
+ <input type="text" class="input_search" style="width: 60%" v-model="model.f_userinfo_code"
16
+ condition="f_userinfo_code like '%{}%'" placeholder='客户编号'>
17
+ </div>
18
+ <div
19
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
20
+ class="form-group">
21
+ <label class="font_normal_body">收费人员</label>
22
+ <input type="text" class="input_search" style="width: 60%" v-model="model.f_operatorid"
23
+ condition="f_operator like '%{}%'" placeholder='收费人员'>
24
+ </div>
25
+ <div
26
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
27
+ class="form-group">
28
+ <label class="font_normal_body">收费形式</label>
29
+ <input type="text" class="input_search" style="width: 60%" v-model="model.f_payment"
30
+ condition="f_payment like '%{}%'" placeholder='收费形式'>
31
+ </div>
32
+ <div style="float:right;margin-top: 8px" class="span">
33
+ <button class="button_spacing button_search" @click="$parent.$parent.updateAll()">批量维护</button>
34
+ <button class="button_spacing button_search" @click="search()">查 询</button>
35
+ <export-excel v-if="$parent.$parent.excelTable"
36
+ class="auto"
37
+ :data="{condition: $parent.$parent.condition,orderitem: $parent.$parent.orderitem}"
38
+ :field="$parent.$parent.getfield"
39
+ sqlurl="api/af-revenue/logic/saleExport" progress="saleGetExportProgress" sql-name="singlling"
40
+ template-name='缴费记录'
41
+ :choose-col="true"></export-excel>
42
+ <div
43
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
44
+ @click="$parent.$parent.hidden()"
45
+ class="button_spacing"
46
+ style="float: right"></div>
47
+ </div>
48
+ </div>
49
+ <div class="row" v-if="$parent.$parent.criteriaShow">
50
+ <div
51
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
52
+ class="form-group">
53
+ <label class="font_normal_body">收费编号</label>
54
+ <input type="text" class="input_search" style="width: 60%" v-model="model.id"
55
+ condition="id = '{}'" placeholder='用户编号'>
56
+ </div>
57
+ <div
58
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
59
+ class="form-group">
60
+ <label class="font_normal_body">客户姓名</label>
61
+ <input type="text" class="input_search" style="width: 60%" v-model="model.f_user_name"
62
+ condition="f_user_name = '{}'" placeholder='客户姓名'>
63
+ </div>
64
+ <div
65
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
66
+ class="form-group" >
67
+ <label class="font_normal_body">有无附件</label>
68
+ <v-select :disabled=false
69
+ :options='$parent.$parent.pj'
70
+ :value-single="true"
71
+ :value.sync="model.is_has_file"
72
+ close-on-select
73
+ placeholder='请选择'
74
+ v-model="model.is_has_file"
75
+ condition="is_has_file = '{}'"
76
+ search=fasle
77
+ >
78
+ </v-select>
79
+ </div>
80
+ <div
81
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
82
+ class="form-group">
83
+ <label class="font_normal_body">客户类型</label>
84
+ <v-select :value.sync="model.f_user_type" v-model="model.f_user_type"
85
+ :options='$parent.$parent.usertypes' placeholder='客户类型'
86
+ style="width:60%"
87
+ close-on-select
88
+ condition="f_user_type = '{}'"></v-select>
89
+ </div>
90
+ <div
91
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
92
+ class="form-group">
93
+ <label class="font_normal_body">是否开票</label>
94
+ <v-select :value.sync="model.f_has_bill" v-model="model.f_has_bill"
95
+ :options='$parent.$parent.hasBill' placeholder='是否开票'
96
+ style="width:60%"
97
+ close-on-select
98
+ condition="f_has_bill = '{}'"></v-select>
99
+ </div>
100
+ <div
101
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
102
+ class="form-group">
103
+ <label class="font_normal_body">开始日期</label>
104
+ <datepicker placeholder="开始日期" v-model="model.startDate" :value.sync="model.startDate" style="width:60%"
105
+ :format="'yyyy-MM-dd 00:00:00'" condition="f_operate_date >= '{}'">
106
+ </datepicker>
107
+ </div>
108
+ <div
109
+ :class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
110
+ class="form-group">
111
+ <label class="font_normal_body">结束日期</label>
112
+ <datepicker placeholder="结束日期" v-model="model.endDate" :value.sync="model.endDate" style="width:60%"
113
+ :format="'yyyy-MM-dd 23:59:59'" condition="f_operate_date <= '{}'">
114
+ </datepicker>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </criteria>
119
+ <data-grid :model="model" v-ref:grid class="list_area table_sy" partial='list'>
120
+ <template partial='head'>
121
+ <tr>
122
+ <th>
123
+ <nobr>全选</nobr>
124
+ <input @keyup.enter="search" style="width:60%" type="checkbox" v-model='checked1' :checked="$parent.$parent.$parent.checked1"
125
+ @click="$parent.$parent.$parent.checkedALL()"></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><data-order field="f_operate_date" name="收费时间"></data-order></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
+ <th><nobr>收费金额</nobr></th>
141
+ <th><nobr>是否开票</nobr></th>
142
+ <th><nobr>操作员</nobr></th>
143
+ <th><nobr>所属部门</nobr></th>
144
+ <th><nobr>所属公司</nobr></th>
145
+ <th><nobr>附件</nobr></th>
146
+ </tr>
147
+ </template>
148
+ <template partial='body'>
149
+ <td style="text-align: center;">
150
+ <input @keyup.enter="search" style="width:60%" type="checkbox" checked="checked" name="opertioninput"
151
+ @click="$parent.$parent.$parent.checked(row)"></td>
152
+ <td style="text-align: center;"><nobr>{{row.id}}</nobr></td>
153
+ <td style="text-align: center;"><nobr>{{row.f_meternumber}}</nobr></td>
154
+ <td style="text-align: center;"><nobr>{{row.f_userinfo_code}}</nobr></td>
155
+ <td style="text-align: center;"><nobr>{{row.f_user_name}}</nobr></td>
156
+ <td style="text-align: center;"><nobr>{{row.idnumber}}</nobr></td>
157
+ <td style="text-align: center;"><nobr>{{row.f_payment}}</nobr></td>
158
+ <td style="text-align: center;"><nobr>{{row.f_state}}</nobr></td>
159
+ <td style="text-align: center;"><nobr>{{row.f_bill_style}}</nobr></td>
160
+ <td style="text-align: center;"><nobr>{{row.f_operate_date}}</nobr></td>
161
+ <td style="text-align: center;"><nobr>{{row.f_accounting_date}}</nobr></td>
162
+ <td style="text-align: center;"><nobr>{{row.f_pregas}}</nobr></td>
163
+ <td style="text-align: center;"><nobr>{{row.f_address}}</nobr></td>
164
+ <td style="text-align: center;"><nobr>{{row.f_user_type}}</nobr></td>
165
+ <td style="text-align: center;"><nobr>{{row.f_preamount}}</nobr></td>
166
+ <td style="text-align: center;"><nobr>{{row.f_collection}}</nobr></td>
167
+ <td style="text-align: center;"><nobr>{{row.f_has_bill}}</nobr></td>
168
+ <td style="text-align: center;"><nobr>{{row.f_operator}}</nobr></td>
169
+ <td style="text-align: center;"><nobr>{{row.f_depname}}</nobr></td>
170
+ <td style="text-align: center;"><nobr>{{row.f_orgname}}</nobr></td>
171
+ <td style="text-align: center;"><nobr>
172
+ <button v-if="row.is_has_file=='是'" class="btn btn-link" @click.stop="$parent.$parent.$parent.view(row)">查看</button>
173
+ </nobr></td>
174
+ </template>
175
+ </data-grid>
176
+ </criteria-paged>
177
+ </div>
178
+ </div>
179
+ </div>
180
+ <modal :show.sync="updateall" width="1200px" backdrop="true">
181
+ <header slot="modal-header" class="modal-header">
182
+ <h3 style="color:black" class="modal-title">批量维护</h3>
183
+ </header>
184
+ <article slot="modal-body" class="modal-body">
185
+ <validator name='v'>
186
+ <form class="form-horizontal select-overspread">
187
+ <div class="row">
188
+ <div class="col-sm-6 form-input-group">
189
+ <label class="font_normal_body col-sm-3">财务核算日期</label>
190
+ <datepicker style="width:60%" placeholder="财务核算日期"
191
+ v-model="updatemodel.f_accounting_date"
192
+ :value.sync="updatemodel.f_accounting_date"
193
+ :format="'yyyy-MM-dd HH:mm:ss'"
194
+ ></datepicker>
195
+ </div>
196
+ </div>
197
+ </form>
198
+ </validator>
199
+ </article>
200
+ <footer slot="modal-footer" class="modal-footer">
201
+ <button class="button_search btn-gn" @click="confirm">确认</button>
202
+ <button class="button_clear btn-gn" @click="cancel">取消</button>
203
+ </footer>
204
+ </modal>
205
+ </template>
206
+
207
+ <script>
208
+ import {PagedList} from 'vue-client'
209
+ const myMap = new Map()
210
+
211
+ export default {
212
+ 'title': '收费记录维护',
213
+ data () {
214
+ return {
215
+ usertypes: this.$appdata.getParam('客户类型') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('客户类型')] : [],
216
+ hasBill: this.$appdata.getParam('是否开票') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('是否开票')] : [],
217
+ pj: this.$appdata.getParam('是否有附件') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('是否有附件')] : [],
218
+ model: new PagedList('api/af-revenue/sql/singlling', 20, {orderitem: '"f_operate_date DESC"'}),
219
+ // model: new PagedList('api/af-revenue/sql/singleTable_OrderBy', 20, {items: '"s.*,ui.f_userinfo_code"', tablename: '"t_sellinggas s left join t_userinfo ui on s.f_userinfo_id=ui.f_userinfo_id"', orderitem: '"f_delivery_date"'}),
220
+ // 排序
221
+ orderitem: 'f_operate_date desc',
222
+ orderFields: {
223
+ f_operate_date: 'no'
224
+ },
225
+ // 控制查询条件显示
226
+ searchshow: true,
227
+ criteriaShow: false,
228
+ // 控制样式
229
+ editList: false,
230
+ // 公司下拉
231
+ curorgid: [this.$login.f.orgid],
232
+ excelTable: true,
233
+ condition: '',
234
+ getfield: {
235
+ 'id': '收费编号',
236
+ 'f_meternumber': '表号',
237
+ 'f_userinfo_code': '客户编号',
238
+ 'f_user_name': '客户姓名',
239
+ 'idnumber': '证件号码',
240
+ 'f_payment': '收费形式',
241
+ 'f_state': '是否有效',
242
+ 'f_bill_style': '收据类型',
243
+ 'f_operate_date': '收费时间',
244
+ 'f_accounting_date': '财务核算时间',
245
+ 'f_pregas': '购气气量',
246
+ 'f_address': '地址',
247
+ 'f_user_type': '气量用途',
248
+ 'f_preamount': '用气金额',
249
+ 'f_collection': '收费金额',
250
+ 'f_operator': '操作员',
251
+ 'f_depname': '所属部门',
252
+ 'f_orgname': '所属公司'
253
+ },
254
+ f_orgid: '',
255
+ checked1: true,
256
+ map: new Map(),
257
+ updateall:false,
258
+ da: {
259
+ rows: []
260
+ },
261
+ initres: {
262
+ org: [this.$login.f.orgid],
263
+ dep: [],
264
+ user: []
265
+ },
266
+ orgCondtionStr: '',
267
+ f_meternumber: '',
268
+ updatemodel:{
269
+ f_accounting_date: this.$login.toStandardTimeString()
270
+ }
271
+ }
272
+ },
273
+ ready () {
274
+ this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStandardDateString() + ' 00:00:00'
275
+ this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStandardDateString() + ' 23:59:59'
276
+ // this.search()
277
+ // this.getwarehouse()
278
+ },
279
+ events: {
280
+ 'showfiles' (val) {
281
+ console.log(val)
282
+ }
283
+ },
284
+ props: ['showMessage'],
285
+ methods: {
286
+ updateAll(){
287
+ this.updateall = true
288
+ },
289
+ cancel(){
290
+ this.updateall = false
291
+ this.updatemodel = {
292
+ f_accounting_date: this.$login.toStandardTimeString()
293
+ }
294
+ },
295
+ async getRes(condition,obj) {
296
+ this.orgCondtionStr = condition
297
+ this.orgname = obj.orgnames[0]
298
+ this.depname = obj.depnames[0]
299
+
300
+ },
301
+ async confirm(){
302
+ let array = []
303
+ this.map.forEach((value, key, map) => {
304
+ array.push(map.get(key))
305
+ })
306
+ console.log('asdasd',array)
307
+ if (array.length>0){
308
+ let condition = `id in (''`
309
+ array.forEach((row) => {
310
+ condition = condition+`,'${row.id}'`
311
+ })
312
+ condition = condition+ `)`
313
+
314
+ console.log('asdasd',condition)
315
+ await this.$resetpost('api/af-revenue/logic/updatesellinggas',{updatemodel:this.updatemodel,condition:condition})
316
+ this.search()
317
+ this.cancel()
318
+ } else{
319
+ this.$showMessage('当前未勾选用户,将为所有查询出来的用户添加限购,确定要操作吗?', ['confirm', 'cancel']).then(async (res) => {
320
+ if (res === 'confirm') {
321
+ await this.$resetpost('api/af-revenue/logic/updatesellinggas',{updatemodel:this.updatemodel,condition:this.condition})
322
+ this.search()
323
+ this.cancel()
324
+ }
325
+ })
326
+
327
+ }
328
+ },
329
+ checkedALL () {
330
+ this.checked1 = !this.checked1
331
+ let box = document.getElementsByName('opertioninput')
332
+ for (var i = 0; i < box.length; i++) {
333
+ box[i].checked = this.checked1
334
+ }
335
+ },
336
+ checked (val) {
337
+ let id = val.id
338
+ if (this.map.has(id)) {
339
+ this.map.delete(id)
340
+ } else {
341
+ this.map.set(id, {id: id})
342
+ }
343
+ },
344
+ mapset (array) {
345
+ this.map.clear()
346
+ for (let i = 0; i < array.length; i++) {
347
+ let id = array[i].id
348
+ this.map.set(id, {id: id})
349
+ }
350
+ },
351
+ hidden () {
352
+ this.criteriaShow = !this.criteriaShow
353
+ },
354
+ getorg (val) {
355
+ this.f_orgid = this.$login.convertToIn(val)
356
+ this.f_filialeid = val[0]
357
+ },
358
+ view (row) {
359
+ this.$parent.showupload = true
360
+ this.$parent.row = row
361
+ },
362
+ init () {
363
+ this.f_meternumber = ''
364
+ this.da.rows = []
365
+ myMap.clear()
366
+ },
367
+ cancelSet () {
368
+ this.showSetModal = false
369
+ this.init()
370
+ },
371
+
372
+ jump () {
373
+ this.joinshow2 = false
374
+ this.showSetModal = true
375
+ },
376
+ async getwarehouse () {
377
+
378
+ },
379
+
380
+ join1 (row) {
381
+ this.joinrow = row
382
+ this.joinshow = true
383
+ },
384
+
385
+ joinclose () {
386
+ this.joinshow = false
387
+ },
388
+ joinclose2 () {
389
+ this.joinshow2 = false
390
+ },
391
+
392
+ sort (field, rule) {
393
+ // 将所有排序方式设为不排序,实现相互排斥
394
+ for (let key in this.orderFields) {
395
+ if (key === field) {
396
+ this.orderFields[key] = rule
397
+ } else {
398
+ this.orderFields[key] = 'no'
399
+ }
400
+ }
401
+ // 如果新规则不排序,还原为默认排序
402
+ if (rule === 'no') {
403
+ this.model.paramSource.orderitem = `'${this.orderitem}'`
404
+ } else {
405
+ this.model.paramSource.orderitem = `'${field} ${rule}'`
406
+ }
407
+
408
+ this.search()
409
+ },
410
+ search () {
411
+ this.$refs.paged.$refs.criteria.search()
412
+ },
413
+ importFile () {
414
+ this.show = true
415
+ },
416
+ selfSearch (args) {
417
+ if (!this.$refs.paged.$refs.criteria.model.startDate) {
418
+ this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStandardDateString() + ' 00:00:00'
419
+ }
420
+ if (!this.$refs.paged.$refs.criteria.model.endDate) {
421
+ this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStandardDateString() + ' 23:59:59'
422
+ }
423
+ if (!this.orgCondtionStr) {
424
+ args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
425
+ } else {
426
+ args.condition = `${args.condition}` + this.orgCondtionStr
427
+ }
428
+ this.model.search(args.condition, args.model)
429
+ this.condition = args.condition
430
+ },
431
+ mergeRowData (joinrows) {
432
+
433
+ },
434
+ // 多选框初始化
435
+ selectInit () {
436
+ this.rowsdata = []
437
+ this.all = []
438
+ this.radio = []
439
+ },
440
+ select () {
441
+ let index = this.model1.pageIndex - 1
442
+ console.log('全选', this.all[index])
443
+ if (!this.radio[index]) {
444
+ this.radio.$set(index, [])
445
+ }
446
+ if (this.all[index]) {
447
+ // 数据
448
+ this.rowsdata[index] = Object.assign([], this.model1.rows)
449
+ // 勾选
450
+ for (var i = 0; i < this.model1.rows.length; i++) {
451
+ this.radio[index].$set(i, true)
452
+ }
453
+ } else {
454
+ // 数据
455
+ this.rowsdata[index] = []
456
+ // 不勾选
457
+ for (var i = 0; i < this.model1.rows.length; i++) {
458
+ this.radio[index].$set(i, false)
459
+ }
460
+ }
461
+ },
462
+ selectOne (event, row, i) {
463
+ console.log('单选', event.target.checked)
464
+ let index = this.model1.pageIndex - 1
465
+ if (!this.rowsdata[index]) {
466
+ this.rowsdata[index] = []
467
+ }
468
+ if (!this.radio[index]) {
469
+ this.radio.$set(index, [])
470
+ }
471
+ if (event.target.checked) {
472
+ // 数据
473
+ this.rowsdata[index][i] = row
474
+ // 勾选
475
+ this.radio[index].$set(i, true)
476
+ // 判断是否全部选中
477
+ var allState = true
478
+ if (this.model1.rows.length != this.radio[index].length) {
479
+ allState = false
480
+ }
481
+ for (var state of this.radio[index]) {
482
+ if (!state) {
483
+ allState = false
484
+ }
485
+ }
486
+ if (allState) {
487
+ this.all.$set(index, true)
488
+ } else {
489
+ this.all.$set(index, false)
490
+ }
491
+ } else {
492
+ // 数据
493
+ this.rowsdata[index][i] = []
494
+ // 不勾选
495
+ this.radio[index].$set(i, false)
496
+ // 任意取消一个则全选状态设为false
497
+ this.all.$set(index, false)
498
+ }
499
+ }
500
+ },
501
+ computed: {
502
+ ischecked () {
503
+ return function (index, i) {
504
+ // console.log("计算属性")
505
+ if (!this.radio[index]) {
506
+ return false
507
+ }
508
+ return this.radio[index][i]
509
+ }
510
+ },
511
+ distributionstate () {
512
+ return [{label: '全部', value: ''}, {label: '待分配', value: 'is null'}, {label: '已入库', value: 'is not null'}]
513
+ }
514
+ },
515
+ watch: {
516
+ 'model.pageIndex' () {
517
+ this.checked1 = false
518
+ this.mapset(this.model.rows)
519
+ this.checkedALL()
520
+ },
521
+ 'model.rows' () {
522
+ this.checked1 = false
523
+ this.mapset(this.model.rows)
524
+ this.checkedALL()
525
+ },
526
+ 'checked1' (val) {
527
+ if (val) {
528
+ this.mapset(this.model.rows)
529
+ } else {
530
+ this.map.clear()
531
+ }
532
+ }
533
+ }
534
+ }
535
+ </script>
536
+ <style>
537
+ .datapanel {
538
+ color: #333;
539
+ background-color: white;
540
+ padding: 10px 20px;
541
+ border-radius: 15px;
542
+ }
543
+ </style>