From dc24803e0bc49c5a356b7eaad43060d463469a51 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期三, 08 三月 2023 16:10:20 +0800
Subject: [PATCH] 1.车间生产看板优化

---
 src/views/bbgl/bzgz.vue |  547 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 373 insertions(+), 174 deletions(-)

diff --git a/src/views/bbgl/bzgz.vue b/src/views/bbgl/bzgz.vue
index d34a844..5760bcd 100644
--- a/src/views/bbgl/bzgz.vue
+++ b/src/views/bbgl/bzgz.vue
@@ -5,14 +5,19 @@
         <el-button type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
 
         <div class="topRight" style="display: flex;align-items: center">
-          <!--          <div style="font-size: 14px;margin-right: 15px;color: #a7a7a7">鍓旈櫎宸ュ簭</div>-->
+          <div
+            style="color: red;margin: 0px 10px 0 0;"
+          >褰撳墠鎶ヨ〃鍙粺璁¤嚜鍒朵欢宸ュ簭
+          </div>
           <el-select
             v-model="form.rejectstepcode"
             style="width: 170px;"
             multiple
             placeholder="璇烽�夋嫨鍓旈櫎宸ュ簭"
             collapse-tags
-            @change="rejectstepcodeChange"
+            filterable
+            clearable
+            @change="getGroupSalaryReportSearch"
           >
             <el-option
               v-for="item in StepSelectArr"
@@ -31,10 +36,10 @@
           :model="form"
           label-width="100px"
           inline
-          style="display: flex;justify-content: space-between"
+          style="display: flex;"
         >
           <div class="elForm">
-            <el-form-item label="宸ュ崟缂栧彿" style=" display: flex;" label-width="70px">
+            <el-form-item label="宸ュ崟缂栧彿" style="display: flex;">
               <el-input v-model="form.wocode" placeholder="璇疯緭鍏�" style="width: 200px" />
             </el-form-item>
             <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
@@ -46,7 +51,7 @@
             <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">
               <el-input v-model="form.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item v-show="isExpandForm" label="宸ュ簭鍚嶇О" label-width="70px" style="display: flex;">
+            <el-form-item v-show="isExpandForm" label="宸ュ簭鍚嶇О" style="display: flex;">
               <el-input v-model="form.stepname" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
             <el-form-item v-show="isExpandForm" label="鐢熶骇鐝粍" style=" display: flex;">
@@ -79,7 +84,10 @@
 
             </el-form-item>
           </div>
-          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened?'5%':'10%'}">
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
             <el-button type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
             <el-button type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
           </div>
@@ -104,163 +112,334 @@
         </div>
 
       </div>
+      <el-tabs type="border-card" style="margin-top: 10px" @tab-click="tabClick">
+        <el-tab-pane label="鏈亾宸ュ簭">
+          <div class="elTableDiv" style="margin: 0 auto 10px;">
+            <el-table
+              ref="tableDataRef"
+              class="tableFixed"
+              :data="tableData"
+              :height="isExpandForm?(tableHeight-70):(tableHeight-30)+'px'"
+              border
+              :summary-method="getSummaries"
+              show-summary
+              :row-class-name="tableRowClassName"
+              :style="{width: 100+'%',height:isExpandForm?(tableHeight-70):(tableHeight-30)+'px',}"
+              highlight-current-row
+              :header-cell-style="this.$headerCellStyle"
+              :cell-style="this.$cellStyle"
+              @sort-change="sortChange"
+            >
+              <el-table-column
+                prop="RowNum"
+                width="50"
+                fixed
+                label="搴忓彿"
+              />
+              <el-table-column
+                prop="wo_code"
+                label="宸ュ崟缂栧彿"
+                width="160"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partcode"
+                label="浜у搧缂栫爜"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partname"
+                label="浜у搧鍚嶇О"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partspec"
+                label="浜у搧瑙勬牸"
+                width="150"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.partspec">{{ row.partspec }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="stepcode"
+                label="宸ュ簭缂栫爜"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="stepname"
+                label="宸ュ簭鍚嶇О"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="task_qty"
+                label="浠诲姟鏁伴噺"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="group_name"
+                label="鐢熶骇鐝粍"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.group_name">{{ row.group_name }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="good_qty"
+                label="鎶ュ伐鏁伴噺"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="unprice"
+                label="宸ュ簭鍗曚环"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.unprice">{{ row.unprice }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="usermoney"
+                label="璁′欢宸ヨ祫"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.usermoney">{{ row.usermoney }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="lm_user"
+                label="鎿嶄綔浜�"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="report_date"
+                label="鎿嶄綔鏃堕棿"
+                width="160"
+                sortable="custom"
+              />
 
