diff --git a/src/router/index.ts b/src/router/index.ts index d3a3459..11bab26 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -251,12 +251,25 @@ const routes: RouteRecordRaw[] = [ component: () => import("@/views/admin/account/cost/myOrder/index.vue"), }, + + { + path: "balance", + name: "balance", + component: () => + import("@/views/admin/account/cost/balance/index.vue"), + }, { path: "myMoney", name: "myMoney", component: () => import("@/views/admin/account/cost/myMoney/index.vue"), }, + { + path: "deposit", + name: "deposit", + component: () => + import("@/views/admin/account/cost/deposit/index.vue"), + }, { path: "exchange", name: "exchange", diff --git a/src/views/admin/account/cost/balance/index.vue b/src/views/admin/account/cost/balance/index.vue new file mode 100644 index 0000000..94d23c1 --- /dev/null +++ b/src/views/admin/account/cost/balance/index.vue @@ -0,0 +1,830 @@ + + + + + \ No newline at end of file diff --git a/src/views/admin/account/cost/deposit/index.vue b/src/views/admin/account/cost/deposit/index.vue new file mode 100644 index 0000000..6b14af8 --- /dev/null +++ b/src/views/admin/account/cost/deposit/index.vue @@ -0,0 +1,537 @@ + + + + + \ No newline at end of file diff --git a/src/views/admin/account/cost/invoice/index.vue b/src/views/admin/account/cost/invoice/index.vue index e2a22f2..84411fe 100644 --- a/src/views/admin/account/cost/invoice/index.vue +++ b/src/views/admin/account/cost/invoice/index.vue @@ -1,60 +1,6 @@ + \ No newline at end of file + +/** + * 单个去开票 + */ +function handleSingleInvoice(record: any) { + currentInvoiceRecord.value = record + isBatch.value = false + resetInvoiceForm() + singleInvoiceModalVisible.value = true +} + +/** + * 批量去开票 + */ +function handleBatchInvoice() { + if (selectedRowKeys.value.length === 0) { + message.warning('请先选择要开票的记录') + return + } + isBatch.value = true + resetInvoiceForm() + singleInvoiceModalVisible.value = true +} + +/** + * 重置发票表单 + */ +function resetInvoiceForm() { + invoiceFormData.invoiceType = undefined + invoiceFormData.billingType = undefined + invoiceFormData.titleType = 'company' + invoiceFormData.invoiceTitle = undefined + invoiceFormData.personalTitle = '' + invoiceFormData.taxNumber = '' + invoiceFormData.remark = '' + + // 清除表单验证状态 + nextTick(() => { + invoiceFormRef.value?.clearValidate() + }) +} + +/** + * 关闭开票模态框 + */ +function handleInvoiceModalCancel() { + singleInvoiceModalVisible.value = false + resetInvoiceForm() +} + +/** + * 确认开票 + */ +async function handleSingleInvoiceConfirm() { + try { + // 验证表单 + await invoiceFormRef.value?.validate() + + singleInvoiceLoading.value = true + + // 根据抬头类型获取抬头信息 + const titleInfo = invoiceFormData.titleType === 'company' + ? { + titleType: 'company', + companyName: invoiceFormData.invoiceTitle, + taxNumber: invoiceFormData.taxNumber + } + : { + titleType: 'personal', + personalName: invoiceFormData.personalTitle + } + + // 准备开票数据 + const invoiceData = { + ...titleInfo, + invoiceType: invoiceFormData.invoiceType, + billingType: invoiceFormData.billingType, + remark: invoiceFormData.remark, + orders: isBatch.value + ? selectedRows.value.map(row => ({ + id: row.id, + serialNumber: row.serial_number, + amount: row.real_amount + })) + : [{ + id: currentInvoiceRecord.value.id, + serialNumber: currentInvoiceRecord.value.serial_number, + amount: currentInvoiceRecord.value.real_amount + }] + } + + console.log('提交开票数据:', invoiceData) + + // 模拟API调用延迟 + await new Promise(resolve => setTimeout(resolve, 1500)) + + const successMessage = isBatch.value + ? `批量开票申请已提交成功,共 ${selectedRows.value.length} 条记录` + : '开票申请已提交成功!' + + message.success(successMessage) + singleInvoiceModalVisible.value = false + + // 清空选择 + selectedRowKeys.value = [] + selectedRows.value = [] + + // 刷新列表 + getPageList() + + } catch (error) { + console.error('表单验证失败:', error) + if (error && typeof error === 'object' && 'errorFields' in error) { + message.error('请完善开票信息') + } else { + const errorMessage = isBatch.value + ? '批量开票申请提交失败,请稍后重试' + : '开票申请提交失败,请稍后重试' + message.error(errorMessage) + } + } finally { + singleInvoiceLoading.value = false + } +} + +/** + * 搜索发票抬头 + */ +function handleSearchInvoiceTitle(value: string) { + console.log('搜索发票抬头:', value) + // 这里可以实现搜索逻辑 +} + +/** + * 添加发票抬头 + */ +function handleAddInvoiceTitle() { + addTitleModalVisible.value = true +} + +/** + * 确认新增发票抬头 + */ +function handleAddTitleConfirm() { + if (!newTitleForm.companyName || !newTitleForm.taxNumber) { + message.error('请填写公司名称和纳税人识别号') + return + } + + // 添加到选项列表 + const newOption = { + value: newTitleForm.companyName, + label: newTitleForm.companyName + } + + invoiceTitleOptions.value.push(newOption) + + // 设置当前选择的发票抬头 + invoiceFormData.invoiceTitle = newTitleForm.companyName + invoiceFormData.taxNumber = newTitleForm.taxNumber + + // 重置表单并关闭模态框 + Object.keys(newTitleForm).forEach(key => { + newTitleForm[key] = '' + }) + addTitleModalVisible.value = false + + message.success('发票抬头添加成功') +} + + + \ No newline at end of file diff --git a/src/views/admin/index.vue b/src/views/admin/index.vue index 3404133..286fd92 100644 --- a/src/views/admin/index.vue +++ b/src/views/admin/index.vue @@ -61,15 +61,18 @@ const menuItems: MenuItem[] = [ visible: true, children: [ { path: '/layout/admin/myMoney', name: '费用总览', visible: true, disabled: false }, + { path: '/layout/admin/balance', name: '余额管理', visible: true, disabled: false }, + { path: '/layout/admin/invoice', name: '发票管理', disabled: false, visible: true }, + { path: '/layout/admin/deposit', name: '提现管理', disabled: false, visible: true }, // 消费明细设置为不可见 { path: '/layout/admin/exchange', name: '算力点兑换', visible: false, disabled: false }, { path: '/layout/admin/myMoneyDetail', name: '消费明细', visible: false, disabled: false }, - { path: '/layout/admin/myOrder', name: '我的订单', visible: true, disabled: false }, - { path: '/layout/admin/flow', name: '账单明细', visible: true, disabled: false }, - { path: '/layout/admin/coupon', name: '优惠券(待开发)', disabled: true, visible: true }, - { path: '/layout/admin/invoice', name: '发票(待开发)', disabled: true, visible: true }, - { path: '/layout/admin/voucher', name: '代金券(待开发)', disabled: true, visible: true }, - { path: '/layout/admin/contract', name: '合同(待开发)', disabled: true, visible: true }, + { path: '/layout/admin/myOrder', name: '订单明细', visible: true, disabled: false }, + // { path: '/layout/admin/flow', name: '账单明细', visible: true, disabled: false }, + // { path: '/layout/admin/coupon', name: '优惠券(待开发)', disabled: true, visible: true }, + + // { path: '/layout/admin/voucher', name: '代金券(待开发)', disabled: true, visible: true }, + // { path: '/layout/admin/contract', name: '合同(待开发)', disabled: true, visible: true }, ], }, { diff --git a/src/views/admin/instance/index.vue b/src/views/admin/instance/index.vue index 57e2a79..c863a1f 100644 --- a/src/views/admin/instance/index.vue +++ b/src/views/admin/instance/index.vue @@ -7,134 +7,538 @@ 容器实例 - 实例连续关机15天会释放实例,实例释放会导致数据清空且不可恢复,释放前实例在数据在。 + 实例连续关机15天会释放实例,实例释放会导致数据清空且不可恢复,释放前实例数据仍在。 -
- 租用新实例 - - +
- - 全部标签 + + 全部状态 运行中 已停止 + 异常 - +
- + +