sale-client 3.6.99 → 3.6.102
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 +1 -1
- package/src/components/charge/business/CardMeterCenter.vue +1 -1
- package/src/components/charge/business/IOTMeterCenter.vue +1 -1
- package/src/components/revenue/comprehen/Bill/EticketV4/EticketRecordList.vue +16 -0
- package/src/components/revenue/comprehen/Maintenance/revenue/StockListmain.vue +18 -18
- package/src/filiale/wenxi/ChargeRecordQuery.vue +1 -1
- package/src/filiale/wuan/BlackList/BlackList.vue +282 -0
- package/src/filiale/wuan/BlackList/BlackListDetail.vue +71 -0
- package/src/filiale/wuan/BlackList/BlackListList.vue +259 -0
- package/src/filiale/wuan/BlackList/BlackListManage.vue +101 -0
- package/src/filiale/wuan/BlackList/BlackListRecord.vue +62 -0
- package/src/filiale/wuan/BlackList/BlackModal.vue +211 -0
- package/src/filiale/wuan/BlackList/SpecialUserManage.vue +61 -0
- package/src/filiale/wuan/sale.js +8 -0
package/package.json
CHANGED
|
@@ -720,13 +720,13 @@
|
|
|
720
720
|
}
|
|
721
721
|
this.$showMessage(`确定对用户${this.row.f_user_name}进行卡表收费吗?`, ['confirm', 'cancel']).then(async (res) => {
|
|
722
722
|
if (res === 'confirm') {
|
|
723
|
+
this.clickConfirm = true
|
|
723
724
|
// 先调用付款码支付组件流程
|
|
724
725
|
let ss = await this.$refs.paymentcode.flowPath()
|
|
725
726
|
this.$refs.paymentcode.paymentCodeShow = false
|
|
726
727
|
console.log('付款码操作返回', ss)
|
|
727
728
|
if (!ss.result) return
|
|
728
729
|
|
|
729
|
-
this.clickConfirm = true
|
|
730
730
|
this.model.f_curbalance = this.curbalance
|
|
731
731
|
this.$dispatch('no-button')
|
|
732
732
|
sellgasGen(this)
|
|
@@ -613,6 +613,7 @@
|
|
|
613
613
|
},
|
|
614
614
|
async confirm () {
|
|
615
615
|
let res = await this.$showMessage(`确定对客户${this.row.f_user_name}进行物联网表缴费吗?`, ['confirm', 'cancel'])
|
|
616
|
+
this.clickConfirm = true
|
|
616
617
|
if (res != 'confirm') return
|
|
617
618
|
// 先调用付款码支付组件流程
|
|
618
619
|
let ss = await this.$refs.paymentcode.flowPath()
|
|
@@ -620,7 +621,6 @@
|
|
|
620
621
|
console.log('付款码操作返回', ss)
|
|
621
622
|
if (!ss.result) return
|
|
622
623
|
this.eticket_msg = false
|
|
623
|
-
this.clickConfirm = true
|
|
624
624
|
this.model.f_curbalance = this.curbalance
|
|
625
625
|
this.$dispatch('no-button')
|
|
626
626
|
console.log('model and row', this.model, this.row)
|
|
@@ -94,6 +94,14 @@
|
|
|
94
94
|
condition="sell_operator = '{}'" placeholder="收款人"
|
|
95
95
|
>
|
|
96
96
|
</div>
|
|
97
|
+
<div class="col-sm-2 form-group">
|
|
98
|
+
<label class="font_normal_body">用户类型</label>
|
|
99
|
+
<v-select :value.sync="model.f_user_type"
|
|
100
|
+
:options='$parent.$parent.usertypes'
|
|
101
|
+
placeholder='请选择' v-model="model.f_user_type"
|
|
102
|
+
condition="f_user_type = '{}'"
|
|
103
|
+
close-on-select></v-select>
|
|
104
|
+
</div>
|
|
97
105
|
</div>
|
|
98
106
|
</div>
|
|
99
107
|
</criteria>
|
|
@@ -109,6 +117,9 @@
|
|
|
109
117
|
<th>
|
|
110
118
|
<nobr>客户地址电话</nobr>
|
|
111
119
|
</th>
|
|
120
|
+
<th>
|
|
121
|
+
<nobr>用户类型</nobr>
|
|
122
|
+
</th>
|
|
112
123
|
<th>
|
|
113
124
|
<data-order field="f_total_money" name="实收金额"
|
|
114
125
|
:order.sync="$parent.$parent.$parent.orderFields.f_collection"></data-order>
|
|
@@ -163,6 +174,7 @@
|
|
|
163
174
|
<th style="text-align:center">{{ row.f_userinfo_code }}</th>
|
|
164
175
|
<th style="text-align:center">{{ row.f_user_name }}</th>
|
|
165
176
|
<th style="text-align:center">{{ row.f_buy_address_phone }}</th>
|
|
177
|
+
<th style="text-align:center">{{ row.f_user_type }}</th>
|
|
166
178
|
<th style="text-align:center">{{ row.f_collection }}</th>
|
|
167
179
|
<th style="text-align:center">{{ row.f_total_money }}</th>
|
|
168
180
|
<th style="text-align:center">{{ row.f_tax_money }}</th>
|
|
@@ -262,6 +274,7 @@ export default {
|
|
|
262
274
|
'f_userinfo_code': '客户编号',
|
|
263
275
|
'f_user_name': '客户姓名',
|
|
264
276
|
'f_buy_address_phone': '用户地址',
|
|
277
|
+
'f_user_type': '用户类型',
|
|
265
278
|
'f_collection': '实收金额',
|
|
266
279
|
'f_total_money': '开票金额',
|
|
267
280
|
'f_tax_money': '不含税金额',
|
|
@@ -347,6 +360,9 @@ export default {
|
|
|
347
360
|
}
|
|
348
361
|
},
|
|
349
362
|
computed: {
|
|
363
|
+
usertypes () {
|
|
364
|
+
return [{label: ' 全部 ', value: ''}, ...this.$appdata.getParam('用户类型')]
|
|
365
|
+
},
|
|
350
366
|
getCondition () {
|
|
351
367
|
return {
|
|
352
368
|
condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr,
|
|
@@ -7,17 +7,7 @@
|
|
|
7
7
|
v-show="$parent.searchshow">
|
|
8
8
|
<div novalidate class="form-inline auto" partial>
|
|
9
9
|
<div class="row">
|
|
10
|
-
|
|
11
|
-
:class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
|
|
12
|
-
class="form-group">
|
|
13
|
-
<label class="font_normal_body">组织机构</label>
|
|
14
|
-
<res-select :initresid='$parent.$parent.curorgid'
|
|
15
|
-
@res-select="$parent.$parent.getorg"
|
|
16
|
-
class="select select_list"
|
|
17
|
-
restype='organization'
|
|
18
|
-
style="width: 60%">
|
|
19
|
-
</res-select>
|
|
20
|
-
</div>
|
|
10
|
+
<res-select-group :initres="$parent.$parent.initres" :show-component="['company','department']" @re-res="$parent.$parent.getRes" v-ref:sel></res-select-group>
|
|
21
11
|
<div
|
|
22
12
|
:class="{'col-sm-2':!$parent.$parent.editList,'col-sm-4':$parent.$parent.editList}"
|
|
23
13
|
class="form-group">
|
|
@@ -193,7 +183,7 @@
|
|
|
193
183
|
const myMap = new Map()
|
|
194
184
|
|
|
195
185
|
export default {
|
|
196
|
-
'title': '',
|
|
186
|
+
'title': '收费记录维护',
|
|
197
187
|
data () {
|
|
198
188
|
return {
|
|
199
189
|
usertypes: this.$appdata.getParam('客户类型') ? [{label: '全部', value: ''}, ...this.$appdata.getParam('客户类型')] : [],
|
|
@@ -241,6 +231,12 @@ const myMap = new Map()
|
|
|
241
231
|
da: {
|
|
242
232
|
rows: []
|
|
243
233
|
},
|
|
234
|
+
initres: {
|
|
235
|
+
org: [this.$login.f.orgid],
|
|
236
|
+
dep: [],
|
|
237
|
+
user: []
|
|
238
|
+
},
|
|
239
|
+
orgCondtionStr: '',
|
|
244
240
|
f_meternumber: '',
|
|
245
241
|
updatemodel:{
|
|
246
242
|
f_accounting_date: this.$login.toStandardTimeString()
|
|
@@ -269,6 +265,12 @@ const myMap = new Map()
|
|
|
269
265
|
f_accounting_date: this.$login.toStandardTimeString()
|
|
270
266
|
}
|
|
271
267
|
},
|
|
268
|
+
async getRes(condition,obj) {
|
|
269
|
+
this.orgCondtionStr = condition
|
|
270
|
+
this.orgname = obj.orgnames[0]
|
|
271
|
+
this.depname = obj.depnames[0]
|
|
272
|
+
|
|
273
|
+
},
|
|
272
274
|
async confirm(){
|
|
273
275
|
let array = []
|
|
274
276
|
this.map.forEach((value, key, map) => {
|
|
@@ -391,12 +393,10 @@ const myMap = new Map()
|
|
|
391
393
|
if (!this.$refs.paged.$refs.criteria.model.endDate) {
|
|
392
394
|
this.$refs.paged.$refs.criteria.model.endDate = this.$login.toStandardDateString() + ' 23:59:59'
|
|
393
395
|
}
|
|
394
|
-
if (!this.
|
|
395
|
-
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
if (this.f_orgid) {
|
|
399
|
-
args.condition = `${args.condition} and f_orgid in ${this.f_orgid}`
|
|
396
|
+
if (!this.orgCondtionStr) {
|
|
397
|
+
args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
|
|
398
|
+
} else {
|
|
399
|
+
args.condition = `${args.condition}` + this.orgCondtionStr
|
|
400
400
|
}
|
|
401
401
|
this.model.search(args.condition, args.model)
|
|
402
402
|
this.condition = args.condition
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<td style="text-align:center;white-space:nowrap;">{{row.type}}</td>
|
|
31
31
|
<td style="text-align:center;white-space:nowrap;">{{row.operate_date}}</td>
|
|
32
32
|
<td style="text-align:center;white-space:nowrap;">{{row.f_operator}}</td>
|
|
33
|
-
<td style="text-align:left;white-space:nowrap;">{{row.note}}{{row.f_write_card}}</td>
|
|
33
|
+
<td style="text-align:left;white-space:nowrap;">{{row.note}} {{row.f_othereason}} {{row.f_write_card}}</td>
|
|
34
34
|
</tr>
|
|
35
35
|
</template>
|
|
36
36
|
</data-grid>
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="flex-auto" style="overflow-y: scroll;height: 55%">
|
|
3
|
+
<validator name='v'>
|
|
4
|
+
<form novalidate class="form-horizontal select-overspread ">
|
|
5
|
+
<ul class="nav nav-tabs">
|
|
6
|
+
<li class="active a-tabs"><a href="#">用户限购</a></li>
|
|
7
|
+
</ul>
|
|
8
|
+
<div>
|
|
9
|
+
<div class="row">
|
|
10
|
+
<div class="col-sm-4 form-group" id="f_user_id">
|
|
11
|
+
<label for="f_userinfo_code" class="font_normal_body">表  号</label>
|
|
12
|
+
<input class="input_search" style="width:60%" type="text"
|
|
13
|
+
v-model="model.f_meternumber" @keyup.enter="getinfo('f_meternumber')"
|
|
14
|
+
:disabled='isEdit' placeholder="输入表号,回车查询">
|
|
15
|
+
</div>
|
|
16
|
+
<div class="col-sm-4 form-group" id="f_user_id">
|
|
17
|
+
<label for="f_userinfo_code" class="font_normal_body">卡  号</label>
|
|
18
|
+
<input class="input_search" style="width:60%" type="text"
|
|
19
|
+
v-model="model.f_card_id" @keyup.enter="getinfo('f_card_id')"
|
|
20
|
+
:disabled='isEdit' placeholder="输入卡号,回车查询">
|
|
21
|
+
</div>
|
|
22
|
+
<div class="col-sm-4 form-group" id="f_user_id" :class="[$v.f_userinfo_code.required ? 'has-error' : 'has-success']">
|
|
23
|
+
<label for="f_userinfo_code" class="font_normal_body">用户编号</label>
|
|
24
|
+
<input class="input_search" style="width:60%" type="text" class="input_search" style="width:60%"
|
|
25
|
+
v-model="model.f_userinfo_code" @keyup.enter="getinfo('f_userinfo_code')"
|
|
26
|
+
v-validate:f_userinfo_code='{required: true }' :disabled='isEdit' placeholder="输入编号,回车查询">
|
|
27
|
+
</div>
|
|
28
|
+
<div class="col-sm-4 form-group" id="name" :class="[$v.f_user_name.required ? 'has-error' : 'has-success']">
|
|
29
|
+
<label for="f_user_name" class=" font_normal_body">用户姓名</label>
|
|
30
|
+
<input class="input_search" style="width:60%" type="text" class="input_search" style="width:60%" v-validate:f_user_name='{required: true }'
|
|
31
|
+
v-model="model.f_user_name" readonly
|
|
32
|
+
placeholder="用户姓名">
|
|
33
|
+
|
|
34
|
+
</div>
|
|
35
|
+
<div class="col-sm-4 form-group" id="phone" :class="[$v.f_user_phone.required ? 'has-error' : 'has-success']">
|
|
36
|
+
<label for="f_user_phone" class=" font_normal_body">联系方式</label>
|
|
37
|
+
<input class="input_search" style="width:60%" type="text" class="input_search" style="width:60%" v-validate:f_user_phone='{required: true }'
|
|
38
|
+
v-model="model.f_user_phone"
|
|
39
|
+
placeholder="联系方式">
|
|
40
|
+
|
|
41
|
+
</div>
|
|
42
|
+
<div class="col-sm-4 form-group" id="f_limit_times" :class="[$v.f_limit_times.required ? 'has-error' : 'has-success']">
|
|
43
|
+
<!-- <label for="f_limit_times" class=" font_normal_body">限购次数</label>-->
|
|
44
|
+
<label class="font_normal_body">限购次数</label>
|
|
45
|
+
<input class="input_search" style="width:60%" type="number"
|
|
46
|
+
v-model="model.f_limit_times" v-validate:f_limit_times='{required: true }'
|
|
47
|
+
placeholder="限购次数">
|
|
48
|
+
|
|
49
|
+
</div>
|
|
50
|
+
<div class="col-sm-2 form-group" id="f_limit">
|
|
51
|
+
<!-- <label for="f_limit_times" class=" font_normal_body">限购次数</label>-->
|
|
52
|
+
<v-select
|
|
53
|
+
v-model="f_limit"
|
|
54
|
+
:value.sync="f_limit"
|
|
55
|
+
:options='limites'
|
|
56
|
+
width="100%"
|
|
57
|
+
close-on-select>
|
|
58
|
+
</v-select>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="col-sm-3 form-group" id="f_limit_gas" style="right: 3%;">
|
|
61
|
+
<input class="input_search" style="width:60%" type="number" v-if="f_limit=='限购气量'"
|
|
62
|
+
v-model="model.f_limit_value"
|
|
63
|
+
v-scale="[model.f_limit_value, 2]"
|
|
64
|
+
@click="gg()"
|
|
65
|
+
placeholder="限购气量">
|
|
66
|
+
<input class="input_search" type="number" v-if="f_limit=='限购金额'"
|
|
67
|
+
v-model="model.f_limit_amount"
|
|
68
|
+
v-scale="[model.f_limit_amount, 2]"
|
|
69
|
+
@click="gg()"
|
|
70
|
+
placeholder="限购金额">
|
|
71
|
+
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<div class="row">
|
|
76
|
+
<div class="col-sm-12 form-group" id="address">
|
|
77
|
+
<label for="f_address" class=" font_normal_body">地  址</label>
|
|
78
|
+
<input class="input_search" type="text" class="input_search" style="width:87%" v-model="model.f_address"
|
|
79
|
+
readonly
|
|
80
|
+
placeholder="地址">
|
|
81
|
+
</div>
|
|
82
|
+
<div class="col-sm-12 form-group" id="f_comments" :class="[$v.f_comments.required ? 'has-error' : 'has-success']">
|
|
83
|
+
<label for="f_comments" class=" font_normal_body">原  因</label>
|
|
84
|
+
<input class="input_search" type="text" class="input_search" style="width:87%" v-model="model.f_comments"
|
|
85
|
+
placeholder="原因" v-validate:f_comments='{required: true }' >
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
</div>
|
|
89
|
+
|
|
90
|
+
<div style="text-align:right;height:auto;margin-top:6px;">
|
|
91
|
+
<button class="button_search" type="button" style="width:80px;" @click="confirm('限购')" v-show="!isBlackList && model.isblacklist =='false'" :disabled='!$v.valid'>
|
|
92
|
+
限购
|
|
93
|
+
</button>
|
|
94
|
+
<button class="button_search" type="button" style="width:80px;" @click="confirm('取消限购')"
|
|
95
|
+
v-show="isBlackList || model.isblacklist =='true'" :disabled='!$v.valid'>
|
|
96
|
+
取消限购
|
|
97
|
+
</button>
|
|
98
|
+
<button class="button_export" type="button" style="width:80px;" @click="close()">取消</button>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
</form>
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
</validator>
|
|
106
|
+
|
|
107
|
+
</div>
|
|
108
|
+
</template>
|
|
109
|
+
<script>
|
|
110
|
+
import {HttpResetClass} from 'vue-client'
|
|
111
|
+
import Vue from 'vue'
|
|
112
|
+
let initGen = async function (self, val) {
|
|
113
|
+
// 获取低保气价
|
|
114
|
+
let http = new HttpResetClass()
|
|
115
|
+
let res = await http.load('POST', 'rs/sql/sale_getUserAndVersion', {data: {condition:`f_userinfo_code='${self.data.f_userinfo_code}'` , f_orgid: self.$login.f.orgid}}, {
|
|
116
|
+
resolveMsg: null,
|
|
117
|
+
rejectMsg: null
|
|
118
|
+
})
|
|
119
|
+
console.log(res.data)
|
|
120
|
+
console.log('用户id:' + res.data[0].f_userinfo_id)
|
|
121
|
+
self.model = Object.assign({}, self.model, val)
|
|
122
|
+
self.model.f_userinfo_code = res.data[0].f_userinfo_code
|
|
123
|
+
self.model.f_meternumber = res.data[0].f_meternumber
|
|
124
|
+
self.model.f_card_id = res.data[0].f_card_id
|
|
125
|
+
self.model.f_userinfo_id = res.data[0].f_userinfo_id
|
|
126
|
+
self.model.f_user_phone = res.data[0].f_user_phone
|
|
127
|
+
self.model.f_address = res.data[0].f_address
|
|
128
|
+
self.model.f_user_phone = res.data[0].f_user_phone
|
|
129
|
+
self.model.version = res.data[0].version
|
|
130
|
+
self.model.f_limit_value=res.data[0].f_limit_value
|
|
131
|
+
self.model.f_limit_times=res.data[0].f_limit_times
|
|
132
|
+
self.model.f_limit_amount=res.data[0].f_limit_amount
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export default {
|
|
136
|
+
title: '黑名单',
|
|
137
|
+
props: {
|
|
138
|
+
f_islow_income: {
|
|
139
|
+
type: String,
|
|
140
|
+
default: '1'
|
|
141
|
+
},
|
|
142
|
+
data: {
|
|
143
|
+
type: Object
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
data () {
|
|
147
|
+
return {
|
|
148
|
+
pricename: [{value: '', label: ''}],
|
|
149
|
+
model: {
|
|
150
|
+
f_userinfo_code: '',
|
|
151
|
+
f_userinfo_id: '',
|
|
152
|
+
f_user_name: '',
|
|
153
|
+
f_address: '',
|
|
154
|
+
f_user_phone: '',
|
|
155
|
+
f_comments: '',
|
|
156
|
+
version: null,
|
|
157
|
+
// 限购次数
|
|
158
|
+
f_limit_times: '',
|
|
159
|
+
// 限购气量
|
|
160
|
+
f_limit_value: '',
|
|
161
|
+
// 限购金额
|
|
162
|
+
f_limit_amount: ''
|
|
163
|
+
|
|
164
|
+
},
|
|
165
|
+
// 编辑控制
|
|
166
|
+
isBlackList: false,
|
|
167
|
+
f_filialeid: '', // 所属公司
|
|
168
|
+
f_filialename: '', // 所属公司名称
|
|
169
|
+
f_limit: '限购气量',
|
|
170
|
+
limites: [{label: '限购气量', value: '限购气量'}, {label: '限购金额', value: '限购金额'}]
|
|
171
|
+
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
ready () {
|
|
175
|
+
if (this.data) {
|
|
176
|
+
this.isBlackList = true
|
|
177
|
+
initGen(this, this.data)
|
|
178
|
+
} else {
|
|
179
|
+
this.initModel()
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
watch: {
|
|
183
|
+
'data' (val) {
|
|
184
|
+
if (val) {
|
|
185
|
+
this.isBlackList = true
|
|
186
|
+
initGen(this, val)
|
|
187
|
+
} else {
|
|
188
|
+
this.isBlackList = false
|
|
189
|
+
this.initModel()
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
methods: {
|
|
194
|
+
gg () {
|
|
195
|
+
if (this.f_limit[0] === '限购气量') {
|
|
196
|
+
this.model.f_limit_amount = ''
|
|
197
|
+
} else {
|
|
198
|
+
this.model.f_limit_value = ''
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
getinfo (type) {
|
|
202
|
+
var condition =`${type} = '${this.model[type]}'`
|
|
203
|
+
this.$resetpost('rs/sql/sale_getUserAndVersion', {data: {condition: condition, f_orgid: this.$login.f.orgid}}, {
|
|
204
|
+
resolveMsg: null,
|
|
205
|
+
rejectMsg: null
|
|
206
|
+
}).then((res) => {
|
|
207
|
+
console.log(res.data[0])
|
|
208
|
+
this.model = res.data[0]
|
|
209
|
+
this.$parent.blodid = this.model.f_userinfo_id
|
|
210
|
+
})
|
|
211
|
+
},
|
|
212
|
+
async confirm (type) {
|
|
213
|
+
if (type == '取消限购' && !this.$login.r.find(value => value == '取消限购')) {
|
|
214
|
+
this.$showMessage('你没有取消限购的权限,请联系管理员!')
|
|
215
|
+
return
|
|
216
|
+
}
|
|
217
|
+
let data = {
|
|
218
|
+
f_operat_type: type,
|
|
219
|
+
f_state: '有效',
|
|
220
|
+
f_user_id: this.model.f_user_id,
|
|
221
|
+
f_user_name: this.model.f_user_name,
|
|
222
|
+
f_comments: this.model.f_comments,
|
|
223
|
+
f_operator: this.$login.f.name,
|
|
224
|
+
f_operatorid: this.$login.f.id,
|
|
225
|
+
f_orgid: this.$login.f.orgid,
|
|
226
|
+
f_orgname: this.$login.f.orgs,
|
|
227
|
+
f_depid: this.$login.f.depids,
|
|
228
|
+
f_depname: this.$login.f.deps,
|
|
229
|
+
f_operate_date: this.$login.toStandardTimeString(),
|
|
230
|
+
f_describe: `${this.$login.f.name}对客户${this.model.f_user_name}进行${type}`,
|
|
231
|
+
f_userinfo_id: {
|
|
232
|
+
f_userinfo_id: this.model.f_userinfo_id,
|
|
233
|
+
f_user_state: '正常',
|
|
234
|
+
version: this.model.version
|
|
235
|
+
},
|
|
236
|
+
f_limit_times: this.model.f_limit_times,
|
|
237
|
+
f_limit_amount: this.model.f_limit_amount,
|
|
238
|
+
f_limit_value: this.model.f_limit_value
|
|
239
|
+
}
|
|
240
|
+
console.log('查看参数data', data)
|
|
241
|
+
let res =await this.$resetpost('rs/logic/backlistOperate', data,{resolveMsg: null, rejectMsg: null})
|
|
242
|
+
if (res.data.code == 200) {
|
|
243
|
+
this.$showMessage(`${type}成功`)
|
|
244
|
+
}
|
|
245
|
+
if (res.data.code == 500) {
|
|
246
|
+
this.$showMessage(`${type}失败,用户已被限购,请先取消限购`)
|
|
247
|
+
return
|
|
248
|
+
}
|
|
249
|
+
this.initModel()
|
|
250
|
+
this.$dispatch('success')
|
|
251
|
+
},
|
|
252
|
+
getorg (id, name) {
|
|
253
|
+
this.f_filialeid = id[0]
|
|
254
|
+
this.f_filialename = name[0]
|
|
255
|
+
},
|
|
256
|
+
initModel () {
|
|
257
|
+
this.model = {
|
|
258
|
+
f_userinfo_code: '',
|
|
259
|
+
f_userinfo_id: '',
|
|
260
|
+
f_user_name: '',
|
|
261
|
+
f_address: '',
|
|
262
|
+
f_user_phone: '',
|
|
263
|
+
f_comments: '',
|
|
264
|
+
version: null,
|
|
265
|
+
isblacklist: 'false'
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
close () {
|
|
269
|
+
this.$dispatch('close')
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
</script>
|
|
274
|
+
<style lang="less">
|
|
275
|
+
#gas-price-form {
|
|
276
|
+
.form-group {
|
|
277
|
+
margin-left: 0px;
|
|
278
|
+
margin-right: 0px;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
</style>
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="flex-full" style="height: 40%">
|
|
3
|
+
<data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid >
|
|
4
|
+
<template partial='head'>
|
|
5
|
+
<tr>
|
|
6
|
+
<th style="text-align: center;">序号</th>
|
|
7
|
+
<th style="text-align: center;">用户编号</th>
|
|
8
|
+
<th style="text-align: center;">用户名</th>
|
|
9
|
+
<th style="text-align: center;">手机号</th>
|
|
10
|
+
<th style="text-align: center;">购气金额</th>
|
|
11
|
+
<th style="text-align: center;">购气量</th>
|
|
12
|
+
<th style="text-align: center;">购气次数</th>
|
|
13
|
+
<th style="text-align: center;">付款方式</th>
|
|
14
|
+
<th style="text-align: center;">缴费日期</th>
|
|
15
|
+
</tr>
|
|
16
|
+
</template>
|
|
17
|
+
<template partial='body'>
|
|
18
|
+
<tr>
|
|
19
|
+
<td style="text-align: center;">{{$index+1}}</td>
|
|
20
|
+
<td style="text-align: center;">{{row.f_userinfo_code}}</td>
|
|
21
|
+
<td style="text-align: center;">{{row.f_user_name}}</td>
|
|
22
|
+
<td style="text-align: center;">{{row.f_user_phone}}</td>
|
|
23
|
+
<td style="text-align: center;">{{row.f_preamount}}</td>
|
|
24
|
+
<td style="text-align: center;">{{row.f_pregas}}</td>
|
|
25
|
+
<td style="text-align: center;">{{row.f_times}}</td>
|
|
26
|
+
<td style="text-align: center;">{{row.f_payment}}</td>
|
|
27
|
+
<td style="text-align: center;">{{row.f_operate_date}}</td>
|
|
28
|
+
</tr>
|
|
29
|
+
|
|
30
|
+
</template>
|
|
31
|
+
<template partial='foot'></template>
|
|
32
|
+
</data-grid>
|
|
33
|
+
</div>
|
|
34
|
+
</template>
|
|
35
|
+
|
|
36
|
+
<script>
|
|
37
|
+
import {HttpResetClass} from 'vue-client'
|
|
38
|
+
|
|
39
|
+
let initGen = async function (self, val) {
|
|
40
|
+
let http = new HttpResetClass()
|
|
41
|
+
console.log(self.$login.f, '================')
|
|
42
|
+
let res = await http.load('POST', 'rs/sql/sale_getUserPropertiesList', {data: {condition: `f_userinfo_id=${self.data.f_userinfo_id} and f_orgid = ${self.$login.f.orgid}` }}, {resolveMsg: null, rejectMsg: null})
|
|
43
|
+
self.model = Object.assign({}, self.model, val)
|
|
44
|
+
self.model.rows = res.data
|
|
45
|
+
}
|
|
46
|
+
export default {
|
|
47
|
+
props: ['data'],
|
|
48
|
+
data () {
|
|
49
|
+
return {
|
|
50
|
+
model: {
|
|
51
|
+
rows: []
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
watch: {
|
|
56
|
+
'data' (val) {
|
|
57
|
+
if (val) {
|
|
58
|
+
initGen(this, val)
|
|
59
|
+
}
|
|
60
|
+
}},
|
|
61
|
+
|
|
62
|
+
ready () {
|
|
63
|
+
initGen(this, this.data)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
}
|
|
67
|
+
</script>
|
|
68
|
+
<style>
|
|
69
|
+
|
|
70
|
+
</style>
|
|
71
|
+
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div @keyup.enter="search" class="flex-auto" style="flex:1;">
|
|
3
|
+
<criteria-paged :model="model" v-ref:paged>
|
|
4
|
+
<criteria @condition-changed='$parent.selfSearch' partial='criteria' v-ref:cri>
|
|
5
|
+
<div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
|
|
6
|
+
<div class="row">
|
|
7
|
+
<res-select-group :style="$parent.$parent.style" :show-component="['company']" :initres="$parent.$parent.initres" @re-res="$parent.$parent.getorg" v-ref:sel></res-select-group>
|
|
8
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}">
|
|
9
|
+
<label class="font_normal_body">用户编号</label>
|
|
10
|
+
<input class="input_search" condition="f_userinfo_code like '%{}%'" placeholder="用户编号" style="width:60%"
|
|
11
|
+
style="width: 90px"
|
|
12
|
+
type="text" v-model="model.ename"
|
|
13
|
+
/>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}"
|
|
16
|
+
v-if="!$parent.$parent.$parent.isdetail">
|
|
17
|
+
<label class="font_normal_body">用户姓名</label>
|
|
18
|
+
<input class="input_search" condition="f_user_name = '{}'" placeholder="用户姓名" style="width:60%" style="width: 90px"
|
|
19
|
+
type="text" v-model="model.name"
|
|
20
|
+
/>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}"
|
|
23
|
+
v-if="!$parent.$parent.downshow && !$parent.$parent.$parent.isdetail">
|
|
24
|
+
<label class="font_normal_body">电  话</label>
|
|
25
|
+
<input :size="model.f_user_phone ? model.f_user_phone.length : 2" class="input_search" condition="f_user_phone = '{}'" placeholder='电话' style="width:60%"
|
|
26
|
+
type="text"
|
|
27
|
+
v-model="model.f_user_phone">
|
|
28
|
+
</div>
|
|
29
|
+
<div class="form-group col-sm-3 button-range" style="padding-right: 10px">
|
|
30
|
+
<button @click="$parent.$parent.search()" class="button_search button_spacing" style="width:80px;margin-left:30px;" v-el:cx>查询</button>
|
|
31
|
+
<button @click="$parent.$parent.add()" class="button_export button_spacing" style="width: max-content;"
|
|
32
|
+
v-el:cx>新增限购
|
|
33
|
+
</button>
|
|
34
|
+
<export-excel
|
|
35
|
+
:data="$parent.$parent.getCondition"
|
|
36
|
+
:field="$parent.$parent.getfield"
|
|
37
|
+
sqlurl="rs/logic/saleExport" progress="saleGetExportProgress" sql-name="sale_getBlackList" template-name='限购导出'
|
|
38
|
+
:choose-col="true">
|
|
39
|
+
</export-excel>
|
|
40
|
+
<div
|
|
41
|
+
:class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"
|
|
42
|
+
@click="$parent.$parent.hidden()" class="button_spacing" style="float: right"></div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="row" v-if="$parent.$parent.criteriaShow">
|
|
46
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}"
|
|
47
|
+
v-if="$parent.$parent.$parent.isdetail">
|
|
48
|
+
<label class="font_normal_body">用户姓名</label>
|
|
49
|
+
<input class="input_search" condition="f_user_name = '{}'" placeholder="用户姓名" style="width:60%" style="width: 90px"
|
|
50
|
+
type="text" v-model="model.name"
|
|
51
|
+
/>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}"
|
|
56
|
+
v-if="!$parent.$parent.downshow&&!$parent.$parent.$parent.isdetail">
|
|
57
|
+
<label class="font_normal_body">表  号</label>
|
|
58
|
+
<input :size="model.f_meternumber ? model.f_meternumber.length * 2 : 4" class="input_search" condition="f_meternumber = '{}'" placeholder='表号' style="width:60%"
|
|
59
|
+
type="text"
|
|
60
|
+
v-model="model.f_meternumber">
|
|
61
|
+
</div>
|
|
62
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}"
|
|
63
|
+
v-if="!$parent.$parent.downshow&&!$parent.$parent.$parent.isdetail">
|
|
64
|
+
<label class="font_normal_body">卡  号</label>
|
|
65
|
+
<input :size="model.f_card_id ? model.f_card_id.length * 2 : 4" class="input_search" condition="f_card_id = '{}'" placeholder='卡号' style="width:60%"
|
|
66
|
+
type="text"
|
|
67
|
+
v-model="model.f_card_id">
|
|
68
|
+
</div>
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}"
|
|
72
|
+
v-if="!$parent.$parent.downshow&&!$parent.$parent.$parent.isdetail">
|
|
73
|
+
<label class="font_normal_body">地  址</label>
|
|
74
|
+
<input :size="model.f_address ? model.f_address.length * 2 : 4" class="input_search" condition="f_address like '%{}%'" placeholder='用户地址' style="width:60%"
|
|
75
|
+
type="text"
|
|
76
|
+
v-model="model.f_address">
|
|
77
|
+
</div>
|
|
78
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}"
|
|
79
|
+
v-if="!(!$parent.$parent.downshow && !$parent.$parent.$parent.isdetail)">
|
|
80
|
+
<label class="font_normal_body">电  话</label>
|
|
81
|
+
<input :size="model.f_user_phone ? model.f_user_phone.length : 2" class="input_search" condition="f_user_phone = '{}'" placeholder='电话' style="width:60%"
|
|
82
|
+
type="text"
|
|
83
|
+
v-model="model.f_user_phone">
|
|
84
|
+
</div>
|
|
85
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}"
|
|
86
|
+
v-if="!(!$parent.$parent.downshow&&!$parent.$parent.$parent.isdetail)">
|
|
87
|
+
<label class="font_normal_body">地  址</label>
|
|
88
|
+
<input :size="model.f_address ? model.f_address.length * 2 : 4" class="input_search" condition="f_address like '%{}%'" placeholder='用户地址' style="width:60%"
|
|
89
|
+
type="text"
|
|
90
|
+
v-model="model.f_address">
|
|
91
|
+
</div>
|
|
92
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}">
|
|
93
|
+
<label class="font_normal_body">安检日期</label>
|
|
94
|
+
<datepicker placeholder="开始日期"
|
|
95
|
+
style="width:60%"
|
|
96
|
+
class="datepicker"
|
|
97
|
+
v-model="model.f_offsite_time"
|
|
98
|
+
:value.sync="model.f_offsite_time"
|
|
99
|
+
:format="'yyyy-MM-dd'"
|
|
100
|
+
condition="f_offsite_time >= '{} 00:00:00'"
|
|
101
|
+
></datepicker>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="form-group" :class="{'col-sm-2':!$parent.$parent.$parent.isdetail, 'col-sm-3':$parent.$parent.$parent.isdetail}">
|
|
104
|
+
<label class="font_normal_body">限购日期</label>
|
|
105
|
+
<datepicker placeholder="开始日期"
|
|
106
|
+
style="width:60%"
|
|
107
|
+
class="datepicker"
|
|
108
|
+
v-model="model.f_parameter_value"
|
|
109
|
+
:value.sync="model.f_parameter_value"
|
|
110
|
+
:format="'yyyy-MM-dd'"
|
|
111
|
+
condition="f_parameter_value >= '{} 00:00:00'"
|
|
112
|
+
></datepicker>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
|
|
116
|
+
</div>
|
|
117
|
+
</criteria>
|
|
118
|
+
<data-grid :model="model" class="list_area table_sy" partial='list' v-ref:grid>
|
|
119
|
+
<template partial='head'>
|
|
120
|
+
<tr>
|
|
121
|
+
<th style="text-align: center; ">序号</th>
|
|
122
|
+
<th style="text-align: center;">用户编号</th>
|
|
123
|
+
<th style="text-align: center;">姓名</th>
|
|
124
|
+
<th style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>表号</th>
|
|
125
|
+
<th style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>卡号</th>
|
|
126
|
+
<th style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>电话</th>
|
|
127
|
+
<th style="text-align: center;">地址</th>
|
|
128
|
+
<th style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>安检日期</th>
|
|
129
|
+
<th style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>限购日期</th>
|
|
130
|
+
<th style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>限购原因</th>
|
|
131
|
+
</tr>
|
|
132
|
+
</template>
|
|
133
|
+
<template partial='body'>
|
|
134
|
+
|
|
135
|
+
<td style="text-align: center;">{{$index+1}}</td>
|
|
136
|
+
<td style="text-align: center;">{{row.f_userinfo_code}}</td>
|
|
137
|
+
<td style="text-align: center;">{{row.f_user_name}}</td>
|
|
138
|
+
<td style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>{{row.f_meternumber}}</td>
|
|
139
|
+
<td style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>{{row.f_card_id}}</td>
|
|
140
|
+
<td style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>{{row.f_user_phone}}</td>
|
|
141
|
+
<td style="text-align: center;">{{row.f_address}}</td>
|
|
142
|
+
<td style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>{{row.f_offsite_time}}</td>
|
|
143
|
+
<td style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>{{row.f_parameter_value}}</td>
|
|
144
|
+
<td style="text-align: center;" v-show='!$parent.$parent.$parent.$parent.isdetail'>{{row.f_comments}}</td>
|
|
145
|
+
</template>
|
|
146
|
+
<template partial='foot'></template>
|
|
147
|
+
</data-grid>
|
|
148
|
+
</criteria-paged>
|
|
149
|
+
</div>
|
|
150
|
+
</template>
|
|
151
|
+
|
|
152
|
+
<script>
|
|
153
|
+
import {PagedList} from 'vue-client'
|
|
154
|
+
import Vue from 'vue'
|
|
155
|
+
|
|
156
|
+
export default {
|
|
157
|
+
data () {
|
|
158
|
+
return {
|
|
159
|
+
initres: {
|
|
160
|
+
org: [this.$login.f.orgid],
|
|
161
|
+
dep: [],
|
|
162
|
+
user: []
|
|
163
|
+
},
|
|
164
|
+
criteriaShow: false,
|
|
165
|
+
model: new PagedList('rs/sql/sale_getBlackList', 20),
|
|
166
|
+
// 公司下拉
|
|
167
|
+
curorgid: [this.$login.f.orgid],
|
|
168
|
+
f_orgid: '',
|
|
169
|
+
getfield: {
|
|
170
|
+
'f_userinfo_code': '用户编号',
|
|
171
|
+
'f_user_name': '姓名',
|
|
172
|
+
'f_meternumber': '表号',
|
|
173
|
+
'f_card_id': '卡号',
|
|
174
|
+
'f_user_phone': '电话',
|
|
175
|
+
'f_address': '地址',
|
|
176
|
+
'f_offsite_time': '安检日期',
|
|
177
|
+
'f_parameter_value': '限购日期',
|
|
178
|
+
'f_comments': '限购原因'
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
props: {
|
|
183
|
+
style: {
|
|
184
|
+
type: String,
|
|
185
|
+
default: 'form-group col-sm-2'
|
|
186
|
+
},
|
|
187
|
+
row: {},
|
|
188
|
+
ispartial: false
|
|
189
|
+
},
|
|
190
|
+
ready () {
|
|
191
|
+
this.search()
|
|
192
|
+
},
|
|
193
|
+
methods: {
|
|
194
|
+
async getRes (condition, obj) {
|
|
195
|
+
console.log('condition =', condition)
|
|
196
|
+
console.log('obj =', obj)
|
|
197
|
+
|
|
198
|
+
// //更新抄表册
|
|
199
|
+
// this.meterbooks = [{label: '全部',value: ''}];
|
|
200
|
+
// if(this.lastorgstr != condition){
|
|
201
|
+
// this.tempfalg = true;
|
|
202
|
+
// this.lastorgstr = condition;
|
|
203
|
+
// }
|
|
204
|
+
// if(this.tempfalg && condition != null && condition!='' && condition.indexOf("(")>-1){
|
|
205
|
+
// this.tempfalg = false;
|
|
206
|
+
// let a = condition.substring(condition.indexOf("(")+2)
|
|
207
|
+
// }
|
|
208
|
+
// this.orgCondtionStr = condition
|
|
209
|
+
},
|
|
210
|
+
hidden () {
|
|
211
|
+
this.criteriaShow = !this.criteriaShow
|
|
212
|
+
},
|
|
213
|
+
search () {
|
|
214
|
+
this.$refs.paged.$refs.cri.search()
|
|
215
|
+
this.$dispatch('search')
|
|
216
|
+
},
|
|
217
|
+
getorg (val) {
|
|
218
|
+
this.f_orgid = val
|
|
219
|
+
},
|
|
220
|
+
selfSearch (args) {
|
|
221
|
+
if (!this.f_orgid) {
|
|
222
|
+
this.getorg('and f_orgid in' + '(\'' + [this.$login.f.orgid] + '\')')
|
|
223
|
+
}
|
|
224
|
+
console.log('查询。。。', this.f_orgid)
|
|
225
|
+
if (this.f_orgid) {
|
|
226
|
+
// args.condition = `${args.condition} and s.f_filialeid in ${this.f_orgid}`
|
|
227
|
+
args.condition = `${args.condition} ${this.f_orgid} `
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
this.model.search(args.condition, args.model)
|
|
231
|
+
},
|
|
232
|
+
add () {
|
|
233
|
+
if (!this.$login.r.find(value => value == '新增限购')) {
|
|
234
|
+
this.$showMessage('你没有新增限购的权限,请联系管理员!')
|
|
235
|
+
return
|
|
236
|
+
}
|
|
237
|
+
this.style = 'col-sm-3'
|
|
238
|
+
this.$dispatch('add')
|
|
239
|
+
},
|
|
240
|
+
dblclick (val) {
|
|
241
|
+
console.log(val)
|
|
242
|
+
this.$emit('dblclick', val)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
},
|
|
246
|
+
watch: {
|
|
247
|
+
'model.rows.length' (val) {
|
|
248
|
+
if (val === 1) {
|
|
249
|
+
this.$refs.paged.$refs.grid.select(this.model.rows[0])
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
computed: {
|
|
254
|
+
getCondition () {
|
|
255
|
+
return {condition: `${this.$refs.paged.$refs.cri.condition}` + this.f_orgid}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
</script>
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div id="unit" class="flex-row">
|
|
3
|
+
<black-list-list class="binary-left" v-ref:list :row="row" :style="style" @select-changed="selected"
|
|
4
|
+
style="width:auto;"></black-list-list>
|
|
5
|
+
<div class="binary-right" style="overflow-y: auto;" v-if="isdetail" :style="{width: isdetail?'50%':'auto'}">
|
|
6
|
+
<!-- <p class="bg-info text-center" style="padding: 8px;" v-if="row.pricecount">气价变更情况汇总</p> -->
|
|
7
|
+
<black-list style="height: 55%; margin-bottom: 30px;" :data="row" v-ref:gas></black-list>
|
|
8
|
+
<div v-show="row" class="auto">
|
|
9
|
+
<ul class="nav nav-tabs" >
|
|
10
|
+
<li class="active"><a href="#">限购操作记录</a></li>
|
|
11
|
+
</ul>
|
|
12
|
+
<black-list-record v-ref:update :data="row"></black-list-record>
|
|
13
|
+
</div>
|
|
14
|
+
<div v-show="row" class="auto">
|
|
15
|
+
<ul class="nav nav-tabs" >
|
|
16
|
+
<li class="active"><a href="#">限购充值明细</a></li>
|
|
17
|
+
</ul>
|
|
18
|
+
<black-list-detail v-ref:update :data="row"></black-list-detail>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="auto">
|
|
21
|
+
<upload :blodid="blodid" cols="col-sm-12" isremark="true" fusetype="限购"></upload>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
<script>
|
|
27
|
+
export default {
|
|
28
|
+
title: '限购管理',
|
|
29
|
+
data () {
|
|
30
|
+
return {
|
|
31
|
+
style: 'col-sm-2 form-group',
|
|
32
|
+
row: null,
|
|
33
|
+
blodid: '',
|
|
34
|
+
parentData: '',
|
|
35
|
+
isdetail: false
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
methods: {
|
|
39
|
+
selected (obj) {
|
|
40
|
+
if (obj.val) {
|
|
41
|
+
this.style = 'col-sm-3 form-group'
|
|
42
|
+
this.row = obj.val
|
|
43
|
+
this.blodid = this.row.f_userinfo_id
|
|
44
|
+
this.isdetail = true
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
ready () {
|
|
49
|
+
console.log(this.isdetail, '=============')
|
|
50
|
+
},
|
|
51
|
+
events: {
|
|
52
|
+
'success' (name, row, res) {
|
|
53
|
+
// this.style='col-sm-2'
|
|
54
|
+
this.row = null
|
|
55
|
+
this.blodid = ''
|
|
56
|
+
this.isdetail = false
|
|
57
|
+
this.$refs.list.search()
|
|
58
|
+
},
|
|
59
|
+
'error' (name, row, res) {
|
|
60
|
+
this.row = null
|
|
61
|
+
this.blodid = ''
|
|
62
|
+
this.isdetail = false
|
|
63
|
+
this.$refs.list.search()
|
|
64
|
+
},
|
|
65
|
+
'close' (res) {
|
|
66
|
+
this.style = 'col-sm-2 form-group'
|
|
67
|
+
this.row = null
|
|
68
|
+
this.blodid = ''
|
|
69
|
+
this.isdetail = false
|
|
70
|
+
},
|
|
71
|
+
'search' () {
|
|
72
|
+
this.style = 'col-sm-2 form-group'
|
|
73
|
+
this.row = null
|
|
74
|
+
this.blodid = ''
|
|
75
|
+
this.isdetail = false
|
|
76
|
+
// this.$refs.list.search()
|
|
77
|
+
},
|
|
78
|
+
'add' () {
|
|
79
|
+
this.style = 'col-sm-3 form-group'
|
|
80
|
+
this.isdetail = true
|
|
81
|
+
this.blodid = ''
|
|
82
|
+
this.$refs.list.$refs.paged.$refs.grid.selectStore.selected = null
|
|
83
|
+
this.row = null
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
watch: {
|
|
87
|
+
'isdetail' (val) {
|
|
88
|
+
console.log(val, '===================')
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
</script>
|
|
93
|
+
<style>
|
|
94
|
+
.datapanel {
|
|
95
|
+
color: #333;
|
|
96
|
+
background-color: white;
|
|
97
|
+
box-shadow: darkgrey 0.5px 0.5px 0.5px 0.5px ;
|
|
98
|
+
padding: 10px 10px 5px 10px;
|
|
99
|
+
border-radius:10px;
|
|
100
|
+
}
|
|
101
|
+
</style>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="flex-full" style="height: 40%">
|
|
3
|
+
<data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid >
|
|
4
|
+
<template partial='head'>
|
|
5
|
+
<tr>
|
|
6
|
+
<th style="text-align: center;">序号</th>
|
|
7
|
+
<th style="text-align: center;">操作类型</th>
|
|
8
|
+
<th style="text-align: center;">操作时间</th>
|
|
9
|
+
<th style="text-align: center;">操作人</th>
|
|
10
|
+
<th style="text-align: center;">原因</th>
|
|
11
|
+
</tr>
|
|
12
|
+
</template>
|
|
13
|
+
<template partial='body'>
|
|
14
|
+
<tr>
|
|
15
|
+
<td style="text-align: center;">{{$index+1}}</td>
|
|
16
|
+
<td style="text-align: center;">{{row.f_operat_type}}</td>
|
|
17
|
+
<td style="text-align: center;">{{row.f_operate_date}}</td>
|
|
18
|
+
<td style="text-align: center;">{{row.f_operator}}</td>
|
|
19
|
+
<td style="text-align: center;">{{row.f_comments}}</td>
|
|
20
|
+
</tr>
|
|
21
|
+
</template>
|
|
22
|
+
<template partial='foot'></template>
|
|
23
|
+
</data-grid>
|
|
24
|
+
</div>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script>
|
|
28
|
+
import {HttpResetClass} from 'vue-client'
|
|
29
|
+
|
|
30
|
+
let initGen = async function (self, val) {
|
|
31
|
+
let http = new HttpResetClass()
|
|
32
|
+
console.log(self.$login.f, '================')
|
|
33
|
+
let res = await http.load('POST', 'rs/sql/sale_getBlackListRecord', {data: {condition: `f_userinfo_id=${self.data.f_userinfo_id} and f_orgid = ${self.$login.f.orgid}` }}, {resolveMsg: null, rejectMsg: null})
|
|
34
|
+
self.model = Object.assign({}, self.model, val)
|
|
35
|
+
self.model.rows = res.data
|
|
36
|
+
}
|
|
37
|
+
export default {
|
|
38
|
+
props: ['data'],
|
|
39
|
+
data () {
|
|
40
|
+
return {
|
|
41
|
+
model: {
|
|
42
|
+
rows: []
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
watch: {
|
|
47
|
+
'data' (val) {
|
|
48
|
+
if (val) {
|
|
49
|
+
initGen(this, val)
|
|
50
|
+
}
|
|
51
|
+
}},
|
|
52
|
+
|
|
53
|
+
ready () {
|
|
54
|
+
initGen(this, this.data)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
}
|
|
58
|
+
</script>
|
|
59
|
+
<style>
|
|
60
|
+
|
|
61
|
+
</style>
|
|
62
|
+
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="auto">
|
|
3
|
+
<modal :show.sync="blackshow" v-ref:modal large backdrop="false">
|
|
4
|
+
<header slot="modal-header" class="modal-header">
|
|
5
|
+
<h4 class="modal-title">用户拉黑</h4>
|
|
6
|
+
</header>
|
|
7
|
+
<article slot="modal-body" class="modal-body">
|
|
8
|
+
<validator name='v'>
|
|
9
|
+
<form novalidate class="form-horizontal select-overspread ">
|
|
10
|
+
<div>
|
|
11
|
+
<div class="row">
|
|
12
|
+
<div class="col-sm-4 form-group" id="f_meternumber">
|
|
13
|
+
<label for="f_userinfo_code" class="font_normal_body">表  号</label>
|
|
14
|
+
<input class="input_search" style="width:60%" type="text"
|
|
15
|
+
v-model="model.f_meternumber" readonly>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="col-sm-4 form-group" id="f_card_id">
|
|
18
|
+
<label for="f_userinfo_code" class="font_normal_body">卡  号</label>
|
|
19
|
+
<input class="input_search" style="width:60%" type="text"
|
|
20
|
+
v-model="model.f_card_id" readonly>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="col-sm-4 form-group" id="f_userinfo_code">
|
|
23
|
+
<label for="f_userinfo_code" class="font_normal_body">用户编号</label>
|
|
24
|
+
<input class="input_search" style="width:60%" type="text" class="input_search" style="width:60%"
|
|
25
|
+
v-model="model.f_userinfo_code" readonly>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="col-sm-4 form-group" id="name">
|
|
28
|
+
<label for="f_user_name" class=" font_normal_body">用户姓名</label>
|
|
29
|
+
<input class="input_search" style="width:60%" type="text" class="input_search" style="width:60%"
|
|
30
|
+
v-model="model.f_user_name" readonly
|
|
31
|
+
placeholder="用户姓名">
|
|
32
|
+
</div>
|
|
33
|
+
<div class="col-sm-4 form-group" id="phone">
|
|
34
|
+
<label for="f_user_phone" class=" font_normal_body">联系方式</label>
|
|
35
|
+
<input class="input_search" style="width:60%" type="text" class="input_search" style="width:60%"
|
|
36
|
+
v-model="model.f_user_phone" readonly
|
|
37
|
+
placeholder="联系方式">
|
|
38
|
+
</div>
|
|
39
|
+
<div class="col-sm-4 form-group" id="f_limit_times"
|
|
40
|
+
:class="[$v.f_limit_times.required ? 'has-error' : 'has-success']">
|
|
41
|
+
<label class="font_normal_body">限购次数</label>
|
|
42
|
+
<input class="input_search" style="width:60%" type="number"
|
|
43
|
+
v-model="model.f_limit_times" v-validate:f_limit_times='{required: true }'
|
|
44
|
+
placeholder="限购次数">
|
|
45
|
+
</div>
|
|
46
|
+
<div class="col-sm-2 form-group" id="f_limit">
|
|
47
|
+
<v-select
|
|
48
|
+
width="82%"
|
|
49
|
+
v-model="f_limit"
|
|
50
|
+
:value.sync="f_limit"
|
|
51
|
+
:options='limites'
|
|
52
|
+
close-on-select>
|
|
53
|
+
</v-select>
|
|
54
|
+
</div>
|
|
55
|
+
<div class="col-sm-3 form-group" id="f_limit_gas" style="right: 3%;">
|
|
56
|
+
<input class="input_search" style="width:60%" type="number" v-if="f_limit=='限购气量'"
|
|
57
|
+
v-model="model.f_limit_value"
|
|
58
|
+
v-scale="[model.f_limit_value, 2]"
|
|
59
|
+
@click="gg()"
|
|
60
|
+
placeholder="限购气量">
|
|
61
|
+
<input class="input_search" type="number" v-if="f_limit=='限购金额'"
|
|
62
|
+
v-model="model.f_limit_amount"
|
|
63
|
+
v-scale="[model.f_limit_amount, 2]"
|
|
64
|
+
@click="gg()"
|
|
65
|
+
placeholder="限购金额">
|
|
66
|
+
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="row">
|
|
70
|
+
<div class="col-sm-12 form-group" id="address">
|
|
71
|
+
<label for="f_address" class=" font_normal_body">地  址</label>
|
|
72
|
+
<input class="input_search" type="text" class="input_search" style="width:87%"
|
|
73
|
+
v-model="model.f_address"
|
|
74
|
+
readonly
|
|
75
|
+
placeholder="地址">
|
|
76
|
+
</div>
|
|
77
|
+
<div class="col-sm-12 form-group" id="f_comments"
|
|
78
|
+
:class="[$v.f_comments.required ? 'has-error' : 'has-success']">
|
|
79
|
+
<label for="f_comments" class=" font_normal_body">原  因</label>
|
|
80
|
+
<input class="input_search" type="text" class="input_search" style="width:87%"
|
|
81
|
+
v-model="model.f_comments"
|
|
82
|
+
placeholder="原因" v-validate:f_comments='{required: true }'>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</form>
|
|
87
|
+
</validator>
|
|
88
|
+
</article>
|
|
89
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
90
|
+
<div style="text-align:right;height:auto;margin-top:6px;">
|
|
91
|
+
<button class="button_search" type="button" style="width:80px;" @click="confirm('拉黑')" :disabled='!$v.valid'>
|
|
92
|
+
拉黑
|
|
93
|
+
</button>
|
|
94
|
+
<button class="button_search" type="button" style="width:80px;" @click="close()">
|
|
95
|
+
取消
|
|
96
|
+
</button>
|
|
97
|
+
</div>
|
|
98
|
+
</footer>
|
|
99
|
+
</modal>
|
|
100
|
+
</div>
|
|
101
|
+
</template>
|
|
102
|
+
<script>
|
|
103
|
+
export default {
|
|
104
|
+
title: '黑名单',
|
|
105
|
+
props: {
|
|
106
|
+
data: {
|
|
107
|
+
type: Object
|
|
108
|
+
},
|
|
109
|
+
blackshow: {
|
|
110
|
+
type: Boolean
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
data () {
|
|
114
|
+
return {
|
|
115
|
+
model: {
|
|
116
|
+
f_userinfo_code: '',
|
|
117
|
+
f_userinfo_id: '',
|
|
118
|
+
f_user_name: '',
|
|
119
|
+
f_address: '',
|
|
120
|
+
f_user_phone: '',
|
|
121
|
+
f_comments: '',
|
|
122
|
+
version: null,
|
|
123
|
+
// 限购次数
|
|
124
|
+
f_limit_times: '',
|
|
125
|
+
// 限购气量
|
|
126
|
+
f_limit_value: '',
|
|
127
|
+
// 限购金额
|
|
128
|
+
f_limit_amount: ''
|
|
129
|
+
|
|
130
|
+
},
|
|
131
|
+
f_limit: '限购气量',
|
|
132
|
+
limites: [{label: '限购气量', value: '限购气量'}, {label: '限购金额', value: '限购金额'}]
|
|
133
|
+
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
ready () {
|
|
137
|
+
this.initModel()
|
|
138
|
+
},
|
|
139
|
+
watch: {
|
|
140
|
+
'data' () {
|
|
141
|
+
this.initModel()
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
methods: {
|
|
145
|
+
gg () {
|
|
146
|
+
if (this.f_limit[0] === '限购气量') {
|
|
147
|
+
this.model.f_limit_amount = ''
|
|
148
|
+
} else {
|
|
149
|
+
this.model.f_limit_value = ''
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
async confirm (type) {
|
|
153
|
+
let data = {
|
|
154
|
+
f_operat_type: type,
|
|
155
|
+
f_state: '有效',
|
|
156
|
+
f_user_id: this.model.f_user_id,
|
|
157
|
+
f_user_name: this.model.f_user_name,
|
|
158
|
+
f_comments: this.model.f_comments,
|
|
159
|
+
f_operator: this.$login.f.name,
|
|
160
|
+
f_operatorid: this.$login.f.id,
|
|
161
|
+
f_orgid: this.$login.f.orgid,
|
|
162
|
+
f_orgname: this.$login.f.orgs,
|
|
163
|
+
f_depid: this.$login.f.depids,
|
|
164
|
+
f_depname: this.$login.f.deps,
|
|
165
|
+
f_operate_date: this.$login.toStandardTimeString(),
|
|
166
|
+
f_describe: `${this.$login.f.name}对客户${this.model.f_user_name}进行${type}`,
|
|
167
|
+
f_userinfo_id: {
|
|
168
|
+
f_userinfo_id: this.model.f_userinfo_id,
|
|
169
|
+
f_user_state: '正常',
|
|
170
|
+
version: this.model.version
|
|
171
|
+
},
|
|
172
|
+
f_limit_times: this.model.f_limit_times,
|
|
173
|
+
f_limit_amount: this.model.f_limit_amount,
|
|
174
|
+
f_limit_value: this.model.f_limit_value
|
|
175
|
+
}
|
|
176
|
+
console.log('查看参数data', data)
|
|
177
|
+
await this.$resetpost('rs/logic/backlistOperate', data, {resolveMsg: `${type}成功`, rejectMsg: `${type}失败,请重试`})
|
|
178
|
+
this.$dispatch('blackclose')
|
|
179
|
+
},
|
|
180
|
+
initModel () {
|
|
181
|
+
if (this.data) {
|
|
182
|
+
console.log(this.data)
|
|
183
|
+
this.model = {
|
|
184
|
+
f_userinfo_code: this.data.f_userinfo_code,
|
|
185
|
+
f_userinfo_id: this.data.f_userinfo_id,
|
|
186
|
+
f_meternumber: this.data.f_meternumber,
|
|
187
|
+
f_card_id: this.data.f_card_id,
|
|
188
|
+
f_user_name: this.data.f_user_name,
|
|
189
|
+
f_address: this.data.f_address,
|
|
190
|
+
f_user_phone: this.data.f_user_phone,
|
|
191
|
+
f_comments: '',
|
|
192
|
+
version: this.data.userinfo_version,
|
|
193
|
+
isblacklist: 'false'
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
close () {
|
|
198
|
+
this.$dispatch('blackclose')
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
</script>
|
|
203
|
+
<style lang="less">
|
|
204
|
+
#gas-price-form {
|
|
205
|
+
.form-group {
|
|
206
|
+
margin-left: 0px;
|
|
207
|
+
margin-right: 0px;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
</style>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<!-- <div v-if="listpage">-->
|
|
3
|
+
<tab-button v-ref:list :active="-1">
|
|
4
|
+
<tabs header="低保户管理" v-if="permission('低保户管理')">
|
|
5
|
+
<basic-living-manage @deal-msg="dealMsg" ></basic-living-manage>
|
|
6
|
+
</tabs>
|
|
7
|
+
<tabs header="到访不遇管理" v-if="permission('黑名单管理')">
|
|
8
|
+
<black-list-mangae @deal-msg="dealMsg"></black-list-mangae>
|
|
9
|
+
</tabs>
|
|
10
|
+
</tab-button>
|
|
11
|
+
<!-- </div>-->
|
|
12
|
+
<!-- <div v-if="!listpage">-->
|
|
13
|
+
<!-- <meter-info-manage :row="rowData" :f_start_date="f_start_date" :f_end_date="f_end_date"></meter-info-manage>-->
|
|
14
|
+
<!-- </div>-->
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script>
|
|
18
|
+
import TabButton from '../../../components/revenue/comprehen/SpecialUser/common/TabButton'
|
|
19
|
+
import Tabs from '../../../components/revenue/comprehen/SpecialUser/common/Tabs'
|
|
20
|
+
|
|
21
|
+
export default {
|
|
22
|
+
name: 'SpecialUserManage',
|
|
23
|
+
title: '特殊用户管理',
|
|
24
|
+
data () {
|
|
25
|
+
return {// 页面开关
|
|
26
|
+
f_start_date: '',
|
|
27
|
+
f_end_date: '',
|
|
28
|
+
listpage: true,
|
|
29
|
+
width: {
|
|
30
|
+
left: '100%',
|
|
31
|
+
right: '0%'
|
|
32
|
+
},
|
|
33
|
+
// searchNumber:'',
|
|
34
|
+
rowData: {},
|
|
35
|
+
show: [true]
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
components: {Tabs, TabButton},
|
|
39
|
+
ready () {
|
|
40
|
+
console.log(this.$refs.list)
|
|
41
|
+
console.log('业务查询')
|
|
42
|
+
},
|
|
43
|
+
methods: {
|
|
44
|
+
permission (name) {
|
|
45
|
+
if (!this.$login.r.find(value => value == name)) {
|
|
46
|
+
return false
|
|
47
|
+
}
|
|
48
|
+
return true
|
|
49
|
+
},
|
|
50
|
+
cancel (obj) {
|
|
51
|
+
this.listpage = true
|
|
52
|
+
},
|
|
53
|
+
dealMsg (obj) {
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
</script>
|
|
58
|
+
|
|
59
|
+
<style scoped>
|
|
60
|
+
|
|
61
|
+
</style>
|
package/src/filiale/wuan/sale.js
CHANGED
|
@@ -12,4 +12,12 @@ export default function () {
|
|
|
12
12
|
Vue.component('user-meterinfodetail', (resolve) => { require(['./meterinfodetail'], resolve) })
|
|
13
13
|
// 过户
|
|
14
14
|
Vue.component('transfer-manage', (resolve) => { require(['./TransferManage'], resolve) })
|
|
15
|
+
// 黑名单
|
|
16
|
+
Vue.component('special-user-manage', (resolve) => { require(['./BlackList/SpecialUserManage'], resolve) })
|
|
17
|
+
Vue.component('black-list-mangae', (resolve) => { require(['./BlackList/BlackListManage'], resolve) })
|
|
18
|
+
Vue.component('black-modal', (resolve) => { require(['./BlackList/BlackModal'], resolve) })
|
|
19
|
+
Vue.component('black-list-list', (resolve) => { require(['./BlackList/BlackListList'], resolve) })
|
|
20
|
+
Vue.component('black-list', (resolve) => { require(['./BlackList/BlackList'], resolve) })
|
|
21
|
+
Vue.component('black-list-record', (resolve) => { require(['./BlackList/BlackListRecord'], resolve) })
|
|
22
|
+
Vue.component('black-list-detail', (resolve) => { require(['./BlackList/BlackListDetail'], resolve) })
|
|
15
23
|
}
|