From d1791f762791428af91467b8855de83d54f015f9 Mon Sep 17 00:00:00 2001
From: zhuguifei <312353457@qq.com>
Date: 星期五, 17 四月 2026 15:23:21 +0800
Subject: [PATCH] feat: 1.新增物料、物料类型、材料检验统计等表维护功能 2.完善判定依据-判断依据明细 3.新增判断依据、物料管理等字典翻译类 4.成品物料批次-原始数据维护页面
---
ruoyi-plus-soybean/src/views/qm/judge/modules/judge-operate-drawer.vue | 149 ++++++++++++++++++++++++++++++++-----------------
1 files changed, 98 insertions(+), 51 deletions(-)
diff --git a/ruoyi-plus-soybean/src/views/qm/judge/modules/judge-operate-drawer.vue b/ruoyi-plus-soybean/src/views/qm/judge/modules/judge-operate-drawer.vue
index 2eb4cbb..28bfabd 100644
--- a/ruoyi-plus-soybean/src/views/qm/judge/modules/judge-operate-drawer.vue
+++ b/ruoyi-plus-soybean/src/views/qm/judge/modules/judge-operate-drawer.vue
@@ -1,10 +1,11 @@
<script setup lang="ts">
-import { computed, ref, watch, onMounted } from 'vue';
-import { NSelect, SelectOption } from 'naive-ui';
+import { computed, ref, watch } from 'vue';
+import type { SelectOption } from 'naive-ui';
+import { NSelect } from 'naive-ui';
import { jsonClone } from '@sa/utils';
import { fetchCreateJudge, fetchUpdateJudge } from '@/service/api/qm/judge';
import { fetchGetStdList } from '@/service/api/qm/std';
-
+import { fetchGetMatList } from '@/service/api/md/mat';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
@@ -52,8 +53,8 @@
{ label: '杈呮枡', value: 1 }
];
-
const stdOptions = ref<SelectOption[]>([]);
+const matOptions = ref<SelectOption[]>([]);
type Model = Api.Qm.JudgeOperateParams;
@@ -61,27 +62,23 @@
function createDefaultModel(): Model {
return {
- matCode: '',
- matName: '',
- status: null,
- stdCod: '',
- cdate: null,
- oper: '',
- des: '',
- category: null,
- typeCode: '',
- typeName: '',
- judgeName: ''
+ matCode: '',
+ matName: '',
+ status: null,
+ stdCod: '',
+ cdate: null,
+ oper: '',
+ des: '',
+ category: null,
+ typeCode: '',
+ typeName: '',
+ judgeName: ''
};
}
-type RuleKey = Extract<
- keyof Model,
- | 'id'
->;
+type RuleKey = Extract<keyof Model, 'id'>;
-const rules: Record<RuleKey, App.Global.FormRule> = {
-};
+const rules: Record<RuleKey, App.Global.FormRule> = {};
function handleUpdateModelWhenEdit() {
model.value = createDefaultModel();
@@ -96,14 +93,28 @@
}
async function fetchStdOptions() {
- const response = await fetchGetStdList({ category: model.value.category });
+ const response = await fetchGetStdList({ category: model.value.category });
const stdListData = response.data?.rows || [];
if (stdListData.length > 0) {
stdOptions.value = stdListData.map((item: Api.Qm.Std) => ({
- label: item.stdName + item.stdCode,
- value: String(item.id)
- }));
+ label: item.stdName + item.stdCode,
+ value: String(item.id)
+ }));
+ }
+}
+
+async function fetchMatOptions() {
+ if (model.value.category === 1) {
+ matOptions.value = [];
+ return;
+ }
+ const { data } = await fetchGetMatList({ tid: 1, pageSize: 1000 });
+ if (data) {
+ matOptions.value = data.rows.map(item => ({
+ label: item.name,
+ value: item.code
+ }));
}
}
@@ -114,12 +125,36 @@
// request
if (props.operateType === 'add') {
- const { error } = await fetchCreateJudge({ matCode, matName, status, stdCod, cdate, oper, des, category, typeCode, typeName, judgeName });
+ const { error } = await fetchCreateJudge({
+ matCode,
+ matName,
+ status,
+ stdCod,
+ cdate,
+ oper,
+ des,
+ category,
+ typeCode,
+ typeName,
+ judgeName
+ });
if (error) return;
}
if (props.operateType === 'edit') {
- const { error } = await fetchUpdateJudge({ matCode, matName, status, stdCod, cdate, oper, des, category, typeCode, typeName, judgeName });
+ const { error } = await fetchUpdateJudge({
+ matCode,
+ matName,
+ status,
+ stdCod,
+ cdate,
+ oper,
+ des,
+ category,
+ typeCode,
+ typeName,
+ judgeName
+ });
if (error) return;
}
@@ -128,19 +163,41 @@
emit('submitted');
}
-watch(visible, () => {
+watch(visible, async () => {
if (visible.value) {
handleUpdateModelWhenEdit();
restoreValidation();
- // Fetch stdOptions when the drawer becomes visible
- fetchStdOptions();
+ await fetchStdOptions();
+ await fetchMatOptions();
}
});
-watch(() => model.value.category, () => {
- fetchStdOptions();
-});
+watch(
+ () => model.value.category,
+ async () => {
+ fetchStdOptions();
+ model.value.matName = '';
+ model.value.matCode = '';
+ await fetchMatOptions();
+ }
+);
+
+watch(
+ () => model.value.matCode,
+ val => {
+ if (val) {
+ const selectedOption = matOptions.value.find(opt => opt.value === val);
+ if (selectedOption && typeof selectedOption.label === 'string') {
+ const name = selectedOption.label as string;
+ model.value.matName = name;
+ model.value.judgeName = name;
+ }
+ } else {
+ model.value.matName = '';
+ }
+ }
+);
</script>
<template>
@@ -150,32 +207,22 @@
<NFormItem label="鍒ゅ畾鍚嶇О" path="judgeName">
<NInput v-model:value="model.judgeName" placeholder="璇疯緭鍏ュ垽瀹氬悕绉�" />
</NFormItem>
- <NFormItem label="鐗╂枡鐗屽彿浠g爜" path="matCode">
- <NInput v-model:value="model.matCode" placeholder="璇疯緭鍏ョ墿鏂欑墝鍙蜂唬鐮�" />
+ <NFormItem label="鐗╂枡绫诲瀷" path="category">
+ <NSelect v-model:value="model.category" :options="categoryOptions" placeholder="璇烽�夋嫨鐗╂枡绫诲瀷" />
</NFormItem>
<NFormItem label="鐗╂枡鐗屽彿" path="matName">
- <NInput v-model:value="model.matName" placeholder="璇疯緭鍏ョ墿鏂欑墝鍙�" />
- </NFormItem>
- <NFormItem label="鐗╂枡绫诲瀷" path="category">
<NSelect
- v-model:value="model.category"
- :options="categoryOptions"
- placeholder="璇烽�夋嫨鐗╂枡绫诲瀷"
+ v-model:value="model.matCode"
+ :options="matOptions"
+ placeholder="璇烽�夋嫨鐗╂枡鐗屽彿"
+ :disabled="model.category === 1"
/>
</NFormItem>
<NFormItem label="鐘舵��" path="status">
- <NSelect
- v-model:value="model.status"
- :options="statusOptions"
- placeholder="璇烽�夋嫨鐘舵��"
- />
+ <NSelect v-model:value="model.status" :options="statusOptions" placeholder="璇烽�夋嫨鐘舵��" />
</NFormItem>
<NFormItem label="鍒ゅ畾瑙勭▼" path="stdCod">
- <NSelect
- v-model:value="model.stdCod"
- :options="stdOptions"
- placeholder="璇烽�夋嫨鍒ゅ畾瑙勭▼"
- />
+ <NSelect v-model:value="model.stdCod" :options="stdOptions" placeholder="璇烽�夋嫨鍒ゅ畾瑙勭▼" />
</NFormItem>
<NFormItem label="鍒涘缓鏃堕棿" path="cdate">
<NDatePicker
--
Gitblit v1.9.3