wupengfei
2025-12-04 12c46bd2bac2058f0dc3368a445592c2fb31dac7
src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -74,12 +74,18 @@
            >
              <el-button text type="primary" class="pro-table-operation-btn">导入</el-button>
            </BlFileUpload> -->
            <el-button type="primary" link @click="handleExport()">导出</el-button>
            <el-button
              v-if="checkSubModuleItemShow('pageButton', 'exportBtn')"
              type="primary"
              link
              @click="handleExport()"
              >导出</el-button
            >
          </template>
        </ProTableQueryFilterBar>
        <ProTableV2
          v-bind="proTableProps"
          :columns="SettlementListColumns"
          :columns="column"
          :operationBtns="operationBtns"
          :auto-height="false"
          ref="proTable"
@@ -90,21 +96,21 @@
        </ProTableV2>
        <div class="chuck-add-or-edit-actions">
          <el-button class="chuck-add-or-edit-actions" @click="handleBack">取消</el-button>
          <!-- <el-button
          <el-button
            v-if="
              isSettlement &&
              (!form.auditStatus || form.auditStatus !== EnumTaskSettlementAuditStatus.Pass)
            "
            class="chuck-add-or-edit-actions"
            type="primary"
            @click="handleSubmit()"
            >结算申请</el-button
          > -->
            @click="handleSubmit('confirm')"
            >结算确认</el-button
          >
          <el-button
            v-if="isSettlement"
            v-if="isSettlement && form.auditStatus === EnumTaskSettlementAuditStatus.Pass"
            class="chuck-add-or-edit-actions"
            type="primary"
            @click="handleSubmit()"
            @click="handleSubmit('submit')"
            >提交结算</el-button
          >
        </div>
@@ -139,7 +145,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';
@@ -151,6 +156,7 @@
import {
  downloadFile,
  downloadFileByUrl,
  hiddenIDNumberForEnd4,
  paginateList,
  setOssFileName,
  setOSSLink,
@@ -164,40 +170,35 @@
const { closeViewPush } = useRouteView();
const eventContext = useGlobalEventContext();
const operationBtns = defineOperationBtns([
  {
    data: {
      enCode: 'editBtn',
      name: '编辑',
    },
const operationBtnMap: Record<string, OperationBtnType> = {
  editBtn: {
    emits: {
      onClick: (role) => openDialog(role),
    },
    extraProps: {
      hide: (row: API.GetSettlementTaskUsersQueryResultItem) =>
        !(
          form.settlementStatus === EnumTaskSettlementStatus.Fail ||
          form.settlementStatus === EnumTaskSettlementStatus.Part
          (row.settlementReceiveStatus === SettlementReceiveStatus.Refunded &&
            form.auditStatus === EnumTaskSettlementAuditStatus.Pass) ||
          form.auditStatus === EnumTaskSettlementAuditStatus.Wait
        ),
    },
  },
  {
    data: {
      enCode: 'editBtn',
      name: '重新结算',
    },
  reSettleBtn: {
    emits: {
      onClick: (role) => againSureTaskSettlementOrderRoster(role),
    },
    extraProps: {
      hide: (row: API.GetSettlementTaskUsersQueryResultItem) =>
        !(
          form.settlementStatus === EnumTaskSettlementStatus.Fail ||
          form.settlementStatus === EnumTaskSettlementStatus.Part
        ),
        row.settlementReceiveStatus !== SettlementReceiveStatus.Refunded,
    },
  },
]);
};
const { column, operationBtns, checkSubModuleItemShow } = useAccess({
  operationBtnMap,
});
const route = useRoute();
const id = (route.params.id as string) ?? '';
const settlement = (route.query.settlement as string) ?? '';
@@ -336,6 +337,11 @@
      },
      timeoutFee: { type: 'money' },
      otherFee: { type: 'money' },
      identity: {
        formatter: (row: API.GetSettlementTaskUsersQueryResultItem) => {
          return hiddenIDNumberForEnd4(row.identity);
        },
      },
    },
  }
);
@@ -465,14 +471,21 @@
  }
}
function handleSubmit() {
function handleSubmit(submitStatus: string) {
  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,
    submitStatus: submitStatus,
    settlementUserCount: actualList.length,
    actualSettlementAmount: actualSettlementAmount,
    settlementAmount: settlementAmount,
    settlementAccess: form.settlementAccess,
  });
}
@@ -487,6 +500,7 @@
    id: '',
    name: '',
    code: '',
    submitStatus: '',
    settlementUserCount: 0,
    settlementAmount: 0,
    actualSettlementAmount: 0,
@@ -495,7 +509,37 @@
});
async function handleSettle() {
  sureTaskSettlementOrder();
  if (settleEditForm.submitStatus === 'confirm') {
    auditTaskSettlement();
  }
  if (settleEditForm.submitStatus === 'submit') {
    sureTaskSettlementOrder();
  }
}
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();
      refetch();
    }
  } catch (error) {}
}
async function sureTaskSettlementOrder() {
@@ -562,6 +606,7 @@
    let res = await taskServices.editTaskSettlementOrderRoster(params);
    if (res) {
      Message.successMessage('操作成功');
      refetch();
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
@@ -575,6 +620,7 @@
    let res = await taskServices.againSureTaskSettlementOrderRoster(params);
    if (res) {
      Message.successMessage('操作成功');
      refetch();
      getList(paginationState.pageIndex);
    }
  } catch (error) {}