Forráskód Böngészése

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

lucw 7 hónapja
szülő
commit
8fb2f9cdfe

+ 7 - 10
src/components/addDoc/api/index.js

@@ -91,10 +91,8 @@ export async function pageSegment(data) {
 }
 
 // 生成编码
-export async function getCode(id) {
-  const res = await request.get(
-    `/main/business_code_category/applyForCode/` + id
-  );
+export async function getCode(data) {
+  const res = await request.post(`/main/business_code_category/applyForCode`,data);
   if (res.data.code == 0) {
     return res.data.data;
   }
@@ -116,14 +114,13 @@ export async function uploadFileNew(data) {
   return Promise.reject(new Error(res.data.message));
 }
 // 编码方案
-export async function listCode(data = {}) {
-  const res = await request.get(
-    `/main/business_code_category/listCode/${data.id || '0'}` +
-      '?parentId=' +
-      (data.parentId || '')
-  );
+export async function listCode(data={}) {
+  console.log(data?.parentId,'data?.parentId')
+   
+  const res = await request.get(`/main/business_code_category/listCode/${data.id||'0'}`+'?parentId='+(data.parentId||''));
   if (res.data.code == 0) {
     return res.data.data;
   }
   return Promise.reject(new Error(res.data.message));
 }
+

+ 166 - 160
src/components/addDoc/file-table-listTemplate.vue

@@ -27,172 +27,178 @@
 </template>
 
 <script>
-import { filePageAPI } from './api';
-import browse from './browse.vue';
+  import { filePageAPI } from './api';
+  import browse from './browse.vue';
+  import { setFileUrl } from './util.js';
 
-export default {
-  components: { browse },
-  props: {
-    // 上级
-    parentData: {
-      type: Object,
-      default: () => {}
+  export default {
+    components: { browse },
+    props: {
+      // 上级
+      parentData: {
+        type: Object,
+        default: () => {}
+      },
+
+      disabledTableList: {
+        //已选择列表
+        default: () => []
+      },
+      isQueryAll: {
+        //查看全部
+        default: 1
+      }
     },
 
-    disabledTableList: {
-      //已选择列表
-      default: () => []
-    }
-  },
+    data() {
+      return {
+        selection: [],
+        columns: [
+          {
+            width: 45,
+            type: 'selection',
+            columnKey: 'selection',
+            align: 'center',
+            selectable: (row, index) => {
+              return !this.disabledTableList
+                .map((item) => item.id)
+                .includes(row.id);
+            }
+          },
+          {
+            label: '编码',
+            prop: 'code',
+            width: 180,
+            align: 'center',
+            fixed: 'left',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'name',
+            label: '文档名称',
+            align: 'center',
+            slot: 'name',
+            showOverflowTooltip: true,
+            minWidth: 200
+          },
+          {
+            prop: 'storagePath',
+            label: '文件名称',
+            align: 'center',
 
-  data() {
-    return {
-      selection: [],
-      columns: [
-        {
-          width: 45,
-          type: 'selection',
-          columnKey: 'selection',
-          align: 'center',
-          selectable: (row, index) => {
-            return !this.disabledTableList
-              .map((item) => item.id)
-              .includes(row.id);
-          }
-        },
-        {
-          label: '编码',
-          prop: 'code',
-          width: 180,
-          align: 'center',
-          fixed: 'left',
-          showOverflowTooltip: true
-        },
-        {
-          prop: 'name',
-          label: '文档名称',
-          align: 'center',
-          slot: 'name',
-          showOverflowTooltip: true,
-          minWidth: 200
-        },
-        {
-          prop: 'storagePath',
-          label: '文件名称',
-          align: 'center',
-
-          showOverflowTooltip: true,
-          minWidth: 200,
-          formatter: (_row, _column, cellValue) => {
-            return cellValue[0]?.name;
-          }
-        },
-        {
-          prop: 'version',
-          label: '版本',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'checkOutUserName',
-          label: '检出人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'checkOutStatus',
-          label: '检出状态',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100,
-          formatter: (_row, _column, cellValue) => {
-            return cellValue == 1 ? '已检出' : '';
+            showOverflowTooltip: true,
+            minWidth: 200,
+            formatter: (_row, _column, cellValue) => {
+              return cellValue[0]?.name;
+            }
+          },
+          {
+            prop: 'version',
+            label: '版本',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'checkOutUserName',
+            label: '检出人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'checkOutStatus',
+            label: '检出状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100,
+            formatter: (_row, _column, cellValue) => {
+              return cellValue == 1 ? '已检出' : '';
+            }
+          },
+          {
+            prop: 'checkOutTime',
+            label: '检出时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 160
+          },
+          {
+            prop: 'createUserName',
+            label: '创建人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'createTime',
+            label: '创建时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 160,
+            formatter: (_row, _column, cellValue) => {
+              return this.$util.toDateString(cellValue);
+            }
+          },
+          {
+            prop: 'updateUserName',
+            label: '修改人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            prop: 'updateTime',
+            label: '修改时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 160
+          },
+          {
+            prop: 'sizeUnit',
+            label: '文档大小',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 100
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 150,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true,
+            fixed: 'right'
           }
-        },
-        {
-          prop: 'checkOutTime',
-          label: '检出时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 160
-        },
-        {
-          prop: 'createUserName',
-          label: '创建人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'createTime',
-          label: '创建时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 160,
-          formatter: (_row, _column, cellValue) => {
-            return this.$util.toDateString(cellValue);
-          }
-        },
-        {
-          prop: 'updateUserName',
-          label: '修改人',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          prop: 'updateTime',
-          label: '修改时间',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 160
-        },
-        {
-          prop: 'sizeUnit',
-          label: '文档大小',
-          align: 'center',
-          showOverflowTooltip: true,
-          minWidth: 100
-        },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 150,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true,
-          fixed: 'right'
-        }
-      ]
-    };
-  },
-  created() {},
-
-  methods: {
-    /* 表格数据源 */
-    datasource({ page, limit, where, order }) {
-      return filePageAPI({
-        ...where,
-        ...order,
-        pageNum: page,
-        size: limit,
-        directoryId: this.parentData?.id
-      });
-    },
-    /* 刷新表格 */
-    reload(where) {
-      this.$refs.table.reload({ pageNum: 1, where: where });
+        ]
+      };
     },
+    created() {},
 
-    browseOpen(row) {
-      this.$refs.browseRef.open(row);
-    },
-    getTableList() {
-      return JSON.parse(JSON.stringify(this.selection));
+    methods: {
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        return filePageAPI({
+          ...where,
+          ...order,
+          pageNum: page,
+          size: limit,
+          directoryId: this.parentData?.id,
+          isQueryAll: this.isQueryAll
+        });
+      },
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ pageNum: 1, where: where });
+      },
+
+      browseOpen(row) {
+        window.open(setFileUrl(row));
+      },
+      getTableList() {
+        return JSON.parse(JSON.stringify(this.selection));
+      }
     }
-  }
-};
+  };
 </script>

+ 84 - 15
src/components/addDoc/getCode.vue

@@ -8,8 +8,6 @@
     append-to-body
     @close="cancel"
     title="申请编码"
-    :maxable="true"
-    :resizable="true"
   >
     <el-form ref="form" :model="form" :rules="rules" label-width="82px">
       <el-row :gutter="15">
@@ -51,9 +49,39 @@
             <el-input v-model="form.code" disabled></el-input>
           </el-form-item>
         </el-col>
+
+        <el-col :span="24">
+          <headerTitle title="编码码段"></headerTitle>
+          <template v-for="item in segmentList">
+            <el-form-item :label="item.name" :prop="item.id" :key="item.id">
+              <el-input
+                v-if="item.roughRule == 5 || item.roughRule == 4"
+                :disabled="true"
+                v-model="item.currentValue"
+              ></el-input>
+              <el-select
+                v-else
+                v-model="item.currentValue"
+                placeholder="请选择"
+                style="width: 100%"
+              >
+                <el-option
+                  v-for="(segmentValue, index) in item.value"
+                  :key="index"
+                  :label="segmentValue.value"
+                  :value="segmentValue.value"
+                  @click.native="
+                    segmentValueChange(item.id, segmentValue.value, index)
+                  "
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </template>
+        </el-col>
       </el-row>
     </el-form>
-    <headerTitle title="编码码段"></headerTitle>
+
     <template v-slot:footer>
       <el-button @click="cancel">取消</el-button>
       <el-button type="primary" @click="save"> 确认 </el-button>
@@ -62,7 +90,13 @@
 </template>
 
 <script>
-  import { selectTreeList, listParentId, getCode } from './api';
+  import {
+    selectTreeList,
+    listParentId,
+    pageSegment,
+    getCode
+  } from './api/index.js';
+  import headerTitle from '@/components/header-title/index.vue';
 
   export default {
     data() {
@@ -74,28 +108,26 @@
         },
         list: [],
         options: [],
+        segmentList: [],
         // 表单数据
         form: {
           type: '',
           code: '',
           type1: ''
         },
-
+        nodeData: null,
         showEditFlag: false
       };
     },
-    computed: {
-      // 是否开启响应式布局
-      styleResponsive() {
-        return this.$store.state.theme.styleResponsive;
-      }
-    },
+    computed: {},
     components: {
+      headerTitle
     },
     created() {},
     methods: {
-      async open() {
+      async open(nodeData) {
         this.list = await selectTreeList();
+        this.nodeData = nodeData;
         this.setTree(this.list);
         this.showEditFlag = true;
       },
@@ -109,28 +141,65 @@
           }
         });
       },
