新增: 微信配置-代理充值
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m58s

This commit is contained in:
sexygoat
2026-03-17 14:06:38 +08:00
parent f4ccf9ed24
commit e975e6af4b
19 changed files with 2940 additions and 81 deletions

View File

@@ -177,7 +177,12 @@
style="width: 100%"
>
<ElOption label="钱包支付" value="wallet" />
<ElOption label="线下支付" value="offline" />
<!-- 只有平台用户(user_type 1:超级管理员, 2:平台用户)才显示线下支付选项 -->
<ElOption
v-if="userStore.info.user_type === 1 || userStore.info.user_type === 2"
label="线下支付"
value="offline"
/>
</ElSelect>
<div style="margin-top: 8px; font-size: 12px; color: var(--el-text-color-secondary)">
<template v-if="createForm.payment_method === 'wallet'">
@@ -312,12 +317,15 @@
OrderCommissionStatus,
StandaloneIotCard,
Device,
PackageResponse
PackageResponse,
PurchaseCheckRequest,
PurchaseCheckResponse
} from '@/types/api'
import type { SearchFormItem } from '@/types'
import { useCheckedColumns } from '@/composables/useCheckedColumns'
import { useAuth } from '@/composables/useAuth'
import { useTableContextMenu } from '@/composables/useTableContextMenu'
import { useUserStore } from '@/store/modules/user'
import ArtButtonTable from '@/components/core/forms/ArtButtonTable.vue'
import ArtMenuRight from '@/components/core/others/ArtMenuRight.vue'
import TableContextMenuHint from '@/components/core/others/TableContextMenuHint.vue'
@@ -330,6 +338,7 @@
const { t } = useI18n()
const router = useRouter()
const { hasAuth } = useAuth()
const userStore = useUserStore()
// 使用表格右键菜单功能
const {
@@ -1000,6 +1009,43 @@
if (valid) {
createLoading.value = true
try {
// 获取资源ID (IoT卡ID或设备ID)
const resourceId =
createForm.order_type === 'single_card'
? createForm.iot_card_id
: createForm.device_id
if (!resourceId) {
ElMessage.error('请选择IoT卡或设备')
return
}
// 调用套餐购买预检接口
const checkData: PurchaseCheckRequest = {
order_type: createForm.order_type,
package_ids: createForm.package_ids,
resource_id: resourceId
}
const checkResponse = await OrderService.purchaseCheck(checkData)
// 检查预检结果
if (checkResponse.code === 0 && checkResponse.data) {
const checkResult = checkResponse.data
// 如果需要强充,显示确认对话框
if (checkResult.need_force_recharge) {
const confirmMessage = `${checkResult.message || '钱包余额不足'}\n\n套餐总价: ¥${(checkResult.total_package_amount! / 100).toFixed(2)}\n需要强充: ¥${(checkResult.force_recharge_amount! / 100).toFixed(2)}\n钱包到账: ¥${(checkResult.wallet_credit! / 100).toFixed(2)}\n实际支付: ¥${(checkResult.actual_payment! / 100).toFixed(2)}\n\n是否继续创建订单?`
await ElMessageBox.confirm(confirmMessage, '购买预检提示', {
confirmButtonText: '继续创建',
cancelButtonText: '取消',
type: 'warning'
})
}
}
// 预检通过或用户确认后,创建订单
const data: CreateOrderRequest = {
order_type: createForm.order_type,
package_ids: createForm.package_ids,
@@ -1020,7 +1066,11 @@
createDialogVisible.value = false
formEl.resetFields()
await getTableData()
} catch (error) {
} catch (error: any) {
// 用户取消确认对话框
if (error === 'cancel') {
return
}
console.error(error)
} finally {
createLoading.value = false