|
@@ -9,7 +9,7 @@
|
|
|
ref="form"
|
|
ref="form"
|
|
|
label-position="top"
|
|
label-position="top"
|
|
|
:model="formData"
|
|
:model="formData"
|
|
|
- :disabled="nodeData?.is_disable"
|
|
|
|
|
|
|
+ :disabled="nodeData?.is_disable || readonly"
|
|
|
scroll-to-error
|
|
scroll-to-error
|
|
|
>
|
|
>
|
|
|
<el-row :gutter="12">
|
|
<el-row :gutter="12">
|
|
@@ -65,7 +65,7 @@
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="产品类别" name="product_category">
|
|
<el-form-item label="产品类别" name="product_category">
|
|
|
<el-select
|
|
<el-select
|
|
|
- :disabled="!!originFormData?.erp_code"
|
|
|
|
|
|
|
+ :disabled="!!originFormData?.erp_code && !isEmpty"
|
|
|
v-model="formData.product_category"
|
|
v-model="formData.product_category"
|
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
|
>
|
|
>
|
|
@@ -85,7 +85,20 @@
|
|
|
<!-- 制造工艺 -->
|
|
<!-- 制造工艺 -->
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="制造工艺" name="process">
|
|
<el-form-item label="制造工艺" name="process">
|
|
|
- <el-input placeholder="请输入" v-model="formData.process" />
|
|
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="formData.process"
|
|
|
|
|
+ placeholder="请选择"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in processOptions.map((item) => ({
|
|
|
|
|
+ label: item,
|
|
|
|
|
+ value: item,
|
|
|
|
|
+ }))"
|
|
|
|
|
+ :key="item.value"
|
|
|
|
|
+ :label="item.label"
|
|
|
|
|
+ :value="item.value"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
|
|
|
|
@@ -118,7 +131,7 @@
|
|
|
<el-col :span="12" v-if="type == '2'">
|
|
<el-col :span="12" v-if="type == '2'">
|
|
|
<el-form-item label="制造区域" prop="manufacture_area">
|
|
<el-form-item label="制造区域" prop="manufacture_area">
|
|
|
<el-select
|
|
<el-select
|
|
|
- :disabled="!!originFormData?.erp_code"
|
|
|
|
|
|
|
+ :disabled="!!originFormData?.erp_code && !isEmpty"
|
|
|
v-model="formData.manufacture_area"
|
|
v-model="formData.manufacture_area"
|
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
|
>
|
|
>
|
|
@@ -139,7 +152,7 @@
|
|
|
<el-col :span="12" v-if="type == '2'">
|
|
<el-col :span="12" v-if="type == '2'">
|
|
|
<el-form-item label="制造单元" prop="manufacture_report">
|
|
<el-form-item label="制造单元" prop="manufacture_report">
|
|
|
<el-select
|
|
<el-select
|
|
|
- :disabled="!!originFormData?.erp_code"
|
|
|
|
|
|
|
+ :disabled="!!originFormData?.erp_code && !isEmpty"
|
|
|
v-model="formData.manufacture_report"
|
|
v-model="formData.manufacture_report"
|
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
|
>
|
|
>
|
|
@@ -175,18 +188,25 @@
|
|
|
<el-button
|
|
<el-button
|
|
|
type="text"
|
|
type="text"
|
|
|
:icon="CirclePlus"
|
|
:icon="CirclePlus"
|
|
|
- :disabled="layerIndex === 1 || !!originFormData?.erp_code"
|
|
|
|
|
|
|
+ :disabled="layerIndex === 1 || (!!originFormData?.erp_code && !isEmpty) || erpCodeDisabled"
|
|
|
@click="openRecomendModal"
|
|
@click="openRecomendModal"
|
|
|
>
|
|
>
|
|
|
推荐
|
|
推荐
|
|
|
</el-button>
|
|
</el-button>
|
|
|
<el-button
|
|
<el-button
|
|
|
type="text"
|
|
type="text"
|
|
|
- :disabled="!!originFormData?.erp_code"
|
|
|
|
|
|
|
+ :disabled="(!!originFormData?.erp_code && !isEmpty) || erpCodeDisabled"
|
|
|
@click="handleGenratorErpCode"
|
|
@click="handleGenratorErpCode"
|
|
|
>
|
|
>
|
|
|
生成
|
|
生成
|
|
|
</el-button>
|
|
</el-button>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="text"
|
|
|
|
|
+ v-if="!!originFormData?.erp_code"
|
|
|
|
|
+ @click="handleEmptyErpCode"
|
|
|
|
|
+ >
|
|
|
|
|
+ 置空
|
|
|
|
|
+ </el-button>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -195,7 +215,7 @@
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="自制/外购/支给(M/P/C)" prop="part_type">
|
|
<el-form-item label="自制/外购/支给(M/P/C)" prop="part_type">
|
|
|
<el-select
|
|
<el-select
|
|
|
- :disabled="!!originFormData?.erp_code"
|
|
|
|
|
|
|
+ :disabled="!!originFormData?.erp_code && !isEmpty"
|
|
|
v-model="formData.part_type"
|
|
v-model="formData.part_type"
|
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
|
@change="handlePartTypeChange"
|
|
@change="handlePartTypeChange"
|
|
@@ -214,7 +234,7 @@
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="零件属性" name="part_attribute">
|
|
<el-form-item label="零件属性" name="part_attribute">
|
|
|
<el-select
|
|
<el-select
|
|
|
- :disabled="!!originFormData?.erp_code"
|
|
|
|
|
|
|
+ :disabled="!!originFormData?.erp_code && !isEmpty"
|
|
|
v-model="formData.part_attribute"
|
|
v-model="formData.part_attribute"
|
|
|
placeholder="请先选择M/P/C类型"
|
|
placeholder="请先选择M/P/C类型"
|
|
|
>
|
|
>
|
|
@@ -524,14 +544,14 @@
|
|
|
</el-form>
|
|
</el-form>
|
|
|
<template #footer>
|
|
<template #footer>
|
|
|
<el-button @click="visible = false">取消</el-button>
|
|
<el-button @click="visible = false">取消</el-button>
|
|
|
- <el-button type="primary" @click="handleSubmit">确定</el-button>
|
|
|
|
|
|
|
+ <el-button v-if="!readonly" type="primary" @click="handleSubmit">确定</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</el-drawer>
|
|
</el-drawer>
|
|
|
<TableModal ref="recomendRef" @ok="handleRecomend" />
|
|
<TableModal ref="recomendRef" @ok="handleRecomend" />
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
-import { ref, defineExpose, defineEmits, computed } from "vue";
|
|
|
|
|
|
|
+import { ref, defineExpose, defineEmits, computed, defineProps } from "vue";
|
|
|
import { ElMessage, type FormInstance } from "element-plus";
|
|
import { ElMessage, type FormInstance } from "element-plus";
|
|
|
import { cloneDeep } from "lodash-es";
|
|
import { cloneDeep } from "lodash-es";
|
|
|
import { CirclePlus } from "@element-plus/icons-vue";
|
|
import { CirclePlus } from "@element-plus/icons-vue";
|
|
@@ -541,6 +561,17 @@ import { useRoute } from "vue-router";
|
|
|
|
|
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
|
const type = (route.query?.type as string) ?? "1"; // 1工程bom 2制造bom
|
|
const type = (route.query?.type as string) ?? "1"; // 1工程bom 2制造bom
|
|
|
|
|
+defineProps<{
|
|
|
|
|
+ readonly: boolean;
|
|
|
|
|
+}>();
|
|
|
|
|
+// 置空
|
|
|
|
|
+const isEmpty = ref(false);
|
|
|
|
|
+
|
|
|
|
|
+// 置空操作
|
|
|
|
|
+const handleEmptyErpCode = () => {
|
|
|
|
|
+ formData.value.erp_code = "";
|
|
|
|
|
+ isEmpty.value = true;
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
const keyMap = {
|
|
const keyMap = {
|
|
|
gridorders: "序号",
|
|
gridorders: "序号",
|
|
@@ -645,6 +676,29 @@ const procuctTypeOptions = [
|
|
|
// 制造区域
|
|
// 制造区域
|
|
|
const manufatureAreaOptions = ["大连工厂", "孝感工厂"];
|
|
const manufatureAreaOptions = ["大连工厂", "孝感工厂"];
|
|
|
|
|
|
|
|
|
|
+// 制造工艺
|
|
|
|
|
+const processOptions = [
|
|
|
|
|
+ "普通注塑",
|
|
|
|
|
+ "嵌件注塑",
|
|
|
|
|
+ "加饰注塑",
|
|
|
|
|
+ "机器人喷涂",
|
|
|
|
|
+ "往复机喷涂",
|
|
|
|
|
+ "手工喷涂",
|
|
|
|
|
+ "丝网印刷",
|
|
|
|
|
+ "吸塑",
|
|
|
|
|
+ "PUR",
|
|
|
|
|
+ "产线装配",
|
|
|
|
|
+ "焊接",
|
|
|
|
|
+ "镭雕",
|
|
|
|
|
+ "移印",
|
|
|
|
|
+ "冲切",
|
|
|
|
|
+ "热压",
|
|
|
|
|
+ "CNC",
|
|
|
|
|
+ "手工装配",
|
|
|
|
|
+ "整理",
|
|
|
|
|
+ "打磨",
|
|
|
|
|
+]
|
|
|
|
|
+
|
|
|
const visible = ref(false);
|
|
const visible = ref(false);
|
|
|
const layerIndex = ref(0);
|
|
const layerIndex = ref(0);
|
|
|
const formData = ref<Record<string, any>>({
|
|
const formData = ref<Record<string, any>>({
|
|
@@ -670,10 +724,18 @@ const recomendRef = ref<{
|
|
|
open: (partName: string, partType: string) => void;
|
|
open: (partName: string, partType: string) => void;
|
|
|
}>();
|
|
}>();
|
|
|
|
|
|
|
|
|
|
+// 1.工程BOM只有P,C件这两个按钮才可以操作
|
|
|
|
|
+// 2.制造BOM只有M件,这两个按钮才可以操作
|
|
|
|
|
+const erpCodeDisabled = computed(() => {
|
|
|
|
|
+ if(type === "1") return formData.value.part_type === "M" || !formData.value.part_type;
|
|
|
|
|
+ if(type === "2") return formData.value.part_type !== "M" || !formData.value.part_type;
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
const editType = ref<"add" | "edit">("edit");
|
|
const editType = ref<"add" | "edit">("edit");
|
|
|
const open = (node: any, type?: "add" | "edit", layer?: number) => {
|
|
const open = (node: any, type?: "add" | "edit", layer?: number) => {
|
|
|
layerIndex.value = node?._node?.layerIndex || layer;
|
|
layerIndex.value = node?._node?.layerIndex || layer;
|
|
|
visible.value = true;
|
|
visible.value = true;
|
|
|
|
|
+ isEmpty.value = false;
|
|
|
nodeData.value = cloneDeep(node.data);
|
|
nodeData.value = cloneDeep(node.data);
|
|
|
editType.value = type || !node?.id ? "add" : "edit";
|
|
editType.value = type || !node?.id ? "add" : "edit";
|
|
|
form.value?.resetFields();
|
|
form.value?.resetFields();
|