sale-client 3.5.134 → 3.5.135

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.5.134",
3
+ "version": "3.5.135",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -0,0 +1,240 @@
1
+ <template>
2
+ <div id="unit" class="flex-row three" v-show="listpage">
3
+ <div class="binary-left" style="overflow: scroll;width:15%" >
4
+ <mulitinfo :warninginfo="warningInfo" style="height:auto" @deal-msg="dealMsg" :data="row" :card-data="cardInfo" v-ref:info></mulitinfo>
5
+ </div>
6
+ <div class="binary-right" style="width:68%;overflow-y: scroll" >
7
+ <div :style="{height:(row?'auto':'100%')}">
8
+ <!--<div class="auto" v-if="sustainMoney != null">-->
9
+ <!--<h2 style="margin-top: 10px">当前连续收款金额: {{sustainMoney}}</h2>-->
10
+ <!--</div>-->
11
+ <div>
12
+ <charge-list :row="row" @select-oper="showWork" @dblclick="toBusiness" @deal-msg="dealMsg"
13
+ v-ref:list></charge-list>
14
+
15
+ <div class="auto" style="margin-top: 1%;" v-if="row">
16
+ <charge-oper :data.sync="row" :card-info="cardInfo"></charge-oper>
17
+ </div>
18
+ </div>
19
+ </div>
20
+ </div>
21
+ <div class="binary-right" style="width:22%" >
22
+ <ul class="nav nav-pills span" style="height:auto;margin:8px 0px;padding:4px 0;border-bottom: 1px solid #e7e7e7;" class="nav nav-tabs" >
23
+ <li ><a :style="selectFiled == '其他信息'?'color:#333333!important;':'color:#666666!important;'" :class="{'tel_voiceActive':selectFiled == '其他信息','tel_f_size':selectFiled != '其他信息'}" href="#" @click="setField('其他信息')">其他信息</a></li>
24
+ <li ><a :style="selectFiled == '历史操作'?'color:#333333!important;':'color:#666666!important;'" :class="{'tel_voiceActive':selectFiled == '历史操作','tel_f_size':selectFiled != '历史操作'}" href="#" @click="setField('历史操作')">历史操作</a></li>
25
+ <li v-if="row ?row.f_meter_type=='机表' : false"><a :style="selectFiled == '历史抄表'?'color:#333333!important;':'color:#666666!important;'" :class="{'tel_voiceActive':selectFiled == '历史抄表','tel_f_size':selectFiled != '历史抄表'}" href="#" @click="setField('历史抄表')">历史抄表</a></li>
26
+ </ul>
27
+ <div class="tab-content span" style="overflow-y: auto">
28
+ <otherinfo v-show="worktype === '其他信息'" style="height:auto" @deal-msg="dealMsg" :data="row" :card-data="cardInfo" v-ref:info></otherinfo>
29
+ <card-list v-show="worktype === '历史操作'" :btns="operatebtn" :f_orgid="f_orgid" :userinfoid="row ? row.f_userinfo_code : ''" @list-select-oper="recordCancel"
30
+ v-ref:card></card-list>
31
+ <hand-list v-if="worktype === '历史抄表'" :f_userfiles_id="row ? row.f_userfiles_id : ''" v-ref:hand></hand-list>
32
+ </div>
33
+
34
+ </div>
35
+
36
+ </div>
37
+ <div v-if="!listpage">
38
+ <user-info-detail-manage-new :f_userfiles_id="rowData.f_userfiles_id" @cancel-main="cancel"></user-info-detail-manage-new>
39
+ </div>
40
+ <div v-if="showModal">
41
+ <charge-modal :warninginfo="warningInfo" :row="modalrow" :modal-show.sync="showModal" @close="close" @modalsuccess="modalsuccess"></charge-modal>
42
+ </div>
43
+ </template>
44
+ <script>
45
+ import ChargeOper from './ChargeOper'
46
+ import {HttpResetClass} from 'vue-client'
47
+
48
+ export default {
49
+ title: '收费(综合)',
50
+ components: { ChargeOper },
51
+ data () {
52
+ return {
53
+ sustainMoney: null,
54
+ // 页面开关
55
+ listpage: true,
56
+ f_orgid: '',
57
+ row: null,
58
+ cardInfo: null,
59
+ warningInfo: null,
60
+ modalrow: null,
61
+ showModal: false,
62
+ rowData: {},
63
+ dibao_remind: this.$appdata.getSingleValue('低保快到期提醒') ? this.$appdata.getSingleValue('低保快到期提醒') : 0,
64
+ show: [true],
65
+ selectFiled: '其他信息',
66
+ worktype: '其他信息'
67
+ }
68
+ },
69
+ ready () {
70
+ this.setsustainMoney()
71
+ },
72
+ methods: {
73
+ setsustainMoney () {
74
+ this.sustainMoney = window.localStorage.getItem('sustainMoney')
75
+ },
76
+ setField (type) {
77
+ this.selectFiled = type
78
+ this.worktype = type
79
+ },
80
+ async toBusiness (obj) {
81
+ console.log('双击列表的时候传进来的数据:', obj)
82
+ if (!(obj instanceof Event)) {
83
+ // 对此数据进行验证
84
+ if (await this.validateRow(obj)) {
85
+ // 获取未写卡或者写卡失败记录
86
+ let getUnWriteSell = await this.$SqlService.singleTable('t_sellinggas', `f_state = '有效' and f_write_card in ('未写卡','写卡失败') and f_userfiles_id = '${obj.f_userfiles_id}'`)
87
+ console.log('获取未写卡记录', getUnWriteSell)
88
+ if (getUnWriteSell.data.length > 1) {
89
+ this.$showAlert('此卡已缴费多次未写卡。请核实后处理!!', 'warning', 5000)
90
+ } else {
91
+ this.row = obj
92
+ this.row.unWriteSell = getUnWriteSell.data
93
+ this.cardInfo = this.$refs.list.cardInfo
94
+ this.$refs.list.criteriaShow = false
95
+ // 将列表只显示该条数据
96
+ this.$refs.list.refreshRow(obj)
97
+ }
98
+ }
99
+ }
100
+ },
101
+ close () {
102
+ this.showModal = false
103
+ this.warningInfo = null
104
+ this.clean()
105
+ this.$refs.list.search()
106
+ // this.$refs.card.search()
107
+ },
108
+ async validateRow (obj) {
109
+ console.log('查看传进来的参数:', obj)
110
+ this.warningInfo = await this.$resetpost('rs/logic/getWarningMsg',
111
+ {data: {
112
+ f_userfiles_id: obj.f_userfiles_id,
113
+ f_userinfo_code: obj.f_userinfo_code,
114
+ f_userinfo_id: obj.f_userinfo_id
115
+ }
116
+ }
117
+ , {resolveMsg: '', rejectMsg: '获取提示失败'})
118
+ if (this.warningInfo.data.warningNum > 0 && obj.f_user_state !== '预备') {
119
+ this.modalrow = obj
120
+ this.showModal = true
121
+ return false
122
+ } else {
123
+ return true
124
+ }
125
+ },
126
+ clean () {
127
+ this.row = null
128
+ this.cardInfo = null
129
+ },
130
+ clearCondition () {
131
+ Object.keys(this.$refs.list.$refs.paged.$refs.cri.model).forEach((key) => {
132
+ this.$refs.list.$refs.paged.$refs.cri.model[key] = ''
133
+ })
134
+ // console.log('清数据。。。', this.$refs.list.$refs.paged.$refs.grid.model.rows)
135
+ // this.$set('$refs.list.$refs.paged.$refs.grid.model.rows', [])
136
+ },
137
+ dealMsg (obj) {
138
+ console.log('==================obj', obj)
139
+ this.listpage = false
140
+ this.rowData = obj
141
+ },
142
+ cancel (obj) {
143
+ this.listpage = true
144
+ },
145
+ modalsuccess (obj) {
146
+ this.showModal = false
147
+ this.$refs.list.criteriaShow = false
148
+ this.row = obj
149
+ this.cardInfo = this.$refs.list.cardInfo
150
+ // 将列表只显示该条数据
151
+ this.$refs.list.refreshRow(obj)
152
+ },
153
+ async serRow (obj) {
154
+ let newdata = await this.$resetpost('rs/sql/sale_getUser', {
155
+ data: {condition: `i.f_userinfo_code='${obj.f_userinfo_code}' and u.f_filialeid = '${obj.f_filialeid}'`, orderitem: `f_userinfo_id Desc`}
156
+ }, {resolveMsg: null, rejectMsg: '获取用户信息失败'})
157
+ this.toBusiness(newdata.data[0])
158
+ // this.$refs.list.search()
159
+ }
160
+ },
161
+ events: {
162
+ 'error' (name, row, res) {
163
+ this.clean()
164
+ },
165
+ 'row' (val) {
166
+
167
+ },
168
+ 'success' (name, row, res) {
169
+ this.setsustainMoney()
170
+ // name === '发卡售气' ? this.$refs.list.toNext(this.index) : null
171
+ if (name === '机表收费确认') {
172
+ this.serRow(row)
173
+ return
174
+ }
175
+ console.log('成功事件')
176
+ this.clean()
177
+ this.$refs.list.search()
178
+ // this.clearCondition()
179
+ // this.$refs.card.search()
180
+ // this.$refs.info.$refs.recordstoryinfo.getdata()
181
+ },
182
+ 'clean' (row) {
183
+ // this.$refs.list.singleRefresh(row)
184
+ this.clean()
185
+ },
186
+ 'refresh' () {
187
+ this.setsustainMoney()
188
+ this.clean()
189
+ this.clearCondition()
190
+ this.$refs.list.searchNoData()
191
+ this.$refs.card.search()
192
+ },
193
+ 'resflushvalue' () {
194
+ this.$refs.info.$refs.valueaddinfo.reflush()
195
+ },
196
+ 'refreshrow' (val) {
197
+ console.log(val)
198
+ this.row = val
199
+ this.$refs.list.refreshRow(val)
200
+ // this.$refs.card.search()
201
+ },
202
+ 'cancelclean' (row) {
203
+ this.clean()
204
+ this.$refs.list.searchNoData()
205
+ // this.$refs.card.search()
206
+ }
207
+ },
208
+ watch: {
209
+ 'row' () {
210
+ // this.$refs.tab.$el.click()
211
+ }
212
+ }
213
+ }
214
+ </script>
215
+ <style>
216
+ .basic-main {
217
+ width: 79%;
218
+ }
219
+ .tel_voiceActive{
220
+ font-family: PingFang-SC-Bold;
221
+ font-size: 16px;
222
+ font-weight: normal!important;
223
+ font-stretch: normal!important;
224
+ line-height: 18px;
225
+ letter-spacing: 0px;
226
+ color: #333333!important;
227
+ border-bottom: 3px solid #599fe5;
228
+ padding:10px 10px!important;
229
+ }
230
+ .tel_f_size{
231
+ font-family: PingFang-SC-Medium;
232
+ font-size: 16px;
233
+ font-weight: normal;
234
+ font-stretch: normal;
235
+ line-height: 18px;
236
+ letter-spacing: 0px;
237
+ color: #666666!important;
238
+ padding:10px 10px!important;
239
+ }
240
+ </style>
@@ -0,0 +1,250 @@
1
+ <template>
2
+ <div class="form-inline" style="height: auto">
3
+ <div class="form-group" v-for="btn in operBtns">
4
+ <button :id="btn.name" type="button" :style="btn.name=='其他欠费' ?'color:red':'color:black'" :class="[($index === 0) ? 'btn btn-click' : 'btn btn-un-click']" @click="business(btn)" :disabled="noButton" ><span :style="btn.name=='其他欠费' ?'color:red':'color:black'">{{btn.name}}</span></button>
5
+
6
+ </div>
7
+ </div>
8
+ <div v-show="isBusiness" style="height: auto" class="select-overspread">
9
+ <route v-ref:route></route>
10
+ </div>
11
+ </template>
12
+
13
+ <script>
14
+ import { HttpResetClass } from 'vue-client'
15
+ let getNewmetermsg = async function (self, row) {
16
+ if (row.f_userfiles_id && row.f_userfiles_id.length > 0) {
17
+ // 获取用户信息
18
+ let getUser = await self.$resetpost('rs/sql/sale_getUser', {
19
+ data: {
20
+ condition: `u.f_userfiles_id='${row.f_userfiles_id}' `,
21
+ orderitem: `u.f_userfiles_id Desc`
22
+ }
23
+ }, {resolveMsg: '读卡新的用户成功', rejectMsg: '读卡新的用户失败'})
24
+ if (getUser.data.length > 0) {
25
+ await self.$showAlert('换表成功', 'success', 200)
26
+ self.data = getUser.data[0]
27
+ }
28
+ }
29
+ }
30
+ let getBtnsGen = async function (self) {
31
+ let http = new HttpResetClass()
32
+ let param = {
33
+ f_userfiles_id: self.data.f_userfiles_id
34
+ }
35
+ if (self.cardInfo) {
36
+ param.cardInfo = self.cardInfo
37
+ }
38
+ let res = await http.load('POST', 'rs/logic/getOperBtns', {
39
+ data: param
40
+ }, {
41
+ resolveMsg: null,
42
+ rejectMsg: '获取业务按钮失败!!'
43
+ })
44
+ let getBtns = res.data
45
+ console.log('获取的业务按钮', getBtns)
46
+ console.log('有没有用户信息', self.data)
47
+ if (self.$login.r.length === 0) {
48
+ self.$showAlert('您没有相关的业务操作权限, 请联系管理员!!', 'warning', 2000)
49
+ } else {
50
+ self.temp = []
51
+ for (let i = 0; i < getBtns.length; i++) {
52
+ // 不需要权限的按钮
53
+ let noInclude = getBtns[i].name === '垃圾费收费'
54
+ if (noInclude){
55
+ await self.$showMessage(`用户${self.data.f_userfiles_id}有垃圾费需要缴费`, ['confirm', 'cancel'])
56
+ }
57
+ if (noInclude || self.$login.r.includes(getBtns[i].name)) {
58
+ // 进行权限验证
59
+ if(getBtns[i].name === '换表&清零'){
60
+ self.temp.push({
61
+ name: '换表',
62
+ value: getBtns[i].value
63
+ })
64
+ self.temp.push({
65
+ name: '清零',
66
+ value: {
67
+ 'weight': getBtns[i].value.weight,
68
+ 'routeName': 'reset-meter'
69
+ }
70
+ })
71
+ }else{
72
+ self.temp.push(getBtns[i])
73
+ }
74
+ console.log(self.temp[i])
75
+ }
76
+ }
77
+ // 如果有未写卡记录,添加线下写卡按钮
78
+ if (self.data.unWriteSell) {
79
+ if (self.data.unWriteSell.length > 0) {
80
+ self.temp.push({name: '线下写卡',
81
+ value: {
82
+ 'weight': 0,
83
+ 'routeName': 'un-write-card-center'
84
+ }})
85
+ }
86
+ }
87
+ if (self.data.f_user_nature == '单位') {
88
+ self.temp.push({name: '维管收费',
89
+ value: {
90
+ 'weight': 5,
91
+ 'routeName': 'repair-charge'
92
+ }})
93
+ }
94
+ if (self.data.f_meter_type == '物联网表') {
95
+ if (self.data.f_hascard == '是') {
96
+ if (self.data.f_whether_hairpin == '未发') {
97
+ if(self.data.f_share_times != '' && self.data.f_share_times == '是' && self.data.f_times>0){
98
+ self.temp.push({
99
+ name: '补卡',
100
+ value: {
101
+ 'weight': 2,
102
+ 'routeName': 'replace-card-manage'
103
+ }
104
+ })
105
+ }else{
106
+ }
107
+
108
+ }
109
+ }
110
+ }
111
+ // 如果卡上有气,添加购气撤销按钮
112
+ if (self.cardInfo.Gas > 0 || self.cardInfo.Money > 0 || (self.cardInfo.TotalMoney > 0 && self.data.f_support_purchase == '是')) {
113
+ self.temp.push({name: '购气撤销',
114
+ value: {
115
+ 'weight': 0,
116
+ 'routeName': 'card-meter-charge-cancel'
117
+ }})
118
+ }
119
+ /* // 如果是预备户,删除发卡售气按钮
120
+ if (self.data.f_user_state == '预备') {
121
+ self.temp.splice(self.temp.findIndex(item => item.name === '发卡售气'), 1)
122
+ } */
123
+
124
+ // 根据权重将业务按钮排序
125
+ self.operBtns = self.temp.sort((a, b) => {
126
+ return a.value.weight - b.value.weight
127
+ })
128
+
129
+ // 当有调价补差时,只展示调价补差按钮
130
+ let adjustSenders = self.operBtns.find((row) => {
131
+ return row.name == '调价补差'
132
+ })
133
+ if (adjustSenders) {
134
+ self.operBtns = []
135
+ self.operBtns.push(adjustSenders)
136
+ }
137
+
138
+ if (self.operBtns.length > 0) {
139
+ self.isBusiness = true
140
+ self.$refs.route.init(self.operBtns[0].value.routeName, {row: self.data, cardData: self.cardInfo})
141
+ self.styleChange(self.operBtns[0])
142
+ }
143
+ }
144
+ }
145
+
146
+ export default {
147
+ title: '业务操作',
148
+ data () {
149
+ return {
150
+ operBtns: [],
151
+ isBusiness: false,
152
+ noButton: false // 业务请求时禁止按钮点击
153
+ }
154
+ },
155
+ props: ['data', 'cardInfo'],
156
+ ready () {
157
+ getBtnsGen(this)
158
+ console.log('data,cardInfo', this.data, this.cardInfo)
159
+
160
+ },
161
+ methods: {
162
+ business (btn) {
163
+ // // 处理按钮样式
164
+ // this.styleChange(btn.name)
165
+ // this.isBusiness = true
166
+ // this.$refs.route.init(btn.value.routeName, {row: this.data, cardData: this.cardInfo})
167
+ if(this.$refs.route.cards.length>0){
168
+ if(this.$refs.route.cards[0].title == '增值服务管理'){
169
+ this.$showMessage('切换页面后,当前页面数据会丢失,是否切换?',['confirm','cancel']).then(res=>{
170
+ if(res == 'cancel'){
171
+ return;
172
+ }else{
173
+ // 处理按钮样式
174
+ this.styleChange(btn.name)
175
+ this.isBusiness = true
176
+ this.$refs.route.init(btn.value.routeName, {row: this.data, cardData: this.cardInfo})
177
+ }
178
+ })
179
+ }else{
180
+ // 处理按钮样式
181
+ this.styleChange(btn.name)
182
+ this.isBusiness = true
183
+ this.$refs.route.init(btn.value.routeName, {row: this.data, cardData: this.cardInfo})
184
+ }
185
+ }
186
+ },
187
+
188
+ styleChange (name) {
189
+ this.operBtns.forEach((res) => {
190
+ if (res.name === name) {
191
+ if (document.getElementById(res.name)) {
192
+ document.getElementById(res.name).style.backgroundColor = '#6aa6e2'
193
+ document.getElementById(res.name).style.color = 'white'
194
+ }
195
+ } else {
196
+ if (document.getElementById(res.name)) {
197
+ document.getElementById(res.name).style.backgroundColor = 'white'
198
+ document.getElementById(res.name).style.color = 'black'
199
+ }
200
+ }
201
+ })
202
+ }
203
+ },
204
+ watch: {
205
+ 'data' () {
206
+ getBtnsGen(this)
207
+ }
208
+ },
209
+ events: {
210
+ 'no-button' () {
211
+ this.noButton = true
212
+ },
213
+ 'has-button' () {
214
+ this.noButton = false
215
+ },
216
+ 'get-new-row' (row) {
217
+ console.log('xxxxxx', row)
218
+ // 发生换表成功
219
+ getNewmetermsg(this, row)
220
+ },
221
+ 'button-specifies' (buttonObj, data) {
222
+ console.log('指定按钮。。', buttonObj)
223
+ // buttonObj 格式: {name:'机表收费', value: 'machine-meter-center'}
224
+ if (buttonObj) {
225
+ this.styleChange(buttonObj.name)
226
+ this.$refs.route.init(buttonObj.value, {row: data})
227
+ }
228
+ }
229
+ }
230
+ }
231
+ </script>
232
+
233
+ <style scoped>
234
+
235
+ .btn-click{
236
+ background-color: #6aa6e2;
237
+ border-radius: 5px;
238
+ color: white;
239
+ /*border-color: black;*/
240
+ border: solid 1px #c7c7c7;
241
+ }
242
+
243
+ .btn-un-click{
244
+ background-color: white;
245
+ border-radius: 5px;
246
+ color: black;
247
+ /*border-color: black;*/
248
+ border: solid 1px #c7c7c7;
249
+ }
250
+ </style>
@@ -42,8 +42,8 @@
42
42
  <span class = "col-sm-7">{{data?data.f_write_totalfee:dafault.f_total_fee}}</span>
