manage-client 3.3.246 → 3.3.248

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "manage-client",
3
- "version": "3.3.246",
3
+ "version": "3.3.248",
4
4
  "description": "经营管控模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "directories": {
@@ -0,0 +1,179 @@
1
+ <template>
2
+ <div class="basic-main" style="height: 100%">
3
+ <criteria-paged :model="model" :pager='false' v-ref:paged>
4
+ <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:criteria>
5
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial >
6
+ <div class="row">
7
+ <div class="col-sm-2 form-group" >
8
+ <label class="font_normal_body" for="startDate">开始日期:</label>
9
+ <datepicker id="startDate" placeholder="开始日期" style="width: 60%"
10
+ v-model="model.startDate"
11
+ :value.sync="model.startDate"
12
+ :disabled-days-of-Week="[]"
13
+ :format="'yyyy-MM-dd HH:mm:ss'"
14
+ :show-reset-button="reset">
15
+ </datepicker>
16
+ </div>
17
+ <div class="col-sm-2 form-group" >
18
+ <label class="font_normal_body" for="endDate">结束日期:</label>
19
+ <datepicker id="endDate" placeholder="结束日期" style="width: 60%"
20
+ v-model="model.endDate"
21
+ :value.sync="model.endDate"
22
+ :disabled-days-of-Week="[]"
23
+ :format="'yyyy-MM-dd HH:mm:ss'"
24
+ :show-reset-button="reset">
25
+ </datepicker>
26
+ </div>
27
+ <res-select-group :show-component="$parent.$parent.resshow" :selectin="true" :initres="$parent.$parent.initres" :cascade =true @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
28
+ </div>
29
+ <div class="span" style = "float:right;">
30
+ <button class="button_search" @click="$parent.$parent.searchData()">查询</button>
31
+ <report-print id='gasprice' top='3cm' left='0' width='100%' height='100%' :preview="true"></report-print>
32
+ <report-excel id='gasprice'></report-excel>
33
+ </div>
34
+ </div>
35
+ </criteria>
36
+ <div partial='list' v-el:handcollect id='gasprice' style="overflow-y: scroll">
37
+ <table class='tableprint' style="margin: 0px auto">
38
+ <thead>
39
+ <tr>
40
+ <th :colspan='$parent.spans' style="font-weight: normal; text-align: left;">
41
+ <h3 style="text-align: center">收费结账报表</h3>
42
+ </th>
43
+ </tr>
44
+ <tr>
45
+ <th :colspan='$parent.spans' style="font-weight: normal; text-align: center;">
46
+ 开始时间:{{model.model.startDate}}&nbsp;&nbsp;&nbsp;
47
+ 结束时间:{{ model.model.endDate }}&nbsp;&nbsp;<br/>
48
+ <!--打印时间:{{{$parent.printTime}}}-->
49
+ 打印时间:{{$parent.printTime}}
50
+ <!--收费员:{{// $parent.operatorname}}-->
51
+ </th>
52
+ </tr>
53
+ <tr>
54
+ <th :colspan='$parent.spans' style="font-weight: normal; text-align: center;">
55
+ <div>
56
+ <span style="font-weight: normal;text-align: center;margin:5px 15px" v-show="$parent.orgname">公司:{{$parent.orgname}}</span>
57
+ <span v-show="$parent.depname"> 部门:{{$parent.depname}}</span>
58
+ <span style="font-weight: normal;text-align: center;margin:5px 15px" v-show="$parent.operatorname">人员:{{$parent.operatorname}}</span>
59
+ </div>
60
+ </th>
61
+ </tr>
62
+ </thead>
63
+ <tr>
64
+ <td :colspan='$parent.spans' class="noborder">
65
+ {{{ model.data.substring(26,model.data.length-8) }}}
66
+ </td>
67
+ </tr>
68
+ <tfoot>
69
+ <!-- <tr style="text-align: left">-->
70
+ <!-- <th :colspan='Math.floor($parent.spans/3)'>财务审核:</th>-->
71
+ <!-- <th :colspan='Math.floor($parent.spans/3)'>收款审核:</th>-->
72
+ <!-- <th :colspan='Math.floor($parent.spans/3)'>收款员:</th>-->
73
+ <!-- </tr>-->
74
+ </tfoot>
75
+ </table>
76
+ {{{ $parent.reportStr}}}
77
+ </div>
78
+ </criteria-paged>
79
+ </div>
80
+ </template>
81
+
82
+ <script>
83
+ import { DataModel } from 'vue-client'
84
+ import co from 'co'
85
+ export default {
86
+ title: '收费结账报表',
87
+ props: ['data'],
88
+ data () {
89
+ return {
90
+ printTime: this.$login.toStandardTimeString(),
91
+ depresid: [],
92
+ userresid: [],
93
+ f_orgid: this.$login.f.orgid,
94
+ f_depid: this.$login.f.depids,
95
+ // f_operatorid: this.$login.f.id,
96
+ operatorid: [],
97
+ depid: [],
98
+ orgname: '',
99
+ depname: '',
100
+ criteriaShow: false,
101
+ operatorname: '',
102
+ orgCondtionStr: '1=1',
103
+ f_user_type: '',
104
+ f_state: ['有效'],
105
+ model: new DataModel('api/af-revenue/report/xh_sell_report', {startDate: 'this.model.startDate', endDate: 'this.model.endDate',
106
+ f_orgid: 'this.model.f_orgid'}),
107
+ reportStr: null,
108
+ resshow: ['company', 'department', 'operator'],
109
+ spans: 0,
110
+ initres: {
111
+ org: [this.$login.f.orgid],
112
+ dep: [],
113
+ user: []
114
+ }
115
+ }
116
+ },
117
+ ready () {
118
+ this.$refs.paged.$refs.criteria.model.startDate = this.$login.toStandardDateString() + ' 00:00:00'
119
+ this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStandardDateString() + ' 23:59:59'
120
+ },
121
+ methods: {
122
+ searchData () {
123
+ this.$refs.paged.$refs.criteria.search()
124
+ },
125
+ selfSearch (args) {
126
+ this.printTime = this.$login.toStandardTimeString()
127
+ let orgcondition = '1=1'
128
+ let orgstr = this.orgCondtionStr
129
+ orgcondition = orgcondition + orgstr
130
+ this.$refs.paged.$refs.criteria.model.f_orgid = orgcondition
131
+ this.$refs.paged.search(args)
132
+ },
133
+
134
+ hidden () {
135
+ this.criteriaShow = !this.criteriaShow
136
+ },
137
+ getRes (condition, obj) {
138
+ this.orgCondtionStr = condition
139
+ this.orgname = obj.orgnames[0]
140
+ this.depname = obj.depnames[0]
141
+ this.operatorname = obj.operatornames[0]
142
+ },
143
+ getdep (obj, val) {
144
+ this.depname = val[0]
145
+ this.userresid = obj
146
+ this.f_depid = obj
147
+ },
148
+ getuser ( obj, val) {
149
+ this.operatorname = val[0]
150
+ this.f_operatorid = obj
151
+ }
152
+ },
153
+ watch: {
154
+ 'model.data' (val) {
155
+ let len=0
156
+ let a=val.split('</tr>')
157
+ for(let i=0;i<a.length;i++){
158
+ if(a[i].split('</td>').length-1>len){
159
+ len=a[i].split('</td>').length-1
160
+ }
161
+ }
162
+ this.spans = len
163
+ }
164
+ },
165
+ computed: {
166
+ charge_state () {
167
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('收费状态')]
168
+ },
169
+ user_type () {
170
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('用户类型')]
171
+ }
172
+ }
173
+ }
174
+ </script>
175
+ <style scoped>
176
+ .noborder{
177
+ border: none;
178
+ }
179
+ </style>
@@ -14,7 +14,7 @@
14
14
  :value.sync="model.startDate"
