Ver Fonte

添加工序列表自适应fix

NULL1222 há 3 dias atrás
pai
commit
fdc4f7fc9c

+ 197 - 156
src/bgj/terminalWorkBillModule/modules/taskDetail/components/addTop.vue

@@ -18,9 +18,9 @@
         >
         <el-drawer append-to-body :visible.sync="dialogFormVisible" size="70%">
             <div slot="title" style="font-size: 15px">{{ $t("添加工序") }}</div>
-            <div class="drawer__panel">
+            <div class="drawer__content">
                 <el-input
-                    style="width: 250px; margin-bottom: 10px"
+                    style="width: 250px; margin-bottom: 10px; flex-shrink: 0;"
                     size="small"
                     :placeholder="$t('请输入搜索内容')"
                     clearable
@@ -30,159 +30,161 @@
                         getOrderList((params.content.pageNumber = 1))
                     "
                 ></el-input>
-                <selectTable
-                    @selectChange="selectChange"
-                    v-if="dialogFormVisible"
-                    idName="sc_workpresetid"
-                    ref="table"
-                    v-model="result"
-                    :layout="tablecols"
-                    :data="orderList"
-                    :custom="true"
-                    height="500px"
-                    @upDateData="upDateData"
-                >
-                    <template v-slot:customcol="scope">
-                        <div
-                            v-if="scope.column.columnname == 'fileupload'"
-                            :style="
-                                scope.column.data.fileupload
-                                    ? scope.column.data.fileupload == 1
-                                        ? 'color:#008000'
-                                        : 'color:#ff0000'
-                                    : ''
-                            "
-                        >
-                            {{
-                                scope.column.data.fileupload
-                                    ? scope.column.data.fileupload == 1
-                                        ? $t("非必填")
-                                        : $t("必填")
-                                    : $t("无")
-                            }}
-                        </div>
-                        <div
-                            v-else-if="scope.column.columnname == 'additem'"
-                            :style="
-                                scope.column.data.additem
-                                    ? scope.column.data.additem == 1
-                                        ? 'color:#008000'
-                                        : 'color:#ff0000'
-                                    : ''
-                            "
-                        >
-                            {{
-                                scope.column.data.additem
-                                    ? scope.column.data.additem == 1
-                                        ? $t("非必填")
-                                        : $t("必填")
-                                    : $t("无")
-                            }}
-                        </div>
-                        <div
-                            v-else-if="scope.column.columnname == 'formcheck'"
-                            :style="
-                                scope.column.data.formcheck == 1
-                                    ? 'color:#ff0000'
-                                    : 'color:#666666'
-                            "
-                        >
-                            {{
-                                scope.column.data.formcheck == 1
-                                    ? $t("是")
-                                    : $t("否")
-                            }}
-                        </div>
-                        <div
-                            v-else-if="scope.column.columnname == 'panorama'"
-                            :style="
-                                scope.column.data.panorama
-                                    ? scope.column.data.panorama == 1
-                                        ? 'color:#008000'
-                                        : 'color:#ff0000'
-                                    : ''
-                            "
-                        >
-                            {{
-                                scope.column.data.panorama
-                                    ? scope.column.data.panorama == 1
-                                        ? $t("非必填")
-                                        : $t("必填")
-                                    : $t("无")
-                            }}
-                        </div>
-                        <div
-                            v-else-if="scope.column.columnname == 'passcheck'"
-                             :style="
-                                scope.column.data.passcheck == 1
-                                    ? 'color:#ff0000'
-                                    : 'color:#666666'
-                            "
-                        >
-                            {{
-                                scope.column.data.passcheck == 1
-                                    ? $t("是")
-                                    : $t("否")
-                            }}
-                        </div>
-                        <div
-                            v-else-if="scope.column.columnname == 'signature'"
-                            :style="
-                                scope.column.data.signature
-                                    ? scope.column.data.signature == 1
-                                        ? 'color:#008000'
-                                        : 'color:#ff0000'
-                                    : ''
-                            "
-                        >
-                            {{
-                                scope.column.data.signature
-                                    ? scope.column.data.signature == 1
-                                        ? $t("非必填")
-                                        : $t("必填")
-                                    : $t("无")
-                            }}
-                        </div>
-                        <div
-                            v-else-if="scope.column.columnname == 'servicenode'"
-                            :style="
-                                scope.column.data.servicenode == 1
-                                    ? 'color:#ff0000'
-                                    : 'color:#666666'
-                            "
-                        >
-                            {{
-                                scope.column.data.servicenode == 1
-                                    ? $t("是")
-                                    : $t("否")
-                            }}
-                        </div>
-                        <div
-                            v-else-if="scope.column.columnname == 'logreport'"
-                            :style="
-                                scope.column.data.logreport == 1
-                                    ? 'color:#ff0000'
-                                    : 'color:#666666'
-                            "
-                        >
-                            {{
-                                scope.column.data.logreport == 1
-                                    ? $t("是")
-                                    : $t("否")
-                            }}
-                        </div>
-                        <div v-else>
-                            {{
-                                scope.column.data[[scope.column.columnname]]
-                                    ? scope.column.data[
-                                          [scope.column.columnname]
-                                      ]
-                                    : "--"
-                            }}
-                        </div>
-                    </template>
-                </selectTable>
-                <div class="container normal-panel" style="text-align: right">
+                <div class="table-wrapper" ref="tableWrapper">
+                    <selectTable
+                        @selectChange="selectChange"
+                        v-if="dialogFormVisible"
+                        idName="sc_workpresetid"
+                        ref="table"
+                        v-model="result"
+                        :layout="tablecols"
+                        :data="orderList"
+                        :custom="true"
+                        :height="tableHeight"
+                        @upDateData="upDateData"
+                    >
+                        <template v-slot:customcol="scope">
+                            <div
+                                v-if="scope.column.columnname == 'fileupload'"
+                                :style="
+                                    scope.column.data.fileupload
+                                        ? scope.column.data.fileupload == 1
+                                            ? 'color:#008000'
+                                            : 'color:#ff0000'
+                                        : ''
+                                "
+                            >
+                                {{
+                                    scope.column.data.fileupload
+                                        ? scope.column.data.fileupload == 1
+                                            ? $t("非必填")
+                                            : $t("必填")
+                                        : $t("无")
+                                }}
+                            </div>
+                            <div
+                                v-else-if="scope.column.columnname == 'additem'"
+                                :style="
+                                    scope.column.data.additem
+                                        ? scope.column.data.additem == 1
+                                            ? 'color:#008000'
+                                            : 'color:#ff0000'
+                                        : ''
+                                "
+                            >
+                                {{
+                                    scope.column.data.additem
+                                        ? scope.column.data.additem == 1
+                                            ? $t("非必填")
+                                            : $t("必填")
+                                        : $t("无")
+                                }}
+                            </div>
+                            <div
+                                v-else-if="scope.column.columnname == 'formcheck'"
+                                :style="
+                                    scope.column.data.formcheck == 1
+                                        ? 'color:#ff0000'
+                                        : 'color:#666666'
+                                "
+                            >
+                                {{
+                                    scope.column.data.formcheck == 1
+                                        ? $t("是")
+                                        : $t("否")
+                                }}
+                            </div>
+                            <div
+                                v-else-if="scope.column.columnname == 'panorama'"
+                                :style="
+                                    scope.column.data.panorama
+                                        ? scope.column.data.panorama == 1
+                                            ? 'color:#008000'
+                                            : 'color:#ff0000'
+                                        : ''
+                                "
+                            >
+                                {{
+                                    scope.column.data.panorama
+                                        ? scope.column.data.panorama == 1
+                                            ? $t("非必填")
+                                            : $t("必填")
+                                        : $t("无")
+                                }}
+                            </div>
+                            <div
+                                v-else-if="scope.column.columnname == 'passcheck'"
+                                :style="
+                                    scope.column.data.passcheck == 1
+                                        ? 'color:#ff0000'
+                                        : 'color:#666666'
+                                "
+                            >
+                                {{
+                                    scope.column.data.passcheck == 1
+                                        ? $t("是")
+                                        : $t("否")
+                                }}
+                            </div>
+                            <div
+                                v-else-if="scope.column.columnname == 'signature'"
+                                :style="
+                                    scope.column.data.signature
+                                        ? scope.column.data.signature == 1
+                                            ? 'color:#008000'
+                                            : 'color:#ff0000'
+                                        : ''
+                                "
+                            >
+                                {{
+                                    scope.column.data.signature
+                                        ? scope.column.data.signature == 1
+                                            ? $t("非必填")
+                                            : $t("必填")
+                                        : $t("无")
+                                }}
+                            </div>
+                            <div
+                                v-else-if="scope.column.columnname == 'servicenode'"
+                                :style="
+                                    scope.column.data.servicenode == 1
+                                        ? 'color:#ff0000'
+                                        : 'color:#666666'
+                                "
+                            >
+                                {{
+                                    scope.column.data.servicenode == 1
+                                        ? $t("是")
+                                        : $t("否")
+                                }}
+                            </div>
+                            <div
+                                v-else-if="scope.column.columnname == 'logreport'"
+                                :style="
+                                    scope.column.data.logreport == 1
+                                        ? 'color:#ff0000'
+                                        : 'color:#666666'
+                                "
+                            >
+                                {{
+                                    scope.column.data.logreport == 1
+                                        ? $t("是")
+                                        : $t("否")
+                                }}
+                            </div>
+                            <div v-else>
+                                {{
+                                    scope.column.data[[scope.column.columnname]]
+                                        ? scope.column.data[
+                                            [scope.column.columnname]
+                                        ]
+                                        : "--"
+                                }}
+                            </div>
+                        </template>
+                    </selectTable>
+                </div>
+                <div class="container normal-panel pagination-wrapper" >
                     <el-pagination
                         style="text-align: right"
                         background
