<script setup lang="ts">
|
import { computed, ref, watch } from 'vue';
|
import { fetchCreateRollerData, fetchUpdateRollerData } from '@/service/api/analy/roller-data';
|
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
|
import { $t } from '@/locales';
|
import { jsonClone } from '~/packages/utils';
|
|
defineOptions({
|
name: 'RollerDataOperateDrawer'
|
});
|
|
interface Props {
|
/** the type of operation */
|
operateType: NaiveUI.TableOperateType;
|
/** the edit row data */
|
rowData?: Api.Qa.RollerData | 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.RollerDataOperateParams;
|
|
const model = ref<Model>(createDefaultModel());
|
|
function createDefaultModel(): Model {
|
return {
|
time: null,
|
key: '',
|
online: null,
|
qty: null,
|
badQty: null,
|
lvbangVal: null,
|
juanyanzhiVal: null,
|
shuisongzhiVal: null,
|
runTime: null,
|
stopTime: null,
|
stopTimes: null,
|
speed: null,
|
runStatus: null,
|
cy: null,
|
cyCs: null,
|
cyOnline: '',
|
recQty1: null,
|
recQty2: null,
|
tsQty: null
|
};
|
}
|
|
type RuleKey = Extract<keyof Model, 'time' | 'key'>;
|
|
const rules: Record<RuleKey, App.Global.FormRule> = {
|
time: createRequiredRule('时间不能为空'),
|
key: createRequiredRule('key不能为空')
|
};
|
|
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,
|
lvbangVal,
|
juanyanzhiVal,
|
shuisongzhiVal,
|
runTime,
|
stopTime,
|
stopTimes,
|
speed,
|
runStatus,
|
cy,
|
cyCs,
|
cyOnline,
|
recQty1,
|
recQty2,
|
tsQty
|
} = model.value;
|
|
// request
|
if (props.operateType === 'add') {
|
const { error } = await fetchCreateRollerData({
|
time,
|
key,
|
online,
|
qty,
|
badQty,
|
lvbangVal,
|
juanyanzhiVal,
|
shuisongzhiVal,
|
runTime,
|
stopTime,
|
stopTimes,
|
speed,
|
runStatus,
|
cy,
|
cyCs,
|
cyOnline,
|
recQty1,
|
recQty2,
|
tsQty
|
});
|
if (error) return;
|
}
|
|
if (props.operateType === 'edit') {
|
const { error } = await fetchUpdateRollerData({
|
time,
|
key,
|
online,
|
qty,
|
badQty,
|
lvbangVal,
|
juanyanzhiVal,
|
shuisongzhiVal,
|
runTime,
|
stopTime,
|
stopTimes,
|
speed,
|
runStatus,
|
cy,
|
cyCs,
|
cyOnline,
|
recQty1,
|
recQty2,
|
tsQty
|
});
|
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="网络状态" path="online">
|
<NInputNumber v-model:value="model.online" placeholder="请输入网络状态" class="w-full" />
|
</NFormItem>
|
<NFormItem label="产量" path="qty">
|
<NInputNumber v-model:value="model.qty" placeholder="请输入产量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="提升机产量" path="tsQty">
|
<NInputNumber v-model:value="model.tsQty" placeholder="请输入提升机产量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="剔除产量" path="badQty">
|
<NInputNumber v-model:value="model.badQty" placeholder="请输入剔除产量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="滤棒消耗" path="lvbangVal">
|
<NInputNumber v-model:value="model.lvbangVal" placeholder="请输入滤棒消耗" class="w-full" />
|
</NFormItem>
|
<NFormItem label="卷烟纸消耗" path="juanyanzhiVal">
|
<NInputNumber v-model:value="model.juanyanzhiVal" placeholder="请输入卷烟纸消耗" class="w-full" />
|
</NFormItem>
|
<NFormItem label="水松纸消耗" path="shuisongzhiVal">
|
<NInputNumber v-model:value="model.shuisongzhiVal" 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="运行状态" path="runStatus">
|
<NRadioGroup v-model:value="model.runStatus">
|
<NSpace>
|
<NRadio :value="0" label="请选择字典生成" />
|
</NSpace>
|
</NRadioGroup>
|
</NFormItem>
|
<NFormItem label="储烟设备储量" path="cy">
|
<NInputNumber v-model:value="model.cy" placeholder="请输入储烟设备储量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="储烟设备车速" path="cyCs">
|
<NInputNumber v-model:value="model.cyCs" placeholder="请输入储烟设备车速" class="w-full" />
|
</NFormItem>
|
<NFormItem label="储烟设备网络" path="cyOnline">
|
<NInput v-model:value="model.cyOnline" :rows="3" type="textarea" placeholder="请输入储烟设备网络" />
|
</NFormItem>
|
<NFormItem label="接收机产量" path="recQty1">
|
<NInputNumber v-model:value="model.recQty1" placeholder="请输入接收机产量" class="w-full" />
|
</NFormItem>
|
<NFormItem label="接收机产量2" path="recQty2">
|
<NInputNumber v-model:value="model.recQty2" placeholder="请输入接收机产量2" class="w-full" />
|
</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>
|