zhengyiming
2025-11-28 3ae270ee2e6518522dce3153f483b8c5b3d3428d
src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -79,7 +79,7 @@
        </ProTableQueryFilterBar>
        <ProTableV2
          v-bind="proTableProps"
          :columns="SettlementListColumns"
          :columns="column"
          :operationBtns="operationBtns"
          :auto-height="false"
          ref="proTable"
@@ -138,7 +138,6 @@
  BlFileUpload,
  UploadUserFile,
} from '@bole-core/components';
import { SettlementListColumns } from './constants';
import { useQuery } from '@tanstack/vue-query';
import * as taskServices from '@/services/api/task';
import * as taskUserServices from '@/services/api/taskUser';
@@ -149,6 +148,7 @@
import {
  downloadFile,
  downloadFileByUrl,
  hiddenIDNumberForEnd4,
  paginateList,
  setOssFileName,
  setOSSLink,
@@ -162,12 +162,8 @@
const { closeViewPush } = useRouteView();
const eventContext = useGlobalEventContext();
const operationBtns = defineOperationBtns([
  {
    data: {
      enCode: 'editBtn',
      name: '编辑',
    },
const operationBtnMap: Record<string, OperationBtnType> = {
  editBtn: {
    emits: {
      onClick: (role) => openDialog(role),
    },
@@ -175,7 +171,10 @@
      hide: () => !isSettlement.value,
    },
  },
]);
};
const { column, operationBtns, checkSubModuleItemShow } = useAccess({
  operationBtnMap,
});
const route = useRoute();
const id = (route.params.id as string) ?? '';
const settlement = (route.query.settlement as string) ?? '';
@@ -199,6 +198,8 @@
  auditStatus: '' as any as EnumTaskSettlementAuditStatus,
  timeoutServiceFee: 0,
  supplierEnterpriseId: '',
});
const BaseState = {
@@ -234,6 +235,7 @@
      form.settlementAccess = res?.detail?.settlementAccess;
      form.auditStatus = res?.detail?.auditStatus;
      form.timeoutServiceFee = res?.detail?.timeoutServiceFee ?? 0;
      form.supplierEnterpriseId = res?.detail?.supplierEnterpriseId;
      // form.settlementOrderName = setOssFileName(res?.detail?.settlementOrderName);
      // form.settlementOrderTime = res?.detail?.settlementOrderTime ?? '';
    }
@@ -311,6 +313,11 @@
      },
      timeoutFee: { type: 'money' },
      otherFee: { type: 'money' },
      identity: {
        formatter: (row: API.GetSettlementTaskUsersQueryResultItem) => {
          return hiddenIDNumberForEnd4(row.identity);
        },
      },
    },
  }
);
@@ -430,14 +437,21 @@
}
function handleSubmit() {
  let actualList = form.settlementTaskUsers.filter((x) => x.actualSettlementAmount > 0);
  const actualSettlementAmount = actualList.reduce(
    (pre, cur) => pre + cur.actualSettlementAmount,
    0
  );
  const settlementAmount = actualList.reduce((pre, cur) => pre + cur.settlementAmount, 0);
  handleSettleEdit({
    id: id,
    name: form.name,
    code: form.code,
    settlementUserCount: form.settlementTaskUsers.length,
    actualSettlementAmount: form.actualSettlementAmount,
    settlementAmount: form.settlementAmount,
    settlementUserCount: actualList.length,
    actualSettlementAmount: actualSettlementAmount,
    settlementAmount: settlementAmount,
    settlementAccess: form.settlementAccess,
    supplierEnterpriseId: form.supplierEnterpriseId,
  });
}
@@ -455,11 +469,36 @@
    settlementAmount: 0,
    actualSettlementAmount: 0,
    settlementAccess: '' as any as EnumEnterpriseWalletAccess,
    supplierEnterpriseId: '',
  },
});
async function handleSettle() {
  sureTaskSettlementOrder();
  auditTaskSettlement();
}
async function auditTaskSettlement() {
  try {
    let params: API.AuditTaskSettlementCommand = {
      id: id,
      auditStatus: EnumTaskSettlementAuditStatus.Pass,
      rosters: form.settlementTaskUsers.map((item) => ({
        id: item.id,
        serviceFee: item.serviceFee,
        timeoutHours: item.timeoutHours,
        timeoutFee: item.timeoutFee,
        otherFee: item.otherFee,
        remark: item.remark,
        settlementAmount: item.settlementAmount,
      })),
    };
    let res = await taskServices.auditTaskSettlement(params);
    if (res) {
      Message.successMessage('操作成功');
      eventContext.emit('sureTaskSettlementOrder');
      handleBack();
    }
  } catch (error) {}
}
async function sureTaskSettlementOrder() {