-      <div class="elTableDiv">
-        <el-table
-          ref="tableDataRef"
-          class="tableFixed"
-          :data="tableData"
-          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
-          border
-          :summary-method="getSummaries"
-          show-summary
-          :row-class-name="tableRowClassName"
-          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+40)+'px',}"
-          highlight-current-row
-          :header-cell-style="this.$headerCellStyle"
-          :cell-style="this.$cellStyle"
-          @sort-change="sortChange"
-        >
-          <el-table-column
-            prop="RowNum"
-            width="50"
-            fixed
-            label="搴忓彿"
+              <el-table-column
+                label="鏌ョ湅鏄庣粏"
+                width="120"
+                fixed="right"
+              >
+                <template slot-scope="{row}">
+                  <div class="operationClass">
+                    <el-tooltip class="item" effect="dark" content="浜哄憳鏄庣粏" placement="top">
+                      <!--                  <i class="el-icon-edit-outline" @click="edit('edit',row)" />-->
+                      <i
+                        class="el-icon-tickets"
+                        style="cursor: pointer;color: #42b983;margin-right: 15px"
+                        @click="edit('edit',row)"
+                      />
+                    </el-tooltip>
+                    <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">-->
+                    <!--                  <i class="el-icon-delete" @click="del(row)" />-->
+                    <!--                </el-tooltip>-->
+                  </div>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+          <!--鍒嗛〉-->
+          <pagination
+            :total="total"
+            :page.sync="form.page"
+            :limit.sync="form.rows"
+            align="right"
+            layout="total,prev, pager, next,sizes"
+            popper-class="select_bottom"
+            @pagination="getGroupSalaryReportSearch"
           />
-          <el-table-column
-            prop="wo_code"
-            label="宸ュ崟缂栧彿"
-            width="160"
-            sortable="custom"
-          />
-          <el-table-column
-            prop="partcode"
-            label="浜у搧缂栫爜"
-            width="160"
-            show-tooltip-when-overflow
-            sortable="custom"
-          />
-          <el-table-column
-            prop="partname"
-            label="浜у搧鍚嶇О"
-            width="160"
-            show-tooltip-when-overflow
-            sortable="custom"
-          />
-          <el-table-column
-            prop="partspec"
-            label="浜у搧瑙勬牸"
-            width="150"
-            show-tooltip-when-overflow
-            sortable="custom"
-          >
-            <template slot-scope="{row}">
-              <div v-if="row.partspec">{{ row.partspec }}</div>
-              <div v-else>/</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="stepcode"
-            label="宸ュ簭缂栫爜"
-            width="110"
-            show-tooltip-when-overflow
-            sortable="custom"
-          />
-          <el-table-column
-            prop="stepname"
-            label="宸ュ簭鍚嶇О"
-            width="110"
-            show-tooltip-when-overflow
-            sortable="custom"
-          />
-          <el-table-column
-            prop="task_qty"
-            label="浠诲姟鏁伴噺"
-            width="110"
-            show-tooltip-when-overflow
-            sortable="custom"
-          />
-          <el-table-column
-            prop="group_name"
-            label="鐢熶骇鐝粍"
-            width="110"
-            show-tooltip-when-overflow
-            sortable="custom"
-          />
-          <el-table-column
-            prop="good_qty"
-            label="鎶ュ伐鏁伴噺"
-            width="110"
-            sortable="custom"
-          />
-          <el-table-column
-            prop="unprice"
-            label="宸ュ簭鍗曚环"
-            width="110"
-            sortable="custom"
-          >
-            <template slot-scope="{row}">
-              <div v-if="row.unprice">{{ row.unprice }} 鍏�</div>
-              <div v-else>/</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="usermoney"
-            label="璁颁欢宸ヨ祫"
-            width="110"
-            sortable="custom"
-          >
-            <template slot-scope="{row}">
-              <div v-if="row.usermoney">{{ row.usermoney }} 鍏�</div>
-              <div v-else>/</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            prop="lm_user"
-            label="鎶ュ伐浜哄憳"
-            width="110"
-            sortable="custom"
-          />
-          <el-table-column
-            prop="report_date"
-            label="鎶ュ伐鏃堕棿"
-            width="160"
-            sortable="custom"
-          />
+        </el-tab-pane>
+        <el-tab-pane label="閫愰亾宸ュ簭">
+          <div class="elTableDiv" style="margin: 0 auto 10px;">
+            <el-table
+              ref="tableDataRef2"
+              class="tableFixed"
+              :data="tableData2"
+              :height="isExpandForm?(tableHeight-70):(tableHeight-30)+'px'"
+              border
+              :summary-method="getSummaries"
+              show-summary
+              :row-class-name="tableRowClassName"
+              :style="{width: 100+'%',height:isExpandForm?(tableHeight-70):(tableHeight-30)+'px',}"
+              highlight-current-row
+              :header-cell-style="this.$headerCellStyle"
+              :cell-style="this.$cellStyle"
+              @sort-change="sortChange"
+            >
+              <el-table-column
+                prop="RowNum"
+                width="50"
+                fixed
+                label="搴忓彿"
+              />
+              <el-table-column
+                prop="wo_code"
+                label="宸ュ崟缂栧彿"
+                width="160"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partcode"
+                label="浜у搧缂栫爜"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partname"
+                label="浜у搧鍚嶇О"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partspec"
+                label="浜у搧瑙勬牸"
+                width="150"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.partspec">{{ row.partspec }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="stepcode"
+                label="宸ュ簭缂栫爜"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="stepname"
+                label="宸ュ簭鍚嶇О"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="task_qty"
+                label="浠诲姟鏁伴噺"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="group_name"
+                label="鐢熶骇鐝粍"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.group_name">{{ row.group_name }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="good_qty"
+                label="鎶ュ伐鏁伴噺"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="unprice"
+                label="宸ュ簭鍗曚环"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.unprice">{{ row.unprice }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="usermoney"
+                label="璁′欢宸ヨ祫"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.usermoney">{{ row.usermoney }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="lm_user"
+                label="鎿嶄綔浜�"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="report_date"
+                label="鎿嶄綔鏃堕棿"
+                width="160"
+                sortable="custom"
+              />
 
