From ee38779810cfbe512788f71679aaaaa7fedb1775 Mon Sep 17 00:00:00 2001
From: lxp <1928192722@qq.com>
Date: 星期二, 18 三月 2025 11:19:00 +0800
Subject: [PATCH] 表格合并以及权限添加

---
 src/components/Table/lims-table.vue                    |  293 +++++++++++++++++++------
 src/views/business/unPass/index.vue                    |   38 +++
 src/views/business/reportPreparation/index.vue         |  102 ++++----
 src/views/business/costStatistics/index.vue            |   75 +++++-
 src/views/performance/manHour/work-time-management.vue |   39 ++
 src/views/performance/manHour/work-time-statistics.vue |   27 +-
 src/views/performance/manHour/work-time-config.vue     |   22 +
 src/views/business/inspectionTask/index.vue            |    2 
 src/views/business/reportPreparation/onlyoffice.vue    |    5 
 src/views/bulletinBoard/tasksShow/index.vue            |   25 -
 src/views/performance/staffEvaluate/index.vue          |    2 
 src/views/performance/manHour/index.vue                |    6 
 src/views/performance/class/index.vue                  |    9 
 src/views/business/sample/index.vue                    |   14 
 14 files changed, 450 insertions(+), 209 deletions(-)

diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue
index 74628ad..e293a94 100644
--- a/src/components/Table/lims-table.vue
+++ b/src/components/Table/lims-table.vue
@@ -1,31 +1,85 @@
 <template>
   <div>
     <!-- 琛ㄦ牸 -->
-    <el-table ref="multipleTable" v-loading="tableLoading" element-loading-text="鍔犺浇涓�..."
-      element-loading-spinner="el-icon-loading" :border="border" :data="tableData"
-      :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" :height="height"
-      :highlight-current-row="highlightCurrentRow" :row-class-name="rowClassName" :row-style="rowStyle"
-      :row-key="rowKey" :span-method="spanMethod" :stripe="stripe" style="width: 100%" tooltip-effect="dark"
-      @row-click="rowClick" @current-change="currentChange" @selection-change="handleSelectionChange"
-      class="lims-table">
-      <el-table-column align="center" type="selection" width="55" v-if="isSelection" />
-      <el-table-column align="center" label="搴忓彿" type="index" width="60" :index="indexMethod" />
+    <el-table
+      ref="multipleTable"
+      v-loading="tableLoading"
+      element-loading-text="鍔犺浇涓�..."
+      element-loading-spinner="el-icon-loading"
+      :border="border"
+      :data="tableData"
+      :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }"
+      :height="height"
+      :highlight-current-row="highlightCurrentRow"
+      :row-class-name="rowClassName"
+      :row-style="rowStyle"
+      :row-key="rowKey"
+      :span-method="finalSpanMethod"
+      :stripe="stripe"
+      style="width: 100%"
+      tooltip-effect="dark"
+      @row-click="rowClick"
+      @current-change="currentChange"
+      @selection-change="handleSelectionChange"
+      class="lims-table"
+    >
+      <el-table-column
+        align="center"
+        type="selection"
+        width="55"
+        v-if="isSelection"
+      />
+      <el-table-column
+        align="center"
+        label="搴忓彿"
+        type="index"
+        width="60"
+        :index="indexMethod"
+      />
 
-      <el-table-column v-for="(item, index) in column" :key="index" :column-key="item.columnKey"
-        :filter-method="item.filterHandler" :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue"
-        :filters="item.filters" :fixed="item.fixed" :label="item.label" :min-width="item.minWidth" :prop="item.prop"
-        :show-overflow-tooltip="item.dataType === 'action' || item.dataType === 'slot' ? false : true
-          " :sortable="item.sortable ? true : false" :type="item.type" align="center"
-        :width="item.dataType == 'action' ? btnWidth : item.width">
+      <el-table-column
+        v-for="(item, index) in column"
+        :key="index"
+        :column-key="item.columnKey"
+        :filter-method="item.filterHandler"
+        :filter-multiple="item.filterMultiple"
+        :filtered-value="item.filteredValue"
+        :filters="item.filters"
+        :fixed="item.fixed"
+        :label="item.label"
+        :min-width="item.minWidth"
+        :prop="item.prop"
+        :show-overflow-tooltip="
+          item.dataType === 'action' || item.dataType === 'slot' ? false : true
+        "
+        :sortable="item.sortable ? true : false"
+        :type="item.type"
+        align="center"
+        :width="item.dataType == 'action' ? btnWidth : item.width"
+      >
         <!-- <div class="123" v-if="item.type == ''"> -->
-        <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope">
-          <slot v-if="item.theadSlot" :index="index" :name="item.theadSlot" :row="scope.row" />
+        <template
+          v-if="item.hasOwnProperty('colunmTemplate')"
+          :slot="item.colunmTemplate"
+          slot-scope="scope"
+        >
+          <slot
+            v-if="item.theadSlot"
+            :index="index"
+            :name="item.theadSlot"
+            :row="scope.row"
+          />
         </template>
 
         <template slot-scope="scope">
           <!-- 鎻掓Ы -->
           <div v-if="item.dataType == 'slot'">
-            <slot v-if="item.slot" :index="scope.$index" :name="item.slot" :row="scope.row" />
+            <slot
+              v-if="item.slot"
+              :index="scope.$index"
+              :name="item.slot"
+              :row="scope.row"
+            />
           </div>
           <!-- 杩涘害鏉� -->
           <div v-else-if="item.dataType == 'progress'">
@@ -33,73 +87,141 @@
           </div>
           <!-- 鍥剧墖 -->
           <div v-else-if="item.dataType == 'image'">
-            <img :src="javaApi + '/img/' + scope.row[item.prop]" alt=""
-              style="width: 40px; height: 40px; margin-top: 10px" />
+            <img
+              :src="javaApi + '/img/' + scope.row[item.prop]"
+              alt=""
+              style="width: 40px; height: 40px; margin-top: 10px"
+            />
           </div>
 
           <!-- tag -->
           <div v-else-if="item.dataType == 'tag'">
