This commit is contained in:
2026-07-27 17:19:36 +08:00
parent e50d1b8fda
commit 1c7532e0de
132 changed files with 7066 additions and 1241 deletions

View File

@@ -63,8 +63,9 @@
<el-autocomplete
v-model="form.vehicleNo"
:fetch-suggestions="fetchVehicleOptions"
:disabled="boxType === 'view'"
clearable
placeholder="输入车牌号/船号查询选择"
:placeholder="vehicleNoPlaceholder"
value-key="value"
class="other-expense-record-page__input"
/>
@@ -72,9 +73,15 @@
<template #attachments="{ row }">
<span>{{ formatAttachments(row.attachments) }}</span>
</template>
<template #attachmentsForm>
<vehicle-attachment-upload v-model="form.attachments" :readonly="boxType === 'view'" />
</template>
<template #attachments-form>
<vehicle-attachment-upload v-model="form.attachments" :readonly="boxType === 'view'" />
</template>
</avue-crud>
<el-dialog title="其他费用记录数据导入" append-to-body v-model="excelBox" width="555px">
<avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
<avue-form :option="excelOption" v-model="excelForm">
<template #excelTemplate>
<el-button type="primary" @click="handleTemplate">
点击下载<i class="el-icon-download el-icon--right"></i>
@@ -92,6 +99,7 @@ import { getList as getShipList } from '@/api/transportCapacity/transport-ship';
import { getDeptTree } from '@/api/system/dept';
import { exportBlob } from '@/api/common';
import { downloadXls } from '@/utils/util';
import { openImportDialog } from '@/utils/import-excel';
import { getToken } from '@/utils/auth';
import { mapGetters } from 'vuex';
import { excelOption, option } from '@/option/vehicle/other-expense-record';
@@ -106,6 +114,7 @@ export default {
loading: true,
excelBox: false,
excelForm: {},
isDetailLoading: false,
option,
excelOption,
page: {
@@ -115,6 +124,7 @@ export default {
total: 0,
},
selectionList: [],
boxType: '',
data: [],
};
},
@@ -135,6 +145,9 @@ export default {
editBtn: this.hasPermission('other_expense_record_edit'),
};
},
vehicleNoPlaceholder() {
return this.form.vehicleType === '船舶' ? '输入船号模糊查询选择' : '输入车牌号模糊查询选择';
},
ids() {
const ids = [];
this.selectionList.forEach(ele => {
@@ -145,8 +158,8 @@ export default {
},
watch: {
'form.vehicleType': {
handler() {
this.updateVehicleType();
handler(value, oldValue) {
this.updateVehicleType(value || '车辆', oldValue);
},
immediate: true,
},
@@ -161,8 +174,11 @@ export default {
column.dicData = res.data.data;
});
},
updateVehicleType() {
if (!this.form.id && this.form.vehicleNo) {
updateVehicleType(vehicleType, oldValue) {
const vehicleNoColumn = this.findColumn(this.option.column, 'vehicleNo');
vehicleNoColumn.placeholder =
vehicleType === '船舶' ? '输入船号模糊查询选择' : '输入车牌号模糊查询选择';
if (!this.isDetailLoading && oldValue && vehicleType !== oldValue && this.form.vehicleNo) {
this.form.vehicleNo = '';
}
},
@@ -223,7 +239,10 @@ export default {
values.vehicleType = values.vehicleType || '车辆';
values.dataSource = values.dataSource || '手工录入';
if (values.vehicleNo) {
values.vehicleNo = values.vehicleType === '船舶' ? values.vehicleNo.trim() : values.vehicleNo.trim().toUpperCase();
values.vehicleNo =
values.vehicleType === '船舶'
? values.vehicleNo.trim()
: values.vehicleNo.trim().toUpperCase();
}
values.attachments = this.stringifyAttachments(values.attachments);
return values;
@@ -320,19 +339,28 @@ export default {
});
},
beforeOpen(done, type) {
this.boxType = type;
if (type === 'add') {
this.form = {
vehicleType: '车辆',
expenseDate: this.$dayjs().format('YYYY-MM-DD'),
dataSource: '手工录入',
};
this.updateVehicleType('车辆');
}
if (['edit', 'view'].includes(type)) {
getDetail(this.form.id).then(res => {
const detail = res.data.data;
detail.attachments = this.parseAttachments(detail.attachments);
this.form = detail;
});
this.isDetailLoading = true;
getDetail(this.form.id)
.then(res => {
const detail = res.data.data;
detail.attachments = this.parseAttachments(detail.attachments);
detail.vehicleType = detail.vehicleType || '车辆';
this.form = detail;
this.updateVehicleType(detail.vehicleType);
})
.finally(() => {
this.isDetailLoading = false;
});
}
done();
},
@@ -386,12 +414,7 @@ export default {
});
},
handleImport() {
this.excelBox = true;
},
uploadAfter(res, done) {
this.excelBox = false;
this.onLoad(this.page);
done();
openImportDialog(this, '其他费用记录');
},
handleExport() {
this.$confirm('是否导出其他费用记录数据?', '提示', {
@@ -400,9 +423,15 @@ export default {
type: 'warning',
}).then(() => {
NProgress.start();
exportBlob('/blade-transport/other-expense-record/export-other-expense-record', this.buildExportParams())
exportBlob(
'/blade-transport/other-expense-record/export-other-expense-record',
this.buildExportParams()
)
.then(res => {
downloadXls(res.data, `其他费用记录${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx`);
downloadXls(
res.data,
`其他费用记录${this.$dayjs().format('YYYY-MM-DD HH:mm:ss')}.xlsx`
);
})
.finally(() => {
NProgress.done();
@@ -417,11 +446,13 @@ export default {
};
},
handleTemplate() {
exportBlob(`/blade-transport/other-expense-record/export-template?${this.website.tokenHeader}=${getToken()}`).then(
res => {
downloadXls(res.data, '其他费用记录模板.xlsx');
}
);
exportBlob(
`/blade-transport/other-expense-record/export-template?${
this.website.tokenHeader
}=${getToken()}`
).then(res => {
downloadXls(res.data, '其他费用记录模板.xlsx');
});
},
},
};