|
|
@@ -1,38 +1,24 @@
|
|
|
<template>
|
|
|
<div class="ele-body">
|
|
|
<el-card shadow="never">
|
|
|
- <el-form
|
|
|
- label-width="120px"
|
|
|
- ref="manageForm"
|
|
|
- :model="form"
|
|
|
- :rules="rules"
|
|
|
- >
|
|
|
+ <el-form label-width="120px" ref="manageForm" :model="form" :rules="rules">
|
|
|
<headerTitle title="基本信息">
|
|
|
<el-button @click="cancel">返回</el-button>
|
|
|
- <el-button type="primary" @click="submit" :loading="loading"
|
|
|
- >保存
|
|
|
+ <el-button type="primary" @click="submit" :loading="loading">保存
|
|
|
</el-button>
|
|
|
</headerTitle>
|
|
|
|
|
|
<el-row :gutter="24">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="分类" prop="categoryLevelName">
|
|
|
- <el-input
|
|
|
- v-model="form.categoryLevelName"
|
|
|
- @click.native="openCategory"
|
|
|
- />
|
|
|
+ <el-input v-model="form.categoryLevelName" @click.native="openCategory" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="编码" prop="code">
|
|
|
- <el-input
|
|
|
- v-if="ruleCode == '自定义'"
|
|
|
- v-model="form.code"
|
|
|
- readonly
|
|
|
- @click.native="openCode"
|
|
|
- :disabled="status == 0"
|
|
|
- />
|
|
|
+ <el-input v-if="ruleCode == '自定义'" v-model="form.code" readonly @click.native="openCode"
|
|
|
+ :disabled="status == 0" />
|
|
|
<el-input v-else v-model="form.code" :disabled="status == 0" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -51,36 +37,20 @@
|
|
|
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="生产类型" prop="produceType">
|
|
|
- <el-select
|
|
|
- style="width: 100%"
|
|
|
- v-model="form.produceType"
|
|
|
- filterable
|
|
|
- multiple
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in dictList"
|
|
|
- :key="item.value"
|
|
|
- :value="item.value"
|
|
|
- :label="item.label"
|
|
|
- ></el-option>
|
|
|
+ <el-select style="width: 100%" v-model="form.produceType" filterable multiple>
|
|
|
+ <el-option v-for="item in dictList" :key="item.value" :value="item.value"
|
|
|
+ :label="item.label"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
- <el-col
|
|
|
- :span="8"
|
|
|
- v-if="
|
|
|
- [1, 23, 9, 28].includes(
|
|
|
- Number(categoryLevelPathId || $route.query.rootTreeId)
|
|
|
- )
|
|
|
- "
|
|
|
- >
|
|
|
+ <el-col :span="8" v-if="
|
|
|
+ [1, 23, 9, 28].includes(
|
|
|
+ Number(categoryLevelPathId || $route.query.rootTreeId)
|
|
|
+ )
|
|
|
+ ">
|
|
|
<el-form-item label="加工类型" prop="isConsumable">
|
|
|
- <el-select
|
|
|
- v-model="form.isConsumable"
|
|
|
- size="small"
|
|
|
- style="width: 100%"
|
|
|
- >
|
|
|
+ <el-select v-model="form.isConsumable" size="small" style="width: 100%">
|
|
|
<el-option :value="1" label="批量"></el-option>
|
|
|
<el-option :value="0" label="单件"></el-option>
|
|
|
</el-select>
|
|
|
@@ -102,39 +72,28 @@
|
|
|
<el-form-item label="规格" prop="specification">
|
|
|
<el-input v-model="form.specification" />
|
|
|
</el-form-item>
|
|
|
+
|
|
|
</el-col>
|
|
|
|
|
|
+
|
|
|
+
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="计量单位" prop="measuringUnit">
|
|
|
- <DictSelection
|
|
|
- dictName="计量单位"
|
|
|
- clearable
|
|
|
- v-model="form.measuringUnit"
|
|
|
- @change="changeUnit"
|
|
|
- >
|
|
|
+ <DictSelection dictName="计量单位" clearable v-model="form.measuringUnit" @change="changeUnit">
|
|
|
</DictSelection>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="重量单位" prop="weightUnit">
|
|
|
- <DictSelection
|
|
|
- dictName="重量单位"
|
|
|
- clearable
|
|
|
- v-model="form.weightUnit"
|
|
|
- >
|
|
|
+ <DictSelection dictName="重量单位" clearable v-model="form.weightUnit">
|
|
|
</DictSelection>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="包装单位" prop="packingUnit">
|
|
|
- <DictSelection
|
|
|
- dictName="包装单位"
|
|
|
- clearable
|
|
|
- v-model="form.packingUnit"
|
|
|
- @change="changeUnit"
|
|
|
- >
|
|
|
+ <DictSelection dictName="包装单位" clearable v-model="form.packingUnit" @change="changeUnit">
|
|
|
</DictSelection>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -143,12 +102,7 @@
|
|
|
<el-form-item label="体积">
|
|
|
<div class="form-line">
|
|
|
<el-input v-model="form.volume" />
|
|
|
- <DictSelection
|
|
|
- class="line-select"
|
|
|
- dictName="体积单位"
|
|
|
- clearable
|
|
|
- v-model="form.volumeUnit"
|
|
|
- >
|
|
|
+ <DictSelection class="line-select" dictName="体积单位" clearable v-model="form.volumeUnit">
|
|
|
</DictSelection>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
@@ -173,17 +127,8 @@
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="级别">
|
|
|
<template>
|
|
|
- <el-select
|
|
|
- style="width: 100%"
|
|
|
- v-model="form.level"
|
|
|
- placeholder="请选择"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in levelOptions"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- :key="item.value"
|
|
|
- >
|
|
|
+ <el-select style="width: 100%" v-model="form.level" placeholder="请选择">
|
|
|
+ <el-option v-for="item in levelOptions" :label="item.label" :value="item.value" :key="item.value">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</template>
|
|
|
@@ -194,42 +139,42 @@
|
|
|
<el-form-item :label="f.label">
|
|
|
<template>
|
|
|
<div class="form-line">
|
|
|
- <component
|
|
|
- :is="f.tagType"
|
|
|
- v-model="form.extField[f.prop]"
|
|
|
- :disabled="f.extAttribute?.disabled"
|
|
|
- clearable
|
|
|
- :isProhibit="
|
|
|
- f.modelType == 'dict' ? f.extAttribute?.disabled : false
|
|
|
- "
|
|
|
- :dictName="f.modelType == 'dict' ? f.label : ''"
|
|
|
- ></component>
|
|
|
+ <component :is="f.tagType" v-model="form.extField[f.prop]" :disabled="f.extAttribute?.disabled"
|
|
|
+ clearable :isProhibit="f.modelType == 'dict' ? f.extAttribute?.disabled : false
|
|
|
+ " :dictName="f.modelType == 'dict' ? f.label : ''"></component>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="属性类型:" prop="attributeType">
|
|
|
+ <el-select
|
|
|
+ v-model="form.attributeType"
|
|
|
+ filterable
|
|
|
+ class="ele-block"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in attributeList"
|
|
|
+ :key="item.value"
|
|
|
+ :value="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
</el-card>
|
|
|
|
|
|
<!-- 自定义编码 -->
|
|
|
- <CodeDialog
|
|
|
- ref="codeRefs"
|
|
|
- v-if="codeShow"
|
|
|
- @close="codeShow = false"
|
|
|
- @chooseCode="chooseCode"
|
|
|
- />
|
|
|
+ <CodeDialog ref="codeRefs" v-if="codeShow" @close="codeShow = false" @chooseCode="chooseCode" />
|
|
|
<!-- 分类选择弹窗 -->
|
|
|
<CategoryDialog ref="categoryRefs" @chooseCategory="confirmCategory" />
|
|
|
<!-- 仓储配置 -->
|
|
|
- <WarehouseInfo
|
|
|
- ref="warehouseRefs"
|
|
|
- :form="categoryWms"
|
|
|
- :measuringUnit="form.measuringUnit"
|
|
|
- :packingUnit="form.packingUnit"
|
|
|
- :packageDispositionVOList="packageDispositionVOList"
|
|
|
- @change="changePackagingSpecification"
|
|
|
- />
|
|
|
+ <WarehouseInfo ref="warehouseRefs" :form="categoryWms" :measuringUnit="form.measuringUnit"
|
|
|
+ :packingUnit="form.packingUnit" :packageDispositionVOList="packageDispositionVOList"
|
|
|
+ @change="changePackagingSpecification" />
|
|
|
<!-- 销售配置 -->
|
|
|
<SalesInfos ref="salesRefs" :form="categorySales" />
|
|
|
<!-- 采购信息 -->
|
|
|
@@ -249,637 +194,650 @@
|
|
|
<!-- 备注信息 -->
|
|
|
<RemarkInfo ref="remarkRefs" :form="remarkform" />
|
|
|
<!-- 关联信息 -->
|
|
|
- <linkMsg
|
|
|
- ref="linkMsgRef"
|
|
|
- :id="$route.query.id"
|
|
|
- :categoryLevelId="form.categoryLevelId"
|
|
|
- :categoryLevelGroupId="form.categoryLevelGroupId"
|
|
|
- />
|
|
|
+ <linkMsg ref="linkMsgRef" :id="$route.query.id" :categoryLevelId="form.categoryLevelId"
|
|
|
+ :categoryLevelGroupId="form.categoryLevelGroupId" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import SalesInfos from './components/SalesInfos.vue';
|
|
|
- import PurchasingInfo from './components/PurchasingInfo.vue';
|
|
|
- import GroupDialog from './components/GroupDialog.vue';
|
|
|
- import CodeDialog from './components/codeDialog.vue';
|
|
|
- import CategoryDialog from './components/CategoryDialog.vue';
|
|
|
- import WarehouseInfo from './components/WarehouseInfo.vue';
|
|
|
- import ProcureInfo from './components/ProcureInfo.vue';
|
|
|
- import ProductionInfo from './components/ProductionInfo.vue';
|
|
|
- import PlanInfo from './components/PlanInfo.vue';
|
|
|
- import SalesInfo from './components/SalesInfo.vue';
|
|
|
- import QualityInfo from './components/QualityInfo.vue';
|
|
|
- import BoatInfo from './components/BoatInfo.vue';
|
|
|
- import TurnoverInfo from './components/TurnoverInfo.vue';
|
|
|
- import MoldInfo from './components/MoldInfo.vue';
|
|
|
- import RemarkInfo from './components/RemarkInfo.vue';
|
|
|
- import deptSelect from '@/components/CommomSelect/dept-select.vue';
|
|
|
- import personSelect from '@/components/CommomSelect/person-select.vue';
|
|
|
- import linkMsg from './components/link-msg.vue';
|
|
|
- import { getDetails } from '@/api/classifyManage/itemInformation';
|
|
|
- import { getByCode } from '@/api/system/dictionary-data';
|
|
|
- import { getCode, rootCategoryCode, fieldModel } from '@/api/codeManagement';
|
|
|
-
|
|
|
- import { addMaterial } from '@/api/material/list.js';
|
|
|
- import { deepClone } from '@/utils/index';
|
|
|
- import { finishPageTab, reloadPageTab } from '@/utils/page-tab-util';
|
|
|
-
|
|
|
- export default {
|
|
|
- name: 'product',
|
|
|
- components: {
|
|
|
- SalesInfos,
|
|
|
- PurchasingInfo,
|
|
|
- linkMsg,
|
|
|
- GroupDialog,
|
|
|
- deptSelect,
|
|
|
- personSelect,
|
|
|
- WarehouseInfo,
|
|
|
- ProcureInfo,
|
|
|
- ProductionInfo,
|
|
|
- PlanInfo,
|
|
|
- SalesInfo,
|
|
|
- QualityInfo,
|
|
|
- BoatInfo,
|
|
|
- TurnoverInfo,
|
|
|
- MoldInfo,
|
|
|
- RemarkInfo,
|
|
|
- CategoryDialog,
|
|
|
- CodeDialog
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- packagingSpecificationList: [],
|
|
|
- loading: false,
|
|
|
- levelOptions: [
|
|
|
- {
|
|
|
- label: '特级',
|
|
|
- value: '特级'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '一级',
|
|
|
- value: '一级'
|
|
|
+import SalesInfos from './components/SalesInfos.vue';
|
|
|
+import PurchasingInfo from './components/PurchasingInfo.vue';
|
|
|
+import GroupDialog from './components/GroupDialog.vue';
|
|
|
+import CodeDialog from './components/codeDialog.vue';
|
|
|
+import CategoryDialog from './components/CategoryDialog.vue';
|
|
|
+import WarehouseInfo from './components/WarehouseInfo.vue';
|
|
|
+import ProcureInfo from './components/ProcureInfo.vue';
|
|
|
+import ProductionInfo from './components/ProductionInfo.vue';
|
|
|
+import PlanInfo from './components/PlanInfo.vue';
|
|
|
+import SalesInfo from './components/SalesInfo.vue';
|
|
|
+import QualityInfo from './components/QualityInfo.vue';
|
|
|
+import BoatInfo from './components/BoatInfo.vue';
|
|
|
+import TurnoverInfo from './components/TurnoverInfo.vue';
|
|
|
+import MoldInfo from './components/MoldInfo.vue';
|
|
|
+import RemarkInfo from './components/RemarkInfo.vue';
|
|
|
+import deptSelect from '@/components/CommomSelect/dept-select.vue';
|
|
|
+import personSelect from '@/components/CommomSelect/person-select.vue';
|
|
|
+import linkMsg from './components/link-msg.vue';
|
|
|
+import { getDetails } from '@/api/classifyManage/itemInformation';
|
|
|
+import { getByCode } from '@/api/system/dictionary-data';
|
|
|
+import { getCode, rootCategoryCode, fieldModel } from '@/api/codeManagement';
|
|
|
+
|
|
|
+import { addMaterial } from '@/api/material/list.js';
|
|
|
+import { deepClone } from '@/utils/index';
|
|
|
+import { finishPageTab, reloadPageTab } from '@/utils/page-tab-util';
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'product',
|
|
|
+ components: {
|
|
|
+ SalesInfos,
|
|
|
+ PurchasingInfo,
|
|
|
+ linkMsg,
|
|
|
+ GroupDialog,
|
|
|
+ deptSelect,
|
|
|
+ personSelect,
|
|
|
+ WarehouseInfo,
|
|
|
+ ProcureInfo,
|
|
|
+ ProductionInfo,
|
|
|
+ PlanInfo,
|
|
|
+ SalesInfo,
|
|
|
+ QualityInfo,
|
|
|
+ BoatInfo,
|
|
|
+ TurnoverInfo,
|
|
|
+ MoldInfo,
|
|
|
+ RemarkInfo,
|
|
|
+ CategoryDialog,
|
|
|
+ CodeDialog
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ packagingSpecificationList: [],
|
|
|
+ loading: false,
|
|
|
+ levelOptions: [
|
|
|
+ {
|
|
|
+ label: '特级',
|
|
|
+ value: '特级'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '一级',
|
|
|
+ value: '一级'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '二级',
|
|
|
+ value: '二级'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '三级',
|
|
|
+ value: '三级'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ attributeList: [
|
|
|
+ {
|
|
|
+ label: '总装',
|
|
|
+ value: 1
|
|
|
},
|
|
|
{
|
|
|
- label: '二级',
|
|
|
- value: '二级'
|
|
|
+ label: '部件',
|
|
|
+ value: 2
|
|
|
},
|
|
|
{
|
|
|
- label: '三级',
|
|
|
- value: '三级'
|
|
|
+ label: '零',
|
|
|
+ value: 3
|
|
|
+ },{
|
|
|
+ label: '原材料',
|
|
|
+ value: 4
|
|
|
}
|
|
|
],
|
|
|
- form: {
|
|
|
- categoryLevelGroupName: '',
|
|
|
- categoryLevelName: '',
|
|
|
- isConsumable: 1,
|
|
|
- measuringUnit: '',
|
|
|
- weightUnit: '',
|
|
|
- packingUnit: '',
|
|
|
-
|
|
|
- extField: {}
|
|
|
- },
|
|
|
-
|
|
|
- remarkform: {
|
|
|
- remarkAttach: []
|
|
|
- },
|
|
|
- categorySales: {},
|
|
|
- categoryPurchase: { purchaseMultiplier: 1 },
|
|
|
- categoryAps: {},
|
|
|
- categoryMes: {},
|
|
|
- categoryMold: {},
|
|
|
- categoryPallet: {},
|
|
|
- categoryQms: {},
|
|
|
- categoryVehicle: {},
|
|
|
- categoryWms: {
|
|
|
- isUnpack: 1
|
|
|
- },
|
|
|
- packageDispositionVOList: [],
|
|
|
- categoryLevelPathId: null,
|
|
|
-
|
|
|
- dictList: [],
|
|
|
-
|
|
|
- fileList: [],
|
|
|
- // 表单验证规则
|
|
|
- rules: {
|
|
|
- categoryLevelGroupName: [
|
|
|
- { required: true, message: '请选择所属物料组', trigger: 'change' }
|
|
|
- ],
|
|
|
- code: [{ required: true, message: '请输入编码', trigger: 'blur' }],
|
|
|
- name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
|
|
- produceType: [
|
|
|
- { required: true, message: '请选择生产类型', trigger: 'change' }
|
|
|
- ],
|
|
|
- categoryLevelName: [
|
|
|
- { required: true, message: '请选择所属分类', trigger: 'change' }
|
|
|
- ],
|
|
|
- measuringUnit: [
|
|
|
- { required: true, message: '请选择计量单位', trigger: 'change' }
|
|
|
- ],
|
|
|
-
|
|
|
- weightUnit: [
|
|
|
- { required: true, message: '请选择重量单位', trigger: 'change' }
|
|
|
- ],
|
|
|
-
|
|
|
- packingUnit: [
|
|
|
- { required: true, message: '请选择包装单位', trigger: 'change' }
|
|
|
- ],
|
|
|
-
|
|
|
- netWeight: [
|
|
|
- { required: true, message: '请输入净重', trigger: 'blur' }
|
|
|
- ]
|
|
|
- },
|
|
|
- PathInfo: {},
|
|
|
- id: null,
|
|
|
-
|
|
|
- ruleCode: null,
|
|
|
- codeShow: false,
|
|
|
-
|
|
|
- status: null
|
|
|
- };
|
|
|
- },
|
|
|
- watch: {
|
|
|
- '$route.query.id': {
|
|
|
- handler(id) {
|
|
|
- if (id) {
|
|
|
- this._getDetails();
|
|
|
- } else {
|
|
|
- this.form = {
|
|
|
- categoryLevelGroupName: '',
|
|
|
- // categoryLevelName: '',
|
|
|
- isConsumable: 1,
|
|
|
- measuringUnit: '',
|
|
|
- weightUnit: '',
|
|
|
- packingUnit: '',
|
|
|
- extField: {}
|
|
|
- };
|
|
|
- this.purchaseInfo = {};
|
|
|
- this.remarkform = {
|
|
|
- remarkAttach: []
|
|
|
- };
|
|
|
- this.categoryAps = {};
|
|
|
- this.categoryMes = {};
|
|
|
- this.categoryMold = {};
|
|
|
- this.categoryPallet = {};
|
|
|
- this.categoryQms = {};
|
|
|
- this.categoryVehicle = {};
|
|
|
- this.categoryWms = {
|
|
|
- isUnpack: 1
|
|
|
- };
|
|
|
- this.packageDispositionVOList = [];
|
|
|
- this.categoryLevelPathId = null;
|
|
|
-
|
|
|
- this.dictList = [];
|
|
|
-
|
|
|
- this.fileList = [];
|
|
|
- }
|
|
|
- },
|
|
|
- deep: true,
|
|
|
- immediate: true
|
|
|
- }
|
|
|
- },
|
|
|
- async activated() {
|
|
|
- this.status = this.$route.query.status;
|
|
|
- this.form.categoryLevelId = this.$route.query.categoryLevelId;
|
|
|
- this.form.categoryLevelName = this.$route.query.categoryLevelName;
|
|
|
- this.form.categoryLevelPath = this.$route.query.categoryLevelPath;
|
|
|
- this.form.categoryLevelPathId = this.$route.query.categoryLevelPathId;
|
|
|
-
|
|
|
- this.ruleCode = this.$route.query.ruleCode;
|
|
|
- if (this.ruleCode && this.ruleCode != '自定义' && this.status != 0) {
|
|
|
- const code = await getCode(this.ruleCode);
|
|
|
- this.$set(this.form, 'code', code);
|
|
|
- }
|
|
|
-
|
|
|
- this.getFieldModel();
|
|
|
-
|
|
|
- this.getDictList('productionType');
|
|
|
- },
|
|
|
- async created() {
|
|
|
- //新增
|
|
|
-
|
|
|
- this.$set(
|
|
|
- this.form,
|
|
|
- 'categoryLevelId',
|
|
|
- this.$route.query.categoryLevelId
|
|
|
- );
|
|
|
- this.$set(
|
|
|
- this.form,
|
|
|
- 'categoryLevelName',
|
|
|
- this.$route.query.categoryLevelName
|
|
|
- );
|
|
|
- this.$set(
|
|
|
- this.form,
|
|
|
- 'categoryLevelPath',
|
|
|
- this.$route.query.categoryLevelPath
|
|
|
- );
|
|
|
- this.$set(
|
|
|
- this.form,
|
|
|
- 'categoryLevelPathId',
|
|
|
- this.$route.query.categoryLevelPathId
|
|
|
- );
|
|
|
- this.status = this.$route.query.status;
|
|
|
- this.ruleCode = this.$route.query.ruleCode;
|
|
|
- if (this.ruleCode && this.ruleCode != '自定义' && this.status != 0) {
|
|
|
- const code = await getCode(this.ruleCode);
|
|
|
- this.$set(this.form, 'code', code);
|
|
|
- }
|
|
|
-
|
|
|
- this.getFieldModel();
|
|
|
+ form: {
|
|
|
+ categoryLevelGroupName: '',
|
|
|
+ categoryLevelName: '',
|
|
|
+ isConsumable: 1,
|
|
|
+ measuringUnit: '',
|
|
|
+ weightUnit: '',
|
|
|
+ packingUnit: '',
|
|
|
+ attributeType:'',
|
|
|
+ extField: {}
|
|
|
+ },
|
|
|
|
|
|
- // if (this.$route.query.id) {
|
|
|
- // this._getDetails();
|
|
|
- // }
|
|
|
- this.getDictList('productionType');
|
|
|
- },
|
|
|
- methods: {
|
|
|
- changeUnit() {
|
|
|
- if (this.form.measuringUnit && this.form.packingUnit) {
|
|
|
- this.$refs.warehouseRefs.defaultBuild(this.form.packingUnit);
|
|
|
- }
|
|
|
+ remarkform: {
|
|
|
+ remarkAttach: []
|
|
|
},
|
|
|
- changePackagingSpecification(val) {
|
|
|
- console.log('changePackagingSpecification---', val);
|
|
|
- this.packagingSpecificationList = val;
|
|
|
+ categorySales: {},
|
|
|
+ categoryPurchase: { purchaseMultiplier: 1 },
|
|
|
+ categoryAps: {},
|
|
|
+ categoryMes: {},
|
|
|
+ categoryMold: {},
|
|
|
+ categoryPallet: {},
|
|
|
+ categoryQms: {},
|
|
|
+ categoryVehicle: {},
|
|
|
+ categoryWms: {
|
|
|
+ isUnpack: 1
|
|
|
},
|
|
|
- async _getDetails() {
|
|
|
- const data = await getDetails(this.$route.query.id);
|
|
|
- const info = deepClone(data);
|
|
|
+ packageDispositionVOList: [],
|
|
|
+ categoryLevelPathId: null,
|
|
|
|
|
|
- this.form = {
|
|
|
- ...info.category
|
|
|
- };
|
|
|
+ dictList: [],
|
|
|
|
|
|
- this.categoryLevelPathId = info.category.categoryLevelPathIdParent;
|
|
|
- this.judgeSet(info);
|
|
|
+ fileList: [],
|
|
|
+ // 表单验证规则
|
|
|
+ rules: {
|
|
|
+ categoryLevelGroupName: [
|
|
|
+ { required: true, message: '请选择所属物料组', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ code: [{ required: true, message: '请输入编码', trigger: 'blur' }],
|
|
|
+ name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
|
|
+ produceType: [
|
|
|
+ { required: true, message: '请选择生产类型', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ categoryLevelName: [
|
|
|
+ { required: true, message: '请选择所属分类', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ measuringUnit: [
|
|
|
+ { required: true, message: '请选择计量单位', trigger: 'change' }
|
|
|
+ ],
|
|
|
|
|
|
- if (this.status == 1) {
|
|
|
- rootCategoryCode(this.categoryLevelPathId).then((res) => {
|
|
|
- this.$set(this.form, 'code', res);
|
|
|
- });
|
|
|
+ weightUnit: [
|
|
|
+ { required: true, message: '请选择重量单位', trigger: 'change' }
|
|
|
+ ],
|
|
|
|
|
|
- this.form.createTime = null;
|
|
|
- }
|
|
|
+ packingUnit: [
|
|
|
+ { required: true, message: '请选择包装单位', trigger: 'change' }
|
|
|
+ ],
|
|
|
|
|
|
- this.$forceUpdate();
|
|
|
+ netWeight: [
|
|
|
+ { required: true, message: '请输入净重', trigger: 'blur' }
|
|
|
+ ]
|
|
|
},
|
|
|
- // 判断字段类型并赋值
|
|
|
- judgeSet(info) {
|
|
|
- console.log('info-------', info);
|
|
|
- if (typeof info.categoryAps == 'string') {
|
|
|
- this.categoryAps = {};
|
|
|
+ PathInfo: {},
|
|
|
+ id: null,
|
|
|
+
|
|
|
+ ruleCode: null,
|
|
|
+ codeShow: false,
|
|
|
+
|
|
|
+ status: null
|
|
|
+ };
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ '$route.query.id': {
|
|
|
+ handler(id) {
|
|
|
+ if (id) {
|
|
|
+ this._getDetails();
|
|
|
} else {
|
|
|
- this.categoryAps = info.categoryAps;
|
|
|
- }
|
|
|
- if (typeof info.categoryMes == 'string') {
|
|
|
+ this.form = {
|
|
|
+ categoryLevelGroupName: '',
|
|
|
+ // categoryLevelName: '',
|
|
|
+ isConsumable: 1,
|
|
|
+ measuringUnit: '',
|
|
|
+ weightUnit: '',
|
|
|
+ packingUnit: '',
|
|
|
+ extField: {}
|
|
|
+ };
|
|
|
+ this.purchaseInfo = {};
|
|
|
+ this.remarkform = {
|
|
|
+ remarkAttach: []
|
|
|
+ };
|
|
|
+ this.categoryAps = {};
|
|
|
this.categoryMes = {};
|
|
|
- } else {
|
|
|
- this.categoryMes = info.categoryMes;
|
|
|
- }
|
|
|
- if (typeof info.categoryMold == 'string') {
|
|
|
this.categoryMold = {};
|
|
|
- } else {
|
|
|
- this.categoryMold = info.categoryMold;
|
|
|
- }
|
|
|
- if (typeof info.categoryPallet == 'string') {
|
|
|
this.categoryPallet = {};
|
|
|
- } else {
|
|
|
- this.categoryPallet = info.categoryPallet;
|
|
|
- }
|
|
|
- if (typeof info.categorySales == 'string') {
|
|
|
- this.categorySales = {};
|
|
|
- } else {
|
|
|
- this.categorySales = info.categorySales;
|
|
|
- }
|
|
|
-
|
|
|
- if (typeof info.categoryPurchase == 'string') {
|
|
|
- this.categoryPurchase = {};
|
|
|
- } else {
|
|
|
- this.categoryPurchase = info.categoryPurchase;
|
|
|
- }
|
|
|
- if (typeof info.categoryQms == 'string') {
|
|
|
this.categoryQms = {};
|
|
|
- } else {
|
|
|
- this.categoryQms = info.categoryQms;
|
|
|
- }
|
|
|
- if (typeof info.categoryVehicle == 'string') {
|
|
|
this.categoryVehicle = {};
|
|
|
- } else {
|
|
|
- this.categoryVehicle = info.categoryVehicle;
|
|
|
- }
|
|
|
- if (typeof info.categoryWms == 'string') {
|
|
|
- this.categoryWms = {};
|
|
|
- } else {
|
|
|
- this.categoryWms = info.categoryWms;
|
|
|
- }
|
|
|
- if (typeof info.packageDispositionVOList == 'string') {
|
|
|
+ this.categoryWms = {
|
|
|
+ isUnpack: 1
|
|
|
+ };
|
|
|
this.packageDispositionVOList = [];
|
|
|
- } else {
|
|
|
- this.packageDispositionVOList = info.packageDispositionVOList;
|
|
|
- console.log(
|
|
|
- 'this.packageDispositionVOList---!!!----',
|
|
|
- this.packageDispositionVOList
|
|
|
- );
|
|
|
+ this.categoryLevelPathId = null;
|
|
|
+
|
|
|
+ this.dictList = [];
|
|
|
+
|
|
|
+ this.fileList = [];
|
|
|
}
|
|
|
},
|
|
|
+ deep: true,
|
|
|
+ immediate: true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async activated() {
|
|
|
+ this.status = this.$route.query.status;
|
|
|
+ this.form.categoryLevelId = this.$route.query.categoryLevelId;
|
|
|
+ this.form.categoryLevelName = this.$route.query.categoryLevelName;
|
|
|
+ this.form.categoryLevelPath = this.$route.query.categoryLevelPath;
|
|
|
+ this.form.categoryLevelPathId = this.$route.query.categoryLevelPathId;
|
|
|
+
|
|
|
+ this.ruleCode = this.$route.query.ruleCode;
|
|
|
+ if (this.ruleCode && this.ruleCode != '自定义' && this.status != 0) {
|
|
|
+ const code = await getCode(this.ruleCode);
|
|
|
+ this.$set(this.form, 'code', code);
|
|
|
+ }
|
|
|
|
|
|
- getFieldModel() {
|
|
|
- fieldModel({ relevance: 't_main_category' }).then((res) => {
|
|
|
- this.fileList = res;
|
|
|
+ this.getFieldModel();
|
|
|
+
|
|
|
+ this.getDictList('productionType');
|
|
|
+ },
|
|
|
+ async created() {
|
|
|
+ //新增
|
|
|
+
|
|
|
+ this.$set(
|
|
|
+ this.form,
|
|
|
+ 'categoryLevelId',
|
|
|
+ this.$route.query.categoryLevelId
|
|
|
+ );
|
|
|
+ this.$set(
|
|
|
+ this.form,
|
|
|
+ 'categoryLevelName',
|
|
|
+ this.$route.query.categoryLevelName
|
|
|
+ );
|
|
|
+ this.$set(
|
|
|
+ this.form,
|
|
|
+ 'categoryLevelPath',
|
|
|
+ this.$route.query.categoryLevelPath
|
|
|
+ );
|
|
|
+ this.$set(
|
|
|
+ this.form,
|
|
|
+ 'categoryLevelPathId',
|
|
|
+ this.$route.query.categoryLevelPathId
|
|
|
+ );
|
|
|
+ this.status = this.$route.query.status;
|
|
|
+ this.ruleCode = this.$route.query.ruleCode;
|
|
|
+ if (this.ruleCode && this.ruleCode != '自定义' && this.status != 0) {
|
|
|
+ const code = await getCode(this.ruleCode);
|
|
|
+ this.$set(this.form, 'code', code);
|
|
|
+ }
|
|
|
|
|
|
- this.fileList.forEach((f) => {
|
|
|
- this.$set(this.form.extField, f.prop, ''); // 初始化动态模型属性
|
|
|
- });
|
|
|
- });
|
|
|
- },
|
|
|
+ this.getFieldModel();
|
|
|
+
|
|
|
+ // if (this.$route.query.id) {
|
|
|
+ // this._getDetails();
|
|
|
+ // }
|
|
|
+ this.getDictList('productionType');
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ changeUnit() {
|
|
|
+ if (this.form.measuringUnit && this.form.packingUnit) {
|
|
|
+ this.$refs.warehouseRefs.defaultBuild(this.form.packingUnit);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ changePackagingSpecification(val) {
|
|
|
+ console.log('changePackagingSpecification---', val);
|
|
|
+ this.packagingSpecificationList = val;
|
|
|
+ },
|
|
|
+ async _getDetails() {
|
|
|
+ const data = await getDetails(this.$route.query.id);
|
|
|
+ const info = deepClone(data);
|
|
|
|
|
|
- // 确定分类
|
|
|
- async confirmCategory(node, title, PathInfo, ruleCode) {
|
|
|
- if (this.status != 0) {
|
|
|
- this.$set(this.form, 'code', null);
|
|
|
- }
|
|
|
- this.categoryLevelPathId = PathInfo.categoryLevelPathId.split(',')[0];
|
|
|
+ this.form = {
|
|
|
+ ...info.category
|
|
|
+ };
|
|
|
|
|
|
- if (title == '选择产品分类') {
|
|
|
- this.$set(this.form, 'productCategoryLevelName', node.name);
|
|
|
- this.$set(this.form, 'productCategoryLevelId', node.id);
|
|
|
- } else {
|
|
|
- this.$set(this.form, 'categoryLevelName', node.name);
|
|
|
- this.$set(this.form, 'categoryLevelId', node.id);
|
|
|
- this.$set(this.form, 'categoryLevelPath', node.name);
|
|
|
- this.$set(this.form, 'categoryLevelPathId', node.id);
|
|
|
- this.PathInfo = PathInfo;
|
|
|
+ this.categoryLevelPathId = info.category.categoryLevelPathIdParent;
|
|
|
+ this.judgeSet(info);
|
|
|
|
|
|
- this.ruleCode = ruleCode;
|
|
|
+ if (this.status == 1) {
|
|
|
+ rootCategoryCode(this.categoryLevelPathId).then((res) => {
|
|
|
+ this.$set(this.form, 'code', res);
|
|
|
+ });
|
|
|
|
|
|
- if (ruleCode && ruleCode != '自定义' && this.status != 0) {
|
|
|
- const code = await getCode(ruleCode);
|
|
|
- this.$set(this.form, 'code', code);
|
|
|
- }
|
|
|
- }
|
|
|
+ this.form.createTime = null;
|
|
|
+ }
|
|
|
|
|
|
- this.$forceUpdate();
|
|
|
- },
|
|
|
+ this.$forceUpdate();
|
|
|
+ },
|
|
|
+ // 判断字段类型并赋值
|
|
|
+ judgeSet(info) {
|
|
|
+ console.log('info-------', info);
|
|
|
+ if (typeof info.categoryAps == 'string') {
|
|
|
+ this.categoryAps = {};
|
|
|
+ } else {
|
|
|
+ this.categoryAps = info.categoryAps;
|
|
|
+ }
|
|
|
+ if (typeof info.categoryMes == 'string') {
|
|
|
+ this.categoryMes = {};
|
|
|
+ } else {
|
|
|
+ this.categoryMes = info.categoryMes;
|
|
|
+ }
|
|
|
+ if (typeof info.categoryMold == 'string') {
|
|
|
+ this.categoryMold = {};
|
|
|
+ } else {
|
|
|
+ this.categoryMold = info.categoryMold;
|
|
|
+ }
|
|
|
+ if (typeof info.categoryPallet == 'string') {
|
|
|
+ this.categoryPallet = {};
|
|
|
+ } else {
|
|
|
+ this.categoryPallet = info.categoryPallet;
|
|
|
+ }
|
|
|
+ if (typeof info.categorySales == 'string') {
|
|
|
+ this.categorySales = {};
|
|
|
+ } else {
|
|
|
+ this.categorySales = info.categorySales;
|
|
|
+ }
|
|
|
|
|
|
- async getDictList(code) {
|
|
|
- let { data: res } = await getByCode(code);
|
|
|
- this.dictList = res.map((item) => {
|
|
|
- let values = Object.keys(item);
|
|
|
- return {
|
|
|
- value: Number(values[0]),
|
|
|
- label: item[values[0]]
|
|
|
- };
|
|
|
+ if (typeof info.categoryPurchase == 'string') {
|
|
|
+ this.categoryPurchase = {};
|
|
|
+ } else {
|
|
|
+ this.categoryPurchase = info.categoryPurchase;
|
|
|
+ }
|
|
|
+ if (typeof info.categoryQms == 'string') {
|
|
|
+ this.categoryQms = {};
|
|
|
+ } else {
|
|
|
+ this.categoryQms = info.categoryQms;
|
|
|
+ }
|
|
|
+ if (typeof info.categoryVehicle == 'string') {
|
|
|
+ this.categoryVehicle = {};
|
|
|
+ } else {
|
|
|
+ this.categoryVehicle = info.categoryVehicle;
|
|
|
+ }
|
|
|
+ if (typeof info.categoryWms == 'string') {
|
|
|
+ this.categoryWms = {};
|
|
|
+ } else {
|
|
|
+ this.categoryWms = info.categoryWms;
|
|
|
+ }
|
|
|
+ if (typeof info.packageDispositionVOList == 'string') {
|
|
|
+ this.packageDispositionVOList = [];
|
|
|
+ } else {
|
|
|
+ this.packageDispositionVOList = info.packageDispositionVOList;
|
|
|
+ console.log(
|
|
|
+ 'this.packageDispositionVOList---!!!----',
|
|
|
+ this.packageDispositionVOList
|
|
|
+ );
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ getFieldModel() {
|
|
|
+ fieldModel({ relevance: 't_main_category' }).then((res) => {
|
|
|
+ this.fileList = res;
|
|
|
+
|
|
|
+ this.fileList.forEach((f) => {
|
|
|
+ this.$set(this.form.extField, f.prop, ''); // 初始化动态模型属性
|
|
|
});
|
|
|
- },
|
|
|
+ });
|
|
|
+ },
|
|
|
|
|
|
- openCategory() {
|
|
|
- this.$refs.categoryRefs.open();
|
|
|
- },
|
|
|
+ // 确定分类
|
|
|
+ async confirmCategory(node, title, PathInfo, ruleCode) {
|
|
|
+ if (this.status != 0) {
|
|
|
+ this.$set(this.form, 'code', null);
|
|
|
+ }
|
|
|
+ this.categoryLevelPathId = PathInfo.categoryLevelPathId.split(',')[0];
|
|
|
+
|
|
|
+ if (title == '选择产品分类') {
|
|
|
+ this.$set(this.form, 'productCategoryLevelName', node.name);
|
|
|
+ this.$set(this.form, 'productCategoryLevelId', node.id);
|
|
|
+ } else {
|
|
|
+ this.$set(this.form, 'categoryLevelName', node.name);
|
|
|
+ this.$set(this.form, 'categoryLevelId', node.id);
|
|
|
+ this.$set(this.form, 'categoryLevelPath', node.name);
|
|
|
+ this.$set(this.form, 'categoryLevelPathId', node.id);
|
|
|
+ this.PathInfo = PathInfo;
|
|
|
+
|
|
|
+ this.ruleCode = ruleCode;
|
|
|
+
|
|
|
+ if (ruleCode && ruleCode != '自定义' && this.status != 0) {
|
|
|
+ const code = await getCode(ruleCode);
|
|
|
+ this.$set(this.form, 'code', code);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- openCode() {
|
|
|
- this.codeShow = true;
|
|
|
- },
|
|
|
+ this.$forceUpdate();
|
|
|
+ },
|
|
|
|
|
|
- chooseCode(code) {
|
|
|
- this.$set(this.form, 'code', code);
|
|
|
- this.codeShow = false;
|
|
|
- this.$forceUpdate();
|
|
|
- },
|
|
|
+ async getDictList(code) {
|
|
|
+ let { data: res } = await getByCode(code);
|
|
|
+ this.dictList = res.map((item) => {
|
|
|
+ let values = Object.keys(item);
|
|
|
+ return {
|
|
|
+ value: Number(values[0]),
|
|
|
+ label: item[values[0]]
|
|
|
+ };
|
|
|
+ });
|
|
|
+ },
|
|
|
|
|
|
- cancel() {
|
|
|
- // finishPageTab();
|
|
|
- // this.$router.go(-1);
|
|
|
- if (this.$route.query.rootTreeId == 9) {
|
|
|
- this.$router.push({
|
|
|
- path: '/product/oneProduct',
|
|
|
- query: {
|
|
|
- categoryLevelId: this.form.categoryLevelId
|
|
|
- }
|
|
|
- });
|
|
|
- } else {
|
|
|
- this.$router.push({
|
|
|
- path: '/material/product',
|
|
|
- query: {
|
|
|
- categoryLevelId: this.form.categoryLevelId
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- },
|
|
|
+ openCategory() {
|
|
|
+ this.$refs.categoryRefs.open();
|
|
|
+ },
|
|
|
|
|
|
- // 保存
|
|
|
- submit() {
|
|
|
- this.$refs.manageForm.validate(async (valid) => {
|
|
|
- let productionValid = await this.$refs.productionRefs.getFormValid();
|
|
|
+ openCode() {
|
|
|
+ this.codeShow = true;
|
|
|
+ },
|
|
|
|
|
|
- if (!valid || !productionValid) {
|
|
|
- return false;
|
|
|
- }
|
|
|
+ chooseCode(code) {
|
|
|
+ this.$set(this.form, 'code', code);
|
|
|
+ this.codeShow = false;
|
|
|
+ this.$forceUpdate();
|
|
|
+ },
|
|
|
|
|
|
- let packageDispositionVOList = [];
|
|
|
- if (this.packagingSpecificationList.length > 0) {
|
|
|
- packageDispositionVOList = this.packagingSpecificationList.map(
|
|
|
- (item) => {
|
|
|
- let obj = {
|
|
|
- code: item.code,
|
|
|
- name: item.name
|
|
|
- };
|
|
|
- return [
|
|
|
- {
|
|
|
- ...obj,
|
|
|
- id: item.id0,
|
|
|
- sort: 0,
|
|
|
- status: item.status,
|
|
|
- packageCell: 1,
|
|
|
- packageUnit: item.packageUnit,
|
|
|
- conversionUnit: item.packageUnit
|
|
|
- },
|
|
|
- {
|
|
|
- ...obj,
|
|
|
- id: item.id1,
|
|
|
- sort: 1,
|
|
|
- packageCell: item.minPackageCell,
|
|
|
- packageUnit: item.packageUnit,
|
|
|
- conversionUnit: item.minConversionUnit,
|
|
|
- status: item.status
|
|
|
- },
|
|
|
- {
|
|
|
- ...obj,
|
|
|
- id: item.id2,
|
|
|
- sort: 2,
|
|
|
- packageCell: item.inPackageCell,
|
|
|
- packageUnit: item.minConversionUnit,
|
|
|
- conversionUnit: item.inConversionUnit,
|
|
|
- status: item.status
|
|
|
- },
|
|
|
- {
|
|
|
- ...obj,
|
|
|
- id: item.id3,
|
|
|
- sort: 3,
|
|
|
- packageCell: item.outPackageCell,
|
|
|
- packageUnit: item.inConversionUnit,
|
|
|
- conversionUnit: item.outConversionUnit,
|
|
|
- status: item.status
|
|
|
- }
|
|
|
- ];
|
|
|
- }
|
|
|
- );
|
|
|
- let packagingSpecificationList =
|
|
|
- this.packagingSpecificationList.filter(
|
|
|
- (item) => item.status == 1
|
|
|
- );
|
|
|
- this.form.extField.packingSpecification = packagingSpecificationList
|
|
|
- .map((item) => {
|
|
|
- return [
|
|
|
- `${item.minPackageCell}${item.packageUnit}/${item.minConversionUnit}`,
|
|
|
- `${item.inPackageCell}${item.minConversionUnit}/${item.inConversionUnit}`,
|
|
|
- `${item.outPackageCell}${item.inConversionUnit}/${item.outConversionUnit}`
|
|
|
- ];
|
|
|
- })
|
|
|
- .flat()
|
|
|
- .join(',');
|
|
|
- } else {
|
|
|
- this.form.extField.packingSpecification = '';
|
|
|
+ cancel() {
|
|
|
+ // finishPageTab();
|
|
|
+ // this.$router.go(-1);
|
|
|
+ if (this.$route.query.rootTreeId == 9) {
|
|
|
+ this.$router.push({
|
|
|
+ path: '/product/oneProduct',
|
|
|
+ query: {
|
|
|
+ categoryLevelId: this.form.categoryLevelId
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.$router.push({
|
|
|
+ path: '/material/product',
|
|
|
+ query: {
|
|
|
+ categoryLevelId: this.form.categoryLevelId
|
|
|
}
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
- this.loading = true;
|
|
|
- // const imgList = this.remarkform.imgList;
|
|
|
- // const arr = [];
|
|
|
- // if (imgList.length) {
|
|
|
- // imgList.map((item) => {
|
|
|
- // arr.push(item.storePath);
|
|
|
- // });
|
|
|
- // this.form.remarkAttach = arr.join(',');
|
|
|
- // }
|
|
|
- // this.form.remark = this.remarkform.remark
|
|
|
- // ? this.remarkform.remark
|
|
|
- // : '';
|
|
|
-
|
|
|
- const data = {
|
|
|
- categorySales: this.categorySales,
|
|
|
- categoryPurchase: this.categoryPurchase,
|
|
|
- categoryWms: this.categoryWms,
|
|
|
- categoryAps: this.categoryAps,
|
|
|
- categoryMes: this.categoryMes,
|
|
|
- categoryMold: this.categoryMold,
|
|
|
- categoryPallet: this.categoryPallet,
|
|
|
- categoryQms: this.categoryQms,
|
|
|
- categoryVehicle: this.categoryVehicle,
|
|
|
- category: {
|
|
|
- ...this.form,
|
|
|
- ...this.remarkform,
|
|
|
- ...this.PathInfo
|
|
|
- },
|
|
|
- packageDispositionVOList: packageDispositionVOList.flat()
|
|
|
- };
|
|
|
+ // 保存
|
|
|
+ submit() {
|
|
|
+ this.$refs.manageForm.validate(async (valid) => {
|
|
|
+ let productionValid = await this.$refs.productionRefs.getFormValid();
|
|
|
|
|
|
- if (this.$route.query.status == 1) {
|
|
|
- data.categorySales.id = null;
|
|
|
- data.categoryPurchase.id = null;
|
|
|
- data.category.id = null;
|
|
|
- data.categoryWms.id = null;
|
|
|
- data.categoryAps.id = null;
|
|
|
- data.categoryMes.id = null;
|
|
|
- data.categoryMold.id = null;
|
|
|
- data.categoryPallet.id = null;
|
|
|
- data.categoryQms.id = null;
|
|
|
- data.categoryVehicle.id = null;
|
|
|
- data.packageDispositionVOList = data.packageDispositionVOList.map(
|
|
|
- (item) => {
|
|
|
- return {
|
|
|
- ...item,
|
|
|
- id: null
|
|
|
- };
|
|
|
- }
|
|
|
+ if (!valid || !productionValid) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ let packageDispositionVOList = [];
|
|
|
+ if (this.packagingSpecificationList.length > 0) {
|
|
|
+ packageDispositionVOList = this.packagingSpecificationList.map(
|
|
|
+ (item) => {
|
|
|
+ let obj = {
|
|
|
+ code: item.code,
|
|
|
+ name: item.name
|
|
|
+ };
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ ...obj,
|
|
|
+ id: item.id0,
|
|
|
+ sort: 0,
|
|
|
+ status: item.status,
|
|
|
+ packageCell: 1,
|
|
|
+ packageUnit: item.packageUnit,
|
|
|
+ conversionUnit: item.packageUnit
|
|
|
+ },
|
|
|
+ {
|
|
|
+ ...obj,
|
|
|
+ id: item.id1,
|
|
|
+ sort: 1,
|
|
|
+ packageCell: item.minPackageCell,
|
|
|
+ packageUnit: item.packageUnit,
|
|
|
+ conversionUnit: item.minConversionUnit,
|
|
|
+ status: item.status
|
|
|
+ },
|
|
|
+ {
|
|
|
+ ...obj,
|
|
|
+ id: item.id2,
|
|
|
+ sort: 2,
|
|
|
+ packageCell: item.inPackageCell,
|
|
|
+ packageUnit: item.minConversionUnit,
|
|
|
+ conversionUnit: item.inConversionUnit,
|
|
|
+ status: item.status
|
|
|
+ },
|
|
|
+ {
|
|
|
+ ...obj,
|
|
|
+ id: item.id3,
|
|
|
+ sort: 3,
|
|
|
+ packageCell: item.outPackageCell,
|
|
|
+ packageUnit: item.inConversionUnit,
|
|
|
+ conversionUnit: item.outConversionUnit,
|
|
|
+ status: item.status
|
|
|
+ }
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ );
|
|
|
+ let packagingSpecificationList =
|
|
|
+ this.packagingSpecificationList.filter(
|
|
|
+ (item) => item.status == 1
|
|
|
);
|
|
|
- }
|
|
|
- console.log('保存', data);
|
|
|
- addMaterial(data)
|
|
|
- .then((msg) => {
|
|
|
- this.loading = false;
|
|
|
- this.$message.success(msg);
|
|
|
- // reloadPageTab({ fullPath: '/material/product' });
|
|
|
- // this.$router.go(-1);
|
|
|
- this.cancel();
|
|
|
- // if (this.$route.query.rootTreeId == 9) {
|
|
|
- // this.$router.push({
|
|
|
- // path: '/product/oneProduct',
|
|
|
- // query: {
|
|
|
- // categoryLevelId: this.form.categoryLevelId
|
|
|
- // }
|
|
|
- // });
|
|
|
- // } else {
|
|
|
- // this.$router.push({
|
|
|
- // path: '/material/product',
|
|
|
- // query: {
|
|
|
- // categoryLevelId: this.form.categoryLevelId
|
|
|
- // }
|
|
|
- // });
|
|
|
- // }
|
|
|
+ this.form.extField.packingSpecification = packagingSpecificationList
|
|
|
+ .map((item) => {
|
|
|
+ return [
|
|
|
+ `${item.minPackageCell}${item.packageUnit}/${item.minConversionUnit}`,
|
|
|
+ `${item.inPackageCell}${item.minConversionUnit}/${item.inConversionUnit}`,
|
|
|
+ `${item.outPackageCell}${item.inConversionUnit}/${item.outConversionUnit}`
|
|
|
+ ];
|
|
|
})
|
|
|
- .catch((e) => {
|
|
|
- this.loading = false;
|
|
|
- });
|
|
|
- });
|
|
|
- }
|
|
|
+ .flat()
|
|
|
+ .join(',');
|
|
|
+ } else {
|
|
|
+ this.form.extField.packingSpecification = '';
|
|
|
+ }
|
|
|
+
|
|
|
+ this.loading = true;
|
|
|
+ // const imgList = this.remarkform.imgList;
|
|
|
+ // const arr = [];
|
|
|
+ // if (imgList.length) {
|
|
|
+ // imgList.map((item) => {
|
|
|
+ // arr.push(item.storePath);
|
|
|
+ // });
|
|
|
+ // this.form.remarkAttach = arr.join(',');
|
|
|
+ // }
|
|
|
+ // this.form.remark = this.remarkform.remark
|
|
|
+ // ? this.remarkform.remark
|
|
|
+ // : '';
|
|
|
+
|
|
|
+ const data = {
|
|
|
+ categorySales: this.categorySales,
|
|
|
+ categoryPurchase: this.categoryPurchase,
|
|
|
+ categoryWms: this.categoryWms,
|
|
|
+ categoryAps: this.categoryAps,
|
|
|
+ categoryMes: this.categoryMes,
|
|
|
+ categoryMold: this.categoryMold,
|
|
|
+ categoryPallet: this.categoryPallet,
|
|
|
+ categoryQms: this.categoryQms,
|
|
|
+ categoryVehicle: this.categoryVehicle,
|
|
|
+ category: {
|
|
|
+ ...this.form,
|
|
|
+ ...this.remarkform,
|
|
|
+ ...this.PathInfo
|
|
|
+ },
|
|
|
+ packageDispositionVOList: packageDispositionVOList.flat()
|
|
|
+ };
|
|
|
+
|
|
|
+ if (this.$route.query.status == 1) {
|
|
|
+ data.categorySales.id = null;
|
|
|
+ data.categoryPurchase.id = null;
|
|
|
+ data.category.id = null;
|
|
|
+ data.categoryWms.id = null;
|
|
|
+ data.categoryAps.id = null;
|
|
|
+ data.categoryMes.id = null;
|
|
|
+ data.categoryMold.id = null;
|
|
|
+ data.categoryPallet.id = null;
|
|
|
+ data.categoryQms.id = null;
|
|
|
+ data.categoryVehicle.id = null;
|
|
|
+ data.packageDispositionVOList = data.packageDispositionVOList.map(
|
|
|
+ (item) => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ id: null
|
|
|
+ };
|
|
|
+ }
|
|
|
+ );
|
|
|
+ }
|
|
|
+ console.log('保存', data);
|
|
|
+ addMaterial(data)
|
|
|
+ .then((msg) => {
|
|
|
+ this.loading = false;
|
|
|
+ this.$message.success(msg);
|
|
|
+ // reloadPageTab({ fullPath: '/material/product' });
|
|
|
+ // this.$router.go(-1);
|
|
|
+ this.cancel();
|
|
|
+ // if (this.$route.query.rootTreeId == 9) {
|
|
|
+ // this.$router.push({
|
|
|
+ // path: '/product/oneProduct',
|
|
|
+ // query: {
|
|
|
+ // categoryLevelId: this.form.categoryLevelId
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // } else {
|
|
|
+ // this.$router.push({
|
|
|
+ // path: '/material/product',
|
|
|
+ // query: {
|
|
|
+ // categoryLevelId: this.form.categoryLevelId
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ this.loading = false;
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
- };
|
|
|
+ }
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
- .ele-page-header {
|
|
|
- border: none;
|
|
|
- }
|
|
|
+.ele-page-header {
|
|
|
+ border: none;
|
|
|
+}
|
|
|
+
|
|
|
+.body-top {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ background: #fff;
|
|
|
|
|
|
- .body-top {
|
|
|
+ .top-left {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
- background: #fff;
|
|
|
+ justify-content: flex-start;
|
|
|
+ margin-left: -25px;
|
|
|
|
|
|
- .top-left {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: flex-start;
|
|
|
- margin-left: -25px;
|
|
|
-
|
|
|
- .el-form-item {
|
|
|
- margin-bottom: 0;
|
|
|
- }
|
|
|
+ .el-form-item {
|
|
|
+ margin-bottom: 0;
|
|
|
}
|
|
|
}
|
|
|
+}
|
|
|
|
|
|
- .divider {
|
|
|
- margin: 20px 0;
|
|
|
+.divider {
|
|
|
+ margin: 20px 0;
|
|
|
|
|
|
- .title {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- margin-bottom: 10px;
|
|
|
-
|
|
|
- div {
|
|
|
- width: 8px;
|
|
|
- height: 20px;
|
|
|
- margin-right: 10px;
|
|
|
- }
|
|
|
+ .title {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 10px;
|
|
|
|
|
|
- span {
|
|
|
- font-size: 20px;
|
|
|
- }
|
|
|
+ div {
|
|
|
+ width: 8px;
|
|
|
+ height: 20px;
|
|
|
+ margin-right: 10px;
|
|
|
}
|
|
|
|
|
|
- .ele-width {
|
|
|
- width: 100%;
|
|
|
- height: 2px;
|
|
|
+ span {
|
|
|
+ font-size: 20px;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- .form-line {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
+ .ele-width {
|
|
|
+ width: 100%;
|
|
|
+ height: 2px;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- .line-select {
|
|
|
- margin-left: 15px;
|
|
|
- }
|
|
|
+.form-line {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+
|
|
|
+ .line-select {
|
|
|
+ margin-left: 15px;
|
|
|
}
|
|
|
+}
|
|
|
</style>
|