sale-client 3.6.297 → 3.6.299
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/components/charge/ChargeList.vue +4 -1
- package/src/components/common/userinfo_detail/UserBaseInfoNew.vue +90 -17
- package/src/filiale/kelai/meterinfodetail.vue +1 -1
- package/src/filiale/yangchun/EticketV4/CustQueryEticket.vue +9 -7
- package/src/filiale/yangchun/EticketV4/EticketOpenCard.vue +350 -0
- package/src/filiale/yangchun/EticketV4/EticketOpenJBPage.vue +9 -7
- package/src/filiale/yangchun/EticketV4/EticketOpenPage.vue +9 -7
- package/src/filiale/yangchun/sale.js +6 -2
- package/src/filiale/zhongyi/machineHand.vue +2190 -2190
package/package.json
CHANGED
|
@@ -360,6 +360,7 @@ let cardBtnGen = async function (self, val) {
|
|
|
360
360
|
orderitem: `${self.orderitem} Desc`
|
|
361
361
|
}
|
|
362
362
|
}, {resolveMsg: '读卡成功', rejectMsg: '读卡失败'})
|
|
363
|
+
self.cardInfo.CardID = getUser.data[0].f_card_id
|
|
363
364
|
} else {
|
|
364
365
|
// 获取用户信息
|
|
365
366
|
getUser = await self.$resetpost('rs/sql/sale_getUser', {
|
|
@@ -428,6 +429,7 @@ let cardBtnGen = async function (self, val) {
|
|
|
428
429
|
orderitem: `${self.orderitem} Desc`
|
|
429
430
|
}
|
|
430
431
|
}, {resolveMsg: '读卡成功', rejectMsg: '读卡失败'})
|
|
432
|
+
self.cardInfo.CardID = getUser.data[0].f_card_id
|
|
431
433
|
} else {
|
|
432
434
|
// 获取用户信息
|
|
433
435
|
getUser = await self.$resetpost('rs/sql/sale_getUser', {
|
|
@@ -448,7 +450,7 @@ let cardBtnGen = async function (self, val) {
|
|
|
448
450
|
// 验证卡上信息和获取的用户信息
|
|
449
451
|
if (self.cardInfo.CardID != getUser.data[0].f_card_id || self.cardInfo.Factory != getUser.data[0].f_alias) {
|
|
450
452
|
self.$showAlert(`此时的卡片信息和用户信息不匹配,请核实后在进行读卡。卡上信息: 卡号-${self.cardInfo.CardID},厂家-${self.cardInfo.Factory}。
|
|
451
|
-
|
|
453
|
+
用户信息: 卡号-${getUser.data[0].f_card_id},厂家-${getUser.data[0].f_alias}`, 'warning', 5000)
|
|
452
454
|
return
|
|
453
455
|
}
|
|
454
456
|
self.model.state = '正确'
|
|
@@ -535,6 +537,7 @@ let cardBtnGen = async function (self, val) {
|
|
|
535
537
|
orderitem: `${self.orderitem} Desc`
|
|
536
538
|
}
|
|
537
539
|
}, {resolveMsg: '读卡成功', rejectMsg: '读卡失败'})
|
|
540
|
+
self.cardInfo.CardID = getUser.data[0].f_card_id
|
|
538
541
|
} else {
|
|
539
542
|
// 获取用户信息
|
|
540
543
|
getUser = await self.$resetpost('rs/sql/sale_getUser', {
|
|
@@ -244,9 +244,21 @@
|
|
|
244
244
|
<h4 class="modal-title" align="center">阀控管理</h4>
|
|
245
245
|
</header>
|
|
246
246
|
<article slot="modal-body" class="modal-body">
|
|
247
|
+
<div class="form-group" style="padding-left: 8px">
|
|
248
|
+
<label >阀控状态</label>
|
|
249
|
+
<div class="col-sm-3" >
|
|
250
|
+
<select v-model="selectedOption" class="input_search">
|
|
251
|
+
<option value="">请选择</option>
|
|
252
|
+
<option v-for="option in networkValveOptions" :value="option">
|
|
253
|
+
{{ option }}
|
|
254
|
+
</option>
|
|
255
|
+
</select>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
|
|
247
259
|
<div class="form-group " style="padding-left: 8px">
|
|
248
260
|
<label class="font_normal_body" :class="operateReason?'text-info':'text-danger'">操作原因</label>
|
|
249
|
-
<textarea class="form-control" style="width:80%" v-model="operateReason" rows="
|
|
261
|
+
<textarea class="form-control" style="width:80%" v-model="operateReason" rows="1"
|
|
250
262
|
placeholder="请填写操作原因"></textarea>
|
|
251
263
|
</div>
|
|
252
264
|
</article>
|
|
@@ -254,7 +266,6 @@
|
|
|
254
266
|
<button type="button" class="button_search btn-ln fr" :disabled="!operateReason" @click='valveoperate(true)'>
|
|
255
267
|
开阀
|
|
256
268
|
</button>
|
|
257
|
-
|
|
258
269
|
<button type="button" class="btn btn-info btn-ln fr" :disabled="!operateReason" @click='valveoperate(false)'>
|
|
259
270
|
关阀
|
|
260
271
|
</button>
|
|
@@ -319,6 +330,16 @@ export default {
|
|
|
319
330
|
},
|
|
320
331
|
data () {
|
|
321
332
|
return {
|
|
333
|
+
selectedOption: '手动',
|
|
334
|
+
delaySeconds: '',
|
|
335
|
+
networkValveOptions: [
|
|
336
|
+
'手动',
|
|
337
|
+
'自动',
|
|
338
|
+
'1小时后自动',
|
|
339
|
+
'3小时后自动',
|
|
340
|
+
'6小时后自动',
|
|
341
|
+
'12小时后自动',
|
|
342
|
+
],
|
|
322
343
|
showModal: false,
|
|
323
344
|
disableModel: {
|
|
324
345
|
f_othereason: '',
|
|
@@ -503,8 +524,16 @@ export default {
|
|
|
503
524
|
this.operateReason = ''
|
|
504
525
|
},
|
|
505
526
|
// 开关阀操作
|
|
506
|
-
|
|
507
|
-
|
|
527
|
+
// 开关阀操作
|
|
528
|
+
async valveoperate(oper) {
|
|
529
|
+
let msg = oper ? '开阀' : '关阀';
|
|
530
|
+
let delaySeconds = 0; // 初始化 delaySeconds 变量
|
|
531
|
+
let currentTime = new Date(); // 获取当前时间
|
|
532
|
+
let adjustedTime = new Date(currentTime); // 创建一个新的 Date 对象用于计算延迟后的时间
|
|
533
|
+
|
|
534
|
+
let beijingTime = new Date(currentTime.getTime() + 8 * 60 * 60 * 1000);
|
|
535
|
+
let formattedBeijingTime = beijingTime.toISOString().slice(0, 19).replace('T', ' ');
|
|
536
|
+
|
|
508
537
|
let datas = {
|
|
509
538
|
instructType: '阀门控制',
|
|
510
539
|
instructTitle: `手动${msg}`,
|
|
@@ -515,24 +544,68 @@ export default {
|
|
|
515
544
|
inputtorid: Vue.$login.f.id,
|
|
516
545
|
reasonInfo: this.operateReason,
|
|
517
546
|
meternumberf: this.row.f_meternumber,
|
|
518
|
-
contentData: {isOpen: oper ? 1 : 0}
|
|
547
|
+
contentData: { isOpen: oper ? 1 : 0 },
|
|
548
|
+
auto_adjust_option: this.selectedOption,
|
|
549
|
+
delaySeconds: delaySeconds,
|
|
550
|
+
executeDelayedOperation: true,
|
|
551
|
+
f_timestamp: formattedBeijingTime, // 使用北京时间
|
|
552
|
+
f_userfiles_id: this.row.f_userfiles_id,
|
|
553
|
+
f_userinfo_id: this.row.f_userinfo_id,
|
|
554
|
+
};
|
|
555
|
+
|
|
556
|
+
let _this = this;
|
|
557
|
+
|
|
558
|
+
// 计算延迟时间
|
|
559
|
+
switch (_this.selectedOption) {
|
|
560
|
+
case '1小时后自动':
|
|
561
|
+
delaySeconds = 3600; // 1小时 = 3600秒
|
|
562
|
+
break;
|
|
563
|
+
case '3小时后自动':
|
|
564
|
+
delaySeconds = 10800; // 3小时 = 10800秒
|
|
565
|
+
break;
|
|
566
|
+
case '6小时后自动':
|
|
567
|
+
delaySeconds = 21600; // 6小时 = 21600秒
|
|
568
|
+
break;
|
|
569
|
+
case '12小时后自动':
|
|
570
|
+
delaySeconds = 43200; // 12小时 = 43200秒
|
|
571
|
+
break;
|
|
572
|
+
default:
|
|
573
|
+
delaySeconds = 0;
|
|
519
574
|
}
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
575
|
+
|
|
576
|
+
adjustedTime.setSeconds(adjustedTime.getSeconds() + delaySeconds);
|
|
577
|
+
let adjustedBeijingTime = new Date(adjustedTime.getTime() + 8 * 60 * 60 * 1000);
|
|
578
|
+
let formattedAdjustedBeijingTime = adjustedBeijingTime.toISOString().slice(0, 19).replace('T', ' ');
|
|
579
|
+
|
|
580
|
+
// 更新 datas 对象
|
|
581
|
+
datas.delaySeconds = delaySeconds;
|
|
582
|
+
datas.f_current_timestamp = formattedAdjustedBeijingTime; // 使用延迟后的北京时间
|
|
583
|
+
|
|
584
|
+
await this.$resetpost('rs/sql/iot_searchInstruct', { data: datas }, { warnMsg: null, resolveMsg: null }).then(res => {
|
|
523
585
|
if (res.data.length === 0) {
|
|
524
|
-
_this.$resetpost('rs/logic/iot_saveInstruct', {data: datas},
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
})
|
|
586
|
+
_this.$resetpost('rs/logic/iot_saveInstruct', { data: datas }, {
|
|
587
|
+
warnMsg: `确定要进行${msg}操作吗?`,
|
|
588
|
+
resolveMsg: `${msg}成功`,
|
|
589
|
+
rejectMsg: `${msg}失败`
|
|
590
|
+
}).then(res => {
|
|
591
|
+
_this.valve = false;
|
|
592
|
+
_this.operateReason = '';
|
|
593
|
+
if (_this.selectedOption !== '手动') {
|
|
594
|
+
_this.$showAlert(`阀控状态将在${_this.selectedOption}后自动调整为“自动”`, 'info', 3000);
|
|
595
|
+
|
|
596
|
+
_this.$resetpost('rs/logic/iot_processDelayedOperations', { data: datas }, { warnMsg: null, resolveMsg: null }).then(res => {
|
|
597
|
+
console.log('延时操作逻辑已执行');
|
|
598
|
+
});
|
|
599
|
+
}
|
|
600
|
+
});
|
|
529
601
|
} else {
|
|
530
|
-
this.$showAlert('存在开关阀待发送的指令,系统不生成同样的待发送指令', 'warning', 3000)
|
|
531
|
-
_this.valve = false
|
|
532
|
-
_this.operateReason = ''
|
|
602
|
+
this.$showAlert('存在开关阀待发送的指令,系统不生成同样的待发送指令', 'warning', 3000);
|
|
603
|
+
_this.valve = false;
|
|
604
|
+
_this.operateReason = '';
|
|
533
605
|
}
|
|
534
|
-
})
|
|
606
|
+
});
|
|
535
607
|
}
|
|
608
|
+
|
|
536
609
|
},
|
|
537
610
|
watch: {
|
|
538
611
|
'row' () {
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
</div>
|
|
76
76
|
<div class="row" v-if="data.f_meter_type.includes('物联网') && data.f_collection_type === '按金额'">
|
|
77
77
|
<label class = "col-sm-5 " style="color: brown">系统余额</label>
|
|
78
|
-
<span class = "col-sm-7" style="color: brown">{{data?data.
|
|
78
|
+
<span class = "col-sm-7" style="color: brown">{{data?data.f_jval:dafault.f_jval}}</span>
|
|
79
79
|
</div>
|
|
80
80
|
<div class="row" v-if="data.f_meter_type.includes('物联网') && data.f_collection_type === '按气量'">
|
|
81
81
|
<label class = "col-sm-5 " style="color: brown">系统余量</label>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<div class="col-sm-6 form-group form-input-group" :class="[!row.f_paper_name ? 'has-error' : '']">
|
|
117
117
|
<label class="control-label" style="width: 100px">开票名称:</label>
|
|
118
118
|
<input class="form-control col-sm-2"
|
|
119
|
-
v-model="row.f_paper_name" placeholder="开票名称">
|
|
119
|
+
v-model="row.f_paper_name" placeholder="开票名称" :disabled="true">
|
|
120
120
|
</div>
|
|
121
121
|
<div class="col-sm-6 form-group form-input-group" :class="[!invoice_is_pax ? 'has-error' : '']">
|
|
122
122
|
<nobr class="col-sm-4"><label class="control-label" style="width: 100px">是否征税:</label></nobr>
|
|
@@ -231,9 +231,10 @@
|
|
|
231
231
|
if (!this.row.f_taxpayer_id) {
|
|
232
232
|
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
233
233
|
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
234
|
+
// 要求开票名称跟档案里的用户名一致,所以这里直接赋值,不判断是否有值
|
|
235
|
+
// if (!this.row.f_paper_name) {
|
|
236
|
+
this.row.f_paper_name = this.row.f_user_name
|
|
237
|
+
// }
|
|
237
238
|
if (!this.row.f_address_phone) {
|
|
238
239
|
this.row.f_address_phone = this.row.f_address + ' ' + this.row.f_user_phone
|
|
239
240
|
}
|
|
@@ -268,9 +269,10 @@
|
|
|
268
269
|
if (!this.row.f_taxpayer_id) {
|
|
269
270
|
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
270
271
|
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
272
|
+
// 要求开票名称跟档案里的用户名一致,所以这里直接赋值,不判断是否有值
|
|
273
|
+
// if (!this.row.f_paper_name) {
|
|
274
|
+
this.row.f_paper_name = this.row.f_user_name
|
|
275
|
+
// }
|
|
274
276
|
if (!this.row.f_address_phone) {
|
|
275
277
|
this.row.f_address_phone = this.row.f_address + ' ' + this.row.f_user_phone
|
|
276
278
|
}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="auto basic-main" style="height:95%">
|
|
3
|
+
<criteria-paged :model="model" v-ref:paged>
|
|
4
|
+
<criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
|
|
5
|
+
<div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
|
|
6
|
+
<div class="row">
|
|
7
|
+
<div class="form-group col-sm-2">
|
|
8
|
+
<label class="font_normal_body">客户编号</label>
|
|
9
|
+
<input type="text" class="form-control" v-model="model.f_userinfo_code" style="width:60%"
|
|
10
|
+
condition="info.f_userinfo_code = '{}' " placeholder="客户编号"
|
|
11
|
+
>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="form-group col-sm-2">
|
|
14
|
+
<label class="font_normal_body">用户姓名</label>
|
|
15
|
+
<input type="text" class="form-control" v-model="model.f_user_name" style="width:60%"
|
|
16
|
+
condition="info.f_user_name = '{}'" placeholder="用户姓名"
|
|
17
|
+
>
|
|
18
|
+
</div>
|
|
19
|
+
<div class="form-group col-sm-2">
|
|
20
|
+
<label class="font_normal_body">是否有票</label>
|
|
21
|
+
<v-select
|
|
22
|
+
v-model="model.mid"
|
|
23
|
+
placeholder='是否有票'
|
|
24
|
+
:search="false"
|
|
25
|
+
condition="mid.count {} "
|
|
26
|
+
:value.sync="model.mid"
|
|
27
|
+
:options='$parent.$parent.mid'
|
|
28
|
+
close-on-select></v-select>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="row" width="100%">
|
|
31
|
+
<div class="col-sm-4 col-sm-2">
|
|
32
|
+
<label class="font_normal_body"> 开始时间</label>
|
|
33
|
+
<datepicker :format="'yyyy-MM-dd'" :value.sync="model.f_start_date"
|
|
34
|
+
class="datepicker"
|
|
35
|
+
condition="s.f_operate_date >= '{} 00:00:00'"
|
|
36
|
+
placeholder="起始时间"
|
|
37
|
+
style="width:60%"
|
|
38
|
+
v-model="model.f_start_date"
|
|
39
|
+
></datepicker>
|
|
40
|
+
</div>
|
|
41
|
+
<div class="col-sm-4 col-sm-2">
|
|
42
|
+
<label class="font_normal_body">结束时间</label>
|
|
43
|
+
<datepicker :format="'yyyy-MM-dd'" :value.sync="model.f_end_date"
|
|
44
|
+
class="datepicker"
|
|
45
|
+
condition="s.f_operate_date <= '{} 23:59:59'"
|
|
46
|
+
placeholder="结束时间"
|
|
47
|
+
style="width:60%"
|
|
48
|
+
v-model="model.f_end_date"
|
|
49
|
+
></datepicker>
|
|
50
|
+
</div>
|
|
51
|
+
<div style="float: right">
|
|
52
|
+
<button class="button_search" @click="search()">查 询</button>
|
|
53
|
+
<button class="button_search" @click="$parent.$parent.open_eTicket()">开票</button>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</criteria>
|
|
59
|
+
<data-grid :model="model" partial='list' class="list_area table_sy" v-ref:grid>
|
|
60
|
+
<template partial='head'>
|
|
61
|
+
<tr>
|
|
62
|
+
<th>
|
|
63
|
+
<input type="checkbox" @click="$parent.$parent.$parent.addOrRemove($parent.$parent.$parent.selectAll)"
|
|
64
|
+
style="width: 22px;height: 22px" :checked="$parent.$parent.$parent.selectAll">
|
|
65
|
+
</th>
|
|
66
|
+
<th>客户编号</th>
|
|
67
|
+
<th>客户姓名</th>
|
|
68
|
+
<th>客户地址</th>
|
|
69
|
+
<th>客户电话</th>
|
|
70
|
+
<th>缴费类型</th>
|
|
71
|
+
<th>实收金额</th>
|
|
72
|
+
<th>收款人</th>
|
|
73
|
+
<th>收款部门</th>
|
|
74
|
+
<th>是否开过票</th>
|
|
75
|
+
<th>缴费时间</th>
|
|
76
|
+
<th>操作</th>
|
|
77
|
+
</tr>
|
|
78
|
+
</template>
|
|
79
|
+
<template partial='body' :model="model">
|
|
80
|
+
<tr>
|
|
81
|
+
<td style="text-align:center">
|
|
82
|
+
<input type="checkbox" v-model="$parent.$parent.$parent.selecteds" :value="row"
|
|
83
|
+
style="width: 22px;height: 22px" @click="$parent.$parent.$parent.checkbox($index, $event)">
|
|
84
|
+
</td>
|
|
85
|
+
<th style="text-align:center">{{ row.f_userinfo_code }}</th>
|
|
86
|
+
<th style="text-align:center">{{ row.f_user_name }}</th>
|
|
87
|
+
<th style="text-align:center">{{ row.f_address }}</th>
|
|
88
|
+
<th style="text-align:center">{{ row.f_phone }}</th>
|
|
89
|
+
<th style="text-align:center">{{ row.f_type }}</th>
|
|
90
|
+
<th style="text-align:center">{{ row.f_collection }}</th>
|
|
91
|
+
<th style="text-align:center">{{ row.f_operator }}</th>
|
|
92
|
+
<th style="text-align:center">{{ row.f_depname }}</th>
|
|
93
|
+
<th style="text-align:center">{{ row.is_bill }}</th>
|
|
94
|
+
<th style="text-align:center">{{ row.f_operate_date }}</th>
|
|
95
|
+
<th>
|
|
96
|
+
<button class="btn btn-link" @click="$parent.$parent.$parent.kp(row)">开具发票</button>
|
|
97
|
+
</th>
|
|
98
|
+
</tr>
|
|
99
|
+
</template>
|
|
100
|
+
</data-grid>
|
|
101
|
+
</criteria-paged>
|
|
102
|
+
</div>
|
|
103
|
+
<modal :show.sync="eticket_msg" v-ref:modal large backdrop="false" :width="900">
|
|
104
|
+
<header slot="modal-header" class="modal-header">
|
|
105
|
+
<button type="button" class="close" @click="eticket_msg = false"><span>×</span></button>
|
|
106
|
+
<h4 class="modal-title">发票信息</h4>
|
|
107
|
+
</header>
|
|
108
|
+
<article slot="modal-body" class="modal-body">
|
|
109
|
+
<div class="auto select-overspread form-horizontal">
|
|
110
|
+
<div class="row auto">
|
|
111
|
+
<div class="col-sm-6 form-group form-input-group" :class="[!row.f_paper_name ? 'has-error' : '']">
|
|
112
|
+
<label class="control-label" style="width: 100px">开票名称:</label>
|
|
113
|
+
<input class="form-control col-sm-2"
|
|
114
|
+
v-model="row.f_paper_name" placeholder="开票名称" :disabled="true">
|
|
115
|
+
</div>
|
|
116
|
+
<div class="col-sm-6 form-group form-input-group" :class="[!invoice_is_pax ? 'has-error' : '']">
|
|
117
|
+
<nobr class="col-sm-4">
|
|
118
|
+
<label class="control-label" style="width: 100px">是否征税:</label>
|
|
119
|
+
</nobr>
|
|
120
|
+
<v-select v-model="invoice_is_pax"
|
|
121
|
+
placeholder='请选择'
|
|
122
|
+
:value.sync="invoice_is_pax"
|
|
123
|
+
close-on-select
|
|
124
|
+
:width="60"
|
|
125
|
+
:value-single="true"
|
|
126
|
+
:search="false"
|
|
127
|
+
:options='is_pax' clear-button>
|
|
128
|
+
</v-select>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="col-sm-6 form-group form-input-group" :class="[!row.f_paper_type || !row.f_paper_type === '' ? 'has-error' : '']">
|
|
131
|
+
<label class="control-label" style="width: 100px">发票种类:</label>
|
|
132
|
+
<v-select v-model="row.f_paper_type"
|
|
133
|
+
placeholder='请选择'
|
|
134
|
+
:value.sync="row.f_paper_type"
|
|
135
|
+
close-on-select
|
|
136
|
+
:width="60"
|
|
137
|
+
:value-single="true"
|
|
138
|
+
:search="false"
|
|
139
|
+
:options='invoice_types' clear-button>
|
|
140
|
+
</v-select>
|
|
141
|
+
</div>
|
|
142
|
+
<div class="col-sm-12 form-group form-input-group">
|
|
143
|
+
<label class="control-label" style="width: 100px">开户行及账号:</label>
|
|
144
|
+
<input class="form-control col-sm-2"
|
|
145
|
+
v-model="row.f_paper_account" placeholder="购方开户行及账号">
|
|
146
|
+
</div>
|
|
147
|
+
<div class="col-sm-12 form-group form-input-group" >
|
|
148
|
+
<label class="control-label" style="width: 100px">纳税人识别号:</label>
|
|
149
|
+
<input class="form-control col-sm-2"
|
|
150
|
+
v-model="row.f_taxpayer_id" placeholder="纳税人识别号">
|
|
151
|
+
</div>
|
|
152
|
+
<div class="col-sm-12 form-group form-input-group" :class="[!row.f_address_phone ? 'has-error' : '']">
|
|
153
|
+
<label class="control-label" style="width: 100px">开票地址电话:</label>
|
|
154
|
+
<input class="form-control col-sm-2"
|
|
155
|
+
v-model="row.f_address_phone" placeholder="开票地址">
|
|
156
|
+
</div>
|
|
157
|
+
<div class="col-sm-12 form-group form-input-group">
|
|
158
|
+
<label class="control-label" style="width: 100px">邮箱推送:</label>
|
|
159
|
+
<input class="form-control col-sm-2"
|
|
160
|
+
v-model="row.f_email" placeholder="邮箱推送">
|
|
161
|
+
</div>
|
|
162
|
+
<div class="col-sm-12 form-group form-input-group">
|
|
163
|
+
<label class="control-label" style="width: 100px">备注:</label>
|
|
164
|
+
<input class="form-control col-sm-2"
|
|
165
|
+
v-model="row.f_remarks" placeholder="备注">
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
</article>
|
|
170
|
+
<footer slot="modal-footer" class="modal-footer">
|
|
171
|
+
<button type="button" class="btn button_search"
|
|
172
|
+
:disabled="!(row.f_paper_name&&row.f_paper_type&&invoice_is_pax&&row.f_paper_type!== '')"
|
|
173
|
+
@click='confirm'>确认开票
|
|
174
|
+
</button>
|
|
175
|
+
</footer>
|
|
176
|
+
</modal>
|
|
177
|
+
<ticket-print :show="eticket_show" @toggle="eticket_toggle" v-ref:eticketbill></ticket-print>
|
|
178
|
+
</template>
|
|
179
|
+
<script>
|
|
180
|
+
import {HttpResetClass, PagedList} from 'vue-client'
|
|
181
|
+
import * as Util from '../../../Util'
|
|
182
|
+
let asyncReadyGen = async function (self) {
|
|
183
|
+
self.$refs.paged.$refs.cri.model.f_start_date = Util.toStandardDateString().substr(0, 5) + '01-01'
|
|
184
|
+
self.$refs.paged.$refs.cri.model.f_end_date = Util.toStandardDateString()
|
|
185
|
+
await self.search()
|
|
186
|
+
}
|
|
187
|
+
export default {
|
|
188
|
+
title: '发票管理',
|
|
189
|
+
data () {
|
|
190
|
+
return {
|
|
191
|
+
model: new PagedList('rs/sql/open_eTicket_cardQuery', 20,
|
|
192
|
+
{}),
|
|
193
|
+
criteriaShow: false,
|
|
194
|
+
getfield: {},
|
|
195
|
+
f_orgid: '',
|
|
196
|
+
other: [],
|
|
197
|
+
footer: [],
|
|
198
|
+
invoice_types: this.$appdata.getParam('发票种类'),
|
|
199
|
+
invoice_is_pax: '征税',
|
|
200
|
+
is_pax: [{label: '征税', value: '征税'}, {label: '不征税', value: '不征税'}],
|
|
201
|
+
initres: {
|
|
202
|
+
org: [this.$login.f.orgid],
|
|
203
|
+
dep: [],
|
|
204
|
+
user: []
|
|
205
|
+
},
|
|
206
|
+
eticket_show: false,
|
|
207
|
+
selectAll: false,
|
|
208
|
+
selecteds: [],
|
|
209
|
+
orgCondtionStr: '',
|
|
210
|
+
// 合计数据
|
|
211
|
+
sumsmodel: {},
|
|
212
|
+
msg: [],
|
|
213
|
+
orgname: [],
|
|
214
|
+
depname: [],
|
|
215
|
+
eticket_msg: false,
|
|
216
|
+
invoice_show_gas: '否',
|
|
217
|
+
show_gas: [{label: '是', value: '是'}, {label: '否', value: '否'}],
|
|
218
|
+
row: {},
|
|
219
|
+
mid: [{label: '全部', value: ''}, {label: '是', value: ' > 0 '}, {label: '否', value: ' is null'}]
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
ready () {
|
|
223
|
+
asyncReadyGen(this)
|
|
224
|
+
},
|
|
225
|
+
methods: {
|
|
226
|
+
search () {
|
|
227
|
+
this.$refs.paged.$refs.cri.search()
|
|
228
|
+
},
|
|
229
|
+
async kp (row) {
|
|
230
|
+
let HttpReset = new HttpResetClass()
|
|
231
|
+
let _row = await HttpReset.load('POST', 'rs/sql/sale_getUser', {
|
|
232
|
+
data: {
|
|
233
|
+
orderitem: 'f_userinfo_code',
|
|
234
|
+
condition: `f_userinfo_code = '${row.f_userinfo_code}'`
|
|
235
|
+
}
|
|
236
|
+
}, {resolveMsg: null, rejectMsg: '获取地址失败!'})
|
|
237
|
+
this.row = _row.data[0]
|
|
238
|
+
this.row.id = row.id
|
|
239
|
+
this.invoice_show_gas = this.row.f_collection_type === '按气量' ? '是' : '否'
|
|
240
|
+
if (!this.row.f_taxpayer_id) {
|
|
241
|
+
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
242
|
+
}
|
|
243
|
+
// 要求开票名称跟档案里的用户名一致,所以这里直接赋值,不判断是否有值
|
|
244
|
+
// if (!this.row.f_paper_name) {
|
|
245
|
+
this.row.f_paper_name = this.row.f_user_name
|
|
246
|
+
// }
|
|
247
|
+
if (!this.row.f_address_phone) {
|
|
248
|
+
this.row.f_address_phone = this.row.f_address + ' ' + this.row.f_user_phone
|
|
249
|
+
}
|
|
250
|
+
this.eticket_msg = true
|
|
251
|
+
},
|
|
252
|
+
async open_eTicket () {
|
|
253
|
+
if ([...new Set(this.selecteds.map(item => item.f_userinfo_code))].length > 1) {
|
|
254
|
+
this.$showAlert('所选择用户不是同一用户!!', 'warning', 2000)
|
|
255
|
+
return
|
|
256
|
+
}
|
|
257
|
+
if (this.selecteds.filter(item => item.is_bill === '是').length >= 1) {
|
|
258
|
+
// await this.$showMessage('选中的有已开过票得记录,确认开票吗?', ['confirm', 'cancel']).then(
|
|
259
|
+
// (response) => {
|
|
260
|
+
// if (response !== 'confirm') {
|
|
261
|
+
//
|
|
262
|
+
// }
|
|
263
|
+
// })
|
|
264
|
+
return this.$showAlert('已结算的记录不能再次结算开票', 'warning', 3000)
|
|
265
|
+
}
|
|
266
|
+
let HttpReset = new HttpResetClass()
|
|
267
|
+
let row = await HttpReset.load('POST', 'rs/sql/sale_getUser', {
|
|
268
|
+
data: {
|
|
269
|
+
orderitem: 'f_userinfo_code',
|
|
270
|
+
condition: `f_userinfo_code = '${[...new Set(this.selecteds.map(item => item.f_userinfo_code))][0]}'`
|
|
271
|
+
}
|
|
272
|
+
}, {resolveMsg: null, rejectMsg: '获取地址失败!'})
|
|
273
|
+
this.row = row.data[0]
|
|
274
|
+
this.invoice_show_gas = this.row.f_collection_type === '按气量' ? '是' : '否'
|
|
275
|
+
if (!this.row.f_taxpayer_id) {
|
|
276
|
+
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
277
|
+
}
|
|
278
|
+
// 要求开票名称跟档案里的用户名一致,所以这里直接赋值,不判断是否有值
|
|
279
|
+
// if (!this.row.f_paper_name) {
|
|
280
|
+
this.row.f_paper_name = this.row.f_user_name
|
|
281
|
+
// }
|
|
282
|
+
if (!this.row.f_address_phone) {
|
|
283
|
+
this.row.f_address_phone = this.row.f_address + ' ' + this.row.f_user_phone
|
|
284
|
+
}
|
|
285
|
+
this.eticket_msg = true
|
|
286
|
+
},
|
|
287
|
+
confirm () {
|
|
288
|
+
this.eticket_msg = false
|
|
289
|
+
this.eticket_show = true
|
|
290
|
+
this.$refs.eticketbill.openETicket(this.selecteds.map(item => item.id), this.row, '结算收费', this.row.f_paper_type, false, this.invoice_is_pax)
|
|
291
|
+
},
|
|
292
|
+
selfSearch (args) {
|
|
293
|
+
this.selecteds = []
|
|
294
|
+
// let f_orgstr = this.orgCondtionStr
|
|
295
|
+
// args.condition = `${args.condition} ` + f_orgstr
|
|
296
|
+
this.model.search(args.condition, args.model)
|
|
297
|
+
},
|
|
298
|
+
eticket_toggle () {
|
|
299
|
+
this.eticket_show = false
|
|
300
|
+
this.search()
|
|
301
|
+
},
|
|
302
|
+
addOrRemove (is) {
|
|
303
|
+
this.selecteds = []
|
|
304
|
+
if (!is) { // 添加本页所有数据到ids中
|
|
305
|
+
this.model.rows.forEach((row) => {
|
|
306
|
+
this.selecteds.push(row)
|
|
307
|
+
})
|
|
308
|
+
this.selectAll = true
|
|
309
|
+
} else { // 从ids中取消所有的数据
|
|
310
|
+
this.model.rows.forEach((row, index) => {
|
|
311
|
+
if (index <= this.maxIndex) {
|
|
312
|
+
this.selecteds.push(row)
|
|
313
|
+
}
|
|
314
|
+
})
|
|
315
|
+
this.selectAll = false
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
checkbox (val, event) {
|
|
319
|
+
// this.selecteds = []
|
|
320
|
+
if (event.target.checked === true) {
|
|
321
|
+
// for (let i = 0; i <= val; i++) {
|
|
322
|
+
this.selecteds.push(this.model.rows[val])
|
|
323
|
+
// }
|
|
324
|
+
} else if (event.target.checked === false) {
|
|
325
|
+
// for (let i = 0; i <= val - 1; i++) {
|
|
326
|
+
this.selecteds.splice(this.selecteds.findIndex(item => item.id === this.model.rows[val].id), 1)
|
|
327
|
+
// }
|
|
328
|
+
}
|
|
329
|
+
this.selectAll = (this.selecteds.length === this.model.rows.length)
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
computed: {
|
|
333
|
+
getPayee () {
|
|
334
|
+
return this.$GetSaleParam.getPayee()
|
|
335
|
+
},
|
|
336
|
+
getReviewer () {
|
|
337
|
+
return this.$GetSaleParam.getReviewer()
|
|
338
|
+
},
|
|
339
|
+
getDrawer () {
|
|
340
|
+
return this.$GetSaleParam.getDrawer()
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
events: {
|
|
344
|
+
'search' () {
|
|
345
|
+
this.search()
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
watch: {}
|
|
349
|
+
}
|
|
350
|
+
</script>
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
<div class="col-sm-6 form-group form-input-group" :class="[!row.f_paper_name ? 'has-error' : '']">
|
|
113
113
|
<label class="control-label" style="width: 100px">开票名称:</label>
|
|
114
114
|
<input class="form-control col-sm-2"
|
|
115
|
-
v-model="row.f_paper_name" placeholder="开票名称">
|
|
115
|
+
v-model="row.f_paper_name" placeholder="开票名称" :disabled="true">
|
|
116
116
|
</div>
|
|
117
117
|
<div class="col-sm-6 form-group form-input-group" :class="[!invoice_is_pax ? 'has-error' : '']">>
|
|
118
118
|
<nobr class="col-sm-4"><label class="control-label" style="width: 100px">是否征税:</label></nobr>
|
|
@@ -241,9 +241,10 @@ export default {
|
|
|
241
241
|
if (!this.row.f_taxpayer_id) {
|
|
242
242
|
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
243
243
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
244
|
+
// 要求开票名称跟档案里的用户名一致,所以这里直接赋值,不判断是否有值
|
|
245
|
+
// if (!this.row.f_paper_name) {
|
|
246
|
+
this.row.f_paper_name = this.row.f_user_name
|
|
247
|
+
// }
|
|
247
248
|
if (!this.row.f_address_phone) {
|
|
248
249
|
this.row.f_address_phone = this.row.f_address + ' ' + this.row.f_user_phone
|
|
249
250
|
}
|
|
@@ -275,9 +276,10 @@ export default {
|
|
|
275
276
|
if (!this.row.f_taxpayer_id) {
|
|
276
277
|
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
277
278
|
}
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
279
|
+
// 要求开票名称跟档案里的用户名一致,所以这里直接赋值,不判断是否有值
|
|
280
|
+
// if (!this.row.f_paper_name) {
|
|
281
|
+
this.row.f_paper_name = this.row.f_user_name
|
|
282
|
+
// }
|
|
281
283
|
if (!this.row.f_address_phone) {
|
|
282
284
|
this.row.f_address_phone = this.row.f_address + ' ' + this.row.f_user_phone
|
|
283
285
|
}
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
<div class="col-sm-6 form-group form-input-group" :class="[!row.f_paper_name ? 'has-error' : '']">
|
|
114
114
|
<label class="control-label" style="width: 100px">开票名称:</label>
|
|
115
115
|
<input class="form-control col-sm-2"
|
|
116
|
-
v-model="row.f_paper_name" placeholder="开票名称">
|
|
116
|
+
v-model="row.f_paper_name" placeholder="开票名称" :disabled="true">
|
|
117
117
|
</div>
|
|
118
118
|
<div class="col-sm-6 form-group form-input-group" :class="[!invoice_is_pax ? 'has-error' : '']">
|
|
119
119
|
<nobr class="col-sm-4"><label class="control-label" style="width: 100px">是否征税:</label></nobr>
|
|
@@ -240,9 +240,10 @@ export default {
|
|
|
240
240
|
if (!this.row.f_taxpayer_id) {
|
|
241
241
|
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
242
242
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
243
|
+
// 要求开票名称跟档案里的用户名一致,所以这里直接赋值,不判断是否有值
|
|
244
|
+
// if (!this.row.f_paper_name) {
|
|
245
|
+
this.row.f_paper_name = this.row.f_user_name
|
|
246
|
+
// }
|
|
246
247
|
if (!this.row.f_address_phone) {
|
|
247
248
|
this.row.f_address_phone = this.row.f_address + ' ' + this.row.f_user_phone
|
|
248
249
|
}
|
|
@@ -268,9 +269,10 @@ export default {
|
|
|
268
269
|
if (!this.row.f_taxpayer_id) {
|
|
269
270
|
this.row.f_taxpayer_id = this.row.f_idnumber
|
|
270
271
|
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
272
|
+
// 要求开票名称跟档案里的用户名一致,所以这里直接赋值,不判断是否有值
|
|
273
|
+
// if (!this.row.f_paper_name) {
|
|
274
|
+
this.row.f_paper_name = this.row.f_user_name
|
|
275
|
+
// }
|
|
274
276
|
if (!this.row.f_address_phone) {
|
|
275
277
|
this.row.f_address_phone = this.row.f_address + ' ' + this.row.f_user_phone
|
|
276
278
|
}
|