+
       async typeChange(val) {
         let data = await listParentId({
           pageNum: 1,
           size: 100,
-          parentId: val
+          parentId: val,
+          objId: this.nodeData?.id,
+          objParentId: this.nodeData?.parentId
         });
         this.options = data.list.filter((item) => item.type == 2);
         this.form.type1 = '';
+        this.form.code = '';
+        this.segmentList = [];
       },
       async type1Change(val) {
-        // this.form.code = await getCode(val);
+        let codeData = await getCode({
+          categoryId: val
+        });
+        this.form.code = codeData.codeStr;
+
+        let data = await pageSegment({
+          pageNum: 1,
+          size: 100,
+          businessCodeCategoryId: val
+        });
+        this.segmentList = data.list.map((item, index) => {
+          item['currentValue'] = codeData.values[index];
+          return item;
+        });
+      },
+      async segmentValueChange() {
+        // codeManageId:id,
+        //   code:value,
+        let codeData = await getCode({
+          categoryId: this.form.type1,
+
+          codeManageArray: this.segmentList.map((item) => {
+            return {
+              codeManageId: item.id,
+              code: item.currentValue
+            };
+          }),
+          isUpdateNo: 1
+        });
+        this.form.code = codeData.codeStr;
       },
       /* 保存编辑 */
       save() {
-        this.$emit('success', this.form.code);
+        this.$emit('setCode', this.form.code);
         this.cancel();
       },
 
       cancel() {
         this.form.type = '';
         this.form.code = '';
+        this.form.type1 = '';
         this.showEditFlag = false;
+        this.segmentList = [];
+        this.options = [];
       }
     }
   };

