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">
@@ -10,7 +10,8 @@
            ref="deviceCustomTypeTableList" :currentTreeNodeInfo="currentTreeNodeInfo"
            @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/>
          <NcDocumentTableList ref="ncDocumentTableListRef" :currentTreeNodeInfo="currentTreeNodeInfo"
          <NcDocumentTableList ref="ncDocumentTableListRef"
                               :currentNCDocumentAttributionInfo="currentNCDocumentAttributionInfo"
                               @handleTableContextMenuOpen="handleTableContextMenuOpen" :size="tableContainerSize"/>
        </div>
      </a-tab-pane>
@@ -55,15 +56,24 @@
      isProcessStepHasDeviceTypeList: false,
      currentRightClickedTableRowInfo: {},
      currentTreeNodeInfo: {},
      currentClickedTypeInfo: {},
      currentNCDocumentAttributionInfo: {},//当前NC文档的所属级即父级的详细信息(引入设备类后NC挂载至设备类下反之则挂载在工序和工步下)
      hasLoadedDataTabKeyArray: []
    }
  },
  created() {
    this.$bus.$on('sendCurrentTreeNodeInfo', this.receiveCurrentTreeNodeInfo)
    this.$bus.$on('sendCurrentClickedTypeInfo', this.receiveCurrentClickedTypeInfo)
    this.$bus.$on('reloadDocumentListData', this.reloadDocumentListData)
    this.$bus.$on('tableMenuItemMethodTrigger', this.triggerCorrespondingMethod)
    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: {
    /**
@@ -85,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
@@ -105,12 +125,28 @@
    },
    /**
     * 接受当前点击的设备类信息
     * @param record 当前点击的设备类行信息
     */
    receiveCurrentClickedTypeInfo(record) {
      const { id, attributionType } = record
      this.currentClickedTypeInfo = Object.assign({}, record)
      this.currentNCDocumentAttributionInfo = Object.assign({}, {
        attributionId: id,
        attributionType,
        docClassCode: 'NC'
      })
      this.$nextTick(() => {
        if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
      })
    },
    /**
     * 控制右键菜单开启
     * @param record 当前表格行信息
     */
    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'
@@ -131,16 +167,34 @@
        this.hasLoadedDataTabKeyArray.push(activeTabKey)
      }
    },
    /**
     * 文档以及NC程序导入/出库/入库成功后触发重新加载文档列表
     * 文档以及NC程序导入/出库/入库/取消出库/发布/归档成功后触发重新加载文档列表
     * @param docClassCode 文档类别
     * @param attributionId 节点Id
     * @param attributionType 文档父级type类型
     * @param attributionId 文档父级Id
     */
    reloadDocumentListData({ docClassCode, attributionId }) {
      // 如果上传的文档不是所属于当前所展示节点的文档则不重新获取文档列表
      if (this.currentTreeNodeInfo.id !== attributionId) return
    reloadDocumentListData({ docClassCode, attributionType, attributionId }) {
      console.log('docClassCode, attributionType, attributionId', docClassCode, attributionType, attributionId)
      // 在此处设备NC文档父级参数是可此方法是结构树以及设备类两种不同导入方式的共同出口
      this.currentNCDocumentAttributionInfo = Object.assign({}, { docClassCode, attributionId, attributionType })
      // 判断当前右侧展示的文档的所属是否是当前左键选中树节点或设备类,若不是当前左键选中的则在导入后不刷新右侧的文档列表(避免无效刷新)
      // 判断是否是在文档列表中进行出库/入库/发布/归档等操作,若是在文档列表中操作则操作成功后直接刷新文档列表
      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') {
        if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
        this.$nextTick(() => {
          if (this.$refs.ncDocumentTableListRef) this.$refs.ncDocumentTableListRef.loadData(1)
        })
      } else {
        if (this.$refs.otherDocumentTableListRef) this.$refs.otherDocumentTableListRef.loadData(1)
      }
@@ -152,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
@@ -169,7 +223,7 @@
    // 删除当前右键选中文档
    handleDelete() {
      const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
      const that = this
      that.$confirm({
        title: '提示',
@@ -184,7 +238,7 @@
                  message: '消息',
                  description: res.message
                })
                that.reloadDocumentListData({ docClassCode: param, attributionId })
                that.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
              } else {
                that.$notification.warning({
                  message: '消息',
@@ -218,7 +272,7 @@
     */
    handlePull(menuLabel) {
      const that = this
      const { docId, docName, param, attributionId } = this.currentRightClickedTableRowInfo
      const { docId, docName, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
      that.$confirm({
        title: '提示',
        content: `确认${menuLabel}吗?`,
@@ -227,9 +281,8 @@
        onOk: () => {
          dncApi.documentOutboundApi({ docId, docName })
            .then(res => {
              console.log('res------------------', res)
              if (res.success) {
                that.reloadDocumentListData({ docClassCode: param, attributionId })
                that.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                that.$notification.success({
                  message: '消息',
                  description: `${menuLabel}成功`
@@ -263,7 +316,7 @@
     */
    handleCancelPull(menuLabel) {
      const that = this
      const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
      that.$confirm({
        title: '提示',
        content: `确认${menuLabel}吗?`,
@@ -273,7 +326,7 @@
          dncApi.documentCancelOutboundApi(docId)
            .then(res => {
              if (res.success) {
                this.reloadDocumentListData({ docClassCode: param, attributionId })
                this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                that.$notification.success({
                  message: '消息',
                  description: res.message
@@ -307,7 +360,7 @@
     */
    handlePublish(menuLabel) {
      const that = this
      const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
      that.$confirm({
        title: '提示',
        content: `确认${menuLabel}吗?`,
@@ -317,7 +370,7 @@
          dncApi.documentPublishApi(docId)
            .then(res => {
              if (res.success) {
                this.reloadDocumentListData({ docClassCode: param, attributionId })
                this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                this.$bus.$emit('reloadMainBottomTableData', 'documentVersion')
                that.$notification.success({
                  message: '消息',
@@ -352,7 +405,7 @@
     */
    handleRepublish(menuLabel) {
      const that = this
      const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
      that.$confirm({
        title: '提示',
        content: `确认${menuLabel}吗?`,
@@ -362,7 +415,7 @@
          dncApi.documentRepublishApi(docId)
            .then(res => {
              if (res.success) {
                this.reloadDocumentListData({ docClassCode: param, attributionId })
                this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                that.$notification.success({
                  message: '消息',
                  description: res.message
@@ -391,12 +444,12 @@
    },
    /**
     * 重归档当前右键选中文档且后续无法继续发布或归档
     * 归档当前右键选中文档且后续无法继续发布或归档
     * @param menuLabel
     */
    handlePigeonhole(menuLabel) {
      const that = this
      const { docId, param, attributionId } = this.currentRightClickedTableRowInfo
      const { docId, param, attributionId, attributionType } = this.currentRightClickedTableRowInfo
      that.$confirm({
        title: '提示',
        content: `${menuLabel}后不可取消,确认${menuLabel}吗?`,
@@ -406,7 +459,7 @@
          dncApi.documentPigeonholeApi(docId)
            .then(res => {
              if (res.success) {
                this.reloadDocumentListData({ docClassCode: param, attributionId })
                this.reloadDocumentListData({ docClassCode: param, attributionId, attributionType })
                that.$notification.success({
                  message: '消息',
                  description: res.message