sale-client 3.5.76 → 3.5.77

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.76",
3
+ "version": "3.5.77",
4
4
  "description": "收费模块前台组件",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -5,6 +5,10 @@
5
5
  <h4 style="display:inline-block;margin-top: auto">表具信息</h4>
6
6
  </div>
7
7
  <div class="auto ">
8
+ <div class="row">
9
+ <label class = "col-sm-5 " style="color: brown">团缴编号</label>
10
+ <span class = "col-sm-7" style="color: brown">{{data.f_customer?data.f_customer:'无'}}</span>
11
+ </div>
8
12
  <div class="row">
9
13
  <label class = "col-sm-5 " >气表类型</label>
10
14
  <span class = "col-sm-7">{{data?data.f_meter_type:dafault.f_meter_brand}}</span>
@@ -882,6 +882,9 @@ export default {
882
882
  this.commitflag = true
883
883
  // 气量转金额 或者 金额转气量的时候对气量和金额不做限制, 可以修改, 但是只变单价
884
884
  this.model.f_remanent_price = ((this.model.f_remanent_money) / (this.model.f_remanent_gas)).toFixed(4)
885
+ if (this.model.f_remanent_price == 'NaN') {
886
+ this.model.f_remanent_price = 0
887
+ }
885
888
  },
886
889
 