+ 10 - 8
src/components/addDoc/main.vue

@@ -20,12 +20,9 @@
     >
       <template v-slot:toolbar v-if="type != 'view'">
         <el-button type="primary" @click="fileEditOpen">本地上传</el-button>
-        <el-button type="primary" @click="openFileList(0)">
+        <el-button type="primary" @click="fileShow = true">
           关联文档库
         </el-button>
-        <el-button type="primary" @click="openFileList(1)">
-          关联个人文档库
-        </el-button>
       </template>
       <!-- 操作列 -->
       <template v-slot:action="{ row }">
@@ -86,6 +83,7 @@
   import fileEdit from './file-edit.vue';
   import browse from './browse.vue';
   import { queryIds } from './api';
+  import { setFileUrl } from './util.js';
 
   export default {
     components: { doc_template, fileEdit, browse },
@@ -182,8 +180,8 @@
       openFileList(type) {
         this.fileShow = true;
         this.$nextTick(() => {
-          this.$refs.doc_templateRef.query(type)
-        })
+          this.$refs.doc_templateRef.query(type);
+        });
       },
       fileEditOpen() {
         this.$refs.fileEditRef.open();
@@ -194,7 +192,11 @@
       },
       async init() {
         if (this.fileId.length > 0) {
-          this.tableList = await queryIds({ ids: "'" + this.fileId + "'" });
+          if (typeof this.fileId[0] == 'object') {
+            this.tableList = [];
+          } else {
+            this.tableList = await queryIds({ ids: "'" + this.fileId + "'" });
+          }
         } else {
           this.tableList = [];
         }
@@ -204,7 +206,7 @@
         this.init();
       },
       browseOpen(row) {
-        this.$refs.browseRef.open(row);
+        window.open(setFileUrl(row));
       },
       addFile() {
         this.$emit(

+ 112 - 55
src/components/addDoc/util.js

@@ -1,65 +1,122 @@
 import store from '@/store';
-const userId = store.state.user?.info?.userId
-const userName = store.state.user?.info?.name
+const userId = store.state.user?.info?.userId;
+const userName = store.state.user?.info?.name;
 export function isPower(data = {}, power, selection = []) {
-
-    if (power == 'add' && data.userAuthority.length == 0) { //文件夹默认开放新增权限
-        return true
-    }
-    if (!data?.id && selection.length == 0) {
-        return false
-
-    }
-    if (power == 'checkEnter' && data?.checkOutUserId != userId) { //检入特殊处理
-        return false
-    }
-    if (selection.length > 0) { //多选情况处理
-        let isPower = true
-        let userAuthorityS = []
-        let createUserIdS = selection.map(item => item.createUserId).filter(createUserId => createUserId == userId)
-        if (createUserIdS.length == selection.length || userName == 'admin') {
-            return true
-        }
-        selection.forEach(val => {
-            const powerObj = val.userAuthority.find(item => item.id == userId)
-            if (powerObj) {
-                userAuthorityS.push(powerObj)
-            }
-        })
-
-        if (userAuthorityS.length == 0) {
-            isPower = false
-        }
-        userAuthorityS.forEach(item => {
-            if (item[power] != '1') {
-                isPower = false
-            }
-        })
-        return isPower
+  if (power == 'add' && data.userAuthority.length == 0) {
+    //文件夹默认开放新增权限
+    return true;
+  }
+  if (!data?.id && selection.length == 0) {
+    return false;
+  }
+  if (power == 'checkEnter' && data?.checkOutUserId != userId) {
+    //检入特殊处理
+    return false;
+  }
+  if (selection.length > 0) {
+    //多选情况处理
+    let isPower = true;
+    let userAuthorityS = [];
+    let createUserIdS = selection
+      .map((item) => item.createUserId)
+      .filter((createUserId) => createUserId == userId);
+    if (createUserIdS.length == selection.length || userName == 'admin') {
+      return true;
     }
+    selection.forEach((val) => {
+      const powerObj = val.userAuthority.find((item) => item.id == userId);
+      if (powerObj) {
+        userAuthorityS.push(powerObj);
+      }
+    });
 
-    if (data.createUserId == userId || userName == 'admin') { //创建人/admin所有权限
-        return true
-    }
-    if (!power) {
-        return false
+    if (userAuthorityS.length == 0) {
+      isPower = false;
     }
-    const powerObj = data.userAuthority.find(item => item.id == userId)
-    if (powerObj) {
+    userAuthorityS.forEach((item) => {
+      if (item[power] != '1') {
+        isPower = false;
+      }
+    });
+    return isPower;
+  }
 
-        return powerObj[power] == '1'
-    }
+  if (data.createUserId == userId || userName == 'admin') {
+    //创建人/admin所有权限
+    return true;
+  }
+  if (!power) {
+    return false;
+  }
+  const powerObj = data.userAuthority.find((item) => item.id == userId);
+  if (powerObj) {
+    return powerObj[power] == '1';
+  }
 }
-
-export function setFolderList(data) { //递归过滤文件夹权限
-    data.forEach((item) => {
-        item['disabled'] = !isPower(item, 'add');
-        if (item.sonDirectoryList && item.sonDirectoryList.length > 0) {
-            setFolderList(item.sonDirectoryList);
-        }
-    });
+export function setFileUrl(row) {
+  let file = row.storagePath[0];
+  let fileNames = file.storePath.split('/');
+  let url =
+    window.location.origin +
+    '/api/main/file/getFile?objectName=' +
+    file.storePath +
+    '&fullfilename=' +
+    fileNames[fileNames.length - 1];
+  return '/kkfile/onlinePreview?url=' + btoa(url);
+}
+export function setFolderList(data) {
+  //递归过滤文件夹权限
+  data.forEach((item) => {
+    item['disabled'] = !isPower(item, 'add');
+    if (item.sonDirectoryList && item.sonDirectoryList.length > 0) {
+      setFolderList(item.sonDirectoryList);
+    }
+  });
 }
 //新迪预览工具支持的文件格式
 export function getFileType() {
-    return ['par', 'asm', 'psm', 'dft', 'sldprt', 'sldasm', 'ipt', 'iam', 'prt', '3dxml', 'CATPart', 'CATProduct', 'cgr', 'model', 'exp', 'session', 'x_t', 'xmt_txt', 'x_b', 'xmp_bin', 'xmp_txt', 'sat', 'sab', 'igs', 'iges', 'stp', 'step', 'jt', 'xcgm', '3dm', 'stl', 'obj', '3mf', 'fbx', 'vda', 'dxf', 'dwg', 'pdf', 'idf', 'idb', 'emn', 'brd']
-}
+  return [
+    'par',
+    'asm',
+    'psm',
+    'dft',
+    'sldprt',
+    'sldasm',
+    'ipt',
+    'iam',
+    'prt',
+    '3dxml',
+    'CATPart',
+    'CATProduct',
+    'cgr',
+    'model',
+    'exp',
+    'session',
+    'x_t',
+    'xmt_txt',
+    'x_b',
+    'xmp_bin',
+    'xmp_txt',
+    'sat',
+    'sab',
+    'igs',
+    'iges',
+    'stp',
+    'step',
+    'jt',
+    'xcgm',
+    '3dm',
+    'stl',
+    'obj',
+    '3mf',
+    'fbx',
+    'vda',
+    'dxf',
+    'dwg',
+    'pdf',
+    'idf',
+    'idb',
+    'emn',
+    'brd'
+  ];
+}

+ 147 - 143
src/views/codeManagement/businessCode/index.vue

@@ -49,7 +49,7 @@
               node-key="id"
               :props="{ label: 'name', children: 'sonDirectoryList' }"
               :expand-on-click-node="false"
-              :default-expanded-keys="['0','1']"
+              :default-expanded-keys="defaultExpandedKeys"
               @node-click="onNodeClick"
             >
               <span class="custom-tree-node" slot-scope="{ node, data }">
@@ -88,162 +88,166 @@
     <!-- <folder-edit @done="query" ref="editRef" :fileType="fileType" /> -->
   </div>
 </template>
-  
-  <script>
-//   import fileTableList from '@/views/doc/components/file-table-list.vue';
-import codeList from './codeList.vue';
-import codeSegmentList from './codeSegmentList.vue';
-import codeValueList from './codeValueList.vue';
-import { selectTreeList } from '@/api/businessCode';
-//   import { mapGetters } from 'vuex';
 
-export default {
-  components: { codeList, codeSegmentList, codeValueList },
+<script>
+  //   import fileTableList from '@/views/doc/components/file-table-list.vue';
+  import codeList from './codeList.vue';
+  import codeSegmentList from './codeSegmentList.vue';
+  import codeValueList from './codeValueList.vue';
+  import { selectTreeList } from '@/api/businessCode';
+  //   import { mapGetters } from 'vuex';
 
-  data() {
-    return {
-      rightData: {},
-      // 加载状态
-      loading: true,
-      // 列表数据
-      data: [],
-      institutionList: [],
-      // 选中数据
-      current: {},
-      // 是否显示表单弹窗
-      showFolderEditFlag: false,
-      // 编辑回显数据
-      editData: null,
-      // 上级id
-      parentId: null
-    };
-  },
-  computed: {
-    // ...mapGetters(['user'])
-  },
-  created() {
-    this.query();
-  },
-  methods: {
-    /* 查询 */
-    async query(row) {
-      this.loading = true;
-      this.data = await selectTreeList();
-      this.setTree(this.data);
-      this.$nextTick(() => {
-        if (row) {
-          this.$refs.tree.setCurrentKey(row.id);
-          this.onNodeClick(row);
-        } else {
-          this.$refs.tree.setCurrentKey(this.data[0].id);
-          this.onNodeClick(this.data[0]);
-        }
-      });
-      this.loading = false;
+  export default {
+    components: { codeList, codeSegmentList, codeValueList },
+
+    data() {
+      return {
+        rightData: {},
+        // 加载状态
+        loading: true,
+        // 列表数据
+        data: [],
+        institutionList: [],
+        // 选中数据
+        current: {},
+        // 是否显示表单弹窗
+        showFolderEditFlag: false,
+        // 编辑回显数据
+        editData: null,
+        // 上级id
+        parentId: null,
+        defaultExpandedKeys: ['0','1']
+      };
     },
-    setTree(data) {
-      data.forEach((item) => {
-        if (item.codeManageVOList && item.codeManageVOList.length > 0) {
-          item.sonDirectoryList = item.codeManageVOList;
-          item.codeManageVOList.forEach((val) => {
-            val['type'] = 3;
-          });
-        }
-        if (item.sonDirectoryList && item.sonDirectoryList.length > 0) {
-          this.setTree(item.sonDirectoryList);
-        }
-      });
+    computed: {
+      // ...mapGetters(['user'])
+    },
+    created() {
+      this.query();
     },
-    /* 选择数据 */
-    onNodeClick(row) {
-      if (row) {
-        this.current = row;
+    methods: {
+      /* 查询 */
+      async query(row) {
+        this.loading = true;
+
+        this.data = await selectTreeList();
+        this.setTree(this.data);
+        console.log(row);
         this.$nextTick(() => {
-          if (this.current.type == 1) {
-            this.$refs.tableRef1.reload();
+          if (row) {
+            this.$refs.tree.setCurrentKey(row.id);
+            this.defaultExpandedKeys = [row.id];
+            this.onNodeClick(row);
+          } else {
+            this.$refs.tree.setCurrentKey(this.data[0].id);
+            this.onNodeClick(this.data[0]);
           }
-          if (this.current.type == 2 && this.$refs.tableRef2) {
-            this.$refs.tableRef2.reload();
+        });
+        this.loading = false;
+      },
+      setTree(data) {
+        data.forEach((item) => {
+          if (item.codeManageVOList && item.codeManageVOList.length > 0) {
+            item.sonDirectoryList = item.codeManageVOList;
+            item.codeManageVOList.forEach((val) => {
+              val['type'] = 3;
+            });
           }
-          if (this.current.type == 3 && this.$refs.tableRef3) {
-            this.$refs.tableRef3.reload();
+          if (item.sonDirectoryList && item.sonDirectoryList.length > 0) {
+            this.setTree(item.sonDirectoryList);
           }
         });
-      } else {
-        this.current = null;
-      }
-    },
-    done(row) {
-      this.query(row);
-    },
-    /* 显示编辑 */
-    openEdit(type) {
-      if (type == 'del') {
-        this.remove();
-        return;
-      }
-      this.$refs.editRef.open(
-        type,
-        JSON.parse(JSON.stringify(this.current)),
-        this.data
-      );
-    },
-    /* 删除 */
-    remove() {
-      this.$confirm('确定要删除选中文件夹吗?', '提示', {
-        type: 'warning'
-      })
-        .then(() => {
-          const loading = this.$loading({ lock: true });
-          directoryDeleteAPI([this.current.id])
-            .then((msg) => {
-              loading.close();
-              this.$message.success('操作成功');
-              this.query();
-            })
-            .catch((e) => {
-              loading.close();
-            });
+      },
+      /* 选择数据 */
+      onNodeClick(row) {
+        if (row) {
+          this.current = row;
+          this.$nextTick(() => {
+            if (this.current.type == 1) {
+              this.$refs.tableRef1.reload();
+            }
+            if (this.current.type == 2 && this.$refs.tableRef2) {
+              this.$refs.tableRef2.reload();
+            }
+            if (this.current.type == 3 && this.$refs.tableRef3) {
+              this.$refs.tableRef3.reload();
+            }
+          });
+        } else {
+          this.current = null;
+        }
+      },
+      done(row) {
+        this.query(row);
+      },
+      /* 显示编辑 */
+      openEdit(type) {
+        if (type == 'del') {
+          this.remove();
+          return;
+        }
+        this.$refs.editRef.open(
+          type,
+          JSON.parse(JSON.stringify(this.current)),
+          this.data
+        );
+      },
+      /* 删除 */
+      remove() {
+        this.$confirm('确定要删除选中文件夹吗?', '提示', {
+          type: 'warning'
         })
-        .catch(() => {});
+          .then(() => {
+            const loading = this.$loading({ lock: true });
+            directoryDeleteAPI([this.current.id])
+              .then((msg) => {
+                loading.close();
+                this.$message.success('操作成功');
+                this.query();
+              })
+              .catch((e) => {
+                loading.close();
+              });
+          })
+          .catch(() => {});
+      }
     }
-  }
-};
+  };
 </script>
-  
-  <style lang="scss" scoped>
-.sys-organization-list {
-  height: calc(100vh - 180px);
-  box-sizing: border-box;
-  border-width: 1px;
-  border-style: solid;
-  overflow: auto;
-}
-.sys-organization-list :deep(.el-tree-node__content) {
-  height: 30px;
 
-  & > .el-tree-node__expand-icon {
-    margin-left: 10px;
+<style lang="scss" scoped>
+  .sys-organization-list {
+    height: calc(100vh - 180px);
+    box-sizing: border-box;
+    border-width: 1px;
+    border-style: solid;
+    overflow: auto;
   }
-}
-.custom-tree-node {
-  display: flex;
-  align-items: center;
-  img {
-    width: 20px;
-    height: 20px;
-    margin-right: 2px;
+  .sys-organization-list :deep(.el-tree-node__content) {
+    height: 30px;
+
+    & > .el-tree-node__expand-icon {
+      margin-left: 10px;
+    }
+  }
+  .custom-tree-node {
+    display: flex;
+    align-items: center;
+    img {
+      width: 20px;
+      height: 20px;
+      margin-right: 2px;
+    }
+  }
+  :deep(.el-popover) {
+    min-width: 50px;
+  }
+  :deep(.ele-split-panel-side .ele-table-tool-default) {
+    display: none;
   }
-}
-:deep(.el-popover) {
-  min-width: 50px;
-}
-:deep(.ele-split-panel-side .ele-table-tool-default) {
-  display: none;
-}
 </style>
 <style>
-.el-input.is-disabled .el-input__inner {
-  color: #606266;
-}
-</style>
+  .el-input.is-disabled .el-input__inner {
+    color: #606266;
+  }
+</style>

+ 135 - 14
src/views/material/product/detail.vue

@@ -129,7 +129,15 @@
               Number(categoryLevelPathId || $route.query.rootTreeId)
             )
           " -->
-            <el-form-item label="加工类型" prop="isConsumable">
+            <el-form-item
+              label="加工类型"
+              prop="isConsumable"
+              :rules="{
+                required: mandatoryFieldList.includes('isConsumable'),
+                message: '请选择加工类型',
+                trigger: 'change'
+              }"
+            >
               <el-select
                 v-model="form.isConsumable"
                 style="width: 100%"
@@ -142,24 +150,56 @@
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="牌号" prop="brandNum">
+            <el-form-item
+              label="牌号"
+              prop="brandNum"
+              :rules="{
+                required: mandatoryFieldList.includes('brandNum'),
+                message: '请输入牌号',
+                trigger: 'change'
+              }"
+            >
               <el-input v-model="form.brandNum" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="型号" prop="modelType">
+            <el-form-item
+              label="型号"
+              prop="modelType"
+              :rules="{
+                required: mandatoryFieldList.includes('modelType'),
+                message: '请输入型号',
+                trigger: 'change'
+              }"
+            >
               <el-input v-model="form.modelType" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="规格" prop="specification">
+            <el-form-item
+              label="规格"
+              prop="specification"
+              :rules="{
+                required: mandatoryFieldList.includes('specification'),
+                message: '请输入规格',
+                trigger: 'change'
+              }"
+            >
               <el-input v-model="form.specification" @input="inputSpe" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="计量类型" prop="measureType">
+            <el-form-item
+              label="计量类型"
+              prop="measureType"
+              :rules="{
+                required: mandatoryFieldList.includes('measureType'),
+                message: '请选择计量类型',
+                trigger: 'change'
+              }"
+            >
               <el-select
                 v-model="form.measureType"
                 style="width: 100%"
@@ -210,13 +250,29 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="图号/件号" prop="imgCode">
+            <el-form-item
+              label="图号/件号"
+              prop="imgCode"
+              :rules="{
+                required: mandatoryFieldList.includes('imgCode'),
+                message: '请输入图号/件号',
+                trigger: 'change'
+              }"
+            >
               <el-input v-model="form.imgCode" />
             </el-form-item>
           </el-col>
 
           <el-col :span="8">
-            <el-form-item label="毛重">
+            <el-form-item
+              label="毛重"
+              prop="roughWeight"
+              :rules="{
+                required: mandatoryFieldList.includes('roughWeight'),
+                message: '请输入毛重',
+                trigger: 'change'
+              }"
+            >
               <div class="form-line">
                 <el-input v-model="form.roughWeight" @input="handleInput2" />
               </div>
@@ -240,7 +296,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="体积">
+            <el-form-item
+              label="体积"
+              prop="volume"
+              :rules="{
+                required: mandatoryFieldList.includes('volume'),
+                message: '请输入体积',
+                trigger: 'change'
+              }"
+            >
               <div class="form-line">
                 <el-input
                   v-model="form.volume"
@@ -258,7 +322,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="级别">
+            <el-form-item
+              label="级别"
+              prop="level"
+              :rules="{
+                required: mandatoryFieldList.includes('level'),
+                message: '请选择级别',
+                trigger: 'change'
+              }"
+            >
               <template>
                 <el-select
                   style="width: 100%"
@@ -278,7 +350,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="机型" prop="modelKey">
+            <el-form-item
+              label="机型"
+              prop="modelKey"
+              :rules="{
+                required: mandatoryFieldList.includes('modelKey'),
+                message: '请选择机型',
+                trigger: 'change'
+              }"
+            >
               <DictSelection
                 dictName="物品机型"
                 clearable
@@ -292,7 +372,15 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="颜色" prop="colorKey">
+            <el-form-item
+              label="颜色"
+              prop="colorKey"
+              :rules="{
+                required: mandatoryFieldList.includes('colorKey'),
+                message: '请选择颜色',
+                trigger: 'change'
+              }"
+            >
               <DictSelection
                 dictName="物品颜色"
                 clearable
@@ -319,8 +407,25 @@
             </el-form-item>
           </el-col>
 
+          <!-- :rules="{
+                  required:
+                    form.categoryLevelPathId.substring(0, 1) == 9 ||
+                    form.componentAttribute.includes(1) == 1
+                      ? true
+                      : false,
+                  message: '请选择生产类型',
+                  trigger: 'change'
+                }" -->
           <el-col :span="8" v-for="(f, idx) in fileList" :key="idx">
-            <el-form-item :label="f.label" :prop="'extField.' + f.prop">
+            <el-form-item
+              :label="f.label"
+              :prop="'extField.' + f.prop"
+              :rules="{
+                required: mandatoryFieldList.includes(f.prop),
+                message: '请输入',
+                trigger: 'change'
+              }"
+            >
               <template>
                 <div class="form-line">
                   <component
