sale-client 3.6.349 → 3.6.351
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/common/userinfo_detail/UserInfoDetailManageNew.vue +6 -1
- package/src/components/common/userinfo_detail/ic_detail/UserKeyRecord.vue +152 -0
- package/src/components/common/userinfo_detail/ic_detail/insertKeyUser.vue +358 -0
- package/src/components/revenue/comprehen/SpecialUser/BlackList/BlackListRecord.vue +25 -5
- package/src/components/webMeter/WebMeterExceptionHandle.vue +277 -0
- package/src/components/webMeter/WebMeterExceptionList.vue +352 -0
- package/src/components/webMeter/WebMeterExceptionManage.vue +93 -0
- package/src/filiale/qianneng/OtherChargeNew.vue +3 -3
- package/src/filiale/qianneng/eticket/EticketManage.vue +60 -0
- package/src/filiale/qianneng/eticket/EticketOpenCard.vue +337 -0
- package/src/filiale/qianneng/eticket/EticketOpenJBPage.vue +331 -0
- package/src/filiale/qianneng/eticket/EticketOpenPage.vue +336 -0
- package/src/filiale/qianneng/eticket/EticketPrint.vue +2 -2
- package/src/filiale/qianneng/eticket/EticketRecordList.vue +1 -1
- package/src/filiale/qianneng/machine/CardMeterCenter.vue +980 -0
- package/src/filiale/qianneng/machine/IOTMeterCenter.vue +871 -0
- package/src/filiale/qianneng/machine/MachineMeterCenter.vue +4 -7
- package/src/filiale/qianneng/sale.js +12 -0
- package/src/filiale/rongchuang/CardMeterCenter.vue +2 -1
- package/src/filiale/rongchuang/EticketPrint.vue +8 -7
- package/src/filiale/rongchuang/IOTMeterCenter.vue +2 -1
- package/src/filiale/rongchuang/ShowCardSellGas.vue +2 -2
- package/src/filiale/rongchuang/bill/CustQueryEticket.vue +1 -1
- package/src/filiale/rongchuang/bill/EticketRecordList.vue +6 -2
- package/src/filiale/yangchun/BlackList/BlackList.vue +99 -19
- package/src/filiale/yangchun/BlackList/BlackRecordQuery.vue +56 -5
- package/src/filiale/yangchun/EticketV4/CustQueryEticket.vue +0 -3
- package/src/filiale/yangchun/EticketV4/EticketOpenCard.vue +0 -3
- package/src/filiale/yangchun/EticketV4/EticketOpenJBPage.vue +0 -3
- package/src/filiale/yangchun/EticketV4/EticketOpenPage.vue +0 -3
- package/src/filiale/yangchun/FilesManage/UserGeneralInfoTest.vue +8 -1
- package/src/sale.js +7 -0
package/package.json
CHANGED
|
@@ -91,6 +91,9 @@
|
|
|
91
91
|
<saletab header="合同查看" v-if="permission('合同查看')">
|
|
92
92
|
<contract-signing-list :row="row" v-if="show == '合同查看'" @deal-msg="dealMsg"></contract-signing-list>
|
|
93
93
|
</saletab>
|
|
94
|
+
<saletab header="用户重点记录" >
|
|
95
|
+
<user-key-record :row="row" @deal-msg="dealMsg"></user-key-record>
|
|
96
|
+
</saletab>
|
|
94
97
|
</saletabbut>
|
|
95
98
|
</div>
|
|
96
99
|
</div>
|
|
@@ -116,6 +119,7 @@
|
|
|
116
119
|
import WebHandQueryUser from './ic_detail/WebHandQueryUser'
|
|
117
120
|
import UserDeviceQuery from './ic_detail/UserDeviceQuery'
|
|
118
121
|
import contractSigningList from './ic_detail/contractSigningList'
|
|
122
|
+
import UserKeyRecord from './ic_detail/UserKeyRecord'
|
|
119
123
|
|
|
120
124
|
// 导入物联网相关查询
|
|
121
125
|
import QueryInstruct from './iot_detail/QueryInstruct'
|
|
@@ -157,7 +161,8 @@ export default {
|
|
|
157
161
|
DeveiceRecord,
|
|
158
162
|
MachineRecordQuery,
|
|
159
163
|
UserDeviceQuery,
|
|
160
|
-
contractSigningList
|
|
164
|
+
contractSigningList,
|
|
165
|
+
UserKeyRecord
|
|
161
166
|
},
|
|
162
167
|
data () {
|
|
163
168
|
return {
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="flex" style="justify-content: space-between;" v-if="!openInsertKeyUser" >
|
|
3
|
+
<div @keyup.enter="search">
|
|
4
|
+
<criteria-paged :model="model" v-ref:paged>
|
|
5
|
+
<criteria @condition-changed='$parent.search' partial='criteria' v-ref:criteria>
|
|
6
|
+
<div class="form-horizontal select-overspread container-fluid auto" novalidate partial>
|
|
7
|
+
<div class="row" width="100%">
|
|
8
|
+
<div class="col-sm-2 form-group">
|
|
9
|
+
<label class="font_normal_body">开始时间</label>
|
|
10
|
+
<datepicker :format="'yyyy-MM-dd'" :value.sync="model.f_start_date"
|
|
11
|
+
class="datepicker"
|
|
12
|
+
condition="f_parameter_value >= '{} 00:00:00' "
|
|
13
|
+
placeholder="起始时间"
|
|
14
|
+
style="width:60%"
|
|
15
|
+
v-model="model.f_start_date"
|
|
16
|
+
></datepicker>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="col-sm-2 form-group" >
|
|
19
|
+
<label class="font_normal_body" >结束时间</label>
|
|
20
|
+
<datepicker :format="'yyyy-MM-dd'" :value.sync="model.f_end_date"
|
|
21
|
+
class="datepicker"
|
|
22
|
+
condition="f_parameter_value <= '{} 23:59:59' "
|
|
23
|
+
placeholder="结束时间"
|
|
24
|
+
style="width:60%"
|
|
25
|
+
v-model="model.f_end_date"
|
|
26
|
+
></datepicker>
|
|
27
|
+
</div>
|
|
28
|
+
<div style="float: right">
|
|
29
|
+
<button @click="search()" class="button_search" style="margin-right: 10px" v-el:cba>查询</button>
|
|
30
|
+
<button class="btn btn-success" @click="$parent.$parent.clear()" v-el:cx>清空</button>
|
|
31
|
+
<button @click.stop="$parent.$parent.insertKeyUser()" class="button_search" style="margin-right: 10px" v-el:cba>添加重点用户</button>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</criteria>
|
|
36
|
+
<data-grid :model="model" class="list_area table_sy" partial='list' v-ref:grid>
|
|
37
|
+
<template partial='head'>
|
|
38
|
+
<tr>
|
|
39
|
+
<th><nobr>序号</nobr></th>
|
|
40
|
+
<th><nobr>用户编号</nobr></th>
|
|
41
|
+
<th><nobr>用户姓名</nobr></th>
|
|
42
|
+
<th><nobr>用户地址</nobr></th>
|
|
43
|
+
<th><nobr>电话</nobr></th>
|
|
44
|
+
<th><nobr>表号</nobr></th>
|
|
45
|
+
<th><nobr>卡号</nobr></th>
|
|
46
|
+
<th><nobr>移入原因</nobr></th>
|
|
47
|
+
<th><nobr>管控级别</nobr></th>
|
|
48
|
+
<th><nobr>限制功能</nobr></th>
|
|
49
|
+
<th><nobr>备注</nobr></th>
|
|
50
|
+
<th><nobr>审核状态</nobr></th>
|
|
51
|
+
<th><nobr>操作状态</nobr></th>
|
|
52
|
+
<th><nobr>操作时间</nobr></th>
|
|
53
|
+
<th><nobr>操作人</nobr></th>
|
|
54
|
+
</tr>
|
|
55
|
+
</template>
|
|
56
|
+
<template partial='body' partial='list' v-ref:grid>
|
|
57
|
+
<tr v-for="(row, index) in model.items" :key="index">
|
|
58
|
+
<td style="text-align:center">{{$index+1}}</td>
|
|
59
|
+
<td style="text-align:center">{{row.f_userinfo_code}}</td>
|
|
60
|
+
<td style="text-align:center">{{row.f_user_name}}</td>
|
|
61
|
+
<td style="text-align:center">{{row.f_address}}</td>
|
|
62
|
+
<td style="text-align:center">{{row.f_user_phone}}</td>
|
|
63
|
+
<td style="text-align:center">{{row.f_meternumber}}</td>
|
|
64
|
+
<td style="text-align:center">{{row.f_card_id}}</td>
|
|
65
|
+
<td style="text-align:center">{{row.f_comments}}</td>
|
|
66
|
+
<td style="text-align:center">{{row.f_level}}</td>
|
|
67
|
+
<td style="text-align:center">{{$parent.$parent.$parent.formatFunction(row.f_function)}}</td>
|
|
68
|
+
<td style="text-align:center">{{row.f_remark}}</td>
|
|
69
|
+
<td style="text-align:center">{{row.f_state}}</td>
|
|
70
|
+
<td style="text-align:center">{{row.f_opr_state}}</td>
|
|
71
|
+
<td style="text-align:center">{{row.f_operate_date}}</td>
|
|
72
|
+
<td style="text-align:center">{{row.f_operator}}</td>
|
|
73
|
+
<td style="text-align:center;display:none;" >{{row.f_userinfo_id}}
|
|
74
|
+
</td>
|
|
75
|
+
</tr>
|
|
76
|
+
</template>
|
|
77
|
+
</data-grid>
|
|
78
|
+
</criteria-paged>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
<insert-key-user v-if="openInsertKeyUser"
|
|
82
|
+
:f_userinfo_id="selectedUserId"
|
|
83
|
+
@cancel="handleCancel"
|
|
84
|
+
:userOperationState="userOperationState"
|
|
85
|
+
@updateUserOperationState="updateUserOperationState"
|
|
86
|
+
></insert-key-user>
|
|
87
|
+
|
|
88
|
+
</template>
|
|
89
|
+
<script>
|
|
90
|
+
import {PagedList} from "vue-client"
|
|
91
|
+
import insertKeyUser from './insertKeyUser.vue'
|
|
92
|
+
export default {
|
|
93
|
+
title: '用户重点记录',
|
|
94
|
+
components: {
|
|
95
|
+
insertKeyUser
|
|
96
|
+
},
|
|
97
|
+
data () {
|
|
98
|
+
return {
|
|
99
|
+
userOperationState: '',
|
|
100
|
+
selectedUserId: null,
|
|
101
|
+
openInsertKeyUser: false,
|
|
102
|
+
condition: '1=1',
|
|
103
|
+
model: new PagedList('/rs/sql/sale_blackRecordQuery', 20),
|
|
104
|
+
searchValue: this.$appdata.getSingleValue('综合条件查询') ? this.$appdata.getSingleValue('综合条件查询') : 'f_userfiles_id',
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
props: ['row'],
|
|
108
|
+
methods: {
|
|
109
|
+
formatFunction(functionString) {
|
|
110
|
+
if (!functionString) return ''
|
|
111
|
+
try {
|
|
112
|
+
// 解析 JSON 字符串为数组
|
|
113
|
+
let functionArray = JSON.parse(functionString)
|
|
114
|
+
// 将数组转换为用逗号分隔的字符串
|
|
115
|
+
return functionArray.join(', ')
|
|
116
|
+
} catch (e) {
|
|
117
|
+
// 如果解析失败,返回原始字符串
|
|
118
|
+
return functionString
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
handleCancel() {
|
|
122
|
+
this.openInsertKeyUser = false
|
|
123
|
+
},
|
|
124
|
+
clear () {
|
|
125
|
+
Object.keys(this.$refs.paged.$refs.criteria.model).forEach((key) => {
|
|
126
|
+
this.$refs.paged.$refs.criteria.model[key] = []
|
|
127
|
+
})
|
|
128
|
+
},
|
|
129
|
+
async search () {
|
|
130
|
+
this.condition = `${this.$refs.paged.$refs.criteria.condition} and ${this.searchValue} = '${this.row[this.searchValue]}'`
|
|
131
|
+
this.model.search(this.condition, this.model)
|
|
132
|
+
},
|
|
133
|
+
insertKeyUser () {
|
|
134
|
+
this.openInsertKeyUser = true
|
|
135
|
+
this.selectedUserId = this.row.f_userinfo_id
|
|
136
|
+
console.log('看看传进来没',this.selectedUserId)
|
|
137
|
+
},
|
|
138
|
+
updateUserOperationState(state) {
|
|
139
|
+
this.userOperationState = state;
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
ready () {
|
|
143
|
+
this.$refs.paged.$refs.criteria.search()
|
|
144
|
+
},
|
|
145
|
+
computed: {
|
|
146
|
+
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
}
|
|
150
|
+
</script>
|
|
151
|
+
<style scoped>
|
|
152
|
+
</style>
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="auto">
|
|
3
|
+
<validator name="v">
|
|
4
|
+
<form class="form-horizontal" novalidate>
|
|
5
|
+
<div class="row" style="margin-top:15px;">
|
|
6
|
+
<div class="col-sm-3 form-group" :class="[$v.f_opr_state.required ? 'has-error' : '']">
|
|
7
|
+
<label class="font_normal_body col-sm-3">操作状态</label>
|
|
8
|
+
<input type="text" v-show="false" v-model="KeyModel.f_opr_state" v-validate:f_opr_state='{required: true }'>
|
|
9
|
+
<v-select width="60%"
|
|
10
|
+
v-model="KeyModel.f_opr_state"
|
|
11
|
+
:value.sync="KeyModel.f_opr_state"
|
|
12
|
+
:options="fstate"
|
|
13
|
+
:value-single="true"
|
|
14
|
+
close-on-select></v-select>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="col-sm-3 form-group" v-if="KeyModel.f_opr_state == '移入'">
|
|
17
|
+
<label class="font_normal_body col-sm-3">移入原因</label>
|
|
18
|
+
<input type="text" v-model="KeyModel.f_comments" class="input_search" placeholder="请输入移入原因" >
|
|
19
|
+
</div>
|
|
20
|
+
<div class="col-sm-3 form-group" v-if="KeyModel.f_opr_state == '移出'">
|
|
21
|
+
<label class="font_normal_body col-sm-3">移出原因</label>
|
|
22
|
+
<input type="text" v-model="KeyModel.f_comments" class="input_search" placeholder="请输入移入原因" >
|
|
23
|
+
</div>
|
|
24
|
+
<div v-if="KeyModel.f_opr_state == '移入'">
|
|
25
|
+
<div class="col-sm-3 form-group" :class="[$v.f_level.required ? 'has-error' : '']">
|
|
26
|
+
<label class="font_normal_body col-sm-3">管控级别</label>
|
|
27
|
+
<input type="text" v-show="false" v-model="KeyModel.f_level" v-validate:f_level='{required: true }'>
|
|
28
|
+
<v-select width="60%"
|
|
29
|
+
v-model="KeyModel.f_level"
|
|
30
|
+
:value.sync="KeyModel.f_level"
|
|
31
|
+
:options="flevel"
|
|
32
|
+
:value-single="true"
|
|
33
|
+
close-on-select></v-select>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="col-sm-3 form-group" :class="[$v.f_function.required ? 'has-error' : '']">
|
|
36
|
+
<label class="font_normal_body col-sm-3">限制功能</label>
|
|
37
|
+
<input type="text" v-show="false" v-model="KeyModel.f_function" v-validate:f_function='{required: true }'>
|
|
38
|
+
<v-select width="60%"
|
|
39
|
+
v-model="KeyModel.f_function"
|
|
40
|
+
:options="fFunction"
|
|
41
|
+
:multiple=true
|
|
42
|
+
:value.sync="KeyModel.f_function"
|
|
43
|
+
close-on-select></v-select>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<div v-if="KeyModel.f_opr_state === '移出'">
|
|
47
|
+
<div class="col-sm-3 form-group">
|
|
48
|
+
<label class="font_normal_body col-sm-3">取消限购</label>
|
|
49
|
+
<input type="text" v-show="false" v-model="KeyModel.noLimitGas" >
|
|
50
|
+
<v-select width="60%"
|
|
51
|
+
v-model="KeyModel.noLimitGas"
|
|
52
|
+
:options="nolimitGas"
|
|
53
|
+
:value-single="true"
|
|
54
|
+
close-on-select></v-select>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
<div class="row">
|
|
59
|
+
<div class="col-sm-3 form-group">
|
|
60
|
+
<label class="font_normal_body col-sm-3">备  注</label>
|
|
61
|
+
<input type="text" class="input_search" v-model="KeyModel.f_remark" placeholder="备注" style="vertical-align:middle;width: 70%">
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
</form>
|
|
65
|
+
</validator>
|
|
66
|
+
</div>
|
|
67
|
+
<div class="auto" v-if="KeyModel.f_opr_state === '移入'">
|
|
68
|
+
<div style="color: #0d8ddb; font-size: 25px; margin-top: 15px; margin-bottom: 10px; margin-left: 25px">限购配置</div>
|
|
69
|
+
<validator name='v'>
|
|
70
|
+
<form novalidate class="form-horizontal">
|
|
71
|
+
|
|
72
|
+
<div class="row">
|
|
73
|
+
<div class="col-sm-3 form-group" :class="[$v.f_third_pay.required ? 'has-error' : '']">
|
|
74
|
+
<label class="font_normal_body col-sm-3" >第三方缴费</label>
|
|
75
|
+
<input type="text" v-show="false" v-model="$refs.f_third_pay.selectedItems"
|
|
76
|
+
v-validate:f_third_pay='{required: true }'>
|
|
77
|
+
<v-select width="60%"
|
|
78
|
+
:value.sync="model.f_third_pay"
|
|
79
|
+
v-model="model.f_third_pay"
|
|
80
|
+
:options='thirdPays'
|
|
81
|
+
:value-single="true" v-ref:f_third_pay
|
|
82
|
+
close-on-select></v-select>
|
|
83
|
+
</div>
|
|
84
|
+
<div class="col-sm-3 form-group" :class="[$v.f_limit_style.required ? 'has-error' : '']">
|
|
85
|
+
<label class="font_normal_body col-sm-3" >限制类型</label>
|
|
86
|
+
<input type="text" v-show="false" v-model="$refs.f_limit_style.selectedItems"
|
|
87
|
+
v-validate:f_limit_style='{required: true }'>
|
|
88
|
+
<v-select width="60%"
|
|
89
|
+
:value.sync="model.f_limit_style"
|
|
90
|
+
v-model="model.f_limit_style"
|
|
91
|
+
:options='limitstyle'
|
|
92
|
+
:value-single="true" v-ref:f_limit_style
|
|
93
|
+
close-on-select></v-select>
|
|
94
|
+
</div>
|
|
95
|
+
<div class="col-sm-3 form-group" :class="[$v.f_time_type.required ? 'has-error' : '']">
|
|
96
|
+
<label class="font_normal_body col-sm-3" >周期类型</label>
|
|
97
|
+
<input type="text" v-show="false" v-model="$refs.f_time_type.selectedItems"
|
|
98
|
+
v-validate:f_time_type='{required: true }'>
|
|
99
|
+
<v-select width="60%"
|
|
100
|
+
:value.sync="model.f_time_type"
|
|
101
|
+
v-model="model.f_time_type"
|
|
102
|
+
:options='timeTypes'
|
|
103
|
+
:value-single="true" v-ref:f_time_type
|
|
104
|
+
close-on-select></v-select>
|
|
105
|
+
</div>
|
|
106
|
+
<div class="col-sm-3 form-group" :class="[$v.f_time_value.required ? 'has-error' : '']">
|
|
107
|
+
<label class="font_normal_body col-sm-3" >周期时长</label>
|
|
108
|
+
<input type="text" class="input_search" v-model="model.f_time_value" placeholder="周期时长" v-validate:f_time_value='{required: true }' style="vertical-align:middle;width: 60%">
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
|
|
112
|
+
<div class="row" style="margin-top:10px;">
|
|
113
|
+
<div class="col-sm-3 form-group" :class="[$v.f_status.required ? 'has-error' : '']">
|
|
114
|
+
<label class="font_normal_body col-sm-3" >生效状态</label>
|
|
115
|
+
<input type="text" v-show="false" v-model="$refs.f_status.selectedItems"
|
|
116
|
+
v-validate:f_status='{required: true }'>
|
|
117
|
+
<v-select width="60%"
|
|
118
|
+
:value.sync="model.f_status"
|
|
119
|
+
v-model="model.f_status"
|
|
120
|
+
:options='fstatus'
|
|
121
|
+
:value-single="true" v-ref:f_status
|
|
122
|
+
close-on-select></v-select>
|
|
123
|
+
</div>
|
|
124
|
+
<div class="col-sm-3 form-group" :class="[$v.f_limit_times.required ? 'has-error' : '']" v-if="model.f_limit_style !=='按总量'">
|
|
125
|
+
<label class="font_normal_body col-sm-3" >限制次数</label>
|
|
126
|
+
<input type="text" class="input_search" v-model="model.f_limit_times" style="vertical-align:middle;width: 60%" v-validate:f_limit_times='{required: true }' placeholder="限制次数">
|
|
127
|
+
</div>
|
|
128
|
+
<div class="col-sm-3 form-group" :class="[$v.f_limit_value.required ? 'has-error' : '']" v-if="model.f_limit_style !=='按总量' && model.f_limit_type ==='气量'">
|
|
129
|
+
<label class="font_normal_body col-sm-3" >单次限购</label>
|
|
130
|
+
<input type="text" class="input_search" v-model="model.f_limit_value" style="vertical-align:middle;width: 60%" v-validate:f_limit_value='{required: true }' placeholder="单次限购">
|
|
131
|
+
</div>
|
|
132
|
+
<div class="col-sm-3 form-group" :class="[$v.f_limit_amount.required ? 'has-error' : '']" v-if="model.f_limit_style !=='按总量' && model.f_limit_type ==='金额'">
|
|
133
|
+
<label class="font_normal_body col-sm-3" >单次限购</label>
|
|
134
|
+
<input type="text" class="input_search" v-model="model.f_limit_amount" style="vertical-align:middle;width: 60%" v-validate:f_limit_amount='{required: true }' placeholder="单次限购">
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<div class="row" style="margin-top:10px;" v-if="model.f_limit_style ==='按总量'">
|
|
139
|
+
<div class="col-sm-3 form-group" :class="[$v.f_limit_value.required ? 'has-error' : '']" v-if="model.f_limit_type ==='气量'">
|
|
140
|
+
<label class="font_normal_body col-sm-3" >总限购量</label>
|
|
141
|
+
<input type="text" class="input_search" v-model="model.f_limit_value" style="vertical-align:middle;width: 60%" v-validate:f_limit_value='{required: true }' placeholder="单次限购">
|
|
142
|
+
</div>
|
|
143
|
+
<div class="col-sm-3 form-group" :class="[$v.f_limit_amount.required ? 'has-error' : '']" v-if="model.f_limit_type ==='金额'">
|
|
144
|
+
<label class="font_normal_body col-sm-3" >总限购量</label>
|
|
145
|
+
<input type="text" class="input_search" v-model="model.f_limit_amount" style="vertical-align:middle;width: 60%" v-validate:f_limit_amount='{required: true }' placeholder="单次限购">
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
|
|
149
|
+
<div class="row" style="margin-top:10px;">
|
|
150
|
+
<div class="col-sm-3 form-group" :class="[$v.f_limit_type.required ? 'has-error' : '']">
|
|
151
|
+
<label class="font_normal_body col-sm-3" >支付限制</label>
|
|
152
|
+
<input type="text" v-show="false" v-model="$refs.f_limit_type.selectedItems"
|
|
153
|
+
v-validate:f_limit_type='{required: true }'>
|
|
154
|
+
<v-select width="60%"
|
|
155
|
+
:value.sync="model.f_limit_type"
|
|
156
|
+
v-model="model.f_limit_type"
|
|
157
|
+
:options='limitTypes'
|
|
158
|
+
:value-single="true" v-ref:f_limit_type
|
|
159
|
+
close-on-select></v-select>
|
|
160
|
+
</div>
|
|
161
|
+
<div class="col-sm-3 form-group" :class="[$v.f_parameter_value.required ? 'has-error' : '']">
|
|
162
|
+
<label class="font_normal_body col-sm-3" >执行时间</label>
|
|
163
|
+
<input type="text" v-show="false" v-model="model.f_parameter_value"
|
|
164
|
+
v-validate:f_parameter_value='{required: true }'>
|
|
165
|
+
<datepicker placeholder="执行时间" style="width:60%"
|
|
166
|
+
v-model="model.f_parameter_value"
|
|
167
|
+
:value.sync="model.f_parameter_value" v-ref:f_parameter_value
|
|
168
|
+
:format="'yyyy-MM-dd'">
|
|
169
|
+
</datepicker>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
|
|
173
|
+
</form>
|
|
174
|
+
</validator>
|
|
175
|
+
<div style="text-align: right; height: 25%">
|
|
176
|
+
<button class="button_search btn-gn" :disabled="!$v.valid" @click="confirm('移入重点用户')">确认</button>
|
|
177
|
+
<button class="button_clear btn-gn" @click="clean()">取消</button>
|
|
178
|
+
</div>
|
|
179
|
+
</div>
|
|
180
|
+
<div style="text-align: right; height: 25%" v-if="KeyModel.f_opr_state === '移出'">
|
|
181
|
+
<button class="button_search btn-gn" :disabled="!$v.valid" @click="confirm('移出重点用户')">确认</button>
|
|
182
|
+
<button class="button_clear btn-gn" @click="cancels">取消</button>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
</template>
|
|
186
|
+
<script>
|
|
187
|
+
|
|
188
|
+
import {HttpResetClass} from "vue-client";
|
|
189
|
+
|
|
190
|
+
let getLimitDataGen = async function (self) {
|
|
191
|
+
let param = {
|
|
192
|
+
tablename: 't_limit_gas'
|
|
193
|
+
}
|
|
194
|
+
if (self.f_price_id) {
|
|
195
|
+
param.condition = ` f_price_id = '${self.f_price_id}' and isnull(f_state,'') != '无效'`
|
|
196
|
+
} else if (self.f_userinfo_id) {
|
|
197
|
+
param.condition = ` f_userinfo_id = '${self.f_userinfo_id}' and isnull(f_state,'') != '无效'`
|
|
198
|
+
}
|
|
199
|
+
let http = new HttpResetClass()
|
|
200
|
+
let res = await http.load('POST', 'rs/sql/saleSingleTable', {data: param}, {resolveMsg: null, rejectMsg: '获取限购配置失败!!'})
|
|
201
|
+
console.log('获取的限购数据', res)
|
|
202
|
+
if (res.data.length > 0 ) {
|
|
203
|
+
self.model = Object.assign({}, self.model, res.data[0])
|
|
204
|
+
self.model.f_third_pay = self.model.f_third_pay + ''
|
|
205
|
+
self.limitshow = true
|
|
206
|
+
} else {
|
|
207
|
+
self.limitshow = false
|
|
208
|
+
}
|
|
209
|
+
initGen(self)
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
let initGen = async function (self) {
|
|
213
|
+
// 获取低保气价
|
|
214
|
+
let http = new HttpResetClass()
|
|
215
|
+
let res = await http.load('POST', 'rs/sql/sale_getUserAndVersion', {data: {condition: `u.f_userinfo_id='${self.f_userinfo_id}'`, f_orgid: self.$login.f.orgid}}, {
|
|
216
|
+
resolveMsg: null,
|
|
217
|
+
rejectMsg: null
|
|
218
|
+
})
|
|
219
|
+
console.log(res.data)
|
|
220
|
+
console.log('用户id:' + res.data[0].f_userinfo_id)
|
|
221
|
+
self.model.f_user_name = res.data[0].f_user_name
|
|
222
|
+
self.model.version = res.data[0].version
|
|
223
|
+
}
|
|
224
|
+
export default {
|
|
225
|
+
title: '添加重点用户',
|
|
226
|
+
name: 'insert-key-user',
|
|
227
|
+
|
|
228
|
+
data () {
|
|
229
|
+
return {
|
|
230
|
+
KeyModel: {
|
|
231
|
+
f_opr_state:'移入',
|
|
232
|
+
f_comments: '',
|
|
233
|
+
f_function: '',
|
|
234
|
+
f_level:'',
|
|
235
|
+
f_remark:''
|
|
236
|
+
},
|
|
237
|
+
model: {
|
|
238
|
+
version:'',
|
|
239
|
+
f_user_name:'',
|
|
240
|
+
f_third_pay: '0',
|
|
241
|
+
f_time_type: '按月',
|
|
242
|
+
f_limit_times: '',
|
|
243
|
+
f_time_value: '0',
|
|
244
|
+
f_limit_type: '气量',
|
|
245
|
+
f_limit_style:'',
|
|
246
|
+
f_limit_value: '',
|
|
247
|
+
f_limit_amount: '',
|
|
248
|
+
f_status:'',
|
|
249
|
+
f_parameter_value: this.$login.toStandardDateString()
|
|
250
|
+
},
|
|
251
|
+
thirdPays: [{label: '支持', value: '1'},{label: '不支持', value: '0'}],
|
|
252
|
+
timeTypes: [{label: '按月', value: '按月'},{label: '按日', value: '按日'}],
|
|
253
|
+
limitTypes: [{label: '气量', value: '气量'},{label: '金额', value: '金额'}],
|
|
254
|
+
limitstyle: [{label: '按次数', value: '按次数'},{label: '按总量', value: '按总量'}],
|
|
255
|
+
fstatus: [{label: '有效', value: '有效'},{label: '无效', value: '无效'}],
|
|
256
|
+
fstate: [{label: '移入', value: '移入'},{label: '移出', value: '移出'}],
|
|
257
|
+
flevel: [{label: '高', value: '高'},{label: '中', value: '中'},{label: '低', value: '低'}],
|
|
258
|
+
nolimitGas:[{label: '是', value:'0'},{label: '否', value:'1'}],
|
|
259
|
+
fFunction: this.$appdata.getParam('限制功能') ? [{
|
|
260
|
+
label: '全部',
|
|
261
|
+
value: ''
|
|
262
|
+
}, ...this.$appdata.getParam('限制功能')] : [],
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
props: ['show', 'f_price_id', 'f_userinfo_id','row','userOperationState'],
|
|
266
|
+
ready () {
|
|
267
|
+
this.getLimitData()
|
|
268
|
+
},
|
|
269
|
+
watch: {
|
|
270
|
+
'f_price_id' () {
|
|
271
|
+
this.getLimitData()
|
|
272
|
+
},
|
|
273
|
+
'f_userinfo_id' () {
|
|
274
|
+
this.getLimitData()
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
methods: {
|
|
278
|
+
cancels() {
|
|
279
|
+
this.$emit('cancel')
|
|
280
|
+
},
|
|
281
|
+
getLimitData () {
|
|
282
|
+
console.log('获取限购配置。。', this.f_price_id, this.f_userinfo_id)
|
|
283
|
+
if (this.f_price_id || this.f_userinfo_id) {
|
|
284
|
+
getLimitDataGen(this)
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
async confirm (type) {
|
|
288
|
+
if (this.userOperationState === '移入') {
|
|
289
|
+
this.$showMessage(`${type}失败, 用户已被移入重点用户, 请先移出重点用户`);
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
if (type == '取消拉黑' && !this.$login.r.find(value => value == '取消拉黑')) {
|
|
293
|
+
this.$showMessage('你没有移出重点用户的权限,请联系管理员!')
|
|
294
|
+
return
|
|
295
|
+
}
|
|
296
|
+
let data = {
|
|
297
|
+
f_operat_type: type,
|
|
298
|
+
f_state: '待审核',
|
|
299
|
+
f_user_id: this.model.f_user_id,
|
|
300
|
+
f_user_name: this.model.f_user_name,
|
|
301
|
+
f_comments: this.KeyModel.f_comments,
|
|
302
|
+
f_remark: this.KeyModel.f_remark,
|
|
303
|
+
f_operator: this.$login.f.name,
|
|
304
|
+
f_operatorid: this.$login.f.id,
|
|
305
|
+
f_orgid: this.$login.f.orgid,
|
|
306
|
+
f_orgname: this.$login.f.orgs,
|
|
307
|
+
f_depid: this.$login.f.depids,
|
|
308
|
+
f_depname: this.$login.f.deps,
|
|
309
|
+
f_parameter_value:this.model.f_parameter_value,
|
|
310
|
+
f_operate_date: this.$login.toStandardTimeString(),
|
|
311
|
+
f_describe: `${this.$login.f.name}对客户${this.model.f_user_name}进行${type}`,
|
|
312
|
+
f_userinfo_id: {
|
|
313
|
+
f_userinfo_id: this.f_userinfo_id,
|
|
314
|
+
f_user_state: '正常',
|
|
315
|
+
version: this.model.version
|
|
316
|
+
},
|
|
317
|
+
f_limit_times: this.model.f_limit_times,
|
|
318
|
+
f_limit_amount: this.model.f_limit_amount,
|
|
319
|
+
f_limit_value: this.model.f_limit_value,
|
|
320
|
+
f_opr_state: this.KeyModel.f_opr_state,
|
|
321
|
+
f_level: this.KeyModel.f_level,
|
|
322
|
+
f_function:this.KeyModel.f_function
|
|
323
|
+
}
|
|
324
|
+
console.log('查看参数data', data)
|
|
325
|
+
let res = await this.$resetpost('rs/logic/backlistOperate', data, {resolveMsg: null, rejectMsg: null})
|
|
326
|
+
let operateType = type == '移入重点用户' ? '移入重点用户审核提交' : '移出重点用户审核提交'
|
|
327
|
+
if (res.data.code == 200) {
|
|
328
|
+
this.$showMessage(`${operateType}成功`)
|
|
329
|
+
}
|
|
330
|
+
if (res.data.code == 500) {
|
|
331
|
+
this.$showMessage(`${operateType}失败,用户已被移入重点用户,请先移出重点用户`)
|
|
332
|
+
return
|
|
333
|
+
}
|
|
334
|
+
if (res.data.code == 501) {
|
|
335
|
+
this.$showMessage(`${operateType}失败,用户不是重点用户,请先移入重点用户`)
|
|
336
|
+
return
|
|
337
|
+
}
|
|
338
|
+
this.initModel()
|
|
339
|
+
this.$dispatch('success')
|
|
340
|
+
this.$emit('cancel')
|
|
341
|
+
},
|
|
342
|
+
clean () {
|
|
343
|
+
this.$info('取消操作')
|
|
344
|
+
this.$dispatch('refresh', this.row)
|
|
345
|
+
this.$emit('cancel')
|
|
346
|
+
},
|
|
347
|
+
},
|
|
348
|
+
computed: {
|
|
349
|
+
isDisabled() {
|
|
350
|
+
return this.userOperationState === '移入'
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
</script>
|
|
356
|
+
<style>
|
|
357
|
+
|
|
358
|
+
</style>
|
|
@@ -4,19 +4,25 @@
|
|
|
4
4
|
<template partial='head'>
|
|
5
5
|
<tr>
|
|
6
6
|
<th style="text-align: center;">序号</th>
|
|
7
|
-
<th style="text-align: center;"
|
|
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>
|
|
8
12
|
<th style="text-align: center;">操作时间</th>
|
|
9
13
|
<th style="text-align: center;">操作人</th>
|
|
10
|
-
<th style="text-align: center;">原因</th>
|
|
11
14
|
</tr>
|
|
12
15
|
</template>
|
|
13
16
|
<template partial='body'>
|
|
14
17
|
<tr>
|
|
15
18
|
<td style="text-align: center;">{{$index+1}}</td>
|
|
16
|
-
<td style="text-align: center;">{{row.
|
|
19
|
+
<td style="text-align: center;">{{row.f_comments}}</td>
|
|
20
|
+
<td style="text-align: center;">{{row.f_level}}</td>
|
|
21
|
+
<td style="text-align: center;">{{$parent.$parent.formatFunction(row.f_function)}}</td>
|
|
22
|
+
<td style="text-align: center;">{{row.f_remark}}</td>
|
|
23
|
+
<td style="text-align: center;">{{row.f_opr_state}}</td>
|
|
17
24
|
<td style="text-align: center;">{{row.f_operate_date}}</td>
|
|
18
25
|
<td style="text-align: center;">{{row.f_operator}}</td>
|
|
19
|
-
<td style="text-align: center;">{{row.f_comments}}</td>
|
|
20
26
|
</tr>
|
|
21
27
|
</template>
|
|
22
28
|
<template partial='foot'></template>
|
|
@@ -30,7 +36,7 @@
|
|
|
30
36
|
let initGen = async function (self, val) {
|
|
31
37
|
let http = new HttpResetClass()
|
|
32
38
|
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})
|
|
39
|
+
let res = await http.load('POST', 'rs/sql/sale_getBlackListRecord', {data: {condition: `t.f_userinfo_id=${self.data.f_userinfo_id} and f_orgid = ${self.$login.f.orgid}` }}, {resolveMsg: null, rejectMsg: null})
|
|
34
40
|
self.model = Object.assign({}, self.model, val)
|
|
35
41
|
self.model.rows = res.data
|
|
36
42
|
}
|
|
@@ -52,6 +58,20 @@
|
|
|
52
58
|
|
|
53
59
|
ready () {
|
|
54
60
|
initGen(this, this.data)
|
|
61
|
+
},
|
|
62
|
+
methods: {
|
|
63
|
+
formatFunction (functionString) {
|
|
64
|
+
if (!functionString) return ''
|
|
65
|
+
try {
|
|
66
|
+
// 解析 JSON 字符串为数组
|
|
67
|
+
let functionArray = JSON.parse(functionString)
|
|
68
|
+
// 将数组转换为用逗号分隔的字符串
|
|
69
|
+
return functionArray.join(', ')
|
|
70
|
+
} catch (e) {
|
|
71
|
+
// 如果解析失败,返回原始字符串
|
|
72
|
+
return functionString
|
|
73
|
+
}
|
|
74
|
+
}
|
|
55
75
|
}
|
|
56
76
|
|
|
57
77
|
}
|