@@ -197,7 +199,7 @@
                     </el-pagination>
                 </div>
             </div>
-            <div class="fixed__btn__panel">
+            <div class="fixed__btn__panel ">
                 <el-button
                     size="small"
                     @click="dialogFormVisible = false"
@@ -232,6 +234,7 @@ export default {
             orderList: [],
             tablecols: [],
             total: 0,
+            tableHeight: 400,
             params: {
                 id: 2026051416494002,
                 content: {
@@ -249,16 +252,38 @@ export default {
         dialogFormVisible(val) {
             if (!val) {
                 this.$refs.table.allArr = [];
+                window.removeEventListener("resize", this.calcTableHeight);
             }
         },
     },
+    mounted() {
+        this.calcTableHeight = this.calcTableHeight.bind(this);
+    },
+    beforeDestroy() {
+        window.removeEventListener("resize", this.calcTableHeight);
+    },
     methods: {
+        calcTableHeight() {
+            this.$nextTick(() => {
+                if (this.$refs.tableWrapper) {
+                    const wrapperHeight =
+                        this.$refs.tableWrapper.clientHeight;
+                    if (wrapperHeight > 0) {
+                        this.tableHeight = wrapperHeight;
+                    }
+                }
+            });
+        },
         addBtn() {
             this.dialogFormVisible = true;
             this.getOrderList();
             this.tablecols = this.tool.tabelCol(
                 this.$route.name
             ).serviceWorkItemTable.tablecols;
+            this.$nextTick(() => {
+                this.calcTableHeight();
+                window.addEventListener("resize", this.calcTableHeight);
+            });
         },
         async onSubmit() {
             let data = this.$refs.table.allArr.map((item, index) => {
@@ -317,4 +342,20 @@ export default {
 .el-select {
     width: 100%;
 }
+.drawer__content {
+    display: flex;
+    flex-direction: column;
+    height: 100%;
+    border-top: 1px solid #eeeeee;
+    padding: 20px 16px 70px;
+}
+.table-wrapper {
+    flex: 1;
+    overflow: hidden;
+    min-height: 0;
+}
+.pagination-wrapper {
+    flex-shrink: 0;
+    text-align: right;
+}
 </style>