@@ -435,7 +540,7 @@
   import { getDetails } from '@/api/classifyManage/itemInformation';
   import { getByCode } from '@/api/system/dictionary-data';
   import {
-    // getCode,
+    getCode as getCodeApi,
     rootCategoryCode,
     fieldModel,
     checkExist
@@ -656,7 +761,8 @@
         codeShow: false,
 
         status: null,
-        isNetWeight: 0
+        isNetWeight: 0,
+        mandatoryFieldList: []
       };
     },
     watch: {
@@ -840,6 +946,16 @@
         }
       });
 
+      parameterGetByCode({
+        code: 'mandatory_field'
+      }).then((res) => {
+        // console.log(res.value, '77777');
+        if (res.value) {
+          this.mandatoryFieldList = res.value.split(',');
+          console.log(this.mandatoryFieldList, '7222222');
+        }
+      });
+
       //新增
 
       this.$set(
@@ -1232,6 +1348,11 @@
           }).then((res) => {
             this.$set(this.form, 'code', res.codeStr);
           });
+        } else {
+          if (this.ruleCode && this.ruleCode != '自定义') {
+            const code = await getCodeApi(this.ruleCode);
+            this.$set(this.form, 'code', code);
+          }
         }
       },
 

+ 2 - 2
src/views/technology/route/components/chooseCategory.vue