-          <el-table-column
-            label="鏌ョ湅鏄庣粏"
-            width="120"
-            fixed="right"
-          >
-            <template slot-scope="{row}">
-              <div class="operationClass">
-                <el-tooltip class="item" effect="dark" content="浜哄憳鏄庣粏" placement="top">
-                  <!--                  <i class="el-icon-edit-outline" @click="edit('edit',row)" />-->
-                  <i
-                    class="el-icon-tickets"
-                    style="cursor: pointer;color: #42b983;margin-right: 15px"
-                    @click="edit('edit',row)"
-                  />
-                </el-tooltip>
-                <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">-->
-                <!--                  <i class="el-icon-delete" @click="del(row)" />-->
-                <!--                </el-tooltip>-->
-              </div>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-      <!--鍒嗛〉-->
-      <pagination
-        :total="total"
-        :page.sync="form.page"
-        :limit.sync="form.rows"
-        align="right"
-        layout="total,prev, pager, next,sizes"
-        popper-class="select_bottom"
-        @pagination="getGroupSalaryReportSearch"
-      />
+              <el-table-column
+                label="鏌ョ湅鏄庣粏"
+                width="120"
+                fixed="right"
+              >
+                <template slot-scope="{row}">
+                  <div class="operationClass">
+                    <el-tooltip class="item" effect="dark" content="浜哄憳鏄庣粏" placement="top">
+                      <!--                  <i class="el-icon-edit-outline" @click="edit('edit',row)" />-->
+                      <i
+                        class="el-icon-tickets"
+                        style="cursor: pointer;color: #42b983;margin-right: 15px"
+                        @click="edit('edit',row)"
+                      />
+                    </el-tooltip>
+                    <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">-->
+                    <!--                  <i class="el-icon-delete" @click="del(row)" />-->
+                    <!--                </el-tooltip>-->
+                  </div>
+                </template>
+              </el-table-column>
+            </el-table>
+          </div>
+          <!--鍒嗛〉-->
+          <pagination
+            :total="total"
+            :page.sync="form.page"
+            :limit.sync="form.rows"
+            align="right"
+            layout="total,prev, pager, next,sizes"
+            popper-class="select_bottom"
+            @pagination="getGroupSalaryReportSearch"
+          />
+        </el-tab-pane>
+      </el-tabs>
     </div>
 
     <el-dialog
@@ -278,6 +457,7 @@
           :key="tag.name"
           type="success"
           style="margin-right: 15px;min-width: 80px;text-align: center"
+          :style="{color:$store.state.settings.theme}"
         >
           {{ tag }}
         </el-tag>
@@ -285,8 +465,7 @@
       <span slot="footer" class="dialog-footer">
         <div class="footerButton">
           <el-button @click="dialogVisible=false">杩� 鍥�</el-button>
-          <!--          <el-button @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
-          <!--          <el-button type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+
         </div>
       </span>
     </el-dialog>
@@ -301,8 +480,7 @@
       :code="code"
     />
 
-  </div>
-</template>
+  </div></template>
 
 <script>
 import Pagination from '@/components/Pagination'
