Kaynağa Gözat

提交选人文件

Lijy 1 yıl önce
ebeveyn
işleme
e2ada0a857

+ 22 - 1
fhKeeper/formulahousekeeper/timesheet/src/components/select.vue

@@ -33,8 +33,10 @@
             <i v-if="moveIon" class="el-icon-circle-close iostu" @click.stop="clearDelete"></i>
         </div>
     </div>
+    <div ref="selectRefs"></div>
     <transition name="el-zoom-in-top">
-      <div v-show="show" style="position: relative;z-index: 999;"> 
+      <!-- <div v-show="show" style="position: relative;z-index: 999;">  -->
+      <div v-show="show" class="selectBox" :style="`width:${selecsWths}px;top:${selectTop}px;left:${selectLeft}px;`"> 
         <!-- 搜索框 -->
         <div class="searchBox" v-if="filterable" :style="`top: ${searchBoxTop}px`">
             <el-input placeholder="请输入名称搜索" size="mini" v-model="searchTex" style="width: 100%" @input="searchLick()" @focus="selectCli()"></el-input>
@@ -184,6 +186,9 @@ export default {
             time: null,//防抖
             fistArrList: [], // 第一次进来的人员数组
             fistArrListOne: [], // 第一次进来的人员初始数组
+            selectTop: 0,
+            selectLeft: 0,
+            selecsWths: 0,
         };
     },
     computed: {},
@@ -358,6 +363,18 @@ export default {
                     this.$set(this, 'options', JSON.parse(JSON.stringify(this.optionsCopy)))
                 }
             }
+
+            if(this.show) {
+                this.setSelectlocation()
+            }
+        },
+        setSelectlocation() {
+            let witdhs = this.$refs.selectRefs.offsetWidth
+            let tops = this.$refs.selectRefs.getBoundingClientRect().top
+            let lefts = this.$refs.selectRefs.getBoundingClientRect().left
+            this.selecsWths = witdhs
+            this.selectTop = tops + 4
+            this.selectLeft = lefts
         },
         selectClihide() {
             if(this.classDiv) {
@@ -553,6 +570,10 @@ export default {
 </script>
 
 <style scoped lang="scss">
+    .selectBox {
+        position: fixed;
+        z-index: 999;
+    }
     .selectDandu {
         font-size: 16px;
     }