<script setup lang="ts">
|
import { computed, ref, watch } from 'vue';
|
import { fetchCreatePackerData, fetchUpdatePackerData } from '@/service/api/analy/packer-data';
|
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
|
import { $t } from '@/locales';
|
import { jsonClone } from '~/packages/utils';
|
|
defineOptions({
|
name: 'PackerDataOperateDrawer'
|
});
|
|
interface Props {
|
/** the type of operation */
|
operateType: NaiveUI.TableOperateType;
|
/** the edit row data */
|
rowData?: Api.Qa.PackerData | 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();
|
|
const title = computed(() => {
|
const titles: Record<NaiveUI.TableOperateType, string> = {
|
add: '新增包装机分析',
|
edit: '编辑包装机分析'
|
};
|
return titles[props.operateType];
|
});
|
|
type Model = Api.Qa.PackerDataOperateParams;
|
|
const model = ref<Model>(createDefaultModel());
|
|
function createDefaultModel(): Model {
|
return {
|
time: null,
|
key: '',
|
online: null,
|
qty: null,
|
badQty: null,
|
xiaohemoVal: null,
|
tiaohemoVal: null,
|
xiaohezhiVal: null,
|
tiaohezhiVal: null,
|
neichenzhiVal: null,
|
runTime: null,
|
stopTime: null,
|
stopTimes: null,
|
speed: null,
|
runStatus: null,
|
tsQty: null,
|
mainQty: null,
|
mainBadQty: null,
|
tbjQty: null,
|
tbjGdQty: null,
|
tbjBadQty: null,
|
pbjQty: null,
|
shift: null,
|
equNo: null
|
};
|
}
|
|
type RuleKey = Extract<keyof Model, 'time' | 'shift' | 'equNo'>;
|
|
const rules: Record<RuleKey, App.Global.FormRule> = {
|
time: createRequiredRule('时间不能为空'),
|
shift: createRequiredRule('班次不能为空'),
|
equNo: 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 {
|
time,
|
key,
|
online,
|
qty,
|
badQty,
|
xiaohemoVal,
|
tiaohemoVal,
|
xiaohezhiVal,
|
tiaohezhiVal,
|
neichenzhiVal,
|
runTime,
|
stopTime,
|
stopTimes,
|
speed,
|
runStatus,
|
tsQty,
|
mainQty,
|
mainBadQty,
|
tbjQty,
|
tbjGdQty,
|
tbjBadQty,
|
pbjQty,
|
shift,
|
equNo
|
} = model.value;
|
|
// request
|
if (props.operateType === 'add') {
|
const { error } = await fetchCreatePackerData({
|
time,
|
key,
|
online,
|
qty,
|
badQty,
|
xiaohemoVal,
|
tiaohemoVal,
|
xiaohezhiVal,
|
tiaohezhiVal,
|
neichenzhiVal,
|
runTime,
|
stopTime,
|
stopTimes,
|
speed,
|
runStatus,
|
tsQty,
|
mainQty,
|
mainBadQty,
|
tbjQty,
|
tbjGdQty,
|
tbjBadQty,
|
pbjQty,
|
shift,
|
equNo
|
});
|
if (error) return;
|
}
|
|
if (props.operateType === 'edit') {
|
const { error } = await fetchUpdatePackerData({
|
time,
|
key,
|
online,
|
qty,
|
badQty,
|
xiaohemoVal,
|
tiaohemoVal,
|
xiaohezhiVal,
|
tiaohezhiVal,
|
neichenzhiVal,
|
runTime,
|
stopTime,
|
stopTimes,
|
speed,
|
runStatus,
|
tsQty,
|
mainQty,
|
mainBadQty,
|
tbjQty,
|
tbjGdQty,
|
tbjBadQty,
|
pbjQty,
|
shift,
|
equNo
|
});
|
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="time">
|
<NDatePicker
|
v-model:formatted-value="model.time"
|
type="datetime"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
clearable
|
/>
|
</NFormItem>
|
<NFormItem label="key" path="key">
|
<NInput v-model:value="model.key" :rows="3" type="textarea" placeholder="请输入key" />
|
</NFormItem>
|
<NFormItem label="网络状态(0异常,1正常)" path="online">
|
<NInputNumber v-model:value="model.online" placeholder="请输入网络状态(0异常,1正常)" class="w-full" />
|
</NFormItem>
|
<NFormItem label="产量" path="qty">
|
<NInputNumber v-model:value="model.qty" placeholder="请输入产量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="剔除产量" path="badQty">
|
<NInputNumber v-model:value="model.badQty" placeholder="请输入剔除产量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="小盒膜消耗" path="xiaohemoVal">
|
<NInputNumber v-model:value="model.xiaohemoVal" placeholder="请输入小盒膜消耗" class="w-full" />
|
</NFormItem>
|
<NFormItem label="条盒膜消耗" path="tiaohemoVal">
|
<NInputNumber v-model:value="model.tiaohemoVal" placeholder="请输入条盒膜消耗" class="w-full" />
|
</NFormItem>
|
<NFormItem label="小盒纸消耗" path="xiaohezhiVal">
|
<NInputNumber v-model:value="model.xiaohezhiVal" placeholder="请输入小盒纸消耗" class="w-full" />
|
</NFormItem>
|
<NFormItem label="条盒纸消耗" path="tiaohezhiVal">
|
<NInputNumber v-model:value="model.tiaohezhiVal" placeholder="请输入条盒纸消耗" class="w-full" />
|
</NFormItem>
|
<NFormItem label="内衬纸消耗" path="neichenzhiVal">
|
<NInputNumber v-model:value="model.neichenzhiVal" placeholder="请输入内衬纸消耗" class="w-full" />
|
</NFormItem>
|
<NFormItem label="运行时间" path="runTime">
|
<NInputNumber v-model:value="model.runTime" placeholder="请输入运行时间" class="w-full" />
|
</NFormItem>
|
<NFormItem label="停机时间" path="stopTime">
|
<NInputNumber v-model:value="model.stopTime" placeholder="请输入停机时间" class="w-full" />
|
</NFormItem>
|
<NFormItem label="停机次数" path="stopTimes">
|
<NInputNumber v-model:value="model.stopTimes" placeholder="请输入停机次数" class="w-full" />
|
</NFormItem>
|
<NFormItem label="车速" path="speed">
|
<NInputNumber v-model:value="model.speed" placeholder="请输入车速" class="w-full" />
|
</NFormItem>
|
<NFormItem label="运行状态(-1 断网 0停止 1低速运行 2正常运行)" path="runStatus">
|
<NRadioGroup v-model:value="model.runStatus">
|
<NSpace>
|
<NRadio :value="0" label="请选择字典生成" />
|
</NSpace>
|
</NRadioGroup>
|
</NFormItem>
|
<NFormItem label="提升机产量" path="tsQty">
|
<NInputNumber v-model:value="model.tsQty" placeholder="请输入提升机产量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="主机产量(小包机)" path="mainQty">
|
<NInputNumber v-model:value="model.mainQty" placeholder="请输入主机产量(小包机)" class="w-full" />
|
</NFormItem>
|
<NFormItem label="主机剔除量" path="mainBadQty">
|
<NInputNumber v-model:value="model.mainBadQty" placeholder="请输入主机剔除量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="透包机产量" path="tbjQty">
|
<NInputNumber v-model:value="model.tbjQty" placeholder="请输入透包机产量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="透包机剔除好包" path="tbjGdQty">
|
<NInputNumber v-model:value="model.tbjGdQty" placeholder="请输入透包机剔除好包" class="w-full" />
|
</NFormItem>
|
<NFormItem label="透包机剔除坏包" path="tbjBadQty">
|
<NInputNumber v-model:value="model.tbjBadQty" placeholder="请输入透包机剔除坏包" class="w-full" />
|
</NFormItem>
|
<NFormItem label="排包机产量" path="pbjQty">
|
<NInputNumber v-model:value="model.pbjQty" placeholder="请输入排包机产量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="班次" path="shift">
|
<NSelect
|
v-model:value="model.shift"
|
placeholder="请选择班次"
|
:options="[{ value: 0, label: '请选择字典生成' }]"
|
clearable
|
/>
|
</NFormItem>
|
<NFormItem label="设备" path="equNo">
|
<NSelect
|
v-model:value="model.equNo"
|
placeholder="请选择设备"
|
:options="[{ value: 0, label: '请选择字典生成' }]"
|
clearable
|
/>
|
</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>
|