sen
1 天以前 5abcde36961125cbf436f91b8c17610a6b5f8308
ui/admin-ui3/src/views/tms/generationCost/index.vue
@@ -114,17 +114,18 @@
        </avue-form>
        <avue-crud :option="boxTableOption" :data="boxTableData" @selection-change="boxSelectionChange">
          <template #menu-left>
            <el-button type="danger" plain icon="Delete" :disabled="!(boxSelectionList.length === 1 && boxSelectionList[0]?.status === 0)"
            <el-button type="danger" plain icon="Delete"
              :disabled="!(boxSelectionList.length === 1 && boxSelectionList[0]?.status === 0)"
              @click="handleBatchBoxDel">
              作废
            </el-button>
          </template>
          <template #isYF="{ row }">
            <el-checkbox v-model="row.isYF"   :disabled="row.status == 1"  :true-value="1" :false-value="0"
            <el-checkbox v-model="row.isYF" :disabled="row.status == 1" :true-value="1" :false-value="0"
              @change="(e: number) => isYFChange(e, row)"></el-checkbox>
          </template>
          <template #yfServiceProviderId="{ row }">
            <el-select   :disabled="row.status == 1" v-model="row.yfServiceProviderIdType" placeholder="请选择服务商"
            <el-select :disabled="row.status == 1" v-model="row.yfServiceProviderIdType" placeholder="请选择服务商"
              @change="(e: any) => ysServiceProviderChange(e, row)" :filterable="true">
              <el-option v-for="item in serviceProviderList"
                :key="item.serviceProviderId + '_' + item.serviceProviderType" :label="item.serviceProviderName"
@@ -132,10 +133,11 @@
            </el-select>
          </template>
          <template #yfPrice="{ row }">
            <el-input   :disabled="row.status == 1" v-model="row.yfPrice" :min="1" type="number" placeholder="请输入金额"></el-input>
            <el-input :disabled="row.status == 1" v-model="row.yfPrice" :min="1" type="number"
              placeholder="请输入金额"></el-input>
          </template>
          <template #yfCurrency="{ row }">
            <el-radio-group v-model="row.yfCurrency"   :disabled="row.status == 1" >
            <el-radio-group v-model="row.yfCurrency" :disabled="row.status == 1">
              <el-radio v-for="dict in sys_currency" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio>
            </el-radio-group>
          </template>
@@ -227,7 +229,7 @@
  updateTmsDispatchOrder,
  generateTmsDispatchOrder, initGenerate, initYSGenerate,
  ysGenerateTmsDispatchOrder, initYFGenerate, yfGenerateTmsDispatchOrder,
  getServiceProvider, checkCloseOrder, closeOrder,tmsFinanceDetail
  getServiceProvider, checkCloseOrder, closeOrder, tmsFinanceDetail
} from "@/api/tms/tmsDispatchOrder";
import useCurrentInstance from "@/utils/useCurrentInstance";
import { computed, onMounted, reactive, ref, toRefs, watch, getCurrentInstance, nextTick } from "vue";
@@ -900,7 +902,7 @@
const financeTableOption = ref({
  menu: false,
  addBtn: false,
  header: true,
  header: true,
  selection: true,
  title: '历史垫付费用',
  column: {
@@ -973,7 +975,7 @@
      label: '应付币制',
      display: true,
    },
     status: {
    status: {
      label: '状态',
      display: true,
      type: 'select', dicUrl: '/system/dict/data/type/sys_cancel_word', dataType: 'string',
@@ -1221,50 +1223,48 @@
    console.log(pageF.single)
  },
  getBeginListFunc: (params = {}) => {
    // 1. 日期转换
    let newParams = <any>{ ...params };
    if (newParams) {
      // 1. 定义日期字段映射 (数组名 : 接口需要的前缀)
      // 这样写的好处是:如果你有多个日期,直接在这里添加一行即可
      const dateMap = {
        createTimeRange: 'createTime',
        updateTimeRange: 'updateTime',
        confirmTimeRange: 'confirmTime',
        okTimeRange: 'okTime',
    // 1. 使用浅拷贝,不影响原始查询对象
    // 关键点:从原始 queryParams.value 取值,确保分页时依然能拿到数组
    let newParams = { ...queryParams.value, ...params };
      };
    // 2. 定义日期字段映射 (数组名 : 接口需要的前缀)
    const dateMap = {
      createTimeRange: 'createTime',
      updateTimeRange: 'updateTime',
      confirmTimeRange: 'confirmTime',
      okTimeRange: 'okTime',
    };
      // 2. 遍历处理日期
      Object.keys(dateMap).forEach(arrayKey => {
        const prefix = dateMap[arrayKey];
        const range = newParams[arrayKey];
    // 3. 遍历处理日期
    Object.keys(dateMap).forEach(arrayKey => {
      const prefix = dateMap[arrayKey];
      const range = newParams[arrayKey];
        if (Array.isArray(range) && range.length > 0) {
          // 赋值 Begin 和 End
          newParams[`${prefix}Begin`] = range[0];
          newParams[`${prefix}End`] = range[1];
        }
      if (Array.isArray(range) && range.length === 2) {
        // 赋值接口需要的 Begin 和 End
        newParams[`${prefix}Begin`] = range[0];
        newParams[`${prefix}End`] = range[1];
      }
        // 【核心改动】:无论是否有值,处理完后都把原始的 Array 字段删掉
        // 这样请求里就不会出现 confirmTimeRangeArray: [...]
        delete newParams[arrayKey];
      });
      // 只在给接口的参数中删除数组,不影响页面显示的 queryParams
      delete newParams[arrayKey];
    });
      // 3. 通用清洗:删除所有空字符串、null 或 undefined 的其他字段
      Object.keys(newParams).forEach(key => {
        const val = newParams[key];
        if (val === '' || val === null || val === undefined) {
          delete newParams[key];
        }
      });
    // 4. 清洗参数:过滤空值
    const finalParams = {};
    Object.keys(newParams).forEach(key => {
      const val = newParams[key];
      if (val !== '' && val !== null && val !== undefined) {
        finalParams[key] = val;
      }
    });
    } else {
      newParams = {};
    }
    console.log('发送给接口的最终参数:', finalParams);
    return newParams;
    // 【核心修改】:直接返回,不要赋值给 queryParams.value
    return finalParams;
  },
})
@@ -1705,7 +1705,7 @@
    ElMessage.warning('请选择要作废的费用明细');
    return;
  }
  ElMessageBox.confirm(`确认要作废选中的 ${boxSelectionList.value.length} 条费用明细吗?`, '警告', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
@@ -1714,15 +1714,15 @@
    // 从 boxTableData 中移除选中的项
    // const ids = boxSelectionList.value.map((item: any) => item.id).join(',');
    let data = {
      id:boxSelectionList.value[0].id,
      status:1
      id: boxSelectionList.value[0].id,
      status: 1
    }
      tmsFinanceDetail(data).then(res => {
        ElMessage.success('作废成功');
        getTab2Data(); // 刷新数据
      }).catch(err => {
        ElMessage.error('作废失败');
      });
    tmsFinanceDetail(data).then(res => {
      ElMessage.success('作废成功');
      getTab2Data(); // 刷新数据
    }).catch(err => {
      ElMessage.error('作废失败');
    });
    // ElMessage.success('作废成功');
    // boxSelectionList.value = []; // 清空选择
  }).catch(() => {