|
|
@@ -1,424 +0,0 @@
|
|
|
-<template>
|
|
|
- <div class="ele-body">
|
|
|
- <el-card shadow="never">
|
|
|
- <el-form label-width="120px" ref="manageForm" :model="form" :rules="rules">
|
|
|
- <div class="body-top">
|
|
|
- {{ titileStatus == 0 ? '修改' : titileStatus == 1 ? '复制' : '添加' }}物料
|
|
|
- </div>
|
|
|
- <div class="divider">
|
|
|
- <div class="title">
|
|
|
- <div class="ele-bg-primary"></div>
|
|
|
- <span>基本信息</span>
|
|
|
- </div>
|
|
|
- <div class="ele-bg-primary ele-width"></div>
|
|
|
- </div>
|
|
|
- <el-row :gutter="24">
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="编码" prop="code">
|
|
|
- <el-input v-model="form.code" :disabled="titileStatus == 0 ? true : false" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="名称" prop="name">
|
|
|
- <el-input v-model="form.name" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="分类" prop="categoryLevelName">
|
|
|
- <el-input v-model="form.categoryLevelName" @click.native="openCategory" readonly />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="牌号" prop="brandNum">
|
|
|
- <el-input v-model="form.brandNum" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <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="modelType">
|
|
|
- <el-input v-model="form.modelType" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="计量单位" prop="measuringUnit">
|
|
|
- <DictSelection dictName="计量单位" clearable v-model="form.measuringUnit">
|
|
|
- </DictSelection>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="包装单位" prop="packingUnit">
|
|
|
- <DictSelection dictName="包装单位" clearable v-model="form.packingUnit">
|
|
|
- </DictSelection>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <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>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="毛重">
|
|
|
- <div class="form-line">
|
|
|
- <el-input v-model="form.roughWeight" />
|
|
|
- <DictSelection class="line-select" dictName="重量单位" clearable v-model="form.weightUnit">
|
|
|
- </DictSelection>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8" class='net-box'>
|
|
|
- <el-form-item label="净重" prop="netWeight">
|
|
|
- <el-input v-model="form.netWeight" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label-width="15px" prop="weightUnit" style="width: 45%;">
|
|
|
- <DictSelection class="line-select" dictName="重量单位" clearable v-model="form.weightUnit">
|
|
|
- </DictSelection>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="是否产品" prop="isProduct">
|
|
|
- <el-switch @change="changeProduct" v-model="form.isProduct" :active-value="1" :inactive-value="0">
|
|
|
- </el-switch>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="所属部门">
|
|
|
- <deptSelect v-model="form.deptLeaderId" @changeGroup="searchDeptNodeClick" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="负责人">
|
|
|
- <personSelect ref="directorRef" v-model="form.deptId" @selfChange="handleDirectorChange" :init="false" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="产品分类" prop="productCategoryLevelName" :rules='form.isProduct ? [{ required: true, trigger: "change", message: "请选择产品分类" }] : []
|
|
|
- '>
|
|
|
- <el-input readonly :disabled="!form.isProduct" v-model="form.productCategoryLevelName"
|
|
|
- @click.native="openProductCategory" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
-
|
|
|
- <!-- 分类选择弹窗 -->
|
|
|
- <CategoryDialog ref="categoryRefs" @chooseCategory='confirmCategory' />
|
|
|
- <!-- 仓储配置 -->
|
|
|
- <WarehouseInfo ref="warehouseRefs" :form="categoryWms" />
|
|
|
- <!-- 生产信息 -->
|
|
|
- <ProductionInfo ref="productionRefs" :form="categoryMes" />
|
|
|
- <!-- 计划 -->
|
|
|
- <PlanInfo ref="planRefs" :form="categoryAps" />
|
|
|
- <!-- 质量配置 -->
|
|
|
- <QualityInfo ref="qualityRefs" :form="categoryQms" />
|
|
|
- <!-- 舟皿信息 -->
|
|
|
- <BoatInfo ref="qualityRefs" :form="categoryPallet" />
|
|
|
- <!-- 周转车信息 -->
|
|
|
- <TurnoverInfo ref="turnoverRefs" :form="categoryVehicle" />
|
|
|
- <!-- 模具信息 -->
|
|
|
- <MoldInfo ref="moldRefs" :form="categoryMold" />
|
|
|
- <!-- 备注信息 -->
|
|
|
- <RemarkInfo ref="remarkRefs" :form="remarkform" />
|
|
|
- <div class="footer-btn">
|
|
|
- <el-button @click="cancel">返回</el-button>
|
|
|
- <el-button type="primary" @click="submit" :loading="loading">保存</el-button>
|
|
|
- </div>
|
|
|
- </el-form>
|
|
|
- </el-card>
|
|
|
-
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-
|
|
|
-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 { addMaterial, editMaterial, getDetailInfo } from '@/api/material/manage.js';
|
|
|
-import { finishPageTab, reloadPageTab } from '@/utils/page-tab-util';
|
|
|
-import { deepClone } from '@/utils/index'
|
|
|
-export default {
|
|
|
- name: 'ManageMaterial',
|
|
|
- components: {
|
|
|
- deptSelect, personSelect, WarehouseInfo, ProductionInfo,
|
|
|
- PlanInfo, QualityInfo, BoatInfo, TurnoverInfo, MoldInfo, RemarkInfo, CategoryDialog
|
|
|
- },
|
|
|
- data() {
|
|
|
- const defaultForm = {
|
|
|
-
|
|
|
- categoryLevelName: ''
|
|
|
- };
|
|
|
- return {
|
|
|
- loading: false,
|
|
|
- form: { ...defaultForm },
|
|
|
- categoryAps: {
|
|
|
- unit: 1,
|
|
|
- orderIntervalUnit: 1
|
|
|
- },
|
|
|
- categoryMes: {},
|
|
|
- categoryMold: {},
|
|
|
- categoryPallet: {},
|
|
|
- categoryQms: {},
|
|
|
- categoryVehicle: {},
|
|
|
- remarkform: {
|
|
|
- remarkAttach: []
|
|
|
- },
|
|
|
- categoryWms: {},
|
|
|
- chooseItem: null,
|
|
|
- PathInfo: {},
|
|
|
- titileStatus: 1
|
|
|
- };
|
|
|
- },
|
|
|
- computed: {
|
|
|
- rules() {
|
|
|
- const rules = {
|
|
|
-
|
|
|
- code: [{ required: true, message: '请输入编码', trigger: 'blur' }],
|
|
|
- name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
|
|
|
- categoryLevelName: [{ required: true, message: '请选择所属分类', trigger: 'change' }],
|
|
|
- measuringUnit: [{ required: true, message: '请选择计量单位', trigger: 'change' }],
|
|
|
- packingUnit: [{ required: true, message: '请选择包装单位', trigger: 'change' }],
|
|
|
- isProduct: [{ required: true, message: '请选择是否产品', trigger: 'change' }],
|
|
|
- netWeight: [{ required: true, message: '请输入净重', trigger: 'blur' }],
|
|
|
- weightUnit: [{ required: true, message: '请选择重量单位', trigger: 'change' }]
|
|
|
- }
|
|
|
- return rules
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- created() {
|
|
|
-
|
|
|
-
|
|
|
- this.titileStatus = this.$route.query.status
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.directorRef.getList();
|
|
|
- });
|
|
|
- if (this.$route.query.id) {
|
|
|
- this.getDetail(this.$route.query.id)
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- methods: {
|
|
|
- // 获取详情
|
|
|
- getDetail(id) {
|
|
|
- getDetailInfo(id).then(res => {
|
|
|
- const info = deepClone(res)
|
|
|
- this.form = {
|
|
|
- ...info.category
|
|
|
- }
|
|
|
- this.judgeSet(info)
|
|
|
- delete this.form.remarkAttach
|
|
|
- delete this.form.remark
|
|
|
- this.$set(this.remarkform, 'remarkAttach', info.category.remarkAttach)
|
|
|
- this.$set(this.remarkform, 'remark', info.category.remark)
|
|
|
- this.$set(this.form, 'categoryLevelGroupName', this.chooseItem.name)
|
|
|
- if (this.titileStatus == 1) {
|
|
|
- delete this.form.code
|
|
|
- delete this.form.id
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
-
|
|
|
- // 判断字段类型并赋值
|
|
|
- judgeSet(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.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
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- // 选择所属部门
|
|
|
- searchDeptNodeClick(id, info) {
|
|
|
- // 根据部门获取人员
|
|
|
- const params = { executeGroupId: id };
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs.directorRef.getList(params);
|
|
|
- });
|
|
|
- },
|
|
|
- //选择负责人
|
|
|
- handleDirectorChange(id, info) {
|
|
|
- },
|
|
|
-
|
|
|
-
|
|
|
- // 选择分类
|
|
|
- openCategory() {
|
|
|
- this.$refs.categoryRefs.open(this.$route.query.rootId, '选择分类')
|
|
|
- },
|
|
|
- // 选择产品分类
|
|
|
- openProductCategory() {
|
|
|
- if (!this.form.isProduct) return
|
|
|
- this.$refs.categoryRefs.open(9, '选择产品分类')
|
|
|
- },
|
|
|
-
|
|
|
- cancel() {
|
|
|
- finishPageTab()
|
|
|
- this.$router.go(-1)
|
|
|
- },
|
|
|
-
|
|
|
- // 确定分类
|
|
|
- confirmCategory(node, title, PathInfo) {
|
|
|
- if (title == '选择产品分类') {
|
|
|
- this.$set(this.form, 'productCategoryLevelName', node.name)
|
|
|
- this.$set(this.form, 'productCategoryLevelId', node.id)
|
|
|
- this.remarkform.productNode = node
|
|
|
- } else {
|
|
|
- this.$set(this.form, 'categoryLevelName', node.name)
|
|
|
- this.$set(this.form, 'categoryLevelId', node.id)
|
|
|
- this.remarkform.categoryNode = node
|
|
|
- this.PathInfo = PathInfo
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- changeProduct() {
|
|
|
- if (!this.form.isProduct) {
|
|
|
- this.$refs.manageForm.clearValidate(["productCategoryLevelName"]);
|
|
|
- this.$set(this.form, 'productCategoryLevelName', '')
|
|
|
- this.$set(this.form, 'productCategoryLevelId', '')
|
|
|
- }
|
|
|
- },
|
|
|
-
|
|
|
- // 保存
|
|
|
- submit() {
|
|
|
- this.$refs.manageForm.validate((valid) => {
|
|
|
- if (!valid) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- this.loading = true;
|
|
|
- const data = {
|
|
|
- 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
|
|
|
- }
|
|
|
- };
|
|
|
- // const saveOrUpdate = this.form.id ? editMaterial : addMaterial;
|
|
|
- addMaterial(data)
|
|
|
- .then((msg) => {
|
|
|
- this.loading = false;
|
|
|
- this.$message.success(msg);
|
|
|
- finishPageTab()
|
|
|
- reloadPageTab({ fullPath: 'treeClassify/details' });
|
|
|
- this.$router.go(-1)
|
|
|
- })
|
|
|
- .catch((e) => {
|
|
|
- this.loading = false;
|
|
|
- });
|
|
|
- })
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-};
|
|
|
-</script>
|
|
|
-
|
|
|
-<style lang="scss" scoped>
|
|
|
-.body-top {
|
|
|
-
|
|
|
- background: #fff;
|
|
|
- font: 24px;
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-.divider {
|
|
|
- margin: 20px 0;
|
|
|
-
|
|
|
- .title {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- margin-bottom: 10px;
|
|
|
-
|
|
|
- div {
|
|
|
- width: 8px;
|
|
|
- height: 20px;
|
|
|
- margin-right: 10px;
|
|
|
- }
|
|
|
-
|
|
|
- span {
|
|
|
- font-size: 20px;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- .ele-width {
|
|
|
- width: 100%;
|
|
|
- height: 2px;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-.form-line {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
-
|
|
|
- .line-select {
|
|
|
- margin-left: 15px;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-.footer-btn {
|
|
|
- width: 100%;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: center;
|
|
|
- margin: 20px auto;
|
|
|
-}
|
|
|
-
|
|
|
-.net-box {
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
- justify-content: flex-start;
|
|
|
-}</style>
|