15
15
  :format="'yyyy-MM-dd HH:mm:ss'"
16
16
  :show-reset-button="true"
17
- condition="f_hand_date >= '{}'">
17
+ condition="f_input_date >= '{}'">
18
18
  </datepicker>
19
19
  </div>
20
20
  <div class="col-sm-2 form-group">
@@ -24,7 +24,7 @@
24
24
  :value.sync="model.endDate"
25
25
  :format="'yyyy-MM-dd HH:mm:ss'"
26
26
  :show-reset-button="true"
27
- condition="f_hand_date <= '{}'">
27
+ condition="f_input_date <= '{}'">
28
28
  </datepicker>
29
29
  </div>
30
30
  <div class="col-sm-2 form-group ">
@@ -367,8 +367,8 @@
367
367
  user:[]
368
368
  },
369
369
  condition: '1=1',
370
- org:`u.${[this.$login.f.orgid]}`,
371
- orgCondtionStr: ` and u.f_orgid = ${this.$login.f.orgid}`
370
+ org:`${[this.$login.f.orgid]}`,
371
+ orgCondtionStr: ` and f_orgid = ${this.$login.f.orgid}`
372
372
  }
373
373
  },
374
374
  ready() {
@@ -60,6 +60,16 @@
60
60
  <right-tree @re-res="$parent.$parent.getorg"
61
61
  :initresid='$parent.$parent.org'></right-tree>
62
62
  </div>
63
+ <div class="col-sm-2 form-group">
64
+ <label class="font_normal_body" for="dep" >部&emsp;&emsp;门</label>
65
+ <res-select id="dep" restype='department' style="width: 60%"
66
+ is-mul="false"
67
+ @res-select="$parent.$parent.getdep"
68
+ :parentresid="$parent.$parent.depresid"
69
+ :initresid='$parent.$parent.depid' >
70
+ </res-select>
71
+
72
+ </div>
63
73
  <div class="col-sm-2 form-group">
64
74
  <label class="font_normal_body">客户类型</label>
65
75
  <v-select style="width:60%" id="f_user_type"
@@ -379,6 +389,14 @@
379
389
  Warningstyles: [
380
390
  {label: '全部', value: ''}
381
391
  ],
392
+ depid: [],
393
+ depresid: [],
394
+ queryData: {
395
+ f_orgid: [],
396
+ f_depid: [],
397
+ f_operatorid: [],
398
+ f_payment: []
399
+ },
382
400
  styles:false,
383
401
  org:[this.$login.f.orgid],
384
402
  orgCondtionStr: ` and f_orgid = ${this.$login.f.orgid}`,
@@ -401,6 +419,23 @@
401
419
  },
402
420
 