@@ -315,6 +493,7 @@
   GroupSalaryReportSearchUser
 } from '@/api/bbgl'
 import { MesOrderStepReportSelectUserGroup } from '@/api/scgl'
+
 import { StepSelect } from '@/api/zzmx'
 
 export default {
@@ -339,6 +518,7 @@
         username: '', // 鎿嶄綔浜哄憳
         operdate: '', // 鎿嶄綔鏃堕棿
         rejectstepcode: [], // 鍓旈櫎宸ュ簭(鍥哄畾钖祫宸ュ簭涓嶅弬涓庤绠�
+        compute: 'last', // 璁′欢鏂瑰紡  閫愰亾宸ュ簭锛歝ontin   鏈亾宸ュ簭锛歭ast
         prop: 'lm_date', // 鎺掑簭瀛楁
         order: 'desc', // 鎺掑簭瀛楁
         page: 1, // 绗嚑椤�
@@ -347,8 +527,9 @@
       groupArr: [],
       total: 10,
       tableData: [],
+      tableData2: [],
       dialogVisible: false,
-      tagArr: [],
+      tagArr: [], //
       dialogForm: {
         OrgType: '',
         OrgCode: '',
@@ -389,6 +570,12 @@
     window.addEventListener('resize', this.getHeight)
     this.getHeight()
   },
+  // updated() {
+  //   this.$nextTick(() => {
+  //     this.$refs.tableDataRef.doLayout()
+  //     this.$refs.tableDataRef2.doLayout()
+  //   })
+  // },
   methods: {
     handleRequest() {
       this.getGroupSalaryReportSearch().then(res => {
@@ -399,13 +586,9 @@
       })
     },
     // 鑾峰彇宸ュ簭涓嬫媺鎺ュ彛
-    async  getStepSelect() {
+    async getStepSelect() {
       const { data: res } = await StepSelect()
       this.StepSelectArr = res
-    },
-    // 鍓旈櫎宸ュ簭涓嬫媺閫夐」鍊煎彉鍖栨椂
-    rejectstepcodeChange(val) {
-      this.getGroupSalaryReportSearch()
     },
     getSummaries(param) {
       const { columns, data } = param
@@ -421,9 +604,9 @@
           sums[index] = values.reduce((prev, curr) => {
             const value = Number(curr)
             if (!isNaN(value)) {
-              return prev + curr
+              return Math.round(prev * 100) / 100 + Math.round(curr * 100) / 100
             } else {
-              return prev
+              return Math.round(prev * 100) / 100
             }
           }, 0)
           sums[index] += ' 鍏�'
@@ -434,6 +617,7 @@
       })
       this.$nextTick(() => {
         this.$refs.tableDataRef.doLayout()
+        this.$refs.tableDataRef2.doLayout()
       })
 
       return sums
@@ -453,6 +637,7 @@
         username: this.form.username,
         operdate: tempDate,
         rejectstepcode: this.form.rejectstepcode.join(','),
+        compute: this.form.compute,
         prop: this.form.prop,
         order: this.form.order,
         page: this.form.page,
@@ -460,7 +645,13 @@
 
       }
       const res = await GroupSalaryReportSearch(data)
-      this.tableData = res.data
+      if (this.form.compute === 'last') {
+        this.tableData = res.data
+      }
+      if (this.form.compute === 'contin') {
+        this.tableData2 = res.data
+      }
+
       this.total = res.count
 
       return { code: res.code }
@@ -469,6 +660,11 @@
     async getMesOrderStepReportSelectUserGroup() {
       const { data: res } = await MesOrderStepReportSelectUserGroup()
       this.groupArr = res
+    },
+    tabClick(val) {
+      // console.log(val.label)
+      this.form.compute = val.label === '鏈亾宸ュ簭' ? 'last' : 'contin'
+      this.getGroupSalaryReportSearch()
     },
     // 鎺掑簭鏀瑰彉鏃�
     sortChange({ column, prop, order }) {
@@ -497,7 +693,8 @@
         stepname: this.form.stepname,
         groupcode: this.form.groupcode,
         username: this.form.username,
-        operdate: tempDate
+        operdate: tempDate,
+        compute: this.form.compute
       }
 
       const { data: res } = await GroupSalaryReportExcelSearch(data)
@@ -607,6 +804,7 @@
         this.mainHeight = window.innerHeight - 85
         this.tableHeight = this.mainHeight - 255
         this.$refs.tableDataRef.doLayout()
+        this.$refs.tableDataRef2.doLayout()
       })
     },
     tableRowClassName({ row, rowIndex }) {
@@ -746,6 +944,7 @@
     height: 100% !important;
   }
 }
+
 .topRight ::v-deep {
   input::-webkit-input-placeholder {
     color: $main_color;

--
Gitblit v1.9.3