887
890
  async validateOwe () {
@@ -143,13 +143,13 @@
143
143
  <td style="text-align:center">{{ row.f_user_id }}</td>
144
144
  <td style="text-align:center">{{ row.f_user_name }}</td>
145
145
  <td style="text-align:center">{{ row.f_address }}</td>
146
- <td style="text-align:center" :class="{'meterbasehaserr' : row.f_last_tablebase !== row.f_meter_base || row.f_last_tablebase === row.f_tablebase }">
146
+ <td style="text-align:center" :class="{'meterbasehaserr' : row.f_last_tablebase !== row.f_meter_base}">
147
147
  {{ row.f_last_tablebase }}
148
148
  </td>
149
- <td style="text-align:center" :class="{'meterbasehaserr' : row.f_last_tablebase !== row.f_meter_base || row.f_last_tablebase === row.f_tablebase }">
149
+ <td style="text-align:center" :class="{'meterbasehaserr' : row.f_last_tablebase !== row.f_meter_base}">
150
150
  {{ row.f_tablebase }}
151
151
  </td>
152
- <td style="text-align:center" :class="{'meterbasehaserr' : row.f_last_tablebase !== row.f_meter_base || row.f_last_tablebase === row.f_tablebase }">
152
+ <td style="text-align:center" :class="{'meterbasehaserr' : row.f_last_tablebase !== row.f_meter_base}">
153
153
  {{ row.f_meter_base }}
154
154
  </td>
155
155
  <td style="text-align:center">{{ parseFloat(row.f_tablebase - row.f_last_tablebase).toFixed(2) }}</td>
@@ -168,7 +168,7 @@
168
168
  <td style="text-align:center">{{ row.f_audit_date }}</td>
169
169
  <td style="text-align: center" v-if="row.f_meter_state === '待审核' && row.f_hand_state === '有效'">
170
170
  <button type="button" class="button_search button_spacing width-60"
171
- v-if="row.f_last_tablebase === row.f_meter_base && row.f_last_tablebase !== row.f_tablebase "
171
+ v-if="row.f_last_tablebase === row.f_meter_base"
172
172
  @click.stop="$parent.$parent.$parent.success(row)">通过
173
173
  </button>
174
174
  <br>
@@ -216,7 +216,7 @@ let readyGen = async function (self) {
216
216
 
217
217
  export default {
218
218
  title: '自报表数审核',
219
- data() {
219
+ data () {
220
220
  return {
221
221
  initres: {
222
222
  org: [this.$login.f.orgid],
@@ -236,24 +236,24 @@ export default {
236
236
  meterbooks: [{label: '全部', value: ''}]
237
237
  }
238
238
  },
239
- ready() {
239
+ ready () {
240
240
  readyGen(this)
241
241
  this.$refs.paged.$refs.cri.model.f_hand_state[0] = ` f_meter_state = '待审核'`
242
242
  },
243
243
  methods: {
244
- loadMeterBooks() {
244
+ loadMeterBooks () {
245
245
  this.meterbooks = [...this.meterbooks, ...this.$GetSaleParam.getMeterBooks()]
246
246
  },
247
- getRes(obj) {
247
+ getRes (obj) {
248
248
  this.orgCondtionStr = obj
249
249
  },
250
- hidden() {
250
+ hidden () {
251
251
  this.criteriaShow = !this.criteriaShow
252
252
  },
253
- search() {
253
+ search () {
254
254
  this.$refs.paged.$refs.cri.search()
255
255
  },
256
- selfSearch(args) {
256
+ selfSearch (args) {
257
257
  if (!this.orgCondtionStr) {
258
258
  args.condition = `${args.condition}` + ' and f_orgid = ' + this.$login.f.orgid
259
259
  } else {
@@ -261,23 +261,25 @@ export default {
261
261
  }
262
262
  this.model.search(args.condition, args.model)
263
263
  },
264
- async allsuccess() {
264
+ async allsuccess () {
265
265
  let res = await this.$showMessage('确定通过全部抄表吗?操作后将不可取消', ['confirm', 'cancel'])
266
266
  let condition = []
267
267
  if (res === 'confirm') {
268
268
  if (this.model.rows.length >= 0) {
269
269
  if (this.model.model.f_hand_state[0] == `'待审核'`) {
270
270
  for (let i = 0; i < this.model.rows.length; i++) {
271
- let temp = {
272
- f_hand_id: this.model.rows[i].id,
273
- // 本次表底数
274
- f_tablebase: this.model.rows[i].f_tablebase,
275
- // 表类型
276
- f_meter_classify: this.model.rows[i].f_meter_classify,
277
- // 气表品牌
278
- f_meter_brand: this.model.rows[i].f_meter_brand
271
+ if (this.model.rows[i].f_last_tablebase === this.model.rows[i].f_meter_base) {
272
+ let temp = {
273
+ f_hand_id: this.model.rows[i].id,
274
+ // 本次表底数
275
+ f_tablebase: this.model.rows[i].f_tablebase,
276
+ // 表类型
277
+ f_meter_classify: this.model.rows[i].f_meter_classify,
278
+ // 气表品牌
279
+ f_meter_brand: this.model.rows[i].f_meter_brand
280
+ }
281
+ condition.push(temp)
279
282
  }
280
- condition.push(temp)
281
283
  }
282
284
  let uuid = this.$login.guid()
283
285
  let data = {
@@ -295,7 +297,7 @@ export default {
295
297
  }
296
298
  }
297
299
  },
298
- async success(row) {
300
+ async success (row) {
299
301
  let res = await this.$showMessage('确定通过该条抄表吗?操作后将不可取消', ['confirm', 'cancel'])
300
302
  if (res === 'confirm') {
301
303
  let data = {
@@ -313,7 +315,7 @@ export default {
313
315
  this.search()
314
316
  }
315
317
  },
316
- async allfaild() {
318
+ async allfaild () {
317
319
  let res = await this.$showMessage('确定作废全部抄表吗?操作后将不可取消', ['confirm', 'cancel'])
318
320
  let condition = '('
319
321
  if (res === 'confirm') {
@@ -335,7 +337,7 @@ export default {
335
337
  }
336
338
  }
337
339
  },
338
- async faild(row) {
340
+ async faild (row) {
339
341
  let res = await this.$showMessage('确定作废该条抄表吗?操作后将不可取消', ['confirm', 'cancel'])
340
342
  if (res === 'confirm') {
341
343
  // this.row = row
@@ -346,7 +348,7 @@ export default {
346
348
  this.search()
347
349
  }
348
350
  },
349
- async confirm() {
351
+ async confirm () {
350
352
  await this.$resetpost('rs/logic/weixinHanPlanAudit', this.row, {resolveMsg: '操作成功', rejectMsg: '操作失败'})
351
353
  await this.$resetpost('http://www.hunanhongdaranqi.com/weixin/rs/logic/meterReadFailed', this.pushdata, {
352
354
  resolveMsg: null,
@@ -357,7 +359,7 @@ export default {
357
359
  }
358
360
  },
359
361
  computed: {
360
- inputtores() {
362
+ inputtores () {
361
363
  // 获取抄表员
362
364
  console.log('获取抄表员', this.$login.f)
363
365
  let rs = []
@@ -0,0 +1,340 @@
1
+ <template>
2
+ <div id="ChargeGroupList">
3
+ <div class="flex" @keyup.enter="search" :style="{height:(oweShow?'auto':'100%')}">
4
+ <criteria-paged :model="model" v-ref:paged :pager="!oweShow">
5
+ <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
6
+ <div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
7
+ <div class="row">
8
+ <div :class="$parent.$parent.style">
9
+ <label class="font_normal_body">组织机构</label>
10
+ <res-select restype='organization'
11
+ @res-select="$parent.$parent.getorg"
12
+ :is-mul="false"
13
+ :initresid='$parent.$parent.curorgid'>
14
+ </res-select>
15
+ </div>
16
+ <div :class="$parent.$parent.style">
17
+ <label class="font_normal_body">客戶编码</label>
18
+ <input type="text" class="input_search" style="width:60%" v-model="model.f_customer"
19
+ condition="f_customer like '%{}%'" placeholder="客戶编码"/>
20
+ </div>
21
+ <div :class="$parent.$parent.style" v-show="!$parent.$parent.listShow">
22
+ <label class="font_normal_body">客戶名称</label>
23
+ <input type="text" class="input_search" style="width:60%" v-model="model.f_user_name"
24
+ condition="f_user_name like '%{}%'" placeholder="客戶名称"/>
25
+ </div>
26
+
27
+ <div class="col-sm-3 form-group button-range">
28
+ <button class="button_search button_spacing" @click="search()">查询</button>
29
+ <button class="button_new button_spacing" style="width: max-content;" @click="$parent.$parent.add()" v-if="!$parent.$parent.chargeToChoose">建档
30
+ </button>
31
+ <button class="button_clear button_spacing" @click="clear">清空</button>
32
+ <div style="float: right" class="button_spacing"
33
+ :class="{'button_shrink_top': criteriaShow,'button_shrink_bottom': !criteriaShow}"
34
+ @click="criteriaShow = !criteriaShow"></div>
35
+ </div>
36
+ <div class="row" v-show="criteriaShow">
37
+ <div :class="$parent.$parent.style" v-show="$parent.$parent.listShow">
38
+ <label class="font_normal_body">客戶名称</label>
39
+ <input type="text" class="input_search" style="width:60%" v-model="model.f_user_name"
40
+ condition="f_user_name like '%{}%'" placeholder="客戶名称"/>
41
+ </div>
42
+ <div :class="$parent.$parent.style">
43
+ <label class="font_normal_body">客戶地址</label>
44
+ <input type="text" class="input_search" style="width:60%" v-model="model.f_address"
45
+ condition="f_address like '%{}%'" placeholder="客戶地址"/>
46
+ </div>
47
+ <div :class="$parent.$parent.style">
48
+ <label class="font_normal_body">客户电话</label>
49
+ <input type="text" class="input_search" style="width:60%" v-model="model.f_user_phone"
50
+ condition="f_user_phone like '%{}%'" placeholder="客户电话"/>
51
+ </div>
52
+ <div :class="$parent.$parent.style">
53
+ <label class="font_normal_body">是否欠费</label>
54
+ <v-select v-model="model.oughtfee"
55
+ :search="fasle"
56
+ placeholder='是否欠费'
57
+ :value.sync="model.oughtfee"
58
+ :options='$parent.$parent.oughtfee'
59
+ condition="f_oughtfee_all {}"
60
+ close-on-select style="width: 60%"></v-select>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </criteria>
66
+ <data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid v-if="!$parent.oweShow" @dblclick="$parent.showOwe">
67
+ <template partial='head'>
68
+ <tr>
69
+ <th>
70
+ <nobr>序号</nobr>
71
+ </th>
72
+ <th>
73
+ <nobr>客戶编码</nobr>
74
+ </th>
75
+ <th>
76
+ <nobr>客戶名称</nobr>
77
+ </th>
78
+ <th>
79
+ <nobr>账户结余</nobr>
80
+ </th>
81
+ <th>
82
+ <nobr>客戶类型</nobr>
83
+ </th>
84
+ <th>
85
+ <nobr>客戶地址</nobr>
86
+ </th>
87
+ <th>
88
+ <nobr>客戶电话</nobr>
89
+ </th>
90
+ <th>
91
+ <nobr>团缴户数</nobr>
92
+ </th>
93
+ <th>
94
+ <nobr>欠费金额</nobr>
95
+ </th>
96
+ <th>
97
+ <nobr>操作</nobr>
98
+ </th>
99
+ </tr>
100
+ </template>
101
+ <template partial='body'>
102
+ <tr>
103
+ <td style="text-align:center">
104
+ <nobr>{{ $index + 1 }}</nobr>
105
+ </td>
106
+ <td style="text-align:center">
107
+ <nobr>{{ row.f_customer }}</nobr>
108
+ </td>
109
+ <td style="text-align:center">
110
+ <nobr>{{ row.f_user_name }}</nobr>
111
+ </td>
112
+ <td style="text-align:center">
113
+ <nobr>{{ row.f_balance }}</nobr>
114
+ </td>
115
+ <td style="text-align:center">
116
+ <nobr>{{ row.f_user_type }}</nobr>
117
+ </td>
118
+ <td style="text-align:center">
119
+ <nobr>{{ row.f_address }}</nobr>
120
+ </td>
121
+ <td style="text-align:center">
122
+ <nobr>{{ row.f_user_phone }}</nobr>
123
+ </td>
124
+ <td style="text-align:center" v-if="!$parent.$parent.$parent.chargeToChoose">
125
+ <button @click.stop="$parent.$parent.$parent.operate(row)"
126
+ class="btn btn-link"><b>{{ row.sumuserfiles }}</b>
127
+ </button>
128
+ </td>
129
+ <td style="text-align:center" v-else>
130
+ <nobr>{{ row.sumuserfiles }}</nobr>
131
+ </td>
132
+ <td style="text-align:center" v-else>
133
+ <nobr>{{ row.f_oughtfee_all }}</nobr>
134
+ </td>
135
+ <td style="text-align:center">
136
+ <nobr>
137
+ <button type="button" name="button" class="btn btn-link"
138
+ @click.stop="$parent.$parent.$parent.print(row)">打印明细
139
+ </button>
140
+ <button type="button" name="button" class="btn btn-link"
141
+ @click.stop="$parent.$parent.$parent.export(row)">导出明细
142
+ </button>
143
+ </nobr>
144
+ </td>
145
+ </tr>
146
+ </template>
147
+ <template partial='foot'></template>
148
+ </data-grid>
149
+ </criteria-paged>
150
+ <print-data :sum-field="getfield" :model="printModel" :field="getfield" :printview="true"
151
+ :defaultfield="defaultfield" titletable="团体欠费明细报表" v-ref:printdata>
152
+ </print-data>
153
+ </div>
154
+
155
+ <export-excel
156
+ :isshow="false" :data="getCondition" :field="getfield" :choose-col="true" v-ref:excel
157
+ sqlurl="rs/logic/saleExport" sql-name="batchOweQuery" template-name='团体欠费明细导出'>
158
+ </export-excel>
159
+
160
+ <owe-record-query v-if="oweShow" :row="row" :f_civill_id="f_civill_id"></owe-record-query>
161
+ </div>
162
+ </template>
163
+
164
+ <script>
165
+ import {HttpResetClass, PagedList} from 'vue-client'
166
+
167
+ export default {
168
+ data () {
169
+ return {
170
+ interval: null,
171
+ searchTime: this.$appdata.getSingleValue('磁条卡读卡间隔') ? this.$appdata.getSingleValue('磁条卡读卡间隔') : 2,
172
+ oughtfee: [{label: '全部', value: ''}, {label: '是', value: '> 0'}, {label: '否', value: '<= 0'}],
173
+ model: new PagedList('rs/sql/ncarchivesQuery', 20),
174
+ // 公司下拉
175
+ curorgid: [this.$login.f.orgid],
176
+ f_orgid: '',
177
+ f_civill_id: null,
178
+ oweShow: false,
179
+ getCondition: null,
180
+ getfield: null,
181
+ config: {
182
+ // 导出列
183
+ excelHeaders: {
184
+ 'f_userinfo_code': '客户编号',
185
+ 'f_user_name': '客户姓名',
186
+ 'f_address': '客户地址',
187
+ 'f_user_phone': '客户电话',
188
+ //'f_meter_classify': '气表类型',
189
+ //'c': '欠费期数',
190
+ 'f_hand_date': '欠费区间',
191
+ 'f_last_tablebase': '上期底数',
192
+ 'f_tablebase': '本期底数',
193
+ 'price':'单价',
194
+ 'f_oughtamount': '用气量',
195
+ 'f_oughtfee': '用气金额'
196
+ //'f_debt_money': '已交金额',
197
+ //'f_oughtfee_new': '应交气费',
198
+ //'overdue': '滞纳金',
199
+ //'f_oughtfee_all': '合计欠费'
200
+ }
201
+ },
202
+ defaultfield: [],
203
+ printModel: new PagedList('rs/sql/batchOweQuery', 20),
204
+ row: null
205
+ }
206
+ },
207
+ title: '档案查询',
208
+ props: {
209
+ f_filialeids: {
210
+ type: String
211
+ },
212
+ style: {
213
+ type: String,
214
+ default: 'col-sm-3 form-group'
215
+ },
216
+ // 控制在修改数据时显示少的查询条件,剩余隐藏
217
+ listShow: {
218
+ type: Boolean,
219
+ default: false
220
+ },
221
+ // 收费时的展示控制
222
+ chargeToChoose: {
223
+ type: Boolean,
224
+ default: false
225
+ }
226
+ },
227
+ ready () {
228
+ this.getfield = this.config.excelHeaders
229
+ this.search()
230
+ this.readCiTiaoCard()
231
+ },
232
+ destroyed () {
233
+ clearInterval(this.interval)
234
+ },
235
+ watch: {
236
+ 'oweShow' (val) {
237
+ if (val) {
238
+ clearInterval(this.interval)
239
+ } else {
240
+ this.readCiTiaoCard()
241
+ }
242
+ }
243
+ },
244
+ methods: {
245
+ async readCiTiaoCard () {
246
+ console.log('读磁条卡,开始,不停的循环')
247
+ let data = {}
248
+ let getUser = {data: []}
249
+ let forgid = this.$login.convertToIn([this.$login.f.orgid])
250
+ try {
251
+ // let res = {data:{Factory : 'CiTiao',CardID : '00000009'}}
252
+ let http = new HttpResetClass()
253
+ this.interval = setInterval(async () => {
254
+ // 1秒一轮回
255
+ http.load('POST', 'http://127.0.0.1:8003/ReadCard_HEC', data, {
256
+ resolveMsg: null,
257
+ rejectMsg: null
258
+ }).then(async res => {
259
+ if (res.data.CardID !== '') {
260
+ if (res.data.Err === null && res.data.Exception) {
261
+ this.$showAlert(res.data.Exception, 'danger', 2000)
262
+ // clearInterval(interval)
263
+ } else {
264
+ if (res.data.Factory === 'CiTiao') {
265
+ // 获取用户信息
266
+ getUser = await this.$resetpost('rs/sql/ncarchivesQuery', {
267
+ data: {
268
+ condition: `f_orgid in ${forgid} and f_card_id='${res.data.CardID}'`,
269
+ orderitem: `f_userinfo_id`
270
+ }
271
+ }, {resolveMsg: null, rejectMsg: '读卡失败'})
272
+ this.showOwe(getUser.data[0])
273
+ clearInterval(this.interval)
274
+ }
275
+ }
276
+ }
277
+ })
278
+ }, this.searchTime * 1000)
279
+ } catch (error) {
280
+ console.log('捕获到异常', error)
281
+ // this.$showAlert(error.data, 'danger', 2000)
282
+ }
283
+ },
284
+ // 打印
285
+ async print (row) {
286
+ let condition = `p.f_civill_id = ${row.id}`
287
+ await this.printModel.search(condition)
288
+ this.$refs.printdata.printData()
289
+ },
290
+ // 导出
291
+ export (row) {
292
+ this.getCondition = {condition: `p.f_civill_id = ${row.id}`}
293
+ this.$refs.excel.exportExcel()
294
+ },
295
+ showOwe (row) {
296
+ if (this.chargeToChoose) {
297
+ this.f_civill_id = row.id
298
+ this.row = row
299
+ this.oweShow = true
300
+ }
301
+ },
302
+ search () {
303
+ this.$refs.paged.$refs.cri.search()
304
+ },
305
+ add () {
306
+ if (this.f_filialeids) {
307
+ this.$refs.paged.$refs.grid.selectStore.selected = null
308
+ this.$dispatch('add')
309
+ } else {
310
+ this.$showAlert('请先选择左上角的所在分公司', 'warning', 2000)
311
+ }
312
+ },
313
+ operate (val) {
314
+ this.$dispatch('operate', val)
315
+ },
316
+ selfSearch (args) {
317
+ if (!this.f_orgid) {
318
+ this.getorg([this.$login.f.orgid])
319
+ }
320
+ args.condition = `${args.condition} and f_orgid in ${this.f_orgid}`
321
+ this.oweShow = false
322
+ this.model.search(args.condition, args.model)
323
+ if (this.$refs.paged.$refs.grid) this.$refs.paged.$refs.grid.selectInit()
324
+ this.$dispatch('newsearch')
325
+ },
326
+ getorg (val) {
327
+ this.f_orgid = this.$login.convertToIn(val)
328
+ this.f_filialeids = val[0]
329
+ }
330
+ }
331
+
332
+ }
333
+ </script>
334
+ <style lang="less">
335
+ #ChargeGroupList {
336
+ .button_export {
337
+ display: none;
338
+ }
339
+ }
340
+ </style>
@@ -72,6 +72,9 @@ let specialComp = {
72
72
 
73
73
  'userfiles-list': (resolve) => { require(['./archives/UserfilesList'], resolve) },
74
74
  // 用户基本信息
75
- 'user-base-info-new': (resolve) => { require(['./components/common/userinfo_detail/UserBaseInfoNew'], resolve) }
75
+ 'user-base-info-new': (resolve) => { require(['./components/common/userinfo_detail/UserBaseInfoNew'], resolve) },
76
+
77
+ // 团体缴费查询列表
78
+ 'charge-group-list': (resolve) => { require(['./chargeBatch/ChargeGroupList'], resolve) }
76
79
  }
77
80
  exports.specialComp = specialComp
@@ -1120,7 +1120,7 @@ let loadParamGem = async function (self) {
1120
1120
  this.getuuid();
1121
1121
  if(this.uuida == '') return;
1122
1122
  // 当前上传的是批量导入的档案
1123
- let param = {
1123
+ let batchParam = {
1124
1124
  filepath: res.f_downloadpath,
1125
1125
  f_operator: this.$login.f.name,
1126
1126
  f_operatorid: this.$login.f.id,
@@ -1130,10 +1130,20 @@ let loadParamGem = async function (self) {
1130
1130
  f_depname: this.$login.f.deps,
1131
1131
  uuid: this.uuida
1132
1132
  }
1133
+ let jobParam = {
1134
+ f_operatorid: this.$login.f.id,
1135
+ total: 0,
1136
+ operator: this.$login.f.orgs +":"+ this.$login.f.deps +":"+ Vue.$login.f.name,
1137
+ jobType: "批量建档"
1138
+ }
1139
+ let param = {
1140
+ jobParam: jobParam,
1141
+ batchParam: batchParam
1142
+ }
1133
1143
  let self = this
1134
1144
  try {
1135
1145
  self.progressShow = true;
1136
- axios.post('rs/logic/newSettleFileImport',
1146
+ axios.post('rs/business/batchRunExcel/filemanage_fileSave/newSettleFileImport',
1137
1147
  {data: param}, {timeout: 1000}).then((res) => {
1138
1148
  })
1139
1149
  self.percent=0;
@@ -0,0 +1,435 @@
1
+ <template >
2
+ <div class="auto">
3
+ <div class="auto form-group-new row">
4
+ <div class="col-sm-6" style="height:auto;width:49%;">
5
+ <p style="font-weight: bold;margin: 0"><img src="../../../static/mainicon/矩形1828.png"/>&nbsp;&nbsp;基本信息</p>
6
+ <!-- 第一行数据-->
7
+ <div class="col-sm-4">
8
+ <label class="font_normal_body_new">客户编号</label>
9
+ <input class="input-underline" style="width:60%" :value="row.f_userinfo_code" readonly>
10
+ </div>
11
+ <div class="col-sm-4">
12
+ <label class="font_normal_body_new">客户姓名</label>
13
+ <input class="input-underline" style="width:60%" :value="row.f_user_name" readonly>
14
+ </div>
15
+ <div class="col-sm-4">
16
+ <label class="font_normal_body_new">用户状态</label>
17
+ <input class="input-underline" style="width:60%" :value="row.f_user_state" readonly>
18
+ </div>
19
+ <div class="col-sm-8">
20
+ <label class="font_normal_body_new">客户地址</label>
21
+ <input class="input-underline" style="width:80%" :value="row.f_address" readonly>
22
+ </div>
23
+ <div class="col-sm-4">
24
+ <label class="font_normal_body_new">客户电话</label>
25
+ <input class="input-underline" style="width:60%" :value="row.f_user_phone" readonly>
26
+ </div>
27
+ <div class="col-sm-4">
28
+ <label class="font_normal_body_new">客户类型</label>
29
+ <input class="input-underline" style="width:60%" :value="row.f_user_type" readonly>
30
+ </div>
31
+ <div class="col-sm-4">
32
+ <label class="font_normal_body_new">用气性质</label>
33
+ <input class="input-underline" style="width:60%" :value="row.f_gasproperties" readonly>
34
+ </div>
35
+ <div class="col-sm-4">
36
+ <label class="font_normal_body_new">证件类型</label>
37
+ <input class="input-underline" style="width:60%" :value="row.f_credentials" readonly>
38
+ </div>
39
+ <div class="col-sm-8">
40
+ <label class="font_normal_body_new">证件号码</label>
41
+ <input class="input-underline" style="width:80%" :value="row.f_idnumber" readonly>
42
+ </div>
43
+ <div class="col-sm-4">
44
+ <label class="font_normal_body_new">用户状态</label>
45
+ <input class="input-underline" style="width:60%" :value="row.f_user_state" readonly>
46
+ </div>
47
+ <div class="col-sm-4">
48
+ <label class="font_normal_body_new">账户余额</label>
49
+ <input class="input-underline" style="width:60%" :value="row.f_balance" readonly>
50
+ </div>
51
+ <div class="col-sm-4">
52
+ <label class="font_normal_body_new">人&ensp;口&ensp;数</label>
53
+ <input class="input-underline" style="width:60%" :value="row.f_people_num" readonly>
54
+ </div>
55
+ <div class="col-sm-4">
56
+ <label class="font_normal_body_new">关阀原因</label>
57
+ <input class="input-underline" style="width:60%" :value="row.f_info" readonly>
58
+ </div>
59
+ </div>
60
+ <div class="col-sm-6" style="height:auto;width:49%;">
61
+ <p style="font-weight: bold;margin: 0"><img src="../../../static/mainicon/矩形1828.png"/>&nbsp;&nbsp;表具信息</p>
62
+ <div class="col-sm-4">
63
+ <label class="font_normal_body_new">表&emsp;号&emsp;</label>
64
+ <input class="input-underline" style="width:60%" :value="row.f_meternumber" readonly>
65
+ </div>
66
+ <div class="col-sm-4">
67
+ <label class="font_normal_body_new">气表状态</label>
68
+ <input class="input-underline" style="width:60%" :value="row.f_table_state" readonly>
69
+ </div>
70
+ <div class="col-sm-4">
71
+ <label class="font_normal_body_new">当前底数</label>
72
+ <input class="input-underline" style="width:60%" :value="row.f_meter_base" readonly>
73
+ </div>
74
+
75
+ <div class="col-sm-4">
76
+ <label class="font_normal_body_new">气表品牌</label>
77
+ <input class="input-underline" style="width:60%" :value="row.f_meter_brand" readonly>
78
+ </div>
79
+
80
+ <div class="col-sm-4">
81
+ <label class="font_normal_body_new">气价名称</label>
82
+ <input class="input-underline" style="width:60%" :value="row.f_price_name" readonly>
83
+ </div>
84
+ <div class="col-sm-4">
85
+ <label class="font_normal_body_new">气价类型</label>
86
+ <input class="input-underline" style="width:60%" :value="row.f_price_type" readonly>
87
+ </div>
88
+ <div class="col-sm-4">
89
+ <label class="font_normal_body_new">价格详情</label>
90
+ <input class="input-underline" style="width:60%" :value="row.f_detailprice" readonly>
91
+ </div>
92
+ <div class="col-sm-4">
93
+ <label class="font_normal_body_new" title="最后上报时间">上报时间</label>
94
+ <input class="input-underline" style="width:60%" :value="row.f_meteread_date ? row.f_meteread_date : '暂无'" readonly>
95
+ </div>
96
+ <div v-if="row.f_collection_type == '按金额'" class="col-sm-4">
97
+ <label class="font_normal_body_new">累购金额</label>
98
+ <input class="input-underline" style="width:60%" :value="row.total_fee" readonly>
99
+ </div>
100
+ <div v-if="row.f_collection_type == '按气量'">
101
+ <div class="col-sm-4">
102
+ <label class="font_normal_body_new">累购气量</label>
103
+ <input class="input-underline" style="width:60%" :value="row.f_total_gas" readonly>
104
+ </div>
105
+ <div class="col-sm-4">
106
+ <label class="font_normal_body_new">最后结算时间</label>
107
+ <input class="input-underline" style="width:45%" :value="row.f_hand_date ? row.f_hand_date :'暂无'" readonly>
108
+ </div>
109
+ </div>
110
+ <div v-if="row.f_meter_type.includes('物联网表')" >
111
+ <div class="col-sm-4">
112
+ <label class="font_normal_body_new">物联网次数</label>
113
+ <input class="input-underline" style="width:55%" :value="row.f_iot_times" readonly>
114
+ </div>
115
+ <div class="col-sm-4">
116
+ <label class="font_normal_body_new">表剩余金额</label>
117
+ <input class="input-underline" style="width:55%" :value="row.f_balance_amount" readonly>
118
+ </div>
119
+ <div class="col-sm-4">
120
+ <label class="font_normal_body_new">阀门状态</label>
121
+ <input class="input-underline" style="width:60%" :value="row.f_valvestate == 0 ? '已开阀' : '已关阀'" readonly>
122
+ </div>
123
+ <div class="col-sm-4">
124
+ <label class="font_normal_body_new">累计上报次数</label>
125
+ <input class="input-underline" style="width:45%" :value="row.f_meteread_number ? row.f_meteread_number : 0" readonly>
126
+ </div>
127
+ <div class="col-sm-4">
128
+ <label class="font_normal_body_new">是否自动阀控</label>
129
+ <input class="input-underline" style="width:45%" :value="row.f_network_valve == '1' ? '否' : '是'" readonly>
130
+ </div>
131
+ </div>
132
+ <div v-if="row.f_collection_type == '按气量'" >
133
+ <div class="col-sm-4">
134
+ <label class="font_normal_body_new">表剩余气量</label>
135
+ <input class="input-underline" style="width:55%" :value="row.f_balance_gas" readonly>
136
+ </div>
137
+ <div class="col-sm-4">
138
+ <label class="font_normal_body_new">累计用气金额</label>
139
+ <input class="input-underline" style="width:45%" :value="row.f_total_usegas_amount" readonly>
140
+ </div>
141
+ </div>
142
+ <div class="col-sm-4">
143
+ <label class="font_normal_body_new">写卡次数</label>
144
+ <input class="input-underline" style="width:45%" :value="row.f_times" readonly>
145
+ </div>
146
+ <div class="col-sm-4">
147
+ <label class="font_normal_body_new">抄表册名</label>
148
+ <input class="input-underline" style="width:45%" :value="(row.f_book_code!=null ? '['+row.f_book_code + '] ' : '') + (row.f_book_name!=null ? row.f_book_name:'')" readonly>
149
+ </div>
150
+ <div class="col-sm-4">
151
+ <label class="font_normal_body_new">抄表册册序号</label>
152
+ <input class="input-underline" style="width:45%" :value="row.f_meter_book_sort" readonly>
153
+ </div>
154
+ </div>
155
+ <div class="auto" style="float: right;">
156
+ <button class="button_clear " @click="cancelmain()" >返回</button>
157
+ <button class="button_search" type="button" @click="goChargeManage">去收费</button>
158
+ <button v-if="row.f_meter_brand.includes('西美')&&row.f_meter_type.includes('物联网表')"
159
+ class="button_search" type="button" @click="clearBarrier">清除障碍</button>
160
+ <button v-if="row.f_meter_type.includes('物联网表')"
161
+ class="button_search" type="button" @click="openUser">开户</button>
162
+ <button v-if="row.f_meter_type.includes('物联网表')"
163
+ class="button_search" type="button" @click="valvecontrol">开关阀</button>
164
+ <button v-if="row.f_meter_type.includes('物联网表')"
165
+ class="button_search" type="button" @click="zdfk">开关自动阀控</button>
166
+ <div
167
+ :class="{'button_shrink_top':criteriaShow,'button_shrink_bottom':!criteriaShow}"
168
+ @click="criteriaShow=!criteriaShow"
169
+ class="button_spacing"
170
+ style="float: right"></div>
171
+ </div>
172
+ </div>
173
+
174
+ <div class="auto row">
175
+ <div class="col-sm-6" style="width:49%;"></div>
176
+ <div class="auto form-group-new">
177
+ <div class="col-sm-6" style="height:auto;width:49%;" v-show="criteriaShow">
178
+ <div class="col-sm-4">
179
+ <label class="font_normal_body_new">气表型号</label>
180
+ <input class="input-underline" style="width:60%" :value="row.f_meter_style" readonly>
181
+ </div>
182
+ <div class="col-sm-4">
183
+ <label class="font_normal_body_new">气表类型</label>
184
+ <input class="input-underline" style="width:60%" :value="row.f_meter_type" readonly>
185
+ </div>
186
+ <div class="col-sm-4">
187
+ <label class="font_normal_body_new">初始底数</label>
188
+ <input class="input-underline" style="width:60%" :value="row.f_initial_base" readonly>
189
+ </div>
190
+ <div class="col-sm-4">
191
+ <label class="font_normal_body_new">左&ensp;右&ensp;表</label>
192
+ <input class="input-underline" style="width:60%" :value="row.f_aroundmeter" readonly>
193
+ </div>
194
+ <div class="col-sm-4">
195
+ <label class="font_normal_body_new">建表日期</label>
196
+ <input class="input-underline" style="width:60%" :value="row.f_input_date.substring(0,7)" readonly>
197
+ </div>
198
+ <div v-if="devices.length > 0" v-show="false" style="height: auto" >
199
+ <p style="font-weight: bold;margin: 0">设备信息</p>
200
+ <div class="panel-heading" style="height: 30px">
201
+ <h4 style="display:inline-block;margin-top: auto">设备信息</h4>
202
+ </div>
203
+ <div v-for="device in devices">
204
+
205
+ <form class="form-horizontal">
206
+ <div class="col-sm-4">
207
+ <label class="font_normal_body_new">设备类型</label>
208
+ <input class="input-underline" style="width:60%" :value="device.f_devices_type" readonly>
209
+ </div>
210
+ <div class="col-sm-4">
211
+ <label class="font_normal_body_new">设备品牌</label>
212
+ <input class="input-underline" style="width:60%" :value="device.f_brand" readonly>
213
+ </div>
214
+ <div class="col-sm-4">
215
+ <label class="font_normal_body_new">设备型号</label>
216
+ <input class="input-underline" style="width:60%" :value="device.f_devices_model" readonly>
217
+ </div>
218
+ <div class="col-sm-4">
219
+ <label class="font_normal_body_new">设备数量</label>
220
+ <input class="input-underline" style="width:60%" :value="device.f_devices_num" readonly>
221
+ </div>
222
+ </form>
223
+ </div>
224
+ </div>
225
+ </div>
226
+ </div>
227
+ </div>
228
+ <!--阀控管理弹框-->
229
+ <modal :show.sync="valve">
230
+ <header slot="modal-header" class="modal-header">
231
+ <button type="button" class="close" @click="close()"><span>&times;</span></button>
232
+ <h4 class="modal-title" align="center">阀控管理</h4>
233
+ </header>
234
+ <article slot="modal-body" class="modal-body">
235
+ <div class="form-group " style="padding-left: 8px">
236
+ <label class="font_normal_body" :class="operateReason?'text-info':'text-danger'">操作原因</label>
237
+ <textarea class="form-control" style="width:80%" v-model="operateReason" rows="3" placeholder="请填写操作原因"></textarea>
238
+ </div>
239
+ </article>
240
+ <footer slot="modal-footer" class="modal-footer">
241
+ <button type="button" class="button_search btn-ln fr" :disabled="!operateReason" @click='valveoperate(true)'>开阀</button>
242
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
243
+ <button type="button" class="btn btn-info btn-ln fr" :disabled="!operateReason" @click='valveoperate(false)'>关阀</button>
244
+ </footer>
245
+ </modal>
246
+ </div>
247
+ </template>
248
+
249
+ <script>
250
+ import {HttpResetClass} from 'vue-client'
251
+ import Vue from 'vue'
252
+ export default {
253
+ title: '基本信息',
254
+ props: ['row'],
255
+ data () {
256
+ return {
257
+ criteriaShow: false,
258
+ devices: [],
259
+ valveLimit: false,
260
+ // 开关阀操作原因
261
+ operateReason: '',
262
+ valve: false
263
+ }
264
+ },
265
+
266
+ ready () {
267
+ this.getDevice()
268
+ this.valveLimit = this.$login.r.includes('开关阀权限')
269
+ },
270
+ methods: {
271
+ // 发送请求去数据
272
+ async getDevice () {
273
+ if (this.row) {
274
+ let http = new HttpResetClass()
275
+ let condition = `f_userinfo_id = '${this.row.f_userinfo_id}'`
276
+ let getDevices = await http.load('POST', 'rs/sql/sale_GetDevicesInfo', {data: {condition: condition}}, {rejectMsg: '获取设备信息出错!!', resolveMsg: null})
277
+ this.devices = getDevices.data
278
+ }
279
+ },
280
+
281
+ // 返回
282
+ cancelmain () {
283
+ this.$emit('cancel-main')
284
+ },
285
+ clearBarrier(){
286
+ // 地址
287
+ // 127.0.0.1:8445
288
+ // 参数
289
+ let datas = {
290
+ moduleName:"XiMeiSystem", // 固定值
291
+ content:{
292
+ tradeCode:"3015",// 固定值
293
+ appid: "yysf", // 固定值
294
+ partner: "cqsemay_bcts", // 固定值
295
+ version:"v1", // 固定值
296
+ tasked:this.getuuid(), // 任务id
297
+ notifyUrl:"http://192.168.2.10:8445/webmeter/rs/logic/XiMeiSystemCallBack", // 固定值
298
+ meterNo: this.row.f_meternumber,// 表号
299
+ signType:" MD5" //固定值
300
+ },
301
+ title: "清除异常", // 固定值
302
+ type: "清除异常", // 固定值
303
+ inputtor:this.row.f_operator, // 操作人
304
+ userId:this.row.f_userfiles_id, // 表档案ID
305
+ dataId: null // 操作记录ID
306
+ }
307
+ this.$resetpost('/webmeter/rs/logic/syncSaveSetParamsTemplate', {data: datas},{resolveMsg: `清理成功`, rejectMsg: `清理失败`}).then(res => {
308
+ })
309
+ },
310
+ getuuid(){
311
+ let uuidA = '';
312
+ var s = [];
313
+ var hexDigits = '0123456789abcdef';
314
+ for (var i = 0; i < 36; i++) {
315
+ s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
316
+ }
317
+ s[14] = '4';
318
+ s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
319
+ s[8] = s[13] = s[18] = s[23] = '-';
320
+ uuidA = s.join('');
321
+ return uuidA;
322
+ },
323
+ async goChargeManage () {
324
+ await this.$copyText(this.row.f_userinfo_code)
325
+ this.$showAlert(`用户编号已复制到剪切板!`, 'success', 2000)
326
+ this.$goto('charge-manage', {f: this.$login.f}, 'main')
327
+ },
328
+ openUser () {
329
+ this.$showMessage(`是否需要给用户进行开户?`, ['confirm', 'cancel']).then(async (res) => {
330
+ if (res === 'confirm') {
331
+ let data = {
332
+ f_userfiles_id: this.row.f_userfiles_id
333
+ }
334
+ this.$resetpost('rs/logic/startup',data)
335
+ }
336
+ })
337
+ },
338
+ // 阀控管理
339
+ zdfk () {
340
+ let data = {
341
+ f_userfiles_id: this.row.f_userfiles_id
342
+ }
343
+ if (this.row.f_network_valve !== '1') {
344
+ this.$resetpost('rs/logic/openzdfk', data, {resolveMsg: '关闭自动阀控成功。', rejectMsg: '关闭自动阀控失败!!!'})
345
+ this.row.f_network_valve = '1'
346
+ } else {
347
+ this.$resetpost('rs/logic/closezdfk', data, {resolveMsg: '开启自动阀控成功。', rejectMsg: '开启自动阀控失败!!!'})
348
+ this.row.f_network_valve = null
349
+ }
350
+ },
351
+ // 阀控管理
352
+ valvecontrol () {
353
+ if (this.$login.r.includes('开关阀')) {
354
+ this.valve = true
355
+ } else {
356
+ this.$showAlert('您没有开关阀权限,请联系管理员!!', 'warning', 3000)
357
+ }
358
+ },
359
+ close () {
360
+ this.valve = false
361
+ this.operateReason = ''
362
+ },
363
+ // 开关阀操作
364
+ async valveoperate (oper) {
365
+ let msg = oper ? '开阀' : '关阀'
366
+ let datas = {
367
+ instructType: '阀门控制',
368
+ instructTitle: `手动${msg}`,
369
+ condition: `t_userfiles.f_userfiles_id='${this.row.f_userfiles_id}'`,
370
+ meterBrandName: this.row.f_alias,
371
+ f_instruct_state: '待发送',
372
+ inputtor: Vue.$login.f.name,
373
+ reasonInfo: this.operateReason,
374
+ meternumberf: this.row.f_meternumber,
375
+ contentData: {isOpen: oper ? 1 : 0}
376
+ }
377
+ await this.$resetpost('rs/logic/iot_saveInstruct', {data: datas},
378
+ {warnMsg: `确定要进行${msg}操作吗?`, resolveMsg: `${msg}成功`, rejectMsg: `${msg}失败`}).then(res => {
379
+ this.valve = false
380
+ this.operateReason = ''
381
+ })
382
+ }
383
+ },
384
+ watch: {
385
+ 'row' () {
386
+ this.getDevice()
387
+ }
388
+ }
389
+ }
390
+ </script>
391
+ <style scoped lang="less">
392
+ .form-group-new > div {
393
+ height: 3% !important;
394
+
395
+ }
396
+
397
+ .datapanel {
398
+ color: #333;
399
+ background-color: white;
400
+ box-shadow: darkgrey 0.5px 0.5px 0.5px 0.5px ;
401
+ padding: 10px 30px 10px 30px;
402
+ height: auto;
403
+ border-radius:15px;
404
+ }
405
+ .text-info {
406
+ color: lightskyblue;
407
+ }
408
+ .text-danger {
409
+ color: red;
410
+ }
411
+ .input-underline {
412
+ border-bottom: 1px solid #dbdbdb;
413
+ border-top: 0px;
414
+ border-left: 0px;
415
+ border-right: 0px;
416
+ }
417
+ .font_normal_body_new {
418
+ font-weight: 100;
419
+ float: left;
420
+ margin-top: 0px;
421
+ font-size: 1.4rem !important;
422
+ line-height: 30px;
423
+ }
424
+
425
+ .col-sm-4,.col-sm-8{
426
+ display: flex;
427
+ align-items: center;
428
+ margin: 7px 0;
429
+
430
+ label{
431
+ line-height: unset;
432
+ margin-bottom: 0;
433
+ }
434
+ }
435
+ </style>
@@ -5,6 +5,8 @@ let specialComp = {
5
5
  // 左侧用户基本信息展示
6
6
  'userinfo': (resolve) => { require(['./base/leftview/Userinfo'], resolve) },
7
7
  // 单个表具信息
8
- 'file-meter-info': (resolve) => { require(['./MeterinfoTest'], resolve) }
8
+ 'file-meter-info': (resolve) => { require(['./MeterinfoTest'], resolve) },
9
+ //收费页面
10
+ 'user-base-info-new': (resolve) => { require(['./UserBaseInfoNew'], resolve) }
9
11
  }
10
12
  exports.specialComp = specialComp