sale-client 3.6.302 → 3.6.304

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sale-client",
3
- "version": "3.6.302",
3
+ "version": "3.6.304",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -90,7 +90,7 @@
90
90
  "sinon-chai": "^2.8.0",
91
91
  "style": "0.0.3",
92
92
  "style-loader": "^0.20.3",
93
- "system-clients": "3.2.93",
93
+ "system-clients": "3.2.61",
94
94
  "url-loader": "^0.5.7",
95
95
  "vue-clipboard2": "0.3.1",
96
96
  "vue-hot-reload-api": "^1.2.0",
@@ -0,0 +1,25 @@
1
+ <template>
2
+ <div class="auto">
3
+ <fee-deduction v-if="row.f_meter_type === '物联网表'" :data="row"></fee-deduction>
4
+ <fee-machine v-if="row.f_meter_type === '机表'" :data="row"></fee-machine>
5
+ </div>
6
+ </template>
7
+ <script>
8
+ import feeDeduction from './feeDeduction'
9
+ import feeMachine from './feeMachine'
10
+ export default {
11
+ title: '补费扣费',
12
+ components: {
13
+ feeDeduction,
14
+ feeMachine
15
+ },
16
+ data () {
17
+ return {
18
+ }
19
+ },
20
+ props: ['row'],
21
+ ready () {
22
+
23
+ }
24
+ }
25
+ </script>
@@ -0,0 +1,211 @@
1
+ <template>
2
+ <div class="auto">
3
+ <validator name='v'>
4
+ <form novalidate class="form-horizontal">
5
+ <div class="row">
6
+ <div class="col-sm-4 form-group">
7
+ <label class="font_normal_body" title="参数值:计入/不计入,计入:更新档案结余及累购,不计入:只保存记录不对档案进行操作">计入累购</label>
8
+ <input v-show="false" v-model="model.f_add_gas" v-validate:f_operat_type='{required: true}'>
9
+ <v-select :value.sync="model.f_add_gas" value-single
10
+ :options='addGas' placeholder='请选择'
11
+ selected="是否计入累购"
12
+ style="width:60%"
13
+ close-on-select></v-select>
14
+ </div>
15
+
16
+ <div class="col-sm-4 form-group">
17
+ <label class="font_normal_body">操&nbsp;&nbsp;作</label>
18
+ <input v-show="false" v-model="model.f_operat_type"
19
+ v-validate:f_operat_type='{required: true}'>
20
+ <v-select v-if="this.data.f_collection_type==='按金额'" :value.sync="model.f_operat_type"
21
+ :options='operator_type' placeholder='请选择'
22
+ selected="补费"
23
+ style="width:60%"
24
+ close-on-select></v-select>
25
+ <v-select v-if="this.data.f_collection_type==='按气量'" :value.sync="model.f_operat_type"
26
+ :options='operator_type2' placeholder='请选择'
27
+ selected="补气"
28
+ style="width:60%"
29
+ close-on-select></v-select>
30
+ </div>
31
+ <div v-if="this.data.f_collection_type==='按金额'" class="col-sm-4 form-group"
32
+ :class="[$v.f_preamount.required || $v.f_preamount.dctest ? 'has-error' : 'has-success']">
33
+ <label class="font_normal_body">&nbsp;金额&nbsp;</label>
34
+ <input class="input_search" type="number" v-model="model.f_preamount" style="width:60%"
35
+ v-validate:f_preamount='{required: true, dctest: [0, ">" ]}' placeholder="金额">
36
+ </div>
37
+ <div v-if="this.data.f_collection_type==='按气量'" class="col-sm-4 form-group"
38
+ :class="[$v.f_pregas.required || $v.f_pregas.dctest ? 'has-error' : 'has-success']">
39
+ <label class="font_normal_body">&nbsp;气量&nbsp;</label>
40
+ <input class="input_search" type="number" v-model="model.f_pregas" style="width:60%"
41
+ v-validate:f_pregas='{required: true, dctest: [0, ">" ]}' placeholder="气量">
42
+ </div>
43
+ </div>
44
+
45
+ <div class="row">
46
+ <div v-if="this.data.f_collection_type==='按金额'" class="col-sm-4 form-group"
47
+ :class="[$v.f_fill_pregas.required || $v.f_fill_pregas.dctest ? 'has-error' : 'has-success']">
48
+ <label class="font_normal_body">&nbsp;&nbsp;&nbsp;气量&nbsp;&nbsp;&nbsp;&nbsp;</label>
49
+ <input class="input_search" type="number" v-model="model.f_fill_pregas" style="width:60%"
50
+ v-validate:f_fill_pregas='{required: true, dctest: [0, ">" ]}' placeholder="气量">
51
+ </div>
52
+ </div>
53
+ <div class="row">
54
+ <div class="col-sm-12">
55
+ <label for="f_paper_account" class="font_normal_body ">备&nbsp;&nbsp;注</label>
56
+ <input class="input_search" style="width:87%" rows="1" v-model="model.f_comments"></input>
57
+ </div>
58
+ </div>
59
+ </form>
60
+ <div style="text-align:right;">
61
+ <button class="btn button_search btn-gn" @click="confirm()" :disabled='!$v.valid'>确认</button>
62
+ <button class="btn button_clear btn-gn" @click="clean()">取消</button>
63
+ </div>
64
+ </validator>
65
+ <print-bill :show="print" :bill-config='config' :bill-data='billData' :data='data' @toggle="close" @printok="printok" v-ref:printbill></print-bill>
66
+ </div>
67
+ <upload :blodid="data.f_userinfo_id" v-if="true" :businessid="randomBusinessId" isremark="true" fusetype="补气"></upload>
68
+ </template>
69
+
70
+
71
+ <script>
72
+ import Vue from 'vue'
73
+ let asyncfeeDeduction = async function (self) {
74
+ await self.$getConfig(self, 'feeDeduction')
75
+ console.log('物联网补费扣费config', self.config)
76
+ if (self.config.addgas) {
77
+ self.model.f_add_gas = '计入'
78
+ } else {
79
+ self.model.f_add_gas = '不计入'
80
+ }
81
+ }
82
+ export default {
83
+ title: '物联网表补费扣费',
84
+ data () {
85
+ return {
86
+ blodid: '',
87
+ randomBusinessId: '',
88
+ resid: [], // 存放新增的f_files表中id
89
+ showupload: false,
90
+ config: {
91
+ addgas: false,
92
+ hasPrint: false
93
+ },
94
+ addGas: [{label: '计入', value: '计入'}, {label: '不计入', value: '不计入'}],
95
+ operator_type: [{label: '补费', value: '物联网补费'}, {label: '扣费', value: '物联网扣费'}],
96
+ operator_type2: [{label: '补气', value: '物联网补气'}, {label: '扣气', value: '物联网扣气'}],
97
+ print: false,
98
+ billData: {
99
+ url: 'rs/report/MakeUp',
100
+ operator: this.$login.f.name,
101
+ billnumber: ''
102
+ },
103
+ model: {
104
+ f_operat_type: '',
105
+ f_pregas: 0,
106
+ f_preamount: 0,
107
+ f_fill_pregas: 0,
108
+ f_comments: ''
109
+ }
110
+ }
111
+ },
112
+ props: ['data'],
113
+ ready () {
114
+ if (this.data.f_collection_type === '按气量') {
115
+ this.model.f_operat_type = ['物联网补费']
116
+ } else {
117
+ this.model.f_operat_type = ['物联网补费']
118
+ }
119
+ this.getRandomId()
120
+ asyncfeeDeduction(this)
121
+ },
122
+ events: {
123
+ // 删除Resid数组元素
124
+ 'delResid' (val) {
125
+ this.resid.$remove({id: val, f_biobid: ''})
126
+ // this.resid.splice(this.resid.indexOf({id:val,f_biobid:''}),1);
127
+ },
128
+ // 增加Resid数组元素
129
+ 'resid' (val) {
130
+ this.resid.push({id: val, f_biobid: ''})
131
+ }
132
+ },
133
+ methods: {
134
+ getRandomId () {
135
+ this.randomBusinessId = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
136
+ let res = Math.random() * 16 | 0
137
+ let v = c == 'x' ? res : (res & 0x3 | 0x8)
138
+ return v.toString(16)
139
+ })
140
+ },
141
+ async confirm () {
142
+ let param = {
143
+ fillgas: {
144
+ f_add_gas: this.model.f_add_gas,
145
+ f_userinfo_id: this.data.f_userinfo_id,
146
+ f_user_id: this.data.f_user_id,
147
+ f_calculation:this.data.f_calculation,
148
+ f_userfiles_id: this.data.f_userfiles_id,
149
+ f_user_name: this.data.f_user_name,
150
+ f_user_type: this.data.f_user_type,
151
+ f_gasproperties: this.data.f_gasproperties,
152
+ f_meter_type: this.data.f_meter_type,
153
+ f_pregas: this.model.f_pregas,
154
+ f_address: this.data.f_address,
155
+ f_meter_brand: this.data.f_meter_brand,
156
+ f_preamount: this.model.f_preamount,
157
+ f_fill_pregas: this.model.f_fill_pregas,
158
+ f_type: this.model.f_operat_type[0],
159
+ f_comments: this.model.f_comments,
160
+ f_billing: this.data.f_billing,
161
+ f_operator: Vue.$login.f.name,
162
+ f_operatorid: Vue.$login.f.id,
163
+ f_orgid: Vue.$login.f.orgid,
164
+ f_orgname: Vue.$login.f.orgs,
165
+ f_depid: Vue.$login.f.depids,
166
+ f_depname: Vue.$login.f.deps,
167
+ f_card_id: this.data.f_card_id,
168
+ f_balance: this.data.f_balance_amount,
169
+ f_operat_type: this.model.f_operat_type[0],
170
+ f_describe: `${this.$login.f.name}对用户${this.data.f_user_name}进行${this.model.f_operat_type}操作`,
171
+ f_state: '有效'
172
+ }
173
+ }
174
+ this.$resetpost('rs/logic/feededuction', {data: param}, {
175
+ warnMsg: `确定要对用户${this.data.f_user_name}进行${this.model.f_operat_type}吗?`,
176
+ resolveMsg: `${this.model.f_operat_type}成功!!`,
177
+ rejectMsg: `${this.model.f_operat_type}失败!!请重试!!`
178
+ }).then((res) => {
179
+ let param = []
180
+ for (let row of this.resid) {
181
+ param.push({id: row.id})
182
+ }
183
+ let data1 = {
184
+ param: param,
185
+ f_blobid: res.data.id
186
+ }
187
+ console.log('-------------------------->', data1)
188
+ this.$resetpost('rs/logic/updatefiles', data1)
189
+ if (this.config.hasPrint) {
190
+ this.data.id = res.data.id
191
+ this.data.f_bill_type = '补费扣费'
192
+ this.data.f_bill_style = '普通收据'
193
+ this.print = true
194
+ } else {
195
+ this.clean()
196
+ }
197
+ })
198
+ },
199
+ clean () {
200
+ this.$dispatch('refresh')
201
+ },
202
+ printok () {
203
+ this.$dispatch('success')
204
+ },
205
+ close () {
206
+ this.print = false
207
+ this.clean()
208
+ },
209
+ }
210
+ }
211
+ </script>
@@ -0,0 +1,169 @@
1
+ <template>
2
+ <div class="auto">
3
+ <validator name='v'>
4
+ <form novalidate class="form-horizontal">
5
+ <div class="row">
6
+ <div class="col-sm-4 form-group">
7
+ <label class="font_normal_body">&nbsp;操作&nbsp;</label>
8
+ <input v-show="false" v-model="model.f_operat_type"
9
+ v-validate:f_operat_type='{required: true}'>
10
+ <v-select :value.sync="model.f_operat_type"
11
+ :options='operator_type' placeholder='请选择'
12
+ selected="补费"
13
+ style="width:60%"
14
+ close-on-select></v-select>
15
+ <!--<v-select v-if="this.data.f_collection_type==='按气量'" :value.sync="model.f_operat_type"-->
16
+ <!--:options='operator_type2' placeholder='请选择'-->
17
+ <!--selected="补气"-->
18
+ <!--style="width:60%"-->
19
+ <!--close-on-select></v-select>-->
20
+ </div>
21
+ <div class="col-sm-4 form-group"></div>
22
+
23
+ <div class="col-sm-4 form-group"
24
+ :class="[$v.f_preamount.required || $v.f_preamount.dctest ? 'has-error' : 'has-success']">
25
+ <label class="font_normal_body">&nbsp;金额&nbsp;</label>
26
+ <input class="input_search" type="number" v-model="model.f_preamount" style="width:60%"
27
+ v-validate:f_preamount='{required: true, dctest: [0, ">" ]}' placeholder="金额">
28
+ </div>
29
+ <!--<div v-if="this.data.f_collection_type==='按气量'" class="col-sm-4 form-group"-->
30
+ <!--:class="[$v.f_pregas.required || $v.f_pregas.dctest ? 'has-error' : 'has-success']">-->
31
+ <!--<label class="font_normal_body">&nbsp;气量&nbsp;</label>-->
32
+ <!--<input class="input_search" type="number" v-model="model.f_pregas" style="width:60%"-->
33
+ <!--v-validate:f_pregas='{required: true, dctest: [0, ">" ]}' placeholder="气量">-->
34
+ <!--</div>-->
35
+
36
+ </div>
37
+
38
+ <div class="row">
39
+ <div class="col-sm-12">
40
+ <label for="f_paper_account" class="font_normal_body ">&nbsp;备注&nbsp;</label>
41
+ <input class="input_search" style="width:87%" rows="1" v-model="model.f_comments"></input>
42
+ </div>
43
+ </div>
44
+ </form>
45
+ <div style="text-align:right;">
46
+ <button class="btn button_search btn-gn" @click="confirm()" :disabled='!$v.valid'>确认</button>
47
+ <button class="btn button_clear btn-gn" @click="clean()">取消</button>
48
+ </div>
49
+ </validator>
50
+ <!--<validate-bill v-if="hasValidateBill" :data="model" @validate-bill="validateBill"></validate-bill>-->
51
+ <!--<print-bill :show="print" :bill-manager='config.hasBillManage' v-ref:printbill :bill-url='billUrl' v-on:toggle="clean" @printok="printok" :data='printModel'></print-bill>-->
52
+ <!--<print-bill :show="print" :bill-config='config' :bill-data='billData' v-on:toggle="clean" @printok="printok" :data='printModel' v-ref:printbill></print-bill>-->
53
+ </div>
54
+ <upload :blodid="data.f_userinfo_id" v-if="true" :businessid="randomBusinessId" isremark="true" fusetype="补气"></upload>
55
+ </template>
56
+
57
+
58
+ <script>
59
+ import Vue from 'vue'
60
+
61
+ export default {
62
+ title: '机表补费扣费',
63
+ data () {
64
+ return {
65
+ blodid: '',
66
+ randomBusinessId: '',
67
+ resid: [], // 存放新增的f_files表中id
68
+ showupload: false,
69
+ operator_type: [{label: '补费', value: '机表补费'}, {label: '扣费', value: '机表扣费'}],
70
+ // operator_type2:[{label:'补气',value:'机表补费'},{label:'扣气',value:'机表扣费'}],
71
+ model: {
72
+ f_operat_type: '',
73
+ f_pregas: 0,
74
+ f_preamount: 0,
75
+
76
+ f_comments: ''
77
+ }
78
+
79
+ }
80
+ },
81
+ props: ['data'],
82
+ ready () {
83
+ // this.blodid = this.row.f_userinfo_id
84
+ // if(this.data.f_collection_type==='按气量'){
85
+ this.model.f_operat_type = ['机表补费']
86
+ this.getRandomId()
87
+ // }else{
88
+ // this.model.f_operat_type=['物联网补费']
89
+ // }
90
+ },
91
+ events: {
92
+ // 删除Resid数组元素
93
+ 'delResid' (val) {
94
+ this.resid.$remove({id: val, f_biobid: ''})
95
+ // this.resid.splice(this.resid.indexOf({id:val,f_biobid:''}),1);
96
+ },
97
+ // 增加Resid数组元素
98
+ 'resid' (val) {
99
+ this.resid.push({id: val, f_biobid: ''})
100
+ }
101
+ },
102
+ methods: {
103
+ getRandomId () {
104
+ this.randomBusinessId = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
105
+ let res = Math.random() * 16 | 0
106
+ let v = c == 'x' ? res : (res & 0x3 | 0x8)
107
+ return v.toString(16)
108
+ })
109
+ },
110
+ async confirm () {
111
+ let param = {
112
+ fillgas: {
113
+ f_userinfo_id: this.data.f_userinfo_id,
114
+ f_user_id: this.data.f_user_id,
115
+ f_userfiles_id: this.data.f_userfiles_id,
116
+ f_user_name: this.data.f_user_name,
117
+ f_user_type: this.data.f_user_type,
118
+ f_gasproperties: this.data.f_gasproperties,
119
+ f_meter_type: this.data.f_meter_type,
120
+ f_pregas: this.model.f_pregas,
121
+ f_address: this.data.f_address,
122
+ f_meter_brand: this.data.f_meter_brand,
123
+ f_preamount: this.model.f_preamount,
124
+ f_type: this.model.f_operat_type[0],
125
+ // f_preamount_state: '有效',
126
+ f_comments: this.model.f_comments,
127
+ f_billing: this.data.f_billing,
128
+ f_operator: Vue.$login.f.name,
129
+ f_operatorid: Vue.$login.f.id,
130
+ f_orgid: Vue.$login.f.orgid,
131
+ f_orgname: Vue.$login.f.orgs,
132
+ f_depid: Vue.$login.f.depids,
133
+ f_depname: Vue.$login.f.deps,
134
+ f_card_id: this.data.f_card_id,
135
+ f_balance: this.data.f_balance_amount,
136
+ f_operat_type: this.model.f_operat_type[0],
137
+ f_describe: `${this.$login.f.name}对用户${this.data.f_user_name}进行${this.model.f_operat_type}操作`,
138
+ f_state: '有效'
139
+ // f_table_state:'有效'
140
+ }
141
+ }
142
+ console.log(param)
143
+ this.$resetpost('rs/logic/feemachine', {data: param}, {warnMsg: `确定要对用户${this.data.f_user_name}进行${this.model.f_operat_type}吗?`, resolveMsg: `${this.model.f_operat_type}成功!!`, rejectMsg: `${this.model.f_operat_type}失败!!请重试!!`}).then((res) => {
144
+ let param = []
145
+ for (let row of this.resid) {
146
+ param.push({id: row.id})
147
+ }
148
+ let data1 = {
149
+ param: param,
150
+ f_blobid: res.data.id
151
+ }
152
+ console.log('-------------------------->', data1)
153
+ this.$resetpost('rs/logic/updatefiles', data1)
154
+ this.clean()
155
+ })
156
+ },
157
+ clean () {
158
+ this.$dispatch('refresh')
159
+ }
160
+ // printok () {
161
+ // this.$dispatch('success')
162
+ // },
163
+ // validateBill (val) {
164
+ // this.validateOk = !val.isOk
165
+ // this.billData.bill = val.bill
166
+ // }
167
+ }
168
+ }
169
+ </script>
@@ -46,5 +46,7 @@ export default function () {
46
46
  Vue.component('garbage-operate-main', (resolve) => { require(['./GarbageOperateMain'], resolve) })
47
47
  //垃圾费右侧
48
48
  Vue.component('garbage-add', (resolve) => { require(['./GarbageAdd'], resolve) })
49
+ // 补费扣费
50
+ Vue.component('deduction-manage', (resolve) => { require(['./FeeDeduction/deductionManage'], resolve) })
49
51
 
50
52
  }
