| | |
| | | </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" |
| | |
| | | </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> |
| | |
| | | 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"; |
| | |
| | | const financeTableOption = ref({ |
| | | menu: false, |
| | | addBtn: false, |
| | | header: true, |
| | | header: true, |
| | | selection: true, |
| | | title: '历史垫付费用', |
| | | column: { |
| | |
| | | label: '应付币制', |
| | | display: true, |
| | | }, |
| | | status: { |
| | | status: { |
| | | label: '状态', |
| | | display: true, |
| | | type: 'select', dicUrl: '/system/dict/data/type/sys_cancel_word', dataType: 'string', |
| | |
| | | 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; |
| | | }, |
| | | |
| | | }) |
| | |
| | | ElMessage.warning('请选择要作废的费用明细'); |
| | | return; |
| | | } |
| | | |
| | | |
| | | ElMessageBox.confirm(`确认要作废选中的 ${boxSelectionList.value.length} 条费用明细吗?`, '警告', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | |
| | | // 从 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(() => { |