feat(material): 基础信息(Odoo)补回「出库/借库需审批」列
buyOdoo.vue 是 list.vue 的手工副本。93f1497 / 4146f35 给 list.vue 加了
「出库/借库需审批」列,未同步到 Odoo 页 —— isApprovalRequired 在
list.vue 出现 9 次,在 buyOdoo.vue 为 0 次,该页既看不到也改不了这个开关。
补上表格列(带切换开关与操作权限守卫)、列显示开关、columns 与
permissionMap 条目、toggleApprovalRequired 函数及 batchSetApprovalRequired
接口引用。
This commit is contained in:
@ -200,6 +200,7 @@
|
|||||||
<el-checkbox v-if="hasColPermission('files')" v-model="columns.files.visible" label="资料" />
|
<el-checkbox v-if="hasColPermission('files')" v-model="columns.files.visible" label="资料" />
|
||||||
<el-checkbox v-if="hasColPermission('isEnabled')" v-model="columns.isEnabled.visible" label="状态" />
|
<el-checkbox v-if="hasColPermission('isEnabled')" v-model="columns.isEnabled.visible" label="状态" />
|
||||||
<el-checkbox v-if="hasColPermission('isInspectionRequired')" v-model="columns.isInspectionRequired.visible" label="强制质检" />
|
<el-checkbox v-if="hasColPermission('isInspectionRequired')" v-model="columns.isInspectionRequired.visible" label="强制质检" />
|
||||||
|
<el-checkbox v-if="hasColPermission('isApprovalRequired')" v-model="columns.isApprovalRequired.visible" label="出库/借库需审批" />
|
||||||
<el-checkbox v-if="hasColPermission('referencePrice')" v-model="columns.referencePrice.visible" label="参考价格" />
|
<el-checkbox v-if="hasColPermission('referencePrice')" v-model="columns.referencePrice.visible" label="参考价格" />
|
||||||
<el-checkbox v-if="hasColPermission('purchaseLink')" v-model="columns.purchaseLink.visible" label="采购链接" />
|
<el-checkbox v-if="hasColPermission('purchaseLink')" v-model="columns.purchaseLink.visible" label="采购链接" />
|
||||||
<el-checkbox v-if="hasColPermission('warningStatus')" v-model="columns.warningStatus.visible" label="预警状态" />
|
<el-checkbox v-if="hasColPermission('warningStatus')" v-model="columns.warningStatus.visible" label="预警状态" />
|
||||||
@ -350,6 +351,15 @@
|
|||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column v-if="columns.isApprovalRequired.visible && hasColPermission('isApprovalRequired')" label="出库/借库需审批" min-width="130" align="center">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-switch
|
||||||
|
:model-value="!!scope.row.isApprovalRequired"
|
||||||
|
:disabled="!userStore.hasPermission('material_list:isApprovalRequired')"
|
||||||
|
@change="(val: boolean) => toggleApprovalRequired(scope.row, val)"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column v-if="columns.referencePrice.visible && hasColPermission('referencePrice')" prop="referencePrice" label="参考价格" min-width="120" align="center" sortable="custom">
|
<el-table-column v-if="columns.referencePrice.visible && hasColPermission('referencePrice')" prop="referencePrice" label="参考价格" min-width="120" align="center" sortable="custom">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.referencePrice != null" class="money-text">{{ scope.row.referencePrice?.toFixed(2) }}</span>
|
<span v-if="scope.row.referencePrice != null" class="money-text">{{ scope.row.referencePrice?.toFixed(2) }}</span>
|
||||||
@ -774,6 +784,7 @@ import {
|
|||||||
exportAssetStatistics,
|
exportAssetStatistics,
|
||||||
batchSetWarning,
|
batchSetWarning,
|
||||||
batchSetInspection,
|
batchSetInspection,
|
||||||
|
batchSetApprovalRequired,
|
||||||
markWarningOrdered,
|
markWarningOrdered,
|
||||||
getMaterialUnitsAPI,
|
getMaterialUnitsAPI,
|
||||||
getOdooSummary
|
getOdooSummary
|
||||||
@ -1058,7 +1069,8 @@ const columns = reactive({
|
|||||||
commonName: { visible: true }, category: { visible: true }, type: { visible: true },
|
commonName: { visible: true }, category: { visible: true }, type: { visible: true },
|
||||||
spec: { visible: true }, unit: { visible: true }, inventory: { visible: true },
|
spec: { visible: true }, unit: { visible: true }, inventory: { visible: true },
|
||||||
available: { visible: true }, files: { visible: true }, isEnabled: { visible: true },
|
available: { visible: true }, files: { visible: true }, isEnabled: { visible: true },
|
||||||
isInspectionRequired: { visible: true }, referencePrice: { visible: true }, warningStatus: { visible: true },
|
isInspectionRequired: { visible: true }, isApprovalRequired: { visible: true },
|
||||||
|
referencePrice: { visible: true }, warningStatus: { visible: true },
|
||||||
purchaseLink: { visible: true }
|
purchaseLink: { visible: true }
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -1069,7 +1081,9 @@ const permissionMap: Record<string, string> = {
|
|||||||
available: 'material_list:availableCount', files: 'material_list:files', isEnabled: 'material_list:isEnabled',
|
available: 'material_list:availableCount', files: 'material_list:files', isEnabled: 'material_list:isEnabled',
|
||||||
// ★ 与后端读过滤(field_permissions.py)对齐;原先写 material_list:operation
|
// ★ 与后端读过滤(field_permissions.py)对齐;原先写 material_list:operation
|
||||||
// 会与后端口径不一致,渲染出一列全是「-」的空表头
|
// 会与后端口径不一致,渲染出一列全是「-」的空表头
|
||||||
isInspectionRequired: 'material_list:isInspectionRequired', referencePrice: 'material_list:referencePrice',
|
isInspectionRequired: 'material_list:isInspectionRequired',
|
||||||
|
isApprovalRequired: 'material_list:isApprovalRequired',
|
||||||
|
referencePrice: 'material_list:referencePrice',
|
||||||
purchaseLink: 'material_list:purchaseLink',
|
purchaseLink: 'material_list:purchaseLink',
|
||||||
warningStatus: 'material_list:view_warning'
|
warningStatus: 'material_list:view_warning'
|
||||||
};
|
};
|
||||||
@ -1507,6 +1521,20 @@ const createPurchaseForMaterial = () => {
|
|||||||
window.open(routeUrl.href, '_blank');
|
window.open(routeUrl.href, '_blank');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 列表内直接切换「出库/借库需审批」(与 list.vue 对齐)
|
||||||
|
const toggleApprovalRequired = async (row: any, val: boolean) => {
|
||||||
|
if (!row || !row.id) return;
|
||||||
|
const prev = !!row.isApprovalRequired;
|
||||||
|
row.isApprovalRequired = val; // 乐观更新
|
||||||
|
try {
|
||||||
|
await batchSetApprovalRequired({ ids: [row.id], isApprovalRequired: val });
|
||||||
|
ElMessage.success(val ? '已标记:该物料出库/借库需审批' : '已取消:该物料出库/借库免审批');
|
||||||
|
} catch (error: any) {
|
||||||
|
row.isApprovalRequired = prev;
|
||||||
|
ElMessage.error(error?.msg || '设置失败');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
form.value = JSON.parse(JSON.stringify(initForm));
|
form.value = JSON.parse(JSON.stringify(initForm));
|
||||||
fileListImage.value = []; fileListManual.value = [];
|
fileListImage.value = []; fileListManual.value = [];
|
||||||
|
|||||||
Reference in New Issue
Block a user