diff --git a/inventory-web/src/views/material/buyOdoo.vue b/inventory-web/src/views/material/buyOdoo.vue
index 1b39e49..c0e1b1c 100644
--- a/inventory-web/src/views/material/buyOdoo.vue
+++ b/inventory-web/src/views/material/buyOdoo.vue
@@ -200,6 +200,7 @@
+
@@ -350,6 +351,15 @@
+
+
+ toggleApprovalRequired(scope.row, val)"
+ />
+
+
{{ scope.row.referencePrice?.toFixed(2) }}
@@ -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 = {
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 = [];