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

1、优化内存,修改组件的销毁事件

周兴 пре 3 година
родитељ
комит
b992dfa501

+ 17 - 8
src/components/base/dk-date-picker-pop/dk-date-picker-pop.vue

@@ -307,6 +307,22 @@ export default {
         this.$emit('input', null)
         this.$emit('input', null)
       }
       }
     },
     },
+    /**
+     * @desc   : 提供给resize用,控制openFlag
+     * @author : 周兴
+     * @date   : 2023/4/13 14:51
+     */
+    setOpenFlag(){
+      if (this.type == 'daterange') {
+        this.openFlag = false;
+        setTimeout(() => {
+          this.openFlag = null;
+        }, 300)
+      }
+    },
+  },
+  beforeDestroy() {
+    window.removeEventListener('resize',this.setOpenFlag)
   },
   },
   mounted() {
   mounted() {
     //监听窗口变化
     //监听窗口变化
@@ -314,14 +330,7 @@ export default {
     if (self.dkFormItem) {
     if (self.dkFormItem) {
       self.dkFormItem.setItems(self);   // 把当前组件赋值给formItem
       self.dkFormItem.setItems(self);   // 把当前组件赋值给formItem
     }
     }
-    window.addEventListener('resize', function (e) {
-      if (self.type == 'daterange') {
-        self.openFlag = false;
-        setTimeout(() => {
-          self.openFlag = null;
-        }, 300)
-      }
-    })
+    window.addEventListener('resize', self.setOpenFlag)
   },
   },
   created() {
   created() {
     if (this.value instanceof Array) {
     if (this.value instanceof Array) {

+ 68 - 57
src/components/base/dk-modal/dk-modal.vue

@@ -1,50 +1,51 @@
 <!-- @desc:modal弹窗  @auth:周兴  @time:2022/7/23 15:40 -->
 <!-- @desc:modal弹窗  @auth:周兴  @time:2022/7/23 15:40 -->
 <template>
 <template>
-
-  <Modal
-    ref="modal"
-    :width="width"
-    :ok-text="okText"
-    :cancel-text="cancelText"
-    :footer-hide="!footerFlag"
-    :transfer="transfer"
-    :scrollable="scrollable"
-    :fullscreen="fullscreen"
-    :draggable="draggable"
-    :sticky="sticky"
-    :reset-drag-position="resetDragPosition"
-    :sticky-distance="stickyDistance"
-    :closable="closable"
-    :lock-scroll="lockScroll"
-    v-model="showModal"
-    :class-name="className"
-    :styles="styles"
-    @on-ok="handleOk"
-    @on-cancel="handleCancel"
-    @on-visible-change="onVisibleChange"
-    :z-index="1000"
-    :title="title"
-    :mask-closable="maskClosable"
-    :mask="mask">
-    <div slot="header" class="header-class">
-      <span>{{ title }}</span>
-      <Poptip trigger="hover" transfer v-if="showHeaderIcon">
-        <Icon style="cursor: pointer" size="16" type="ios-information-circle" />
-        <div slot="content">
-          <slot name="headerTip"></slot>
-        </div>
-      </Poptip>
-    </div>
-    <slot></slot>
-    <div v-if="footerFlag" slot="footer">
-      <!--      <DkButton :loading="loading" v-if="okVisibleFlag" type="primary" @click="modalOk" name="confirm" :ref="saveFlag?'save':'confirm'">{{ saveFlag?$t('save') :$t('confirm') }}</DkButton>-->
-      <!--      <DkButton v-if="cancelVisibleFlag" @click="modalCancel" name="close" ref="close">{{ $t('close') }}</DkButton>-->
-      <DkButton :loading="loading" v-if="okVisibleFlag" type="primary" @click="modalOk" name="confirm"
-                :ref="saveFlag?'save':'confirm'">{{ saveFlag ? '保存(S)' : '确定(O)' }}
-      </DkButton>
-      <DkButton v-if="cancelVisibleFlag" @click="modalCancel" name="close" ref="close">{{ '关闭(X)' }}</DkButton>
-    </div>
-  </Modal>
+  <div ref="modal_div" v-if="showModal">
+    <Modal
+      ref="modal"
+      :width="width"
+      :ok-text="okText"
+      :cancel-text="cancelText"
+      :footer-hide="!footerFlag"
+      :transfer="transfer"
+      :scrollable="scrollable"
+      :fullscreen="fullscreen"
+      :draggable="draggable"
+      :sticky="sticky"
+      :reset-drag-position="resetDragPosition"
+      :sticky-distance="stickyDistance"
+      :closable="closable"
+      :lock-scroll="lockScroll"
+      v-model="showModal"
+      :class-name="className"
+      :styles="styles"
+      @on-ok="handleOk"
+      @on-cancel="handleCancel"
+      @on-visible-change="onVisibleChange"
+      :z-index="1000"
+      :title="title"
+      :mask-closable="maskClosable"
+      :mask="mask">
+      <div slot="header" class="header-class">
+        <span>{{ title }}</span>
+        <Poptip trigger="hover" transfer v-if="showHeaderIcon">
+          <Icon style="cursor: pointer" size="16" type="ios-information-circle"/>
+          <div slot="content">
+            <slot name="headerTip"></slot>
+          </div>
+        </Poptip>
+      </div>
+      <slot></slot>
+      <div v-if="footerFlag" slot="footer">
+        <!--      <DkButton :loading="loading" v-if="okVisibleFlag" type="primary" @click="modalOk" name="confirm" :ref="saveFlag?'save':'confirm'">{{ saveFlag?$t('save') :$t('confirm') }}</DkButton>-->
+        <!--      <DkButton v-if="cancelVisibleFlag" @click="modalCancel" name="close" ref="close">{{ $t('close') }}</DkButton>-->
+        <DkButton :loading="loading" v-if="okVisibleFlag" type="primary" @click="modalOk" name="confirm"
+                  :ref="saveFlag?'save':'confirm'">{{ saveFlag ? '保存(S)' : '确定(O)' }}
+        </DkButton>
+        <DkButton v-if="cancelVisibleFlag" @click="modalCancel" name="close" ref="close">{{ '关闭(X)' }}</DkButton>
+      </div>
+    </Modal>
+  </div>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -174,22 +175,22 @@ export default {
       default: false
       default: false
     },
     },
     //点击遮罩层是否可以关闭model,默认可以
     //点击遮罩层是否可以关闭model,默认可以
-    maskClosable:{
+    maskClosable: {
       type: Boolean,
       type: Boolean,
       default: true
       default: true
     },
     },
     //是否显示遮罩层阴影,默认显示
     //是否显示遮罩层阴影,默认显示
-    mask:{
+    mask: {
       type: Boolean,
       type: Boolean,
       default: true
       default: true
     },
     },
     // 是否显示表头图标
     // 是否显示表头图标
-    showHeaderIcon:{
+    showHeaderIcon: {
       type: Boolean,
       type: Boolean,
       default: false
       default: false
     },
     },
     // 关闭是否清空数据
     // 关闭是否清空数据
-    autoClearFlag:{
+    autoClearFlag: {
       type: Boolean,
       type: Boolean,
       default: true
       default: true
     }
     }
@@ -357,6 +358,17 @@ export default {
         }
         }
       }
       }
     },
     },
+    /**
+     * @desc   : 控制弹起
+     * @author : 周兴
+     * @date   : 2023/4/13 14:55
+     */
+    handleKeyup(e) {
+      if (e.key === 'Tab' && document.activeElement && document.activeElement.name === 'close') {
+        // 如果是到关闭按钮,就把当前打回第一控件上
+        this.focus();
+      }
+    },
   },
   },
   created() {
   created() {
     if (this.top) {
     if (this.top) {
@@ -366,21 +378,20 @@ export default {
       Object.assign(this.styles, {left: this.left})
       Object.assign(this.styles, {left: this.left})
     }
     }
   },
   },
+  beforeDestroy() {
+    window.removeEventListener('keyup', this.handleKeyup)
+    this.showModal = null;
+  },
   mounted() {
   mounted() {
     let self = this;
     let self = this;
     //监听窗口变化
     //监听窗口变化
-    window.addEventListener('keyup', function (e) {
-      if (e.key === 'Tab' && document.activeElement && document.activeElement.name === 'close' ) {
-        // 如果是到关闭按钮,就把当前打回第一控件上
-        self.focus();
-      }
-    })
+    window.addEventListener('keyup', self.handleKeyup)
   }
   }
 }
 }
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-.header-class{
+.header-class {
   font-weight: bold;
   font-weight: bold;
 }
 }
 
 
@@ -392,7 +403,7 @@ export default {
   height: 100%;
   height: 100%;
 }
 }
 
 
-/deep/ .ivu-modal-fullscreen .ivu-modal-body{
+/deep/ .ivu-modal-fullscreen .ivu-modal-body {
   overflow-x: hidden !important;
   overflow-x: hidden !important;
 }
 }
 
 

+ 10 - 10
src/components/base/dk-table/dk-table.vue

@@ -1,6 +1,6 @@
 <!-- @desc:显示表格  @auth:周兴  @time:2022/11/14 16:29 -->
 <!-- @desc:显示表格  @auth:周兴  @time:2022/11/14 16:29 -->
 <template>
 <template>
-  <div :style="{height: 100 + '%',width:divWidth,paddingRight:'1px'}">
+  <div :style="{height: 100 + '%',width:divWidth,paddingRight:'1px'}" v-if="existsFlag">
     <loading :loading="loadingData"></loading>
     <loading :loading="loadingData"></loading>
     <vxe-table
     <vxe-table
       :cell-style="cellStyle"
       :cell-style="cellStyle"
@@ -366,6 +366,7 @@ export default {
     return {
     return {
       vm: vm,
       vm: vm,
       flag: true,
       flag: true,
+      existsFlag:true,
       loadingData: false,
       loadingData: false,
       exportCondition: {},
       exportCondition: {},
       userTableSetInfo:null,
       userTableSetInfo:null,
@@ -1817,22 +1818,21 @@ export default {
       }, 100)
       }, 100)
     },
     },
   },
   },
