广丰卷烟厂数采质量分析系统
baoshiwei
4 小时以前 e97b55310155a2dd691bd698a10295a4d867f60c
ruoyi-plus-soybean/src/views/qm/judge/modules/judge-operate-drawer.vue
@@ -1,10 +1,11 @@
<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';
@@ -53,6 +54,7 @@
];
const stdOptions = ref<SelectOption[]>([]);
const matOptions = ref<SelectOption[]>([]);
type Model = Api.Qm.JudgeOperateParams;
@@ -102,6 +104,20 @@
  }
}
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();
@@ -147,20 +163,39 @@
  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>
@@ -172,15 +207,17 @@
        <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>