-            <el-tag v-if="
-              typeof dataTypeFn(scope.row[item.prop], item.formatData) ==
-              'string'
-            " :title="scope.row[item.prop] | formatters(item.formatData)"
-              :type="formatType(scope.row[item.prop], item.formatType)">{{ scope.row[item.prop] |
-                formatters(item.formatData) }}</el-tag>
-            <el-tag v-for="(tag, index) in dataTypeFn(
-              scope.row[item.prop],
-              item.formatData
-            )" v-else-if="
-              typeof dataTypeFn(scope.row[item.prop], item.formatData) ==
-              'object'
-            " :key="index" :title="scope.row[item.prop] | formatters(item.formatData)"
-              :type="formatType(tag, item.formatType)">{{
+            <el-tag
+              v-if="
+                typeof dataTypeFn(scope.row[item.prop], item.formatData) ==
+                'string'
+              "
+              :title="scope.row[item.prop] | formatters(item.formatData)"
+              :type="formatType(scope.row[item.prop], item.formatType)"
+              >{{ scope.row[item.prop] | formatters(item.formatData) }}</el-tag
+            >
+            <el-tag
+              v-for="(tag, index) in dataTypeFn(
+                scope.row[item.prop],
+                item.formatData
+              )"
+              v-else-if="
+                typeof dataTypeFn(scope.row[item.prop], item.formatData) ==
+                'object'
+              "
+              :key="index"
+              :title="scope.row[item.prop] | formatters(item.formatData)"
+              :type="formatType(tag, item.formatType)"
+              >{{
                 item.tagGroup
                   ? tag[item.tagGroup.label]
                     ? tag[item.tagGroup.label]
                     : tag
                   : tag
-              }}</el-tag>
-            <el-tag v-else :title="scope.row[item.prop] | formatters(item.formatData)"
-              :type="formatType(scope.row[item.prop], item.formatType)">{{ scope.row[item.prop] |
-                formatters(item.formatData) }}</el-tag>
+              }}</el-tag
+            >
+            <el-tag
+              v-else
+              :title="scope.row[item.prop] | formatters(item.formatData)"
+              :type="formatType(scope.row[item.prop], item.formatType)"
+              >{{ scope.row[item.prop] | formatters(item.formatData) }}</el-tag
+            >
           </div>
 
           <!-- 鎸夐挳 -->
-          <div v-else-if="item.dataType == 'action'" :style="`width:${getWidth(item.operation, scope.row)}`">
+          <div
+            v-else-if="item.dataType == 'action'"
+            :style="`width:${getWidth(item.operation, scope.row)}`"
+          >
             <template v-for="(o, key) in item.operation">
-              <el-button v-show="o.type != 'upload'" size="mini" v-if="o.showHide ? o.showHide(scope.row) : true"
-                :disabled="o.disabled ? o.disabled(scope.row) : false" :icon="iconFn(o)" :plain="o.plain"
-                :style="{ color: o.name === '鍒犻櫎' ? '#f56c6c' : o.color }" :type="o.type | typeFn(scope.row)"
-                @click="o.clickFun(scope.row)" :key="key">
+              <el-button
+                v-show="o.type != 'upload'"
+                size="mini"
+                v-if="o.showHide ? o.showHide(scope.row) : true"
+                :disabled="o.disabled ? o.disabled(scope.row) : false"
+                :icon="iconFn(o)"
+                :plain="o.plain"
+                :style="{ color: o.name === '鍒犻櫎' ? '#f56c6c' : o.color }"
+                :type="o.type | typeFn(scope.row)"
+                @click="o.clickFun(scope.row)"
+                :key="key"
+              >
                 {{ o.name }}
               </el-button>
-              <el-upload :action="javaApi + o.url" size="mini" ref="upload" :multiple="o.multiple ? o.multiple : false"
-                :disabled="o.disabled ? o.disabled(scope.row) : false" :accept="o.accept
-                  ? o.accept
-                  : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'
-                  " v-if="o.type == 'upload' && o.url" style="display: inline-block; width: 50px"
-                :data="o.data ? o.data(scope.row) : {}" :before-upload="o.beforeUpload ? o.beforeUpload(scope.row) : () => true
-                  " v-show="o.showHide ? o.showHide(scope.row) : true" :headers="uploadHeader" :on-error="onError"
-                :on-exceed="onExceed" :on-success="handleSuccessUp" :show-file-list="false" :key="key">
-                <el-button :size="o.size ? o.size : 'small'" type="text"
-                  :disabled="o.disabled ? o.disabled(scope.row) : false">{{ o.name }}</el-button>
+              <el-upload
+                :action="javaApi + o.url"
+                size="mini"
+                ref="upload"
+                :multiple="o.multiple ? o.multiple : false"
+                :disabled="o.disabled ? o.disabled(scope.row) : false"
+                :accept="
+                  o.accept
+                    ? o.accept
+                    : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'
+                "
+                v-if="o.type == 'upload' && o.url"
+                style="display: inline-block; width: 50px"
+                :data="o.data ? o.data(scope.row) : {}"
+                :before-upload="
+                  o.beforeUpload ? o.beforeUpload(scope.row) : () => true
+                "
+                v-show="o.showHide ? o.showHide(scope.row) : true"
+                :headers="uploadHeader"
+                :on-error="onError"
+                :on-exceed="onExceed"
+                :on-success="handleSuccessUp"
+                :show-file-list="false"
+                :key="key"
+              >
+                <el-button
+                  :size="o.size ? o.size : 'small'"
+                  type="text"
+                  :disabled="o.disabled ? o.disabled(scope.row) : false"
+                  >{{ o.name }}</el-button
+                >
               </el-upload>
-              <el-upload action="#" :on-change="(file, fileList) => o.clickFun(scope.row, file, fileList)
-                " :multiple="o.multiple ? o.multiple : false" :limit="o.limit ? o.limit : 1"
-                :disabled="o.disabled ? o.disabled(scope.row) : false" :accept="o.accept
-                  ? o.accept
-                  : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'
-                  " v-if="o.type == 'upload' && !o.url" style="display: inline-block; width: 50px"
-                v-show="o.showHide ? o.showHide(scope.row) : true" :auto-upload="false" :on-exceed="onExceed"
-                :show-file-list="false" :key="key">
-                <el-button :size="o.size ? o.size : 'small'" type="text"
-                  :disabled="o.disabled ? o.disabled(scope.row) : false">{{ o.name }}</el-button>
+              <el-upload
+                action="#"
+                :on-change="
+                  (file, fileList) => o.clickFun(scope.row, file, fileList)
+                "
+                :multiple="o.multiple ? o.multiple : false"
+                :limit="o.limit ? o.limit : 1"
+                :disabled="o.disabled ? o.disabled(scope.row) : false"
+                :accept="
+                  o.accept
+                    ? o.accept
+                    : '.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar'
+                "
+                v-if="o.type == 'upload' && !o.url"
+                style="display: inline-block; width: 50px"
+                v-show="o.showHide ? o.showHide(scope.row) : true"
+                :auto-upload="false"
+                :on-exceed="onExceed"
+                :show-file-list="false"
+                :key="key"
+              >
+                <el-button
+                  :size="o.size ? o.size : 'small'"
+                  type="text"
+                  :disabled="o.disabled ? o.disabled(scope.row) : false"
+                  >{{ o.name }}</el-button
+                >
               </el-upload>
             </template>
           </div>
           <!-- 鍙偣鍑荤殑鏂囧瓧 -->
