|
|
@@ -17,7 +17,7 @@
|
|
|
value-format="YYYY-MM-DD"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="客户名称" prop="customerName">
|
|
|
+ <el-form-item label="供应商名称" prop="customerName">
|
|
|
<el-input v-model="queryParams.customerName" placeholder="请输入客户名称" clearable @keyup.enter="handleQuery" />
|
|
|
</el-form-item>
|
|
|
<!-- <el-form-item label="订单编号" prop="orderNo">
|
|
|
@@ -45,11 +45,12 @@
|
|
|
|
|
|
<el-card shadow="never">
|
|
|
<template #header>
|
|
|
- <el-row :gutter="10" class="mb8">
|
|
|
- <el-col :span="22"> 对账管理信息列表 </el-col>
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['bill:statementOrder:add']">新增</el-button>
|
|
|
- </el-col>
|
|
|
+ <el-row :gutter="10" class="mb8" type="flex" justify="space-between" align="middle">
|
|
|
+ <span style="font-size: 16px; font-weight: 500">对账管理信息列表</span>
|
|
|
+ <div style="display: flex; flex-wrap: nowrap; gap: 10px">
|
|
|
+ <!-- <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['bill:statementOrder:add']">新增</el-button> -->
|
|
|
+ <el-button type="primary" plain icon="Plus" @click="handleApplyInvoice" :disabled="!selectedRows.length">申请开票</el-button>
|
|
|
+ </div>
|
|
|
</el-row>
|
|
|
</template>
|
|
|
|
|
|
@@ -62,8 +63,8 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="对账金额" align="center" prop="amount" />
|
|
|
- <el-table-column label="客户编号" align="center" prop="customerNo" />
|
|
|
- <el-table-column label="客户名称" align="center" prop="customerName" />
|
|
|
+ <el-table-column label="供应商编号" align="center" prop="customerNo" />
|
|
|
+ <el-table-column label="供应商名称" align="center" prop="customerName" />
|
|
|
<el-table-column label="对账状态" align="center" prop="statementStatus">
|
|
|
<template #default="scope">
|
|
|
<dict-tag :options="statement_status" :value="scope.row.statementStatus" />
|
|
|
@@ -101,11 +102,11 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup name="StatementOrder" lang="ts">
|
|
|
-import { listStatementOrder, getStatementOrder, changeStatus } from '@/api/bill/statementOrder';
|
|
|
+import { listStatementOrder, getStatementOrder, changeStatus, confirmStatement } from '@/api/bill/statementOrder';
|
|
|
import { StatementOrderVO, StatementOrderQuery, StatementOrderForm } from '@/api/bill/statementOrder/types';
|
|
|
import AddDrawer from './addDrawer.vue';
|
|
|
import DetailDrawer from './detailDrawer.vue';
|
|
|
-
|
|
|
+import { applyForInvoice } from '@/api/bill/statementInvoice';
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
const { statement_status, statement_order_type, invoice_issuance_status, payment_status } = toRefs<any>(
|
|
|
proxy?.useDict('statement_status', 'statement_order_type', 'invoice_issuance_status', 'payment_status')
|
|
|
@@ -145,6 +146,8 @@ const initFormData: StatementOrderForm = {
|
|
|
annexAddress: undefined,
|
|
|
rejectRemark: undefined,
|
|
|
remark: undefined,
|
|
|
+ statementOrderIds: [],
|
|
|
+ statementType: '2',
|
|
|
detailList: [],
|
|
|
productList: []
|
|
|
};
|
|
|
@@ -182,6 +185,7 @@ enum StatementStatus {
|
|
|
REJECTED = 3, // 已驳回
|
|
|
OBSOLETE = 4 // 已作废
|
|
|
}
|
|
|
+const selectedRows = ref<any[]>([]);
|
|
|
|
|
|
// 按钮配置类型
|
|
|
interface ActionButton {
|
|
|
@@ -200,6 +204,26 @@ const getList = async () => {
|
|
|
loading.value = false;
|
|
|
};
|
|
|
|
|
|
+const handleConfirm = async (row: any) => {
|
|
|
+ try {
|
|
|
+ await ElMessageBox.confirm(`确定要确认对账单"${row.billNo}"吗?`, '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+
|
|
|
+ await confirmStatement({ id: row.id });
|
|
|
+ row.billStatus = '2';
|
|
|
+ ElMessage.success('确认成功');
|
|
|
+ getList();
|
|
|
+ } catch (error) {
|
|
|
+ if (error !== 'cancel') {
|
|
|
+ console.error('确认对账单失败:', error);
|
|
|
+ ElMessage.error('确认对账单失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
/** 表单重置 */
|
|
|
const reset = () => {
|
|
|
form.value = { ...initFormData };
|
|
|
@@ -222,8 +246,10 @@ const resetQuery = () => {
|
|
|
/** 多选框选中数据 */
|
|
|
const handleSelectionChange = (selection: StatementOrderVO[]) => {
|
|
|
ids.value = selection.map((item) => item.id);
|
|
|
+
|
|
|
single.value = selection.length != 1;
|
|
|
multiple.value = !selection.length;
|
|
|
+ selectedRows.value = selection.filter((row) => row.statementStatus === '2');
|
|
|
};
|
|
|
|
|
|
/** 新增按钮操作 */
|
|
|
@@ -254,15 +280,15 @@ const handleSend = async (row?: StatementOrderVO) => {
|
|
|
const _no = row?.statementOrderNo;
|
|
|
const _ids = row?.id;
|
|
|
const oldValue = row.statementStatus; // 保存旧值
|
|
|
- await proxy?.$modal.confirm('是否发送当前账单编号【' + _no + '】吗?').finally(() => (loading.value = false));
|
|
|
+ await proxy?.$modal.confirm('是否确认对账当前账单编号【' + _no + '】吗?').finally(() => (loading.value = false));
|
|
|
//todo 发送
|
|
|
try {
|
|
|
- await changeStatus(_ids, '1'); // 传新值 1 待确认
|
|
|
+ await changeStatus(_ids, '2'); // 传新值 2确认
|
|
|
} catch (e) {
|
|
|
// 恢复旧值
|
|
|
row.statementStatus = oldValue;
|
|
|
}
|
|
|
- proxy?.$modal.msgSuccess('发送成功');
|
|
|
+ proxy?.$modal.msgSuccess('确认成功');
|
|
|
await getList();
|
|
|
};
|
|
|
|
|
|
@@ -293,6 +319,32 @@ const handleObsolete = async (row?: StatementOrderVO) => {
|
|
|
await getList();
|
|
|
};
|
|
|
|
|
|
+const handleApplyInvoice = async () => {
|
|
|
+ try {
|
|
|
+ form.value.statementOrderIds = selectedRows.value.map((row) => row.id);
|
|
|
+ if (!form.value.statementOrderIds) {
|
|
|
+ ElMessage.warning('请选择要申请的对账单');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const billNos = selectedRows.value.map((row) => row.statementOrderNo).join('、');
|
|
|
+ await ElMessageBox.confirm(`确定要为以下对账单申请开票吗?\n${billNos}`, '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ form.value.statementType = '2';
|
|
|
+ // TODO: 调用申请开票接口
|
|
|
+ await applyForInvoice(form.value);
|
|
|
+ ElMessage.success('申请开票成功');
|
|
|
+ getList();
|
|
|
+ } catch (error) {
|
|
|
+ if (error !== 'cancel') {
|
|
|
+ console.error('申请开票失败:', error);
|
|
|
+ ElMessage.error('申请开票失败');
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
/** 导出按钮操作 */
|
|
|
const handleExport = () => {
|
|
|
proxy?.download(
|
|
|
@@ -308,26 +360,28 @@ const handleExport = () => {
|
|
|
const buttonConfigMap: Record<number, ActionButton[]> = {
|
|
|
[StatementStatus.DRAFT]: [
|
|
|
{ action: 'detail', label: '查看', handler: handleDetail, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'edit', label: '编辑', handler: handleUpdate, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'send', label: '发送对账单', handler: handleSend, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'withdraw', label: '撤回', handler: handleWithdraw, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'obsolete', label: '作废', handler: handleObsolete, permission: 'bill:statementOrder:remove' }
|
|
|
+ // { action: 'edit', label: '编辑', handler: handleUpdate, permission: 'bill:statementOrder:edit' },
|
|
|
+ { action: 'send', label: '确认', handler: handleSend, permission: 'bill:statementOrder:edit' }
|
|
|
+ // { action: 'withdraw', label: '撤回', handler: handleWithdraw, permission: 'bill:statementOrder:edit' },
|
|
|
+ // { action: 'obsolete', label: '作废', handler: handleObsolete, permission: 'bill:statementOrder:remove' }
|
|
|
],
|
|
|
[StatementStatus.PENDING]: [
|
|
|
{ action: 'detail', label: '查看', handler: handleDetail, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'edit', label: '编辑', handler: handleUpdate, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'withdraw', label: '撤回', handler: handleWithdraw, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'obsolete', label: '作废', handler: handleObsolete, permission: 'bill:statementOrder:remove' }
|
|
|
+ // { action: 'edit', label: '编辑', handler: handleUpdate, permission: 'bill:statementOrder:edit' },
|
|
|
+ // { action: 'withdraw', label: '撤回', handler: handleWithdraw, permission: 'bill:statementOrder:edit' },
|
|
|
+ { action: 'send', label: '确认', handler: handleSend, permission: 'bill:statementOrder:edit' }
|
|
|
+
|
|
|
+ // { action: 'obsolete', label: '作废', handler: handleObsolete, permission: 'bill:statementOrder:remove' }
|
|
|
],
|
|
|
[StatementStatus.CONFIRMED]: [
|
|
|
- { action: 'detail', label: '查看', handler: handleDetail, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'obsolete', label: '作废', handler: handleObsolete, permission: 'bill:statementOrder:remove' }
|
|
|
+ { action: 'detail', label: '查看', handler: handleDetail, permission: 'bill:statementOrder:edit' }
|
|
|
+ // { action: 'obsolete', label: '作废', handler: handleObsolete, permission: 'bill:statementOrder:remove' }
|
|
|
],
|
|
|
[StatementStatus.REJECTED]: [
|
|
|
{ action: 'detail', label: '查看', handler: handleDetail, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'edit', label: '编辑', handler: handleUpdate, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'send', label: '发送对账单', handler: handleSend, permission: 'bill:statementOrder:edit' },
|
|
|
- { action: 'obsolete', label: '作废', handler: handleObsolete, permission: 'bill:statementOrder:remove' }
|
|
|
+ // { action: 'edit', label: '编辑', handler: handleUpdate, permission: 'bill:statementOrder:edit' },
|
|
|
+ { action: 'send', label: '确认', handler: handleSend, permission: 'bill:statementOrder:edit' }
|
|
|
+ // { action: 'obsolete', label: '作废', handler: handleObsolete, permission: 'bill:statementOrder:remove' }
|
|
|
],
|
|
|
[StatementStatus.OBSOLETE]: [{ action: 'detail', label: '查看', handler: handleDetail, permission: 'bill:statementOrder:edit' }]
|
|
|
};
|