manage-client 3.2.288 → 3.2.290

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.
@@ -0,0 +1,9 @@
1
+ // 分公司特殊组件页面注册
2
+ import Vue from 'vue'
3
+
4
+ export default function () {
5
+ // 收费查询
6
+ Vue.component('charge-query', (resolve) => {
7
+ require(['./businessquery/ChargeQuery'], resolve)
8
+ })
9
+ }
@@ -0,0 +1,281 @@
1
+ <template>
2
+ <div id="unit" class="flex-row">
3
+ <div class="basic-main" @keyup.enter="search">
4
+ <div novalidate class="form-horizontal select-overspread container-fluid auto">
5
+ <div class="row">
6
+ <div class="col-sm-5 form-group">
7
+ <label class="font_normal_body">客户状态</label>
8
+ <v-select :options='userstates' :value.sync="userState"
9
+ close-on-select condition="ui.f_user_state='{}'" value-single
10
+ placeholder='客户状态' v-model="userState"></v-select>
11
+ </div>
12
+ <div class="col-sm-7 form-group button-range">
13
+ <button class="button_search button_spacing" @click="search()">查询</button>
14
+ <export-excel :data="getCondition"
15
+ :field="[]"
16
+ :header="other"
17
+ :footer="footer"
18
+ sqlurl="rs/rcEasyExcel/rcAreaSummaryExport" sql-name="areaBuildingDetailInfo"
19
+ template-name='小区楼栋信息汇总表'
20
+ :choose-col="true"></export-excel>
21
+ <button class="button_search button_spacing" @click="cancel()">返回</button>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ <div class="my-table">
26
+ <table class="table table-striped table-bordered" style="width: 100%;">
27
+ <thead>
28
+ <tr>
29
+ <th style="white-space: nowrap;text-align:center">
30
+ <nobr>小区名称</nobr>
31
+ </th>
32
+ <th style="white-space: nowrap;text-align:center">
33
+ <nobr>楼栋数</nobr>
34
+ </th>
35
+ <th style="white-space: nowrap;text-align:center">
36
+ <nobr>楼栋</nobr>
37
+ </th>
38
+ <th style="white-space: nowrap;text-align:center">
39
+ <nobr>楼栋用户数</nobr>
40
+ </th>
41
+ <th style="white-space: nowrap;text-align:center">
42
+ <nobr>地址状态</nobr>
43
+ </th>
44
+ <th style="white-space: nowrap;text-align:center">
45
+ <nobr>分项用户数</nobr>
46
+ </th>
47
+ </tr>
48
+ </thead>
49
+ <tbody>
50
+ <tr v-for="row in dataArray">
51
+ <td style="white-space: nowrap;text-align:center"
52
+ :rowspan="row.f_residential_areaspan" :class="{hidden: row.f_residential_areadis}">
53
+ <nobr>{{ row.f_residential_area }}</nobr>
54
+ </td>
55
+ <td style="white-space: nowrap;text-align:center"
56
+ :rowspan=" row.f_building_numspan" :class="{hidden: row.f_building_numdis}">
57
+ <nobr>{{ row.f_building_num }}</nobr>
58
+ </td>
59
+ <td style="white-space: nowrap;text-align:center"
60
+ :rowspan="row.f_buildingspan" :class="{hidden: row.f_buildingdis}">
61
+ <nobr>{{ row.f_building }}</nobr>
62
+ </td>
63
+ <td style="white-space: nowrap;text-align:center"
64
+ :rowspan=" row.f_user_numspan" :class="{hidden: row.f_user_numdis}">
65
+ <nobr>{{ row.f_user_num }}</nobr>
66
+ </td>
67
+ <td style="white-space: nowrap;text-align:center">
68
+ <nobr>{{ row.f_address_state }}</nobr>
69
+ </td>
70
+ <td style="white-space: nowrap;text-align:center">
71
+ <nobr>{{ row.f_num }}</nobr>
72
+ </td>
73
+ </tr>
74
+ </tbody>
75
+ </table>
76
+ </div>
77
+
78
+
79
+ <table class="table-hover">
80
+ <tr style="position: relative" class="table-bordered">
81
+ <td
82
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;color: #5CB95C;font-weight: bold">
83
+ {{ sumsmodel.f_residential_area }}汇总信息
84
+ </td>
85
+ <td
86
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
87
+ 小区总用户数:&emsp;{{ (sumsmodel.f_user_num) }}
88
+ </td>
89
+ <td
90
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
91
+ 已开户用户数:&emsp;{{ (sumsmodel.f_open_num) }}
92
+ </td>
93
+ <td
94
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
95
+ 已通气用户数:&emsp;{{ (sumsmodel.f_gas_num) }}
96
+ </td>
97
+ <td
98
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
99
+ 未通气用户数:&emsp;{{ (sumsmodel.f_nogas_num) }}
100
+ </td>
101
+ <td
102
+ style="display: inline-block;width: auto;border-right: 1px solid #F2F6FA;padding: 0px 10px 0px 10px;font-weight: bold">
103
+ 空户用户数:&emsp;{{ (sumsmodel.f_empty_num) }}
104
+ </td>
105
+ </tr>
106
+ </table>
107
+ </div>
108
+ </div>
109
+ </template>
110
+
111
+ <script>
112
+ import defaultPrint from '../../components/sale/config/DefaultPrint'
113
+ import exportConfig from './exportConfig'
114
+
115
+ export default {
116
+ title: '小区信息详情',
117
+ data () {
118
+ return {
119
+ other: [],
120
+ footer: [],
121
+ conditionStr: '1=1',
122
+ defaultfield: [],
123
+ config: {
124
+ defaultPrint: []
125
+ },
126
+ // 合计数据
127
+ sumsmodel: {},
128
+ criteriaShow: false,
129
+ dataArray: [],
130
+ len: 0
131
+ }
132
+ },
133
+ props: {
134
+ row: {
135
+ type: Object
136
+ },
137
+ userState: {
138
+ type: String
139
+ }
140
+ },
141
+ ready () {
142
+ this.search()
143
+ },
144
+ methods: {
145
+ getotherfooter () {
146
+ this.other = []
147
+ this.footer = []
148
+ let otherInData = []
149
+ otherInData.push(`导出时间: ${this.$login.toStandardTimeString()}`)
150
+ let footerData = [], exportfield = this.getExportField
151
+ footerData.push('合计')
152
+ let self = this
153
+ for (var field in self.sumsmodel) {
154
+ footerData.push(`${exportfield[field]}合计:${self.sumsmodel[field]}`)
155
+ }
156
+ this.footer.push(footerData)
157
+ this.other.push(otherInData)
158
+ },
159
+ search () {
160
+ if (this.conditionStr === '1=1') {
161
+ if (this.userState) {
162
+ this.conditionStr = '1=1 and ui.f_user_state=' + '\'' + this.userState + '\''
163
+ }
164
+ }
165
+ this.getData()
166
+ },
167
+ combineCell (list) {
168
+ for (let field in list[0]) {
169
+ let k = 0
170
+ while (k < list.length) {
171
+ list[k][field + 'span'] = 1
172
+ list[k][field + 'dis'] = false
173
+ let i
174
+ for (i = k + 1; i <= list.length - 1; i++) {
175
+ if (list[k][field] === list[i][field] && list[k][field] !== '') {
176
+ list[k][field + 'span']++
177
+ list[k][field + 'dis'] = false
178
+ list[i][field + 'span'] = 1
179
+ list[i][field + 'dis'] = true
180
+ } else {
181
+ break
182
+ }
183
+ }
184
+ k = i
185
+ }
186
+ }
187
+ return list
188
+ },
189
+ selfSearch (args) {
190
+ this.conditionStr = args.condition
191
+ args.model.parentRow = this.row
192
+ this.getData()
193
+ },
194
+ getData () {
195
+ let data = {
196
+ parentRow: this.row,
197
+ condition: this.conditionStr
198
+ }
199
+ this.$resetpost('rs/logic/areaBuildingDetailInfo', {data: data}, {resolveMsg: null, rejectMsg: '获取小区详细信息出错!!'})
200
+ .then(res => {
201
+ this.dataArray = this.combineCell(res.data.data)
202
+ this.sumsValues()
203
+ })
204
+ },
205
+ sumsValues () {
206
+ let data = {
207
+ f_user_num: 0,
208
+ f_open_num: 0,
209
+ f_gas_num: 0,
210
+ f_nogas_num: 0,
211
+ f_empty_num: 0
212
+ }
213
+ data.f_user_num = this.row.f_user_num
214
+ data.f_open_num = this.row.f_open_num
215
+ data.f_gas_num = this.row.f_gas_num
216
+ data.f_nogas_num = this.row.f_nogas_num
217
+ data.f_empty_num = this.row.f_empty_num
218
+ this.sumsmodel = data
219
+ },
220
+ cancel () {
221
+ this.$dispatch('clean')
222
+ },
223
+ showmsg (obj) {
224
+ this.rowdata = obj
225
+ this.show = true
226
+ },
227
+ print () {
228
+ this.$refs.print.PrintAsFile()
229
+ this.printshow = false
230
+ }
231
+ },
232
+ watch: {
233
+ 'row' (val) {
234
+ console.log('看看传进来的值:' + val)
235
+ this.row = val
236
+ if (val) {
237
+ this.search()
238
+ }
239
+ },
240
+ sumsmodel: {
241
+ handler: function (val) {
242
+ this.getotherfooter()
243
+ },
244
+ deep: true
245
+ },
246
+ 'modelval.length' () {
247
+ this.put()
248
+ }
249
+ },
250
+ computed: {
251
+ getCondition () {
252
+ return {condition: this.conditionStr, parentRow: this.row}
253
+ },
254
+ getfield () {
255
+ let data = {}
256
+ this.bodyData.forEach((value, index) => {
257
+ data[this.bodyData[index]] = this.headData[index]
258
+ })
259
+ },
260
+
261
+ userstates () {
262
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('客户状态')]
263
+ },
264
+ getExportField () {
265
+ return exportConfig.areaBuildingInfoSum
266
+ }
267
+ }
268
+ }
269
+ </script>
270
+ <style>
271
+ .my-table {
272
+ width: 100%;
273
+ max-height: 90%; /* 设置最大高度 */
274
+ overflow-y: auto; /* 添加垂直滚动条 */
275
+ }
276
+
277
+ .my-table thead th {
278
+ position: sticky;
279
+ top: 0;
280
+ }
281
+ </style>
@@ -0,0 +1,301 @@
1
+ <template>
2
+ <div class="binary">
3
+ <div :class="{'basic-main': !showDetail,'binary-left': showDetail}">
4
+ <div class="flex" style="flex: 1;">
5
+ <div style="flex: 1.2">
6
+ <criteria-paged :model="model" v-ref:paged @sort="sort">
7
+ <criteria @condition-changed="$parent.selfSearch" partial='criteria' v-ref:criteria>
8
+ <div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
9
+ <div class="row">
10
+ <div
11
+ :class="{'col-sm-2':!$parent.$parent.showDetail,'col-sm-4':$parent.$parent.showDetail}"
12
+ class="form-group">
13
+ <label class="font_normal_body">&nbsp;&nbsp;&nbsp;小区&nbsp;&nbsp;&nbsp;</label>
14
+ <v-select :value.sync="model.f_residential_area"
15
+ class="select_list select"
16
+ enter-push multiple
17
+ v-model="model.f_residential_area"
18
+ style="width: 60%"
19
+ condition="a.f_residential_area in {}"
20
+ :options='$parent.$parent.residentialArea' placeholder='选择小区'
21
+ close-on-select>
22
+ </v-select>
23
+ </div>
24
+
25
+ <div
26
+ :class="{'col-sm-2':!$parent.$parent.showDetail,'col-sm-4':$parent.$parent.showDetail}"
27
+ class="form-group">
28
+ <label class="font_normal_body">客户状态</label>
29
+ <v-select :options='$parent.$parent.userstates' :value.sync="model.f_user_state"
30
+ close-on-select condition="ui.f_user_state='{}'"
31
+ placeholder='客户状态' v-model="model.f_user_state"></v-select>
32
+ </div>
33
+ <div
34
+ :class="{'col-sm-2':!$parent.$parent.showDetail,'col-sm-4':$parent.$parent.showDetail}"
35
+ class="form-group">
36
+ <label class="font_normal_body">组织机构</label>
37
+ <res-select
38
+ :initresid='$parent.$parent.curorgid'
39
+ @res-select="$parent.$parent.getorg"
40
+ is-mul="false"
41
+ restype='organization'
42
+ >
43
+ </res-select>
44
+ </div>
45
+ <div
46
+ :class="{'col-sm-2':!$parent.$parent.showDetail,'col-sm-4':$parent.$parent.showDetail}"
47
+ v-if="!$parent.$parent.showDetail"
48
+ class="form-group">
49
+ <label class="font_normal_body">&nbsp;&nbsp;&nbsp;区域&nbsp;&nbsp;&nbsp;</label>
50
+ <v-select :value.sync="model.f_street"
51
+ class="select_list select"
52
+ enter-push
53
+ condition="a.f_street = '{}'"
54
+ v-model="model.f_street"
55
+ style="width: 60%"
56
+ :options='$parent.$parent.street' placeholder='选择区域'
57
+ close-on-select>
58
+
59
+ </v-select>
60
+ </div>
61
+ <div
62
+ :class="{'col-sm-2':!$parent.$parent.showDetail,'col-sm-4':$parent.$parent.showDetail}"
63
+ class="form-group button-range">
64
+
65
+ <button @click="search(), $parent.$parent.clean()" class="button_search button_spacing"
66
+ style="float: right">查询
67
+ </button>
68
+ <export-excel :data="$parent.$parent.getCondition"
69
+ :field="$parent.$parent.getfield"
70
+ :header="$parent.$parent.other"
71
+ sqlurl="rs/logic/exportfile"
72
+ sql-name="areaBuildingInfoSummary"
73
+ template-name='小区楼栋汇总信息'
74
+ :choose-col="true"></export-excel>
75
+ <print-data :sum-field="$parent.$parent.getfield" :model="$parent.model"
76
+ :field="$parent.$parent.getfield"
77
+ titletable="用户查询" :starthead="$parent.$parent.startDate"
78
+ :defaultfield="$parent.$parent.defaultfield"
79
+ ></print-data>
80
+
81
+ <div
82
+ :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
83
+ @click="$parent.$parent.hidden()"
84
+ class="button_spacing"
85
+ style="float: right"></div>
86
+ </div>
87
+ </div>
88
+ <div class="row" v-if="$parent.$parent.criteriaShow">
89
+ <div
90
+ :class="{'col-sm-2':!$parent.$parent.showDetail,'col-sm-4':$parent.$parent.showDetail}"
91
+ v-if="$parent.$parent.showDetail"
92
+ class="form-group">
93
+ <label class="font_normal_body">&nbsp;&nbsp;&nbsp;区域&nbsp;&nbsp;&nbsp;</label>
94
+ <v-select :value.sync="model.f_street"
95
+ class="select_list select"
96
+ enter-push
97
+ condition="a.f_street = '{}'"
98
+ v-model="model.f_street"
99
+ style="width: 60%"
100
+ :options='$parent.$parent.street' placeholder='选择区域'
101
+ close-on-select>
102
+
103
+ </v-select>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ </criteria>
108
+ <data-grid :model="model" class="list_area table_sy" @dblclick="$parent.modifyUser" v-ref:grid
109
+ partial='list'>
110
+ <template partial='head'>
111
+ <tr>
112
+ <th>
113
+ <nobr>序号</nobr>
114
+ </th>
115
+ <th>
116
+ <nobr>小区名称</nobr>
117
+ </th>
118
+ <th>
119
+ <nobr>楼栋数</nobr>
120
+ </th>
121
+ <th>
122
+ <nobr>用户数</nobr>
123
+ </th>
124
+ <th>
125
+ <nobr>已开户</nobr>
126
+ </th>
127
+ <th>
128
+ <nobr>已通气</nobr>
129
+ </th>
130
+ <th>
131
+ <nobr>未通气</nobr>
132
+ </th>
133
+ <th>
134
+ <nobr>空户</nobr>
135
+ </th>
136
+ <th>
137
+ <nobr>操作</nobr>
138
+ </th>
139
+ </tr>
140
+ </template>
141
+ <template partial='body'>
142
+ <td style="text-align: center;">{{ $index + 1 }}</td>
143
+ <td style="text-align: center;">{{ row.f_residential_area }}</td>
144
+ <td style="text-align: center;">{{ row.f_building_num }}</td>
145
+ <td style="text-align: center;">{{ row.f_user_num }}</td>
146
+ <td style="text-align: center;">{{ row.f_open_num }}</td>
147
+ <td style="text-align: center;">{{ row.f_gas_num }}</td>
148
+ <td style="text-align: center;">{{ row.f_nogas_num }}</td>
149
+ <td style="text-align: center;">{{ row.f_empty_num }}</td>
150
+ <td style="text-align: center;">
151
+ <button type="button" name="button" class="button_search-2 button_spacing width-60"
152
+ @click.stop="$parent.$parent.$parent.toDetail(row)">详情
153
+ </button>
154
+ </td>
155
+ </template>
156
+ </data-grid>
157
+ </criteria-paged>
158
+ </div>
159
+ </div>
160
+ </div>
161
+ <div class="binary-right" :style="{width:'70%'}" v-if="showDetail">
162
+ <div class="auto" style="height: 100%; margin-top: 1%">
163
+ <area-building-detail-info :row="row" :user-state="userState" v-ref:info></area-building-detail-info>
164
+ </div>
165
+ </div>
166
+ </div>
167
+ </template>
168
+
169
+ <script>
170
+ import {HttpResetClass, PagedList} from 'vue-client'
171
+ import Vue from 'vue'
172
+ import exportConfig from './exportConfig'
173
+
174
+ export default {
175
+ 'title': '小区楼栋信息汇总',
176
+ data () {
177
+ return {
178
+ model: new PagedList('rs/sql/areaBuildingInfoSummary', 20),
179
+ showDetail: false,
180
+ criteriaShow: false,
181
+ condition: '',
182
+ row: null,
183
+ curorgid: [this.$login.f.orgid],
184
+ f_filialeid: this.$login.f.orgid,
185
+ userState: '',
186
+ residentialArea: [],
187
+ street: []
188
+ }
189
+ },
190
+ ready () {
191
+ this.$refs.paged.$refs.criteria.model.f_user_state = ['正常']
192
+ this.getaddress()
193
+ },
194
+ methods: {
195
+ getotherfooter () {
196
+ this.other = []
197
+ this.footer = []
198
+ let otherInData = []
199
+ otherInData.push(`导出时间: ${this.$login.toStandardTimeString()}`)
200
+ this.other.push(otherInData)
201
+ },
202
+ clean () {
203
+ this.showDetail = false
204
+ this.row = null
205
+ this.userState = ''
206
+ },
207
+ /**
208
+ * 退出用户详细信息页面
209
+ */
210
+ cancel () {
211
+ this.isShowDetailInfo = false
212
+ },
213
+ close () {
214
+ this.clean()
215
+ },
216
+ hidden () {
217
+ this.criteriaShow = !this.criteriaShow
218
+ },
219
+ search () {
220
+ this.$refs.paged.$refs.criteria.search()
221
+ },
222
+ toDetail (row) {
223
+ this.showDetail = true
224
+ this.row = row
225
+ this.userState = this.$refs.paged.$refs.criteria.model.f_user_state[0]
226
+ },
227
+ selfSearch (args) {
228
+ if (!this.f_filialeid) {
229
+ this.f_filialeid = this.$login.f.orgid
230
+ }
231
+ args.condition = `${args.condition} and ui.f_filialeid = '${this.f_filialeid}'`
232
+ this.criteriaShow = false
233
+ this.$refs.paged.$refs.grid.$el.scrollTop = 0
234
+ this.condition = args.condition
235
+ this.model.search(args.condition, args.model)
236
+ this.clean()
237
+ },
238
+ clear () {
239
+ Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
240
+ this.$refs.paged.$refs.criteria.model[key] = []
241
+ })
242
+ },
243
+ getorg (val) {
244
+ this.f_filialeid = val[0]
245
+ },
246
+ async getaddress(){
247
+ console.log('开始获取小区')
248
+ let HttpReset = new HttpResetClass()
249
+ var data = await HttpReset.load('POST', 'rs/sql/manage_getarealist', {
250
+ data: {
251
+ condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
252
+ }
253
+ }, {resolveMsg: null, rejectMsg: '获取小区失败!'})
254
+ console.log('小区',data)
255
+ let house = []
256
+ for (let row of data.data){
257
+ console.log('开始保存小区')
258
+ house.push({label: row.f_residential_area, value: row.f_residential_area})
259
+ }
260
+ this.residentialArea = house
261
+ let street= await HttpReset.load('POST', 'rs/sql/manage_getstreetlist', {
262
+ data: {
263
+ condition: `1=1 and s.f_filialeid = '${this.$login.f.orgid}'`
264
+ }
265
+ }, {resolveMsg: null, rejectMsg: '获取区域失败!'})
266
+ console.log('区域',data)
267
+ let abc = []
268
+ for (let row of street.data){
269
+ console.log('开始保存区域')
270
+ abc.push({label: row.f_street, value: row.f_street})
271
+ }
272
+ this.street = abc
273
+ }
274
+ },
275
+ computed: {
276
+ getCondition () {
277
+ return {
278
+ condition: this.condition
279
+ }
280
+ },
281
+ getfield () {
282
+ return exportConfig.areaBuildingInfoSummary
283
+ },
284
+ userstates () {
285
+ return [{label: '全部', value: ''}, ...this.$appdata.getParam('客户状态')]
286
+ }
287
+ },
288
+ watch: {},
289
+ events: {
290
+ 'clean' () {
291
+ this.clean()
292
+ }
293
+ }
294
+ }
295
+ </script>
296
+ <style>
297
+ .nav-tabss ul > li > a {
298
+ padding: 5px 10px;
299
+ }
300
+ </style>
301
+