<script setup lang="ts">
|
import { computed, ref, watch } from 'vue';
|
import { jsonClone } from '@sa/utils';
|
import { fetchCreateBatch, fetchUpdateBatch } from '@/service/api/qm/batch';
|
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
|
import { $t } from '@/locales';
|
|
defineOptions({
|
name: 'BatchOperateDrawer'
|
});
|
|
interface Props {
|
/** the type of operation */
|
operateType: NaiveUI.TableOperateType;
|
/** the edit row data */
|
rowData?: Api.Qm.Batch | null;
|
}
|
|
const props = defineProps<Props>();
|
|
interface Emits {
|
(e: 'submitted'): void;
|
}
|
|
const emit = defineEmits<Emits>();
|
|
const visible = defineModel<boolean>('visible', {
|
default: false
|
});
|
|
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' }
|
];
|
|
// 反馈MES选项:0-未上传mes 1-已上传 3-从MES下载
|
const flagOptions = [
|
{ label: '未上传mes', value: '0' },
|
{ label: '已上传', value: '1' },
|
{ label: '从MES下载', value: '3' }
|
];
|
|
// 类别选项:0-成品 1-辅材
|
const categoryOptions = [
|
{ label: '成品', value: '0' },
|
{ label: '辅材', value: '1' }
|
];
|
|
const title = computed(() => {
|
const titles: Record<NaiveUI.TableOperateType, string> = {
|
add: '新增检验批次',
|
edit: '编辑检验批次'
|
};
|
return titles[props.operateType];
|
});
|
|
type Model = Api.Qm.BatchOperateParams;
|
|
const model = ref<Model>(createDefaultModel());
|
|
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: ''
|
};
|
}
|
|
type RuleKey = Extract<keyof Model, 'id'>;
|
|
const rules: Record<RuleKey, App.Global.FormRule> = {
|
id: createRequiredRule('编码不能为空')
|
};
|
|
function handleUpdateModelWhenEdit() {
|
model.value = createDefaultModel();
|
|
if (props.operateType === 'edit' && props.rowData) {
|
Object.assign(model.value, jsonClone(props.rowData));
|
}
|
}
|
|
function closeDrawer() {
|
visible.value = false;
|
}
|
|
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;
|
|
// 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
|
});
|
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
|
});
|
if (error) return;
|
}
|
|
window.$message?.success($t('common.updateSuccess'));
|
closeDrawer();
|
emit('submitted');
|
}
|
|
watch(visible, () => {
|
if (visible.value) {
|
handleUpdateModelWhenEdit();
|
restoreValidation();
|
}
|
});
|
</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="请输入机台代码" />
|
</NFormItem>
|
<NFormItem label="牌号" path="matCode">
|
<NInput v-model:value="model.matCode" placeholder="请输入牌号" />
|
</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"
|
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
|
/>
|
</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>
|
<NFormItem label="到货单位" path="unit">
|
<NInput v-model:value="model.unit" 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>
|
<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>
|
</NForm>
|
<template #footer>
|
<NSpace :size="16">
|
<NButton @click="closeDrawer">{{ $t('common.cancel') }}</NButton>
|
<NButton type="primary" @click="handleSubmit">{{ $t('common.confirm') }}</NButton>
|
</NSpace>
|
</template>
|
</NDrawerContent>
|
</NDrawer>
|
</template>
|
|
<style scoped></style>
|