-          <div v-else-if="item.dataType == 'link'" class="cell" style="width: 100%"
-            @click="goLink(scope.row, item.linkEvent)">
+          <div
+            v-else-if="item.dataType == 'link'"
+            class="cell"
+            style="width: 100%"
+            @click="goLink(scope.row, item.linkEvent)"
+          >
             <span class="link" v-if="!item.formatData">
               {{ scope.row[item.prop] }}
             </span>
@@ -114,8 +236,16 @@
         </template>
       </el-table-column>
     </el-table>
-    <pagination v-if="page" v-show="page.total > 0" :total="page.total" :layout="page.layout" :page.sync="page.current"
-      :limit.sync="page.size" @pagination="pagination" style="background-color: #fff" />
+    <pagination
+      v-if="page"
+      v-show="page.total > 0"
+      :total="page.total"
+      :layout="page.layout"
+      :page.sync="page.current"
+      :limit.sync="page.size"
+      @pagination="pagination"
+      style="background-color: #fff"
+    />
   </div>
 </template>
 
@@ -189,6 +319,10 @@
     },
   },
   props: {
+    parentSpanMethod: {
+      type: Function,
+      default: () => {},
+    },
     isSelection: {
       type: Boolean,
       default: undefined,
@@ -204,19 +338,19 @@
     handleSelectionChange: {
       type: Function,
       default: () => {
-        return () => { };
+        return () => {};
       },
     },
     rowClick: {
       type: Function,
       default: () => {
-        return () => { };
+        return () => {};
       },
     },
     currentChange: {
       type: Function,
       default: () => {
-        return () => { };
+        return () => {};
       },
     },
     border: {
@@ -245,7 +379,7 @@
     },
     rowClassName: {
       type: Function,
-      default: () => { },
+      default: () => {},
     },
     rowStyle: {
       type: Function,
@@ -288,6 +422,17 @@
     this.$nextTick(() => {
       this.$refs.multipleTable.doLayout();
     });
+  },
+  computed: {
+    finalSpanMethod() {
+      if(this.parentSpanMethod) {
+        console.log('鐖剁粍浠剁殑鍚堝苟鏂规硶');
+        return this.parentSpanMethod;
+      }else{
+        console.log('瀛愮粍浠剁殑鍚堝苟鏂规硶');
+        return this.spanMethod;
+      }
+    },
   },
   mounted() {
     this.calculateSpanInfo();
@@ -459,11 +604,11 @@
 </script>
 
 <style scoped>
-.el-table>>>.el-table__empty-text {
+.el-table >>> .el-table__empty-text {
   text-align: center;
 }
 
->>>.cell {
+>>> .cell {
   padding: 0 !important;
 }
 
@@ -480,7 +625,7 @@
   cursor: pointer;
 }
 
->>>.el-table__body-wrapper::-webkit-scrollbar {
+>>> .el-table__body-wrapper::-webkit-scrollbar {
   height: 14px;
   /* 璁剧疆婊氬姩鏉″搴� */
 }
diff --git a/src/views/bulletinBoard/tasksShow/index.vue b/src/views/bulletinBoard/tasksShow/index.vue
index 171122b..82673f9 100644
--- a/src/views/bulletinBoard/tasksShow/index.vue
+++ b/src/views/bulletinBoard/tasksShow/index.vue
@@ -116,7 +116,7 @@
         border
         :data="tableData"
         style="width: 100%"
-        :height="tableHeight"
+        :height="tableHeight+''"
         :header-cell-style="{ textAlign: 'center' }"
         :cell-style="{ textAlign: 'center' }"
       >
@@ -228,7 +228,7 @@
         <el-pagination
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
-          :current-page="page.currentPage"
+          :current-page="page.current"
           :page-sizes="[20, 40, 60, 80, 100]"
           :page-size="20"
           layout="total, sizes, prev, pager, next, jumper"
@@ -257,11 +257,11 @@
       intervalId: null,
       total: 0,
       page: {
-        currentPage: 1,
-        pageSize: 20,
+        current: 1,
+        size: 20,
       },
       tableData: [],
-      tableHeight: 0,
+      tableHeight: "",
     };
   },
   watch: {
@@ -320,12 +320,7 @@
   methods: {
     //鍔ㄦ�佽幏鍙栬〃鏍奸珮搴�
     handlerResize() {
-      let viewHeight = window.innerHeight;
-      let titleHeight = 60;
-      let headMenuHeight = 90;
-      let pageHeight = 42;
-      this.tableHeight =
-        viewHeight - titleHeight - headMenuHeight - pageHeight - 120;
+      this.tableHeight = window.innerHeight - 50 - 46 - 60 - 80  - 30 - 30 - 32;
     },
     // 鍏抽棴
     close() {
@@ -373,20 +368,20 @@
       this.getTableData();
     },
     handleSizeChange(val) {
-      this.page.pageSize = val;
+      this.page.size = val;
       this.getTableData();
       console.log(`姣忛〉 ${val} 鏉);
     },
     handleCurrentChange(val) {
-      this.page.currentPage = val;
+      this.page.current = val;
       this.getTableData();
       console.log(`褰撳墠椤�: ${val}`);
     },
     getTableData() {
       this.loading = true;
       let data = {
-        currentPage: this.page.currentPage,
-        pageSize: this.page.pageSize,
+        current: this.page.current,
+        size: this.page.size,
         sonLaboratory: this.sonLaboratory,
       };
         tasksShow(data).then((res) => {
diff --git a/src/views/business/costStatistics/index.vue b/src/views/business/costStatistics/index.vue
index 78d5a12..6cbb466 100644
--- a/src/views/business/costStatistics/index.vue
+++ b/src/views/business/costStatistics/index.vue
@@ -1,4 +1,8 @@
 <style scoped>
+.costStatistics {
+  width: 100%;
+  height: 100%;
+}
 .title {
   height: 60px;
   line-height: 60px;
@@ -49,15 +53,20 @@
 </style>
 
 <template>
-  <div class="inspection_order">
-    <div style="width: 100%; height: 100%">
+  <div>
+    <div class="costStatistics bg-1">
       <div>
         <el-row class="title">
           <el-col :span="12" style="padding-left: 20px; text-align: left"
             >璐圭敤缁熻</el-col
           >
           <el-col :span="12" style="text-align: right">
-            <el-button size="small" type="primary">OA鎺ㄩ��</el-button>
+            <el-button
+              size="small"
+              type="primary"
+              v-hasPermi="['business:costStatistics:OA']"
+              >OA鎺ㄩ��</el-button
+            >
           </el-col>
         </el-row>
       </div>
@@ -83,8 +92,6 @@
         <div class="search_thing" style="width: 340px">
           <div class="search_label">濮旀墭鍗曚綅锛�</div>
           <div class="search_input">
-            <!--            <el-input size="small" placeholder="璇疯緭鍏�" clearable-->
-            <!--               @keyup.enter.native="refreshTable()"></el-input>-->
             <el-select
               @focus="getCompanyOptions"
               @change="refreshTable()"
@@ -109,7 +116,6 @@
             >鏌� 璇�</el-button
           >
         </div>
-        <!-- <div class="search_thing" style="padding-left: 70px;">鎬讳环锛歿{total}}</div> -->
         <div class="search_thing" style="margin-left: 50px">
           <div style="width: 100%; text-align: right">鎬讳环锛�</div>
           <el-statistic
@@ -125,24 +131,18 @@
             type="primary"
             @click="handleDown"
             :loading="outLoading"
+            v-hasPermi="['business:costStatistics:export']"
             >瀵煎嚭</el-button
           >
         </div>
       </div>
       <div class="table">
-        <!-- <ValueTable
-          ref="ValueTable"
-          :url="$api.insOrder.costStatistics"
-          :componentData="componentData"
-          :key="upIndex"
-          @handleWeave="handleWeave"
-          :column-min-width="'140'"
-        /> -->
         <lims-table
           :tableData="tableData"
+          :parentSpanMethod="spanMethod"
           :column="column"
           :tableLoading="tableLoading"
-          :height="'calc(100vh - 270px)'"
+          :height="tableHeight"
           :page="page"
           @pagination="pagination"
         ></lims-table>
@@ -178,6 +178,7 @@
   },
   data() {
     return {
+      tableHeight: "",
       tableData: [],
       column: [
         {
@@ -237,12 +238,48 @@
       outLoading: false,
     };
   },
+  created() {
+    this.getTableHeight();
+  },
   mounted() {
     this.getDates();
     this.refreshTable();
     this.entityCopy = this.HaveJson(this.entity);
   },
   methods: {
+    // 鍚堝苟鍗曞厓鏍�
+    spanMethod({row, column, rowIndex, columnIndex}) {
+      // 濮旀墭鍗曞彿鐩稿悓鐨勮繘琛屼竴涓垪鍚堝苟
+      const mergeColumns = [1,2,8,9]
+      if (
+        mergeColumns.includes(columnIndex)
+      ) {
+        // 濡傛灉鏄涓�琛岋紝 鎴栬�呬笂涓�琛屾暟鎹殑濮旀墭鍗曞彿鍜屽綋鍓嶈鐨勫鎵樺崟鍙蜂笉涓�鏍�
+        if (
+          rowIndex == 0 ||
+          row.entrustCode != this.tableData[rowIndex - 1].entrustCode
+        ) {
+          // 璁$畻闇�瑕佸悎骞剁殑琛屾暟
+          let rowspan = 1;
+          while (
+            rowIndex + rowspan < this.tableData.length &&
+            row.entrustCode == this.tableData[rowIndex + rowspan].entrustCode
+          ) {
+            rowspan++;
+          }
+          return [rowspan, 1];
+        } else {
+          return [0, 0];
+        }
+      } else {
+        // 鍏朵粬鍒椾笉鍚堝苟
+        return [1, 1];
+      }
+    },
+    getTableHeight() {
+      const windowHeight = window.innerHeight;
+      this.tableHeight = windowHeight - 50 - 46 - 60 - 80 - 60 - 32 + "";
+    },
     getData() {
       this.tableLoading = true;
       let params = { ...this.page, ...this.entity };
@@ -252,15 +289,15 @@
         this.tableLoading = false;
       });
     },
-    pagination({ cutPage, size }) {
-      this.page.current = cutPage;
-      this.page.size = size;
+    pagination({ page, limit }) {
+      this.page.current = page;
+      this.page.size = limit;
       this.refreshTable();
     },
 
     handleDown() {
       let data = {
-        company: this.entity.company ? this.entity.company : '',
+        company: this.entity.company ? this.entity.company : "",
         startTime: this.dates[0],
         endTime: this.dates[1],
       };
diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue
index 329d4e4..5ba6c0d 100644
--- a/src/views/business/inspectionTask/index.vue
+++ b/src/views/business/inspectionTask/index.vue
@@ -414,7 +414,7 @@
               border
               ref="showResultTable"
               v-loading="loadingTable"
-              :height="tableHeight"
+              :height="tableHeight+''"
               element-loading-text="鍔犺浇涓�"
               element-loading-spinner="el-icon-loading"
               element-loading-background="rgba(255, 255, 255, 1)"
diff --git a/src/views/business/reportPreparation/index.vue b/src/views/business/reportPreparation/index.vue
index ecb205b..fe5106a 100644
--- a/src/views/business/reportPreparation/index.vue
+++ b/src/views/business/reportPreparation/index.vue
@@ -1,4 +1,9 @@
 <style scoped>
+.reportPreparation {
+  width: 100%;
+  height: 100%;
+}
+
 .title {
   height: 60px;
   line-height: 60px;
@@ -15,7 +20,7 @@
   display: flex;
   align-items: center;
   height: 50px;
-  width: 230px;
+  width: 210px;
 }
 
 .search_label {
@@ -65,8 +70,8 @@
 </style>
 
 <template>
-  <div class="inspection_order">
-    <div style="width: 100%; height: 100%">
+  <div>
+    <div class="reportPreparation bg-1">
       <div>
         <el-row class="title">
           <el-col :span="12" style="padding-left: 20px; text-align: left"
@@ -196,6 +201,7 @@
                 :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'"
                 style="color: #3a7bfa"
                 @click="more = !more"
+                v-hasPermi="['bbusiness:reportPreparation:more']"
                 >{{ !more ? "鏇村" : "鏀惰捣" }}</el-button
               >
               <div class="search_thing" style="padding-left: 20px">
@@ -224,31 +230,31 @@
                       <el-dropdown-item
                         icon="el-icon-download"
                         command="batchDownload"
+                        v-hasPermi="['business:reportPreparation:batchDownload']"
                         >鎵归噺涓嬭浇</el-dropdown-item
                       >
                       <el-dropdown-item
                         icon="el-icon-upload"
                         command="batchUpload"
+                         v-hasPermi="['business:reportPreparation:batchUpload']"
                         >鎵归噺涓婁紶</el-dropdown-item
                       >
                       <el-dropdown-item
                         icon="el-icon-s-check"
                         command="oneClickApproval"
+                         v-hasPermi="['business:reportPreparation:oneClickApproval']"
                         >涓�閿鎵�</el-dropdown-item
                       >
                       <el-dropdown-item
                         icon="el-icon-setting"
                         command="approvalConfig"
+                         v-hasPermi="['business:reportPreparation:signatureConfiguration']"
                         >瀹℃壒绛惧悕閰嶇疆</el-dropdown-item
                       >
                     </el-dropdown-menu>
                   </el-dropdown>
                 </template>
               </div>
-              <!-- <div class="btns">
-              <el-button size="small" type="primary" @click="handleDowns" :loading="outLoading" style="margin-right: 16px;">鎵归噺涓嬭浇</el-button>
-              <el-button size="small" type="primary" @click="openBatchUploadDia()" :loading="inLoading">鎵归噺涓婁紶</el-button>
-            </div> -->
             </div>
           </el-col>
         </el-row>
@@ -290,7 +296,7 @@
           :tableData="tableData"
           :column="column"
           :tableLoading="tableLoading"
-          :height="'calc(100vh - 270px)'"
+          :height="tableHeight+''"
           :page="page"
           @pagination="pagination"
         ></lims-table>
@@ -312,13 +318,6 @@
           style="cursor: pointer; font-size: 18px"
           @click="fullscreen = true"
         ></i>
-        <!-- <img
-          v-else
-          alt=""
-          src="../../../static/img/no-full.svg"
-          style="cursor: pointer"
-          @click="fullscreen = false"
-        /> -->
       </div>
       <div v-if="viewIssuedVisible" style="height: 80vh">
         <onlyoffice
@@ -342,13 +341,6 @@
           @click="fullscreen = true"
           v-if="!fullscreen"
         ></i>
-        <!-- <img
-          src="../../../static/img/no-full.svg"
-          alt=""
-          v-else
-          style="cursor: pointer"
-          @click="fullscreen = false"
-        /> -->
       </div>
       <Word
         style="height: 70vh"
@@ -377,13 +369,6 @@
           @click="fullscreen = true"
           v-if="!fullscreen"
         ></i>
-        <!-- <img
-          src="../../../static/img/no-full.svg"
-          alt=""
-          v-else
-          style="cursor: pointer"
-          @click="fullscreen = false"
-        /> -->
       </div>
       <div style="height: 75vh" v-if="issuedVisible">
         <onlyoffice
@@ -448,13 +433,6 @@
           @click="fullscreen = true"
           v-if="!fullscreen"
         ></i>
-        <!-- <img
-          src="../../../static/img/no-full.svg"
-          alt=""
-          v-else
-          style="cursor: pointer"
-          @click="fullscreen = false"
-        /> -->
       </div>
       <div style="height: 75vh" v-if="approveVisible">
         <onlyoffice
@@ -513,18 +491,6 @@
       top="5vh"
     >
       <div>
-        <!-- <el-upload
-            class="upload-demo"
-            :action="action"
-            :headers="headers"
-            :show-file-list="false"
-            accept=".doc,.docx"
-            :limit="1"
-            :before-upload="beforeUpload"
-            :on-success="handleSuccess"
-            ref="upload"
-            :on-error="onError">
-          </el-upload> -->
         <el-upload
           ref="upload"
           class="upload-demo custom-upload"
@@ -834,6 +800,8 @@
 
 import { getToken } from "@/utils/auth";
 
+import auth from "@/plugins/auth.js";
+
 export default {
   components: {
     limsTable,
@@ -841,6 +809,7 @@
   },
   data() {
     return {
+      tableHeight: "",
       tagField: {
         isUpload: {
           select: [
@@ -1092,12 +1061,18 @@
               disabled: (row) => {
                 return row.isExamine != -9;
               },
+              showHide: () => {
+                return auth.hasPermi("business:reportPreparation:establishment");
+              },
             },
             {
               name: "涓嬭浇",
               type: "text",
               clickFun: (row) => {
                 this.download(row);
+              },
+              showHide: () => {
+                return auth.hasPermi("business:reportPreparation:download");
               },
             },
             {
@@ -1115,6 +1090,9 @@
               disabled: (row) => {
                 return row.isExamine != -9;
               },
+              showHide: () => {
+                return auth.hasPermi("business:reportPreparation:upload");
+              },
             },
             {
               name: "杩樺師",
@@ -1125,6 +1103,9 @@
               disabled: (row) => {
                 return row.isExamine != -9;
               },
+              showHide: () => {
+                return auth.hasPermi("business:reportPreparation:restore");
+              },
             },
             {
               name: "鎻愪氦",
@@ -1134,6 +1115,9 @@
               },
               disabled: (row) => {
                 return row.state != 0;
+              },
+              showHide: () => {
+                return auth.hasPermi("business:reportPreparation:submit");
               },
             },
             {
@@ -1146,6 +1130,9 @@
                 return (
                   row.state == null || row.state == 0 || row.isExamine == 1
                 );
+              },
+              showHide: () => {
+                return auth.hasPermi("business:reportPreparation:examine");
               },
             },
             {
@@ -1163,6 +1150,9 @@
                   row.isRatify == 1
                 );
               },
+              showHide: () => {
+                return auth.hasPermi("business:reportPreparation:approve");
+              },
             },
             {
               name: "鎾ゅ洖",
@@ -1172,6 +1162,9 @@
               },
               disabled: (row) => {
                 return row.state == 1;
+              },
+              showHide: () => {
+                return auth.hasPermi("business:reportPreparation:withdraw");
               },
             },
           ],
@@ -1224,7 +1217,7 @@
     this.getAuthorizedPerson();
     this.handleResize();
     // 鐩戝惉绐楀彛澶у皬鏀瑰彉浜嬩欢
-    window.addEventListener("resize", this.handleResize);
+    window.addEventListener("resize", this.handleResize);  
   },
   beforeDestroy() {
     if (this.time != null) {
@@ -1244,6 +1237,11 @@
     this.entityCopy = this.HaveJson(this.entity);
     this.getList();
     this.getReportCountInfo();
+    this.getTableHeight();
+    window.addEventListener('resize', this.calculateTableHeight); // 鐩戝惉绐楀彛澶у皬鍙樺寲
+  },
+  beforeDestroy() {
+    window.removeEventListener('resize', this.calculateTableHeight); // 绉婚櫎鐩戝惉
   },
   watch: {
     batchUploadDia(newVal) {
@@ -1281,6 +1279,12 @@
     },
   },
   methods: {
+    // 鑾峰彇琛ㄦ牸楂樺害
+    getTableHeight() {
+      const windowHeight =   window.innerHeight; // 娴忚鍣ㄧ獥鍙i珮搴�
+      this.tableHeight = windowHeight - 60 - 80 - 46 - 50 - 32 - 44 -30 - 30;
+      console.log('this.tableHeight',this.tableHeight);
+    },
     // 杩斿洖鍒嗛〉鍊�
     pagination({ page, limit }) {
       this.page.current = page;
diff --git a/src/views/business/reportPreparation/onlyoffice.vue b/src/views/business/reportPreparation/onlyoffice.vue
index c9a6e33..50d3ab1 100644
--- a/src/views/business/reportPreparation/onlyoffice.vue
+++ b/src/views/business/reportPreparation/onlyoffice.vue
@@ -187,14 +187,13 @@
   body {
     height: 100%;
   }
-  #app {
+  /* #app {
     font-family: Avenir, Helvetica, Arial, sans-serif;
     -webkit-font-smoothing: antialiased;
     -moz-osx-font-smoothing: grayscale;
-    text-align: center;
     color: #2c3e50;
     height: 100%;
-  }
+  } */
   .qualityManual-container {
     padding: 0 !important;
     height: 100%;
diff --git a/src/views/business/sample/index.vue b/src/views/business/sample/index.vue
index dbfd2b9..589b8f2 100644
--- a/src/views/business/sample/index.vue
+++ b/src/views/business/sample/index.vue
@@ -168,8 +168,8 @@
         <el-row class="title">
           <el-col :span="12" style="padding-left: 20px;text-align: left;">鏍峰搧绠$悊</el-col>
           <el-col :span="12" style="text-align: right;">
-            <el-button size="small" type="primary" @click="storageVisible=true">鍏ュ簱</el-button>
-            <el-button size="small" type="primary" @click="exportVisible=true">鍑哄簱</el-button>
+            <el-button size="small" type="primary" @click="storageVisible=true"  v-hasPermi="['business:sample:store']">鍏ュ簱</el-button>
+            <el-button size="small" type="primary" @click="exportVisible=true"  v-hasPermi="['business:sample:outbound']">鍑哄簱</el-button>
           </el-col>
         </el-row>
       </div>
@@ -200,15 +200,11 @@
             </el-input>
           </div>
         </div>
-        <!-- <div class="search_thing" style="padding-left: 30px;">
-					<el-button size="small" @click="refresh()">閲� 缃�</el-button>
-					<el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
-				</div> -->
         <div class="btns">
-          <el-button size="small" style="color:#3A7BFA" @click="keepVisible=true">缁存姢</el-button>
-          <el-button size="small" style="color:#3A7BFA" @click="warehouseVisible=true,isEdit=false">娣诲姞浠撳簱</el-button>
+          <el-button size="small" style="color:#3A7BFA" @click="keepVisible=true"  v-hasPermi="['business:sample:maintenance']">缁存姢</el-button>
+          <el-button size="small" style="color:#3A7BFA" @click="warehouseVisible=true,isEdit=false"  v-hasPermi="['business:sample:addWarehouse']">娣诲姞浠撳簱</el-button>
           <el-button size="small" style="color:#3A7BFA" @click="shelvesVisible=true,isEdit=false"
-            :disabled="entity.warehouseId==null">娣诲姞璐ф灦</el-button>
+            :disabled="entity.warehouseId==null"  v-hasPermi="['business:sample:addGoodsShelves']">娣诲姞璐ф灦</el-button>
         </div>
       </div>
       <div class="table" v-loading="tableLoading">
diff --git a/src/views/business/unPass/index.vue b/src/views/business/unPass/index.vue
index 18a6423..88ee522 100644
--- a/src/views/business/unPass/index.vue
+++ b/src/views/business/unPass/index.vue
@@ -33,7 +33,7 @@
 }
 </style>
 <template>
-  <div class="below-standard-main">
+  <div class="below-standard-main bg-1">
     <div style="width: 100%; height: 100%">
       <div>
         <el-row class="title">
@@ -79,7 +79,8 @@
           :tableData="tableData"
           :column="column"
           :tableLoading="tableLoading"
-          :height="'calc(100vh - 270px)'"
+          :parentSpanMethod="spanMethod"
+          :height="tableHeight+''"
           :page="page"
           @pagination="pagination"
         ></lims-table>
@@ -157,12 +158,39 @@
     this.entityCopy = this.HaveJson(this.entity);
     this.refreshTable();
   },
+  created() {
+    this.getTableHeight();
+  },
   methods: {
+    // 琛ㄦ牸鍚堝苟
+    spanMethod({row,column,rowIndex,columnIndex}) {
+      // 闇�瑕佸悎骞剁殑鍒�
+      const needSpan = [1]
+      if(needSpan.includes(columnIndex)) {
+        // 濡傛灉鏄涓�琛� 鎴栬�� 褰撳墠琛岀殑鍊煎拰涓婁竴琛岀殑鍊间笉涓�鏍� 灏辫寮�濮嬭繘琛岃绠楀悎骞�
+        if(rowIndex == 0 || row.entrustCode != this.tableData[rowIndex -1 ].entrustCode) {
+          // 鍚戜笅鎵惧埌鍜屽綋鍓嶈涓嶄竴鏍风殑琛屾暟
+          let rowSpan = 1;
+          while(rowIndex + rowSpan < this.tableData.length && row.entrustCode == this.tableData[rowIndex + rowSpan].entrustCode) {
+            rowSpan++
+          }
+          return [rowSpan,1]
+        }else {
+          // 濡傛灉鍜屼笂涓�琛岀殑鍊间竴鏍� 灏遍殣钘�
+          return [0,0]
+        }
+      }else{
+        return [1,1]
+      }
+    },
+    getTableHeight() {
+      this.tableHeight = window.innerHeight - 50 - 46 - 60 - 80 - 30 - 30 - 32;
+    },
     getData() {
       this.tableLoading = true;
       pageInsUnPass({
         current: this.page.current,
-        limit: this.page.size,
+        size: this.page.size,
         model: this.entity.model,
         sample: this.entity.sample,
       }).then((res) => {
@@ -171,8 +199,8 @@
         this.page.total = res.data.total;
       });
     },
-    pagination({current,limit}) {
-      this.page.current = current;
+    pagination({page,limit}) {
+      this.page.current = page;
       this.page.size = limit;
       this.getData();
     },
diff --git a/src/views/performance/class/index.vue b/src/views/performance/class/index.vue
index 376e359..4ee8df7 100644
--- a/src/views/performance/class/index.vue
+++ b/src/views/performance/class/index.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="class-page">
+  <div class="classHour bg-1">
     <div class="search">
       <div class="search_thing">
         <div class="search_label">閫夋嫨鏃堕棿锛�</div>
@@ -70,6 +70,7 @@
           size="small"
           type="primary"
           @click="configTime"
+           v-hasPermi="['performance:class:time']"
           >鏃堕棿閰嶇疆</el-button
         >
         <el-button
@@ -78,6 +79,7 @@
           size="small"
           type="primary"
           @click="handleDown"
+           v-hasPermi="['performance:class:down']"
           >瀵� 鍑�</el-button
         >
         <el-button
@@ -85,6 +87,7 @@
           size="small"
           type="primary"
           @click="schedulingVisible = true"
+           v-hasPermi="['performance:class:add']"
           >鎺� 鐝�</el-button
         >
       </div>
@@ -1068,6 +1071,10 @@
 </script>
   
   <style scoped>
+  .classHour{
+    width: 100%;
+    height: 100%;
+  }
 .form_title {
   height: 36px;
   display: flex;
diff --git a/src/views/performance/manHour/index.vue b/src/views/performance/manHour/index.vue
index f7face2..c754d40 100644
--- a/src/views/performance/manHour/index.vue
+++ b/src/views/performance/manHour/index.vue
@@ -2,13 +2,13 @@
   <div class="work-time-management bg-1">
     <div style="text-align: left">
       <el-radio-group v-model="currentComponent" size="small" style="margin-top: 16px;margin-bottom: 16px;">
-        <el-radio-button label="workTimeStatistics">
+        <el-radio-button label="workTimeStatistics"  v-hasPermi="['performance:manHour:workTimeStatistics']">
           宸ユ椂缁熻
         </el-radio-button>
-        <el-radio-button label="workTimeManagement" >
+        <el-radio-button label="workTimeManagement" v-hasPermi="['performance:manHour:workTimeManagement']">
           鏃ュ伐鏃剁鐞�
         </el-radio-button>
-        <el-radio-button label="workTimeConfig">
+        <el-radio-button label="workTimeConfig" v-hasPermi="['performance:manHour:workTimeConfig']">
           杈呭姪宸ユ椂閰嶇疆
         </el-radio-button>
       </el-radio-group>
diff --git a/src/views/performance/manHour/work-time-config.vue b/src/views/performance/manHour/work-time-config.vue
index abe1b42..131ad9a 100644
--- a/src/views/performance/manHour/work-time-config.vue
+++ b/src/views/performance/manHour/work-time-config.vue
@@ -54,18 +54,16 @@
         type="primary"
         style="position: absolute; right: 50px"
         @click="openAdd()"
+         v-hasPermi="['performance:manHour:workTimeConfig:add']"
         >鏂� 澧�</el-button
       >
     </div>
     <div class="table">
-      <!-- <ValueTable ref="ValueTable0"
-                  :url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :upUrl="$api.auxiliaryWorkingHours.upAuxiliaryWorkingHours"
-                  :delUrl="$api.auxiliaryWorkingHours.deleteAuxiliaryWorkingHours" :componentData="componentData" :key="upIndex" /> -->
       <lims-table
         :tableData="tableData"
         :column="column"
         :tableLoading="tableLoading"
-        :height="'calc(100vh - 270px)'"
+        :height="tableHeight"
         :page="page"
         @pagination="pagination"
       ></lims-table>
@@ -172,6 +170,8 @@
 } from "../../../api/business/manHour";
 import { getYearAndMonthAndDays } from "../../../utils/date";
 
+import auth from "@/plugins/auth.js";
+
 import { getDicts } from "@/api/system/dict/data";
 import { number } from "echarts";
 export default {
@@ -180,6 +180,7 @@
   },
   data() {
     return {
+      tableHeight: "",
       rules: {
         number: [{ required: true, message: "璇疯緭鍏ョ紪鍙�", trigger: "blur" }],
         auxiliaryProject: [
@@ -273,12 +274,18 @@
               clickFun: (row) => {
                 this.openAdd(row);
               },
+              showHide: (row) => {
+                return auth.hasPermi("performance:manHour:workTimeConfig:edit");
+              },
             },
             {
               name: "鍒犻櫎",
               type: "text",
               clickFun: (row) => {
                 this.del(row);
+              },
+              showHide: (row) => {
+                return auth.hasPermi("performance:manHour:workTimeConfig:del");
               },
             },
           ],
@@ -302,7 +309,9 @@
       addPower: true,
     };
   },
-  created() {},
+  created() {
+    this.getTableHeight();
+  },
   mounted() {
     this.entityCopy = this.HaveJson(this.entity);
     this.obtainItemParameterList();
@@ -310,6 +319,9 @@
     this.getData();
   },
   methods: {
+    getTableHeight() {
+      this.tableHeight = window.innerHeight -50 -46 - 63 - 80 - 41 -30 -30 -32 + '';
+    },
     getData() {
       this.tableLoading = true;
       this.page.total = 0;
diff --git a/src/views/performance/manHour/work-time-management.vue b/src/views/performance/manHour/work-time-management.vue
index 2f78cbe..d2abcb7 100644
--- a/src/views/performance/manHour/work-time-management.vue
+++ b/src/views/performance/manHour/work-time-management.vue
@@ -124,6 +124,7 @@
           type="primary"
           @click="openAdd"
           v-show="currentTable == 'ValueTable0'"
+           v-hasPermi="['performance:manHour:workTimeManagement:enterData']"
           >褰曞叆鏁版嵁</el-button
         >
         <el-button
@@ -131,6 +132,7 @@
           type="primary"
           @click="handleOut"
           :loading="outLoading"
+          v-hasPermi="['performance:manHour:workTimeManagement:export']"
           >瀵� 鍑�</el-button
         >
         <el-button
@@ -138,6 +140,7 @@
           type="primary"
           v-show="currentTable == 'ValueTable0'"
           @click="openBatchCheck(0)"
+          v-hasPermi="['performance:manHour:workTimeManagement:batchExamine']"
           >鎵归噺瀹℃牳</el-button
         >
         <el-button
@@ -145,6 +148,7 @@
           type="primary"
           v-show="currentTable == 'ValueTable0'"
           @click="openBatchCheck(1)"
+          v-hasPermi="['performance:manHour:workTimeManagement:batchApprove']"
           >鎵归噺鎵瑰噯</el-button
         >
       </div>
@@ -158,7 +162,7 @@
         :column="column"
         :key="upIndex"
         :tableLoading="tableLoading"
-        :height="'calc(100vh - 270px)'"
+        :height="tableHeight+''"
         :page="page"
         @pagination="pagination"
       ></lims-table>
@@ -169,7 +173,7 @@
         :column="column1"
         :key="upIndex1"
         :tableLoading="tableLoading1"
-        :height="'calc(100vh - 270px)'"
+        :height="tableHeight+''"
         :page="page1"
         @pagination="pagination1"
       ></lims-table>
@@ -477,6 +481,8 @@
 } from "../../../api/business/manHour";
 import { getYearAndMonthAndDays } from "../../../utils/date";
 
+import auth from "@/plugins/auth.js";
+
 import { getDicts } from "@/api/system/dict/data";
 import Big from "big.js";
 export default {
@@ -485,6 +491,7 @@
   },
   data() {
     return {
+      tableHeight: "",
         shiftList:[],
       tableData: [],
       column: [
@@ -597,6 +604,9 @@
               clickFun: (row) => {
                 this.del(row);
               },
+              showHide: () => {
+                return auth.hasPermi('performance:manHour:workTimeManagement:del');
+              }
             },
             {
               name: "缂栬緫",
@@ -604,6 +614,9 @@
               clickFun: (row) => {
                 this.handleEdit(row);
               },
+              showHide: () => {
+                return auth.hasPermi('performance:manHour:workTimeManagement:edit');
+              }
             },
             {
               name: "瀹℃牳",
@@ -611,6 +624,9 @@
               clickFun: (row) => {
                 this.handleCheck(row);
               },
+              showHide: () => {
+                return auth.hasPermi('performance:manHour:workTimeManagement:examine');
+              }
             },
             {
               name: "鎵瑰噯",
@@ -618,6 +634,9 @@
               clickFun: (row) => {
                 this.handleRatify(row);
               },
+              showHide: () => {
+                return auth.hasPermi('performance:manHour:workTimeManagement:approve');
+              }
             },
           ],
         },
@@ -840,6 +859,7 @@
     //褰撳彧鏈変骇閲忓伐鏃秚ab椤垫椂锛屽綋鍓嶉〉鏀逛负浜ч噺宸ユ椂椤�
     this.selectEnumByCategory();
     this.setDate();
+    this.getTableHeight();
   },
   mounted() {
     console.log(11);
@@ -849,6 +869,9 @@
     this.entityCopy1 = this.HaveJson(this.entity);
   },
   methods: {
+    getTableHeight() {
+      this.tableHeight = window.innerHeight -50 -46 - 63 - 80 - 41 -30 -30 -32;
+    },
     del(row) {
       console.log(row);
       this.$confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?", "鎻愮ず", {
@@ -889,8 +912,8 @@
         console.log('浜ч噺宸ユ椂');
         this.tableLoading1 = true;
         let params = {
-            current: this.page.current,
-            size: this.page.size,
+            current: this.page1.current,
+            size: this.page1.size,
             dateTime1: this.entity.dateTime[0],
             dateTime2: this.entity.dateTime[1],
             week: this.entity.week,
@@ -906,13 +929,13 @@
           });
       }
     },
-    pagination({ current, limit }) {
-      this.page.current = current;
+    pagination({ page, limit }) {
+      this.page.current = page;
       this.page.size = limit;
       this.getData();
     },
-    pagination1({ current, limit }) {
-      this.page1.current = current;
+    pagination1({ page, limit }) {
+      this.page1.current = page;
       this.page1.size = limit;
       this.getData();
     },
diff --git a/src/views/performance/manHour/work-time-statistics.vue b/src/views/performance/manHour/work-time-statistics.vue
index 86aac14..e57b4d3 100644
--- a/src/views/performance/manHour/work-time-statistics.vue
+++ b/src/views/performance/manHour/work-time-statistics.vue
@@ -95,24 +95,13 @@
       </el-radio-group>
     </div>
     <div class="table">
-      <!-- <ValueTable ref="ValueTable0"
-          v-if="currentTable == 'value0' && isPermission('selectAuxiliaryOriginalHours')" :isColumnWidth="true"
-                    :isShowZero="true"
-                  :url="$api.auxiliaryOriginalHours.selectAuxiliaryOriginalHours"
-                  :componentData="componentData" :key="upIndex" />
-        <ValueTable ref="ValueTable1" :isShowZero="true"
-          v-if="currentTable == 'value1' && isPermission('selectAuxiliaryCorrectionHours')" :isColumnWidth="true"
-                  :url="$api.auxiliaryCorrectionHours.selectAuxiliaryCorrectionHours"
-          :inputUrl="$api.auxiliaryCorrectionHours.upload"
-                  :componentData="componentData0"
-          :key="upIndex1" /> -->
       <lims-table
         v-if="currentTable == 'value0'"
         :tableData="tableData"
         :column="column"
         :key="upIndex"
         :tableLoading="tableLoading"
-        :height="'calc(100vh - 270px)'"
+        :height="tableHeight+''"
         :page="page"
         @pagination="pagination"
       ></lims-table>
@@ -123,7 +112,7 @@
         :column="column1"
         :key="upIndex1"
         :tableLoading="tableLoading1"
-        :height="'calc(100vh - 270px)'"
+        :height="tableHeight+''"
         :page="page1"
         @pagination="pagination1"
       ></lims-table>
@@ -151,6 +140,7 @@
   computed: {},
   data() {
     return {
+      tableHeight: "",
       column: [
         {
           label: "濮撳悕",
@@ -468,7 +458,9 @@
       outLoading: false,
     };
   },
-  created() {},
+  created() {
+    this.getTableHeight();
+  },
   mounted() {
     this.entityCopy = this.HaveJson(this.entity);
     this.entityCopy0 = this.HaveJson(this.entity);
@@ -480,6 +472,9 @@
     },
   },
   methods: {
+    getTableHeight() {
+      this.tableHeight = window.innerHeight -50 -46 - 63 - 80 - 41 -30 -30 -32;
+    },
     getData() {
         if (this.currentTable == "value0") {
             console.log('value0');
@@ -505,13 +500,13 @@
     pagination({ page, limit }) {
       this.page.current = page;
       this.page.size = limit;
-      this.getList();
+      this.getData();
     },
    // 杩斿洖鍒嗛〉鍊�
    pagination1({ page, limit }) {
       this.page1.current = page;
       this.page1.size = limit;
-      this.getList();
+      this.getData();
     },
     refresh() {
       this.entity = {
diff --git a/src/views/performance/staffEvaluate/index.vue b/src/views/performance/staffEvaluate/index.vue
index bbfd6a3..68e4af3 100644
--- a/src/views/performance/staffEvaluate/index.vue
+++ b/src/views/performance/staffEvaluate/index.vue
@@ -42,7 +42,7 @@
         <el-radio-button v-hasPermi="['staffEvaluate:leaderRate:list']" label="leaderRate">缁勯暱璇勫垎</el-radio-button>
         <el-radio-button v-hasPermi="['staffEvaluate:supervisorRate:list']" label="supervisorRate">涓荤鎵撳垎</el-radio-button>
       </el-radio-group>
-      <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">瀵� 鍑�</el-button>
+      <el-button :loading="outLoading" size="small" type="primary" @click="handleDown"  v-hasPermi="['staffEvaluate:evaluation:export']">瀵� 鍑�</el-button>
     </div>
 
     </basicContainer>

--
Gitblit v1.9.3