lyh
2025-04-14 0c4e7ea6e347db2f2749bf9446ac0ed215bdecd5
src/views/dnc/base/modules/ProductStructure/ProductStructureMainTop.vue
@@ -1,5 +1,5 @@
<template>
  <div v-if="+currentTreeNodeInfo.type!==4">
  <div>
    <a-tabs v-model="activeTabKey" @contextmenu.native="e=>e.preventDefault()" @change="handleTabChange"
            v-if="Object.keys(currentTreeNodeInfo).length!==0">
      <a-tab-pane :key="1" tab="NC管理" v-if="+currentTreeNodeInfo.type===5||+currentTreeNodeInfo.type===6">
@@ -16,7 +16,7 @@
        </div>
      </a-tab-pane>
      <a-tab-pane :key="2" tab="其他文档">
      <a-tab-pane :key="2" tab="其他文档" v-if="currentTreeNodeInfo.type !==5 && currentTreeNodeInfo.type!==6">
        <OtherDocumentTableList ref="otherDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo"
                                @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/>
      </a-tab-pane>
@@ -69,6 +69,12 @@
    this.getDeviceTypeListDisplayPermission('dnc_device_type_process', 'isProcessHasDeviceTypeList')
    this.getDeviceTypeListDisplayPermission('dnc_device_type_step', 'isProcessStepHasDeviceTypeList')
  },
  beforeDestroy() {
    this.$bus.$off('sendCurrentTreeNodeInfo', this.receiveCurrentTreeNodeInfo)
    this.$bus.$off('sendCurrentClickedTypeInfo', this.receiveCurrentClickedTypeInfo)
    this.$bus.$off('reloadDocumentListData', this.reloadDocumentListData)
    this.$bus.$off('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod)
  },
  methods: {
    /**
     * 获取设备类型列表在工序和工步层级的展示权限
@@ -89,15 +95,25 @@
     */
    receiveCurrentTreeNodeInfo(treeNodeInfo) {
      console.log('treeNodeInfo', treeNodeInfo)
      // 从树组件接受树节点信息后从父组件流入子组件
      const { id, type } = treeNodeInfo
      // 从树组件接受树节点信息后从父组件流入子组件并重置数据
      this.currentClickedTypeInfo = this.currentRightClickedTableRowInfo = {}
      this.currentTreeNodeInfo = treeNodeInfo
      // 清空上一节点已经加载过得文档列表tabKey
      this.currentNCDocumentAttributionInfo = Object.assign({}, {
        attributionId: id,
        attributionType: type,
        docClassCode: 'NC'
      })
      this.hasLoadedDataTabKeyArray = []
      if (+treeNodeInfo.type === 5 || +treeNodeInfo.type === 6) {
      if (+type === 5 || +type === 6) {
        this.activeTabKey = 1
        this.$nextTick(() => {
          if (this.$refs.deviceCustomTypeTableList) this.$refs.deviceCustomTypeTableList.setQueryParamAndLoadData()
          else if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
          if (this.$refs.deviceCustomTypeTableList) {
            this.$refs.deviceCustomTypeTableList.setQueryParamAndLoadData()
            // 切换树之后清空NC程序列表
            if (this.$refs.ncDocumentTableListRef && this.$refs.ncDocumentTableListRef.dataSource.length > 0) this.$refs.ncDocumentTableListRef.dataSource = []
          } else if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
        })
      } else {
        this.activeTabKey = 2
@@ -108,6 +124,10 @@
      this.hasLoadedDataTabKeyArray.push(this.activeTabKey)
    },
    /**
     * 接受当前点击的设备类信息
     * @param record 当前点击的设备类行信息
     */
    receiveCurrentClickedTypeInfo(record) {
      const { id, attributionType } = record
      this.currentClickedTypeInfo = Object.assign({}, record)
@@ -127,7 +147,6 @@
     */
    handleTableContextMenuOpen(record) {
      this.currentRightClickedTableRowInfo = Object.assign({}, record)
      console.log('currentRightClickedTableRowInfo', this.currentRightClickedTableRowInfo)
      this.$refs.tableContextMenuRef.currentMenuLevel = record.param
      this.$refs.tableContextMenuRef.menuStyle.top = event.clientY + 'px'
      this.$refs.tableContextMenuRef.menuStyle.left = event.clientX + 'px'
@@ -148,8 +167,9 @@
        this.hasLoadedDataTabKeyArray.push(activeTabKey)
      }
    },
    /**
     * 文档以及NC程序导入/出库/入库成功后触发重新加载文档列表
     * 文档以及NC程序导入/出库/入库/取消出库/发布/归档成功后触发重新加载文档列表
     * @param docClassCode 文档类别
     * @param attributionType 文档父级type类型
     * @param attributionId 文档父级Id
@@ -158,12 +178,19 @@
      console.log('docClassCode, attributionType, attributionId', docClassCode, attributionType, attributionId)
      // 在此处设备NC文档父级参数是可此方法是结构树以及设备类两种不同导入方式的共同出口
      this.currentNCDocumentAttributionInfo = Object.assign({}, { docClassCode, attributionId, attributionType })
      // 若引入设备类则只需要判断当前出现的文档所属是否是当前左键选中的文档,若不是当前选中的文档则不刷新文档列表(避免无效刷新)
      if (this.currentRightClickedTableRowInfo.hasOwnProperty('deviceManagementId')) {
        if (this.currentClickedTypeInfo.id !== attributionId) return
      } else {
        if (this.currentTreeNodeInfo.id !== attributionId) return
      // 判断当前右侧展示的文档的所属是否是当前左键选中树节点或设备类,若不是当前左键选中的则在导入后不刷新右侧的文档列表(避免无效刷新)
      // 判断是否是在文档列表中进行出库/入库/发布/归档等操作,若是在文档列表中操作则操作成功后直接刷新文档列表
      if (!this.currentRightClickedTableRowInfo.hasOwnProperty('docId')) {
        if (this.currentRightClickedTableRowInfo.hasOwnProperty('deviceManagementId')) {
          // 此种情况是在引入设备类并在设备类列表中进行NC文档导入
          if (this.currentClickedTypeInfo.id !== attributionId) return
        } else {
          // 此种情况是在结构树节点上进行文档导入
          if (this.currentTreeNodeInfo.id !== attributionId) return
        }
      }
      if (docClassCode === 'NC') {
        this.$nextTick(() => {
          if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
@@ -179,7 +206,7 @@
      const { docId, docName } = this.currentRightClickedTableRowInfo
      dncApi.downloadDocumentApi({ docId, docName })
        .then(res => {
          if (res && !res.success) {
          if (!res.success) {
            that.$notification.error({
              message: '消息',
              description: res.message
@@ -254,7 +281,6 @@
        onOk: () => {
          dncApi.documentOutboundApi({ docId, docName })
            .then(res => {
              console.log('res------------------', res)
              if (res.success) {
                that.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                that.$notification.success({
@@ -418,7 +444,7 @@
    },
    /**
     * 重归档当前右键选中文档且后续无法继续发布或归档
     * 归档当前右键选中文档且后续无法继续发布或归档
     * @param menuLabel
     */
    handlePigeonhole(menuLabel) {