Преглед изворни кода

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend into dev

lijiang007 пре 2 година
родитељ
комит
e1124cbe62

+ 168 - 182
src/views/classifyManage/treeClassify/details.vue

@@ -1,63 +1,33 @@
 <template>
   <div class="ele-body">
     <el-card shadow="never">
-      <ele-split-layout
-        width="356px"
-        allow-collapse
-        :right-style="{ overflow: 'hidden' }"
-      >
+      <ele-split-layout width="336px" allow-collapse :right-style="{ overflow: 'hidden' }">
         <div>
           <!-- 操作按钮 -->
           <ele-toolbar class="ele-toolbar-actions">
             <div style="margin: 5px 0">
-              <el-button
-                size="small"
-                type="primary"
-                icon="el-icon-plus"
-                class="ele-btn-icon"
-                @click="openEdit(true)"
-              >
+              <el-button size="small" type="primary" icon="el-icon-plus" class="ele-btn-icon" @click="openEdit(true)">
                 新建下级节点
               </el-button>
-              <el-button
-                size="small"
-                type="warning"
-                icon="el-icon-edit"
-                class="ele-btn-icon"
-                :disabled="!current.id || current.id == rootId"
-                @click="openEdit(false)"
-              >
+              <el-button size="small" type="warning" icon="el-icon-edit" class="ele-btn-icon"
+                :disabled="!current.id || current.id == rootId" @click="openEdit(false)">
                 编辑节点
               </el-button>
-              <el-button
-                size="small"
-                type="danger"
-                icon="el-icon-delete"
-                class="ele-btn-icon"
-                :disabled="!current.id || current.id == rootId"
-                @click="deleteCategory"
-              >
+              <el-button size="small" type="danger" icon="el-icon-delete" class="ele-btn-icon"
+                :disabled="!current.id || current.id == rootId" @click="deleteCategory">
                 删除
               </el-button>
             </div>
           </ele-toolbar>
           <div class="ele-border-lighter sys-organization-list">
-            <el-tree
-              :data="treeData"
-              :props="defaultProps"
-              ref="treeRef"
-              :default-expanded-keys="current && current.id ? [current.id] : []"
-              :highlight-current="true"
-              node-key="id"
-              @node-click="handleNodeClick"
-            ></el-tree>
+            <el-tree :data="treeData" :props="defaultProps" ref="treeRef"
+              :default-expanded-keys="current && current.id ? [current.id] : []" :highlight-current="true" node-key="id"
+              @node-click="handleNodeClick"></el-tree>
           </div>
         </div>
         <template v-slot:content>
           <div class="ele-border-lighter form-content" v-loading="loading">
-            <ele-toolbar class="ele-toolbar-actions">
-              <h4 style="margin: 5px 0"> 节点信息 </h4>
-            </ele-toolbar>
+ 
             <div class="form-wrapper">
               <el-form size="mini" label-width="100px" class="ele-form-detail">
                 <el-row :gutter="15" v-if="current.id == rootId">
@@ -91,35 +61,38 @@
                   </el-col>
                 </el-row>
                 <el-row :gutter="15" v-else>
-                  <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
+                  <el-col v-bind="styleResponsive ? { sm: 6 } : { span: 6 }">
                     <el-form-item label="父级节点:">
                       <div class="ele-text-secondary">
                         {{ current.parentName }}
                       </div>
                     </el-form-item>
                   </el-col>
-                  <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-                    <el-form-item label="层级全览:">
+              
+                  <el-col v-bind="styleResponsive ? { sm: 6 } : { span: 6 }">
+                    <el-form-item label="节点编码:">
                       <div class="ele-text-secondary">
-                        {{ fullName }}
+                        {{ current.code }}
                       </div>
                     </el-form-item>
                   </el-col>
-                  <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
-                    <el-form-item label="节点编码:">
+
+                  <el-col v-bind="styleResponsive ? { sm: 10 } : { span: 10  }">
+                    <el-form-item label="层级全览:">
                       <div class="ele-text-secondary">
-                        {{ current.code }}
+                        {{ fullName }}
                       </div>
                     </el-form-item>
                   </el-col>
-                  <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
+
+                  <el-col v-bind="styleResponsive ? { sm: 6 } : { span: 6 }">
                     <el-form-item label="节点名称:">
                       <div class="ele-text-secondary">
                         {{ current.name }}
                       </div>
                     </el-form-item>
                   </el-col>
-                  <el-col v-bind="styleResponsive ? { sm: 12 } : { span: 12 }">
+                  <el-col v-bind="styleResponsive ? { sm: 6 } : { span: 6 }">
                     <el-form-item label="与下层分隔:">
                       <div class="ele-text-secondary">
                         {{ current.separate }}
@@ -129,164 +102,177 @@
                 </el-row>
               </el-form>
             </div>
+
+            <IndexSearch @search="reload" />
+
+            <IndexData ref="listData" v-if="current" :current-id="current.id" :data="current" :rootId="rootId">
+            </IndexData>
+
+
           </div>
         </template>
       </ele-split-layout>
     </el-card>
     <!-- 编辑弹窗 -->
-    <list-edit
-      ref="editRef"
-      @done="reload"
-      :rootId="rootId"
-      :curNode="curNode"
-    />
+    <list-edit ref="editRef" @done="reload" :rootId="rootId" :curNode="curNode" />
     <!-- <classify-manage-edit ref="editRef" @done="reload" /> -->
   </div>
 </template>
 <script>