43
43
  </div>
44
44
  <div class="row">
45
- <label class = "col-sm-5 " >气表表号</label>
46
- <span class = "col-sm-7">{{data?data.f_meternumber:dafault.f_meternumber}}</span>
45
+ <label class = "col-sm-5 " style="color:brown;">气表表号</label>
46
+ <span class = "col-sm-7" style="color: brown">{{data?data.f_meternumber:dafault.f_meternumber}}</span>
47
47
  </div>
48
48
  <div class="row" v-if="data.f_meter_type.includes('卡表') || (data.f_meter_type.includes('物联网表') && data.f_hascard==='是')">
49
49
  <label class = "col-sm-5 " >卡&emsp;&emsp;号</label>
@@ -14,6 +14,8 @@ let specialComp = {
14
14
  // 物联网表收费
15
15
  'iot-meter-center': (resolve) => { require(['./IOTMeterCenter'], resolve) },
16
16
  // 当前选择用户的表具基本信息
17
- 'user-meterinfodetail': (resolve) => { require(['./meterinfodetail'], resolve) }
17
+ 'user-meterinfodetail': (resolve) => { require(['./meterinfodetail'], resolve) },
18
+
19
+ 'charge-manage': (resolve) => { require(['./ChargeManage'], resolve) }
18
20
  }
19
21
  exports.specialComp = specialComp