@@ -79,6 +79,13 @@
|
||||
/>
|
||||
</el-select>
|
||||
</template>
|
||||
<template #kingdeeCompanyCode-form>
|
||||
<el-input
|
||||
v-model="form.kingdeeCompanyCode"
|
||||
disabled
|
||||
placeholder="关联组织中配置的平台公司金蝶代码"
|
||||
/>
|
||||
</template>
|
||||
</avue-crud>
|
||||
</basic-container>
|
||||
</template>
|
||||
@@ -185,8 +192,11 @@ export default {
|
||||
prop: 'kingdeeCompanyCode',
|
||||
minWidth: 140,
|
||||
span: 12,
|
||||
maxlength: 64,
|
||||
rules: [{ required: true, message: '请输入金蝶公司代码', trigger: 'blur' }],
|
||||
formslot: true,
|
||||
addDisplay: true,
|
||||
editDisplay: true,
|
||||
// 列表展示,维护入口在组织管理的平台公司
|
||||
hide: false,
|
||||
},
|
||||
{
|
||||
label: '初始流水号',
|
||||
@@ -197,6 +207,7 @@ export default {
|
||||
minRows: 1,
|
||||
maxRows: 999,
|
||||
controls: false,
|
||||
clearable: true,
|
||||
slot: true,
|
||||
placeholder: '如果系统已有相同流水号,则跳过这个流水号',
|
||||
},
|
||||
@@ -250,6 +261,14 @@ export default {
|
||||
};
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// Avue number 清空后可能回写成 -1,统一清成空,避免未填却落库 -1
|
||||
'form.initialSerial'(value) {
|
||||
if (value === -1 || value === '-1') {
|
||||
this.form.initialSerial = undefined;
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.loadSelectOptions();
|
||||
},
|
||||
@@ -270,65 +289,94 @@ export default {
|
||||
return (list || []).map(item => ({
|
||||
label: item.deptName || item.fullName || String(item.id),
|
||||
value: String(item.id),
|
||||
kingdeeDeptCode: item.kingdeeDeptCode || '',
|
||||
}));
|
||||
},
|
||||
formatSerial(value) {
|
||||
if (value === null || value === undefined || value === '') return '-';
|
||||
// Avue number 空值常落成 -1,历史脏数据也按空展示
|
||||
if (value === null || value === undefined || value === '' || value === -1 || value === '-1') {
|
||||
return '';
|
||||
}
|
||||
const number = Number(value);
|
||||
if (!Number.isInteger(number) || number < 1) return String(value);
|
||||
if (!Number.isInteger(number) || number < 1) return '';
|
||||
return String(number).padStart(3, '0');
|
||||
},
|
||||
/** 初始流水号空值归一:未填 / -1 都按空处理,禁止自动落库 -1 */
|
||||
normalizeInitialSerial(value) {
|
||||
if (value === '' || value === undefined || value === null || value === -1 || value === '-1') {
|
||||
return null;
|
||||
}
|
||||
const number = Number(value);
|
||||
return Number.isFinite(number) ? number : null;
|
||||
},
|
||||
handlePlatformCompanyChange(value) {
|
||||
const matched = this.platformCompanyOptions.find(item => String(item.value) === String(value));
|
||||
this.form.platformCompanyName = matched ? matched.label : '';
|
||||
// 只读回填组织中平台公司的金蝶公司代码
|
||||
this.form.kingdeeCompanyCode = matched ? matched.kingdeeDeptCode || '' : '';
|
||||
},
|
||||
handleBusinessDeptChange(value) {
|
||||
const matched = this.businessDeptOptions.find(item => String(item.value) === String(value));
|
||||
this.form.businessDeptName = matched ? matched.label : '';
|
||||
},
|
||||
beforeOpen(done, type) {
|
||||
this.loadSelectOptions();
|
||||
const loadOptions = Promise.all([getPlatformCompanySelect(), getBusinessDeptSelect()]).then(
|
||||
([platformRes, businessRes]) => {
|
||||
this.platformCompanyOptions = this.normalizeDeptOptions(platformRes?.data?.data);
|
||||
this.businessDeptOptions = this.normalizeDeptOptions(businessRes?.data?.data);
|
||||
const platformColumn = this.findColumn(this.option.column, 'platformCompanyId');
|
||||
if (platformColumn) platformColumn.dicData = this.platformCompanyOptions;
|
||||
const businessColumn = this.findColumn(this.option.column, 'businessDeptId');
|
||||
if (businessColumn) businessColumn.dicData = this.businessDeptOptions;
|
||||
}
|
||||
);
|
||||
if (['edit', 'view'].includes(type) && this.form.id) {
|
||||
getDetail(this.form.id).then(res => {
|
||||
const detail = res.data?.data || {};
|
||||
Promise.all([loadOptions, getDetail(this.form.id)]).then(([, detailRes]) => {
|
||||
const detail = detailRes.data?.data || {};
|
||||
const platformCompanyId = detail.platformCompanyId ? String(detail.platformCompanyId) : '';
|
||||
const platformMatched = this.platformCompanyOptions.find(
|
||||
item => String(item.value) === platformCompanyId
|
||||
);
|
||||
this.form = {
|
||||
...detail,
|
||||
platformCompanyId: detail.platformCompanyId ? String(detail.platformCompanyId) : '',
|
||||
platformCompanyId,
|
||||
businessDeptId: detail.businessDeptId ? String(detail.businessDeptId) : '',
|
||||
// 展示以组织当前配置为准,避免配置表镜像滞后
|
||||
kingdeeCompanyCode: platformMatched?.kingdeeDeptCode || detail.kingdeeCompanyCode || '',
|
||||
// 历史 -1 / 无效值在表单中显示为空,避免 Avue number 回显 -1
|
||||
initialSerial: this.normalizeInitialSerial(detail.initialSerial) ?? undefined,
|
||||
};
|
||||
done();
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (type === 'add') {
|
||||
this.form = {
|
||||
platformCompanyId: '',
|
||||
platformCompanyName: '',
|
||||
businessDeptId: '',
|
||||
businessDeptName: '',
|
||||
contractCodePrefix: '',
|
||||
initialSerial: undefined,
|
||||
kingdeeCompanyCode: '',
|
||||
kingdeeDeptCode: '',
|
||||
remark: '',
|
||||
};
|
||||
}
|
||||
done();
|
||||
loadOptions.finally(() => {
|
||||
if (type === 'add') {
|
||||
this.form = {
|
||||
platformCompanyId: '',
|
||||
platformCompanyName: '',
|
||||
businessDeptId: '',
|
||||
businessDeptName: '',
|
||||
contractCodePrefix: '',
|
||||
initialSerial: undefined,
|
||||
kingdeeCompanyCode: '',
|
||||
kingdeeDeptCode: '',
|
||||
remark: '',
|
||||
};
|
||||
}
|
||||
done();
|
||||
});
|
||||
},
|
||||
normalizeSubmitRow(row) {
|
||||
const initialSerial =
|
||||
row.initialSerial === '' || row.initialSerial === undefined || row.initialSerial === null
|
||||
? null
|
||||
: Number(row.initialSerial);
|
||||
return {
|
||||
...row,
|
||||
platformCompanyId: row.platformCompanyId || null,
|
||||
businessDeptId: row.businessDeptId || null,
|
||||
contractCodePrefix: String(row.contractCodePrefix || '').trim(),
|
||||
kingdeeCompanyCode: String(row.kingdeeCompanyCode || '').trim(),
|
||||
// 金蝶公司代码由后端按平台公司组织配置覆盖,前端仅展示
|
||||
kingdeeDeptCode: String(row.kingdeeDeptCode || '').trim(),
|
||||
remark: String(row.remark || '').trim(),
|
||||
initialSerial: Number.isFinite(initialSerial) ? initialSerial : null,
|
||||
initialSerial: this.normalizeInitialSerial(row.initialSerial),
|
||||
};
|
||||
},
|
||||
rowSave(row, done, loading) {
|
||||
|
||||
Reference in New Issue
Block a user