wupengfei
2025-11-01 b8c0efefec84532e2d2ea9115e8a85e1b7c62f64
src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -61,7 +61,7 @@
            </QueryFilterItem>
          </template>
          <template #btn v-if="isSettlement">
            <BlFileUpload
            <!-- <BlFileUpload
              v-model:file-url="form.settlementUrl"
              ref="uploadRef"
              :showTip="false"
@@ -73,7 +73,7 @@
              accept="xlsx,xls"
            >
              <el-button text type="primary" class="pro-table-operation-btn">导入</el-button>
            </BlFileUpload>
            </BlFileUpload> -->
            <el-button type="primary" link @click="handleExport()">导出</el-button>
          </template>
        </ProTableQueryFilterBar>
@@ -90,7 +90,7 @@
        </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)
@@ -99,13 +99,13 @@
            type="primary"
            @click="handleSubmit()"
            >结算申请</el-button
          >
          > -->
          <el-button
            v-if="isSettlement && form.auditStatus === EnumTaskSettlementAuditStatus.Pass"
            v-if="isSettlement"
            class="chuck-add-or-edit-actions"
            type="primary"
            @click="handleSubmit()"
            >提交结算</el-button
            >结算确认</el-button
          >
        </div>
      </ChunkCell>
@@ -197,6 +197,10 @@
  isSettlement: isSettlement.value,
  auditStatus: '' as any as EnumTaskSettlementAuditStatus,
  timeoutServiceFee: 0,
  supplierEnterpriseId: '',
});
const BaseState = {
@@ -231,6 +235,8 @@
      form.code = res?.detail?.code;
      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 ?? '';
    }
@@ -301,6 +307,13 @@
      settlementAmount: { type: 'money' },
      actualSettlementAmount: { type: 'money' },
      settlementReceiveStatus: { type: 'enum', valueEnum: SettlementReceiveStatusText },
      serviceFee: { type: 'money' },
      timeoutHours: {
        formatter: (row: API.GetSettlementTaskUsersQueryResultItem) =>
          row.timeoutHours ? `${row.timeoutHours}小时` : '',
      },
      timeoutFee: { type: 'money' },
      otherFee: { type: 'money' },
    },
  }
);
@@ -313,9 +326,15 @@
    actualSettlementAmount: null as number,
    receiveAccount: '',
    bank: '',
    totalWorkHours: null as number,
    // totalWorkHours: null as number,
    settlementAccess: form.settlementAccess,
    // bankBranch: '',
    timeoutServiceFee: 0,
    serviceFee: null as number,
    timeoutHours: null as number,
    timeoutFee: null as number,
    otherFee: null as number,
    remark: '',
  },
});
@@ -327,23 +346,36 @@
      actualSettlementAmount: row?.actualSettlementAmount ?? null,
      receiveAccount: row?.receiveAccount ?? '',
      bank: row?.bank ?? '',
      totalWorkHours: row?.totalWorkHours ?? null,
      // totalWorkHours: row?.totalWorkHours ?? null,
      settlementAccess: form.settlementAccess,
      // bankBranch: row?.bankBranch ?? '',
      timeoutServiceFee: form.timeoutServiceFee,
      serviceFee: row?.serviceFee ?? 0,
      timeoutHours: row?.timeoutHours ?? null,
      timeoutFee: row?.timeoutFee ?? null,
      otherFee: row?.otherFee ?? null,
      remark: row?.remark ?? '',
    });
  }
}
async function handleAddOrEdit() {
  try {
    const settlementAmount =
      (editForm.timeoutFee ?? 0) + (editForm.serviceFee ?? 0) + (editForm.otherFee ?? 0);
    let params: API.EditTaskSettlementOrderRosterCommand = {
      id: editForm.id,
      settlementAmount: editForm.settlementAmount,
      settlementAmount: settlementAmount,
      actualSettlementAmount: editForm.actualSettlementAmount,
      receiveAccount: editForm.receiveAccount,
      bank: editForm.bank,
      totalWorkHours: editForm.totalWorkHours,
      // totalWorkHours: editForm.totalWorkHours,
      // bankBranch: editForm.bankBranch,
      serviceFee: editForm.serviceFee,
      timeoutHours: editForm.timeoutHours,
      timeoutFee: editForm.timeoutFee,
      otherFee: editForm.otherFee,
      remark: editForm.remark,
    };
    let res = await taskServices.editTaskSettlementOrderRoster(params);
    if (res) {
@@ -407,7 +439,9 @@
    code: form.code,
    settlementUserCount: form.settlementTaskUsers.length,
    actualSettlementAmount: form.actualSettlementAmount,
    settlementAmount: form.settlementAmount,
    settlementAccess: form.settlementAccess,
    supplierEnterpriseId: form.supplierEnterpriseId,
  });
}
@@ -422,13 +456,39 @@
    name: '',
    code: '',
    settlementUserCount: 0,
    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() {