old mode 100644
new mode 100755
| | |
| | | <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'; |
| | | |
| | |
| | | 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> = { |
| | |
| | | |
| | | 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() { |
| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | 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> |