广丰卷烟厂数采质量分析系统
baoshiwei
5 小时以前 e97b55310155a2dd691bd698a10295a4d867f60c
ruoyi-plus-soybean/src/views/qm/batch/modules/batch-operate-drawer.vue
old mode 100644 new mode 100755
@@ -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> = {
@@ -67,63 +83,61 @@
function createDefaultModel(): Model {
  return {
      id: '',
      batchCode: '',
      batchName: '',
      typ: '',
      eqpCode: '',
      matCode: '',
      judgeCode: '',
      batchDate: null,
      isflag: '',
      enabled: '',
      totalNum: null,
      results: '',
      approver: '',
      auditor: '',
      creater: '',
      tabDate: null,
      verName: '',
      verCode: '',
      archDate: '',
      flag: '',
      toMesDate: null,
      fromMesDate: null,
      deleted: null,
      batchDes: '',
      category: '',
      makeno: '',
      shifteqpno: '',
      boxno: '',
      pid: '',
      reviewer: '',
      rvcount: null,
      state: '',
      reviewTime: null,
      auditTime: null,
      spec: '',
      approveTime: null,
      unit: '',
      arrivalTime: null,
      storagePlace: '',
      checker: '',
      receiveTime: null,
      inspTime: null,
      storer: '',
      isverify: '',
      ischk: '',
      bak1: '',
      bak2: ''
    id: '',
    batchCode: '',
    batchName: '',
    typ: '0',
    eqpCode: '',
    matCode: null,
    judgeCode: '',
    batchDate: null,
    isflag: '0',
    enabled: '1',
    totalNum: null,
    results: '',
    approver: '',
    auditor: '',
    creater: '',
    tabDate: null,
    verName: '',
    verCode: '',
    archDate: '',
    flag: '0',
    toMesDate: null,
    fromMesDate: null,
    deleted: 0,
    batchDes: '',
    category: '0',
    makeno: '',
    shifteqpno: '',
    boxno: '',
    pid: '',
    reviewer: '',
    rvcount: null,
    state: '0',
    reviewTime: null,
    auditTime: null,
    spec: '',
    approveTime: null,
    unit: '',
    arrivalTime: null,
    storagePlace: '',
    checker: '',
    receiveTime: null,
    inspTime: null,
    storer: '',
    isverify: '',
    ischk: '',
    bak1: '',
    bak2: ''
  };
}
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() {
@@ -141,16 +155,159 @@
async function handleSubmit() {
  await validate();
  const { id, batchCode, batchName, typ, eqpCode, matCode, judgeCode, batchDate, isflag, enabled, totalNum, results, approver, auditor, creater, tabDate, verName, verCode, archDate, flag, toMesDate, fromMesDate, deleted, batchDes, category, makeno, shifteqpno, boxno, pid, reviewer, rvcount, state, reviewTime, auditTime, spec, approveTime, unit, arrivalTime, storagePlace, checker, receiveTime, inspTime, storer, isverify, ischk, bak1, bak2 } = model.value;
  const {
    id,
    batchCode,
    batchName,
    typ,
    eqpCode,
    matCode,
    judgeCode,
    batchDate,
    isflag,
    enabled,
    totalNum,
    results,
    approver,
    auditor,
    creater,
    tabDate,
    verName,
    verCode,
    archDate,
    flag,
    toMesDate,
    fromMesDate,
    deleted,
    batchDes,
    category,
    makeno,
    shifteqpno,
    boxno,
    pid,
    reviewer,
    rvcount,
    state,
    reviewTime,
    auditTime,
    spec,
    approveTime,
    unit,
    arrivalTime,
    storagePlace,
    checker,
    receiveTime,
    inspTime,
    storer,
    isverify,
    ischk,
    bak1,
    bak2
  } = model.value;
  // request
  if (props.operateType === 'add') {
    const { error } = await fetchCreateBatch({ batchCode, batchName, typ, eqpCode, matCode, judgeCode, batchDate, isflag, enabled, totalNum, results, approver, auditor, creater, tabDate, verName, verCode, archDate, flag, toMesDate, fromMesDate, deleted, batchDes, category, makeno, shifteqpno, boxno, pid, reviewer, rvcount, state, reviewTime, auditTime, spec, approveTime, unit, arrivalTime, storagePlace, checker, receiveTime, inspTime, storer, isverify, ischk, bak1, bak2 });
    const { error } = await fetchCreateBatch({
      batchCode,
      batchName,
      typ,
      eqpCode,
      matCode,
      judgeCode,
      batchDate,
      isflag,
      enabled,
      totalNum,
      results,
      approver,
      auditor,
      creater,
      tabDate,
      verName,
      verCode,
      archDate,
      flag,
      toMesDate,
      fromMesDate,
      deleted,
      batchDes,
      category,
      makeno,
      shifteqpno,
      boxno,
      pid,
      reviewer,
      rvcount,
      state,
      reviewTime,
      auditTime,
      spec,
      approveTime,
      unit,
      arrivalTime,
      storagePlace,
      checker,
      receiveTime,
      inspTime,
      storer,
      isverify,
      ischk,
      bak1,
      bak2
    });
    if (error) return;
  }
  if (props.operateType === 'edit') {
    const { error } = await fetchUpdateBatch({ id, batchCode, batchName, typ, eqpCode, matCode, judgeCode, batchDate, isflag, enabled, totalNum, results, approver, auditor, creater, tabDate, verName, verCode, archDate, flag, toMesDate, fromMesDate, deleted, batchDes, category, makeno, shifteqpno, boxno, pid, reviewer, rvcount, state, reviewTime, auditTime, spec, approveTime, unit, arrivalTime, storagePlace, checker, receiveTime, inspTime, storer, isverify, ischk, bak1, bak2 });
    const { error } = await fetchUpdateBatch({
      id,
      batchCode,
      batchName,
      typ,
      eqpCode,
      matCode,
      judgeCode,
      batchDate,
      isflag,
      enabled,
      totalNum,
      results,
      approver,
      auditor,
      creater,
      tabDate,
      verName,
      verCode,
      archDate,
      flag,
      toMesDate,
      fromMesDate,
      deleted,
      batchDes,
      category,
      makeno,
      shifteqpno,
      boxno,
      pid,
      reviewer,
      rvcount,
      state,
      reviewTime,
      auditTime,
      spec,
      approveTime,
      unit,
      arrivalTime,
      storagePlace,
      checker,
      receiveTime,
      inspTime,
      storer,
      isverify,
      ischk,
      bak1,
      bak2
    });
    if (error) return;
  }
@@ -163,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">
          <NInput v-model:value="model.totalNum" placeholder="请输入到货总量" />
        </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">
          <NInput v-model:value="model.deleted" placeholder="请输入删除标志" />
        </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" placeholder="请输入父批次号" />
        </NFormItem>
        <NFormItem label="复核人" path="reviewer">
          <NInput v-model:value="model.reviewer" placeholder="请输入复核人" />
        </NFormItem>
        <NFormItem label="复检次数" path="rvcount">
          <NInput v-model:value="model.rvcount" placeholder="请输入复检次数" />
        </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>