zhangback
2025-11-18 de1a42d853176d83805c1290d7381235a9780a2d
提交
4个文件已修改
603 ■■■■■ 已修改文件
ui/admin-ui3/src/api/tms/tmsFinanceDetail.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/tms/collectionTmsFinance/index.vue 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/tms/otherTmsFinance/index.vue 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/views/tms/paymentTmsFinance/index.vue 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ui/admin-ui3/src/api/tms/tmsFinanceDetail.ts
@@ -55,6 +55,12 @@
        method: 'delete'
    })
}
export const cancelFinanceDetail:requestType = (id) => {
    return request({
        url: '/tms/tmsFinanceDetail/cancelFinanceDetail/' + id,
        method: 'get'
    })
}
/**
ui/admin-ui3/src/views/tms/collectionTmsFinance/index.vue
@@ -52,11 +52,28 @@
        <el-link size="small" type="primary" v-if="[0,1].includes(row.status)" @click="handleCancel(row)" class="link-btn" :underline="false"
                 icon="el-icon-connection">作废
        </el-link>
        <el-link size="small" type="primary" v-if="[0,1].includes(row.status)" @click="handleAddFinance(row)" class="link-btn"
        <el-link size="small" type="primary" v-if="[0,1].includes(row.status)" @click="handleAddFinanceDetail(row)" class="link-btn"
                 :underline="false" icon="el-icon-edit-pen">费用明细
        </el-link>
      </template>
    </avue-crud>
    <el-dialog :title="pageF.title" v-model="pageF.open" class="avue-dialog avue-dialog--top" width="80%">
      总费用 <el-input-number v-model="form.totalAmount" disabled readonly></el-input-number>
      <avue-crud style="margin-top: 10px "
          :option="financeTableOption"
          :data="boxTableData"
                 :permission="permissionList2"
                 @row-update="rowDetailUpdate"
                 @row-save="rowDetailSave"
      >
        <template #menu="{row}">
          <el-link size="small" type="primary" v-if="[0].includes(row.status)" @click="handleCancelDetail(row)" class="link-btn" :underline="false"
                   icon="el-icon-connection">作废
          </el-link>
        </template>
      </avue-crud>
    </el-dialog>
  </basicContainer>
</template>
@@ -70,6 +87,10 @@
  listTmsFinance,
  updateTmsFinance,confirmFinance,cancelFinance
} from "@/api/tms/tmsFinance";
import {addTmsFinanceDetail, listTmsFinanceDetail,
  cancelFinanceDetail,
  updateTmsFinanceDetail} from "@/api/tms/tmsFinanceDetail"
import useCurrentInstance from "@/utils/useCurrentInstance";
import {computed, reactive, ref, toRefs} from "vue";
import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
@@ -90,6 +111,15 @@
  }
})
const permissionList2 = (key: any, row: any, index: any) => {
  if (key == 'addBtn') {
    return true
  }else if (key == 'editBtn') {
    return  [0].includes(row?.status)
  } else {
    return true;
  }
};
const data = reactive({
  form: <TmsFinanceI>{},
  queryParams: <TmsFinanceI & PageQueryInterface>{},
@@ -99,8 +129,9 @@
    currentPage: 1,
  },
  selectionList: [],
  boxTableData: []
})
const {queryParams, form, page, selectionList} = toRefs(data);
const {queryParams, form, page, selectionList,boxTableData} = toRefs(data);
const option = ref({
  pageKey: 'TmsFinance',
  rowKey: 'id',
@@ -207,6 +238,67 @@
  }
})
const financeTableOption = ref({
  menu: true,
  addBtn: true,
  header: true, selection: false,
  viewBtn: false,
  delBtn: false,labelWidth:150,
  column: {
    feeType: {
      label: '费用名称',minWidth: 150,
      display: true,disabled: true,
      value: "99",
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/fee_type',
    },
    initialFeeAmount: {
      label: '初始登记费用金额',minWidth: 150,
      display: true,disabled: true,type: 'number',
    },
    actualFeeAmount: {
      label: '实际费用金额',minWidth: 150, type: 'number',
      display: true,
      rules: [
        {
          required: true,
          message: "实际费用金额不能为空", trigger: "change"
        }
      ],
    },
    feeVoucherUrl: {
      label: '费用凭证',
      display: true, hide:true,
      accept:'string',dataType: 'string',
      type: 'upload',
      action: '/common/upload2',
      propsHttp:{
        home:'url',
        name:'newFileName',
      },
    },
    feeCreateTime: {
      label: '费用创建时间',minWidth: 180,
      display: false,
    },
    updateBy: {
      label: '更新人',minWidth: 150,
      display: false,
    },
    updateTime: {
      label: '更新时间',minWidth: 180,
      display: false,
    },
    status: {
      label: '状态',minWidth: 150, fixed: 'right',
      display: false,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/finance_detail_status',
    },
  }
})
const {
  tableData,
  pageF,
@@ -278,4 +370,61 @@
  });
}
const handleAddFinanceDetail = (row:any) => {
  listTmsFinanceDetail({financeId:row.id,pageNum:1,pageSize: 9999}).then(res=>{
    boxTableData.value = res.rows || [];
    pageF.title = '费用明细';
    pageF.open = true;
    form.value = row;
  })
}
const rowDetailUpdate = (row:any,index:any,done:any, loading:any) => {
  updateTmsFinanceDetail( row).then(res=>{
    ElMessage({
      message: "修改成功!",
      type: 'success'
    })
    handleAddFinanceDetail(res.data);
    onLoad(page.value);
    done();
  }).catch(()=>{
    loading()
  })
}
const rowDetailSave = (row:any, done:any, loading:any) => {
row.financeId = form.value.id;
addTmsFinanceDetail({...row,dispatchOrderId:form.value.dispatchId,
  type: form.value.type,financeType:form.value.type
}).then(res=>{
  ElMessage({
    message: "新增成功!",
    type: 'success'
  })
  handleAddFinanceDetail(res.data);
  onLoad(page.value);
  done();
}).catch(()=>{
  loading()
})
}
const handleCancelDetail = (row: any) => {
  ElMessageBox.confirm("是否作废掉 " + row.$feeType + "确定 ?", '系统提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(() => {
    return cancelFinanceDetail(row.id);
  }).then(() => {
    handleAddFinanceDetail(form.value);
    onLoad(page.value);
    ElMessage({
      message: "操作成功!",
      type: 'success'
    })
  });
}
</script>
ui/admin-ui3/src/views/tms/otherTmsFinance/index.vue
@@ -45,7 +45,35 @@
        >导出
        </el-button>
      </template>
      <template #menu-before="{row}">
        <el-link size="small" type="primary" v-if="row.status == 0" @click="handleConfirm(row)" class="link-btn"
                 :underline="false" icon="el-icon-pointer">确认
        </el-link>
        <el-link size="small" type="primary" v-if="[0,1].includes(row.status)" @click="handleCancel(row)" class="link-btn" :underline="false"
                 icon="el-icon-connection">作废
        </el-link>
        <el-link size="small" type="primary" v-if="[0,1].includes(row.status)" @click="handleAddFinanceDetail(row)" class="link-btn"
                 :underline="false" icon="el-icon-edit-pen">费用明细
        </el-link>
      </template>
    </avue-crud>
    <el-dialog :title="pageF.title" v-model="pageF.open" class="avue-dialog avue-dialog--top" width="80%">
      总费用 <el-input-number v-model="form.totalAmount" disabled readonly></el-input-number>
      <avue-crud style="margin-top: 10px "
                 :option="financeTableOption"
                 :data="boxTableData"
                 :permission="permissionList2"
                 @row-update="rowDetailUpdate"
                 @row-save="rowDetailSave"
      >
        <template #menu="{row}">
          <el-link size="small" type="primary" v-if="[0].includes(row.status)" @click="handleCancelDetail(row)" class="link-btn" :underline="false"
                   icon="el-icon-connection">作废
          </el-link>
        </template>
      </avue-crud>
    </el-dialog>
  </basicContainer>
</template>
@@ -57,13 +85,19 @@
  exportTmsFinance,
  getTmsFinance,
  listTmsFinance,
  updateTmsFinance
  updateTmsFinance,confirmFinance,cancelFinance
} from "@/api/tms/tmsFinance";
import {addTmsFinanceDetail, listTmsFinanceDetail,
  cancelFinanceDetail,
  updateTmsFinanceDetail} from "@/api/tms/tmsFinanceDetail"
import useCurrentInstance from "@/utils/useCurrentInstance";
import {computed, reactive, ref, toRefs} from "vue";
import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
import {usePagePlus} from "@/hooks/usePagePlus";
import {hasPermission} from "@/utils/permissionUtils";
import {ElMessage, ElMessageBox} from "element-plus";
import {confirmOrder} from "@/api/tms/tmsDispatchOrder";
const {proxy} = useCurrentInstance();
const crudRef = ref();
@@ -77,6 +111,15 @@
  }
})
const permissionList2 = (key: any, row: any, index: any) => {
  if (key == 'addBtn') {
    return true
  }else if (key == 'editBtn') {
    return  [0].includes(row?.status)
  } else {
    return true;
  }
};
const data = reactive({
  form: <TmsFinanceI>{},
  queryParams: <TmsFinanceI & PageQueryInterface>{},
@@ -86,8 +129,9 @@
    currentPage: 1,
  },
  selectionList: [],
  boxTableData: []
})
const {queryParams, form, page, selectionList} = toRefs(data);
const {queryParams, form, page, selectionList,boxTableData} = toRefs(data);
const option = ref({
  pageKey: 'TmsFinance',
  rowKey: 'id',
@@ -99,15 +143,19 @@
  
    systemCode: {
      label: '系统编号',
      hide: false,minWidth: 150,
      hide: false,minWidth: 180,
      search: true,
    },
    dispatchNo: {
      label: '调度单号',minWidth: 150,
      search: true,
    },
    customerCode: {
      label: '客户编码',minWidth: 150,
    // planName: {
    //   label: '应付方案名称',minWidth: 150,
    //   search: true,
    // },
    customerName: {
      label: '客户',minWidth: 150,
      search: true,
    },
    projectName: {
@@ -121,12 +169,15 @@
    requiredVehicleTypes: {
      label: '要求车型',minWidth: 150,
      search: false,
      display: true, type: 'select', dicUrl: '/system/dict/data/type/license_type', dataType: 'string',
    },
    actualVehicleType: {
      label: '实际车型',minWidth: 150,
      search: false,
      display: true, type: 'select', dicUrl: '/system/dict/data/type/license_type', dataType: 'string',
    },
    mainDriver: {
    mainDriverName: {
      label: '主驾驶员',minWidth: 150,
      search: false,
    },
@@ -136,8 +187,8 @@
      search: false,
    },
    transportRoute: {
      label: '运输线路',minWidth: 150,
    transportLine: {
      label: '运输线路',minWidth: 150, overHidden: true,
      search: false,
    },
    
@@ -173,6 +224,8 @@
    status: {
      label: '状态',minWidth: 150,
      search: false,fixed: 'right',
      display: true, type: 'select', dicUrl: '/system/dict/data/type/finance_status', dataType: 'string',
    },
    updateBy: {
      label: '更新人',
@@ -184,6 +237,71 @@
    },
  }
})
const financeTableOption = ref({
  menu: true,
  addBtn: true,
  header: true, selection: false,
  viewBtn: false,
  delBtn: false,labelWidth:150,
  column: {
    dataSource: {
      label: '数据来源',minWidth: 150,
      display: false,value: 0,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/data_source',
    },
    feeType: {
      label: '费用名称',minWidth: 150,
      display: true,editDisabled: true,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/fee_type',
    },
    initialFeeAmount: {
      label: '初始登记费用金额',minWidth: 150,
      display: true,disabled: true,type: 'number',
    },
    actualFeeAmount: {
      label: '实际费用金额',minWidth: 150, type: 'number',
      display: true,
      rules: [
        {
          required: true,
          message: "实际费用金额不能为空", trigger: "change"
        }
      ],
    },
    feeVoucherUrl: {
      label: '费用凭证',
      display: true, minWidth: 150,
      accept:'string',dataType: 'string',
      type: 'upload',
      action: '/common/upload2',
      propsHttp:{
        home:'url',
        name:'newFileName',
      },
    },
    feeCreateTime: {
      label: '费用创建时间',minWidth: 180,
      display: false,
    },
    updateBy: {
      label: '更新人',minWidth: 150,
      display: false,
    },
    updateTime: {
      label: '更新时间',minWidth: 180,
      display: false,
    },
    status: {
      label: '状态',minWidth: 150, fixed: 'right',
      display: false,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/finance_detail_status',
    },
  }
})
const {
  tableData,
@@ -219,8 +337,98 @@
  },
  handleSelectionChangeFunc: (selection: any) => {
    selectionList.value = selection;
  },
  getBeginListFunc:()=>{
    queryParams.value.type = 2;
  }
})
const handleConfirm = (row: any) => {
  ElMessageBox.confirm("是否对调度单号" + row.dispatchNo + "进行确认 ?", '系统提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(() => {
    return confirmFinance(row.id);
  }).then(() => {
    onLoad(page.value);
    ElMessage({
      message: "操作成功!",
      type: 'success'
    })
  });
}
const handleCancel = (row: any) => {
  ElMessageBox.confirm("是否对调度单号" + row.dispatchNo + "进行作废?", '系统提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(() => {
    return cancelFinance(row.id);
  }).then(() => {
    onLoad(page.value);
    ElMessage({
      message: "操作成功!",
      type: 'success'
    })
  });
}
const handleAddFinanceDetail = (row:any) => {
  listTmsFinanceDetail({financeId:row.id,pageNum:1,pageSize: 9999}).then(res=>{
    boxTableData.value = res.rows || [];
    pageF.title = '费用明细';
    pageF.open = true;
    form.value = row;
  })
}
const rowDetailUpdate = (row:any,index:any,done:any, loading:any) => {
  updateTmsFinanceDetail( row).then(res=>{
    ElMessage({
      message: "修改成功!",
      type: 'success'
    })
    handleAddFinanceDetail(res.data);
    onLoad(page.value);
    done();
  }).catch(()=>{
    loading()
  })
}
const rowDetailSave = (row:any, done:any, loading:any) => {
  row.financeId = form.value.id;
  addTmsFinanceDetail({...row,dispatchOrderId:form.value.dispatchId,
    type: form.value.type,financeType:form.value.type
  }).then(res=>{
    ElMessage({
      message: "新增成功!",
      type: 'success'
    })
    handleAddFinanceDetail(res.data);
    onLoad(page.value);
    done();
  }).catch(()=>{
    loading()
  })
}
const handleCancelDetail = (row: any) => {
  ElMessageBox.confirm("是否作废掉 " + row.$feeType + "确定 ?", '系统提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(() => {
    return cancelFinanceDetail(row.id);
  }).then(() => {
    handleAddFinanceDetail(form.value);
    onLoad(page.value);
    ElMessage({
      message: "操作成功!",
      type: 'success'
    })
  });
}
</script>
ui/admin-ui3/src/views/tms/paymentTmsFinance/index.vue
@@ -45,7 +45,35 @@
        >导出
        </el-button>
      </template>
      <template #menu-before="{row}">
        <el-link size="small" type="primary" v-if="row.status == 0" @click="handleConfirm(row)" class="link-btn"
                 :underline="false" icon="el-icon-pointer">确认
        </el-link>
        <el-link size="small" type="primary" v-if="[0,1].includes(row.status)" @click="handleCancel(row)" class="link-btn" :underline="false"
                 icon="el-icon-connection">作废
        </el-link>
        <el-link size="small" type="primary" v-if="[0,1].includes(row.status)" @click="handleAddFinanceDetail(row)" class="link-btn"
                 :underline="false" icon="el-icon-edit-pen">费用明细
        </el-link>
      </template>
    </avue-crud>
    <el-dialog :title="pageF.title" v-model="pageF.open" class="avue-dialog avue-dialog--top" width="80%">
      总费用 <el-input-number v-model="form.totalAmount" disabled readonly></el-input-number>
      <avue-crud style="margin-top: 10px "
                 :option="financeTableOption"
                 :data="boxTableData"
                 :permission="permissionList2"
                 @row-update="rowDetailUpdate"
                 @row-save="rowDetailSave"
      >
        <template #menu="{row}">
          <el-link size="small" type="primary" v-if="[0].includes(row.status)" @click="handleCancelDetail(row)" class="link-btn" :underline="false"
                   icon="el-icon-connection">作废
          </el-link>
        </template>
      </avue-crud>
    </el-dialog>
  </basicContainer>
</template>
@@ -57,13 +85,19 @@
  exportTmsFinance,
  getTmsFinance,
  listTmsFinance,
  updateTmsFinance
  updateTmsFinance,confirmFinance,cancelFinance
} from "@/api/tms/tmsFinance";
import {addTmsFinanceDetail, listTmsFinanceDetail,
  cancelFinanceDetail,
  updateTmsFinanceDetail} from "@/api/tms/tmsFinanceDetail"
import useCurrentInstance from "@/utils/useCurrentInstance";
import {computed, reactive, ref, toRefs} from "vue";
import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
import {usePagePlus} from "@/hooks/usePagePlus";
import {hasPermission} from "@/utils/permissionUtils";
import {ElMessage, ElMessageBox} from "element-plus";
import {confirmOrder} from "@/api/tms/tmsDispatchOrder";
const {proxy} = useCurrentInstance();
const crudRef = ref();
@@ -77,6 +111,15 @@
  }
})
const permissionList2 = (key: any, row: any, index: any) => {
  if (key == 'addBtn') {
    return true
  }else if (key == 'editBtn') {
    return  [0].includes(row?.status)
  } else {
    return true;
  }
};
const data = reactive({
  form: <TmsFinanceI>{},
  queryParams: <TmsFinanceI & PageQueryInterface>{},
@@ -86,8 +129,9 @@
    currentPage: 1,
  },
  selectionList: [],
  boxTableData: []
})
const {queryParams, form, page, selectionList} = toRefs(data);
const {queryParams, form, page, selectionList,boxTableData} = toRefs(data);
const option = ref({
  pageKey: 'TmsFinance',
  rowKey: 'id',
@@ -99,15 +143,19 @@
    systemCode: {
      label: '系统编号',
      hide: false,minWidth: 150,
      hide: false,minWidth: 180,
      search: true,
    },
    dispatchNo: {
      label: '调度单号',minWidth: 150,
      search: true,
    },
    customerCode: {
      label: '客户编码',minWidth: 150,
    planName: {
      label: '应付方案名称',minWidth: 150,
      search: true,
    },
    customerName: {
      label: '客户',minWidth: 150,
      search: true,
    },
    projectName: {
@@ -121,12 +169,15 @@
    requiredVehicleTypes: {
      label: '要求车型',minWidth: 150,
      search: false,
      display: true, type: 'select', dicUrl: '/system/dict/data/type/license_type', dataType: 'string',
    },
    actualVehicleType: {
      label: '实际车型',minWidth: 150,
      search: false,
      display: true, type: 'select', dicUrl: '/system/dict/data/type/license_type', dataType: 'string',
    },
    mainDriver: {
    mainDriverName: {
      label: '主驾驶员',minWidth: 150,
      search: false,
    },
@@ -136,8 +187,8 @@
      search: false,
    },
    transportRoute: {
      label: '运输线路',minWidth: 150,
    transportLine: {
      label: '运输线路',minWidth: 150, overHidden: true,
      search: false,
    },
@@ -173,6 +224,8 @@
    status: {
      label: '状态',minWidth: 150,
      search: false,fixed: 'right',
      display: true, type: 'select', dicUrl: '/system/dict/data/type/finance_status', dataType: 'string',
    },
    updateBy: {
      label: '更新人',
@@ -184,6 +237,67 @@
    },
  }
})
const financeTableOption = ref({
  menu: true,
  addBtn: true,
  header: true, selection: false,
  viewBtn: false,
  delBtn: false,labelWidth:150,
  column: {
    feeType: {
      label: '费用名称',minWidth: 150,
      display: true,disabled: true,
      value: "99",
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/fee_type',
    },
    initialFeeAmount: {
      label: '初始登记费用金额',minWidth: 150,
      display: true,disabled: true,type: 'number',
    },
    actualFeeAmount: {
      label: '实际费用金额',minWidth: 150, type: 'number',
      display: true,
      rules: [
        {
          required: true,
          message: "实际费用金额不能为空", trigger: "change"
        }
      ],
    },
    feeVoucherUrl: {
      label: '费用凭证',
      display: true, hide:true,
      accept:'string',dataType: 'string',
      type: 'upload',
      action: '/common/upload2',
      propsHttp:{
        home:'url',
        name:'newFileName',
      },
    },
    feeCreateTime: {
      label: '费用创建时间',minWidth: 180,
      display: false,
    },
    updateBy: {
      label: '更新人',minWidth: 150,
      display: false,
    },
    updateTime: {
      label: '更新时间',minWidth: 180,
      display: false,
    },
    status: {
      label: '状态',minWidth: 150, fixed: 'right',
      display: false,
      type: 'select', dataType: 'string', dicUrl: '/system/dict/data/type/finance_detail_status',
    },
  }
})
const {
  tableData,
@@ -219,8 +333,98 @@
  },
  handleSelectionChangeFunc: (selection: any) => {
    selectionList.value = selection;
  },
  getBeginListFunc:()=>{
    queryParams.value.type = 1;
  }
})
const handleConfirm = (row: any) => {
  ElMessageBox.confirm("是否对调度单号" + row.dispatchNo + "的应付方案进行确认 ?", '系统提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(() => {
    return confirmFinance(row.id);
  }).then(() => {
    onLoad(page.value);
    ElMessage({
      message: "操作成功!",
      type: 'success'
    })
  });
}
const handleCancel = (row: any) => {
  ElMessageBox.confirm("是否对调度单号" + row.dispatchNo + "的应付方案进行作废?", '系统提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(() => {
    return cancelFinance(row.id);
  }).then(() => {
    onLoad(page.value);
    ElMessage({
      message: "操作成功!",
      type: 'success'
    })
  });
}
const handleAddFinanceDetail = (row:any) => {
  listTmsFinanceDetail({financeId:row.id,pageNum:1,pageSize: 9999}).then(res=>{
    boxTableData.value = res.rows || [];
    pageF.title = '费用明细';
    pageF.open = true;
    form.value = row;
  })
}
const rowDetailUpdate = (row:any,index:any,done:any, loading:any) => {
  updateTmsFinanceDetail( row).then(res=>{
    ElMessage({
      message: "修改成功!",
      type: 'success'
    })
    handleAddFinanceDetail(res.data);
    onLoad(page.value);
    done();
  }).catch(()=>{
    loading()
  })
}
const rowDetailSave = (row:any, done:any, loading:any) => {
  row.financeId = form.value.id;
  addTmsFinanceDetail({...row,dispatchOrderId:form.value.dispatchId,
    type: form.value.type,financeType:form.value.type
  }).then(res=>{
    ElMessage({
      message: "新增成功!",
      type: 'success'
    })
    handleAddFinanceDetail(res.data);
    onLoad(page.value);
    done();
  }).catch(()=>{
    loading()
  })
}
const handleCancelDetail = (row: any) => {
  ElMessageBox.confirm("是否作废掉 " + row.$feeType + "确定 ?", '系统提示', {
    confirmButtonText: '确定',
    cancelButtonText: '取消',
    type: 'warning'
  }).then(() => {
    return cancelFinanceDetail(row.id);
  }).then(() => {
    handleAddFinanceDetail(form.value);
    onLoad(page.value);
    ElMessage({
      message: "操作成功!",
      type: 'success'
    })
  });
}
</script>