Files
platforms/frontend/platform_admin/scripts/check-product-ownership-action.mjs

49 lines
1.7 KiB
JavaScript
Raw Normal View History

/**
* 功能检查智能气阀归属弹窗保留互斥选择和提交防御
* 版本v1.0.0
*/
import { readFile } from 'node:fs/promises';
import { fileURLToPath } from 'node:url';
const componentUrl = new URL(
'../src/views/resource/ResourceActionDialog.vue',
import.meta.url,
);
const source = await readFile(fileURLToPath(componentUrl), 'utf8');
const recordPageUrl = new URL(
'../src/views/resource/ResourceRecordPage.vue',
import.meta.url,
);
const recordPageSource = await readFile(fileURLToPath(recordPageUrl), 'utf8');
const requiredFragments = [
'@change-relation="changeRelation"',
'ownershipKeys.includes(field.key)',
'if (key !== field.key) form[key] = undefined',
"Message.warning('智能气阀只能选择一个当前归属')",
"payload[key] = String(form[key] ?? '')",
];
for (const fragment of requiredFragments) {
if (!source.includes(fragment)) {
throw new Error(`智能气阀归属互斥检查缺少实现:${fragment}`);
}
}
const createPageFragments = [
'@change-relation="changeRelation"',
"mode === 'create' && definition.name === 'product_info'",
'当前归属只能选择库房、气站、配送点或用户中的一个;选择新归属时会自动清空其他归属。',
"definition.value.name === 'product_info'",
'productOwnershipKeys.includes(field.key)',
'if (key !== field.key) form[key] = undefined',
'await relationLinkage.change(field, value)',
];
for (const fragment of createPageFragments) {
if (!recordPageSource.includes(fragment)) {
throw new Error(`智能气阀新建页归属互斥检查缺少实现:${fragment}`);
}
}
console.log('智能气阀归属互斥检查通过:新建页与专用弹窗均自动清空,提交时保留防御校验。');