完成了 BOM 管理和生产管理,完成部分发料单、采购计划和调拨单。
This commit is contained in:
68
src/components/base/base-form/BaseForm.vue
Normal file
68
src/components/base/base-form/BaseForm.vue
Normal file
@@ -0,0 +1,68 @@
|
||||
<script lang="ts" setup>
|
||||
import type { FormInstance, FormRules } from "element-plus";
|
||||
defineProps({
|
||||
title: String,
|
||||
rules: {
|
||||
type: Object as () => FormRules,
|
||||
default: () => ({}),
|
||||
},
|
||||
});
|
||||
const emit = defineEmits<{
|
||||
submit: [form: any, formRef: FormInstance | undefined];
|
||||
reset: [];
|
||||
}>();
|
||||
const visible = defineModel<boolean>("visible");
|
||||
const form = defineModel<any>("form");
|
||||
const formRef = ref<FormInstance>();
|
||||
watch(visible, (newV, oldV) => {
|
||||
if (!newV) {
|
||||
formRef.value?.clearValidate();
|
||||
}
|
||||
});
|
||||
defineExpose({
|
||||
formRef,
|
||||
clearValidate: () => formRef.value?.clearValidate(),
|
||||
resetFields: () => formRef.value?.resetFields(),
|
||||
});
|
||||
const handleReset = () => {
|
||||
// 1. 清除验证状态
|
||||
formRef.value?.clearValidate();
|
||||
|
||||
// 2. 重置表单字段到初始值 (如果 form 是响应式对象,这通常有效)
|
||||
// 注意:resetFields 需要 form 初始值不为空,如果初始是 {},可能无效。
|
||||
// 为了保险,我们发出事件让父组件处理复杂逻辑,自己只负责基础清理
|
||||
|
||||
// 3. 如果没有父组件监听,默认行为是清空 form (可选,视需求而定)
|
||||
form.value = {};
|
||||
|
||||
emit("reset");
|
||||
};
|
||||
</script>
|
||||
<template>
|
||||
<el-dialog
|
||||
:title="title"
|
||||
v-model="visible"
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
:lock-scroll="false"
|
||||
>
|
||||
<el-form ref="formRef" label-position="left" label-width="auto" :model="form" :rules="rules || {}">
|
||||
<slot name="form-items"></slot>
|
||||
<el-form-item>
|
||||
<div class="button-container">
|
||||
<el-button type="primary" @click="emit('submit', form, formRef)">{{ $t("_button.submit") }}</el-button>
|
||||
<el-button @click="handleReset">{{ $t("_button.reset") }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<style>
|
||||
.button-container {
|
||||
width: 100%;
|
||||
/* 核心:让行内/行内块元素(按钮)水平居中 */
|
||||
text-align: center;
|
||||
/* 可选:增加上下间距,避免按钮贴边 */
|
||||
margin: 20px 0;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user