-  import ListEdit from './components/list-edit.vue';
-  import classifyManageEdit from './components/classifyManageEdit.vue';
-  import dictMixins from '@/mixins/dictMixins';
-  import {
-    getTreeByPid,
-    getInfoById,
-    deleteCategory
-  } from '@/api/classifyManage';
-  export default {
-    components: {
-      classifyManageEdit,
-      ListEdit
+import ListEdit from './components/list-edit.vue';
+
+import IndexData from './manage/components/index-data.vue';
+import IndexSearch from './manage/components/index-search.vue'
+import classifyManageEdit from './components/classifyManageEdit.vue';
+import dictMixins from '@/mixins/dictMixins';
+import {
+  getTreeByPid,
+  getInfoById,
+  deleteCategory
+} from '@/api/classifyManage';
+export default {
+  components: {
+    classifyManageEdit,
+    ListEdit,
+    IndexData,
+    IndexSearch,
+  },
+  mixins: [dictMixins],
+  data() {
+    return {
+      loading: false,
+      current: {},
+      curNode: {},
+      treeData: [],
+      formData: {},
+      defaultProps: {
+        children: 'children',
+        label: 'name'
+      }
+    };
+  },
+
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
     },
-    mixins: [dictMixins],
-    data () {
-      return {
-        loading: false,
-        current: {},
-        curNode: {},
-        treeData: [],
-        formData: {},
-        defaultProps: {
-          children: 'children',
-          label: 'name'
-        }
-      };
+    rootId() {
+      return this.$route.query.id;
     },
+    fullName() {
+      let str = '';
+      let codeStr = '';
+      let node = this.curNode;
+      while (node?.data?.name) {
+        str = node.data.name + '-' + str;
+        codeStr = node.data.code + '-' + codeStr;
+        node = node?.parent;
+      }
 
-    computed: {
-      // 是否开启响应式布局
-      styleResponsive () {
-        return this.$store.state.theme.styleResponsive;
-      },
-      rootId () {
-        return this.$route.query.id;
-      },
-      fullName () {
-        let str = '';
-        let codeStr = '';
-        let node = this.curNode;
-        while (node?.data?.name) {
-          str = node.data.name + '-' + str;
-          codeStr = node.data.code + '-' + codeStr;
-          node = node?.parent;
-        }
-
-        return (
-          str.substring(str, str.length - 1) +
-          `(${codeStr.substring(str, str.length - 1)})`
-        );
+      return (
+        str.substring(str, str.length - 1) +
+        `(${codeStr.substring(str, str.length - 1)})`
+      );
+    }
+  },
+  created() {
+    this.requestDict('类型用途');
+    this.requestDict('分隔符');
+    this.getTree().then(() => {
+      this.$nextTick(() => {
+        this.getDetail(this.treeData[0]?.id);
+      });
+    });
+  },
+  methods: {
+    async reload(isEdit) {
+      if (isEdit) {
+        this.getTree().then(() => {
+          this.getDetail(this.current.id);
+        });
+      } else {
+        this.getTree();
       }
     },
-    created () {
-      this.requestDict('类型用途');
-      this.requestDict('分隔符');
-      this.getTree().then(() => {
-        this.$nextTick(() => {
-          this.getDetail(this.treeData[0]?.id);
-        });
-      });
+    handlOpen() {
+      this.$refs.addDialog.open();
     },
-    methods: {
-      async reload (isEdit) {
-        if (isEdit) {
+    deleteCategory() {
+      this.$confirm('确定要删除选中节点吗?', '提示', {
+        type: 'warning'
+      }).then(async () => {
+        const res = await deleteCategory(this.current.id);
+        if (res?.code == '0') {
           this.getTree().then(() => {
-            this.getDetail(this.current.id);
+            this.$nextTick(() => {
+              this.getDetail(this.treeData[0]?.id);
+            });
           });
-        } else {
-          this.getTree();
+          this.$message.success('删除成功!');
         }
-      },
-      handlOpen () {
-        this.$refs.addDialog.open();
-      },
-      deleteCategory () {
-        this.$confirm('确定要删除选中节点吗?', '提示', {
-          type: 'warning'
-        }).then(async () => {
-          const res = await deleteCategory(this.current.id);
-          if (res?.code == '0') {
-            this.getTree().then(() => {
-              this.$nextTick(() => {
-                this.getDetail(this.treeData[0]?.id);
-              });
-            });
-            this.$message.success('删除成功!');
-          }
-        });
-      },
-      async getTree () {
-        const res = await getTreeByPid(this.rootId);
+      });
+    },
+    async getTree() {
+      const res = await getTreeByPid(this.rootId);
 
-        if (res.code == '0') {
-          this.treeData = res.data;
-          return;
-        }
+      if (res.code == '0') {
+        this.treeData = res.data;
+        return;
+      }
 
-        return Promise.reject();
-      },
-      async getDetail (id) {
-        this.loading = true;
-        const res = await getInfoById(id);
-        this.loading = false;
-        if (res.code == '0') {
-          this.current = res.data;
-          this.$nextTick(() => {
-            this.$refs.treeRef.setCurrentKey(this.current.id);
-          });
-        }
-      },
-      openEdit (isAdd = true) {
-        this.$refs.editRef.open(isAdd ? null : this.current, this.current);
-      },
-      handleNodeClick (data, node) {
-        this.curNode = node;
-        this.getDetail(data.id);
+      return Promise.reject();
+    },
+    async getDetail(id) {
+      this.loading = true;
+      const res = await getInfoById(id);
+      this.loading = false;
+      if (res.code == '0') {
+        this.current = res.data;
+        this.$nextTick(() => {
+          this.$refs.treeRef.setCurrentKey(this.current.id);
+        });
       }
-    }
-  };
+    },
+    openEdit(isAdd = true) {
+      this.$refs.editRef.open(isAdd ? null : this.current, this.current);
+    },
+    handleNodeClick(data, node) {
+      this.curNode = node;
+      this.getDetail(data.id);
+    },
+
+       /* 刷新表格 */
+       reload (where) {
+        this.$refs.listData.reload(where);
+      }
+  }
+};
 </script>
 <style lang="scss" scoped>
-  .sys-organization-list {
-    height: calc(100vh - 264px);
-    box-sizing: border-box;
-    border-width: 1px;
-    border-style: solid;
-    overflow: auto;
-  }
+.sys-organization-list {
+  height: calc(100vh - 215px);
+  box-sizing: border-box;
+  border-width: 1px;
+  border-style: solid;
+  overflow: auto;
+}
 
-  .sys-organization-list :deep(.el-tree-node__content) {
-    height: 40px;
+.sys-organization-list :deep(.el-tree-node__content) {
+  height: 40px;
 
-    & > .el-tree-node__expand-icon {
-      margin-left: 10px;
-    }
+  &>.el-tree-node__expand-icon {
+    margin-left: 10px;
   }
+}
 
-  .form-content {
-    height: 100%;
-    border: 1px solid;
-    box-sizing: border-box;
-  }
-  .form-wrapper {
-    padding: 24px;
-  }
+.form-content {
+  height: 80px;
+  border: 1px solid;
+  box-sizing: border-box;
+}
+
+.form-wrapper {
+  padding: 12px 24px;
+}
 </style>

+ 105 - 0
src/views/classifyManage/treeClassify/manage/components/BoatInfo.vue

@@ -0,0 +1,105 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <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="slotNum">
+                <el-input  v-model="form.slotNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="角度" prop="angle">
+                <DictSelection dictName="角度" clearable v-model="form.angle">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="长" prop="palletLen">
+                <el-input v-model="form.palletLen">
+                    <template slot="append">mm</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="宽" prop="wilde">
+                <el-input v-model="form.wilde">
+                    <template slot="append">mm</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="高" prop="hight">
+                <el-input v-model="form.hight">
+                    <template slot="append">mm</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 125 - 0
src/views/classifyManage/treeClassify/manage/components/CategoryDialog.vue

@@ -0,0 +1,125 @@
+<template>
+  <ele-modal
+    :title="title"
+    :visible.sync="treeVisible"
+    :before-close="handleClose"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    width="40%"
+  >
+    <div class="ele-border-lighter sys-organization-list">
+      <el-tree
+        ref="tree"
+        :data="treeData"
+        highlight-current
+        node-key="id"
+        :props="{ label: 'name' }"
+        :expand-on-click-node="false"
+        :default-expand-all="true"
+        @node-click="onNodeClick"
+      />
+    </div>
+    <template v-slot:footer>
+      <el-button @click="handleClose">关闭</el-button>
+      <el-button type="primary" @click="selected">选择</el-button>
+    </template>
+  </ele-modal>
+</template>
+
+<script>
+ import { getTreeByPid } from '@/api/material/manage.js'
+export default {
+  data () {
+    return {
+      treeVisible: false,
+      treeData: [],
+      current:null,
+      title:'选择分类',
+      pathList:[]
+    }
+  },
+
+  watch: {
+
+  },
+  methods: {
+    open(pid,title){
+      this.treeVisible = true
+      this.title = title
+      this.getTree(pid)
+    },
+    handleClose () {
+      this.treeVisible = false
+      this.current = null
+    },
+    getTree(pid){
+      getTreeByPid(pid).then(res=>{
+         this.treeData = res
+      })
+    },
+    onNodeClick(node){
+       this.current = node
+    },
+    selected(){
+       if(!this.current){
+         return this.$message.warning(`请${this.title}`)
+       }
+       this.pathList = this.findParent([],this.current,this.treeData)
+       this.pathList.unshift(this.current)
+       const PathInfo = {
+         categoryLevelPath:'',
+         categoryLevelPathId:[]
+       }
+       const pathName = []
+       this.pathList.map(item=>{
+          pathName.unshift(item.name)
+          PathInfo.categoryLevelPathId.unshift(item.id)
+       })
+       PathInfo.categoryLevelPath = pathName.join('-')
+       PathInfo.categoryLevelPathId = PathInfo.categoryLevelPathId.join(',')
+       this.$emit('chooseCategory',this.current,this.title,PathInfo)
+       this.handleClose()
+    },
+
+    // parents:用于返回的数组,childNode:要查询的节点,treeData:json树形数据
+    findParent (parents, childNode, treeData) {
+      for (let i = 0; i < treeData.length; i++) {
+        // 父节点查询条件
+        if (treeData[i].id === childNode.parentId) {
+          // 如果找到结果,保存当前节点
+          parents.push(treeData[i])
+          // 用当前节点再去原数据查找当前节点的父节点
+          this.findParent(parents, treeData[i],this.treeData)
+          break
+        } else {
+          if (treeData[i].children instanceof Array) {
+            //	没找到,遍历该节点的子节点
+            this.findParent(parents, childNode, treeData[i].children)
+          }
+        }
+      }
+      return parents
+    }
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+  .sys-organization-list {
+    height: calc(100vh - 264px);
+    box-sizing: border-box;
+    border-width: 1px;
+    border-style: solid;
+    overflow: auto;
+  }
+
+  .sys-organization-list :deep(.el-tree-node__content) {
+    height: 40px;
+
+    & > .el-tree-node__expand-icon {
+      margin-left: 10px;
+    }
+  }
+</style>

+ 151 - 0
src/views/classifyManage/treeClassify/manage/components/GroupDialog.vue

@@ -0,0 +1,151 @@
+<template>
+  <el-dialog
+    title="选择物料组"
+    :visible.sync="groupVisible"
+    :before-close="handleClose"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    width="60%"
+  >
+    <div>
+      <el-row>
+        <el-col :span="24" class="table_col">
+          <el-table
+            :data="tableData"
+            height="450"
+            highlight-current-row
+            @row-click="single"
+          >
+            <el-table-column label="物料组名称" prop="name" width="200"></el-table-column>
+            <el-table-column label="物料组编码" prop="code"></el-table-column>
+            <el-table-column label="分类树" prop="categoryLevelRootName">
+               <template slot-scope="scope">
+                   {{scope.row.categoryLevelRootName+'分类'}}
+               </template>
+            </el-table-column>
+            <el-table-column label="选择" align="center">
+               <template slot-scope="scope">
+            	   <el-radio class="radio" v-model="radio" :label="scope.row.id"><i></i></el-radio>
+               </template>
+            </el-table-column>
+          </el-table>
+         <div class="pagination">
+            <el-pagination
+              background
+              layout="total, sizes, prev, pager, next, jumper"
+              :total="total"
+              :page-sizes="[10, 20, 50, 100]"
+              :page-size="pagination.size"
+              :current-page.sync="pagination.pageNum"
+              @current-change="handleCurrent"
+              @size-change="handleSize"
+            >
+            </el-pagination>
+          </div>
+        </el-col>
+      </el-row>
+    </div>
+    <div class="btns">
+      <el-button type="primary" size="small" @click="selected">选择</el-button>
+      <el-button size="small" @click="handleClose">关闭</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+ import { getGroupPage } from '@/api/material/list';
+export default {
+  data () {
+    return {
+      groupVisible: false,
+      tableData: [],
+      search:{},
+      pagination: {
+        pageNum: 1,
+        size: 10,
+      },
+      total: 0,
+      radio: '',
+      current:null
+    }
+  },
+
+  watch: {
+
+  },
+  methods: {
+    open(item){
+      if(item){
+        this.current = item
+        this.radio = item.id
+      }
+      this.groupVisible = true
+      this.getList()
+    },
+
+    // 单击获取id
+    single (row) {
+        this.current = row
+        this.radio = row.id
+    },
+
+    handleClose () {
+      this.groupVisible = false
+      this.current = null
+      this.radio = ''
+    },
+    handleCurrent (page) {
+      this.pagination.pageNum = page
+      this.getList()
+    },
+    handleSize (size) {
+      this.pagination.pageNum = 1
+      this.pagination.size = size
+      this.getList()
+    },
+    getList(){
+      let params = {...this.pagination}
+      getGroupPage(params).then(res=>{
+         this.tableData = res.list
+         this.total = res.count
+      })
+    },
+    selected(){
+       if(!this.current){
+         return this.$message.warning('请选择物料组')
+       }
+       this.$emit('changeMaterial',this.current)
+       this.handleClose()
+    },
+
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.tree_col {
+  border: 1px solid #eee;
+  padding: 10px 0;
+  box-sizing: border-box;
+  height: 500px;
+  overflow: auto;
+}
+.table_col {
+  padding-left: 10px;
+  ::v-deep .el-table th.el-table__cell {
+    background: #f2f2f2;
+  }
+}
+.pagination {
+  text-align: right;
+  padding: 10px 0;
+}
+.btns {
+  text-align: center;
+  padding: 10px 0;
+}
+.topsearch{
+	margin-bottom:15px;
+}
+</style>

+ 114 - 0
src/views/classifyManage/treeClassify/manage/components/MoldInfo.vue

@@ -0,0 +1,114 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <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="shrinkEffictive">
+                <el-input  v-model="form.shrinkEffictive"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="芯杆数量" prop="coreBarNum">
+                <el-input  v-model="form.coreBarNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="模孔数量" prop="dieHoleNum">
+                <el-input v-model="form.dieHoleNum">
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="上冲头数量" prop="upperPunchNum">
+                <el-input v-model="form.upperPunchNum">
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="下冲头数量" prop="downPunchNum">
+                <el-input v-model="form.downPunchNum">
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="最大冲压次数" prop="maxCyTimes">
+                <el-input v-model="form.maxCyTimes">
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="大模体型号" prop="maxMoldType">
+                <el-input v-model="form.maxMoldType">
+                </el-input>
+             </el-form-item>
+           </el-col>
+
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 124 - 0
src/views/classifyManage/treeClassify/manage/components/PlanInfo.vue

@@ -0,0 +1,124 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <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="fixLeadTime">
+                <el-input  v-model="form.fixLeadTime" @input="inputFix"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="变动提前期" prop="changeLeadTime">
+                <el-input  v-model="form.changeLeadTime" @input="inputChange"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="检验提前期" prop="checkLeadTime">
+                <el-input  v-model="form.checkLeadTime" @input="inputCheck"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="累计提前期" prop="cumLeadTime">
+                <el-input  v-model="form.cumLeadTime" readonly/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="提前期单位" prop="unit">
+                <DictSelection dictName="提前期单位" clearable v-model="form.unit">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="订货间隔期" prop="scheduleType">
+                <div class="form-line">
+                  <el-input  v-model="form.orderIntervalTime"/>
+                  <DictSelection class="line-select" dictName="提前期单位" clearable v-model="form.orderIntervalUnit">
+                  </DictSelection>
+                </div>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+      inputFix(val){
+         const  changeLeadTime = this.form.changeLeadTime?Number(this.form.changeLeadTime):0
+         const  checkLeadTime = this.form.checkLeadTime?Number(this.form.checkLeadTime):0
+         val = val?Number(val):0
+         this.form.cumLeadTime = val + changeLeadTime  + checkLeadTime
+      },
+      inputChange(val){
+        const  fixLeadTime = this.form.fixLeadTime?Number(this.form.fixLeadTime):0
+        const  checkLeadTime = this.form.checkLeadTime?Number(this.form.checkLeadTime):0
+        val = val?Number(val):0
+         this.form.cumLeadTime = val + fixLeadTime  + checkLeadTime
+      },
+      inputCheck(val){
+          const  fixLeadTime = this.form.fixLeadTime?Number(this.form.fixLeadTime):0
+          const  changeLeadTime = this.form.changeLeadTime?Number(this.form.changeLeadTime):0
+          val = val?Number(val):0
+         this.form.cumLeadTime = val + fixLeadTime  + changeLeadTime
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 183 - 0
src/views/classifyManage/treeClassify/manage/components/ProcureInfo.vue

@@ -0,0 +1,183 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <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="采购单位">
+                <el-input  v-model="form.procureUnit"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="计价单位">
+                <el-input  v-model="form.priceUnit"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="采购组织" prop="procureGroup">
+               <deptSelect v-model="form.procureGroup" @changeGroup="searchDeptNodeClick"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="采购员" prop="purchaserId">
+               <personSelect
+                 ref="directorRef"
+                 v-model="form.purchaserId"
+                 @selfChange="handleDirectorChange"
+                 :init="false"
+               />
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="默认供应商" prop="supplier">
+                <el-input  v-model="form.supplier"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="允许退料" prop="isReturn">
+               <el-radio v-model="form.isReturn" label="1">是</el-radio>
+               <el-radio v-model="form.isReturn" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否请购" prop="isApplay" >
+                <el-radio v-model="form.isApplay" label="1">是</el-radio>
+                <el-radio v-model="form.isApplay" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="货源控制" prop="isControl">
+                <el-radio v-model="form.isControl" label="1">是</el-radio>
+                <el-radio v-model="form.isControl" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="收货上限比例" prop="upperLimit">
+                <el-input v-model="form.upperLimit">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="收货提前天数" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="收货延迟天数" prop="delayDays">
+                <el-input  v-model="form.delayDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="收货下限比例" prop="lowerLimit">
+                <el-input v-model="form.lowerLimit">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="默认条码规则" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="最小包装数" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="重复打印数" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="委外单位" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="委外计价单位" prop="earlyDays">
+                <el-input  v-model="form.earlyDays"/>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import deptSelect from '@/components/CommomSelect/dept-select.vue'
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { deptSelect , personSelect },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+      // 选择所属部门
+      searchDeptNodeClick (id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange (id, info) {
+      },
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 153 - 0
src/views/classifyManage/treeClassify/manage/components/ProductionInfo.vue

@@ -0,0 +1,153 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <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="是否齐套件">
+                <el-radio v-model="form.isCompleteSet" :label="1">是</el-radio>
+                <el-radio v-model="form.isCompleteSet" :label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="消耗波动" prop="consumWave">
+                <el-input v-model="form.consumWave">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="变动损耗率" prop="changeLossRate">
+                <el-input v-model="form.changeLossRate">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="固定损耗数" prop="fixLossNum">
+                <el-input  v-model="form.fixLossNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="排程类型" prop="apsType">
+                <DictSelection dictName="排程类型" clearable v-model="form.apsType">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="允许改型" prop="isModify">
+               <el-radio v-model="form.isModify" :label="1">是</el-radio>
+               <el-radio v-model="form.isModify" :label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="允许返工返修" prop="isRework">
+               <el-radio v-model="form.isRework" :label="1">是</el-radio>
+               <el-radio v-model="form.isRework" :label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否返回料" prop="isRematerial">
+               <el-radio v-model="form.isRematerial" :label="1">是</el-radio>
+               <el-radio v-model="form.isRematerial" :label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否副产品" prop="isByProduct">
+               <el-radio v-model="form.isByProduct" :label="1">是</el-radio>
+               <el-radio v-model="form.isByProduct" :label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否废品" prop="isWaste">
+               <el-radio v-model="form.isWaste" :label="1">是</el-radio>
+               <el-radio v-model="form.isWaste" :label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="是否不良品" prop="isDefective">
+               <el-radio v-model="form.isDefective" :label="1">是</el-radio>
+               <el-radio v-model="form.isDefective" :label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import deptSelect from '@/components/CommomSelect/dept-select.vue'
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { deptSelect , personSelect },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+      // 选择所属部门
+      searchDeptNodeClick (id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange (id, info) {
+      },
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 120 - 0
src/views/classifyManage/treeClassify/manage/components/QualityInfo.vue

@@ -0,0 +1,120 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <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="isComeCheck">
+                 <el-radio v-model="form.isComeCheck" :label="1">是</el-radio>
+                 <el-radio v-model="form.isComeCheck" :label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="检验方案" prop="checkFormula">
+                <DictSelection dictName="检验方案" clearable v-model="form.checkFormula">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="采购组织" prop="checkDepart">
+               <deptSelect v-model="form.checkDepart" @changeGroup="searchDeptNodeClick"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="采购员" prop="checkPerson">
+               <personSelect
+                 ref="directorRef"
+                 v-model="form.checkPerson"
+                 @selfChange="handleDirectorChange"
+                 :init="false"
+               />
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import deptSelect from '@/components/CommomSelect/dept-select.vue'
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { deptSelect , personSelect },
+    data() {
+      return {
+      };
+    },
+    watch: {
+      form(data) {
+        if (data.checkDepart) {
+           const params = { executeGroupId: data.checkDepart };
+            this.$nextTick(() => {
+              this.$refs.directorRef.getList(params);
+            });
+        }
+      }
+    },
+    methods: {
+      // 选择所属部门
+      searchDeptNodeClick (id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange (id, info) {
+      },
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 77 - 0
src/views/classifyManage/treeClassify/manage/components/RemarkInfo.vue

@@ -0,0 +1,77 @@
+<template>
+  <div class="other">
+    <el-form label-width="120px"  ref="form" :model="form">
+         <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="24">
+             <el-form-item label="附件" prop="allowReturns">
+                 <fileUpload v-model="form.remarkAttach" module="file" :limit="4" ></fileUpload>
+             </el-form-item>
+           </el-col>
+           <el-col :span="24">
+             <el-form-item label="备注" prop="remark">
+                <el-input  v-model="form.remark" type="textarea" :row="5" resize="none"/>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import fileUpload from '@/components/upload/fileUpload';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { fileUpload },
+    data () {
+      return {};
+    },
+    methods: {}
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other {
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 113 - 0
src/views/classifyManage/treeClassify/manage/components/SalesInfo.vue

@@ -0,0 +1,113 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <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="allowReturns">
+                 <el-radio v-model="form.allowReturns" label="1">是</el-radio>
+                 <el-radio v-model="form.allowReturns" label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="计价单位" prop="lossRate">
+                <DictSelection dictName="重量单位" clearable v-model="form.scheduleType">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="起订量" prop="fixedNum">
+                <el-input  v-model="form.fixedNum"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="超发上限" prop="fixedNum">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="超发下限" prop="consumeWave">
+                <el-input v-model="form.lossRate">
+                    <template slot="append">%</template>
+                </el-input>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="参考单价" prop="scheduleType">
+                <div class="form-line">
+                  <el-input  v-model="form.date"/>
+                  <DictSelection class="line-select" dictName="价格单位" clearable v-model="form.dateUnit">
+                  </DictSelection>
+                </div>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 104 - 0
src/views/classifyManage/treeClassify/manage/components/TurnoverInfo.vue

@@ -0,0 +1,104 @@
+<template>
+  <div class="other">
+    <el-form label-width="120px" ref="form" :model="form">
+      <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="levelNum">
+            <el-input v-model="form.levelNum" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="材质" prop="materialQuality">
+            <DictSelection
+              dictName="周转车材质"
+              clearable
+              v-model="form.materialQuality"
+            >
+            </DictSelection>
+            <!-- <el-input  v-model="form.materialQuality"/> -->
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="长" prop="vehicleLen">
+            <el-input v-model="form.vehicleLen">
+              <template slot="append">mm</template>
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="宽" prop="wilde">
+            <el-input v-model="form.wilde">
+              <template slot="append">mm</template>
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="高" prop="hight">
+            <el-input v-model="form.hight">
+              <template slot="append">mm</template>
+            </el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+  </div>
+</template>
+
+<script>
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: {},
+    data () {
+      return {};
+    },
+
+    methods: {}
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other {
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 133 - 0
src/views/classifyManage/treeClassify/manage/components/WarehouseInfo.vue

@@ -0,0 +1,133 @@
+<template>
+  <div class="other">
+      <el-form label-width="120px"  ref="form" :model="form">
+         <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="启用库存预警">
+                <el-radio v-model="form.isWarn" :label="1">是</el-radio>
+                <el-radio v-model="form.isWarn" :label="0">否</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="允许拆包" prop="isUnpack">
+                <el-switch v-model="form.isUnpack" :active-value="1" :inactive-value="0"> </el-switch>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="安全库存" prop="secureInventory">
+                <el-input  v-model="form.secureInventory"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="最小库存" prop="minInventory">
+                <el-input  v-model="form.minInventory"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="最大库存" prop="maxInventory">
+                <el-input  v-model="form.maxInventory"/>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="盘点模式" prop="inventoryMode">
+               <el-radio v-model="form.inventoryMode" :label="1">逐个盘点</el-radio>
+               <el-radio v-model="form.inventoryMode" :label="2">批量盘点</el-radio>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="质保预警参考" prop="warrantyWarnRefer">
+                <DictSelection dictName="质保预警参考" clearable v-model="form.warrantyWarnRefer">
+                </DictSelection>
+             </el-form-item>
+           </el-col>
+           <el-col :span="8">
+             <el-form-item label="保质期">
+                <div class="form-line">
+                  <el-input  v-model="form.warrantyPeriod"/>
+                  <DictSelection class="line-select" dictName="保质期单位" clearable v-model="form.warrantyPeriodUnit">
+                  </DictSelection>
+                </div>
+             </el-form-item>
+           </el-col>
+         </el-row>
+      </el-form>
+  </div>
+</template>
+
+<script>
+  import deptSelect from '@/components/CommomSelect/dept-select.vue'
+  import personSelect from '@/components/CommomSelect/person-select.vue';
+  export default {
+    props: {
+      form: {
+        type: Object,
+        default: {}
+      }
+    },
+    components: { deptSelect , personSelect },
+    data() {
+      return {
+
+
+      };
+    },
+
+    methods: {
+      // 选择所属部门
+      searchDeptNodeClick (id, info) {
+        // 根据部门获取人员
+        const params = { executeGroupId: id };
+        this.$nextTick(() => {
+          this.$refs.directorRef.getList(params);
+        });
+      },
+      //选择负责人
+      handleDirectorChange (id, info) {
+      },
+
+
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  .other{
+    background: #fff;
+    padding: 1px 17px;
+  }
+  .divider {
+    margin: 0px 0 20px;
+    .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;
+    }
+  }
+</style>

+ 232 - 0
src/views/classifyManage/treeClassify/manage/components/index-data.vue

@@ -0,0 +1,232 @@
+<template>
+  <div>
+    <!-- 数据表格 -->
+    <ele-pro-table
+      ref="table"
+      :columns="columns"
+      :datasource="datasource"
+      :need-page="true"
+      :selection.sync="selection"
+      height="calc(100vh - 410px)"
+      full-height="calc(100vh - 116px)"
+      tool-class="ele-toolbar-form"
+      cache-key="systemDictDataTable"
+    >
+      <!-- 表头工具栏 -->
+      <template v-slot:toolbar>
+        <el-button
+          size="small"
+          type="primary"
+          icon="el-icon-plus"
+          class="ele-btn-icon"
+          @click="openEdit({}, 2)"
+        >
+          新建物料
+        </el-button>
+      </template>
+      <template v-slot:action="{ row }">
+        <el-link
+          type="primary"
+          :underline="false"
+          icon="el-icon-copy-document"
+          @click="openEdit(row, 1)"
+        >
+          复制
+        </el-link>
+        <el-link
+          type="primary"
+          :underline="false"
+          icon="el-icon-edit"
+          @click="openEdit(row, 0)"
+        >
+          修改
+        </el-link>
+        <el-popconfirm
+          class="ele-action"
+          title="确定要删除此物料吗?"
+          @confirm="remove(row)"
+        >
+          <template v-slot:reference>
+            <el-link type="danger" :underline="false" icon="el-icon-delete">
+              删除
+            </el-link>
+          </template>
+        </el-popconfirm>
+      </template>
+    </ele-pro-table>
+    <!-- 编辑弹窗 -->
+    <!--    <dict-edit :visible.sync="showEdit" :id="id" @done="reload" /> -->
+  </div>
+</template>
+
+<script>
+  import { getMaterialList, removeMaterial } from '@/api/material/manage.js';
+  export default {
+    components: {},
+    props: {
+      // 物料组id
+      currentId: [Number, String],
+      data: Object,
+      rootId:  [Number, String],
+    },
+    data () {
+      return {
+        // 表格列配置
+        columns: [
+          {
+            columnKey: 'index',
+            type: 'index',
+            width: 50,
+            align: 'center',
+            showOverflowTooltip: true,
+            label: '序号'
+          },
+          {
+            prop: 'code',
+            label: '编码',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'name',
+            label: '名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+      
+          {
+            prop: 'brandNum',
+            align: 'center',
+            label: '牌号',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'modelType',
+            label: '型号',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'specification',
+            label: '规格',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'measuringUnit',
+            label: '计量单位',
+            showOverflowTooltip: true,
+            minWidth: 90
+          },
+
+          {
+            prop: 'weightUnit',
+            label: '重量单位',
+            showOverflowTooltip: true,
+            minWidth: 90
+          },
+
+          {
+            prop: 'roughWeight',
+            label: '毛重',
+            showOverflowTooltip: true,
+            minWidth: 90
+          },
+
+          {
+            prop: 'netWeight',
+            label: '净重',
+            showOverflowTooltip: true,
+            minWidth: 90
+          },
+
+
+          {
+            prop: 'packingUnit',
+            align: 'center',
+            label: '包装单位',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'categoryLevelPath',
+            label: '分类',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 200,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true,
+            fixed: 'right'
+          }
+        ],
+        types: {
+          1: '业务字典',
+          2: '数据字典'
+        },
+        // 表格选中数据
+        selection: [],
+        // 是否显示编辑弹窗
+        showEdit: false,
+        id: null
+      };
+    },
+
+    methods: {
+      /* 表格数据源 */
+      datasource ({ page, limit, where, order }) {
+        return getMaterialList({
+          pageNum: page,
+          size: limit,
+          ...where,
+          categoryLevelGroupId: this.currentId
+        });
+      },
+      /* 刷新表格 */
+      reload (where) {
+        this.$refs.table.reload({
+          page: 1,
+          where: where,
+          categoryLevelGroupId: this.currentId
+        });
+      },
+      /* 显示编辑 */
+      openEdit (row, status) {
+        this.$router.push({
+          path: '/treeClassify/manageMaterial',
+          query: {
+            id: row.id ? row.id : null,
+            status: status,
+            rootId: this.rootId
+          }
+        });
+      },
+      /* 删除 */
+      remove (row) {
+        const loading = this.$loading({ lock: true });
+        removeMaterial(row.id)
+          .then((msg) => {
+            loading.close();
+            this.$message.success('删除' + msg);
+            this.reload();
+          })
+          .catch((e) => {
+            loading.close();
+            // this.$message.error(e.message);
+          });
+      }
+    },
+    watch: {
+      // 监听物料组id变化
+      currentId () {
+        this.reload();
+      }
+    }
+  };
+</script>

+ 114 - 0
src/views/classifyManage/treeClassify/manage/components/index-search.vue

@@ -0,0 +1,114 @@
+<!-- 搜索表单 -->
+<template>
+  <el-form
+    size="small"
+    label-width="60px"
+    class="ele-form-search"
+    @keyup.enter.native="search"
+    @submit.native.prevent
+  >
+    <el-row :gutter="10">
+      <el-col v-bind="styleResponsive ? { md: 6 } : { span: 6 }">
+        <el-form-item label="编码">
+          <el-input
+            clearable
+            size="small"
+            v-model="where.code"
+            placeholder="请输入"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { md: 6 } : { span: 6 }">
+        <el-form-item label="名称">
+          <el-input
+            clearable
+            size="small"
+            v-model="where.name"
+            placeholder="请输入"
+          />
+        </el-form-item>
+      </el-col>
+      <el-col v-bind="styleResponsive ? { md: 12 } : { span: 4 }">
+        <el-form-item>
+          <el-button
+            size="small"
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+          >
+            查询
+          </el-button>
+
+          <el-button
+            @click="reset"
+            icon="el-icon-refresh"
+            class="ele-btn-icon"
+            size="medium"
+            >重置</el-button
+          >
+
+          <el-button
+            type="primary"
+            icon="el-icon-refresh-left"
+            class="ele-btn-icon"
+            @click='refreshData'
+            :loading="loading"
+          >刷新</el-button>
+
+          <slot></slot>
+        </el-form-item>
+      </el-col>
+    </el-row>
+  </el-form>
+</template>
+
+<script>
+  import { syncMateriel } from '@/api/material/list';
+  export default {
+    data() {
+      // 默认表单数据
+      const defaultWhere = {
+        name: '',
+        code: ''
+      };
+      return {
+        defaultWhere,
+        // 表单数据
+        where: { ...defaultWhere },
+        loading:false
+      };
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive() {
+        return this.$store.state.theme.styleResponsive;
+      }
+    },
+    methods: {
+      /* 搜索 */
+      search() {
+        this.$emit('search', this.where);
+      },
+      /*  重置 */
+      reset() {
+        this.where = { ...this.defaultWhere };
+        this.search();
+      },
+      // 刷新数据
+      refreshData(){
+          this.loading = true;
+          syncMateriel().then(res=>{
+             if(res=='0'){
+               this.loading = false;
+                this.$message.success('数据刷新成功!')
+                this.search()
+             }
+          })
+          .catch((e) => {
+            this.loading = false;
+          });
+      }
+    }
+  };
+</script>

+ 424 - 0
src/views/classifyManage/treeClassify/manage/manageMaterial.vue

@@ -0,0 +1,424 @@
+<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>

+ 3 - 0
src/views/material/manage/index.vue

@@ -13,6 +13,7 @@
           添加
         </el-button>
       </div> -->
+     
       <ele-split-layout
         width="244px"
         allow-collapse
@@ -41,6 +42,7 @@
 
         <template v-slot:content>
           <!-- 物料列表 -->
+        
           <IndexData
             ref="listData"
             v-if="current"
@@ -102,6 +104,7 @@
           if (this.current) {
             currentRow = res.data.find((item) => item.id == this.current.id);
           }
+          console.log(res.data[0])
           this.$refs.table.setCurrentRow(currentRow || res.data[0]);
         }
       },

+ 2 - 2
vue.config.js

@@ -32,8 +32,8 @@ module.exports = {
       // 当我们的本地的请求 有/api的时候,就会代理我们的请求地址向另外一个服务器发出请求
       '/api': {
         // target: 'http://124.71.68.31:50001',
-        // target: 'http://192.168.1.139:18086',
-        target: 'http://192.168.1.132:18086',
+        target: 'http://192.168.1.139:18086',
+        // target: 'http://192.168.1.132:18086',
         changeOrigin: true, // 只有这个值为true的情况下 才表示开启跨域
         pathRewrite: {
           '^/api': ''