广丰卷烟厂数采质量分析系统
ruoyi-plus-soybean/src/views/qm/checkitem/modules/checkitem-operate-drawer.vue
old mode 100644 new mode 100755
@@ -1,7 +1,11 @@
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
import { jsonClone } from '@sa/utils';
import { fetchCreateCheckitem, fetchUpdateCheckitem } from '@/service/api/qm/checkitem';
import {
  fetchCreateCheckitem,
  fetchGetRid,
  fetchUpdateCheckitem
} from '@/service/api/qm/checkitem';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
@@ -14,6 +18,8 @@
  operateType: NaiveUI.TableOperateType;
  /** the edit row data */
  rowData?: Api.Qm.Checkitem | null;
  /** preset stdCode for add */
  stdCode?: string | null;
}
const props = defineProps<Props>();
@@ -39,9 +45,59 @@
  return titles[props.operateType];
});
const enableOptions = [
  { label: '启用', value: 1 },
  { label: '停用', value: 0 }
];
const categoryOptions = [
  { label: '成品', value: 0 },
  { label: '辅料', value: 1 }
];
const checkLevelOptions = [
  { label: 'A', value: 'A' },
  { label: 'B', value: 'B' },
  { label: 'C', value: 'C' },
  { label: 'D', value: 'D' }
];
const ismixOptions = [
  { label: '是', value: 1 },
  { label: '否', value: 0 }
];
const delOptions = [
  { label: '正常', value: 0 },
  { label: '删除', value: 1 }
];
type Model = Api.Qm.CheckitemOperateParams;
const model = ref<Model>(createDefaultModel());
const ridOptions = ref<{ label: string; value: string | number }[]>([]);
async function fetchRidOptions(searchText?: string) {
  const params: any = {};
  if (searchText) {
    params.itemName = searchText;
  }
  if (props.stdCode) {
    params.stdCode = props.stdCode;
  }
  const { data } = await fetchGetRid(params);
  if (data) {
    ridOptions.value = data;
  } else {
    ridOptions.value = [];
  }
}
function handleRidSelectSearch(query: string) {
  fetchRidOptions(query);
}
function createDefaultModel(): Model {
  return {
@@ -49,15 +105,15 @@
      itemCode: '',
      itemName: '',
      unit: '',
      enable: null,
      del: null,
      enable: 1,
      del: 0,
      itemDes: '',
      stdCode: '',
      instrumentDes: '',
      location: '',
      checkLevel: '',
      ismix: null,
      rid: '',
      rid: null,
      category: null,
      instrumentCode: '',
      score: null
@@ -73,11 +129,19 @@
  id: createRequiredRule('编码不能为空'),
};
function handleUpdateModelWhenEdit() {
async function handleUpdateModelWhenEdit() {
  model.value = createDefaultModel();
  ridOptions.value = []; // Clear options initially
  if (props.operateType === 'edit' && props.rowData) {
    Object.assign(model.value, jsonClone(props.rowData));
  }
  // Fetch options for rid
  await fetchRidOptions();
  if (props.operateType === 'add' && props.stdCode) {
    model.value.stdCode = props.stdCode;
  }
}
@@ -92,12 +156,14 @@
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreateCheckitem({ itemCode, itemName, unit, enable, del, itemDes, stdCode, instrumentDes, location, checkLevel, ismix, rid, category, instrumentCode, score });
    const payload = { itemCode, itemName, unit, enable, del, itemDes, stdCode, instrumentDes, location, checkLevel, ismix, rid, category, instrumentCode, score };
    const { error } = await fetchCreateCheckitem(payload);
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdateCheckitem({ id, itemCode, itemName, unit, enable, del, itemDes, stdCode, instrumentDes, location, checkLevel, ismix, rid, category, instrumentCode, score });
    const payload = { id, itemCode, itemName, unit, enable, del, itemDes, stdCode, instrumentDes, location, checkLevel, ismix, rid, category, instrumentCode, score };
    const { error } = await fetchUpdateCheckitem(payload);
    if (error) return;
  }
@@ -110,7 +176,6 @@
  if (visible.value) {
    handleUpdateModelWhenEdit();
    restoreValidation();
    getTreeList();
  }
});
</script>
@@ -129,40 +194,43 @@
          <NInput v-model:value="model.unit" placeholder="请输入单位" />
        </NFormItem>
        <NFormItem label="启用" path="enable">
          <NInput v-model:value="model.enable" placeholder="请输入启用" />
          <NSelect v-model:value="model.enable" :options="enableOptions" placeholder="请选择启用" clearable />
        </NFormItem>
        <NFormItem label="删除" path="del">
          <NInput v-model:value="model.del" placeholder="请输入删除" />
          <NSelect v-model:value="model.del" :options="delOptions" placeholder="请选择删除" clearable />
        </NFormItem>
        <NFormItem label="检验项描述" path="itemDes">
          <NInput v-model:value="model.itemDes" placeholder="请输入检验项描述" />
        </NFormItem>
        <NFormItem label="规程代码" path="stdCode">
          <NInput v-model:value="model.stdCode" placeholder="请输入规程代码" />
        </NFormItem>
        <NFormItem label="仪器描述" path="instrumentDes">
          <NInput v-model:value="model.instrumentDes" placeholder="请输入仪器描述" />
        </NFormItem>
        <NFormItem label="缺陷位置-外观用" path="location">
        <NFormItem label="缺陷位置" path="location">
          <NInput v-model:value="model.location" placeholder="请输入缺陷位置-外观用" />
        </NFormItem>
        <NFormItem label="分A,B,C,D四个级别" path="checkLevel">
          <NInput v-model:value="model.checkLevel" placeholder="请输入分A,B,C,D四个级别" />
        <NFormItem label="级别" path="checkLevel">
          <NSelect v-model:value="model.checkLevel" :options="checkLevelOptions" placeholder="请选择级别" clearable />
        </NFormItem>
        <NFormItem label="是否合成项" path="ismix">
          <NInput v-model:value="model.ismix" placeholder="请输入是否合成项" />
          <NSelect v-model:value="model.ismix" :options="ismixOptions" placeholder="请选择是否合成项" clearable />
        </NFormItem>
        <NFormItem label="关联项ID" path="rid">
          <NInput v-model:value="model.rid" placeholder="请输入关联项ID" />
        <NFormItem label="上级项" path="rid">
          <NSelect
            v-model:value="model.rid"
            :options="ridOptions"
            placeholder="请选择上级项"
            clearable
            filterable
            @search="handleRidSelectSearch"
            @focus="() => fetchRidOptions()"
          />
        </NFormItem>
        <NFormItem label="类别 0:成品 1辅料" path="category">
          <NInput v-model:value="model.category" placeholder="请输入类别 0:成品 1辅料" />
        </NFormItem>
        <NFormItem label="仪器编码" path="instrumentCode">
          <NInput v-model:value="model.instrumentCode" placeholder="请输入仪器编码" />
        <NFormItem label="类别" path="category">
          <NSelect v-model:value="model.category" :options="categoryOptions" placeholder="请选择类别" clearable />
        </NFormItem>
        <NFormItem label="分值" path="score">
          <NInput v-model:value="model.score" placeholder="请输入分值" />
          <NInputNumber v-model:value="model.score" placeholder="请输入分值" :precision="2" />
        </NFormItem>
      </NForm>
      <template #footer>