@@ -152,7 +152,7 @@
         if (type == 1) {
           this.title = '工艺路线绑定产品分类';
         } else if (type == 2) {
-          this.title = '工艺路线绑定品';
+          this.title = '工艺路线绑定品';
         }
         this.type = type;
         this.categoryVisible = true;
@@ -286,7 +286,7 @@
         const messageTitle =
           this.type == 1
             ? '此操将删除该分类所绑定的工艺路线, 是否继续?'
-            : '此操将删除该品所绑定的工艺路线, 是否继续?';
+            : '此操将删除该品所绑定的工艺路线, 是否继续?';
 
         this.$confirm(messageTitle, '提示', {
           confirmButtonText: '确定',

+ 3 - 2
src/views/technology/route/components/chooseGoods.vue

@@ -64,7 +64,7 @@
   import IndexSearch from './index-search.vue';
 
   import dictMixins from '@/mixins/dictMixins';
-  import { getTreeByGroup } from '@/api/classifyManage';
+  import { getTreeByGroup, getTreeByPid } from '@/api/classifyManage';
   import { parameterGetByCode } from '@/api/system/dictionary/index.js';
 
   import { getInfoById } from '@/api/classifyManage';
@@ -143,6 +143,7 @@
     methods: {
       open() {
         this.visible = true;
+        console.log(this.$route.query.categoryLevelId, '88888');
         this.getTreeData();
         //是否显示code
         parameterGetByCode({
@@ -162,7 +163,7 @@
         try {
           this.treeLoading = true;
 
-          const res = await getTreeByGroup({ type: 5 });
+          const res = await getTreeByPid(9);
           this.treeLoading = false;
           if (res?.code === '0') {
             this.treeList = res.data;

+ 1 - 1
src/views/technology/route/components/user-edit.vue

@@ -185,7 +185,7 @@
             { required: true, message: '请输入工艺路线编码', trigger: 'blur' }
           ],
           factoryId: [
-            { required: true, message: '请输入工艺路线', trigger: 'blur' }
+            { required: true, message: '请选择所属工厂', trigger: 'blur' }
           ],
 
           status: [

+ 1 - 1
src/views/technology/route/index.vue

@@ -127,7 +127,7 @@
             @click="bingdingCategory(row, 2)"
             v-if="isCategory"
           >
-            绑定
+            绑定
           </el-link>
 
           <el-popconfirm