From a2a92ed4da184ae75c2fbfb4e0a427f16eb258a6 Mon Sep 17 00:00:00 2001 From: zhongzm Date: Tue, 7 Jan 2025 18:54:40 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E5=A5=97=E9=A4=90=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E6=8C=89=E9=92=AE=E9=9A=90=E8=97=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/billing/package/index.vue | 74 ++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 23 deletions(-) diff --git a/src/views/billing/package/index.vue b/src/views/billing/package/index.vue index cdd461d..025f879 100644 --- a/src/views/billing/package/index.vue +++ b/src/views/billing/package/index.vue @@ -20,7 +20,7 @@ v-model:columns="columnChecks" :loading="loading" :show-delete="false" - :not-show-add="true" + :show-add="false" @refresh="getData" /> @@ -75,14 +75,15 @@ - + @@ -242,12 +243,7 @@ const { columns, columnChecks, data, loading, getData, mobilePagination } = useT dataIndex: 'price', title: '价格', align: 'center', - customRender: ({ text }) => { - if (typeof text === 'number') { - return `¥${text.toFixed(2)}`; - } - return text || '-'; - } + customRender: ({ text }) => `${Number(text).toFixed(2)}` }, { key: 'traffic', @@ -332,18 +328,30 @@ const { columns, columnChecks, data, loading, getData, mobilePagination } = useT const showModal = ref(false); const formRef = ref(); -interface PackageForm extends Omit { +interface PackageForm { + id?: string; + packageName: string; + periodNum: number; + periodType: number; + price: string; + trafficEnable: boolean; traffic: number; trafficUnit: StorageUnit; + rateLimitEnable: boolean; + rateLimitId?: number; + durationEnable: boolean; duration: number; durationUnit: TimeUnit; + clientNumEnable: boolean; + clientNum: number; + packageEnable: boolean; } const formState = ref({ packageName: '', periodNum: 1, periodType: 2, - price: 0, + price: '0', trafficEnable: false, traffic: 0, trafficUnit: 'GB', @@ -456,7 +464,7 @@ const handleCancel = () => { packageName: '', periodNum: 1, periodType: 2, - price: 0, + price: '0', trafficEnable: false, traffic: 0, trafficUnit: 'GB', @@ -474,16 +482,30 @@ const handleCancel = () => { const handleOk = async () => { try { await formRef.value?.validate(); - const submitData = { - ...formState.value, - traffic: formState.value.trafficEnable - ? Math.round(convertStorage(formState.value.traffic, formState.value.trafficUnit, 'B')) - : 0, - duration: formState.value.durationEnable - ? Math.round(convertTime(formState.value.duration, formState.value.durationUnit, '秒')) - : 0 + // 准备基础数据 + const baseData = { + packageName: formState.value.packageName, + periodNum: formState.value.periodNum, + periodType: formState.value.periodType, + price: formState.value.price, + trafficEnable: formState.value.trafficEnable, + rateLimitEnable: formState.value.rateLimitEnable, + rateLimitId: formState.value.rateLimitId, + durationEnable: formState.value.durationEnable, + clientNumEnable: formState.value.clientNumEnable, + clientNum: formState.value.clientNum, + packageEnable: formState.value.packageEnable }; + // 计算流量和时长 + const traffic = formState.value.trafficEnable + ? Math.round(convertStorage(formState.value.traffic, formState.value.trafficUnit, 'B')) + : 0; + + const duration = formState.value.durationEnable + ? Math.round(convertTime(formState.value.duration, formState.value.durationUnit, '秒')) + : 0; + if (isEdit.value) { if (!editId.value) { message.error('编辑ID不能为空'); @@ -491,13 +513,19 @@ const handleOk = async () => { } // 编辑模式 await updatePackage({ - ...submitData, - id: editId.value + ...baseData, + id: editId.value, + traffic, + duration }); message.success('修改成功'); } else { // 新增模式 - await addPackage(submitData); + await addPackage({ + ...baseData, + traffic, + duration + }); message.success('添加成功'); } handleCancel();