feat: 新增卡视角以及设备视角的实名同步时间,卡状态同步时间,流量同步时间
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 4m56s

This commit is contained in:
sexygoat
2026-05-18 12:23:35 +08:00
parent 877c741d72
commit 894aea0e74
18 changed files with 544 additions and 63 deletions

View File

@@ -60,15 +60,14 @@
<ElFormItem label="充值金额" prop="amount">
<ElInputNumber
v-model="createForm.amount"
:min="100"
:max="1000000"
:min="0.01"
:precision="2"
:step="100"
:step="0.01"
style="width: 100%"
placeholder="请输入充值金额(元)"
/>
<div style="margin-top: 8px; font-size: 12px; color: var(--el-text-color-secondary)">
充值范围: ¥100 ~ ¥1,000,000
最小: ¥0.01最大: 不限制
</div>
</ElFormItem>
<ElFormItem label="支付方式" prop="payment_method">
@@ -337,10 +336,27 @@
const createFormRef = ref<FormInstance>()
const confirmPayFormRef = ref<FormInstance>()
const uploadRef = ref()
const MIN_RECHARGE_AMOUNT = 0.01
const createRules = computed<FormRules>(() => {
const rules: FormRules = {
amount: [{ required: true, message: '请输入充值金额', trigger: 'blur' }],
amount: [
{ required: true, message: '请输入充值金额', trigger: 'blur' },
{
validator: (_rule, value, callback) => {
if (value == null || value === '') {
callback()
return
}
if (Number(value) < MIN_RECHARGE_AMOUNT) {
callback(new Error(`充值金额最小为 ¥${MIN_RECHARGE_AMOUNT.toFixed(2)}`))
return
}
callback()
},
trigger: 'blur'
}
],
payment_method: [{ required: true, message: '请选择支付方式', trigger: 'change' }],
shop_id: [{ required: true, message: '请选择目标店铺', trigger: 'change' }]
}
@@ -362,7 +378,7 @@
shop_id: number | null
payment_voucher_key?: string
}>({
amount: 100,
amount: MIN_RECHARGE_AMOUNT,
payment_method: '',
shop_id: null,
payment_voucher_key: undefined
@@ -646,7 +662,7 @@
// 对话框关闭后的清理
const handleCreateDialogClosed = () => {
createFormRef.value?.resetFields()
createForm.amount = 100
createForm.amount = MIN_RECHARGE_AMOUNT
createForm.payment_method = ''
createForm.shop_id = null
createForm.payment_voucher_key = undefined
@@ -702,14 +718,15 @@
// 创建充值订单
const handleCreateRecharge = async () => {
if (!createFormRef.value) return
const formRef = createFormRef.value
if (!formRef) return
await createFormRef.value.validate(async (valid) => {
await formRef.validate(async (valid) => {
if (valid) {
createLoading.value = true
try {
const data: CreateAgentRechargeRequest = {
amount: createForm.amount * 100, // 元转分
amount: Math.round(createForm.amount * 100), // 元转分
payment_method: createForm.payment_method as AgentRechargePaymentMethod,
shop_id: createForm.shop_id!
}
@@ -721,7 +738,7 @@
await AgentRechargeService.createAgentRecharge(data)
ElMessage.success('充值订单创建成功')
createDialogVisible.value = false
createFormRef.value.resetFields()
formRef.resetFields()
await getTableData()
} catch (error) {
console.error(error)
@@ -747,18 +764,20 @@
// 确认线下支付
const handleConfirmPay = async () => {
if (!confirmPayFormRef.value || !currentRecharge.value) return
const formRef = confirmPayFormRef.value
const recharge = currentRecharge.value
if (!formRef || !recharge) return
await confirmPayFormRef.value.validate(async (valid) => {
await formRef.validate(async (valid) => {
if (valid) {
confirmPayLoading.value = true
try {
await AgentRechargeService.confirmOfflinePayment(currentRecharge.value.id, {
await AgentRechargeService.confirmOfflinePayment(recharge.id, {
operation_password: confirmPayForm.operation_password
})
ElMessage.success('确认支付成功')
confirmPayDialogVisible.value = false
confirmPayFormRef.value.resetFields()
formRef.resetFields()
await getTableData()
} catch (error) {
console.error(error)