|
@@ -0,0 +1,151 @@
|
|
|
+<template>
|
|
|
+ <el-drawer
|
|
|
+ title="新增物料"
|
|
|
+ :append-to-body="true"
|
|
|
+ :model-value="modelValue"
|
|
|
+ @update:model-value="$emit('update:modelValue', $event)"
|
|
|
+ :show-close="false"
|
|
|
+ direction="rtl"
|
|
|
+ :size="computedSize"
|
|
|
+ :before-close="handleClose"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ ref="drawerRef"
|
|
|
+ :model="drawerFormData"
|
|
|
+ :rules="formRules"
|
|
|
+ label-width="100px"
|
|
|
+ v-loading="formLoading"
|
|
|
+ >
|
|
|
+ <el-form-item label="物料主数据" prop="code1">
|
|
|
+ <el-select
|
|
|
+ v-model="drawerFormData.code1"
|
|
|
+ :model-value="materialLabel"
|
|
|
+ placeholder="请输入物料主数据"
|
|
|
+ @click="openForm"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="消耗数量" prop="depleteCount1">
|
|
|
+ <el-input v-model="drawerFormData.depleteCount1" type="number" placeholder="请输入消耗数量" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="单位" prop="unit1">
|
|
|
+ <el-input v-model="drawerFormData.unit1" placeholder="请输入单位" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="单价" prop="price1">
|
|
|
+ <el-input v-model="drawerFormData.price1" placeholder="请输入单价" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="备注" prop="remark1">
|
|
|
+ <el-input v-model="drawerFormData.remark1" type="textarea" placeholder="请输入备注" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
|
|
+ <el-button @click="handleClose">取 消</el-button>
|
|
|
+ </template>
|
|
|
+ </el-drawer>
|
|
|
+ <MaterialSelect ref="materialFormRef" @choose="materialChoose" />
|
|
|
+</template>
|
|
|
+<script setup lang="ts">
|
|
|
+import { defineEmits, defineOptions, ref, watch } from 'vue'
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
+import * as PmsMaterialApi from '@/api/pms/material'
|
|
|
+import {CommonStatusEnum} from "@/utils/constants";
|
|
|
+
|
|
|
+const drawerVisible = ref<boolean>(false)
|
|
|
+const emit = defineEmits(['update:modelValue', 'add'])
|
|
|
+const materialLabel = ref('') // 表单的类型:create - 新增;update - 修改
|
|
|
+defineOptions({
|
|
|
+ name: 'MaintainMaterialDrawer'
|
|
|
+})
|
|
|
+const materialChoose = (row) => {
|
|
|
+ drawerFormData.value.code1 = row.code
|
|
|
+ drawerFormData.value.name1 = row.name
|
|
|
+ materialLabel.value = row.name
|
|
|
+}
|
|
|
+const queryParams = reactive({
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ createTime: [],
|
|
|
+ bomId: '',
|
|
|
+ name: '',
|
|
|
+ code: ''
|
|
|
+})
|
|
|
+const drawerFormData = ref({
|
|
|
+ id: undefined,
|
|
|
+ code1: undefined,
|
|
|
+ name1: undefined,
|
|
|
+ unit1: undefined,
|
|
|
+ price1: undefined,
|
|
|
+ sourceType: undefined,
|
|
|
+ depleteCount1: undefined,
|
|
|
+ totalCount: undefined,
|
|
|
+ sapCode: undefined,
|
|
|
+ status1: undefined,
|
|
|
+ remark1: undefined
|
|
|
+})
|
|
|
+const resetDrawerForm = () => {
|
|
|
+ drawerFormData.value = {
|
|
|
+ id: undefined,
|
|
|
+ code1: undefined,
|
|
|
+ name: undefined,
|
|
|
+ unit: undefined,
|
|
|
+ price: undefined,
|
|
|
+ sourceType: undefined,
|
|
|
+ depleteCount: undefined,
|
|
|
+ totalCount: undefined,
|
|
|
+ sapCode: undefined,
|
|
|
+ status: undefined,
|
|
|
+ remark: undefined
|
|
|
+ }
|
|
|
+ drawerRef.value?.resetFields()
|
|
|
+}
|
|
|
+const formRules = reactive({
|
|
|
+ code1: [{ required: true, message: '物料编码不能为空', trigger: 'blur' }],
|
|
|
+ name1: [{ required: true, message: '物料名称不能为空', trigger: 'blur' }],
|
|
|
+ depleteCount1: [{ required: true, message: '消耗数量不能为空', trigger: 'blur' }]
|
|
|
+})
|
|
|
+const materialFormRef = ref()
|
|
|
+const openForm = () => {
|
|
|
+ materialFormRef.value.open()
|
|
|
+}
|
|
|
+const windowWidth = ref(window.innerWidth)
|
|
|
+// 动态计算百分比
|
|
|
+const computedSize = computed(() => {
|
|
|
+ return windowWidth.value > 800 ? '40%' : '60%'
|
|
|
+})
|
|
|
+
|
|
|
+const loading = ref(false)
|
|
|
+const total = ref(0) // 列表的总页数
|
|
|
+const materials = ref([])
|
|
|
+
|
|
|
+const props = defineProps({
|
|
|
+ modelValue: Boolean
|
|
|
+})
|
|
|
+
|
|
|
+// 打开抽屉
|
|
|
+const openDrawer = () => {
|
|
|
+ drawerVisible.value = true
|
|
|
+ resetDrawerForm()
|
|
|
+ materialLabel.value = undefined
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+// 关闭抽屉
|
|
|
+const closeDrawer = () => {
|
|
|
+ drawerVisible.value = false
|
|
|
+}
|
|
|
+
|
|
|
+// 关闭抽屉
|
|
|
+const handleClose = () => {
|
|
|
+ emit('update:modelValue', false)
|
|
|
+}
|
|
|
+const drawerRef = ref()
|
|
|
+const submitForm= async ()=> {
|
|
|
+ await drawerRef.value.validate()
|
|
|
+ emit('add', drawerFormData.value);
|
|
|
+ emit('update:modelValue', false)
|
|
|
+}
|
|
|
+
|
|
|
+defineExpose({ openDrawer, closeDrawer }) // 暴露方法给父组件
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped></style>
|