sale-client 3.6.480 → 3.6.482
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/.gradle/5.2.1/fileHashes/fileHashes.lock +0 -0
- package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/.gradle/buildOutputCleanup/cache.properties +1 -1
- package/.gradle/file-system.probe +0 -0
- package/package.json +1 -1
- package/src/filiale/bayan/DisableManage.vue +106 -0
- package/src/filiale/bayan/EnableManage.vue +64 -21
- package/src/filiale/bayan/disableRecord.vue +131 -0
- package/src/filiale/bayan/plugins/LogicService.js +496 -0
- package/src/filiale/bayan/sale.js +4 -0
- package/src/filiale/qianneng/OtherChargeNew.vue +16 -0
- package/src/filiale/qianneng/PaymentCode.vue +167 -0
- package/src/filiale/qianneng/sale.js +2 -0
- package/src/filiale/yangchun/ChargeList.vue +2 -2
- package/src/plugins/LogicService.js +45 -4
- package/.gradle/8.5/checksums/checksums.lock +0 -0
- package/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/.gradle/8.5/dependencies-accessors/gc.properties +0 -0
- package/.gradle/8.5/executionHistory/executionHistory.bin +0 -0
- package/.gradle/8.5/executionHistory/executionHistory.lock +0 -0
- package/.gradle/8.5/fileChanges/last-build.bin +0 -0
- package/.gradle/8.5/fileHashes/fileHashes.bin +0 -0
- package/.gradle/8.5/fileHashes/fileHashes.lock +0 -0
- package/.gradle/8.5/gc.properties +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#
|
|
1
|
+
#Wed Jan 22 10:06:39 CST 2025
|
|
2
2
|
gradle.version=5.2.1
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="auto">
|
|
3
|
+
<validator name='v'>
|
|
4
|
+
<form class="form-horizontal">
|
|
5
|
+
<div class="row">
|
|
6
|
+
<div class="col-sm-4 form-group">
|
|
7
|
+
<label for="f_reason" class="font_normal_body">停用原因</label>
|
|
8
|
+
<v-select v-model="model.f_reason"
|
|
9
|
+
placeholder='停用原因'
|
|
10
|
+
:value.sync="model.f_reason"
|
|
11
|
+
:options='reason'
|
|
12
|
+
v-ref:reason
|
|
13
|
+
close-on-select ></v-select>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="row" style="margin-top:1px;">
|
|
17
|
+
<div class="col-sm-8 form-group">
|
|
18
|
+
<label for="f_reason" class="font_normal_body">备  注</label>
|
|
19
|
+
<input class="input_search" style="width:80%" v-model="model.f_othereason" placeholder="备注"/>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</form>
|
|
23
|
+
<div style="text-align:right;">
|
|
24
|
+
<button class="button_search button_spacing" @click="confirm()" :disabled='!$v.valid'>确认</button>
|
|
25
|
+
<button class="button_clear" @click="clean()" >取消</button>
|
|
26
|
+
</div>
|
|
27
|
+
</validator>
|
|
28
|
+
</div>
|
|
29
|
+
<upload :blodid="blodid" :businessid="randomBusinessId" isremark="true" :deleteimg="true" fusetype="停用"></upload>
|
|
30
|
+
</template>
|
|
31
|
+
<script>
|
|
32
|
+
import LogicService from './plugins/LogicService'
|
|
33
|
+
/**
|
|
34
|
+
*综合业务
|
|
35
|
+
表具停用组件
|
|
36
|
+
*/
|
|
37
|
+
export default {
|
|
38
|
+
title: '表具停用',
|
|
39
|
+
props: ['row'],
|
|
40
|
+
data () {
|
|
41
|
+
return {
|
|
42
|
+
blodid: '',
|
|
43
|
+
showupload: true,
|
|
44
|
+
model: {},
|
|
45
|
+
randomBusinessId: '',
|
|
46
|
+
reason: this.$appdata.getParam('停用原因')
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
ready () {
|
|
50
|
+
this.blodid = this.row.f_userinfo_id
|
|
51
|
+
this.getRandomId()
|
|
52
|
+
},
|
|
53
|
+
methods: {
|
|
54
|
+
getRandomId () {
|
|
55
|
+
this.randomBusinessId = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
56
|
+
let res = Math.random() * 16 | 0
|
|
57
|
+
let v = c == 'x' ? res : (res & 0x3 | 0x8)
|
|
58
|
+
return v.toString(16)
|
|
59
|
+
})
|
|
60
|
+
},
|
|
61
|
+
async confirm () {
|
|
62
|
+
await LogicService.meterDisable(this.model, this.row)
|
|
63
|
+
let array = [{
|
|
64
|
+
f_user_id: this.row.f_user_id,
|
|
65
|
+
f_userfiles_id: this.row.f_userfiles_id,
|
|
66
|
+
f_alias: this.row.f_alias,
|
|
67
|
+
f_userinfo_id: this.row.f_userinfo_id,
|
|
68
|
+
f_orgname: this.$login.f.orgs,
|
|
69
|
+
f_orgid: this.$login.f.orgid,
|
|
70
|
+
f_meternumber: this.row.f_meternumber
|
|
71
|
+
}]
|
|
72
|
+
if (this.row.f_meter_type === '物联网表') {
|
|
73
|
+
await this.$resetpost('rs/logic/iot_instructUpdateAndDelect',
|
|
74
|
+
{
|
|
75
|
+
data: {
|
|
76
|
+
data1: {
|
|
77
|
+
f_apply_type: '阀门控制',
|
|
78
|
+
userid: array,
|
|
79
|
+
nowDate: new Date(),
|
|
80
|
+
f_apply_value: '关阀',
|
|
81
|
+
f_apply_beizhu: '表具停用自动关阀',
|
|
82
|
+
f_apply_operator: this.$login.f.name
|
|
83
|
+
},
|
|
84
|
+
data2: {
|
|
85
|
+
userid: array,
|
|
86
|
+
instructtype: '阀门控制',
|
|
87
|
+
isOpen: '关阀',
|
|
88
|
+
instructTitle: '手动关阀',
|
|
89
|
+
reasonInfo: '表具停用自动关阀',
|
|
90
|
+
f_instruct_state: '待发送',
|
|
91
|
+
inputtor: this.$login.f.name
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
}
|
|
96
|
+
this.$dispatch('success')
|
|
97
|
+
},
|
|
98
|
+
clean () {
|
|
99
|
+
this.$dispatch('refresh')
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
</script>
|
|
104
|
+
|
|
105
|
+
<style>
|
|
106
|
+
</style>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="auto">
|
|
3
|
+
<disable-record partial='list' :searchdata="row" @updatedata="handleChildStatusUpdate"></disable-Record>
|
|
3
4
|
<validator name='v'>
|
|
4
5
|
<form novalidate class="form-horizontal">
|
|
5
6
|
<div class="row">
|
|
@@ -51,7 +52,8 @@
|
|
|
51
52
|
</div>
|
|
52
53
|
</form>
|
|
53
54
|
<div style="text-align:right;">
|
|
54
|
-
<button class="
|
|
55
|
+
<button :class="['btn-green', { disabled: !authArr.includes('强制启用') }]" @click="forceConfirm()" :disabled="!authArr.includes('强制启用')">强制启用</button>
|
|
56
|
+
<button class="button_search button_spacing" @click="confirm()" :disabled="!isEnabled">确认</button>
|
|
55
57
|
<button class="button_clear" @click="clean()" >取消</button>
|
|
56
58
|
</div>
|
|
57
59
|
<upload :blodid="model.f_userinfo_id" :businessid="randomBusinessId" isremark="true" :deleteimg="true" fusetype="表具启用"></upload>
|
|
@@ -103,7 +105,7 @@ let meterEnable = async function (self, model, row) {
|
|
|
103
105
|
f_blobid: returnData.data.id
|
|
104
106
|
}
|
|
105
107
|
await self.$resetpost('rs/logic/updatefiles', param)
|
|
106
|
-
if(self.kaifa){
|
|
108
|
+
if (self.kaifa) {
|
|
107
109
|
let array = [{
|
|
108
110
|
f_user_id: self.row.f_userfiles_id,
|
|
109
111
|
f_alias: self.row.f_alias,
|
|
@@ -148,11 +150,12 @@ export default {
|
|
|
148
150
|
f_date: '',
|
|
149
151
|
f_reason: ''
|
|
150
152
|
},
|
|
151
|
-
resid:[],
|
|
152
|
-
|
|
153
|
+
resid: [],
|
|
154
|
+
isEnabled: false,
|
|
155
|
+
randomBusinessId: null,
|
|
153
156
|
reason: this.$appdata.getParam('启用原因'),
|
|
154
157
|
disable: {},
|
|
155
|
-
kaifa:false
|
|
158
|
+
kaifa: false
|
|
156
159
|
}
|
|
157
160
|
},
|
|
158
161
|
ready () {
|
|
@@ -172,6 +175,11 @@ export default {
|
|
|
172
175
|
}
|
|
173
176
|
},
|
|
174
177
|
methods: {
|
|
178
|
+
handleChildStatusUpdate (status) {
|
|
179
|
+
// 根据子组件的状态更新父组件逻辑
|
|
180
|
+
console.log('子组件状态更新为:', status)
|
|
181
|
+
this.isEnabled = status
|
|
182
|
+
},
|
|
175
183
|
getRandomId () {
|
|
176
184
|
this.randomBusinessId = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
177
185
|
let res = Math.random() * 16 | 0
|
|
@@ -179,10 +187,10 @@ export default {
|
|
|
179
187
|
return v.toString(16)
|
|
180
188
|
})
|
|
181
189
|
},
|
|
182
|
-
changeisuse(val){
|
|
183
|
-
if(val){
|
|
190
|
+
changeisuse (val) {
|
|
191
|
+
if (val) {
|
|
184
192
|
this.kaifa = true
|
|
185
|
-
}else{
|
|
193
|
+
} else {
|
|
186
194
|
this.kaifa = false
|
|
187
195
|
}
|
|
188
196
|
},
|
|
@@ -195,27 +203,62 @@ export default {
|
|
|
195
203
|
let res = await this.$resetpost('rs/sql/saleSingleTable', {data: data}, {resolveMsg: null, rejectMsg: '获取上次停用原因失败'})
|
|
196
204
|
this.disable = res.data[0]
|
|
197
205
|
},
|
|
198
|
-
|
|
206
|
+
forceConfirm () {
|
|
199
207
|
meterEnable(this, this.model, this.row)
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
208
|
+
},
|
|
209
|
+
async confirm () {
|
|
210
|
+
try {
|
|
211
|
+
// 查询是否存在未处理的隐患
|
|
212
|
+
const data = {
|
|
213
|
+
condition: `f_userinfo_id = '${this.row.f_userinfo_id}' AND f_is_deal = '未处理'`
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
const response = await this.$resetpost(
|
|
217
|
+
'rs/sql/HiddenDanger', // 假设这是查询接口
|
|
218
|
+
{ data },
|
|
219
|
+
{ resolveMsg: null, rejectMsg: '查询隐患失败' }
|
|
220
|
+
)
|
|
221
|
+
console.log('124565', response.data)
|
|
222
|
+
console.log('124565', response.data.length)
|
|
223
|
+
// 检查查询结果是否有未处理的隐患
|
|
224
|
+
if (response.data && response.data.length > 0) {
|
|
225
|
+
this.$showAlert('还有未处理的隐患,无法启用!', 'warning', 3000)
|
|
226
|
+
return
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// 如果没有未处理的隐患,则执行启用逻辑
|
|
230
|
+
await meterEnable(this, this.model, this.row)
|
|
231
|
+
} catch (error) {
|
|
232
|
+
console.error('查询或启用操作失败:', error)
|
|
233
|
+
this.$error('操作失败,请重试!')
|
|
234
|
+
}
|
|
212
235
|
},
|
|
213
236
|
clean () {
|
|
214
237
|
this.$dispatch('refresh')
|
|
215
238
|
}
|
|
239
|
+
},
|
|
240
|
+
computed: {
|
|
241
|
+
authArr () {
|
|
242
|
+
return this.$login.r ? this.$login.r : []
|
|
243
|
+
}
|
|
216
244
|
}
|
|
217
245
|
}
|
|
218
246
|
</script>
|
|
219
247
|
|
|
220
248
|
<style>
|
|
249
|
+
.btn-green {
|
|
250
|
+
background-color: green;
|
|
251
|
+
color: white;
|
|
252
|
+
border: none;
|
|
253
|
+
padding: 5px 10px;
|
|
254
|
+
border-radius: 3px;
|
|
255
|
+
cursor: pointer;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.btn-green.disabled {
|
|
259
|
+
background-color: gray;
|
|
260
|
+
color: #ccc;
|
|
261
|
+
cursor: not-allowed; /* 禁止鼠标点击的样式 */
|
|
262
|
+
}
|
|
221
263
|
</style>
|
|
264
|
+
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div style="height:100%">
|
|
3
|
+
<data-grid :model="model" class="table_sy" partial='list' v-ref:grid >
|
|
4
|
+
<template partial='head' >
|
|
5
|
+
<tr>
|
|
6
|
+
<th><nobr>序号</nobr></th>
|
|
7
|
+
<th><nobr>停用时间</nobr></th>
|
|
8
|
+
<th><nobr>操作人</nobr></th>
|
|
9
|
+
<th><nobr>停用原因</nobr></th>
|
|
10
|
+
<th><nobr>其他原因</nobr></th>
|
|
11
|
+
<th><nobr>状态</nobr></th>
|
|
12
|
+
<th><nobr>操作</nobr></th>
|
|
13
|
+
</tr>
|
|
14
|
+
</template>
|
|
15
|
+
<template partial='body' >
|
|
16
|
+
<tr >
|
|
17
|
+
<td style="text-align:center;white-space:nowrap;">{{$index+1}}</td>
|
|
18
|
+
<td style="text-align:center;white-space:nowrap;">{{row.f_operate_date}}</td>
|
|
19
|
+
<td style="text-align:center;white-space:nowrap;">{{row.f_operator}}</td>
|
|
20
|
+
<td style="text-align:center;white-space:nowrap;">{{row.f_comments}}</td>
|
|
21
|
+
<td style="text-align:center;white-space:nowrap;">{{row.f_othereason}}</td>
|
|
22
|
+
<td style="text-align:center;white-space:nowrap;">{{row.f_disable_state}}</td>
|
|
23
|
+
<td style="text-align:center;white-space:nowrap;">
|
|
24
|
+
<button
|
|
25
|
+
:class="{'btn-green': row.f_disable_state !== '启用', 'btn-gray': row.f_disable_state === '启用'}"
|
|
26
|
+
:disabled="row.f_disable_state === '启用'"
|
|
27
|
+
@click="$parent.$parent.enableDisable(row)">
|
|
28
|
+
{{ row.f_disable_state === '启用' ? '已启用' : '启用' }}
|
|
29
|
+
</button>
|
|
30
|
+
</td>
|
|
31
|
+
</tr>
|
|
32
|
+
</template>
|
|
33
|
+
</data-grid>
|
|
34
|
+
</div>
|
|
35
|
+
</template>
|
|
36
|
+
|
|
37
|
+
<script>
|
|
38
|
+
import {HttpResetClass} from 'vue-client'
|
|
39
|
+
|
|
40
|
+
export default {
|
|
41
|
+
title: '停用记录查询',
|
|
42
|
+
data () {
|
|
43
|
+
return {
|
|
44
|
+
model: {rows: []},
|
|
45
|
+
f_calculation: '',
|
|
46
|
+
cardCental: false,
|
|
47
|
+
hasCardCental: false
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
props: ['searchdata'],
|
|
51
|
+
ready () {
|
|
52
|
+
this.getsalerecord()
|
|
53
|
+
},
|
|
54
|
+
computed: {
|
|
55
|
+
areAllEnabled () {
|
|
56
|
+
// 检查所有行的状态是否都为 "启用"
|
|
57
|
+
let i = this.model.rows.every(row => row.f_disable_state === '启用')
|
|
58
|
+
console.log('123456', i)
|
|
59
|
+
return this.model.rows.every(row => row.f_disable_state === '启用')
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
methods: {
|
|
63
|
+
cancel () {
|
|
64
|
+
this.cardCental = false
|
|
65
|
+
},
|
|
66
|
+
async getsalerecord () {
|
|
67
|
+
let http = new HttpResetClass()
|
|
68
|
+
// this.condition = `1=1 and f_user_id = '${this.searchdata.f_user_id}'`
|
|
69
|
+
this.condition = `1=1 and f_userinfo_id = '${this.searchdata.f_userinfo_id}' and t.f_operate_date != (
|
|
70
|
+
select max(f_operate_date)
|
|
71
|
+
from t_disable
|
|
72
|
+
where f_userinfo_id = '${this.searchdata.f_userinfo_id}'
|
|
73
|
+
)`
|
|
74
|
+
let record = await http.load('POST', 'rs/sql/disableQuery', {data: {condition: this.condition, orderitem: `f_operate_date desc`}}, {
|
|
75
|
+
rejectMsg: '停用记录查询出错!!',
|
|
76
|
+
resolveMsg: null
|
|
77
|
+
})
|
|
78
|
+
this.model.rows = record.data
|
|
79
|
+
},
|
|
80
|
+
async enableDisable (row) {
|
|
81
|
+
// 更新表 t_disable 的 f_disable_state 字段为 '启用'
|
|
82
|
+
let http = new HttpResetClass()
|
|
83
|
+
try {
|
|
84
|
+
await http.load('POST', 'rs/logic/updateDisableState', {
|
|
85
|
+
data: {
|
|
86
|
+
id: row.id, // 假设 `row` 中有主键字段 `id`
|
|
87
|
+
f_disable_state: '启用'
|
|
88
|
+
}
|
|
89
|
+
}, {
|
|
90
|
+
resolveMsg: '启用成功!',
|
|
91
|
+
rejectMsg: '启用失败!'
|
|
92
|
+
})
|
|
93
|
+
// 更新本地数据
|
|
94
|
+
row.f_disable_state = '启用'
|
|
95
|
+
} catch (error) {
|
|
96
|
+
console.error('启用失败', error)
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
watch: {
|
|
101
|
+
'searchdata' () {
|
|
102
|
+
this.getsalerecord()
|
|
103
|
+
},
|
|
104
|
+
'model.rows': {
|
|
105
|
+
handler () {
|
|
106
|
+
const allEnabled = this.model.rows.every(row => row.f_disable_state === '启用')
|
|
107
|
+
this.$emit('updatedata', allEnabled)
|
|
108
|
+
},
|
|
109
|
+
deep: true
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
</script>
|
|
114
|
+
<style scoped>
|
|
115
|
+
.btn-green {
|
|
116
|
+
background-color: green;
|
|
117
|
+
color: white;
|
|
118
|
+
border: none;
|
|
119
|
+
padding: 5px 10px;
|
|
120
|
+
border-radius: 3px;
|
|
121
|
+
cursor: pointer;
|
|
122
|
+
}
|
|
123
|
+
.btn-gray {
|
|
124
|
+
background-color: gray;
|
|
125
|
+
color: white;
|
|
126
|
+
border: none;
|
|
127
|
+
padding: 5px 10px;
|
|
128
|
+
border-radius: 3px;
|
|
129
|
+
cursor: not-allowed;
|
|
130
|
+
}
|
|
131
|
+
</style>
|
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
import Vue from 'vue'
|
|
2
|
+
import co from 'co'
|
|
3
|
+
|
|
4
|
+
let disableGen = function * (data) {
|
|
5
|
+
let owe = yield Vue.resetpost('rs/sql/getOverdue', {data: {f_userfiles_id: data.f_userfile_id + ''}}, {resolveMsg: null, rejectMsg: null})
|
|
6
|
+
console.log('表具停用看是否有欠费', owe.data)
|
|
7
|
+
let hasHandplan = yield Vue.resetpost('rs/sql/saleSingleTable', {data: {tablename: 't_handplan', condition: `f_meter_state = '未抄表' and f_userfiles_id = '${data.f_userfile_id + ''}'`}}, {resolveMsg: null, rejectMsg: null})
|
|
8
|
+
console.log('是否有未抄表数据', hasHandplan.data)
|
|
9
|
+
if (owe.data.length > 0 && hasHandplan.data.length > 0) {
|
|
10
|
+
Vue.showAlert('该表具还有欠费或者未抄表数据,不能停用!!', 'danger', 0)
|
|
11
|
+
} else {
|
|
12
|
+
yield Vue.resetpost('rs/entity/t_disable', data, {resolveMsg: '表具停用成功', rejectMsg: '表具停用失败'})
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
let LogicService = {
|
|
17
|
+
install (Vue, options) {
|
|
18
|
+
// 给vue增添对话框显示方法
|
|
19
|
+
Vue.LogicService = Vue.prototype.$LogicService = LogicService
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
// 总分表
|
|
23
|
+
addSplit (total_id, split_tables) {
|
|
24
|
+
let data = {
|
|
25
|
+
total_id: total_id,
|
|
26
|
+
split_ids: split_tables
|
|
27
|
+
}
|
|
28
|
+
console.log('终于到总分表保存了,,,,', data)
|
|
29
|
+
return Vue.resetpost('rs/logic/totalsplit', {data: data}, {resolveMsg: '成功建立总分表关系', rejectMsg: '建立总分表关系出错!!!'})
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
// 表具启用
|
|
33
|
+
meterEnable (model, row) {
|
|
34
|
+
let data = {
|
|
35
|
+
f_userfiles_id: {
|
|
36
|
+
f_userfiles_id: row.f_userfiles_id,
|
|
37
|
+
f_table_state: '正常',
|
|
38
|
+
version: row.version
|
|
39
|
+
},
|
|
40
|
+
f_userfile_id: row.f_userfiles_id,
|
|
41
|
+
f_user_id: row.f_user_id,
|
|
42
|
+
record_userinfo: row.f_userinfo_id,
|
|
43
|
+
f_userinfo_id: row.f_userinfo_id,
|
|
44
|
+
f_user_name: row.f_user_name,
|
|
45
|
+
f_comments: model.f_reason[0],
|
|
46
|
+
f_othereason: model.f_othereason,
|
|
47
|
+
f_operat_type: '启用',
|
|
48
|
+
f_describe: `${Vue.$login.f.name}对客户${row.f_user_name}进行表具启用操作`,
|
|
49
|
+
f_state: '有效',
|
|
50
|
+
f_operator: Vue.$login.f.name,
|
|
51
|
+
f_operatorid: Vue.$login.f.id,
|
|
52
|
+
f_orgid: Vue.$login.f.orgid,
|
|
53
|
+
f_orgname: Vue.$login.f.orgs,
|
|
54
|
+
f_depid: Vue.$login.f.depids,
|
|
55
|
+
f_depname: Vue.$login.f.deps,
|
|
56
|
+
f_zoneid: Vue.$login.f.zoneid,
|
|
57
|
+
f_zones: Vue.$login.f.zones
|
|
58
|
+
}
|
|
59
|
+
return Vue.resetpost('rs/entity/t_enable', data, {resolveMsg: '表具启用成功', rejectMsg: '表具启用失败'})
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
// 表具停用
|
|
63
|
+
meterDisable (model, row) {
|
|
64
|
+
let data = {
|
|
65
|
+
f_userfiles_id: {
|
|
66
|
+
f_userfiles_id: row.f_userfiles_id,
|
|
67
|
+
f_table_state: '停用',
|
|
68
|
+
version: row.version
|
|
69
|
+
},
|
|
70
|
+
f_userfile_id: row.f_userfiles_id,
|
|
71
|
+
f_user_id: row.f_user_id,
|
|
72
|
+
f_userinfo_id: row.f_userinfo_id,
|
|
73
|
+
f_user_phone: row.f_user_phone,
|
|
74
|
+
f_user_name: row.f_user_name,
|
|
75
|
+
f_comments: model.f_reason[0],
|
|
76
|
+
f_othereason: model.f_othereason,
|
|
77
|
+
f_operat_type: '停用',
|
|
78
|
+
f_describe: `${Vue.$login.f.name}对客户${row.f_user_name}进行表具停用操作`,
|
|
79
|
+
f_state: '有效',
|
|
80
|
+
f_disable_state: '停用',
|
|
81
|
+
f_operator: Vue.$login.f.name,
|
|
82
|
+
f_operatorid: Vue.$login.f.id,
|
|
83
|
+
f_orgid: Vue.$login.f.orgid,
|
|
84
|
+
f_orgname: Vue.$login.f.orgs,
|
|
85
|
+
f_depid: Vue.$login.f.depids,
|
|
86
|
+
f_depname: Vue.$login.f.deps,
|
|
87
|
+
f_zoneid: Vue.$login.f.zoneid,
|
|
88
|
+
f_zones: Vue.$login.f.zones
|
|
89
|
+
}
|
|
90
|
+
let disable = disableGen(data)
|
|
91
|
+
return co(disable)
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
// 其他收费
|
|
95
|
+
otherCharge (model, row) {
|
|
96
|
+
let data = {
|
|
97
|
+
f_time_date: model.f_time_date,
|
|
98
|
+
f_serial_id: model.f_serial_id,
|
|
99
|
+
record_userinfo: row.f_userinfo_id,
|
|
100
|
+
f_serial_number: model.f_serial_number,
|
|
101
|
+
f_userfiles_id: row.f_userfiles_id,
|
|
102
|
+
f_user_id: row.f_user_id,
|
|
103
|
+
f_user_name:row.f_user_name,
|
|
104
|
+
f_address:row.f_address,
|
|
105
|
+
f_user_type:row.f_user_type,
|
|
106
|
+
f_gasproperties:row.f_gasproperties,
|
|
107
|
+
// f_number: model.f_number,
|
|
108
|
+
// f_unitprice: model.f_unitprice,
|
|
109
|
+
f_collection: model.f_collection,
|
|
110
|
+
f_comments: model.f_comments,
|
|
111
|
+
f_payment: model.f_payment[0],
|
|
112
|
+
f_voucher_number: model.f_voucher_number,
|
|
113
|
+
f_bill_style: model.f_print[0],
|
|
114
|
+
// f_brand_spec: model.f_brand_spec[0],
|
|
115
|
+
f_userinfo_id: row.f_userinfo_id,
|
|
116
|
+
f_service_person: model.f_service_person[0],
|
|
117
|
+
f_operat_type: '其他收费',
|
|
118
|
+
f_describe: `${Vue.$login.f.name}对客户${row.f_user_name}进行其他收费操作`,
|
|
119
|
+
f_state: '有效',
|
|
120
|
+
f_operator: Vue.$login.f.name,
|
|
121
|
+
f_operatorid: Vue.$login.f.id,
|
|
122
|
+
f_orgid: Vue.$login.f.orgid,
|
|
123
|
+
f_orgname: Vue.$login.f.orgs,
|
|
124
|
+
f_depid: Vue.$login.f.depids,
|
|
125
|
+
f_depname: Vue.$login.f.deps,
|
|
126
|
+
f_zoneid: Vue.$login.f.zoneid,
|
|
127
|
+
f_zones: Vue.$login.f.zones,
|
|
128
|
+
// 其他费用信息
|
|
129
|
+
t_userfees: model.t_userfees,
|
|
130
|
+
f_fee_type: model.f_fee_type[0],
|
|
131
|
+
f_fee_time: model.f_fee_time[0],
|
|
132
|
+
otherdetail: model.otherdetail
|
|
133
|
+
}
|
|
134
|
+
return Vue.resetpost('rs/logic/sale_othercharge_logic', data, {resolveMsg: '其他收费成功', rejectMsg: '其他收费失败'})
|
|
135
|
+
},
|
|
136
|
+
otherChargeByPay (model, row) {
|
|
137
|
+
let data = {
|
|
138
|
+
f_serial_id: model.f_serial_id,
|
|
139
|
+
nopay_id: model.nopay_id,
|
|
140
|
+
record_userinfo: row.f_userinfo_id,
|
|
141
|
+
f_userfiles_id: row.f_userfiles_id,
|
|
142
|
+
f_user_id: row.f_user_id,
|
|
143
|
+
f_user_name:row.f_user_name,
|
|
144
|
+
f_address:row.f_address,
|
|
145
|
+
f_user_type:row.f_user_type,
|
|
146
|
+
f_gasproperties:row.f_gasproperties,
|
|
147
|
+
// f_number: model.f_number,
|
|
148
|
+
// f_unitprice: model.f_unitprice,
|
|
149
|
+
f_collection: model.f_collection,
|
|
150
|
+
f_comments: model.f_comments,
|
|
151
|
+
f_payment: model.f_payment[0],
|
|
152
|
+
f_voucher_number: model.f_voucher_number,
|
|
153
|
+
f_bill_style: model.f_print[0],
|
|
154
|
+
// f_brand_spec: model.f_brand_spec[0],
|
|
155
|
+
f_userinfo_id: row.f_userinfo_id,
|
|
156
|
+
f_service_person: model.f_service_person[0],
|
|
157
|
+
f_operat_type: '其他收费',
|
|
158
|
+
f_describe: `${Vue.$login.f.name}对客户${row.f_user_name}进行其他收费操作`,
|
|
159
|
+
f_state: '有效',
|
|
160
|
+
f_operator: Vue.$login.f.name,
|
|
161
|
+
f_operatorid: Vue.$login.f.id,
|
|
162
|
+
f_orgid: Vue.$login.f.orgid,
|
|
163
|
+
f_orgname: Vue.$login.f.orgs,
|
|
164
|
+
f_depid: Vue.$login.f.depids,
|
|
165
|
+
f_depname: Vue.$login.f.deps,
|
|
166
|
+
f_zoneid: Vue.$login.f.zoneid,
|
|
167
|
+
f_zones: Vue.$login.f.zones,
|
|
168
|
+
// 其他费用信息
|
|
169
|
+
t_userfees: model.t_userfees,
|
|
170
|
+
otherdetail: model.otherdetail
|
|
171
|
+
}
|
|
172
|
+
return Vue.resetpost('rs/logic/sale_othercharge_bypay', data, {resolveMsg: '其他收费成功', rejectMsg: '其他收费失败'})
|
|
173
|
+
},
|
|
174
|
+
// 维修收费
|
|
175
|
+
repairCharge (model, row) {
|
|
176
|
+
let data = {
|
|
177
|
+
record_userinfo: row.f_userinfo_id,
|
|
178
|
+
f_userfiles_id: row.f_userfiles_id,
|
|
179
|
+
f_user_id: row.f_user_id,
|
|
180
|
+
// f_number: model.f_number,
|
|
181
|
+
// f_unitprice: model.f_unitprice,
|
|
182
|
+
f_collection: model.f_collection,
|
|
183
|
+
f_comments: model.f_comments,
|
|
184
|
+
f_payment: model.f_payment[0],
|
|
185
|
+
f_voucher_number: model.f_voucher_number,
|
|
186
|
+
f_bill_style: model.f_print[0],
|
|
187
|
+
// f_brand_spec: model.f_brand_spec[0],
|
|
188
|
+
f_userinfo_id: row.f_userinfo_id,
|
|
189
|
+
f_service_person: model.f_service_person[0],
|
|
190
|
+
f_operat_type: '维修收费',
|
|
191
|
+
f_describe: `${Vue.$login.f.name}对客户${row.f_user_name}进行维修收费操作`,
|
|
192
|
+
f_state: '有效',
|
|
193
|
+
f_operator: Vue.$login.f.name,
|
|
194
|
+
f_operatorid: Vue.$login.f.id,
|
|
195
|
+
f_orgid: Vue.$login.f.orgid,
|
|
196
|
+
f_orgname: Vue.$login.f.orgs,
|
|
197
|
+
f_depid: Vue.$login.f.depids,
|
|
198
|
+
f_depname: Vue.$login.f.deps,
|
|
199
|
+
f_zoneid: Vue.$login.f.zoneid,
|
|
200
|
+
f_zones: Vue.$login.f.zones,
|
|
201
|
+
// 其他费用信息
|
|
202
|
+
t_userfees: model.t_userfees,
|
|
203
|
+
f_fee_type: model.f_fee_type[0],
|
|
204
|
+
f_fee_time: model.f_fee_time[0],
|
|
205
|
+
otherdetail: model.otherdetail
|
|
206
|
+
}
|
|
207
|
+
return Vue.resetpost('rs/logic/repaircharge', data, {resolveMsg: '维修收费成功', rejectMsg: '维修收费失败'})
|
|
208
|
+
},
|
|
209
|
+
// 过户管理
|
|
210
|
+
changeAccount (model) {
|
|
211
|
+
// console.log('过户。,。。', model)
|
|
212
|
+
return Vue.resetpost('rs/logic/transferSave', {data: {model: model}}, {resolveMsg: '过户成功', rejectMsg: '过户失败'})
|
|
213
|
+
},
|
|
214
|
+
|
|
215
|
+
updateGasPrice (data) {
|
|
216
|
+
// 批量变更气价
|
|
217
|
+
return Vue.resetpost('rs/logic/updateBatchPrice', data, {resolveMsg: '批量修改成功', rejectMsg: '批量变更气价失败'})
|
|
218
|
+
},
|
|
219
|
+
// 增加气表品牌
|
|
220
|
+
addGasBrand (model, Arrlist) {
|
|
221
|
+
let data = {
|
|
222
|
+
f_meter_brand: model.f_meter_brand,
|
|
223
|
+
f_manufacturers: model.f_manufacturers,
|
|
224
|
+
f_meter_type: model.f_meter_type,
|
|
225
|
+
f_police_gas: model.f_police_gas ? model.f_police_gas : 0,
|
|
226
|
+
f_cardnumber: model.f_cardnumber,
|
|
227
|
+
f_card_password: model.f_card_password,
|
|
228
|
+
f_topup_ceil: model.f_topup_ceil ? model.f_topup_ceil : 0,
|
|
229
|
+
f_overdr_lines: model.f_overdr_lines ? model.f_overdr_lines : 0,
|
|
230
|
+
f_meter_limit: model.f_meter_limit ? model.f_meter_limit : 0,
|
|
231
|
+
f_checkout_limit: model.f_checkout_limit ? model.f_checkout_limit : 0,
|
|
232
|
+
f_is_replacement: model.f_is_replacement ? model.f_is_replacement : '',
|
|
233
|
+
f_alias: model.f_alias,
|
|
234
|
+
f_isdecimal: model.f_isdecimal,
|
|
235
|
+
f_collection_type: model.f_collection_type,
|
|
236
|
+
f_calculation: model.f_calculation,
|
|
237
|
+
f_system_settlement: model.f_system_settlement,
|
|
238
|
+
f_comments: model.f_comments,
|
|
239
|
+
f_is_check: model.f_is_check,
|
|
240
|
+
f_is_step: model.f_is_step,
|
|
241
|
+
f_priority: model.f_priority,
|
|
242
|
+
f_support_purchase: model.f_support_purchase,
|
|
243
|
+
f_issupport_feededuction: model.f_issupport_feededuction,
|
|
244
|
+
f_dynamic_expire: model.f_dynamic_expire,
|
|
245
|
+
f_hascard: model.f_hascard,
|
|
246
|
+
f_share_times: model.f_share_times,
|
|
247
|
+
f_share_open: model.f_share_open,
|
|
248
|
+
f_operatorid: Vue.$login.f.id,
|
|
249
|
+
f_operator: Vue.$login.f.name,
|
|
250
|
+
f_orgid: Vue.$login.f.orgid,
|
|
251
|
+
f_orgname: Vue.$login.f.orgs,
|
|
252
|
+
f_depid: Vue.$login.f.depids,
|
|
253
|
+
f_depname: Vue.$login.f.deps,
|
|
254
|
+
|
|
255
|
+
gasmodellist: Arrlist
|
|
256
|
+
}
|
|
257
|
+
return Vue.resetpost('rs/logic/addGasBrand', {data: data}, {resolveMsg: '添加气表成功', rejectMsg: '增加气表失败'})
|
|
258
|
+
},
|
|
259
|
+
// 修改气表品牌
|
|
260
|
+
modifyGasBrand (model, Arrlist) {
|
|
261
|
+
console.log('气表品牌保存,,', model)
|
|
262
|
+
model.f_operatorid = Vue.$login.f.id
|
|
263
|
+
model.f_operator = Vue.$login.f.name
|
|
264
|
+
model.f_orgid = Vue.$login.f.orgid
|
|
265
|
+
model.f_orgname = Vue.$login.f.orgs
|
|
266
|
+
model.f_depid = Vue.$login.f.depids
|
|
267
|
+
model.f_depname = Vue.$login.f.deps
|
|
268
|
+
return Vue.resetpost('rs/logic/updataGasBrand', {data: {data: model, gasmodellist: Arrlist}}, {resolveMsg: '修改气表品牌成功', rejectMsg: '修改气表品牌失败'})
|
|
269
|
+
},
|
|
270
|
+
// 删除气表品牌
|
|
271
|
+
delGasBrand (row) {
|
|
272
|
+
console.log(row)
|
|
273
|
+
return Vue.resetpost('rs/logic/delGasBrand', {data: {id: row.id, f_orgid: Vue.$login.f.orgid}})
|
|
274
|
+
},
|
|
275
|
+
deleteUsingOrg (row) {
|
|
276
|
+
console.log(row)
|
|
277
|
+
return Vue.resetpost('rs/logic/deleteUsingOrg', {data: {id: row.f_gasbrand_id, f_orgid: row.f_orgid}})
|
|
278
|
+
},
|
|
279
|
+
createMessage (data) {
|
|
280
|
+
return Vue.resetpost('rs/logic/messageBatchOperate', data, {resolveMsg: '生成短信成功', rejectMsg: '生成短信失败'})
|
|
281
|
+
},
|
|
282
|
+
createCustomMessage (data) {
|
|
283
|
+
return Vue.resetpost('rs/customMessage/send', {data: data}, {resolveMsg: null, rejectMsg: null})
|
|
284
|
+
},
|
|
285
|
+
createMessageNew (data) {
|
|
286
|
+
return Vue.resetpost('rs/logic/messageBatchOperateNew', data, {resolveMsg: '生成短信成功', rejectMsg: '生成短信失败'})
|
|
287
|
+
},
|
|
288
|
+
helpInfo (model) {
|
|
289
|
+
let data = {
|
|
290
|
+
id: model.id,
|
|
291
|
+
f_allowed_user: model.f_allowed_user,
|
|
292
|
+
f_allowed_company: model.f_allowed_company,
|
|
293
|
+
f_password: model.f_password,
|
|
294
|
+
f_operator: model.f_operator
|
|
295
|
+
}
|
|
296
|
+
return Vue.resetpost('rs/logic/helpInfoAdd', {data: data})
|
|
297
|
+
},
|
|
298
|
+
del (model) {
|
|
299
|
+
let data = {
|
|
300
|
+
id: model.id
|
|
301
|
+
}
|
|
302
|
+
return Vue.resetpost('rs/logic/delHelpRow', {data: data})
|
|
303
|
+
},
|
|
304
|
+
|
|
305
|
+
// 抄表册
|
|
306
|
+
gasMeterBook (model, row) {
|
|
307
|
+
console.log('表册信息保存,,', model)
|
|
308
|
+
let data = {
|
|
309
|
+
f_book_code: model.f_book_code,
|
|
310
|
+
f_book_name: model.f_book_name,
|
|
311
|
+
f_inputtor: model.f_inputtor,
|
|
312
|
+
f_period: model.f_period,
|
|
313
|
+
f_hand_begin_date: model.f_hand_begin_date,
|
|
314
|
+
f_hand_end_date: model.f_hand_end_date,
|
|
315
|
+
f_hand_month: model.f_hand_month ? model.f_hand_month : null,
|
|
316
|
+
f_book_remark: model.f_book_remark,
|
|
317
|
+
f_filiale_id: model.f_filiale_id,
|
|
318
|
+
f_filiale_name: model.f_filiale_name,
|
|
319
|
+
f_comments: model.f_comments,
|
|
320
|
+
f_state: '有效',
|
|
321
|
+
f_book_state: model.f_book_state,
|
|
322
|
+
f_meterbook_end_date:model.f_meterbook_end_date,
|
|
323
|
+
f_operatorid: Vue.$login.f.id,
|
|
324
|
+
f_operator: Vue.$login.f.name,
|
|
325
|
+
f_orgid: model.f_filiale_id,
|
|
326
|
+
f_orgname: model.f_filiale_name,
|
|
327
|
+
f_depid: Vue.$login.f.depids,
|
|
328
|
+
f_depname: Vue.$login.f.deps,
|
|
329
|
+
f_book_slice_area: model.f_book_slice_area,
|
|
330
|
+
userid: Vue.$login.f.id,
|
|
331
|
+
type: '添加'
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
if (row && row.id != null) {
|
|
335
|
+
data.id = row.id
|
|
336
|
+
data.version = row.version
|
|
337
|
+
data.type = '修改'
|
|
338
|
+
}
|
|
339
|
+
console.log('data提交之前', data)
|
|
340
|
+
return Vue.resetpost('rs/logic/saveMeterBook', {data: data})
|
|
341
|
+
},
|
|
342
|
+
gasPrice (model, row, blodid) {
|
|
343
|
+
let data = {
|
|
344
|
+
f_blodid: blodid,
|
|
345
|
+
f_price_type: model.f_price_type,
|
|
346
|
+
f_price_name: model.f_price_name,
|
|
347
|
+
f_user_type: model.f_user_type,
|
|
348
|
+
f_gasproperties: model.f_gasproperties,
|
|
349
|
+
f_perform_date: model.f_perform_date,
|
|
350
|
+
f_end_date: '2099-12-31 23:59:59',
|
|
351
|
+
f_islow_income: model.f_islow_income - 0,
|
|
352
|
+
f_limit_cycle: model.f_limit_cycle ? model.f_limit_cycle : 0,
|
|
353
|
+
f_limit_gas: model.f_limit_gas ? model.f_limit_gas : 0,
|
|
354
|
+
|
|
355
|
+
// 阶梯相关字段
|
|
356
|
+
f_stairmonths: null,
|
|
357
|
+
f_population_base: null,
|
|
358
|
+
f_stair_start_date: null,
|
|
359
|
+
f_add_price: model.f_add_price,
|
|
360
|
+
f_isheat: model.f_isheat - 0,
|
|
361
|
+
f_deduction_way: model.f_deduction_way,
|
|
362
|
+
// 采暖季相关字段
|
|
363
|
+
f_heat_start_date: model.f_heat_start_date ? model.f_heat_start_date : null,
|
|
364
|
+
f_heat_cycle: model.f_heat_cycle ? model.f_heat_cycle : null,
|
|
365
|
+
|
|
366
|
+
f_priority: model.f_priority,
|
|
367
|
+
f_comments: model.f_comments,
|
|
368
|
+
f_state: '有效',
|
|
369
|
+
f_operatorid: Vue.$login.f.id,
|
|
370
|
+
f_operator: Vue.$login.f.name,
|
|
371
|
+
f_orgid: Vue.$login.f.orgid,
|
|
372
|
+
f_orgname: Vue.$login.f.orgs,
|
|
373
|
+
f_depid: Vue.$login.f.depids,
|
|
374
|
+
f_depname: Vue.$login.f.deps,
|
|
375
|
+
|
|
376
|
+
// 所属分公司
|
|
377
|
+
f_filialeid: model.f_filialeid,
|
|
378
|
+
f_filialename: model.f_filialename,
|
|
379
|
+
|
|
380
|
+
detailprice: model.detailprice,
|
|
381
|
+
f_processid: model.f_processid,
|
|
382
|
+
userid: Vue.$login.f.id,
|
|
383
|
+
audit: model.audit,
|
|
384
|
+
type: '添加'
|
|
385
|
+
}
|
|
386
|
+
if(model.f_priceStates && model.f_priceStates=='否'){
|
|
387
|
+
data.f_end_date=null
|
|
388
|
+
}
|
|
389
|
+
if (model.toBeUsePriceId && model.toBeUsePriceVersion) {
|
|
390
|
+
// 待使用 气价的id
|
|
391
|
+
data.toBeUsePriceId = model.toBeUsePriceId
|
|
392
|
+
data.toBeUsePriceVersion = model.toBeUsePriceVersion
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
if (model.limit_gas) {
|
|
396
|
+
data.limit_gas = model.limit_gas
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
if (data.purchaselimit) {
|
|
400
|
+
data.purchaselimit.forEach((item, index) => {
|
|
401
|
+
data.purchaselimit[index].value = model.purchaselimit[index].value
|
|
402
|
+
})
|
|
403
|
+
}
|
|
404
|
+
if (data.f_price_type === '固定气价') {
|
|
405
|
+
if (data.detailprice[0].id) {
|
|
406
|
+
delete data.detailprice[0].id
|
|
407
|
+
}
|
|
408
|
+
data.detailprice[0].f_price_name = 1
|
|
409
|
+
} else if (data.f_price_type === '混合气价') {
|
|
410
|
+
if (delete data.detailprice[0].id) {
|
|
411
|
+
delete data.detailprice[0].id
|
|
412
|
+
}
|
|
413
|
+
data.detailprice[0].f_price_name = 1
|
|
414
|
+
data.detailprice[0].f_mixprice = model.detailprice[0].f_mixprice[0]
|
|
415
|
+
if (delete data.detailprice[1].id) {
|
|
416
|
+
delete data.detailprice[1].id
|
|
417
|
+
}
|
|
418
|
+
data.detailprice[1].f_price_name = 2
|
|
419
|
+
data.detailprice[1].f_mixprice = model.detailprice[1].f_mixprice[0]
|
|
420
|
+
} else if (data.f_price_type === '阶梯气价') {
|
|
421
|
+
data.f_stairmonths = model.f_stairmonths
|
|
422
|
+
data.f_population_base = model.f_population_base
|
|
423
|
+
data.f_stair_start_date = model.f_stair_start_date
|
|
424
|
+
data.detailprice.forEach((item, index) => {
|
|
425
|
+
data.detailprice[index].f_price_name = index + 1
|
|
426
|
+
if (index === 0){
|
|
427
|
+
data.detailprice[index].f_available_gas = data.detailprice[index].f_gas
|
|
428
|
+
} else {
|
|
429
|
+
data.detailprice[index].f_available_gas = data.detailprice[index].f_gas-data.detailprice[index-1].f_gas
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
if (data.detailprice[index].id) {
|
|
433
|
+
if (delete data.detailprice[index].id) {
|
|
434
|
+
delete data.detailprice[index].id
|
|
435
|
+
}
|
|
436
|
+
} else if (data.detailprice[index].f_ratio) {
|
|
437
|
+
data.detailprice[index].f_ratio = null
|
|
438
|
+
} else if (!data.detailprice[index].f_add_gas) {
|
|
439
|
+
data.detailprice[index].f_add_gas = 0
|
|
440
|
+
} else if (!data.detailprice[index].f_add_gas_heat) {
|
|
441
|
+
data.detailprice[index].f_add_gas_heat = 0
|
|
442
|
+
}
|
|
443
|
+
})
|
|
444
|
+
}
|
|
445
|
+
if (row && row.id != null) {
|
|
446
|
+
data.oldprice = {
|
|
447
|
+
id: row.id
|
|
448
|
+
}
|
|
449
|
+
data.type = '修改'
|
|
450
|
+
data.f_price_id = row.f_price_id
|
|
451
|
+
data.f_version = (row.f_version - 0)
|
|
452
|
+
}
|
|
453
|
+
console.log('data提交之前', data)
|
|
454
|
+
return Vue.resetpost('rs/logic/gasprice', {data: data})
|
|
455
|
+
},
|
|
456
|
+
basicLiving (model, row) {
|
|
457
|
+
console.log('看传过来的model')
|
|
458
|
+
console.log(model)
|
|
459
|
+
let data = {
|
|
460
|
+
f_userinfo_id: model.f_userinfo_id,
|
|
461
|
+
f_userfiles_id: model.f_userfiles_id,
|
|
462
|
+
f_start_date: model.f_start_date,
|
|
463
|
+
f_end_date: model.f_end_date,
|
|
464
|
+
// f_period: model.f_period,
|
|
465
|
+
f_state: '有效',
|
|
466
|
+
f_price_id: model.f_price_id,
|
|
467
|
+
f_operatorid: Vue.$login.f.id,
|
|
468
|
+
f_operator: Vue.$login.f.name,
|
|
469
|
+
f_orgid: Vue.$login.f.orgid,
|
|
470
|
+
f_orgname: Vue.$login.f.orgs,
|
|
471
|
+
f_depid: Vue.$login.f.depids,
|
|
472
|
+
f_depname: Vue.$login.f.deps,
|
|
473
|
+
|
|
474
|
+
type: '添加'
|
|
475
|
+
}
|
|
476
|
+
if (row && row.id != null) {
|
|
477
|
+
data.oldbasicliving = {
|
|
478
|
+
id: row.id
|
|
479
|
+
}
|
|
480
|
+
data.type = '修改'
|
|
481
|
+
}
|
|
482
|
+
console.log('data提交之前', data)
|
|
483
|
+
return Vue.resetpost('rs/logic/addBasicLiving', {data: data})
|
|
484
|
+
},
|
|
485
|
+
sendMessage (condition) {
|
|
486
|
+
return Vue.resetpost('rs/logic/sendSms', {condition: condition})
|
|
487
|
+
},
|
|
488
|
+
deletMessage (condition) {
|
|
489
|
+
return Vue.resetpost('rs/logic/deleteSms', {condition: condition}, {resolveMsg: '删除短信成功', rejectMsg: '删除短信失败'})
|
|
490
|
+
},
|
|
491
|
+
deletAllMessage (condition) {
|
|
492
|
+
return Vue.resetpost('rs/logic/deleteSms', {condition: condition, operate: 'all'}, {resolveMsg: '删除短信成功', rejectMsg: '删除短信失败'})
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
export default LogicService
|
|
@@ -63,4 +63,8 @@ export default function () {
|
|
|
63
63
|
Vue.component('warehouse-add-maintain', (resolve) => { require(['./AddWarehousemain'], resolve) })
|
|
64
64
|
// 新表信息
|
|
65
65
|
Vue.component('meter-message', (resolve) => { require(['./MeterMessage.vue'], resolve) })
|
|
66
|
+
// 表具停用
|
|
67
|
+
Vue.component('disable-manage', (resolve) => { require(['./DisableManage'], resolve) })
|
|
68
|
+
// 停用记录查看
|
|
69
|
+
Vue.component('disable-record', (resolve) => { require(['./disableRecord'], resolve) })
|
|
66
70
|
}
|
|
@@ -346,6 +346,7 @@
|
|
|
346
346
|
}
|
|
347
347
|
},
|
|
348
348
|
methods: {
|
|
349
|
+
|
|
349
350
|
setTypeprice (val, row) {
|
|
350
351
|
console.log('f_typenumber', this.f_typenumber)
|
|
351
352
|
if (this.f_typenumber !== ' ') {
|
|
@@ -398,6 +399,21 @@
|
|
|
398
399
|
await this.$resetpost('rs/logic/sale_othercharge_logic_nopay', data, {resolveMsg: '生成其他欠费成功', rejectMsg: '生成其他欠费失败'})
|
|
399
400
|
this.$dispatch('success')
|
|
400
401
|
},
|
|
402
|
+
getBusinessData () {
|
|
403
|
+
if (this.model.f_print[0] === '电子发票') {
|
|
404
|
+
if (!this.row.f_taxpayer_id) {
|
|
405
|
+
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
406
|
+
}
|
|
407
|
+
if (!this.row.f_paper_name) {
|
|
408
|
+
this.row.f_paper_name = this.row.f_user_name
|
|
409
|
+
}
|
|
410
|
+
if (!this.row.f_address_phone) {
|
|
411
|
+
this.row.f_address_phone = this.row.f_address + ' ' + this.row.f_user_phone
|
|
412
|
+
}
|
|
413
|
+
this.eticket_msg = true
|
|
414
|
+
}
|
|
415
|
+
return this.$LogicService.otherChargeData(this.model, this.row)
|
|
416
|
+
},
|
|
401
417
|
// 校验发票信息
|
|
402
418
|
checkInvoiceMsg () {
|
|
403
419
|
if (this.model.f_print[0] === '电子发票') {
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div id='PaymentCode'>
|
|
3
|
+
<modal :show.sync="paymentCodeShow" 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
|
+
<div class="form-horizontal">
|
|
9
|
+
<div class="form-group">
|
|
10
|
+
<input type="text" class="form-control" id="paycode" @keyup.enter="ConfirmCode" @blur="paycodefocus"
|
|
11
|
+
v-model="paymentCode" placeholder="请扫描用户付款码" v-el:paycode>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
</article>
|
|
15
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
16
|
+
<button type="button" class="btn btn-default" @click='closeCode'>取消</button>
|
|
17
|
+
</footer>
|
|
18
|
+
</modal>
|
|
19
|
+
</div>
|
|
20
|
+
</template>
|
|
21
|
+
|
|
22
|
+
<script>
|
|
23
|
+
export default {
|
|
24
|
+
name: 'PaymentCode',
|
|
25
|
+
props: {
|
|
26
|
+
// 付款方式
|
|
27
|
+
payment: {},
|
|
28
|
+
// 业务类型
|
|
29
|
+
type: {},
|
|
30
|
+
// 用户信息
|
|
31
|
+
row: {},
|
|
32
|
+
// 付款金额
|
|
33
|
+
money: {}
|
|
34
|
+
},
|
|
35
|
+
data () {
|
|
36
|
+
return {
|
|
37
|
+
// 付款码弹框显示
|
|
38
|
+
paymentCodeShow: false,
|
|
39
|
+
// 付款码值
|
|
40
|
+
paymentCode: null,
|
|
41
|
+
// 付款码流程控制
|
|
42
|
+
paycoderesolve: null,
|
|
43
|
+
// 付款码返回数据
|
|
44
|
+
paymentCodeReturnData: {},
|
|
45
|
+
// 定时器
|
|
46
|
+
timer: null,
|
|
47
|
+
// 收费成功id
|
|
48
|
+
sellinggasId: null,
|
|
49
|
+
canPayment: this.$appdata.getSingleValue('微信支付付款方式') ? this.$appdata.getSingleValue('微信支付付款方式') : '',
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
created () {
|
|
53
|
+
},
|
|
54
|
+
ready () {
|
|
55
|
+
},
|
|
56
|
+
methods: {
|
|
57
|
+
// 返回结果为true意味着可以通行
|
|
58
|
+
flowPath () {
|
|
59
|
+
return new Promise((resolve) => {
|
|
60
|
+
this.paycoderesolve = resolve
|
|
61
|
+
// 如果是付款码支付则显示界面扫用户付款码收钱
|
|
62
|
+
if (this.canPayment.indexOf(this.payment.toString()) !== -1 || this.payment.toString().indexOf('&') !== -1) {
|
|
63
|
+
this.paymentCodeShow = true
|
|
64
|
+
this.paycodefocus()
|
|
65
|
+
} else {
|
|
66
|
+
this.paycoderesolve({msg: '不是付款码支付', result: true})
|
|
67
|
+
}
|
|
68
|
+
})
|
|
69
|
+
},
|
|
70
|
+
// 付款码框获得焦点
|
|
71
|
+
paycodefocus () {
|
|
72
|
+
this.$nextTick(() => {
|
|
73
|
+
this.$els.paycode.focus()
|
|
74
|
+
})
|
|
75
|
+
},
|
|
76
|
+
// 付款码支付流程
|
|
77
|
+
async ConfirmCode () {
|
|
78
|
+
// 扫完一次码之后失去焦点,避免重复扫码
|
|
79
|
+
this.paymentCodeShow = false
|
|
80
|
+
let data = {
|
|
81
|
+
f_userinfo_id: this.row ? this.row.f_userinfo_id : null,
|
|
82
|
+
type: this.type ? this.type : '燃气费',
|
|
83
|
+
f_operatorid: this.$login.f.id,
|
|
84
|
+
f_operator: this.$login.f.name,
|
|
85
|
+
f_user_id: this.row ? this.row.f_user_id : null,
|
|
86
|
+
f_userfiles_id: this.row ? this.row.f_userfiles_id : null,
|
|
87
|
+
money: this.money,
|
|
88
|
+
f_payment: this.payment,
|
|
89
|
+
auth_code: this.paymentCode,
|
|
90
|
+
filiale: this.$login.f.orgid,
|
|
91
|
+
body: this.$login.f.orgs
|
|
92
|
+
}
|
|
93
|
+
if (this.type === '其他收费') {
|
|
94
|
+
data.f_details = this.$parent.getBusinessData()
|
|
95
|
+
}
|
|
96
|
+
let res = await this.$resetpost('rs/logic/WeiXinPay', data, {resolveMsg: null, rejectMsg: '服务器内部出错,'})
|
|
97
|
+
this.paymentCodeReturnData = res = res.data
|
|
98
|
+
if (res.result_msg == '支付确认成功') {
|
|
99
|
+
this.paycoderesolve({msg: '支付完成', result: true})
|
|
100
|
+
this.$closeAlert()
|
|
101
|
+
} else if (res.result_msg == '支付结果未知') {
|
|
102
|
+
// 支付结果未知, 根据商户订单号继续查询
|
|
103
|
+
this.$showAlert(`正在查询用户付款状态,请勿进行任何操作,耐心等待,如长时间未响应可手动取消`, 'warning')
|
|
104
|
+
let self = this
|
|
105
|
+
// 启动定时器之前先关闭定时器,防止之前的定时器未关闭
|
|
106
|
+
if (this.timer) {
|
|
107
|
+
this.closeTimer()
|
|
108
|
+
}
|
|
109
|
+
let times = 1
|
|
110
|
+
this.timer = setInterval(async () => {
|
|
111
|
+
times++
|
|
112
|
+
let res1 = await self.$resetpost('rs/logic/WeiXinPayStatus', res, {resolveMsg: null, rejectMsg: '付款码支付查询出错,'})
|
|
113
|
+
this.paymentCodeReturnData = res1.data
|
|
114
|
+
res1 = res1.data
|
|
115
|
+
// 支付成功关闭定时器
|
|
116
|
+
if (res1.result_msg == '支付确认成功') {
|
|
117
|
+
self.paycoderesolve({msg: '支付完成', result: true})
|
|
118
|
+
self.closeTimer()
|
|
119
|
+
return
|
|
120
|
+
}
|
|
121
|
+
if (res1.result_msg == '支付失败') {
|
|
122
|
+
this.$showAlert(`支付失败, 请提醒用户重新付款`, 'danger')
|
|
123
|
+
this.closeTimer()
|
|
124
|
+
return
|
|
125
|
+
}
|
|
126
|
+
if (times > 24) {
|
|
127
|
+
self.$showAlert(`多次查询未成功,请重新扫描用户付款码`, 'danger')
|
|
128
|
+
self.closeTimer()
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
}, 5000)
|
|
132
|
+
} else {
|
|
133
|
+
this.$showAlert(`${res.result_msg}, 请重新扫描用户付款码`, 'danger')
|
|
134
|
+
}
|
|
135
|
+
// 清空付款码
|
|
136
|
+
this.paymentCode = ''
|
|
137
|
+
},
|
|
138
|
+
// 付款成功更新收费记录订单号
|
|
139
|
+
async updateSellinggas () {
|
|
140
|
+
if (this.payment.toString().indexOf('&') !== -1) {
|
|
141
|
+
let sqldata = `update t_sellinggas set f_serial_id = '${this.paymentCodeReturnData.f_out_trade_no}' where id = '${this.sellinggasId}'`
|
|
142
|
+
await this.$resetpost('rs/logic/runSQL', {data: {sql: sqldata}}, {resolveMsg: null, rejectMsg: '更新收费记录订单号失败'})
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
// 关闭定时器
|
|
146
|
+
closeTimer () {
|
|
147
|
+
console.log('关闭定时器')
|
|
148
|
+
clearInterval(this.timer)
|
|
149
|
+
this.timer = null
|
|
150
|
+
},
|
|
151
|
+
closeCode () {
|
|
152
|
+
this.$showMessage('取消后无法继续收款,确定取消吗?', ['confirm', 'cancel']).then((res) => {
|
|
153
|
+
if (res == 'confirm') {
|
|
154
|
+
this.paymentCodeShow = false
|
|
155
|
+
this.$closeAlert()
|
|
156
|
+
this.paycoderesolve({msg: '支付取消', result: false})
|
|
157
|
+
this.closeTimer()
|
|
158
|
+
}
|
|
159
|
+
})
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
</script>
|
|
164
|
+
|
|
165
|
+
<style lang="less">
|
|
166
|
+
|
|
167
|
+
</style>
|
|
@@ -117,4 +117,6 @@ export default function () {
|
|
|
117
117
|
Vue.component('message-report', (resolve) => { require(['./revenue/sms/MessageReport.vue'], resolve) })
|
|
118
118
|
// 账单推送
|
|
119
119
|
Vue.component('account-message-list', (resolve) => { require(['./revenue/sms/AccountMessageList.vue'], resolve) })
|
|
120
|
+
// 付款码支付
|
|
121
|
+
Vue.component('payment-code', (resolve) => { require(['./PaymentCode.vue'], resolve) })
|
|
120
122
|
}
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
<div v-show="!$parent.$parent.authArr.includes('读卡限定')">
|
|
12
12
|
<div class="form-group col-sm-3">
|
|
13
13
|
<label class="font_normal_body">模糊查询</label>
|
|
14
|
-
<input type="text" class="input_search" style="width:60%" v-model="model.searchQuery" placeholder='编号 名称 地址 电话 表号'
|
|
15
|
-
@keyup.enter="$parent.$parent.clean()" condition="(f_userinfo_code like '%{}%' OR f_user_name like '%{}%' OR f_user_phone like '%{}%' OR address.f_address like '%{}%' OR u.f_meternumber like '%{}%')">
|
|
14
|
+
<input type="text" class="input_search" style="width:60%" v-model="model.searchQuery" placeholder='编号 名称 地址 电话 表号 备用电话 租户电话'
|
|
15
|
+
@keyup.enter="$parent.$parent.clean()" condition="(f_userinfo_code like '%{}%' OR f_user_name like '%{}%' OR f_user_phone like '%{}%' OR address.f_address like '%{}%' OR u.f_meternumber like '%{}%' OR f_rent_phone like '%{}%' OR f_zuhu_phone like '%{}%')">
|
|
16
16
|
</div>
|
|
17
17
|
<div class="form-group col-sm-3" >
|
|
18
18
|
<label class="font_normal_body">客户编号</label>
|
|
@@ -99,10 +99,10 @@ let LogicService = {
|
|
|
99
99
|
f_serial_number: model.f_serial_number,
|
|
100
100
|
f_userfiles_id: row.f_userfiles_id,
|
|
101
101
|
f_user_id: row.f_user_id,
|
|
102
|
-
f_user_name:row.f_user_name,
|
|
103
|
-
f_address:row.f_address,
|
|
104
|
-
f_user_type:row.f_user_type,
|
|
105
|
-
f_gasproperties:row.f_gasproperties,
|
|
102
|
+
f_user_name: row.f_user_name,
|
|
103
|
+
f_address: row.f_address,
|
|
104
|
+
f_user_type: row.f_user_type,
|
|
105
|
+
f_gasproperties: row.f_gasproperties,
|
|
106
106
|
// f_number: model.f_number,
|
|
107
107
|
// f_unitprice: model.f_unitprice,
|
|
108
108
|
f_collection: model.f_collection,
|
|
@@ -132,6 +132,47 @@ let LogicService = {
|
|
|
132
132
|
}
|
|
133
133
|
return Vue.resetpost('rs/logic/sale_othercharge_logic', data, {resolveMsg: '其他收费成功', rejectMsg: '其他收费失败'})
|
|
134
134
|
},
|
|
135
|
+
otherChargeData (model, row) {
|
|
136
|
+
let data = {
|
|
137
|
+
f_time_date: model.f_time_date,
|
|
138
|
+
f_serial_id: model.f_serial_id,
|
|
139
|
+
record_userinfo: row.f_userinfo_id,
|
|
140
|
+
f_serial_number: model.f_serial_number,
|
|
141
|
+
f_userfiles_id: row.f_userfiles_id,
|
|
142
|
+
f_user_id: row.f_user_id,
|
|
143
|
+
f_user_name: row.f_user_name,
|
|
144
|
+
f_address: row.f_address,
|
|
145
|
+
f_user_type: row.f_user_type,
|
|
146
|
+
f_gasproperties: row.f_gasproperties,
|
|
147
|
+
// f_number: model.f_number,
|
|
148
|
+
// f_unitprice: model.f_unitprice,
|
|
149
|
+
f_collection: model.f_collection,
|
|
150
|
+
f_comments: model.f_comments,
|
|
151
|
+
f_payment: model.f_payment[0],
|
|
152
|
+
f_voucher_number: model.f_voucher_number,
|
|
153
|
+
f_bill_style: model.f_print[0],
|
|
154
|
+
// f_brand_spec: model.f_brand_spec[0],
|
|
155
|
+
f_userinfo_id: row.f_userinfo_id,
|
|
156
|
+
f_service_person: model.f_service_person[0],
|
|
157
|
+
f_operat_type: '其他收费',
|
|
158
|
+
f_describe: `${Vue.$login.f.name}对客户${row.f_user_name}进行其他收费操作`,
|
|
159
|
+
f_state: '有效',
|
|
160
|
+
f_operator: Vue.$login.f.name,
|
|
161
|
+
f_operatorid: Vue.$login.f.id,
|
|
162
|
+
f_orgid: Vue.$login.f.orgid,
|
|
163
|
+
f_orgname: Vue.$login.f.orgs,
|
|
164
|
+
f_depid: Vue.$login.f.depids,
|
|
165
|
+
f_depname: Vue.$login.f.deps,
|
|
166
|
+
f_zoneid: Vue.$login.f.zoneid,
|
|
167
|
+
f_zones: Vue.$login.f.zones,
|
|
168
|
+
// 其他费用信息
|
|
169
|
+
t_userfees: model.t_userfees,
|
|
170
|
+
f_fee_type: model.f_fee_type[0],
|
|
171
|
+
f_fee_time: model.f_fee_time[0],
|
|
172
|
+
otherdetail: model.otherdetail
|
|
173
|
+
}
|
|
174
|
+
return data
|
|
175
|
+
},
|
|
135
176
|
otherChargeByPay (model, row) {
|
|
136
177
|
let data = {
|
|
137
178
|
f_serial_id: model.f_serial_id,
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|