403
421
  methods: {
422
+ getdep(obj, val) {
423
+ this.orgCondtionStr = ""
424
+ this.depname = val[0]
425
+ this.userresid = obj
426
+ this.queryData.f_depid = obj
427
+ console.log(this.queryData.f_depid)
428
+ if (obj.length > 0) {
429
+ this.orgCondtionStr += " and f_depid in " + plugin.convertToIn(obj)
430
+ }
431
+ if (this.depresid && this.depresid.length > 0) {
432
+ this.orgCondtionStr = " and f_orgid in " + plugin.convertToIn(this.depresid) + this.orgCondtionStr
433
+ } else {
434
+ this.orgCondtionStr = " and f_orgid = " + this.$login.f.orgid + this.orgCondtionStr
435
+ }
436
+
437
+ console.log(this.orgCondtionStr);
438
+ },
404
439
  userUseInstitutionChange () {
405
440
  this.userusenatures = []
406
441
  this.$refs.paged.$refs.cri.model.f_user_usenature = ''
@@ -485,12 +520,14 @@
485
520
  this.model.search(args.condition, args.model)
486
521
  },
487
522
  getorg(obj) {
488
- if (obj.resids.length>0) {
523
+ if (obj.resids.length > 0) {
524
+ this.depresid = obj.resids
489
525
  this.orgCondtionStr = " and f_orgid in " + plugin.convertToIn(obj.resids)
490
- }else
491
- {
526
+ } else {
527
+ this.depresid = obj.resids
492
528
  this.orgCondtionStr = " and f_orgid = " + this.$login.f.orgid
493
529
  }
530
+ console.log(this.orgCondtionStr);
494
531
  },
495
532
  clearmsg() {
496
533
  this.$refs.paged.$refs.cri.model = {}
@@ -665,7 +665,7 @@
665
665
  },
666
666
  computed: {
667
667
  getCondition() {
668
- let condition=this.$refs.paged.$refs.criteria.condition + this.orgCondtionStr
668
+ let condition=this.$refs.paged.$refs.criteria.condition + `and ui.f_orgid in ${this.orgCondtionStr}`
669
669
  return {
670
670
  condition: condition
671
671
  }
@@ -0,0 +1,164 @@
1
+ <template>
2
+ <tab-button v-ref:list :active="-1">
3
+ <tabs header="欠费查询" v-if="permission('欠费查询')">
4
+ <arrears-query v-if="show.includes('欠费查询')"></arrears-query>
5
+ </tabs>
6
+ <tabs header="非收费业务查询" v-if="permission('非收费业务查询')">
7
+ <no-business-query v-if="show.includes('非收费业务查询')" @deal-msg="dealMsg"></no-business-query>
8
+ </tabs>
9
+ <tabs header="小区综合查询" v-if="!newWebHand&&permission('小区综合查询')">
10
+ <area-general-query v-if="show.includes('小区综合查询')" @deal-msg="dealMsg"></area-general-query>
11
+ </tabs>
12
+ <tabs header="小区综合查询" v-if="newWebHand&&permission('小区综合查询')">
13
+ <new-area-general-query v-if="show.includes('小区综合查询')" @deal-msg="dealMsg"></new-area-general-query>
14
+ </tabs>
15
+ <tabs header="小区收费查询" v-if="permission('小区收费查询')">
16
+ <area-charge-query v-if="show.includes('小区收费查询')" @deal-msg="dealMsg"></area-charge-query>
17
+ </tabs>
18
+ <tabs header="小区汇总(机表)" v-if="permission('小区汇总(机表)')">
19
+ <residential-query v-if="show.includes('小区汇总(机表)')" @deal-msg="dealMsg"></residential-query>
20
+ </tabs>
21
+ <tabs header="小区汇总(卡表)" v-if="permission('小区汇总(卡表)')">
22
+ <residential-card-query v-if="show.includes('小区汇总(卡表)')" @deal-msg="dealMsg" ></residential-card-query>
23
+ </tabs>
24
+ <!--<tabs header="小区欠费汇总(机表)" v-if="permission('小区欠费汇总(机表)')">-->
25
+ <!--<residential-arrears-query v-if="show.includes('小区欠费汇总(机表)')" @deal-msg="dealMsg"></residential-arrears-query>-->
26
+ <!--</tabs>-->
27
+ <tabs header="收费员汇总表" v-if="permission('收费员汇总表')">
28
+ <sell-people-query v-if="show.includes('收费员汇总表')" @deal-msg="dealMsg"></sell-people-query>
29
+ </tabs>
30
+ <tabs header="分公司汇总表" v-if="permission('分公司汇总表')">
31
+ <sell-orgname-query v-if="show.includes('分公司汇总表')" @deal-msg="dealMsg"></sell-orgname-query>
32
+ </tabs>
33
+ <tabs header="抄表员统计" v-if="permission('抄表员统计')">
34
+ <hand-people-query v-if="show.includes('抄表员统计')" @deal-msg="dealMsg"></hand-people-query>
35
+ </tabs>
36
+ <!--<tabs header="开户查询" v-if="permission('开户查询')">-->
37
+ <!--<new-account-query v-if="show == '开户查询'" @deal-msg="dealMsg"></new-account-query>-->
38
+ <!--</tabs>-->
39
+ <tabs header="用气查询" v-if="permission('用气查询')">
40
+ <fmygas-query v-if="show.includes('用气查询')" @deal-msg="dealMsg"></fmygas-query>
41
+ </tabs>
42
+ <tabs header="物联网用气查询" v-if="newWebHand && permission('用气查询')">
43
+ <newfmygas-query v-if="show.includes('物联网用气查询')" @deal-msg="dealMsg"></newfmygas-query>
44
+ </tabs>
45
+ <tabs header="气费回收率" v-if="permission('气费回收率')">
46
+ <hand-rate-query v-if="show.includes('气费回收率')" @deal-msg="dealMsg"></hand-rate-query>
47
+ </tabs>
48
+ <tabs header="收费抄表" v-if="permission('收费抄表')">
49
+ <selling-hand v-if="show.includes('收费抄表')" @deal-msg="dealMsg"></selling-hand>
50
+ </tabs>
51
+ <tabs header="月用气状况" v-if="permission('月用气状况')">
52
+ <month-gas-query v-if="show.includes('月用气状况')" @deal-msg="dealMsg"></month-gas-query>
53
+ </tabs>
54
+ <tabs header="用户余额分析" v-if="permission('用户余额分析')">
55
+ <user-sell-head-detail v-if="show.includes('用户余额分析')" @deal-msg="dealMsg"></user-sell-head-detail>
56
+ </tabs>
57
+ <!--<tabs header="年度月份用量分析" v-if="permission('年度月份用量分析')">-->
58
+ <!--<year-gas-query v-if="show == '年度月份用量分析'" @deal-msg="dealMsg"></year-gas-query>-->
59
+ <!--</tabs>-->
60
+ <!--<tabs header="余额统计查询" v-if="permission('余额统计查询')">-->
61
+ <!--<balance-query v-if="show == '余额统计查询'" @deal-msg="dealMsg"></balance-query>-->
62
+ <!--</tabs>-->
63
+ <tabs header="用户余额表" v-if="permission('用户余额表')">
64
+ <balance-table v-if="show.includes('用户余额表')" @deal-msg="dealMsg"></balance-table>
65
+ </tabs>
66
+ <tabs header="抄表册统计" v-if="permission('抄表册统计')">
67
+ <hand-book-query v-if="show.includes('抄表册统计')" @deal-msg="dealMsg"></hand-book-query>
68
+ </tabs>
69
+ <tabs header="抄表册统计2" v-if="permission('抄表册统计2')">
70
+ <hand-book-two-query v-if="show.includes('抄表册统计2')" @deal-msg="dealMsg"></hand-book-two-query>
71
+ </tabs>
72
+ <tabs header="用气性质抄表率统计" v-if="permission('用气性质抄表率统计')">
73
+ <hand-gas-properties-query v-if="show.includes('用气性质抄表率统计')" @deal-msg="dealMsg"></hand-gas-properties-query>
74
+ </tabs>
75
+ <tabs header="每月应收汇总统计" v-if="permission('每月应收汇总统计')">
76
+ <hand-gas-query v-if="show.includes('每月应收汇总统计')" @deal-msg="dealMsg"></hand-gas-query>
77
+ </tabs>
78
+ <tabs header="小区缴费汇总(机表)" v-if="permission('小区缴费汇总(机表)')">
79
+ <community-paymen v-if="show.includes('小区缴费汇总(机表)')" @deal-msg="dealMsg"></community-paymen>
80
+ </tabs>
81
+ <tabs header="预存明细查询" v-if="permission('预存明细查询')">
82
+ <deposit-detail v-if="show.includes('预存明细查询')" @deal-msg="dealMsg"></deposit-detail>
83
+ </tabs>
84
+ <tabs header="小区用户分布统计" v-if="permission('小区用户分布统计')">
85
+ <plot-summary-query v-if="show.includes('小区用户分布统计')" @deal-msg="dealMsg"></plot-summary-query>
86
+ </tabs>
87
+ <tabs header="用户用气收费情况" v-if="permission('用户用气收费情况')">
88
+ <usergas v-if="show.includes('用户用气收费情况')" @deal-msg="dealMsg"></usergas>
89
+ </tabs>
90
+ <tabs header="卡表用户结余明细" v-if="permission('卡表用户结余明细')">
91
+ <yonghu-jieyu v-if="show.includes('卡表用户结余明细')" @deal-msg="dealMsg"></yonghu-jieyu>
92
+ </tabs>
93
+ <tabs header="应收实收明细" v-if="permission('应收实收明细')">
94
+ <ying-shou-ming-xi v-if="show.includes('应收实收明细')" @deal-msg="dealMsg"></ying-shou-ming-xi>
95
+ </tabs>
96
+ <tabs header="操作员日结列表" v-if="permission('操作员日结列表')">
97
+ <proceeds-oper v-if="show.includes('操作员日结列表')" @deal-msg="dealMsg"></proceeds-oper>
98
+ </tabs>
99
+ <tabs header="抄表情况记录表" v-if="permission('抄表情况记录表')">
100
+ <handplan-info v-if="show.includes('抄表情况记录表')" @deal-msg="dealMsg"></handplan-info>
101
+ </tabs>
102
+ <tabs header="未抄表用户报表" v-if="permission('未抄表用户报表')">
103
+ <unhand-business @deal-msg="dealMsg"></unhand-business>
104
+ </tabs>
105
+ <tabs header="明细报表查询" v-if="permission('明细报表查询')">
106
+ <report-detail ></report-detail>
107
+ </tabs>
108
+ <tabs header="重点用户用气排行查询" v-if="permission('重点用户用气排行查询')">
109
+ <key-user-gas-ranking v-if="show.includes('重点用户用气排行查询')" @deal-msg="dealMsg" ></key-user-gas-ranking>
110
+ </tabs>
111
+ <tabs header="抄表员汇总表" v-if="permission('抄表员汇总表')">
112
+ <hand-people-query1 v-if="show.includes('抄表员汇总表')" @deal-msg="dealMsg" ></hand-people-query1>
113
+ </tabs>
114
+ </tab-button>
115
+
116
+ </template>
117
+
118
+ <script>
119
+ import TabButton from '../../components/sale/common/TabButton'
120
+ import Tabs from '../../components/sale/common/Tabs'
121
+
122
+ export default {
123
+ title: '汇总查询',
124
+ data () {
125
+ return {
126
+ f_start_date: '',
127
+ f_end_date: '',
128
+ listpage: true,
129
+ width: {
130
+ left: '100%',
131
+ right: '0%'
132
+ },
133
+ // searchNumber:'',
134
+ rowData: {},
135
+ newWebHand: this.$appdata.getSingleValue('新抄表'),
136
+ show: []
137
+ }
138
+ },
139
+ components: {Tabs, TabButton},
140
+ methods: {
141
+ permission (name) {
142
+ console.log(this.$login.r)
143
+ if (!this.$login.r.find(value => value == name)) {
144
+ return false
145
+ } else {
146
+ return true
147
+ }
148
+ },
149
+ cancel (obj) {
150
+ this.listpage = true
151
+ },
152
+ dealMsg (obj) {
153
+ this.rowData = obj
154
+ this.listpage = false
155
+ console.log(obj.model)
156
+ this.f_start_date = obj.model.startDate
157
+ this.f_end_date = obj.model.endDate
158
+ }
159
+ }
160
+ }
161
+ </script>
162
+
163
+ <style scoped>
164
+ </style>
@@ -0,0 +1,461 @@
1
+ <template>
2
+ <div id="unit" class="flex-row">
3
+ <div :class="{'basic-main':((!isdetail) && (!usershow)),'binary-left':isdetail||usershow}" @keyup.enter="search">
4
+ <div class="flex" v-if="!show">
5
+ <criteria-paged :model="model" v-ref:paged>
6
+ <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
7
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
8
+ <div class="row">
9
+ <div
10
+ :class="{'col-sm-2 form-group':!$parent.$parent.usershow,'col-sm-3 form-group':$parent.$parent.usershow}">
11
+ <label for="startDate" class="font_normal_body">开始日期</label>
12
+ <datepicker id="startDate" placeholder="抄表开始日期" style="width:60%"
13
+ v-model="model.startDate"
14
+ :value.sync="model.startDate"
15
+ :format="'yyyy-MM-dd HH:mm:ss'"
16
+ :show-reset-button="true"
17
+ >
18
+ </datepicker>
19
+ </div>
20
+ <div
21
+ :class="{'col-sm-2 form-group':!$parent.$parent.usershow,'col-sm-3 form-group':$parent.$parent.usershow}">
22
+ <label for="endDate" class="font_normal_body">结束日期</label>
23
+ <datepicker id="endDate" placeholder="抄表结束日期" style="width:60%"
24
+ v-model="model.endDate"
25
+ :value.sync="model.endDate"
26
+ :format="'yyyy-MM-dd HH:mm:ss'"
27
+ :show-reset-button="true"
28
+ >
29
+ </datepicker>
30
+ </div>
31
+ <div
32
+ :class="{'col-sm-2 form-group':!$parent.$parent.usershow,'col-sm-3 form-group':$parent.$parent.usershow}">
33
+ <label class="font_normal_body">小区名称</label>
34
+ <v-select :value.sync="model.f_residential_area"
35
+ class="select_list select"
36
+ enter-push
37
+ multiple="true"
38
+ v-model="model.f_residential_area"
39
+ style="width: 60%"
40
+ :options='$parent.$parent.residentialArea' placeholder='选择小区'
41
+ close-on-select>
42
+ </v-select>
43
+ </div>
44
+ <div
45
+ :class="{'col-sm-2 form-group':!$parent.$parent.usershow,'col-sm-3 form-group':$parent.$parent.usershow}">
46
+ <label class="font_normal_body">抄&ensp;表&ensp;员</label>
47
+ <v-select :value.sync="model.f_inputtor"
48
+ v-model="model.f_inputtor"
49
+ :options='$parent.$parent.inputtores' placeholder='请选择'
50
+ multiple="true"
51
+ close-on-select></v-select>
52
+ </div>
53
+ <div class="span" style="float:right;">
54
+ <button class="button_search button_spacing" @click="search()">查询</button>
55
+ <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
56
+ <export-excel :data="$parent.$parent.getCondition"
57
+ :field="$parent.$parent.getfield"
58
+ :footer="$parent.$parent.footer"
59
+ :header="$parent.$parent.other"
60
+ sqlurl="api/af-revenue/logic/openapi/exportfile"
61
+ sql-name="handPeopleQuery1"
62
+ template-name='抄表员统计查询导出'
63
+ :choose-col="true"></export-excel>
64
+ <print-data :sum-field="$parent.$parent.getfield" :model="$parent.model"
65
+ :field="$parent.$parent.getfield"
66
+ :defaultfield="$parent.$parent.defaultfield"
67
+ titletable="抄表员统计查询导出"
68
+ :sumsmodel="$parent.$parent.sumsmodel"></print-data>
69
+ <div style="float: right" class="button_spacing" :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}" @click="$parent.$parent.hidden()"></div>
70
+ </div>
71
+ </div>
72
+ <div class="row">
73
+ <res-select-group :show-component="['company']" :initres="$parent.$parent.initres" @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
74
+ </div>
75
+ </div>
76
+ </criteria>
77
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid>
78
+ <template partial='head'>
79
+ <tr>
80
+ <th>
81
+ <nobr>小区名称</nobr>
82
+ </th>
83
+ <th>
84
+ <nobr>抄表员</nobr>
85
+ </th>
86
+ <th>
87
+ <nobr>户数</nobr>
88
+ </th>
89
+ <th>
90
+ <nobr>气量</nobr>
91
+ </th>
92
+ <th>
93
+ <nobr>金额</nobr>
94
+ </th>
95
+ </tr>
96
+ </template>
97
+ <template partial='body'>
98
+ <td style="text-align: center;">
99
+ <nobr>{{ row.f_residential_area }}</nobr>
100
+ </td>
101
+ <td style="text-align: center;">
102
+ <nobr>{{ row.f_inputtor }}</nobr>
103
+ </td>
104
+ <td style="text-align: center">
105
+ <nobr>{{ row.f_user_number }}</nobr>
106
+ </td>
107
+ <td style="text-align: center;">
108
+ <nobr>{{ row.f_oughtamount }}</nobr>
109
+ </td>
110
+ <td style="text-align: center;">
111
+ <nobr>{{ row.f_oughtfee }}</nobr>
112
+ </td>
113
+ </template>
114
+ <template partial='foot'></template>
115
+ </data-grid>
116
+ </criteria-paged>
117
+ <table class="table-hover">
118
+ <tr style="position: relative" class="table-bordered">
119
+ <td
120
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;color: #5CB95C;font-weight: bold">
121
+ 汇总信息
122
+ </td>
123
+ <td
124
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
125
+ 户数合计:&emsp;{{ sumsmodel.f_user_number }}
126
+ </td>
127
+ <td
128
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
129
+ 气量合计:&emsp;{{ sumsmodel.f_oughtamount }}
130
+ </td>
131
+ <td
132
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
133
+ 金额合计:&emsp;{{ sumsmodel.f_oughtfee }}
134
+ </td>
135
+ </tr>
136
+ </table>
137
+ </div>
138
+ </div>
139
+ <div class="binary-right" v-if="usershow">
140
+ <handplan-user :start-date.sync="startd"
141
+ :end-date.sync="endd"
142
+ :inputtor.sync="selectinputtor" :f_filialeid="f_filialeid"></handplan-user>
143
+ </div>
144
+ </div>
145
+ </template>
146
+
147
+ <script>
148
+ import {HttpResetClass, PagedList} from 'vue-client'
149
+ import exportConfig from './exportConfig'
150
+
151
+ let readySomething = async function (self) {
152
+ self.defaultfield = [...self.defaultfield, ...self.config.defaultPrint]
153
+ self.$MagGetSaleParam.initinputtor();
154
+ self.getinputtores();
155
+ self.$refs.paged.$refs.cri.model.startDate = self.$login.toStandardDateString() + ' 00:00:00'
156
+ self.$refs.paged.$refs.cri.model.endDate = self.$login.toStandardDateString() + ' 23:59:59'
157
+ self.startd = self.$login.toStandardDateString() + ' 00:00:00'
158
+ self.endd = self.$login.toStandardDateString() + ' 23:59:59'
159
+ await self.$MagLoadParams.loadParam()
160
+ self.initParams()
161
+ self.sumsmodel = self.$refs.paged.$refs.grid.model.sums
162
+ }
163
+ export default {
164
+ title: '抄表员统计',
165
+ data() {
166
+ return {
167
+ defaultfield: [],
168
+ config: {
169
+ defaultPrint: ['f_residential_area', 'f_inputtor', 'f_user_number', 'f_oughtamount', 'f_oughtfee']
170
+ },
171
+ other: [],
172
+ footer: [],
173
+ showinfo: false,
174
+ data: {},
175
+ show: false,
176
+ rowdata: {},
177
+ initres: {
178
+ org: [this.$login.f.orgid],
179
+ dep: [],
180
+ user: []
181
+ },
182
+ model: new PagedList('api/af-revenue/sql/handPeopleQuery1', 20, {
183
+ startDate: 'this.model.startDate',
184
+ endDate: 'this.model.endDate'
185
+ }, {
186
+ f_user_number: 0,
187
+ f_oughtamount: 0,
188
+ f_oughtfee: 0
189
+ }),
190
+ criteriaShow: false,
191
+ orgCondtionStr: '',
192
+ // 下拉框
193
+ meterbrands: [],
194
+ meterbooks: [{label: '全部', value: ''}],
195
+ pricenames: [],
196
+ prices: [],
197
+ area: [],
198
+ //合计数据
199
+ defaultfield: [],
200
+ //小区
201
+ residentialArea: [],
202
+ sumsmodel: {},
203
+ inputtouPerson: [],
204
+ inputtores2: [], // 下发时使用自定义抄表员,
205
+ f_filialeid: this.$login.f.f_orgid,
206
+ f_orgid: this.$login.f.orgid,
207
+ f_depid: this.$login.f.depids,
208
+ f_operatorid: this.$login.f.id,
209
+ inputtores: [{label: '全部', value: ''}], //抄表员
210
+ bookSlice: [{label: '全部', value: ''}], //表册片区
211
+ allorgid: [],
212
+ isdetail: false,
213
+ usershow: false,
214
+ selectinputtor: '',
215
+ startd: '',
216
+ endd: ''
217
+ }
218
+ },
219
+ ready() {
220
+ this.getaddress()
221
+ readySomething(this).then(() => {
222
+ this.$emit('ready')
223
+ }).catch((error) => {
224
+ this.$emit('error', error)
225
+ })
226
+ },
227
+ methods: {
228
+ //显示抄表户数
229
+ operate(inputtor) {
230
+ if (inputtor != null) {
231
+ this.selectinputtor = inputtor;
232
+ } else {
233
+ this.$showAlert('当前抄表员有误', 'warning', 2000)
234
+ return;
235
+ }
236
+ this.isdetail = true;
237
+ this.usershow = true;
238
+ },
239
+ async getinputtores() {
240
+ // 获取抄表员
241
+ let rs = []
242
+ if (this.$login.f.f_gasman.length > 0) {
243
+ for (let i = 0; i < this.$login.f.f_gasman.length; i++) {
244
+ let temp = {
245
+ label: this.$login.f.f_gasman[i].name,
246
+ value: this.$login.f.f_gasman[i].name
247
+ }
248
+ rs.push(temp)
249
+ }
250
+ }
251
+ this.inputtores = [{label: '全部', value: ''}, ...rs]
252
+ },
253
+ //初始化片区
254
+ async initSlice(val) {
255
+ if (val) {
256
+ let getAllArea = await this.$resetpost('/rs/search', {
257
+ source: 'this.getParentByType($organization$).getAllChildrens().where(row.getType() == $zone$)',
258
+ userid: this.$login.f.id
259
+ }, {resolveMsg: null, rejectMsg: '获取片区出错!!!'})
260
+ let arr = getAllArea.data.filter((res) => {
261
+ return res.parentid == val
262
+ })
263
+ this.bookSlice = []
264
+ arr.forEach((res) => {
265
+ this.bookSlice.push({label: res.name, value: res.name})
266
+ })
267
+ }
268
+ },
269
+ async initmeterbook(orgstr) {
270
+ if (orgstr == null) {
271
+ orgstr = this.f_filialeid;
272
+ }
273
+ //获取新的抄表册,先去清理所有的抄表册
274
+ this.$GetSaleParam.meterbooks = [];
275
+ //开始加载新的抄表册
276
+ await this.$LoadParams.loadMeterBook(orgstr)
277
+ this.meterbooks = [{label: '全部', value: ''}, ...this.$GetSaleParam.getMeterBooks()]
278
+ },
279
+ async updateParams() {
280
+ await this.$MagLoadParams.loadParam(this.f_filialeid)
281
+ this.inputtores = [];
282
+ this.inputtores.push({label: "全部", value: ""})
283
+ this.initSlice(this.f_filialeid)
284
+ if (this.allorgid != null) {
285
+ this.allorgid.forEach((res) => {
286
+ this.inputtores = this.inputtores.concat(this.$MagGetSaleParam.getresinputtor(res));
287
+ })
288
+ }
289
+ this.initParams()
290
+ },
291
+ getotherfooter() {
292
+ this.other = [];
293
+ this.footer = [];
294
+ let otherInData = [];
295
+ otherInData.push(`导出时间: ${this.$login.toStandardTimeString()}`);
296
+ let footerData = [], exportfield = this.getfield;
297
+ footerData.push("合计");
298
+ let self = this;
299
+ for (var field in self.sumsmodel) {
300
+ footerData.push(`${exportfield[field]}合计:${self.sumsmodel[field]}`);
301
+ }
302
+ this.footer.push(footerData);
303
+ this.other.push(otherInData);
304
+ let date = []
305
+ date.push(`起始时间:${this.$refs.paged.$refs.cri.model.startDate}`)
306
+ date.push(`终止时间:${this.$refs.paged.$refs.cri.model.endDate}`)
307
+ this.other.push(date)
308
+ },
309
+ async getaddress() {
310
+ let HttpReset = new HttpResetClass()
311
+ var data = await HttpReset.load('POST', 'api/af-revenue/sql/manage_getarealist', {
312
+ data: {
313
+ condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
314
+ }
315
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
316
+ let house = [{label: '全部', value: ''}]
317
+ for (let row of data.data) {
318
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
319
+ }
320
+ this.residentialArea = house
321
+ },
322
+ //把数据库查询数据转换为下拉数据
323
+ calculate(rows) {
324
+ let data = []
325
+ rows.forEach((row, n) => {
326
+ data[n] = {label: row.f_residential_area, value: row.id}
327
+ })
328
+ return data
329
+ },
330
+
331
+ search() {
332
+ this.$refs.paged.$refs.cri.search()
333
+ },
334
+ cancel() {
335
+ this.show = false
336
+ },
337
+ showmsg(obj) {
338
+ this.rowdata = obj
339
+ this.show = true
340
+ },
341
+ initParams() {
342
+ // 初始化气表品牌
343
+ let brandArr = []
344
+ this.$MagGetSaleParam.getGasbrand().forEach((item) => {
345
+ let temp = {}
346
+ temp.label = item.label
347
+ temp.value = item.value.f_meter_brand
348
+ brandArr.push(temp)
349
+ })
350
+ this.meterbrands = [{label: '全部', value: ''}, ...brandArr]
351
+ //初始化气表价格
352
+ this.prices = this.$MagGetSaleParam.getPrices();
353
+ },
354
+ selfSearch(args) {
355
+ if (this.$refs.paged.$refs.cri.model.startDate == '' || this.$refs.paged.$refs.cri.model.endDate == '') {
356
+ this.$showAlert('请先选择开始时间、结束时间,再进行查询操作!', 'warning', 3000)
357
+ return
358
+ }
359
+ //抄表员查询条件
360
+ this.inputtouPerson = this.$refs.paged.$refs.cri.model.f_inputtor
361
+ if (this.inputtouPerson.length !== 0) {
362
+ let str = JSON.stringify(this.inputtouPerson)
363
+ str = str.replace(/"/g, `'`)
364
+ str = str.replace(/\[/g, ``)
365
+ str = str.replace(/\]/g, ``)
366
+ //查询多个抄表员时条件
367
+ args.condition += ` and f_inputtor in ( ${str} )`
368
+ }
369
+ //小区查询条件
370
+ this.area = this.$refs.paged.$refs.cri.model.f_residential_area
371
+ if (this.area.length !== 0) {
372
+ let str = JSON.stringify(this.area)
373
+ str = str.replace(/"/g, `'`)
374
+ str = str.replace(/\[/g, ``)
375
+ str = str.replace(/\]/g, ``)
376
+ //查询多个小区时条件
377
+ args.condition += ` and f_residential_area in ( ${str} )`
378
+ }
379
+ let f_orgstr = this.orgCondtionStr
380
+ args.condition = `${args.condition} ` + f_orgstr
381
+ self.startd = args.model.startDate;
382
+ self.endd = args.model.endDate;
383
+ this.model.search(args.condition, args.model)
384
+ this.sumsmodel = this.$refs.paged.$refs.grid.model.sums;
385
+ this.isdetail = false;
386
+ this.usershow = false;
387
+ },
388
+ clear() {
389
+ //清空部门和人员
390
+ this.$refs.paged.$refs.cri.$refs.sel.$children[1].selectres = []
391
+ //部门和人员变为全选
392
+ this.$refs.paged.$refs.cri.$refs.sel.$children[1].$children[0].isSelectAll = false
393
+ this.$refs.paged.$refs.cri.$refs.sel.$children[2].$children[0].isSelectAll = false
394
+ Object.keys(this.$refs.paged.$refs.cri.model).forEach((key) => {
395
+ this.$refs.paged.$refs.cri.model[key] = []
396
+ })
397
+
398
+ },
399
+ dealmsg(val) {
400
+ val.model = this.model.model
401
+ this.$dispatch('deal-msg', val)
402
+ },
403
+ show() {
404
+ this.criteriaShow = true
405
+ },
406
+ hidden() {
407
+ this.criteriaShow = !this.criteriaShow
408
+ },
409
+ getRes(obj) {
410
+ this.orgCondtionStr = obj
411
+ },
412
+ },
413
+ events: {
414
+ 'getidcard'(IdCard) {
415
+ this.$refs.paged.$refs.cri.model.f_info_idnumber = IdCard.strID
416
+ }
417
+ },
418
+ watch: {
419
+ 'model'(val) {
420
+ },
421
+ 'orgCondtionStr'(val) {
422
+ this.$refs.paged.$refs.cri.model.f_inputtor = []
423
+ let res = val.match(/'(.*?)'/)
424
+ console.log('正则提取:', res && res[1])
425
+ if (res) {
426
+ this.f_filialeid = res[1]
427
+ if (res.input != null) {
428
+ let resorgid = res.input.substring(res.input.indexOf("'"));
429
+ if (resorgid != null && resorgid != '') {
430
+ resorgid = resorgid.substring(0, resorgid.lastIndexOf("'") + 1);
431
+ resorgid = resorgid.replace(/'/g, "");
432
+ this.allorgid = resorgid.split(",")
433
+ }
434
+ }
435
+ this.updateParams()
436
+ }
437
+ },
438
+ sumsmodel: {
439
+ handler: function (val) {
440
+ this.getotherfooter();
441
+ },
442
+ deep: true
443
+ }
444
+ },
445
+ computed: {
446
+ getCondition() {
447
+ return {
448
+ startDate: this.$refs.paged.$refs.cri.model.startDate,
449
+ endDate: this.$refs.paged.$refs.cri.model.endDate,
450
+ condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr
451
+ }
452
+ },
453
+ inputtor() {
454
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('抄表员')]
455
+ },
456
+ getfield() {
457
+ return exportConfig.handPeopleConfig1
458
+ }
459
+ }
460
+ }
461
+ </script>
@@ -378,6 +378,13 @@ export default {
378
378
  'f_sell_hand': '已收户数',
379
379
  'f_sell_lv': '收费率'
380
380
  },
381
+ handPeopleConfig1: {
382
+ 'f_residential_area': '小区名称',
383
+ 'f_inputtor': '抄表员',
384
+ 'f_user_number': '户数',
385
+ 'f_oughtamount': '气量',
386
+ 'f_oughtfee': '金额'
387
+ },
381
388
  handBookConfig: {
382
389
  'f_inputtor': '抄表员',
383
390
  'f_book_name': '抄表册',
@@ -30,4 +30,7 @@ export default function () {
30
30
  Vue.component('fill-card-query', (resolve) => { require(['./FillCardQuery'], resolve) })
31
31
  // 收费查询
32
32
  Vue.component('charge-query', (resolve) => { require(['./ChargeQuery'], resolve) })
33
+ // 抄表员汇总表
34
+ Vue.component('hand-people-query1', (resolve) => { require(['./HandPeopleQuery'], resolve) })
35
+ Vue.component('collect-manage', (resolve) => { require(['./CollectManage'], resolve) })
33
36
  }
@@ -774,4 +774,8 @@ export default function () {
774
774
  Vue.component('gas-group-summary', (resolve) => {
775
775
  require(['./components/SellReport/ManageGasGroupSummary'], resolve)
776
776
  })
777
+ // 西户收费结账报表
778
+ Vue.component('xh-manage-summary', (resolve) => {
779
+ require(['./components/SellReport/xihu/XHManageSummary.vue'], resolve)
780
+ })
777
781
  }