@@ -1,92 +1,92 @@
1
- <template>
2
- <div class="flex" style="height: 90%;overflow-y: scroll">
3
- <mix-price-info :data="data" v-if="data.f_price_type === '固定气价'"></mix-price-info>
4
- <stairinfo :data="data" v-if="data.f_price_type === '阶梯气价'"></stairinfo>
5
- <valueaddinfo :data="data" v-ref:valueaddinfo></valueaddinfo>
6
- <safe-check :data="data"></safe-check>
7
- <service-repair :data="data" v-if="name==='维修情况查询'"></service-repair>
8
- <bill-message @setstate="setstate" :state="state" :data="data"></bill-message>
9
- </div>
10
- </template>
11
-
12
- <script>
13
- /**
14
- *客户相关信息
15
- */
16
-
17
- import MixPriceInfo from '../../components/revenue/base/leftview/MixPriceInfo'
18
- import SafeCheck from '../../components/revenue/base/leftview/SafeCheck'
19
- import ServiceRepair from '../../components/revenue/base/leftview/ServiceRepair'
20
- export default {
21
- title: '客户相关信息',
22
- data () {
23
- return {
24
- name: ''
25
- }
26
- },
27
- components: {MixPriceInfo, SafeCheck, ServiceRepair},
28
- props: {
29
- data: {
30
- type: Object
31
- },
32
- cardData: {
33
- type: Object,
34
- default: function () {
35
- return {}
36
- }
37
- },
38
- state:{
39
- type: String,
40
- default:null
41
- }
42
- },
43
- ready () {
44
- this.getAuthority()
45
- },
46
- methods: {
47
- getAuthority () {
48
- if (this.$login.r.find(value => value == '维修情况查询')) {
49
- this.name = '维修情况查询'
50
- console.log(this.name)
51
- }
52
- console.log('查看权限', this.$login.r)
53
- },
54
- dealMsg (obj) {
55
- this.$dispatch('deal-msg', obj)
56
- },
57
- setstate(state){
58
- this.$dispatch('setstate',state)
59
- }
60
- }
61
- }
62
- </script>
63
- <style lang="less">
64
- #mulit-info-class {
65
- width: 280px;
66
- margin-right: 20px;
67
- overflow-y: auto;
68
- > div {
69
- height: auto;
70
- margin-bottom: 8px;
71
- }
72
- }
73
- // 内容显示样式
74
- .control-label {
75
- height: 23px;
76
- border-right: 1px solid #F2F6FA;
77
- margin-bottom: 0;
78
- text-align: left;
79
- }
80
-
81
- .info-content {
82
- padding:6px;
83
- span {
84
- padding-left: 5px;
85
- }
86
- }
87
- // 信息区域的表格显示紧凑
88
- .self-table > tbody > tr > td {
89
- padding: 3px;
90
- text-align: center;
91
- }
92
- </style>
1
+ <template>
2
+ <div class="flex" style="height: 90%;overflow-y: scroll">
3
+ <mix-price-info :data="data" v-if="data.f_price_type === '固定气价'"></mix-price-info>
4
+ <stairinfo :data="data" v-if="data.f_price_type === '阶梯气价'"></stairinfo>
5
+ <!-- <valueaddinfo :data="data" v-ref:valueaddinfo></valueaddinfo>-->
6
+ <safe-check :data="data"></safe-check>
7
+ <service-repair :data="data" v-if="name==='维修情况查询'"></service-repair>
8
+ <bill-message @setstate="setstate" :state="state" :data="data"></bill-message>
9
+ </div>
10
+ </template>
11
+
12
+ <script>
13
+ /**
14
+ *客户相关信息
15
+ */
16
+
17
+ import MixPriceInfo from '../../components/revenue/base/leftview/MixPriceInfo'
18
+ import SafeCheck from '../../components/revenue/base/leftview/SafeCheck'
19
+ import ServiceRepair from '../../components/revenue/base/leftview/ServiceRepair'
20
+ export default {
21
+ title: '客户相关信息',
22
+ data () {
23
+ return {
24
+ name: ''
25
+ }
26
+ },
27
+ components: {MixPriceInfo, SafeCheck, ServiceRepair},
28
+ props: {
29
+ data: {
30
+ type: Object
31
+ },
32
+ cardData: {
33
+ type: Object,
34
+ default: function () {
35
+ return {}
36
+ }
37
+ },
38
+ state:{
39
+ type: String,
40
+ default:null
41
+ }
42
+ },
43
+ ready () {
44
+ this.getAuthority()
45
+ },
46
+ methods: {
47
+ getAuthority () {
48
+ if (this.$login.r.find(value => value == '维修情况查询')) {
49
+ this.name = '维修情况查询'
50
+ console.log(this.name)
51
+ }
52
+ console.log('查看权限', this.$login.r)
53
+ },
54
+ dealMsg (obj) {
55
+ this.$dispatch('deal-msg', obj)
56
+ },
57
+ setstate(state){
58
+ this.$dispatch('setstate',state)
59
+ }
60
+ }
61
+ }
62
+ </script>
63
+ <style lang="less">
64
+ #mulit-info-class {
65
+ width: 280px;
66
+ margin-right: 20px;
67
+ overflow-y: auto;
68
+ > div {
69
+ height: auto;
70
+ margin-bottom: 8px;
71
+ }
72
+ }
73
+ // 内容显示样式
74
+ .control-label {
75
+ height: 23px;
76
+ border-right: 1px solid #F2F6FA;
77
+ margin-bottom: 0;
78
+ text-align: left;
79
+ }
80
+
81
+ .info-content {
82
+ padding:6px;
83
+ span {
84
+ padding-left: 5px;
85
+ }
86
+ }
87
+ // 信息区域的表格显示紧凑
88
+ .self-table > tbody > tr > td {
89
+ padding: 3px;
90
+ text-align: center;
91
+ }
92
+ </style>
@@ -0,0 +1,559 @@
1
+ <template>
2
+ <div @keyup.enter="search">
3
+ <partial-view v-ref:pv>
4
+ <criteria-paged :model="model" :pager="false" v-ref:paged>
5
+ <criteria @condition-changed='$parent.$parent.selfSearch' partial='criteria' v-ref:cri>
6
+ <div class="form-horizontal" novalidate partial>
7
+ <div class="row">
8
+ <div class="form-group col-sm-4">
9
+ <!-- <label>用户编号:</label> -->
10
+ <input class="input_search" condition="f_userinfo_code = '{}'" placeholder='客户编号' style="width: 80%"
11
+ type="text"
12
+ v-model="model.f_userinfo_code">
13
+ </div>
14
+ <div class="form-group col-sm-4" style="flex: 1;width: max-content">
15
+ <!-- <label>操作类型:</label> -->
16
+ <v-select :options='$parent.$parent.$parent.operationtypes'
17
+
18
+ :value.sync="model.f_operat_type"
19
+ :width="'100%'"
20
+ close-on-select
21
+ condition="f_operat_type = '{}'"
22
+ id="f_paytype"
23
+ placeholder='操作类型'
24
+ style="width: 100%"
25
+ v-model="model.f_operat_type"></v-select>
26
+ </div>
27
+ <div class="form-group col-sm-2 button-range" style="padding-right: 10px">
28
+ <button @click="search()" class="button_search">查询</button>
29
+ <div
30
+ :class="{'button_shrink_top':$parent.$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.$parent.criteriaShow}"
31
+ @click="$parent.$parent.$parent.criteriaShow=!$parent.$parent.$parent.criteriaShow" class="button_spacing" style="float: right"></div>
32
+ </div>
33
+ <div class="form-group col-sm-5" v-show="$parent.$parent.$parent.criteriaShow">
34
+ <!-- <label>用户编号:</label> -->
35
+ <input class="input_search" condition="r.f_operator like '%{}%'" placeholder='操作员' style="width: 80%"
36
+ type="text"
37
+ v-model="model.f_operator">
38
+ </div>
39
+ </div>
40
+ <!-- <partial name="cardcriteria"></partial> -->
41
+ <!-- <div class="form-group">
42
+ <partial name="cardcriteria"></partial>
43
+ </div> -->
44
+ </div>
45
+ </criteria>
46
+ <div partial="list" style="overflow-y: scroll;height: 90%">
47
+ <accordion :one-at-atime="true" type="info" >
48
+ <panel :is-click="false" :is-open="true" type="info" v-for="row in model.rows" >
49
+ <span @click="$parent.$parent.$parent.selected(row)" class="panel-title row" slot="header"
50
+ style="cursor: pointer;">
51
+ <div class="col-sm-11">
52
+ <!-- <div class="row" v-if="row.f_state==='冲正' " style="color: red">-->
53
+ <!-- <strong :title="row.f_userinfo_code" class="col-sm-4" show-overflow-tooltip="true">{{row.f_userinfo_code.length>9?''+row.f_userinfo_code.substring(0,9)+'...':row.f_userinfo_code}}</strong>-->
54
+ <!-- <span class="col-sm-4">{{$parent.$parent.$parent.dateDes(row.f_operate_date)}}</span>-->
55
+ <!-- <span class="col-sm-4">{{row.type}}</span>-->
56
+ <!-- </div>-->
57
+ <div class="row">
58
+ <strong :title="row.f_userinfo_code" class="col-sm-4" show-overflow-tooltip="true">{{row.f_userinfo_code.length>9?''+row.f_userinfo_code.substring(0,9)+'...':row.f_userinfo_code}}</strong>
59
+ <span class="col-sm-4">{{$parent.$parent.$parent.dateDes(row.f_operate_date)}}</span>
60
+ <span class="col-sm-4">{{row.type}}</span>
61
+ </div>
62
+ </div>
63
+ <div class="col-sm-1" v-if="$parent.$parent.$parent.isOperate" title="涉及权限:冲正权限">
64
+ <dropdown class="auto"
65
+ v-if="(row.type ==='机表收费撤销' || row.type ==='卡表收费撤销' || row.type ==='物联网收费撤销' || row.type ==='其他收费撤销'
66
+ || row.type ==='气损收费撤销' || row.type ==='预存缴费' || row.type === '补卡' || row.type === '物联网收费' ||
67
+ row.type === '用户退费' || row.type === '机表收费' || row.type === '数码表收费' ||
68
+ row.type === '卡表收费' || row.type === '超用收费' || row.type === '发卡售气' || row.type === '其他收费' ||
69
+ row.type === '换表' || row.state === 1 || row.type==='调价补费' || row.type==='卡表赠气' ||
70
+ row.type==='物联网赠气'|| row.type==='物联网赠费'|| row.type==='卡表赠费'|| row.type==='卡表赠气'||
71
+ row.type==='卡表收费撤销'||row.type==='物联网补费' || row.type==='物联网扣费'||row.type==='机表补费'||
72
+ row.type==='机表扣费'||row.type==='物联网补气'||row.type==='物联网扣气'||row.type==='气损收费' ||
73
+ row.type === '气表清零' || row.type === '掉气补气' || row.type === '其他补气' || row.type === '清零补气' ||
74
+ row.type === '换表补气' || row.type === '过户'|| row.type ==='价格补差' || row.type ==='价格补差撤销') && row.type!=='新增户档案' && row.type!=='转气转出' && row.type!=='转气转入'">
75
+ <button data-toggle="dropdown" style="border: 0px;background: none;" type="button"
76
+ v-if="row.f_user_state==='正常'||row.f_user_state==='预备'||row.type==='气损收费' ">
77
+ <span class="glyphicon glyphicon-th-list"></span>
78
+ </button>
79
+ <ul class="dropdown-menu dropdown-menu-right" slot="dropdown-menu" style=" min-width: 60px;" v-if="row.f_user_state==='正常'||row.f_user_state==='预备'||row.type==='气损收费' ">
80
+ <!-- <li-->
81
+ <!-- v-if="row.type === '换新表' || row.type === '气表清零' || row.type === '掉气补气' || row.type === '其他补气' || row.type === '清零补气' || row.type === '换表补气'-->
82
+ <!-- || row.type === '补卡' || row.type === '物联网开户' || row.type === '物联网收费' || row.type === '用户退费' || row.type === '机表收费' || row.type === '数码表收费' || row.type === '卡表收费' || row.type === '超用收费' || row.type === '发卡售气' || row.type === '其他收费' || row.type === '换表' || row.type === '过户'|| row.type==='预存缴费'|| row.type==='退费'|| row.type==='调价补费' ||row.type==='卡表收费撤销'||row.type==='物联网补费' || row.type==='物联网扣费'||row.type==='机表补费'||row.type==='机表扣费'||row.type==='物联网补气'||row.type==='物联网扣气'||row.type==='气损收费' ">-->
83
+ <!-- <a @click.stop="$parent.$parent.$parent.operate('票据补打', row)" href="#">票据补打</a>-->
84
+ <!-- </li>-->
85
+ <!-- <li-->
86
+ <!-- v-if="row.state === 1 && (row.type === '其他收费欠费登记' || row.type === '迁表' || row.type === '调价预存' || row.type === '拆表' || row.type === '物联网开户' || row.type === '物联网收费'|| row.type === '卡表收费' || row.type === '其他收费'|| row.type === '气费减免'||row.type === '维修收费' || row.type === '过户' || row.type === '换新表' || row.type === '气表清零' || row.type === '机表收费' || row.type === '超用收费' || row.type === '其他收费' || row.type === '补卡'|| row.type === '调价补费'|| row.type=='预存缴费' || row.type==='卡表赠气'|| row.type==='物联网赠费'|| row.type==='卡表赠费'|| row.type==='物联网赠气')">-->
87
+ <!-- <a @click.stop="$parent.$parent.$parent.operate('撤销', row)" href="#">撤销</a>-->
88
+ <!-- </li>-->
89
+ <li>
90
+ <a @click.stop="$parent.$parent.$parent.operate('票据补打', row)" href="#">票据补打</a>
91
+ </li>
92
+ <li>
93
+ <a @click.stop="$parent.$parent.$parent.operate('撤销', row)" href="#">撤销</a>
94
+ </li>
95
+ </ul>
96
+ </dropdown>
97
+ </div>
98
+
99
+ </span>
100
+ <div class="panel-body" v-if="$parent.$parent.$parent.isSelected(row)">
101
+ <salecardgas-detail :data="row" v-if="row.type === '发卡售气'"></salecardgas-detail>
102
+ <movemeter-detail :data="row" v-if="row.type === '迁表'"></movemeter-detail>
103
+ <salecardgas-detail :data="row" v-if="row.type === '换表发卡'"></salecardgas-detail>
104
+ <cardmetercenter-detail :data="row" v-if="row.type === '卡表收费'||row.type === '数码表收费' "></cardmetercenter-detail>
105
+ <movegas-detail :data="row" v-if="row.type === '转气转出'"></movegas-detail>
106
+ <movegas-detail :data="row" v-if="row.type === '转气转入'"></movegas-detail>
107
+ <machinemetercenter-detail :data="row" v-if="row.type === '机表收费'"></machinemetercenter-detail>
108
+ <autoaccounts-detail :data="row" v-if="row.type === '自动下账'"></autoaccounts-detail>
109
+ <bankdk-detail :data="row" v-if="row.type === '银行代扣'"></bankdk-detail>
110
+ <bank-pay :data="row" v-if="row.type === '银行支付'"></bank-pay>
111
+ <wechat-pay :data="row" v-if="row.type === '微信支付'"></wechat-pay>
112
+ <disablemanage-detail :data="row" v-if="row.type === '停用'"></disablemanage-detail>
113
+ <enablemanage-detail :data="row" v-if="row.type === '启用'"></enablemanage-detail>
114
+ <replacecardmanage-detail :data="row" v-if="row.type === '补卡'"></replacecardmanage-detail>
115
+ <machinecard-detail :data="row" v-if="row.type === '机表补卡'"></machinecard-detail>
116
+ <transfermanage-detail :data="row" v-if="row.type === '过户'"></transfermanage-detail>
117
+ <othercharge-detail :data="row" v-if="row.type === '其他收费欠费登记'||row.type === '其他收费'||row.type === '维修收费'"></othercharge-detail>
118
+ <inputtorchange-detail :data="row" v-if="row.type === '抄表员变更'"></inputtorchange-detail>
119
+ <offgasaddgas-detail :data="row" v-if=" row.type === '换表补气' ||row.type === '其他补气' || row.type === '清零补气' || row.type === '掉气补气'||row.type==='物联网补费'||row.type==='物联网扣费'||row.type==='机表补费'||row.type==='机表扣费'||row.type==='物联网补气'||row.type==='物联网扣气' " ></offgasaddgas-detail>
120
+ <iotopen-detail :data="row" v-if="row.type === '开通'"></iotopen-detail>
121
+ <iotmetercenter-detail :data="row" v-if="row.type === '物联网收费' || row.type === '物联网开户' || row.type === '调价退费' || row.type === '调价补费'||row.type === '退押金' "></iotmetercenter-detail>
122
+ <overuserchange-detail :data="row" v-if="row.type === '超用收费'"></overuserchange-detail>
123
+ <adduser-detail :data="row" v-if="row.type === '新增户档案'"></adduser-detail>
124
+ <gaspricechange-detail :data="row" v-if="row.type === '气价变更'"></gaspricechange-detail>
125
+ <userchange-detail :data="row" v-if="row.type === '档案变更'"></userchange-detail>
126
+ <changemeter-detail :data="row" v-if="row.type === '换新表' || row.type === '气表清零'"></changemeter-detail>
127
+ <changeflowmeter-detail :data="row" v-if="row.type === '换卡控流量计'"></changeflowmeter-detail>
128
+ <cardoveruser-detail :data="row" v-if="row.type === '卡表超用'||row.type === '超用'"></cardoveruser-detail>
129
+ <cancellation-detail :data="row" v-if="row.type === '销户'"></cancellation-detail>
130
+ <refund-detail :data="row" v-if="row.type === '退费' || row.type == '卡表退费'"></refund-detail>
131
+
132
+ <change-meter-cancel :data="row" v-if="row.type === '换表撤销'"></change-meter-cancel>
133
+ <autoaccounts-cancel-detail :data="row" v-if="row.type === '自动下账撤销'"></autoaccounts-cancel-detail>
134
+ <transfermanage-cancel-detail :data="row" v-if="row.type === '过户撤销'"></transfermanage-cancel-detail>
135
+ <cardmetercenter-cancel-detail :data="row" v-if="row.type === '卡表收费撤销'"></cardmetercenter-cancel-detail>
136
+ <machinemetercenter-cancel-detail :data="row" v-if="row.type === '机表收费撤销'"></machinemetercenter-cancel-detail>
137
+ <machinemetercenter-cancel-detail :data="row" v-if="row.type == '预存缴费撤销'"></machinemetercenter-cancel-detail>
138
+ <othercharge-cancel-detail :data="row" v-if="row.type === '其他收费撤销'"></othercharge-cancel-detail>
139
+ <replacecardmanage-cancel-detail :data="row" v-if="row.type === '补卡撤销'"></replacecardmanage-cancel-detail>
140
+ <iotmetercenter-cancel-detail :data="row" v-if="row.type === '物联网收费撤销'"></iotmetercenter-cancel-detail>
141
+ <feededuction-detail :data="row" v-if="row.type === '补费' ||row.type === '扣费' ||row.type === '补气' ||row.type === '扣气' "></feededuction-detail>
142
+ <with-gas :data="row" v-if="row.type==='物联网赠气' || row.type==='物联网赠费'||row.type==='卡表赠气'||row.type==='卡表赠费'"></with-gas>
143
+ <replace-card-manageDetail :data="row" v-if=" row.type==='物联网补费'||row.type==='物联网扣费'||row.type==='机表补费'||row.type==='机表扣费'||row.type==='物联网补气'||row.type==='物联网扣气' "></replace-card-manageDetail>
144
+ <blacklist-detail :data="row" v-if="row.type ==='拉黑' ||row.type === '取消拉黑' "></blacklist-detail>
145
+ <advance-delivery-detail :data="row" v-if="row.type ==='卡表预交' "></advance-delivery-detail>
146
+ <machinemetercenter-detail :data="row" v-if="row.type === '预存缴费'||row.type == '调价预存'"></machinemetercenter-detail>
147
+ <price-adjustment-detail :data="row" v-if="row.type === '价格补差'"></price-adjustment-detail>
148
+ <gasloss-detail :data="row" v-if="row.type === '气损收费' || row.type === '气损收费撤销'"></gasloss-detail>
149
+ <garbage-detail :data="row" v-if="row.type === '垃圾费收费'"></garbage-detail>
150
+ </div>
151
+ <div style="margin-top: 8px;background: #FFF;" v-if="!$parent.$parent.$parent.isSelected(row)">
152
+ <span>{{row.f_describe}}</span>
153
+ </div>
154
+ </panel>
155
+ </accordion>
156
+ </div>
157
+
158
+ </criteria-paged>
159
+ </partial-view>
160
+ <record-cancel :data="cancel_data" :show.sync="cancel_show" @cancel="cancelOper()" @cancel-success="cancelSucc()" v-if="cancel_show"></record-cancel>
161
+ <reissue-bill :data="reissue_data" :show.sync="reissue_show" @cancel="reissueOper()" @reissue-success="reissueSucc()" v-if="reissue_show"></reissue-bill>
162
+ </div>
163
+ </template>
164
+ <script>
165
+ /**
166
+ *操作记录信息
167
+ */
168
+ import {PagedList} from 'vue-client'
169
+ import co from 'co'
170
+
171
+ let cancelGen = function *(self, data) {
172
+ let msgRet = yield self.$showMessage('撤销后数据不可恢复,确认撤销录入吗?', ['confirm', 'cancel'])
173
+ if (msgRet === 'cancel') return
174
+ // 撤销操作完成,刷新界面
175
+ self.search()
176
+ }
177
+
178
+ /**
179
+ * 发票补打
180
+ */
181
+ let reprintGen = async function* (self, row) {
182
+ try {
183
+ row.billUrl = self.getBillUrl(row)
184
+ if (!row.billUrl) {
185
+ self.$showMessage('当前操作类型暂时没有票据')
186
+ return
187
+ }
188
+ row.f_bill_type = row.type
189
+ row.f_bill_style = '普通收据'
190
+ row.f_operator = self.$login.f.name
191
+ row.f_operatorid = self.$login.f.id
192
+ row.f_orgid = self.$login.f.orgid
193
+ row.f_orgname = self.$login.f.orgs
194
+ row.f_depid = self.$login.f.depids
195
+ row.f_depname = self.$login.f.deps
196
+ self.reissue_data = JSON.parse(JSON.stringify(row))
197
+ if (row.type === '调价预存') {
198
+ let id = await self.$resetpost('rs/sql/singleTable_OrderBy', {
199
+ data: {
200
+ items: 'f_surplus_id',
201
+ tablename: 't_sellinggas',
202
+ condition: `id = '${row.id}'`,
203
+ orderitem: 'id'
204
+ }
205
+ }, {resolveMsg: null, rejectMsg: '查询优惠信息失败'})
206
+ self.reissue_data.id = id.data[0].f_surplus_id
207
+ }
208
+ self.reissue_show = true
209
+ } catch (error) {
210
+ if (error.status) {
211
+ self.$warn(`加载数据出错, ${JSON.stringify(error)}`, 'CardList')
212
+ }
213
+ throw error
214
+ }
215
+ }
216
+ let asyncCardList = async function (self) {
217
+ await self.$getConfig(self, 'CardList')
218
+ console.log('操作汇总config', self.config)
219
+ }
220
+ export default {
221
+ title: '操作汇总',
222
+ data () {
223
+ return {
224
+ config: {
225
+ cancleother: true, // 默认可以撤销别人的操作
226
+ cancletime: true // 默认可以冲正今天以前的操作
227
+ },
228
+ model: new PagedList(`${this.sqlurl}`, 9999,
229
+ {
230
+ items: '"' + this.items + '"',
231
+ tablename: '"' + this.tablename + '"',
232
+ orderitem: '"' + this.orderitem + '"'
233
+ }),
234
+ show: false,
235
+ asideTitle: '用户操作',
236
+ row: Object,
237
+ comp: null,
238
+ operationtypes: this.$appdata.getParam('操作类型') ? [{
239
+ label: '全部',
240
+ value: ''
241
+ }, ...this.$appdata.getParam('操作类型')] : [],
242
+
243
+ cancel_show: false,
244
+ cancel_data: null,
245
+ criteriaShow: false,
246
+ reissue_show: false,
247
+ reissue_data: null,
248
+ authArr: this.$login.r ? this.$login.r : []
249
+ }
250
+ },
251
+ props: {
252
+ sqlurl: {
253
+ type: String,
254
+ default: 'rs/sql/getRecord'
255
+ },
256
+ items: {
257
+ type: String,
258
+ default: '*'
259
+ },
260
+ tablename: {
261
+ type: String,
262
+ default: 't_record'
263
+ },
264
+ orderitem: {
265
+ type: String,
266
+ default: 'f_operate_date desc'
267
+ },
268
+ btns: {
269
+ type: Array
270
+ },
271
+ operationtype: {
272
+ type: String,
273
+ default: ''
274
+ },
275
+ userinfoid: {},
276
+ isOperate: {
277
+ type: Boolean,
278
+ default: true
279
+ },
280
+ f_orgid: ''
281
+ },
282
+ ready () {
283
+ this.$refs.paged.$refs.cri.model.f_operat_type = [this.operationtype]
284
+ asyncCardList(this)
285
+ // this.search()
286
+ },
287
+ methods: {
288
+ dateDes (date) {
289
+ return this.$login.dateDescripte(date)
290
+ },
291
+ selected (row) {
292
+ if (this.row === row) {
293
+ this.row = null
294
+ } else {
295
+ this.row = row
296
+ }
297
+ },
298
+ isSelected (row) {
299
+ return this.row === row
300
+ },
301
+ search () {
302
+ let condition = '1=1'
303
+ if (this.f_orgid) {
304
+ condition += `and (u.f_filialeid in ${this.f_orgid} or g.f_orgid in ${this.f_orgid}) `
305
+ } else {
306
+ condition += `and (u.f_filialeid = '${this.$login.f.orgid}' or g.f_orgid ='${this.$login.f.orgid}')`
307
+ }
308
+ this.$refs.pv.load(this.sqlurl, {data: {condition: condition}}).then((a) => {
309
+ if (a.data.length === 0) {
310
+ this.model.rows = []
311
+ this.model.state = '错误'
312
+ this.model.error = '没有符合条件的记录'
313
+ return
314
+ }
315
+ this.model.state = '正确'
316
+ this.model.rows = a.data
317
+ })
318
+ },
319
+ disEvent (btn) {
320
+ this.$dispatch(`${btn.eventName}`)
321
+ },
322
+ async operate (title, row) {
323
+ console.log('撤销的这条数据的信息11111', row)
324
+ if (title === '撤销') {
325
+ // 验证是否能撤销
326
+ let res = await this.$resetpost('rs/logic/recordRepealJudge', {data: row}, {
327
+ resolveMsg: null,
328
+ rejectMsg: '验证权限错误!!'
329
+ })
330
+ if (!res.data.pass) {
331
+ this.$showMessage(res.data.msg)
332
+ return
333
+ }
334
+ if (row.type === '卡表收费') {
335
+ if (!this.authArr.includes('无卡收费撤销权限')) {
336
+ this.$showAlert('当前用户没有【无卡收费撤销权限】,请联系管理员获取此权限后再进行该操作!', 'warning', 3000)
337
+ return
338
+ }
339
+ }
340
+ if (row.type === '物联网收费' || row.type === '卡表赠气' || row.type === '物联网赠费' || row.type === '卡表赠费' || row.type === '物联网赠气') {
341
+ let table_name = this.$appdata.getSingleValue('新抄表')? 't_web_handplan' : 't_handplan'
342
+ let getWebHand = await this.$SqlService.singleTable(table_name, `f_hand_state = '有效' and f_input_date > '${row.f_operate_date}' and f_userfiles_id = '${row.f_userfiles_id}'`)
343
+ console.log('长度', getWebHand)
344
+ if (getWebHand.data.length > 0) {
345
+ this.$showAlert('此次物联网收费之后有结算,不能撤销此纪录', 'warning', 1500)
346
+ return
347
+ }
348
+ } else if (row.type === '机表收费') {
349
+ let getWebHand = await this.$SqlService.singleTable('t_handplan', `f_hand_state = '有效' and f_input_date > '${row.f_operate_date}' and f_whether_pay = '是' and f_userfiles_id = '${row.f_userfiles_id}'`)
350
+
351
+ console.log('长度', getWebHand)
352
+ if (getWebHand.data.length > 0) {
353
+ this.$showAlert('此次机表收费之后有自动下账,不能撤销此纪录', 'warning', 1500)
354
+ return
355
+ }
356
+ let sql = `select th.*from t_handplan th
357
+ left join t_sellinghand tsh on th.id=tsh.f_hand_id
358
+ where th.f_hand_state = '有效' and th.f_input_date > '${row.f_operate_date}' and tsh.f_debt_money>0
359
+ and th.f_userfiles_id = '${row.f_userfiles_id}' and tsh.f_state='有效'`
360
+ let getwate = await this.$resetpost('rs/logic/sqlquery', {data: {sql: sql}}, {
361
+ resolveMsg: null,
362
+ rejectMsg: '获取记录详情出错!!'
363
+ })
364
+ if (getwate.data.length > 0) {
365
+ this.$showAlert('此次机表收费之后有自动下账,不能撤销此纪录', 'warning', 1500)
366
+ return
367
+ }
368
+ }
369
+ if (this.authArr.includes('冲正权限')) {
370
+
371
+ if (!this.config.cancletime && !this.$login.f.rolesnames.includes('财务')) {
372
+ if (!this.config.cancleother) {
373
+ if (row.f_operator != this.$login.f.name) {
374
+ this.$showAlert('不能撤销不是自己进行的操作', 'warning', 1500)
375
+ return
376
+ }
377
+ }
378
+ let a = this.$login.toStandardYearMonth()
379
+ console.log('当前时间', a < row.f_operate_date)
380
+ // if (!this.authArr.includes('跨月撤销')) {
381
+ // if (row.f_operate_date < a) {
382
+ // this.$showAlert('不能撤销非本月的记录,请联系管理员获取【跨月撤销】的权限。', 'warning', 1500)
383
+ // return
384
+ // }
385
+ a = this.$login.toStandardDateString() + ' 00:00:00'
386
+ if (row.f_operate_date < a ) {
387
+ this.$showAlert('不能撤销不是当天的操作', 'warning', 1500)
388
+ return
389
+ }
390
+ // }
391
+ }
392
+ } else {
393
+ this.$showAlert('当前用户没有【冲正权限】', 'warning', 1500)
394
+ return
395
+ }
396
+ }
397
+
398
+ if (title === '撤销') {
399
+ this.cancel_show = true
400
+ this.cancel_data = row
401
+ } else {
402
+ let reprint = reprintGen(this, row)
403
+ return co(reprint)
404
+ }
405
+ },
406
+ cancelOper () {
407
+ this.cancel_data = null
408
+ this.cancel_show = false
409
+ },
410
+ cancelSucc () {
411
+ console.log('-----------------------------撤销成功了,隐藏掉')
412
+ this.cancel_show = false
413
+ this.$dispatch('refresh')
414
+ },
415
+ reissueOper () {
416
+ this.reissue_data = null
417
+ this.reissue_show = false
418
+ },
419
+ reissueSucc () {
420
+ this.reissue_show = false
421
+ this.$dispatch('refresh')
422
+ },
423
+
424
+ getBillUrl (row) {
425
+ let type = row.type
426
+ let name = ''
427
+ // 根据type数据 选择调用的Logic
428
+ if (type === '过户') {
429
+ name = 'rs/report/transfer_bill'
430
+ } else if (type === '换新表' || type === '气表清零') {
431
+ name = 'rs/report/change_meter'
432
+ } else if (type === '机表收费' || type === '机表收费撤销') {
433
+ if (row.f_user_type === '非民用' && this.$login.r.includes('非民用纸质票据拆分')) {
434
+ name = 'rs/report/fmy_machine_bill'
435
+ } else {
436
+ name = 'rs/report/machine_bill'
437
+ }
438
+ } else if (type === '物联网收费' || type === '物联网收费撤销' || type === '物联网开户' || type === '物联网赠气') {
439
+ if (row.f_user_type === '非民用' && this.$login.r.includes('非民用纸质票据拆分')) {
440
+ name = 'rs/report/fmy_iot_bill'
441
+ } else {
442
+ name = 'rs/report/iot_bill'
443
+ }
444
+ } else if (type === '物联网补费' || type === '物联网扣费' || type === '物联网补气' || type === '物联网扣气' || type === '机表补费' || type === '机表扣费') {
445
+ name = 'rs/report/MakeUp'
446
+ } else if (type === '超用收费') {
447
+ name = 'rs/report/overuse_bill'
448
+ } else if (type === '其他收费' || type === '其他收费撤销') {
449
+ name = 'rs/report/otherCharge_bill'
450
+ } else if (type === '补卡') {
451
+ name = 'rs/report/replace_sell'
452
+ } else if (type === '发卡售气') {
453
+ if (row.f_user_type === '非民用' && this.$login.r.includes('非民用纸质票据拆分')) {
454
+ name = 'rs/report/fmy_sendCard_bill'
455
+ } else {
456
+ if (row.f_meter_classify === '金额卡表' && this.$appdata.getSingleValue('金额气量区分卡表票据')) {
457
+ name = 'rs/report/fee_sendCard_bill'
458
+ } else {
459
+ name = 'rs/report/sendCard_bill'
460
+ }
461
+ }
462
+ } else if (type === '卡表收费' || type === '卡表收费撤销' || type === '卡表赠气' || type === '卡表收费撤销') {
463
+ if (row.f_user_type === '非民用' && this.$login.r.includes('非民用纸质票据拆分')) {
464
+ name = 'rs/report/fmy_card_bill'
465
+ } else {
466
+ if (row.f_meter_classify === '金额卡表' && this.$appdata.getSingleValue('金额气量区分卡表票据')) {
467
+ name = 'rs/report/fee_card_bill'
468
+ } else {
469
+ name = 'rs/report/card_bill'
470
+ }
471
+ }
472
+ } else if (type === '预存缴费') {
473
+ name = 'rs/report/pre_sell'
474
+ } else if (type === '调价预存') {
475
+ name = 'rs/report/refund_sell'
476
+ } else if (type === '退费') {
477
+ name = 'rs/report/refund_sell'
478
+ } else if (type === '调价补费') {
479
+ name = 'rs/report/compensation_bill'
480
+ } else if (type === '数码表收费') {
481
+ name = 'rs/report/digtial_bill'
482
+ } else if (type === '气损收费' || type === '气损收费撤销') {
483
+ name = 'rs/report/gasloss_bill'
484
+ } else if (type === '掉气补气') {
485
+ name = 'rs/report/acceptOffGasAddGas_bill'
486
+ } else if (type === '其他补气') {
487
+ name = 'rs/report/acceptOtherGas_bill'
488
+ } else if (type === '清零补气' || type === '换表补气') {
489
+ if (row.f_meter_classify.indexOf('卡表') > -1) {
490
+ name = 'rs/report/card_gas_bill'
491
+ } else {
492
+ name = 'rs/report/iot_sell'
493
+ }
494
+ } else if (type === '垃圾费收费') {
495
+ name = 'rs/report/garbageChargeReport'
496
+ }
497
+ return name
498
+ },
499
+ // 撤销为统一操作,所以写到基础组件中
500
+ operateCancel (row) {
501
+ let cancel = cancelGen(this, row)
502
+ co(cancel)
503
+ },
504
+ selfSearch (args) {
505
+ // if (!this.$login.f.parent.parent.name.includes('统一资源管理')) {
506
+ // args.condition += `and f_filialeids = '${this.$login.f.f_orgids}'`
507
+ // }
508
+ if (this.f_orgid) {
509
+ args.condition += `and r.f_orgid in ${this.f_orgid}`
510
+ } else {
511
+ args.condition += `and r.f_orgid = '${this.$login.f.orgid}'`
512
+ }
513
+ if (this.authArr.includes('操作记录查询限定')) {
514
+ args.condition += ` and r.f_operatorid = '${this.$login.f.id}'`
515
+ }
516
+ this.model.search(args.condition, args.model)
517
+ }
518
+ },
519
+ watch: {
520
+ // 'userinfoid' (newVal) {
521
+ // this.model.rows={}
522
+ // if (newVal && newVal !== '') {
523
+ // this.$nextTick(function () {
524
+ // this.$refs.paged.$refs.cri.model.f_userinfo_code = newVal
525
+ // }.bind(this))
526
+ // }else{
527
+ // this.$nextTick(function () {
528
+ // this.$refs.paged.$refs.cri.model.f_userinfo_code = ""
529
+ // }.bind(this))
530
+ // }
531
+ // this.$refs.paged.$refs.cri.model.f_operat_type = ''
532
+ // }
533
+ 'userinfoid' (newVal) {
534
+ if (newVal && newVal !== '') {
535
+ this.$nextTick(function () {
536
+ this.$refs.paged.$refs.cri.model.f_userinfo_code = newVal
537
+ }.bind(this))
538
+ this.$refs.paged.$refs.cri.model.f_operat_type = ''
539
+ let condition = `f_userinfo_code = '${newVal}' and u.f_filialeid = '${this.$login.f.orgid}'`
540
+ this.$refs.pv.load(this.sqlurl, {data: {condition: condition}}).then((a) => {
541
+ if (a.data.length === 0) {
542
+ this.model.rows = []
543
+ this.model.state = '错误'
544
+ this.model.error = '没有符合条件的记录'
545
+ return
546
+ }
547
+ this.model.state = '正确'
548
+ this.model.rows = a.data
549
+ })
550
+ } else {
551
+ this.model.rows = {}
552
+ this.$nextTick(function () {
553
+ this.$refs.paged.$refs.cri.model.f_userinfo_code = ''
554
+ }.bind(this))
555
+ }
556
+ }
557
+ }
558
+ }
559
+ </script>
@@ -1,59 +1,61 @@
1
- // 分公司特殊组件页面注册
2
- import Vue from 'vue'
3
- import LogicService from './plugins/LogicService'
4
- export default function () {
5
- Vue.use(LogicService)
6
- // 黑名单
7
- Vue.component('black-list-mangae', (resolve) => { require(['./BlackList/BlackListManage'], resolve) })
8
- Vue.component('black-list-list', (resolve) => { require(['./BlackList/BlackListList'], resolve) })
9
- Vue.component('black-list', (resolve) => { require(['./BlackList/BlackList'], resolve) })
10
- // 黑名单记录查询
11
- Vue.component('black-record-query', (resolve) => { require(['./BlackList/BlackRecordQuery'], resolve) })
12
- // 特殊用户
13
- Vue.component('special-user-manage', (resolve) => { require(['./SpecialUserManage'], resolve) })
14
-
15
- // 违约金生成规则(f_end_date规则)
16
- Vue.component('overdue-set', (resolve) => { require(['./Overdue/OverdueSet'], resolve) })
17
- Vue.component('overdue-set-list', (resolve) => { require(['./Overdue/OverdueSetList'], resolve) })
18
- Vue.component('overdue-set-user', (resolve) => { require(['./Overdue/OverdueSetUser'], resolve) })
19
-
20
- // 添加或修改气表品牌组件
21
- Vue.component('add-gas-brand', (resolve) => { require(['./AddGasBrand'], resolve) })
22
- // 单个表具信息
23
- Vue.component('file-meter-info', (resolve) => { require(['./MeterinfoTest'], resolve) })
24
- // 机表收费
25
- Vue.component('machine-meter-center', (resolve) => { require(['./MachineMeterCenter'], resolve) })
26
- // 卡表收费
27
- Vue.component('card-meter-center', (resolve) => {
28
- require(['./CardMeterCenter'], resolve)
29
- })
30
- // 发卡售气
31
- Vue.component('show-card-sell-gas', (resolve) => {
32
- require(['./ShowCardSellGas'], resolve)
33
- })
34
- Vue.component('web-meter-info', (resolve) => { require(['./WebMeterInfo'], resolve) })
35
- Vue.component('edit-meter-info', (resolve) => { require(['./EditWebMeterInfo'], resolve) })
36
- // 用户基本信息test
37
- Vue.component('file-user-essential-info', (resolve) => { require(['./FilesManage/UserEssentialInfoTest'], resolve) })
38
- // 当前选择用户的表具基本信息
39
- Vue.component('user-meterinfodetail', (resolve) => { require(['./meterinfodetail'], resolve) })
40
- // 机表抄表审核
41
- Vue.component('machine-hand-audit', (resolve) => { require(['./machineHandAudit'], resolve) })
42
- // 机表抄表审核
43
- Vue.component('change-meter', (resolve) => { require(['./ChangeMeter'], resolve) })
44
- // 其他收费xin
45
- Vue.component('other-charge-new', (resolve) => { require(['./OtherChargeNew'], resolve) })
46
- // 其他收费详情小组件
47
- Vue.component('othercharge-detail', (resolve) => { require(['./OtherChargeDetail'], resolve) })
48
-
49
- // 电子发票管理 对接v4 新的表结构
50
- Vue.component('e-ticket-manage-query-v4', (resolve) => { require(['./EticketV4/EticketManage'], resolve) })
51
- // 物联网表结算
52
- Vue.component('e-ticket-open-iot-query-v4', (resolve) => { require(['./EticketV4/EticketOpenPage'], resolve) })
53
- // 机表结算
54
- Vue.component('e-ticket-open-hand-query-v4', (resolve) => { require(['./EticketV4/EticketOpenJBPage'], resolve) })
55
- // 卡表结算
56
- Vue.component('e-ticket-open-card-query-v4', (resolve) => { require(['./EticketV4/EticketOpenCard'], resolve) })
57
- // 自定义开票
58
- Vue.component('cust-query-eticket-query-v4', (resolve) => { require(['./EticketV4/CustQueryEticket'], resolve) })
59
- }
1
+ // 分公司特殊组件页面注册
2
+ import Vue from 'vue'
3
+ import LogicService from './plugins/LogicService'
4
+ export default function () {
5
+ Vue.use(LogicService)
6
+ // 黑名单
7
+ Vue.component('black-list-mangae', (resolve) => { require(['./BlackList/BlackListManage'], resolve) })
8
+ Vue.component('black-list-list', (resolve) => { require(['./BlackList/BlackListList'], resolve) })
9
+ Vue.component('black-list', (resolve) => { require(['./BlackList/BlackList'], resolve) })
10
+ // 黑名单记录查询
11
+ Vue.component('black-record-query', (resolve) => { require(['./BlackList/BlackRecordQuery'], resolve) })
12
+ // 特殊用户
13
+ Vue.component('special-user-manage', (resolve) => { require(['./SpecialUserManage'], resolve) })
14
+
15
+ // 违约金生成规则(f_end_date规则)
16
+ Vue.component('overdue-set', (resolve) => { require(['./Overdue/OverdueSet'], resolve) })
17
+ Vue.component('overdue-set-list', (resolve) => { require(['./Overdue/OverdueSetList'], resolve) })
18
+ Vue.component('overdue-set-user', (resolve) => { require(['./Overdue/OverdueSetUser'], resolve) })
19
+
20
+ // 添加或修改气表品牌组件
21
+ Vue.component('add-gas-brand', (resolve) => { require(['./AddGasBrand'], resolve) })
22
+ // 单个表具信息
23
+ Vue.component('file-meter-info', (resolve) => { require(['./MeterinfoTest'], resolve) })
24
+ // 机表收费
25
+ Vue.component('machine-meter-center', (resolve) => { require(['./MachineMeterCenter'], resolve) })
26
+ // 卡表收费
27
+ Vue.component('card-meter-center', (resolve) => {
28
+ require(['./CardMeterCenter'], resolve)
29
+ })
30
+ // 发卡售气
31
+ Vue.component('show-card-sell-gas', (resolve) => {
32
+ require(['./ShowCardSellGas'], resolve)
33
+ })
34
+ Vue.component('web-meter-info', (resolve) => { require(['./WebMeterInfo'], resolve) })
35
+ Vue.component('edit-meter-info', (resolve) => { require(['./EditWebMeterInfo'], resolve) })
36
+ // 用户基本信息test
37
+ Vue.component('file-user-essential-info', (resolve) => { require(['./FilesManage/UserEssentialInfoTest'], resolve) })
38
+ // 当前选择用户的表具基本信息
39
+ Vue.component('user-meterinfodetail', (resolve) => { require(['./meterinfodetail'], resolve) })
40
+ // 机表抄表审核
41
+ Vue.component('machine-hand-audit', (resolve) => { require(['./machineHandAudit'], resolve) })
42
+ // 机表抄表审核
43
+ Vue.component('change-meter', (resolve) => { require(['./ChangeMeter'], resolve) })
44
+ // 其他收费xin
45
+ Vue.component('other-charge-new', (resolve) => { require(['./OtherChargeNew'], resolve) })
46
+ // 其他收费详情小组件
47
+ Vue.component('othercharge-detail', (resolve) => { require(['./OtherChargeDetail'], resolve) })
48
+
49
+ // 电子发票管理 对接v4 新的表结构
50
+ Vue.component('e-ticket-manage-query-v4', (resolve) => { require(['./EticketV4/EticketManage'], resolve) })
51
+ // 物联网表结算
52
+ Vue.component('e-ticket-open-iot-query-v4', (resolve) => { require(['./EticketV4/EticketOpenPage'], resolve) })
53
+ // 机表结算
54
+ Vue.component('e-ticket-open-hand-query-v4', (resolve) => { require(['./EticketV4/EticketOpenJBPage'], resolve) })
55
+ // 卡表结算
56
+ Vue.component('e-ticket-open-card-query-v4', (resolve) => { require(['./EticketV4/EticketOpenCard'], resolve) })
57
+ // 自定义开票
58
+ Vue.component('cust-query-eticket-query-v4', (resolve) => { require(['./EticketV4/CustQueryEticket'], resolve) })
59
+
60
+ Vue.component('card-list', (resolve) => { require(['./CardList'], resolve) })
61
+ }