4eb1ea9e by lttnew

个人会员+订单对公转账点击

1 parent 0b892d13
......@@ -237,6 +237,7 @@ function login() {
goHomeAfterLogin()
}).catch((err) => {
console.error('登录失败:', err)
refreshCodeWhenNotServerError(err)
uni.showToast({title: '登录失败', icon: 'none'})
}).finally(() => {
loading.value = false
......@@ -261,6 +262,9 @@ function login() {
.then(() => {
app.globalData.isLogin = true
goHomeAfterLogin()
}).catch((err) => {
console.error('短信登录失败:', err)
refreshCodeWhenNotServerError(err)
}).finally(() => {
loading.value = false
})
......@@ -293,6 +297,19 @@ function getCode() {
})
}
function isServer500(err) {
const message = String(err?.message || err?.errMsg || '')
return err?.statusCode === 500 ||
err?.code === 500 ||
err?.data?.code === 500 ||
message.includes('HTTP 500')
}
function refreshCodeWhenNotServerError(err) {
if (isServer500(err)) return
getCode()
}
function getCaptchaSms() {
if (!form2.value.telNo) {
uni.showToast({title: '手机号不能为空', icon: 'none'})
......
......@@ -53,7 +53,13 @@
<view class="data-header">
<text class="member-label">{{ getOrderLabel(item) }} ·</text>
<text class="value ml10">{{ item.wfCode || '——' }} ·</text>
<text class="pay-type ml10">{{ String(item.payType) === '3' ? '对公转账' : '民生付' }}</text>
<text
v-if="String(item.payType) === '3'"
:class="{ 'pay-type-link': canClickTransferPay(item) }"
class="pay-type ml10"
@click.stop="handleTransferPay(item)"
>对公转账</text>
<text v-else class="pay-type ml10">民生付</text>
</view>
<text :class="{
'status-wait': item.payStatus == 3,
......@@ -361,6 +367,17 @@ const isRefundDisabled = (item) => String(item?.payStatus) !== '1' || hasInvoice
const canShowRefund = (item) => !isRefundDisabled(item)
const canClickTransferPay = (item) => {
return String(item?.payType) === '3' && String(item?.payStatus) !== '2'
}
const handleTransferPay = (item) => {
if (!canClickTransferPay(item)) return
uni.navigateTo({
url: `/myCenter/transferPay?orderId=${item.id}`
})
}
// 数据请求核心方法
const initData = async () => {
......@@ -1258,6 +1275,10 @@ const confirmRefund = async (item) => {
flex-shrink: 0;
}
.pay-type.pay-type-link {
color: #1677ff;
}
.date-text {
color: #666;
}
......
......@@ -27,33 +27,34 @@
<view class="bank-row">
<text class="bank-label">收款人姓名</text>
<text class="bank-value">中国跆拳道协会</text>
<!-- <view class="copy-btn" @tap.stop="handleCopy('秦琦五洋赫公司')">复制</view> -->
<view class="copy-btn" @tap.stop="handleCopy('中国跆拳道协会')">复制</view>
</view>
<view class="bank-row">
<text class="bank-label">收款银行</text>
<text class="bank-value">中国民生银行</text>
<!-- <view class="copy-btn" @tap.stop="handleCopy('中国民生银行')">复制</view> -->
<view class="copy-btn" @tap.stop="handleCopy('中国民生银行')">复制</view>
</view>
<view class="bank-row">
<text class="bank-label">收款卡号</text>
<text class="bank-value card-number">{{ form.ziZhangBu || '-' }}</text>
<!-- <view class="copy-btn" @tap.stop="handleCopy(form.ziZhangBu)">复制</view> -->
<view class="copy-btn" @tap.stop="handleCopy(form.ziZhangBu)">复制</view>
</view>
<view class="bank-row">
<text class="bank-label">收款金额</text>
<text class="bank-value highlight">{{ form.price || '0.00' }}</text>
<!-- <view class="copy-btn" @tap.stop="handleCopy(form.price)">复制</view> -->
<view class="copy-btn" @tap.stop="handleCopy(form.price)">复制</view>
</view>
</view>
<!-- 金额说明 -->
<view class="card notice-card">
<view class="danger-title">
<!-- <view class="danger-title">
<text>请使用认证机构下的账号进行对公转账。</text>
</view>
<view class="notice-line">1. 本订单将为您保留7天,请您及时支付;逾期未支付,订单将自动取消。</view>
<view class="notice-line">2. 请通过网上银行(网银)或银行柜台或手机银行向以下账号划转款项。</view>
<view class="notice-line">3. 转账金额与订单金额必须保持一致,不得多转、少转。</view>
</view> -->
<view class="notice-line">1. 请使用注册机构账号对公转账。</view>
<view class="notice-line">2. 本订单将为您保留7天,请您及时支付;逾期未支付,订单将自动取消。</view>
<view class="notice-line">3. 请通过网上银行(网银)或银行柜台或手机银行向以下账号划转款项。</view>
<view class="notice-line">4. 转账金额与订单金额必须保持一致,不得多转、少转。</view>
</view>
<!-- 温馨提示 -->
......
......@@ -86,7 +86,13 @@
<view class="data-header">
<text class="member-label">{{ getOrderLabel(item) }} ·</text>
<text class="value ml10">{{ item.wfCode || '——' }} ·</text>
<text class="pay-type ml10"> {{ String(item.payType) === '3' ? '对公转账' : '民生付' }}</text>
<text
v-if="String(item.payType) === '3'"
:class="{ 'pay-type-link': canClickTransferPay(item) }"
class="pay-type ml10"
@click.stop="handleTransferPay(item)"
>对公转账</text>
<text v-else class="pay-type ml10">民生付</text>
</view>
<text :class="{
'status-wait': item.payStatus == 3,
......@@ -437,6 +443,17 @@ const isRefundDisabled = (item) => String(item?.payStatus) !== '1' || String(ite
const canShowRefund = (item) => !isRefundDisabled(item)
const canClickTransferPay = (item) => {
return String(item?.payType) === '3' && String(item?.payStatus) !== '2'
}
const handleTransferPay = (item) => {
if (!canClickTransferPay(item)) return
uni.navigateTo({
url: `/myCenter/transferPay?orderId=${item.id}`
})
}
const encodeQueryValue = (value) => encodeURIComponent(value || '')
const getPayName = (item) => {
......@@ -1511,6 +1528,10 @@ const onTabSwitch = (index, url) => {
flex-shrink: 0;
}
.pay-type.pay-type-link {
color: #1677ff;
}
.date-text {
color: #666;
}
......
......@@ -363,12 +363,12 @@ async function goAuthPayV2() {
showAuthPayDialog('当前账号状态暂无法办理缴费业务')
return
}
if (authPayDisabled.value) {
showAuthPayDialog('您已成功提交审核,请耐心等待。')
return
}
const canGoPay = await handelGetMyRecent()
if (!canGoPay) return
// if (authPayDisabled.value) {
// showAuthPayDialog('您有一笔缴费正在审核中,请勿重复缴费。您可前往【认证详情】查看审核进度。')
// return
// }
goPath('/myCenter/perfect')
}
......
......@@ -93,7 +93,7 @@
maxlength="20"
placeholder="请输入纳税人识别号"
/>
<text class="hint">企业税务登记证上的号码,一般为 15、18 或 20 </text>
<text class="hint">企业税务登记证上的号码,一般为15~20</text>
</view>
<!-- 接收方式 -->
......@@ -216,7 +216,7 @@ const validateForm = () => {
// 纳税人识别号格式校验
if (form.type === '1') {
const taxReg = /^[A-Z0-9]{15}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/;
const taxReg = /^[A-Z0-9]{0,20}$/;
if (!taxReg.test(form.taxno)) {
uni.showToast({title: '纳税人识别号格式不正确', icon: 'none'});
return false;
......
......@@ -74,7 +74,7 @@
placeholder="请输入纳税人识别号"
:disabled="!showIndividualType"
/>
<text class="hint">企业税务登记证上的号码,一般为 15、18 或 20 </text>
<text class="hint">企业税务登记证上的号码,一般为15~20</text>
</view>
<!-- 开票金额(只读) -->
......@@ -171,7 +171,7 @@ const validateForm = () => {
// 纳税人识别号格式校验
if (form.type === '0' ) {
const taxReg = /^[A-Z0-9]{15}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/;
const taxReg = /^[A-Z0-9]{0,20}$/;
if (!taxReg.test(form.taxno)) {
uni.showToast({title: '纳税人识别号格式不正确', icon: 'none'});
return false;
......
......@@ -51,16 +51,15 @@
<uni-easyinput v-model="baseFormData.phone" :placeholderStyle="placeholderStyle"
:styles="inputstyle" placeholder="请输入联系方式"/>
</uni-forms-item>
<uni-forms-item label="会员编号" name="perCode">
<uni-easyinput v-model="baseFormData.perCode" :placeholderStyle="placeholderStyle" :styles="inputstyle"
placeholder="会员编号"/>
<uni-forms-item label="会员编号" name="perCode" v-if="baseFormData.perCode">
{{baseFormData.perCode}}
</uni-forms-item>
<uni-forms-item label="会员有效期" name="validityDate">
<uni-easyinput v-model="baseFormData.validityDate" :placeholderStyle="placeholderStyle"
:styles="inputstyle" placeholder="会员有效期"/>
<uni-forms-item label="会员有效期" name="validityDate" v-if="baseFormData.validityDate">
{{baseFormData.validityDate?.slice(0,10)}}
</uni-forms-item>
<!-- <uni-forms-item label="所在地区">
<uni-data-picker class="fixUniFormItemStyle" v-model="baseFormData.cityId"
:localdata="regionsList" popup-title="请选择所在地区"></uni-data-picker>
......@@ -204,8 +203,8 @@ const validityDateText = ref('')
onLoad(async (option) => {
if (option.name && option.idcCode) {
baseFormData.value.name = option.name
baseFormData.value.idcCode = option.idcCode
baseFormData.value.name = decodeURIComponent(option.name)
baseFormData.value.idcCode = decodeURIComponent(option.idcCode)
giveBirthDay()
}
......
......@@ -221,7 +221,7 @@ const perInfo = computed(() => userStore.perInfo ?? {})
console.log(222, userInfo.value)
console.log(333, perInfo.value)
// 是否已绑定学员(根据会员卡号判断)
// 是否已绑定学员:绑定非会员时只有姓名,没有会员卡号,也应视为已绑定,避免反复弹绑定框。
const isBound = computed(() => {
const perName = perInfo.value?.perName
return perName !== undefined && perName !== null && perName !== ''
......@@ -237,9 +237,6 @@ const showConfirm = ref(false)
let hasOpenedBindPopup = false
onShow(() => {
// 重置绑定弹框标志,确保每次进入页面都能正确弹出
hasOpenedBindPopup = false
let webUserName = uni.getStorageSync('webUserName')
if (!webUserName) {
// 登录后需要等待数据加载完成
......@@ -265,7 +262,8 @@ onShow(() => {
const checkAndOpenBindPopup = () => {
// 确保 userStore 数据已更新
const currentPerInfo = userStore.perInfo
if (currentPerInfo && !currentPerInfo.perCode && !hasOpenedBindPopup) {
const hasBoundName = currentPerInfo?.perName
if (currentPerInfo && !hasBoundName && !hasOpenedBindPopup) {
hasOpenedBindPopup = true
nextTick(() => {
openBindPopup()
......@@ -482,8 +480,10 @@ const goToOrder = () => {
// 导航到缴费
const goToPay = () => {
const perId = userInfo.value.perId ?? ''
const name = perInfo.value?.perName ? encodeURIComponent(perInfo.value.perName) : ''
const idcCode = perInfo.value?.perIdcCode ? encodeURIComponent(perInfo.value.perIdcCode) : ''
uni.navigateTo({
url: `/personal/addVip_per?perId=${perId}`
url: `/personal/addVip_per?perId=${perId}&name=${name}&idcCode=${idcCode}`
});
};
......
......@@ -174,9 +174,13 @@
perId.value = userInfo.perId;
getLevelRecords();
} else {
const userId = userInfo?.id;
if (!userId) {
return;
}
// 如果userInfo中没有perId,尝试通过getAssoPers获取
try {
const res = await getAssoPers(userInfo?.id || '');
const res = await getAssoPers(userId);
perId.value = res.data[10] || '';
if (perId.value) {
getLevelRecords();
......
......@@ -137,9 +137,13 @@
perId.value = userInfo.perId;
getMemberInfo();
} else {
const userId = userInfo?.id;
if (!userId) {
return;
}
// 如果userInfo中没有perId,尝试通过getAssoPers获取
try {
const res = await getAssoPers(userInfo?.id || '');
const res = await getAssoPers(userId);
perId.value = res.data[10] || '';
if (perId.value) {
getMemberInfo();
......
......@@ -52,12 +52,10 @@
v-model="baseFormData.phone" placeholder="请输入联系方式" />
</uni-forms-item>
<uni-forms-item label="会员编号" name="perCode" v-if="baseFormData.perCode">
<uni-easyinput :styles="inputstyle" :placeholderStyle="placeholderStyle"
v-model="baseFormData.perCode" placeholder="请输入会员编号" />
{{baseFormData.perCode}}
</uni-forms-item>
<uni-forms-item label="会员有效期" name="validityDate" v-if="baseFormData.validityDate">
<uni-easyinput :styles="inputstyle" :placeholderStyle="placeholderStyle"
v-model="baseFormData.validityDate" placeholder="请输入会员有效期" />
{{baseFormData.validityDate?.slice(0,10)}}
</uni-forms-item>
......
......@@ -37,7 +37,13 @@
<view class="data-header">
<text class="member-label">{{ getOrderLabel(item) }} ·</text>
<text class="value ml10">{{ item.wfCode || '——' }} · </text>
<text class="pay-type">{{ getPayTypeText(item) }}</text>
<text
v-if="String(item.payType) === '3'"
:class="{ 'pay-type-link': canClickTransferPay(item) }"
class="pay-type"
@click.stop="handleTransferPay(item)"
>对公转账</text>
<text v-else class="pay-type">民生付</text>
</view>
<text :class="{
'status-wait': item.payStatus == 4,
......@@ -238,11 +244,17 @@ const loadMore = () => {
pageNum.value++;
initData();
};
const getPayWay = (item) => {
uni.redirectTo({
const canClickTransferPay = (item) => {
return String(item?.payType) === '3' && String(item?.payStatus) !== '2'
}
const handleTransferPay = (item) => {
if (!canClickTransferPay(item)) return
uni.navigateTo({
url: `/myCenter/transferPay?orderId=${item.id}`
});
})
}
// 切换标签
const switchTab = (index) => {
currentTab.value = index;
......@@ -888,6 +900,10 @@ const goToDetail = (item) => {
margin-left: 10rpx;
}
.pay-type.pay-type-link {
color: #1677ff;
}
.status-tag {
font-size: 24rpx;
color: #999;
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!