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('isEnabled')" v-model="columns.isEnabled.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('purchaseLink')" v-model="columns.purchaseLink.visible" label="采购链接" />
|
||||
<el-checkbox v-if="hasColPermission('warningStatus')" v-model="columns.warningStatus.visible" label="预警状态" />
|
||||
@ -350,6 +351,15 @@
|
||||
</el-tag>
|
||||
</template>
|
||||
</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">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.referencePrice != null" class="money-text">{{ scope.row.referencePrice?.toFixed(2) }}</span>
|
||||
@ -774,6 +784,7 @@ import {
|
||||
exportAssetStatistics,
|
||||
batchSetWarning,
|
||||
batchSetInspection,
|
||||
batchSetApprovalRequired,
|
||||
markWarningOrdered,
|
||||
getMaterialUnitsAPI,
|
||||
getOdooSummary
|
||||
@ -1058,7 +1069,8 @@ const columns = reactive({
|
||||
commonName: { visible: true }, category: { visible: true }, type: { visible: true },
|
||||
spec: { visible: true }, unit: { visible: true }, inventory: { 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 }
|
||||
});
|
||||
|
||||
@ -1069,7 +1081,9 @@ const permissionMap: Record<string, string> = {
|
||||
available: 'material_list:availableCount', files: 'material_list:files', isEnabled: 'material_list:isEnabled',
|
||||
// ★ 与后端读过滤(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',
|
||||
warningStatus: 'material_list:view_warning'
|
||||
};
|
||||
@ -1507,6 +1521,20 @@ const createPurchaseForMaterial = () => {
|
||||
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 = () => {
|
||||
form.value = JSON.parse(JSON.stringify(initForm));
|
||||
fileListImage.value = []; fileListManual.value = [];
|
||||
|
||||
Reference in New Issue
Block a user