f584c37d by lttnew

开票

1 parent daf1a72d
......@@ -205,12 +205,12 @@
<text class="value ">{{ item.orderName || '——' }}</text>
</view>
<text :class="{
'status-wait': item.auditStatus == 0,
'status-pending': item.auditStatus == 1,
'status-success': item.auditStatus == 2,
'status-danger': item.auditStatus == 3
'status-wait': item.payStatus == 3,
'status-pending': item.payStatus == 0,
'status-success': item.payStatus == 1,
'status-danger': item.payStatus == 2
}"
class="status-tag ">{{ getAuditStatusText(item.auditStatus) }}
class="status-tag ">{{ getStatusText(item.payStatus) }}
</text>
</view>
</view>
......@@ -228,7 +228,6 @@
<view class="date">
<view class="data-header">
<text class="value">
<text class="tradeNo">缴费编号:</text>
{{ item.wfCode || '——' }}
</text>
</view>
......@@ -297,7 +296,7 @@
<template v-if="item.payStatus == 1 && item.invoiceStatus != 1&& item.auditStatus == 2 &&item.price>0">
<button :disabled="item.invoiceStatus === 1" class="btn btn-view-invoice"
@click.stop="makeInvoiceFN(item)">
申请票据
申请开票
</button>
</template>
<!-- 已申请票据:查看票据 -->
......@@ -718,12 +717,15 @@ const makeInvoiceFN = (item) => {
needRefresh.value = true;
// 根据tab类型决定跳转页面:个人/单位会员开非税票,级位/段位/越段考试开增值税票
let url = '';
const ziZhangBu = item.ziZhangBu ? '&ziZhangBu=1' : '';
if (currentTab.value === '0' || currentTab.value === '1') {
// 个人/单位会员 - 非税开票
url = `/pages/invoice/applyFeisui?orderId=${item.id}&amount=${item.price}`;
// 如果是對公转账(ziZhangBu有值),只能开企业发票
url = `/pages/invoice/applyFeisui?orderId=${item.id}&amount=${item.price}${ziZhangBu}`;
} else {
// 级位/段位/越段考试 - 增值税开票
url = `/pages/invoice/apply?orderId=${item.id}&amount=${item.price}`;
url = `/pages/invoice/apply?orderId=${item.id}&amount=${item.price}${ziZhangBu}`;
}
uni.navigateTo({ url });
};
......
<template>
<view class="invoice-apply">
<!-- 成功确认弹框 -->
<view class="success-modal" v-if="showSuccessModal">
<view class="success-mask" @click="closeSuccessModal"></view>
<view class="success-content">
<view class="success-icon"></view>
<view class="success-title">发票申请提交成功!</view>
<view class="success-desc">您的发票申请已成功提交,我们将在1-7个工作日内为您处理。</view>
<button class="success-btn" @click="closeSuccessModal">确定</button>
</view>
</view>
<view class="content">
<!-- 发票信息标题 -->
<view class="section-header">
......@@ -24,6 +35,7 @@
</view>
</view>
<view
v-if="showIndividualType"
:class="{ active: form.type === '1' }"
class="type-option"
@click="form.type = '1'"
......@@ -45,6 +57,7 @@
<input
v-model="form.name"
class="input"
:disabled="!showIndividualType"
:placeholder="form.type === '0' ? '请输入公司全称' : '请输入发票抬头'"
/>
<text class="hint">请确保发票抬头与公司营业执照或个人身份证上的名称一致</text>
......@@ -58,6 +71,7 @@
class="input"
maxlength="20"
placeholder="请输入纳税人识别号"
:disabled="!showIndividualType"
/>
<text class="hint">企业税务登记证上的号码,一般为 15、18 或 20 位</text>
</view>
......@@ -82,8 +96,12 @@
import {ref, reactive} from 'vue';
import {onLoad} from '@dcloudio/uni-app';
import {outputInvoiceNoFeisui} from '@/common/api.js';
import customModal from '@/components/custom-modal.vue';
const app = getApp();
const submitting = ref(false);
const showSuccessModal = ref(false);
const showIndividualType = ref(true);
// 表单数据
const form = reactive({
......@@ -100,6 +118,23 @@ onLoad((options) => {
form.id = options.id || options.orderId;
form.amount = options.amount || 0;
}
// 自动填充发票抬头和纳税人识别号(与PC端一致)
const memberInfo = app.globalData.memberInfo
// 如果是对公转账(ziZhangBu有值),默认只能开企业发票,隐藏个人选项
if (options.ziZhangBu == '1') {
form.type = '0'
showIndividualType.value = false
} else {
showIndividualType.value = true
}
if (memberInfo && options.ziZhangBu == '1') {
form.name = memberInfo.companyName || ''
form.taxno = memberInfo.creditCode || ''
}
console.log('非税开票参数:', options)
});
......@@ -122,7 +157,7 @@ const validateForm = () => {
}
// 纳税人识别号格式校验
if (form.type === '0') {
if (form.type === '0' ) {
const taxReg = /^[A-Z0-9]{15}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/;
if (!taxReg.test(form.taxno)) {
uni.showToast({title: '纳税人识别号格式不正确', icon: 'none'});
......@@ -142,13 +177,7 @@ const handleSubmit = async () => {
console.log('提交非税开票表单数据:', form);
try {
await outputInvoiceNoFeisui(form);
uni.showToast({
title: '开票申请提交成功',
icon: 'success'
});
setTimeout(() => {
uni.navigateBack();
}, 1500);
showSuccessModal.value = true;
} catch (error) {
console.log('非税开票失败:', error);
submitting.value = false;
......@@ -156,6 +185,12 @@ const handleSubmit = async () => {
submitting.value = false;
}
};
// 关闭弹框并返回
function closeSuccessModal() {
showSuccessModal.value = false;
uni.navigateBack();
}
</script>
<style lang="scss" scoped>
......@@ -342,4 +377,84 @@ const handleSubmit = async () => {
background: #c0c4cc;
}
}
/* 成功弹框 */
.success-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
}
.success-mask {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
}
.success-content {
position: relative;
width: 560rpx;
background: #fff;
border-radius: 24rpx;
padding: 50rpx 40rpx 40rpx;
box-sizing: border-box;
display: flex;
flex-direction: column;
align-items: center;
z-index: 1;
}
.success-icon {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
background: #f0f9f0;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 30rpx;
font-size: 48rpx;
color: #52c41a;
}
.success-title {
font-size: 34rpx;
font-weight: 600;
color: #333;
margin-bottom: 16rpx;
text-align: center;
}
.success-desc {
font-size: 26rpx;
color: #999;
line-height: 1.6;
text-align: center;
margin-bottom: 40rpx;
}
.success-btn {
width: 100%;
height: 80rpx;
line-height: 80rpx;
background: #AD181F;
color: #fff;
font-size: 30rpx;
border-radius: 40rpx;
border: none;
text-align: center;
}
.success-btn::after {
border: none;
}
</style>
\ No newline at end of file
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!