广丰卷烟厂数采质量分析系统
baoshiwei
3 小时以前 e97b55310155a2dd691bd698a10295a4d867f60c
ruoyi-plus-soybean/src/views/qm/batch/modules/batch-operate-drawer.vue
@@ -1,7 +1,9 @@
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
import { computed, onMounted, ref, watch } from 'vue';
import { jsonClone } from '@sa/utils';
import { fetchCreateBatch, fetchUpdateBatch } from '@/service/api/qm/batch';
import { fetchGetMatList } from '@/service/api/md/mat';
import { fetchGetJudgeList } from '@/service/api/qm/judge';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
@@ -31,27 +33,41 @@
const { formRef, validate, restoreValidation } = useNaiveForm();
const { createRequiredRule } = useFormRules();
// 类型选项:A-制丝 B-成型 C-卷包 D-封箱 E-糖香料
const typOptions = [
  { label: '制丝', value: 'A' },
  { label: '成型', value: 'B' },
  { label: '卷包', value: 'C' },
  { label: '封箱', value: 'D' },
  { label: '糖香料', value: 'E' }
const matOptions = ref<CommonType.Option[]>([]);
const judgeOptions = ref<CommonType.Option[]>([]);
const stateOptions = [
  { label: '正常', value: '0' },
  { label: '停用', value: '1' }
];
// 反馈MES选项:0-未上传mes 1-已上传 3-从MES下载
const flagOptions = [
  { label: '未上传mes', value: '0' },
  { label: '已上传', value: '1' },
  { label: '从MES下载', value: '3' }
];
async function getMatOptions() {
  const { data, error } = await fetchGetMatList({ tid: '1' as any, pageSize: 1000 });
  if (!error) {
    matOptions.value = data.rows.map(item => ({
      label: item.name,
      value: item.code
    }));
  }
}
// 类别选项:0-成品 1-辅材
const categoryOptions = [
  { label: '成品', value: '0' },
  { label: '辅材', value: '1' }
];
async function getJudgeOptions(matCode?: string | null) {
  if (!matCode) {
    judgeOptions.value = [];
    return;
  }
  const params: Api.Qm.JudgeSearchParams = { category: 0, pageSize: 1000, matCode };
  const { data, error } = await fetchGetJudgeList(params);
  if (!error) {
    judgeOptions.value = data.rows.map(item => ({
      label: item.judgeName,
      value: String(item.id)
    })) as CommonType.Option[];
  }
}
onMounted(() => {
  getMatOptions();
});
const title = computed(() => {
  const titles: Record<NaiveUI.TableOperateType, string> = {
@@ -70,13 +86,13 @@
    id: '',
    batchCode: '',
    batchName: '',
    typ: '',
    typ: '0',
    eqpCode: '',
    matCode: '',
    matCode: null,
    judgeCode: '',
    batchDate: null,
    isflag: '',
    enabled: '',
    isflag: '0',
    enabled: '1',
    totalNum: null,
    results: '',
    approver: '',
@@ -86,19 +102,19 @@
    verName: '',
    verCode: '',
    archDate: '',
    flag: '',
    flag: '0',
    toMesDate: null,
    fromMesDate: null,
    deleted: null,
    deleted: 0,
    batchDes: '',
    category: '',
    category: '0',
    makeno: '',
    shifteqpno: '',
    boxno: '',
    pid: '',
    reviewer: '',
    rvcount: null,
    state: '',
    state: '0',
    reviewTime: null,
    auditTime: null,
    spec: '',
@@ -117,10 +133,11 @@
  };
}
type RuleKey = Extract<keyof Model, 'id'>;
type RuleKey = Extract<keyof Model, 'batchCode' | 'matCode'>;
const rules: Record<RuleKey, App.Global.FormRule> = {
  id: createRequiredRule('编码不能为空')
  batchCode: createRequiredRule('批次号不能为空'),
  matCode: createRequiredRule('牌号不能为空')
};
function handleUpdateModelWhenEdit() {
@@ -303,201 +320,54 @@
  if (visible.value) {
    handleUpdateModelWhenEdit();
    restoreValidation();
    getJudgeOptions(model.value.matCode);
  }
});
watch(
  () => model.value.matCode,
  newVal => {
    if (visible.value) {
      model.value.judgeCode = '';
      getJudgeOptions(newVal);
    }
  }
);
</script>
<template>
  <NDrawer v-model:show="visible" :title="title" display-directive="show" :width="800" class="max-w-90%">
    <NDrawerContent :title="title" :native-scrollbar="false" closable>
      <NForm ref="formRef" :model="model" :rules="rules">
        <NFormItem label="批次代码" path="batchCode">
          <NInput v-model:value="model.batchCode" placeholder="请输入批次代码" />
        </NFormItem>
        <NFormItem label="批次名称" path="batchName">
          <NInput v-model:value="model.batchName" placeholder="请输入批次名称" />
        </NFormItem>
        <NFormItem label="类型" path="typ">
          <NSelect v-model:value="model.typ" :options="typOptions" placeholder="请选择类型" clearable />
        </NFormItem>
        <NFormItem label="机台代码" path="eqpCode">
          <NInput v-model:value="model.eqpCode" placeholder="请输入机台代码" />
      <NForm ref="formRef" :model="model" :rules="rules" label-placement="left" :label-width="100">
        <NFormItem label="批次号" path="batchCode">
          <NInput v-model:value="model.batchCode" placeholder="请输入批次号" />
        </NFormItem>
        <NFormItem label="牌号" path="matCode">
          <NInput v-model:value="model.matCode" placeholder="请输入牌号" />
          <NSelect v-model:value="model.matCode" :options="matOptions" placeholder="请选择牌号" clearable filterable />
        </NFormItem>
        <NFormItem label="判定依据代码" path="judgeCode">
          <NInput v-model:value="model.judgeCode" placeholder="请输入判定依据代码" />
        </NFormItem>
        <NFormItem label="批次生成日期" path="batchDate">
          <NDatePicker
            v-model:formatted-value="model.batchDate"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
        <NFormItem label="判定依据" path="judgeCode">
          <NSelect
            v-model:value="model.judgeCode"
            :options="judgeOptions"
            placeholder="请选择判定依据"
            clearable
          />
        </NFormItem>
        <NFormItem label="使用标志" path="isflag">
          <NInput v-model:value="model.isflag" placeholder="请输入使用标志" />
        </NFormItem>
        <NFormItem label="启用标志" path="enabled">
          <NInput v-model:value="model.enabled" placeholder="请输入启用标志" />
        </NFormItem>
        <NFormItem label="到货总量" path="totalNum">
          <NInputNumber v-model:value="model.totalNum" placeholder="请输入到货总量" class="w-full" />
        </NFormItem>
        <NFormItem label="综合判定" path="results">
          <NInput v-model:value="model.results" placeholder="请输入综合判定" />
        </NFormItem>
        <NFormItem label="批准人" path="approver">
          <NInput v-model:value="model.approver" placeholder="请输入批准人" />
        </NFormItem>
        <NFormItem label="审核人" path="auditor">
          <NInput v-model:value="model.auditor" placeholder="请输入审核人" />
        </NFormItem>
        <NFormItem label="创建人" path="creater">
          <NInput v-model:value="model.creater" placeholder="请输入创建人" />
        </NFormItem>
        <NFormItem label="制表日期" path="tabDate">
          <NDatePicker
            v-model:formatted-value="model.tabDate"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            clearable
          />
        </NFormItem>
        <NFormItem label="版本名称" path="verName">
          <NInput v-model:value="model.verName" placeholder="请输入版本名称" />
        </NFormItem>
        <NFormItem label="版本编号" path="verCode">
          <NInput v-model:value="model.verCode" placeholder="请输入版本编号" />
        </NFormItem>
        <NFormItem label="保存期" path="archDate">
          <NInput v-model:value="model.archDate" placeholder="请输入保存期" />
        </NFormItem>
        <NFormItem label="反馈MES" path="flag">
          <NSelect v-model:value="model.flag" :options="flagOptions" placeholder="请选择反馈MES" clearable />
        </NFormItem>
        <NFormItem label="上传MES时间" path="toMesDate">
          <NDatePicker
            v-model:formatted-value="model.toMesDate"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            clearable
          />
        </NFormItem>
        <NFormItem label="从MES时间下载" path="fromMesDate">
          <NDatePicker
            v-model:formatted-value="model.fromMesDate"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            clearable
          />
        </NFormItem>
        <NFormItem label="删除标志" path="deleted">
          <NInputNumber v-model:value="model.deleted" placeholder="请输入删除标志" class="w-full" />
        </NFormItem>
        <NFormItem label="批次描述" path="batchDes">
          <NInput v-model:value="model.batchDes" placeholder="请输入批次描述" />
        </NFormItem>
        <NFormItem label="类别" path="category">
          <NSelect v-model:value="model.category" :options="categoryOptions" placeholder="请选择类别" clearable />
        </NFormItem>
        <NFormItem label="卷制工号" path="makeno">
          <NInput v-model:value="model.makeno" placeholder="请输入卷制工号" />
        </NFormItem>
        <NFormItem label="班次机号" path="shifteqpno">
          <NInput v-model:value="model.shifteqpno" placeholder="请输入班次机号" />
        </NFormItem>
        <NFormItem label="装箱号" path="boxno">
          <NInput v-model:value="model.boxno" placeholder="请输入装箱号" />
        </NFormItem>
        <NFormItem label="父批次号" path="pid">
          <NInput v-model:value="model.pid as any" placeholder="请输入父批次号" />
        </NFormItem>
        <NFormItem label="复核人" path="reviewer">
          <NInput v-model:value="model.reviewer" placeholder="请输入复核人" />
        </NFormItem>
        <NFormItem label="复检次数" path="rvcount">
          <NInputNumber v-model:value="model.rvcount" placeholder="请输入复检次数" class="w-full" />
        </NFormItem>
        <NFormItem label="批次状态" path="state">
          <NInput v-model:value="model.state" placeholder="请输入批次状态" />
        </NFormItem>
        <NFormItem label="复核日期" path="reviewTime">
          <NDatePicker
            v-model:formatted-value="model.reviewTime"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            clearable
          />
        </NFormItem>
        <NFormItem label="审核日期" path="auditTime">
          <NDatePicker
            v-model:formatted-value="model.auditTime"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            clearable
            filterable
          />
        </NFormItem>
        <NFormItem label="规格" path="spec">
          <NInput v-model:value="model.spec" placeholder="请输入规格" />
        </NFormItem>
        <NFormItem label="批准时间" path="approveTime">
          <NDatePicker
            v-model:formatted-value="model.approveTime"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            clearable
          />
        <NFormItem label="装箱号" path="boxno">
          <NInput v-model:value="model.boxno" placeholder="请输入装箱号" />
        </NFormItem>
        <NFormItem label="到货单位" path="unit">
          <NInput v-model:value="model.unit" placeholder="请输入到货单位" />
        <NFormItem label="班次机号" path="shifteqpno">
          <NInput v-model:value="model.shifteqpno" placeholder="请输入班次机号" />
        </NFormItem>
        <NFormItem label="到货日期" path="arrivalTime">
          <NDatePicker
            v-model:formatted-value="model.arrivalTime"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            clearable
          />
        <NFormItem label="描述" path="batchDes">
          <NInput v-model:value="model.batchDes" placeholder="请输入描述" />
        </NFormItem>
        <NFormItem label="存放地点" path="storagePlace">
          <NInput v-model:value="model.storagePlace" placeholder="请输入存放地点" />
        </NFormItem>
        <NFormItem label="检验员" path="checker">
          <NInput v-model:value="model.checker" placeholder="请输入检验员" />
        </NFormItem>
        <NFormItem label="接单日期" path="receiveTime">
          <NDatePicker
            v-model:formatted-value="model.receiveTime"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            clearable
          />
        </NFormItem>
        <NFormItem label="报检日期" path="inspTime">
          <NDatePicker
            v-model:formatted-value="model.inspTime"
            type="datetime"
            value-format="yyyy-MM-dd HH:mm:ss"
            clearable
          />
        </NFormItem>
        <NFormItem label="仓库保管员" path="storer">
          <NInput v-model:value="model.storer" placeholder="请输入仓库保管员" />
        </NFormItem>
        <NFormItem label="是否验证" path="isverify">
          <NInput v-model:value="model.isverify" placeholder="请输入是否验证" />
        </NFormItem>
        <NFormItem label="是否检验" path="ischk">
          <NInput v-model:value="model.ischk" placeholder="请输入是否检验" />
        </NFormItem>
        <NFormItem label="备用1" path="bak1">
          <NInput v-model:value="model.bak1" placeholder="请输入备用1" />
        </NFormItem>
        <NFormItem label="备用2" path="bak2">
          <NInput v-model:value="model.bak2" placeholder="请输入备用2" />
        <NFormItem label="状态" path="state">
          <NSelect v-model:value="model.state" :options="stateOptions" placeholder="请选择状态" clearable />
        </NFormItem>
      </NForm>
      <template #footer>