| | |
| | | <script setup lang="ts"> |
| | | import { computed, onMounted, ref, watch } from 'vue'; |
| | | 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'; |
| | | |
| | |
| | | ]; |
| | | |
| | | const stdOptions = ref<SelectOption[]>([]); |
| | | const matOptions = ref<SelectOption[]>([]); |
| | | |
| | | type Model = Api.Qm.JudgeOperateParams; |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | 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 |
| | | })); |
| | | } |
| | | } |
| | | |
| | | async function handleSubmit() { |
| | | await validate(); |
| | | |
| | |
| | | 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, |
| | | () => { |
| | | 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> |
| | |
| | | <NFormItem label="判定名称" path="judgeName"> |
| | | <NInput v-model:value="model.judgeName" placeholder="请输入判定名称" /> |
| | | </NFormItem> |
| | | <NFormItem label="物料牌号代码" path="matCode"> |
| | | <NInput v-model:value="model.matCode" 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="请选择物料类型" /> |
| | | </NFormItem> |
| | | <NFormItem label="物料牌号" path="matName"> |
| | | <NSelect |
| | | 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="请选择状态" /> |
| | | </NFormItem> |