+  beforeDestroy() {
+    // 销毁
+    window.removeEventListener('resize',this.changeSettingLocation)
+    window.removeEventListener('scroll', this.hideAllPop)
+    this.existsFlag = null;
+  },
   mounted() {
   mounted() {
     let self = this;
     let self = this;
     //监听窗口变化
     //监听窗口变化
-    window.addEventListener('resize', function (e) {
-      setTimeout(() => {
-        self.settingLeft = self.$refs[self.name] ? (self.$refs[self.name].$el.offsetWidth + self.$refs[self.name].$el.offsetLeft - 26) + 'px' : 0// 设置图标居左的位置
-        self.settingTop = self.$refs[self.name] ? (self.$refs[self.name].$el.offsetTop + 1) + 'px' : 0;           // 设置图标居上的位置
-      }, 300)
-    })
+    window.addEventListener('resize', self.changeSettingLocation)
     setTimeout(() => {
     setTimeout(() => {
       self.changeSettingLocation();
       self.changeSettingLocation();
     }, 1000)
     }, 1000)
     // 监听滚动
     // 监听滚动
-    window.addEventListener('scroll', function (e) {
-      self.hideAllPop() //关闭表头的pop
-    }, true)
+    window.addEventListener('scroll', self.hideAllPop)
   },
   },
   created() {
   created() {
     if (!this.checkDisable) {
     if (!this.checkDisable) {

+ 157 - 158
src/components/base/edit-table/edit-table.vue

@@ -1,6 +1,6 @@
 <!-- @desc:编辑表格  @auth:周兴  @time:2022/11/15 13:06 -->
 <!-- @desc:编辑表格  @auth:周兴  @time:2022/11/15 13:06 -->
 <template>
 <template>
-  <div :style="{height: 100 + '%',width:divWidth,paddingRight:'3px'}">
+  <div :style="{height: 100 + '%',width:divWidth,paddingRight:'3px'}"  ref="edit-table-div" v-if="existsFlag">
     <div v-if="title" class="table-title">{{ title }}</div>
     <div v-if="title" class="table-title">{{ title }}</div>
     <vxe-table
     <vxe-table
       border
       border
@@ -68,31 +68,31 @@
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :title="colItem.title?colItem.title:$t(colItem.field)" :params="{type:'tableSelect'}"
                     :title="colItem.title?colItem.title:$t(colItem.field)" :params="{type:'tableSelect'}"
                     :edit-render="{autofocus: '.vxe-input--inner'}">
                     :edit-render="{autofocus: '.vxe-input--inner'}">
-          <template #header="{ row }">
-            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>
-            <Poptip trigger="click" transfer @on-popper-hide="popperHide">
-              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"
-                    v-if="colItem.copyVisible"/>
-              <div slot="content">
-                <div style="display: flex;align-items: center;justify-content: center;">
-                  <TableSelect :field="colItem.field" :dataType="colItem.dataType"
-                               :sortBoolean="colItem.sortBoolean"
-                               :multiple="colItem.multiple"
-                               :showType="colItem.showType"
-                               :promotionType="colItem.promotionType"
-                               @onBatchChoose="onBatchChooseCopy($event,colItem,'batch')"
-                               @onChoose="onBatchChooseCopy($event,colItem)"
-                               :search-param="typeof colItem.param === 'function'? colItem.param():colItem.param"></TableSelect>
-                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>
-                </div>
-              </div>
-            </Poptip>
-            <!--冻结/解冻列-->
-            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "
-                  v-if="freezeData && colItem.freezeFlag"
-                  type="ios-lock"
-                  @click="handleFreeze(colItem.field)"/>
-          </template>
+          <!--          <template #header="{ row }">-->
+          <!--            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>-->
+          <!--            <Poptip trigger="click" transfer @on-popper-hide="popperHide">-->
+          <!--              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"-->
+          <!--                    v-if="colItem.copyVisible"/>-->
+          <!--              <div slot="content">-->
+          <!--                <div style="display: flex;align-items: center;justify-content: center;">-->
+          <!--                  <TableSelect :field="colItem.field" :dataType="colItem.dataType"-->
+          <!--                               :sortBoolean="colItem.sortBoolean"-->
+          <!--                               :multiple="colItem.multiple"-->
+          <!--                               :showType="colItem.showType"-->
+          <!--                               :promotionType="colItem.promotionType"-->
+          <!--                               @onBatchChoose="onBatchChooseCopy($event,colItem,'batch')"-->
+          <!--                               @onChoose="onBatchChooseCopy($event,colItem)"-->
+          <!--                               :search-param="typeof colItem.param === 'function'? colItem.param():colItem.param"></TableSelect>-->
+          <!--                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>-->
+          <!--                </div>-->
+          <!--              </div>-->
+          <!--            </Poptip>-->
+          <!--            &lt;!&ndash;冻结/解冻列&ndash;&gt;-->
+          <!--            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "-->
+          <!--                  v-if="freezeData && colItem.freezeFlag"-->
+          <!--                  type="ios-lock"-->
+          <!--                  @click="handleFreeze(colItem.field)"/>-->
+          <!--          </template>-->
           <template style="width:100%;" #edit="{ row,column,rowIndex }">
           <template style="width:100%;" #edit="{ row,column,rowIndex }">
             <TableSelect :text="row[colItem.field]" :field="colItem.field" :dataType="colItem.dataType"
             <TableSelect :text="row[colItem.field]" :field="colItem.field" :dataType="colItem.dataType"
                          v-if="setCellCanTableSelect(row,colItem) "
                          v-if="setCellCanTableSelect(row,colItem) "
@@ -122,14 +122,14 @@
                     :formatter="formatColumn" :params="colItem"
                     :formatter="formatColumn" :params="colItem"
                     :title="colItem.title?colItem.title:$t(colItem.field)">
                     :title="colItem.title?colItem.title:$t(colItem.field)">
           <!--标题-->
           <!--标题-->
-          <template #header="{ row,column,columnIndex }">
-            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>
-            <!--冻结/解冻列-->
-            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "
-                  v-if="freezeData && colItem.freezeFlag"
-                  type="ios-lock"
-                  @click="handleFreeze(colItem.field)"/>
-          </template>
+          <!--          <template #header="{ row,column,columnIndex }">-->
+          <!--            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>-->
+          <!--            &lt;!&ndash;冻结/解冻列&ndash;&gt;-->
+          <!--            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "-->
+          <!--                  v-if="freezeData && colItem.freezeFlag"-->
+          <!--                  type="ios-lock"-->
+          <!--                  @click="handleFreeze(colItem.field)"/>-->
+          <!--          </template>-->
           <template #default="{ row,rowIndex,column }">
           <template #default="{ row,rowIndex,column }">
             <div class="edit-div-class" @dblclick.stop="copyValue(row,colItem,rowIndex)">{{
             <div class="edit-div-class" @dblclick.stop="copyValue(row,colItem,rowIndex)">{{
                 formatColumn({
                 formatColumn({
@@ -148,14 +148,14 @@
                     :min-width="colItem.width?colItem.width:vm.$config.columnWidthMin" :params="colItem"
                     :min-width="colItem.width?colItem.width:vm.$config.columnWidthMin" :params="colItem"
                     :title="colItem.title?colItem.title:$t(colItem.field)">
                     :title="colItem.title?colItem.title:$t(colItem.field)">
           <!--标题-->
           <!--标题-->
-          <template #header="{ row,column,columnIndex }">
-            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>
-            <!--冻结/解冻列-->
-            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "
-                  v-if="freezeData && colItem.freezeFlag"
-                  type="ios-lock"
-                  @click="handleFreeze(colItem.field)"/>
-          </template>
+          <!--          <template #header="{ row,column,columnIndex }">-->
+          <!--            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>-->
+          <!--            &lt;!&ndash;冻结/解冻列&ndash;&gt;-->
+          <!--            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "-->
+          <!--                  v-if="freezeData && colItem.freezeFlag"-->
+          <!--                  type="ios-lock"-->
+          <!--                  @click="handleFreeze(colItem.field)"/>-->
+          <!--          </template>-->
           <template #default="{ row,rowIndex }">
           <template #default="{ row,rowIndex }">
             <i-switch size="small" :ref="colItem.field+'_default_'+rowIndex" v-model="row[colItem.field]"
             <i-switch size="small" :ref="colItem.field+'_default_'+rowIndex" v-model="row[colItem.field]"
                       :disabled="true"/>
                       :disabled="true"/>
@@ -169,26 +169,26 @@
                     :width="colItem.width?colItem.width:vm.$config.columnWidth"
                     :width="colItem.width?colItem.width:vm.$config.columnWidth"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :edit-render="{autofocus: '.vxe-input--inner'}">
                     :edit-render="{autofocus: '.vxe-input--inner'}">
-          <template #header="{ row }">
-            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>
-            <Poptip trigger="click" transfer @on-popper-hide="popperHide">
-              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"
-                    v-if="colItem.copyVisible"/>
-              <div slot="content">
-                <div style="display: flex;align-items: center;justify-content: center;">
-                  <Input size="small" v-model="inputDownValue"
-                         :maxlength="colItem.maxlength?colItem.maxlength:vm.$config.maxlength"
-                         @keydown.13.native.stop="inputDown(colItem)" :name="colItem.field"></Input>
-                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>
-                </div>
-              </div>
-            </Poptip>
-            <!--冻结/解冻列-->
-            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "
-                  v-if="freezeData && colItem.freezeFlag"
-                  type="ios-lock"
-                  @click="handleFreeze(colItem.field)"/>
-          </template>
+          <!--          <template #header="{ row }">-->
+          <!--            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>-->
+          <!--            <Poptip trigger="click" transfer @on-popper-hide="popperHide">-->
+          <!--              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"-->
+          <!--                    v-if="colItem.copyVisible"/>-->
+          <!--              <div slot="content">-->
+          <!--                <div style="display: flex;align-items: center;justify-content: center;">-->
+          <!--                  <Input size="small" v-model="inputDownValue"-->
+          <!--                         :maxlength="colItem.maxlength?colItem.maxlength:vm.$config.maxlength"-->
+          <!--                         @keydown.13.native.stop="inputDown(colItem)" :name="colItem.field"></Input>-->
+          <!--                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>-->
+          <!--                </div>-->
+          <!--              </div>-->
+          <!--            </Poptip>-->
+          <!--            &lt;!&ndash;冻结/解冻列&ndash;&gt;-->
+          <!--            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "-->
+          <!--                  v-if="freezeData && colItem.freezeFlag"-->
+          <!--                  type="ios-lock"-->
+          <!--                  @click="handleFreeze(colItem.field)"/>-->
+          <!--          </template>-->
           <template #edit="{ row,rowIndex }">
           <template #edit="{ row,rowIndex }">
             <vxe-input v-model="row[colItem.field]" type="text" v-if="setCellCanInput( row ,colItem)"
             <vxe-input v-model="row[colItem.field]" type="text" v-if="setCellCanInput( row ,colItem)"
                        :maxlength="colItem.maxlength?colItem.maxlength:vm.$config.maxlength"
                        :maxlength="colItem.maxlength?colItem.maxlength:vm.$config.maxlength"
@@ -212,29 +212,29 @@
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :edit-render="{autofocus: '.vxe-input--inner', autoselect: true}" :formatter="formatColumn"
                     :edit-render="{autofocus: '.vxe-input--inner', autoselect: true}" :formatter="formatColumn"
                     :params="colItem">
                     :params="colItem">
-          <template #header="{ row }">
-            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>
-            <Poptip trigger="click" transfer @on-popper-show="popperShow(colIndex,'inputNumber')"
-                    @on-popper-hide="popperHide">
-              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"
-                    v-if="colItem.copyVisible"/>
-              <div slot="content">
-                <!--点回车相当于点按钮填充-->
-                <div style="display: flex;align-items: center;justify-content: center;">
-                  <InputNumberPop size="small" :digits="colItem.digits" v-model="inputDownValue"
-                                  :ref="'pop_' + colIndex"
-                                  @keydown.13.native.stop="inputDown(colItem)" :pop-visible="false"
-                                  :name="colItem.field"></InputNumberPop>
-                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>
-                </div>
-              </div>
-            </Poptip>
-            <!--冻结/解冻列-->
-            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "
-                  v-if="freezeData && colItem.freezeFlag"
-                  type="ios-lock"
-                  @click="handleFreeze(colItem.field)"/>
-          </template>
+          <!--          <template #header="{ row }">-->
+          <!--            <span>{{ colItem.title ? colItem.title : $t(colItem.field) }}</span>-->
+          <!--            <Poptip trigger="click" transfer @on-popper-show="popperShow(colIndex,'inputNumber')"-->
+          <!--                    @on-popper-hide="popperHide">-->
+          <!--              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"-->
+          <!--                    v-if="colItem.copyVisible"/>-->
+          <!--              <div slot="content">-->
+          <!--                &lt;!&ndash;点回车相当于点按钮填充&ndash;&gt;-->
+          <!--                <div style="display: flex;align-items: center;justify-content: center;">-->
+          <!--                  <InputNumberPop size="small" :digits="colItem.digits" v-model="inputDownValue"-->
+          <!--                                  :ref="'pop_' + colIndex"-->
+          <!--                                  @keydown.13.native.stop="inputDown(colItem)" :pop-visible="false"-->
+          <!--                                  :name="colItem.field"></InputNumberPop>-->
+          <!--                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>-->
+          <!--                </div>-->
+          <!--              </div>-->
+          <!--            </Poptip>-->
+          <!--            &lt;!&ndash;冻结/解冻列&ndash;&gt;-->
+          <!--            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "-->
+          <!--                  v-if="freezeData && colItem.freezeFlag"-->
+          <!--                  type="ios-lock"-->
+          <!--                  @click="handleFreeze(colItem.field)"/>-->
+          <!--          </template>-->
           <template #edit="{ row ,rowIndex}">
           <template #edit="{ row ,rowIndex}">
             <vxe-input v-model="row[colItem.field]" type="number"
             <vxe-input v-model="row[colItem.field]" type="number"
                        :ref="colItem.field+rowIndex"
                        :ref="colItem.field+rowIndex"
@@ -259,34 +259,34 @@
                     :width="colItem.width?colItem.width:vm.$config.columnWidth"
                     :width="colItem.width?colItem.width:vm.$config.columnWidth"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :edit-render="{autofocus: '.vxe-input--inner'}">
                     :edit-render="{autofocus: '.vxe-input--inner'}">
-          <template #header="{ row }">
-            <span>{{ $t(colItem.title ? colItem.title : colItem.field) }}</span>
-            <Poptip trigger="click" transfer @on-popper-hide="popperHide">
-              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"
-                    v-if="colItem.copyVisible"/>
-              <div slot="content">
-                <div style="display: flex;align-items: center;justify-content: center;">
-                  <!--                {{ colItem.options() }}-->
-                  <Select size="small" v-model="inputDownValue" style="width:200px" :multiple="colItem.multiple"
-                          clearable>
-                    <Option v-for="item in (typeof colItem.options === 'function'?colItem.options():colItem.options)"
-                            :key="item[colItem.valueKey]"
-                            :value="item[colItem.valueKey]"
-                            :label="item[colItem.labelKey]">
-                      {{ item[colItem.labelKey] }}
-                    </Option>
-                  </Select>
+          <!--          <template #header="{ row }">-->
+          <!--            <span>{{ $t(colItem.title ? colItem.title : colItem.field) }}</span>-->
+          <!--            <Poptip trigger="click" transfer @on-popper-hide="popperHide">-->
+          <!--              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"-->
+          <!--                    v-if="colItem.copyVisible"/>-->
+          <!--              <div slot="content">-->
+          <!--                <div style="display: flex;align-items: center;justify-content: center;">-->
+          <!--                  &lt;!&ndash;                {{ colItem.options() }}&ndash;&gt;-->
+          <!--                  <Select size="small" v-model="inputDownValue" style="width:200px" :multiple="colItem.multiple"-->
+          <!--                          clearable>-->
+          <!--                    <Option v-for="item in (typeof colItem.options === 'function'?colItem.options():colItem.options)"-->
+          <!--                            :key="item[colItem.valueKey]"-->
+          <!--                            :value="item[colItem.valueKey]"-->
+          <!--                            :label="item[colItem.labelKey]">-->
+          <!--                      {{ item[colItem.labelKey] }}-->
+          <!--                    </Option>-->
+          <!--                  </Select>-->
 
 
-                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>
-                </div>
-              </div>
-            </Poptip>
-            <!--冻结/解冻列-->
-            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "
-                  v-if="freezeData && colItem.freezeFlag"
-                  type="ios-lock"
-                  @click="handleFreeze(colItem.field)"/>
-          </template>
+          <!--                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>-->
+          <!--                </div>-->
+          <!--              </div>-->
+          <!--            </Poptip>-->
+          <!--            &lt;!&ndash;冻结/解冻列&ndash;&gt;-->
+          <!--            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "-->
+          <!--                  v-if="freezeData && colItem.freezeFlag"-->
+          <!--                  type="ios-lock"-->
+          <!--                  @click="handleFreeze(colItem.field)"/>-->
+          <!--          </template>-->
           <template #default="{ row }">
           <template #default="{ row }">
             <div class="edit-div-class" @dblclick.stop="copyValue(row,colItem)">{{
             <div class="edit-div-class" @dblclick.stop="copyValue(row,colItem)">{{
                 row[colItem.field + '_Name']
                 row[colItem.field + '_Name']
@@ -330,7 +330,6 @@
               {{ row[colItem.field + '_Name'] }}
               {{ row[colItem.field + '_Name'] }}
             </div>
             </div>
           </template>
           </template>
-
         </vxe-column>
         </vxe-column>
 
 
         <!--  date   -->
         <!--  date   -->
@@ -340,24 +339,24 @@
                     :width="colItem.width?colItem.width:vm.$config.columnWidth"
                     :width="colItem.width?colItem.width:vm.$config.columnWidth"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :title="$t(colItem.field)" :edit-render="{autofocus: '.vxe-input--inner'}">
                     :title="$t(colItem.field)" :edit-render="{autofocus: '.vxe-input--inner'}">
-          <template #header="{ row }">
-            <span>{{ $t(colItem.title ? colItem.title : colItem.field) }}</span>
-            <Poptip trigger="click" transfer @on-popper-hide="popperHide">
-              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"
-                    v-if="colItem.copyVisible"/>
-              <div slot="content">
-                <div style="display: flex;align-items: center;justify-content: center;">
-                  <DatePicker transfer v-model="inputDownValue" type="date"></DatePicker>
-                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>
-                </div>
-              </div>
-            </Poptip>
-            <!--冻结/解冻列-->
-            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "
-                  v-if="freezeData && colItem.freezeFlag"
-                  type="ios-lock"
-                  @click="handleFreeze(colItem.field)"/>
-          </template>
+          <!--          <template #header="{ row }">-->
+          <!--            <span>{{ $t(colItem.title ? colItem.title : colItem.field) }}</span>-->
+          <!--            <Poptip trigger="click" transfer @on-popper-hide="popperHide">-->
+          <!--              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"-->
+          <!--                    v-if="colItem.copyVisible"/>-->
+          <!--              <div slot="content">-->
+          <!--                <div style="display: flex;align-items: center;justify-content: center;">-->
+          <!--                  <DatePicker transfer v-model="inputDownValue" type="date"></DatePicker>-->
+          <!--                  <Button type="primary" size="small" @click="inputDown(colItem)">{{ $t('filling') }}</Button>-->
+          <!--                </div>-->
+          <!--              </div>-->
+          <!--            </Poptip>-->
+          <!--            &lt;!&ndash;冻结/解冻列&ndash;&gt;-->
+          <!--            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "-->
+          <!--                  v-if="freezeData && colItem.freezeFlag"-->
+          <!--                  type="ios-lock"-->
+          <!--                  @click="handleFreeze(colItem.field)"/>-->
+          <!--          </template>-->
           <template #default="{ row }">
           <template #default="{ row }">
             <span @dblclick.stop="copyValue(row,colItem)">{{ dateFormat(row[colItem.field]) }}</span>
             <span @dblclick.stop="copyValue(row,colItem)">{{ dateFormat(row[colItem.field]) }}</span>
           </template>
           </template>
@@ -375,26 +374,26 @@
                     :width="colItem.width?colItem.width:vm.$config.columnWidth"
                     :width="colItem.width?colItem.width:vm.$config.columnWidth"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :min-width="colItem.minWidth?colItem.minWidth:vm.$config.columnWidthMin"
                     :field="$t(colItem.field)" :edit-render="{autofocus: '.vxe-input--inner'}">
                     :field="$t(colItem.field)" :edit-render="{autofocus: '.vxe-input--inner'}">
-          <template #header="{ row }">
-            <span>{{ $t(colItem.title ? colItem.title : colItem.field) }}</span>
-            <Poptip trigger="click" transfer @on-popper-hide="popperHide">
-              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"
-                    v-if="colItem.copyVisible"/>
-              <div slot="content">
-                <div style="display: flex;align-items: center;justify-content: center;">
-                  <i-switch v-model="inputDownBooleanValue"/>
-                  <Button type="primary" style="margin-left:10px" size="small" @click="inputDown(colItem)">
-                    {{ $t('filling') }}
-                  </Button>
-                </div>
-              </div>
-            </Poptip>
-            <!--冻结/解冻列-->
-            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "
-                  v-if="freezeData && colItem.freezeFlag"
-                  type="ios-lock"
-                  @click="handleFreeze(colItem.field)"/>
-          </template>
+          <!--          <template #header="{ row }">-->
+          <!--            <span>{{ $t(colItem.title ? colItem.title : colItem.field) }}</span>-->
+          <!--            <Poptip trigger="click" transfer @on-popper-hide="popperHide">-->
+          <!--              <Icon type="iconfont iconfont icon-copy" style="cursor: pointer;" ref="down-input-icon"-->
+          <!--                    v-if="colItem.copyVisible"/>-->
+          <!--              <div slot="content">-->
+          <!--                <div style="display: flex;align-items: center;justify-content: center;">-->
+          <!--                  <i-switch v-model="inputDownBooleanValue"/>-->
+          <!--                  <Button type="primary" style="margin-left:10px" size="small" @click="inputDown(colItem)">-->
+          <!--                    {{ $t('filling') }}-->
+          <!--                  </Button>-->
+          <!--                </div>-->
+          <!--              </div>-->
+          <!--            </Poptip>-->
+          <!--            &lt;!&ndash;冻结/解冻列&ndash;&gt;-->
+          <!--            <Icon ref="freeze" :class="colItem.freezeFlag?'freezed-class':'freeze-class' "-->
+          <!--                  v-if="freezeData && colItem.freezeFlag"-->
+          <!--                  type="ios-lock"-->
+          <!--                  @click="handleFreeze(colItem.field)"/>-->
+          <!--          </template>-->
           <template #default="{ row,rowIndex }">
           <template #default="{ row,rowIndex }">
             <!--          <span>{{ row[colItem.field] ? '是' : '否' }}</span>-->
             <!--          <span>{{ row[colItem.field] ? '是' : '否' }}</span>-->
             <vxe-switch :ref="colItem.field+'_default_'+rowIndex" v-model="row[colItem.field]"
             <vxe-switch :ref="colItem.field+'_default_'+rowIndex" v-model="row[colItem.field]"
@@ -450,10 +449,11 @@
 import XEUtils from "xe-utils";
 import XEUtils from "xe-utils";
 import SeqButton from '@/components/sub/seq-button/index'
 import SeqButton from '@/components/sub/seq-button/index'
 import Sortable from "sortablejs";
 import Sortable from "sortablejs";
+import TableSelect from '@/components/business/table-select'
 
 
 export default {
 export default {
   name: 'EditTable',
   name: 'EditTable',
-  components: {SeqButton},
+  components: {SeqButton, TableSelect},
   props: {
   props: {
     value: {
     value: {
       type: Array,
       type: Array,
@@ -614,6 +614,7 @@ export default {
       vm: vm,
       vm: vm,
       rowIndex: -1,
       rowIndex: -1,
       colIndex: -1,
       colIndex: -1,
+      existsFlag: true,  // 存在标识,用于销毁内部组件
       visibleRows: [],// 可见的行,用于控制
       visibleRows: [],// 可见的行,用于控制
       header: {
       header: {
         options: [
         options: [
@@ -2657,12 +2658,7 @@ export default {
     }, 300)
     }, 300)
     self.rowDrop();  //行移动
     self.rowDrop();  //行移动
     //监听窗口变化
     //监听窗口变化
-    window.addEventListener('resize', function (e) {
-      setTimeout(() => {
-        self.settingLeft = self.$refs[self.name] ? (self.$refs[self.name].$el.offsetWidth + self.$refs[self.name].$el.offsetLeft - 26) + 'px' : 0// 设置图标居左的位置
-        self.settingTop = self.$refs[self.name] ? (self.$refs[self.name].$el.offsetTop + 1) + 'px' : 0;           // 设置图标居上的位置
-      }, 300)
-    })
+    window.addEventListener('resize', self.changeSettingLocation)
     self.handleSelectData()
     self.handleSelectData()
     self.changeSettingLocation();
     self.changeSettingLocation();
   },
   },
@@ -2670,6 +2666,9 @@ export default {
     if (this.sortable) {
     if (this.sortable) {
       this.sortable.destroy();
       this.sortable.destroy();
     }
     }
+    this.sortable = null;
+    window.removeEventListener('resize', this.changeSettingLocation)
+    this.existsFlag = null
   },
   },
   created() {
   created() {
     // 初始化列
     // 初始化列

+ 2 - 1
src/components/base/edit-tree-table/edit-tree-table.vue

@@ -507,10 +507,11 @@
 
 
 import XEUtils from "xe-utils";
 import XEUtils from "xe-utils";
 import SeqButton from '@/components/sub/seq-button/index'
 import SeqButton from '@/components/sub/seq-button/index'
+import TableSelect from '@/components/business/table-select'
 
 
 export default {
 export default {
   name: 'EditTreeTable',
   name: 'EditTreeTable',
-  components: {SeqButton},
+  components: {SeqButton,TableSelect},
   props: {
   props: {
     data: {
     data: {
       type: Array,
       type: Array,

+ 5 - 1
src/components/base/input-pop/input-pop.vue

@@ -1,5 +1,6 @@
 <!-- @desc:文本输入框组件  @auth:周兴  @time:2022/5/9 14:32 -->
 <!-- @desc:文本输入框组件  @auth:周兴  @time:2022/5/9 14:32 -->
 <template>
 <template>
+  <div v-if="existsFlag">
   <Poptip popper-class="input-popper-class" ref="pop" transfer trigger="focus" placement="top-start" v-model="visible"
   <Poptip popper-class="input-popper-class" ref="pop" transfer trigger="focus" placement="top-start" v-model="visible"
           :disabled="!visible">
           :disabled="!visible">
     <div class="close-div-class" :class="addTabInputFlag?'add-table-input':''">
     <div class="close-div-class" :class="addTabInputFlag?'add-table-input':''">
@@ -31,6 +32,7 @@
       <div class="pop-item-content">{{ this.value2 }}</div>
       <div class="pop-item-content">{{ this.value2 }}</div>
     </div>
     </div>
   </Poptip>
   </Poptip>
+  </div>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -155,6 +157,7 @@ export default {
     const vm = window.vm;
     const vm = window.vm;
     return {
     return {
       vm: vm,
       vm: vm,
+      existsFlag:true,
       value2: '',
       value2: '',
       placeholderData: null,
       placeholderData: null,
       label: '',
       label: '',
@@ -391,7 +394,8 @@ export default {
       }
       }
     },
     },
   },
   },
-  activated() {
+  beforeDestroy() {
+    this.existsFlag = null;
   },
   },
   mounted() {
   mounted() {
     if (this.dkFormItem) {
     if (this.dkFormItem) {

+ 5 - 1
src/components/base/select-pop/select-pop.vue

@@ -1,6 +1,6 @@
 <!-- @desc:下拉组件  @auth:周兴  @time:2022/11/15 12:58 -->
 <!-- @desc:下拉组件  @auth:周兴  @time:2022/11/15 12:58 -->
 <template>
 <template>
-  <div class="close-div-class">
+  <div class="close-div-class" v-if="existsFlag">
     <div :class="divClass && showClearFlag?'':'select-div-no-clear'" class="select-div" @keydown="handleKeyDown" @mousedown="handleMouseDown">
     <div :class="divClass && showClearFlag?'':'select-div-no-clear'" class="select-div" @keydown="handleKeyDown" @mousedown="handleMouseDown">
       <Input ref="input" class="select-input" @on-focus="handleInputFocus" @on-blur="handleInputBlur"></Input>
       <Input ref="input" class="select-input" @on-focus="handleInputFocus" @on-blur="handleInputBlur"></Input>
       <xmSelect ref="select" :multiple="multiple" v-model="model" @on-change="onChange" :label-key="labelKey"
       <xmSelect ref="select" :multiple="multiple" v-model="model" @on-change="onChange" :label-key="labelKey"
@@ -153,6 +153,7 @@ export default {
     const vm = window.vm
     const vm = window.vm
     return {
     return {
       vm: vm,
       vm: vm,
+      existsFlag:true,
       model: null,
       model: null,
       label: '',
       label: '',
       optionsData:null,
       optionsData:null,
@@ -429,6 +430,9 @@ export default {
       })
       })
     },
     },
   },
   },
+  beforeDestroy() {
+    this.existsFlag = null ;
+  },
   mounted() {
   mounted() {
     if (this.dkFormItem) {
     if (this.dkFormItem) {
       this.dkFormItem.setItems(this);   // 把当前组件赋值给formItem
       this.dkFormItem.setItems(this);   // 把当前组件赋值给formItem

+ 2 - 2
src/components/business/process/edge-modal/edge-modal.vue

@@ -131,7 +131,7 @@ export default {
       }else{
       }else{
         cell.setAttrs({ line: { stroke: '#A2B1C3', }, },);
         cell.setAttrs({ line: { stroke: '#A2B1C3', }, },);
       }
       }
-      this.setProcessEdgeModalDisplay(false)
+      this.setProcessEdgeModalDisplay(null)
       this.setCurrentEdgeId(undefined)
       this.setCurrentEdgeId(undefined)
     },
     },
     /**
     /**
@@ -140,7 +140,7 @@ export default {
      * @date   : 2023/1/5 10:38
      * @date   : 2023/1/5 10:38
      */
      */
     modalCancel(){
     modalCancel(){
-      this.setProcessEdgeModalDisplay(false)
+      this.setProcessEdgeModalDisplay(null)
       this.setCurrentEdgeId(undefined)
       this.setCurrentEdgeId(undefined)
     },
     },
   }
   }

+ 12 - 9
src/components/business/process/node-modal/node-modal.vue

@@ -1,6 +1,6 @@
 <!-- @desc:工艺流程节点弹窗  @auth:张潇木  @time:2023/1/5 9:35 -->
 <!-- @desc:工艺流程节点弹窗  @auth:张潇木  @time:2023/1/5 9:35 -->
 <template>
 <template>
-  <div class="main-div">
+  <div class="main-div" ref="node-modal-div" v-if="existsFlag">
     <DkModal
     <DkModal
       title="工艺节点"
       title="工艺节点"
       v-model="modalDisplay"
       v-model="modalDisplay"
@@ -10,7 +10,6 @@
       draggable
       draggable
       sticky
       sticky
       fullscreen
       fullscreen
-      :autoClearFlag="false"
       @modalOk="modalOk"
       @modalOk="modalOk"
       @modalCancel="modalCancel">
       @modalCancel="modalCancel">
       <DkForm ref="formInline" v-model="nodeData" :label-max-words="6">
       <DkForm ref="formInline" v-model="nodeData" :label-max-words="6">
@@ -280,6 +279,7 @@ export default {
   data() {
   data() {
     let self = this
     let self = this
     return {
     return {
+      existsFlag:true,
       routerTableFlag: true,
       routerTableFlag: true,
       modalDisplay: false,//如不定义此变量,则进入modal无动画
       modalDisplay: false,//如不定义此变量,则进入modal无动画
       split: 0.5,
       split: 0.5,
@@ -623,7 +623,7 @@ export default {
       //设置业务数据
       //设置业务数据
       this.setParams()
       this.setParams()
       //关闭modal
       //关闭modal
-      this.setProcessNodeModalDisplay(false)
+      this.setProcessNodeModalDisplay(null)
       //清空当前选中节点id
       //清空当前选中节点id
       this.setCurrentNodeId(undefined)
       this.setCurrentNodeId(undefined)
     },
     },
@@ -637,7 +637,7 @@ export default {
       let cell = this.graph.getCellById(this.process.currentNodeId)
       let cell = this.graph.getCellById(this.process.currentNodeId)
       cell.setData(this.nodeDataSocial, { overwrite: true })
       cell.setData(this.nodeDataSocial, { overwrite: true })
       //设置显示隐藏状态以及清空当前节点id
       //设置显示隐藏状态以及清空当前节点id
-      this.setProcessNodeModalDisplay(false)
+      this.setProcessNodeModalDisplay(null)
       this.setCurrentNodeId(undefined)
       this.setCurrentNodeId(undefined)
     },
     },
     /**
     /**
@@ -930,13 +930,13 @@ export default {
     if (this.graph == null) this.graph = Process.graph
     if (this.graph == null) this.graph = Process.graph
     //获取业务数据
     //获取业务数据
     this.nodeData = this.graph.getCellById(this.process.currentNodeId)?.data
     this.nodeData = this.graph.getCellById(this.process.currentNodeId)?.data
-    //记录初始值
+    // //记录初始值
     this.nodeDataSocial =JSON.parse(JSON.stringify(this.nodeData));
     this.nodeDataSocial =JSON.parse(JSON.stringify(this.nodeData));
-    //刷新节点属性控制
+    // //刷新节点属性控制
     this.nodeControl = this.dataKindList.find(it => it.kindCode === this.nodeData.nodeKind)?.kindTags
     this.nodeControl = this.dataKindList.find(it => it.kindCode === this.nodeData.nodeKind)?.kindTags
-    //处理无线路由类别
+    // //处理无线路由类别
     this.handleRouterType()
     this.handleRouterType()
-    //过滤调节点组并将json解构成新结构数组
+    // //过滤调节点组并将json解构成新结构数组
     this.allNodes = this.graph.getNodes().filter(it => it.shape == 'custom-image').map((it) => {
     this.allNodes = this.graph.getNodes().filter(it => it.shape == 'custom-image').map((it) => {
       return { id: it.id, name: it.data.nodeName, flowKind:it.data.flowKind, nodeKind:it.data.nodeKind, flgAloneJudge: it.data.flgAloneJudge}
       return { id: it.id, name: it.data.nodeName, flowKind:it.data.flowKind, nodeKind:it.data.nodeKind, flgAloneJudge: it.data.flgAloneJudge}
     })
     })
@@ -956,7 +956,10 @@ export default {
       }
       }
     })
     })
   },
   },
-
+  beforeDestroy() {
+    this.existsFlag = null;
+    this.$refs.formInline.resetFields();
+  }
 
 
 }
 }
 </script>
 </script>

+ 165 - 174
src/components/business/table-select/table-select.vue

@@ -1,194 +1,176 @@
 <!-- @desc:选品组件  @auth:周兴  @time:2022/11/15 14:10 -->
 <!-- @desc:选品组件  @auth:周兴  @time:2022/11/15 14:10 -->
 <template>
 <template>
-  <Poptip ref="poptip" trigger="click" transfer :width="popWidth" @click.stop="()=>{}" @on-popper-show="onPopShow"
-          placement="bottom-start">
-    <Input type="text" ref="input" style="width:100%;" :readonly="disabled" v-model="inputModal"
-           @on-change="onChange($event)"
-           @on-keydown="onkeydown($event)"
-           @on-blur="handleInputBlur"
-           autofocus
-    />
-    <!--删除按钮-->
-    <Icon v-if="clearFlag&& inputModal" class="close-class" type="ios-close-circle" @click.stop="clearAll"/>
+  <div v-if="existsFlag">
+    <Poptip ref="poptip" trigger="click" transfer :width="popWidth" @click.stop="()=>{}" @on-popper-show="onPopShow"
+            placement="bottom-start">
+      <Input type="text" ref="input" style="width:100%;" :readonly="disabled" v-model="inputModal"
+             @on-change="onChange($event)"
+             @on-keydown="onkeydown($event)"
+             @on-blur="handleInputBlur"
+             autofocus
+      />
+      <!--删除按钮-->
+      <Icon v-if="clearFlag&& inputModal" class="close-class" type="ios-close-circle" @click.stop="clearAll"/>
 
 
-    <!--查询按钮-->
-    <icon v-if="searchDetailFlag" type="iconfont iconfont icon-search" class="icon-class" @click.stop="handleSearchClick"/>
-    <!--查询商品-->
-    <DkModal
-      ref="modal_search"
-      id="search-data-class"
-      class="search-data-class"
-      width="1050px"
-      v-model="showModal"
-      @modalOk="modalOk"
-      @on-visible-change="onVisibleChange"
-      title="请选择数据">
-      <BaseIndexButtonGroup id="BaseIndexButtonGroup">
-        <template #left>
-          <BaseIndexButton ref="search" name="search" @click="initData()"></BaseIndexButton>
-          <BaseIndexButton :finalFlag="true" ref="clear" name="clear"
-                           @click="$refs['searchCond'].clearCondition()"></BaseIndexButton>
-        </template>
-      </BaseIndexButtonGroup>
-      <SearchCond id="search-cond-div" width="1000px" v-if="searchContent && searchContent.length > 0" ref="searchCond"
-                  v-model="searchCond" :type="this.$config.pageCode.goods"
-                  :setFlag="false" :searchContent="searchContent"></SearchCond>
-      <div style="width: 100%;height: 10px"></div>
-      <DkTabs ref="tabs" :options="multiple?tabsOptions:tabsOptionsOnly" @on-click="tabsClick"
-              @on-clear="clearSelected"></DkTabs>
-      <loading :loading="loading"></loading>
-      <!--      商品种类列表-->
-      <div :style="'height: ' + tableHeight + 'px'">
-        <Split v-model="split" :min="minSplit" v-if="methodsNameLeft" v-show="tabIndex === 0">
-          <!-- 列表部分左侧   左侧都默认是id和name的格式-->
-          <div slot="left" class="split-pane">
-            <DkTable
-              ref="leftTable"
-              name="table"
-              :data="leftList"
-              :height="tableHeight"
-              :page-flag="false"
-              :select-flag="false"
-              :choose-flag="false"
-              :show-setting-flag="false"
-              @current-change="handleCurrentChange">
-              <DkTableColumn :title="$t(leftColumnName)" :field="leftColumnName"
-                             width="auto" :filter="false" :sortable="false" :freeze="false"></DkTableColumn>
-            </DkTable>
-          </div>
-          <!--列表部分右侧-->
-          <div slot="right" class="split-pane">
-            <DkTable :primaryKey="selectKey" :primary-search-key="selectSearchKey" ref="table-select"
+      <!--查询按钮-->
+      <icon v-if="searchDetailFlag" type="iconfont iconfont icon-search" class="icon-class"
+            @click.stop="handleSearchClick"/>
+
+      <!--查询商品-->
+      <DkModal
+        ref="modal_search"
+        id="search-data-class"
+        class="search-data-class"
+        width="1050px"
+        v-model="showModal"
+        @modalOk="modalOk"
+        @on-visible-change="onVisibleChange"
+        title="请选择数据">
+        <BaseIndexButtonGroup id="BaseIndexButtonGroup">
+          <template #left>
+            <BaseIndexButton ref="search" name="search" @click="initData()"></BaseIndexButton>
+            <BaseIndexButton :finalFlag="true" ref="clear" name="clear"
+                             @click="$refs['searchCond'].clearCondition()"></BaseIndexButton>
+          </template>
+        </BaseIndexButtonGroup>
+        <SearchCond id="search-cond-div" width="1000px" v-if="searchContent && searchContent.length > 0"
+                    ref="searchCond"
+                    v-model="searchCond" :type="this.$config.pageCode.goods"
+                    :setFlag="false" :searchContent="searchContent"></SearchCond>
+        <div style="width: 100%;height: 10px"></div>
+        <DkTabs ref="tabs" :options="multiple?tabsOptions:tabsOptionsOnly" @on-click="tabsClick"
+                @on-clear="clearSelected"></DkTabs>
+        <loading :loading="loading"></loading>
+        <!--      商品种类列表-->
+        <div :style="'height: ' + tableHeight + 'px'">
+          <Split v-model="split" :min="minSplit" v-if="methodsNameLeft" v-show="tabIndex === 0">
+            <!-- 列表部分左侧   左侧都默认是id和name的格式-->
+            <div slot="left" class="split-pane">
+              <DkTable
+                ref="leftTable"
+                name="table"
+                :data="leftList"
+                :height="tableHeight"
+                :page-flag="false"
+                :select-flag="false"
+                :choose-flag="false"
+                :show-setting-flag="false"
+                @current-change="handleCurrentChange">
+                <DkTableColumn :title="$t(leftColumnName)" :field="leftColumnName"
+                               width="auto" :filter="false" :sortable="false" :freeze="false"></DkTableColumn>
+              </DkTable>
+            </div>
+            <!--列表部分右侧-->
+            <div slot="right" class="split-pane">
+              <DkTable :primaryKey="selectKey" :primary-search-key="selectSearchKey" ref="table-select"
+                       :id="'table-'+$options.name" name="table"
+                       :data="rightList"
+                       :height="tableHeight"
+                       :clearCheckFlag="false"
+                       :refreshSelect="false"
+                       :tree-flag="treeFlag"
+                       :otherSearchParam="otherSearchParam"
+                       :lazy="treeFlag?true:false"
+                       :combinedField="combinedField"
+                       :data-type="this.$config.tableSelectType.goods"
+                       :multiple="multiple"
+                       :choose-flag="multiple"
+                       :freeze="false"
+                       :show-setting-flag="false"
+                       @load-children="loadChildren"
+                       @pageChange="pageSizeChange" @current-change="onCurrentChange"
+                       @select-change="handleSelectChange"
+                       :link-click-checked="true">
+                <!--              <DkTableColumn type="seq" align="center" width="40" :exchangeField="exchangeField"-->
+                <!--                             @on-exchange="handleExchange"></DkTableColumn>-->
+                <DkTableColumn v-for="(item,index) in columnsDetail" :key="index" :field="item.field"
+                               :title="item.title" :tree-node="item.treeNode"
+                               :data-type="item.columnType"
+                               :width="item.width"
+                               :resize-flag="index === columnsDetail.length - 1"></DkTableColumn>
+              </DkTable>
+            </div>
+          </Split>
+          <!--不显示列表左侧的-->
+          <div v-if="!methodsNameLeft" v-show="tabIndex === 0">
+            <DkTable :primaryKey="selectKey" :primary-search-key="selectSearchKey" ref="table-select-only"
                      :id="'table-'+$options.name" name="table"
                      :id="'table-'+$options.name" name="table"
                      :data="rightList"
                      :data="rightList"
                      :height="tableHeight"
                      :height="tableHeight"
                      :clearCheckFlag="false"
                      :clearCheckFlag="false"
                      :refreshSelect="false"
                      :refreshSelect="false"
                      :tree-flag="treeFlag"
                      :tree-flag="treeFlag"
-                     :otherSearchParam="otherSearchParam"
                      :lazy="treeFlag?true:false"
                      :lazy="treeFlag?true:false"
                      :combinedField="combinedField"
                      :combinedField="combinedField"
-                     :data-type="this.$config.tableSelectType.goods"
                      :multiple="multiple"
                      :multiple="multiple"
                      :choose-flag="multiple"
                      :choose-flag="multiple"
                      :freeze="false"
                      :freeze="false"
                      :show-setting-flag="false"
                      :show-setting-flag="false"
-                     @load-children="loadChildren"
                      @pageChange="pageSizeChange" @current-change="onCurrentChange"
                      @pageChange="pageSizeChange" @current-change="onCurrentChange"
                      @select-change="handleSelectChange"
                      @select-change="handleSelectChange"
                      :link-click-checked="true">
                      :link-click-checked="true">
-              <!--              <DkTableColumn type="seq" align="center" width="40" :exchangeField="exchangeField"-->
-              <!--                             @on-exchange="handleExchange"></DkTableColumn>-->
               <DkTableColumn v-for="(item,index) in columnsDetail" :key="index" :field="item.field"
               <DkTableColumn v-for="(item,index) in columnsDetail" :key="index" :field="item.field"
-                             :title="item.title" :tree-node="item.treeNode"
                              :data-type="item.columnType"
                              :data-type="item.columnType"
                              :width="item.width"
                              :width="item.width"
-                             :resize-flag="index === columnsDetail.length - 1"></DkTableColumn>
+                             :title="item.title"></DkTableColumn>
             </DkTable>
             </DkTable>
           </div>
           </div>
-        </Split>
-        <!--不显示列表左侧的-->
-        <div v-if="!methodsNameLeft" v-show="tabIndex === 0">
-          <DkTable :primaryKey="selectKey" :primary-search-key="selectSearchKey" ref="table-select-only"
-                   :id="'table-'+$options.name" name="table"
-                   :data="rightList"
-                   :height="tableHeight"
-                   :clearCheckFlag="false"
-                   :refreshSelect="false"
-                   :tree-flag="treeFlag"
-                   :lazy="treeFlag?true:false"
-                   :combinedField="combinedField"
-                   :multiple="multiple"
-                   :choose-flag="multiple"
-                   :freeze="false"
-                   :show-setting-flag="false"
-                   @pageChange="pageSizeChange" @current-change="onCurrentChange"
-                   @select-change="handleSelectChange"
-                   :link-click-checked="true">
-            <DkTableColumn v-for="(item,index) in columnsDetail" :key="index" :field="item.field"
-                           :data-type="item.columnType"
-                           :width="item.width"
-                           :title="item.title"></DkTableColumn>
-          </DkTable>
-        </div>
 
 
-        <!--已选列表-->
-        <div v-show="tabIndex === 1">
-          <DkTable :primaryKey="selectKey" ref="table-selected" :id="'table-'+$options.name" name="table"
-                   :data="selectedTable"
-                   :height="tableHeight"
-                   :selectFlag="false"
-                   :operateFlag="true"
-                   :tree-flag="treeFlag"
-                   :lazy="treeFlag?true:false"
-                   :children="children"
-                   :page-flag="false"
-                   :link-click-checked="true"
-                   :show-setting-flag="false"
-                   @pageChange="pageSizeChange"
-                   @current-change="onCurrentChange"
-                   @delRow="delItem"
-          >
-            <DkTableColumn v-for="(item,index) in columnsDetail" :key="index" :field="item.field"
-                           :title="item.title" :tree-node="item.treeNode"
-                           :resize-flag="index === columnsDetail.length - 1"></DkTableColumn>
+          <!--已选列表-->
+          <div v-show="tabIndex === 1">
+            <DkTable :primaryKey="selectKey" ref="table-selected" :id="'table-'+$options.name" name="table"
+                     :data="selectedTable"
+                     :height="tableHeight"
+                     :selectFlag="false"
+                     :operateFlag="true"
+                     :tree-flag="treeFlag"
+                     :lazy="treeFlag?true:false"
+                     :children="children"
+                     :page-flag="false"
+                     :link-click-checked="true"
+                     :show-setting-flag="false"
+                     @pageChange="pageSizeChange"
+                     @current-change="onCurrentChange"
+                     @delRow="delItem"
+            >
+              <DkTableColumn v-for="(item,index) in columnsDetail" :key="index" :field="item.field"
+                             :title="item.title" :tree-node="item.treeNode"
+                             :resize-flag="index === columnsDetail.length - 1"></DkTableColumn>
 
 
-          </DkTable>
+            </DkTable>
+          </div>
         </div>
         </div>
-      </div>
-    </DkModal>
+      </DkModal>
 
 
-    <!--切换子品-->
-    <DkModal
-      width="900"
-      class="child-modal-class"
-      @modalOk="exchangeOk"
-      v-model="showChild"
-      title="请选择需要替换的商品">
-      <DkTable :primaryKey="selectKey" ref="table-exchange" :id="'table-'+$options.name" name="table"
-               :multiple="false"
-               :data="exchangeData"
-               size="mini" :link-click-checked="true" :page-flag="false">
-        <DkTableColumn v-for="(item,index) in columnsExchange" :key="index" :field="item.field"
-                       :title="item.title"></DkTableColumn>
-      </DkTable>
-    </DkModal>
-
-    <!--下拉菜单-->
-    <div class="api" slot="content" @click.stop="()=>{}">
-      <DkTable ref="select" name="table"
-               :height="200"
-               :data="selectList"
-               :filter="false"
-               :freeze="false"
-               :show-setting-flag="false"
-               :pageTotalFlag="false"
-               :choose-flag="false"
-               :link-click-checked="true"
-               :page-flag="false"
-               @cell-click="cellClick">
-        <DkTableColumn v-for="(cItem,cIndex) in columns" :key="cIndex" :field="cItem.field"
-                       :title="cItem.title?cItem.title:$t(cItem.field)" :resize-flag="cIndex == columns.length-1"></DkTableColumn>
-      </DkTable>
-      <div style="width: 100%;text-align: right;" v-if="searchDetailFlag">
-        <a @click="lookMore">{{ $t('lookMore') }}</a>
+      <!--    下拉菜单-->
+      <div class="api" slot="content" @click.stop="()=>{}">
+        <DkTable ref="select" name="table"
+                 :height="200"
+                 :data="selectList"
+                 :filter="false"
+                 :freeze="false"
+                 :show-setting-flag="false"
+                 :pageTotalFlag="false"
+                 :choose-flag="false"
+                 :link-click-checked="true"
+                 :page-flag="false"
+                 @cell-click="cellClick">
+          <DkTableColumn v-for="(cItem,cIndex) in columns" :key="cIndex" :field="cItem.field"
+                         :title="cItem.title?cItem.title:$t(cItem.field)"
+                         :resize-flag="cIndex == columns.length-1"></DkTableColumn>
+        </DkTable>
+        <div style="width: 100%;text-align: right;" v-if="searchDetailFlag">
+          <a @click="lookMore">{{ $t('lookMore') }}</a>
+        </div>
       </div>
       </div>
-    </div>
-  </Poptip>
+    </Poptip>
+  </div>
 </template>
 </template>
 
 
 <script>
 <script>
-import {button as buttonList} from "@/locale/lang/zh-CN";
-import {request} from "@/api/base";
 
 
 export default {
 export default {
   name: 'TableSelect',
   name: 'TableSelect',
-  inject: {
-    dkEditTable: {
-      type: Object,
-      default: null
-    }
-  },
   props: {
   props: {
     showType: {
     showType: {
       type: Number,
       type: Number,
@@ -232,7 +214,7 @@ export default {
       default: ''
       default: ''
     },
     },
     // 标题(select有用)
     // 标题(select有用)
-    title:{
+    title: {
       type: String,
       type: String,
       default: ''
       default: ''
     },
     },
@@ -286,10 +268,16 @@ export default {
       type: Boolean,
       type: Boolean,
       default: false,
       default: false,
     },
     },
+    dkEditTable: {
+      type: Object,
+      default: null
+    }
   },
   },
   data() {
   data() {
-    let self = this
+    const vm = Window.vm
     return {
     return {
+      vm: vm,
+      existsFlag: true,
       loading: false,
       loading: false,
       leftParams: {},  // 左侧的查询条件
       leftParams: {},  // 左侧的查询条件
       optionsData: [], //存options临时文件
       optionsData: [], //存options临时文件
@@ -365,7 +353,7 @@ export default {
       //页数信息
       //页数信息
       pageInfo: {
       pageInfo: {
         total: 0,
         total: 0,
-        pageSize: this.$config.pageSize,
+        pageSize: 10,
         currentPage: 1
         currentPage: 1
       },
       },
       documentKeyDownContent: Object,
       documentKeyDownContent: Object,
@@ -388,7 +376,7 @@ export default {
       this.selectList = n
       this.selectList = n
       this.optionsData = n ? JSON.parse(JSON.stringify(n)) : []
       this.optionsData = n ? JSON.parse(JSON.stringify(n)) : []
       // 设置列表
       // 设置列表
-      if(n && n.length > 0){
+      if (n && n.length > 0) {
         this.setOptionsColumn();
         this.setOptionsColumn();
       }
       }
     },
     },
@@ -613,7 +601,7 @@ export default {
      */
      */
     lookMore() {
     lookMore() {
       // 关闭弹出框
       // 关闭弹出框
-      if(this.dkEditTable){
+      if (this.dkEditTable) {
         this.dkEditTable.closeAllPop();
         this.dkEditTable.closeAllPop();
       }
       }
       this.showModal = true;
       this.showModal = true;
@@ -869,10 +857,10 @@ export default {
       this.excute(this.service, this.service[this.methodsNameDetail], Object.assign(param, this.searchTable)).then(res => {
       this.excute(this.service, this.service[this.methodsNameDetail], Object.assign(param, this.searchTable)).then(res => {
         if (res.code === this.$config.SUCCESS_CODE) {
         if (res.code === this.$config.SUCCESS_CODE) {
           let arr = []
           let arr = []
-          if(res.data && res.data.list){
+          if (res.data && res.data.list) {
             arr = [...res.data.list]
             arr = [...res.data.list]
           }
           }
-          if(!arr && res.data){
+          if (!arr && res.data) {
             arr = [...res.data]
             arr = [...res.data]
           }
           }
           // arr.forEach(it => {
           // arr.forEach(it => {
@@ -1548,12 +1536,12 @@ export default {
         this.selectKey = 'jobId'
         this.selectKey = 'jobId'
         this.selectLabel = 'jobName'
         this.selectLabel = 'jobName'
         this.columns = [
         this.columns = [
-          {field: 'jobCode', title:this.$t('blameJobCode'), width: 'auto'},
-          {field: 'jobName', title:this.$t('blameJobName'), width: 'auto'},
+          {field: 'jobCode', title: this.$t('blameJobCode'), width: 'auto'},
+          {field: 'jobName', title: this.$t('blameJobName'), width: 'auto'},
         ]
         ]
         this.columnsDetail = [
         this.columnsDetail = [
-          {field: 'jobCode', title:this.$t('blameJobCode'), width: 'auto'},
-          {field: 'jobName', title:this.$t('blameJobName'), width: 'auto'},
+          {field: 'jobCode', title: this.$t('blameJobCode'), width: 'auto'},
+          {field: 'jobName', title: this.$t('blameJobName'), width: 'auto'},
         ]
         ]
       }
       }
       //责任工号
       //责任工号
@@ -1575,12 +1563,12 @@ export default {
         this.selectKey = 'userId'
         this.selectKey = 'userId'
         this.selectLabel = 'userName'
         this.selectLabel = 'userName'
         this.columns = [
         this.columns = [
-          {field: 'userCode', title:this.$t('blameUserCode'), width: 'auto'},
-          {field: 'userName', title:this.$t('blameUserName'), width: 'auto'},
+          {field: 'userCode', title: this.$t('blameUserCode'), width: 'auto'},
+          {field: 'userName', title: this.$t('blameUserName'), width: 'auto'},
         ]
         ]
         this.columnsDetail = [
         this.columnsDetail = [
-          {field: 'userCode', title:this.$t('blameUserCode'), width: 'auto'},
-          {field: 'userName', title:this.$t('blameUserName'), width: 'auto'},
+          {field: 'userCode', title: this.$t('blameUserCode'), width: 'auto'},
+          {field: 'userName', title: this.$t('blameUserName'), width: 'auto'},
         ]
         ]
       }
       }
     },
     },
@@ -1591,9 +1579,9 @@ export default {
      */
      */
     setOptionsColumn() {
     setOptionsColumn() {
       this.columns = []
       this.columns = []
-      this.columns.push({field: this.label, title: this.title?this.title: vm.$t(this.field)})
+      this.columns.push({field: this.label, title: this.title ? this.title : vm.$t(this.field)})
       this.selectList = this.options
       this.selectList = this.options
-      this.optionsData = this.options ? JSON.parse(JSON.stringify(this.options)) : []
+      // this.optionsData = this.options ? JSON.parse(JSON.stringify(this.options)) : []
       this.popWidth = 300
       this.popWidth = 300
     },
     },
     /**
     /**
@@ -1607,6 +1595,9 @@ export default {
       }
       }
     },
     },
   },
   },
+  beforeDestroy() {
+    this.existsFlag = null
+  },
   mounted() {
   mounted() {
   },
   },
   created() {
   created() {

+ 4 - 0
src/components/main/components/side-menu/side-menu.vue

@@ -327,6 +327,10 @@ export default {
       })
       })
     }
     }
   },
   },
+  beforeDestroy() {
+    clearTimeout(this.overTimer)
+    this.overTimer = null;
+  },
   mounted() {
   mounted() {
     this.menuListData = [...this.menuList]
     this.menuListData = [...this.menuList]
     // console.log('openedNames',this.openedNames)
     // console.log('openedNames',this.openedNames)

+ 3 - 0
src/components/sub/xm-select/index.vue

@@ -317,6 +317,9 @@ export default {
       this.init()
       this.init()
     }
     }
   },
   },
+  beforeDestroy() {
+    this.select = null ;
+  },
   created() {
   created() {
     this.setData(this.options);  // 设置数据
     this.setData(this.options);  // 设置数据
     this.$nextTick(() => {
     this.$nextTick(() => {

+ 2 - 2
src/main.js

@@ -194,9 +194,9 @@ Vue.component('DkTable', DkTable)
 import DkTree from '_c/base/dk-tree'
 import DkTree from '_c/base/dk-tree'
 
 
 Vue.component('DkTree', DkTree)
 Vue.component('DkTree', DkTree)
-import TableSelect from '_c/business/table-select'
 
 
-Vue.component('TableSelect', TableSelect)
+// import TableSelect from '_c/business/table-select'
+// Vue.component('TableSelect', TableSelect)
 
 
 import PrependTransparent from '_c/base/prepend-transparent'
 import PrependTransparent from '_c/base/prepend-transparent'
 
 

+ 8 - 6
src/mixins/form.js

@@ -416,14 +416,16 @@ export const formMixin = {
     //监听form页面滚动
     //监听form页面滚动
     this.$nextTick(() => {
     this.$nextTick(() => {
       let self = this
       let self = this
-      this.$el.addEventListener('scroll', (e) => {
-        self.scroll(e)
-      })
-      this.$el.addEventListener('resize', (e) => {
-        self.scroll(e)
-      })
+      this.$el.addEventListener('scroll', self.scroll)
+      this.$el.addEventListener('resize', self.scroll)
     })
     })
   },
   },
+  beforeDestroy() {
+    if(this.$el){
+      this.$el.removeEventListener('scroll', this.scroll)
+      this.$el.removeEventListener('resize', this.scroll)
+    }
+  },
   mounted() {
   mounted() {
     this.focus();   // 光标聚焦到第一个组件
     this.focus();   // 光标聚焦到第一个组件
   },
   },

+ 77 - 18
src/mixins/index.js

@@ -20,6 +20,7 @@ export const indexMixin = {
   data() {
   data() {
     return {
     return {
       loading: false,
       loading: false,
+      existsFlag:true,
       searchButtonName: null, // 查询按钮的权限名称
       searchButtonName: null, // 查询按钮的权限名称
       initSearchFlag: true, // 初始查询标识
       initSearchFlag: true, // 初始查询标识
       formType: null,// 如果是同一个路由,要记录类型
       formType: null,// 如果是同一个路由,要记录类型
@@ -51,6 +52,8 @@ export const indexMixin = {
       exportCondition: null,// 额外导出条件
       exportCondition: null,// 额外导出条件
       flagSameRouteFlag: false,// 控制相同页面多开的问题
       flagSameRouteFlag: false,// 控制相同页面多开的问题
       routeNameByExport: null, // 路由的名称 导出时用
       routeNameByExport: null, // 路由的名称 导出时用
+      _tableRefList: [],// 给表格右键使用(销毁使用)
+      _buttonList: [],// 给按钮使用(销毁使用)
       modalParams: {      // 打开modal传入的参数
       modalParams: {      // 打开modal传入的参数
         modalRef: 'modal_editAdd',
         modalRef: 'modal_editAdd',
         button: 'add',
         button: 'add',
@@ -225,20 +228,20 @@ export const indexMixin = {
       let params = null;
       let params = null;
       // 进行分页查询才会进行
       // 进行分页查询才会进行
       if (this.pageFlag) {
       if (this.pageFlag) {
-        if(pageInfo && pageInfo.currentPage){
-          if(pageInfo.currentPage === 1){
+        if (pageInfo && pageInfo.currentPage) {
+          if (pageInfo.currentPage === 1) {
             //查询条件
             //查询条件
             this.setCondition(this.searchCond)
             this.setCondition(this.searchCond)
             // 设置查询条件
             // 设置查询条件
             params = this._setSearchParams();
             params = this._setSearchParams();
-          }else{
+          } else {
             params = {...this.searchParams}
             params = {...this.searchParams}
           }
           }
           this.pageInfo.currentPage = pageInfo.currentPage;
           this.pageInfo.currentPage = pageInfo.currentPage;
           this.pageInfo.pageSize = pageInfo.pageSize;
           this.pageInfo.pageSize = pageInfo.pageSize;
           params.currentPage = pageInfo.currentPage;
           params.currentPage = pageInfo.currentPage;
           params.pageSize = pageInfo.pageSize;
           params.pageSize = pageInfo.pageSize;
-        }else{
+        } else {
           if (this.pageInfo) {
           if (this.pageInfo) {
             //查询条件
             //查询条件
             this.setCondition(this.searchCond)
             this.setCondition(this.searchCond)
@@ -248,7 +251,7 @@ export const indexMixin = {
             params.pageSize = this.pageInfo.pageSize
             params.pageSize = this.pageInfo.pageSize
           }
           }
         }
         }
-      }else{
+      } else {
         //查询条件
         //查询条件
         this.setCondition(this.searchCond)
         this.setCondition(this.searchCond)
         // 设置查询条件
         // 设置查询条件
@@ -618,9 +621,9 @@ export const indexMixin = {
           code = 0
           code = 0
         }
         }
         // 一秒钟失效,避免因为按了alt+tab之后再回来,按其他什么英文字母都不好使了的问题
         // 一秒钟失效,避免因为按了alt+tab之后再回来,按其他什么英文字母都不好使了的问题
-        setTimeout(()=>{
+        setTimeout(() => {
           code = 0
           code = 0
-        },1000)
+        }, 1000)
       }
       }
     },
     },
     /**
     /**
@@ -824,6 +827,25 @@ export const indexMixin = {
       }
       }
     },
     },
     /**
     /**
+     * @desc   : 点击按钮,供监听使用
+     * @author : 周兴
+     * @date   : 2023/4/13 17:08
+     */
+    buttonClick(e) {
+      if (this._buttonList && this._buttonList.length > 0) {
+        console.log('bb', this._buttonList, e,e.target._params)
+        this._buttonList.forEach(it => {
+          if (!it.button.disabledFlag) {
+            it.button.disabledFlag = true;
+            this.open(it.obj, this.tableRef, it.button.isMustChooseFlag)
+            setTimeout(() => {
+              it.button.disabledFlag = false;
+            }, 1000)
+          }
+        })
+      }
+    },
+    /**
      * @desc   : 创建时加载的方法
      * @desc   : 创建时加载的方法
      * @author : 周兴
      * @author : 周兴
      * @date   : 2023/2/8 11:50
      * @date   : 2023/2/8 11:50
@@ -841,9 +863,9 @@ export const indexMixin = {
       //监听form页面滚动
       //监听form页面滚动
       _this.$nextTick(() => {
       _this.$nextTick(() => {
         let self = this
         let self = this
-        _this.$el.addEventListener('scroll', (e) => {
-          self.scroll(e)
-        })
+        // _this.$el.addEventListener('scroll', (e) => {
+        //   self.scroll(e)
+        // })
       })
       })
     },
     },
     /**
     /**
@@ -871,14 +893,16 @@ export const indexMixin = {
       clearTimeout(this.overTimer)
       clearTimeout(this.overTimer)
       let _this = this
       let _this = this
       //监听窗口变化
       //监听窗口变化
-      window.addEventListener('resize', function (e) {
-        _this.resizeTable()
-      })
+      // window.addEventListener('resize', function (e) {
+      //   _this.resizeTable()
+      // })
       // 初始化页面数据
       // 初始化页面数据
       if (_this.mountedInit) {
       if (_this.mountedInit) {
         _this.mountedInit();
         _this.mountedInit();
       }
       }
       // 给dk-table列表注册cellMenu事件
       // 给dk-table列表注册cellMenu事件
+      _this._buttonList = []
+      _this._tableRefList = []
       if (_this.$refs) {
       if (_this.$refs) {
         let arr = Object.keys(_this.$refs);
         let arr = Object.keys(_this.$refs);
         if (arr && arr.length > 0) {
         if (arr && arr.length > 0) {
@@ -886,9 +910,8 @@ export const indexMixin = {
             if (_this.$refs[it] && _this.$refs[it].$vnode && _this.$refs[it].$vnode.tag &&
             if (_this.$refs[it] && _this.$refs[it].$vnode && _this.$refs[it].$vnode.tag &&
               _this.$refs[it].$vnode.tag.endsWith('DkTable')) {
               _this.$refs[it].$vnode.tag.endsWith('DkTable')) {
               // 说明是dk-table列表 增加右键事件 为了导出做准备
               // 说明是dk-table列表 增加右键事件 为了导出做准备
-              _this.$refs[it].$el.addEventListener('mousedown', function (e) {
-                _this.cellMenu(e, it);
-              });
+              _this._tableRefList.push(_this.$refs[it].$el)
+              _this.$refs[it].$el.addEventListener('mousedown', _this.cellMenu);
               // 在点开设置页面,为设置做准备
               // 在点开设置页面,为设置做准备
               if (_this.$refs[it].showSettingFlag) {
               if (_this.$refs[it].showSettingFlag) {
                 if (_this.$refs[it].$refs['setting']) {
                 if (_this.$refs[it].$refs['setting']) {
@@ -908,7 +931,12 @@ export const indexMixin = {
                 if (buttonRef === 'search') {
                 if (buttonRef === 'search') {
                   obj = _this.$config.routeUrl[buttonRef]
                   obj = _this.$config.routeUrl[buttonRef]
                 }
                 }
-                _this.$refs[it].$vnode.componentInstance.$el.addEventListener('click', function (e) {
+                // 记录按钮,用于销毁
+                _this._buttonList.push({button: _this.$refs[it].$vnode.componentInstance, obj: obj});
+                // _this.$refs[it].$vnode.componentInstance.$el.addEventListener('click', _this.buttonClick, false);
+                const listener = new WeakMap()
+                let ele = _this.$refs[it].$vnode.componentInstance.$el;
+                listener.set(ele, function (e) {
                   if (!_this.$refs[it].$vnode.componentInstance.disabledFlag) {
                   if (!_this.$refs[it].$vnode.componentInstance.disabledFlag) {
                     _this.$refs[it].$vnode.componentInstance.disabledFlag = true;
                     _this.$refs[it].$vnode.componentInstance.disabledFlag = true;
                     _this.open(obj, _this.tableRef, _this.$refs[it].$vnode.componentInstance.isMustChooseFlag)
                     _this.open(obj, _this.tableRef, _this.$refs[it].$vnode.componentInstance.isMustChooseFlag)
@@ -916,7 +944,17 @@ export const indexMixin = {
                       _this.$refs[it].$vnode.componentInstance.disabledFlag = false;
                       _this.$refs[it].$vnode.componentInstance.disabledFlag = false;
                     }, 1000)
                     }, 1000)
                   }
                   }
-                });
+                })
+                ele.addEventListener('click', listener.get(ele), false)
+                // _this.$refs[it].$vnode.componentInstance.$el.addEventListener('click', function (e) {
+                //   if (!_this.$refs[it].$vnode.componentInstance.disabledFlag) {
+                //     _this.$refs[it].$vnode.componentInstance.disabledFlag = true;
+                //     _this.open(obj, _this.tableRef, _this.$refs[it].$vnode.componentInstance.isMustChooseFlag)
+                //     setTimeout(() => {
+                //       _this.$refs[it].$vnode.componentInstance.disabledFlag = false;
+                //     }, 1000)
+                //   }
+                // });
               }
               }
             }
             }
           })
           })
@@ -949,6 +987,27 @@ export const indexMixin = {
     document.onkeydown = null;
     document.onkeydown = null;
   },
   },
   beforeDestroy() {
   beforeDestroy() {
+    clearTimeout(this.overTimer)
+    this.overTimer = null;
+    // 移除dk-table 监听
+    try{
+      let _this = this
+      if (_this._tableRefList && _this._tableRefList.length > 0) {
+        _this._tableRefList.forEach(it => {
+          it.removeEventListener('mousedown', _this.cellMenu)
+        })
+        _this._tableRefList = []
+      }
+      // 移除button的监听
+      if (_this._buttonList && _this._buttonList) {
+        _this._buttonList.forEach(it => {
+          it.removeEventListener('click', _this._buttonList)
+        })
+        _this._buttonList = []
+      }
+    }catch (e){
+    }
+    _this.existsFlag = null;
   },
   },
   created() {
   created() {
     this._createdInit();  // 调用创建时的方法
     this._createdInit();  // 调用创建时的方法

+ 2 - 3
src/store/index.js

@@ -34,11 +34,11 @@ export default new Vuex.Store({
     },
     },
     process:{       //流程图
     process:{       //流程图
       nodeModal:{   //节点弹窗
       nodeModal:{   //节点弹窗
-        display:false,
+        display:null,
         saveLoading:false
         saveLoading:false
       },
       },
       edgeModal:{   //连线弹窗
       edgeModal:{   //连线弹窗
-        display:false,
+        display:null,
         saveLoading:false
         saveLoading:false
       },
       },
       currentNodeId:undefined,//当前点击节点id
       currentNodeId:undefined,//当前点击节点id
@@ -63,7 +63,6 @@ export default new Vuex.Store({
       status.flowPermission1 = payload
       status.flowPermission1 = payload
     },
     },
     setApprover(status, payload) {
     setApprover(status, payload) {
-      console.log('setApprover',status, payload)
       status.approverDrawer = payload
       status.approverDrawer = payload
     },
     },
     setApproverConfig(status, payload) {
     setApproverConfig(status, payload) {

+ 1 - 1
src/store/module/user.js

@@ -231,7 +231,7 @@ export default {
       // 处理数据
       // 处理数据
       menu = handleMenu(menu);
       menu = handleMenu(menu);
       let arr = convertToChildrenMain(menu);
       let arr = convertToChildrenMain(menu);
-      // console.log('menu', menu, arr)
+      console.log('menu', menu, arr)
       commit('setMenuList', arr.copy())
       commit('setMenuList', arr.copy())
       sessionStorage.setItem('route', JSON.stringify(arr))
       sessionStorage.setItem('route', JSON.stringify(arr))
       router.addRoutes(filterAsyncRouter(arr))
       router.addRoutes(filterAsyncRouter(arr))

+ 1 - 1
src/view/core/factory/index.vue

@@ -53,7 +53,7 @@
       <DkForm ref="formInline" v-model="formData" :col-count="1">
       <DkForm ref="formInline" v-model="formData" :col-count="1">
         <!--  工厂编码  -->
         <!--  工厂编码  -->
         <DkFormItem prop="ftyCode" :required="true">
         <DkFormItem prop="ftyCode" :required="true">
-          <InputNumberPop v-model="formData.ftyCode" ref="ftyCode"/>
+          <InputPop v-model="formData.ftyCode" ref="ftyCode"/>
         </DkFormItem>
         </DkFormItem>
         <!--  工厂名称  -->
         <!--  工厂名称  -->
         <DkFormItem prop="ftyName" :required="true">
         <DkFormItem prop="ftyName" :required="true">

+ 2 - 2
src/view/pdm/molding-record/form.vue

@@ -139,10 +139,10 @@
 <script>
 <script>
 
 
 import { formMixin } from '@/mixins/form'
 import { formMixin } from '@/mixins/form'
-import { forEach } from '@/libs/tools/tools'
+import TableSelect from '@/components/business/table-select'
 
 
 export default {
 export default {
-  components: {},
+  components: {TableSelect},
   mixins: [formMixin],
   mixins: [formMixin],
   data() {
   data() {
     let self = this
     let self = this

+ 2 - 2
src/view/process/process-flow/index.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-  <div class="main-div">
+  <div class="main-div" v-if="existsFlag">
     <!--按钮区-->
     <!--按钮区-->
     <BaseIndexButtonGroup id="BaseIndexButtonGroup">
     <BaseIndexButtonGroup id="BaseIndexButtonGroup">
       <template #left>
       <template #left>
@@ -10,7 +10,7 @@
         <!--    编辑    -->
         <!--    编辑    -->
         <BaseIndexButton right-button="process-edit" ref="edit" name="edit"/>
         <BaseIndexButton right-button="process-edit" ref="edit" name="edit"/>
         <!--    流程    -->
         <!--    流程    -->
-        <BaseIndexButton right-button="process-setting" ref="processSetting" name="processSetting"/>
+        <BaseIndexButton right-button="process-setting" ref="processSetting" name="processSetting" @click="open($config.routeUrl.process.processSetting)"/>
       </template>
       </template>
       <template #right>
       <template #right>
         <!--   新建     -->
         <!--   新建     -->

+ 2 - 2
src/view/process/process-flow/process-setting.vue

@@ -80,8 +80,8 @@ export default {
   created() {
   created() {
     this.setCurrentNodeId(undefined)
     this.setCurrentNodeId(undefined)
     this.setCurrentEdgeId(undefined)
     this.setCurrentEdgeId(undefined)
-    this.setProcessNodeModalDisplay(false)
-    this.setProcessEdgeModalDisplay(false)
+    this.setProcessNodeModalDisplay(null)
+    this.setProcessEdgeModalDisplay(null)
   },
   },
   mounted() {
   mounted() {
     //创建流程图对象
     //创建流程图对象