From b08411e811e003ae2711e7ba8d92deaec9239de3 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期五, 24 三月 2023 14:01:44 +0800
Subject: [PATCH] 1.生产开报工优化

---
 src/views/bbgl/rygz.vue |  591 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 439 insertions(+), 152 deletions(-)

diff --git a/src/views/bbgl/rygz.vue b/src/views/bbgl/rygz.vue
index c4835c3..1575232 100644
--- a/src/views/bbgl/rygz.vue
+++ b/src/views/bbgl/rygz.vue
@@ -1,8 +1,34 @@
 <template>
   <div>
     <div class="body" :style="{height:mainHeight+'px'}">
-      <div class="bodyTopButtonGroup">
-        <el-button type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+
+        <div
+          style="color: red;margin: 10px 5px 0 0;"
+        >褰撳墠鎶ヨ〃鍙粺璁¤嚜鍒朵欢宸ュ簭
+        </div>
+
+        <!--        <div class="topRight" style="display: flex;align-items: center">-->
+        <!--          &lt;!&ndash;          <div style="font-size: 14px;margin-right: 15px;color: #a7a7a7">鍓旈櫎宸ュ簭</div>&ndash;&gt;-->
+        <!--          <el-select-->
+        <!--            v-model="form.rejectstepcode"-->
+        <!--            style="width: 170px;"-->
+        <!--            multiple-->
+        <!--            placeholder="璇烽�夋嫨鍓旈櫎宸ュ簭"-->
+        <!--            collapse-tags-->
+        <!--            filterable-->
+        <!--            clearable-->
+        <!--            @change="getPeopleSalaryReportSearch"-->
+        <!--          >-->
+        <!--            <el-option-->
+        <!--              v-for="item in StepSelectArr"-->
+        <!--              :key="item.stepcode"-->
+        <!--              :label="item.stepname"-->
+        <!--              :value="item.stepcode"-->
+        <!--            />-->
+        <!--          </el-select>-->
+        <!--        </div>-->
       </div>
 
       <div class="bodyTopFormGroup">
@@ -11,10 +37,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;">
@@ -26,7 +52,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-width="70px" label="宸ュ簭鍚嶇О" 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;">
@@ -59,9 +85,12 @@
 
             </el-form-item>
           </div>
-          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened?'5%':'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
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
           </div>
         </el-form>
         <div
@@ -83,147 +112,317 @@
         </div>
       </div>
 
-      <div class="elTableDiv">
-        <el-table
-          ref="tableDataRef"
-          class="tableFixed"
-          :data="tableData"
-          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
-          border
-          :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
-            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="160"
-            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"
-          >
-            <template slot-scope="{row}">
-              <div v-if="row.good_qty">{{ row.good_qty }}</div>
-              <div v-else>/</div>
-            </template>
-          </el-table-column>
-          <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="130"
-            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-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-80):(tableHeight-40)+'px'"
+              border
+              :summary-method="getSummaries"
+              show-summary
+              :row-class-name="tableRowClassName"
+              :style="{width: 100+'%',height:isExpandForm?(tableHeight-80):(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
+                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="160"
+                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="report_qty"
+                label="鎶ュ伐鏁伴噺"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.report_qty">{{ row.report_qty }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <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="ratio"
+                label="鍒嗛厤姣斾緥"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.unprice">{{ row.ratio }} %</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="usermoney"
+                label="涓汉璁′欢宸ヨ祫"
+                width="130"
+                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="username"
+                label="鎶ュ伐浜哄憳"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="report_date"
+                label="鎶ュ伐鏃堕棿"
+                width="160"
+                sortable="custom"
+              />
 
-        </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="getPeopleSalaryReportSearch"
-      />
+            </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="getPeopleSalaryReportSearch"
+          />
+        </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-80):(tableHeight-40)+'px'"
+              border
+              :summary-method="getSummaries"
+              show-summary
+              :row-class-name="tableRowClassName"
+              :style="{width: 100+'%',height:isExpandForm?(tableHeight-80):(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
+                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="160"
+                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="report_qty"
+                label="鎶ュ伐鏁伴噺"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.report_qty">{{ row.report_qty }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <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="130"
+                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="username"
+                label="鎶ュ伐浜哄憳"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="report_date"
+                label="鎶ュ伐鏃堕棿"
+                width="160"
+                sortable="custom"
+              />
+
+            </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="getPeopleSalaryReportSearch"
+          />
+        </el-tab-pane>
+      </el-tabs>
     </div>
 
     <el-dialog
+      v-el-drag-dialog
       :title="operation==='add'?'鏂板':'浜哄憳鏄庣粏'"
       :visible.sync="dialogVisible"
       width="800px"
@@ -244,9 +443,9 @@
       </div>
       <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>-->
+          <el-button v-waves @click="dialogVisible=false">杩� 鍥�</el-button>
+          <!--          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
         </div>
       </span>
     </el-dialog>
@@ -273,18 +472,23 @@
   GroupSalaryReportSearchUser, PeopleSalaryReportExcelSearch, PeopleSalaryReportSearch
 } from '@/api/bbgl'
 import { MesOrderStepReportSelectUserGroup } from '@/api/scgl'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { StepSelect } from '@/api/zzmx'
 
 export default {
   name: 'Zzjg',
   components: {
     Pagination, ImportPicker
   },
+  directives: { elDragDialog, waves },
   data() {
     return {
       mouseHoverType: 'mouseout',
       isExpandForm: false,
       mainHeight: 0,
       tableHeight: 0,
+      StepSelectArr: [], // 鍓旈櫎宸ュ簭鏁扮粍
       form: {
         wocode: '', // 宸ュ崟缂栧彿
         partcode: '', // 浜у搧缂栫爜
@@ -294,6 +498,8 @@
         groupcode: '', // 鐢熶骇鐝粍
         reportname: '', // 鎿嶄綔浜哄憳
         reportdate: '', // 鎿嶄綔鏃堕棿
+        rejectstepcode: [], // 鍓旈櫎宸ュ簭(鍥哄畾钖祫宸ュ簭涓嶅弬涓庤绠�
+        compute: 'last', // 璁′欢鏂瑰紡
         prop: 'partcode', // 鎺掑簭瀛楁
         order: 'desc', // 鎺掑簭瀛楁
         page: 1, // 绗嚑椤�
@@ -302,6 +508,7 @@
       groupArr: [],
       total: 10,
       tableData: [],
+      tableData2: [],
       dialogVisible: false,
       tagArr: [], //
       dialogForm: {
@@ -337,6 +544,12 @@
       }
     }
   },
+  // updated() {
+  //   this.$nextTick(() => {
+  //     this.$refs.tableDataRef.doLayout()
+  //     this.$refs.tableDataRef2.doLayout()
+  //   })
+  // },
   created() {
     this.handleRequest()
   },
@@ -349,8 +562,54 @@
       this.getPeopleSalaryReportSearch().then(res => {
         if (res.code === '200') {
           this.getMesOrderStepReportSelectUserGroup()
+          this.getStepSelect()
         }
       })
+    },
+    // 鑾峰彇宸ュ簭涓嬫媺鎺ュ彛
+    async  getStepSelect() {
+      const { data: res } = await StepSelect()
+      this.StepSelectArr = res
+    },
+    getSummaries(param) {
+      const { columns, data } = param
+      const sums = []
+
+      const i = this.form.compute === 'last' ? 11 : 10
+
+      columns.forEach((column, index) => {
+        if (index === i) {
+          sums[index] = '鎬讳环'
+          return
+        }
+        const values = data.map(item => Number(item[column.property]))
+        if (column.property === 'usermoney') {
+          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 Math.round(prev * 100) / 100
+            }
+          }, 0)
+
+          sums[index] += ' 鍏�'
+        } else {
+          // sums[index] = 'N/A'
+          sums[index] = ' '
+        }
+      })
+
+      this.$nextTick(() => {
+        this.$refs.tableDataRef.doLayout()
+        this.$refs.tableDataRef2.doLayout()
+      })
+      // (Math.round(sums * 100) / 100).toS
+
+      // console.log(typeof sums)
+      // console.log(sums[11].split(' '))
+      return sums
     },
     async getPeopleSalaryReportSearch() {
       let tempDate = this.form.reportdate
@@ -364,7 +623,9 @@
         partspec: this.form.partspec,
         stepname: this.form.stepname,
         groupcode: this.form.groupcode,
+        compute: this.form.compute,
         reportname: this.form.reportname,
+        rejectstepcode: this.form.rejectstepcode.join(','),
         reportdate: tempDate,
         prop: this.form.prop,
         order: this.form.order,
@@ -374,7 +635,12 @@
       }
 
       const res = await PeopleSalaryReportSearch(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 }
@@ -383,6 +649,10 @@
     async getMesOrderStepReportSelectUserGroup() {
       const { data: res } = await MesOrderStepReportSelectUserGroup()
       this.groupArr = res
+    },
+    tabClick(val) {
+      this.form.compute = val.label === '鏈亾宸ュ簭' ? 'last' : 'contin'
+      this.getPeopleSalaryReportSearch()
     },
     // 鎺掑簭鏀瑰彉鏃�
     sortChange({ column, prop, order }) {
@@ -410,6 +680,7 @@
         partspec: this.form.partspec,
         stepname: this.form.stepname,
         groupcode: this.form.groupcode,
+        compute: this.form.compute,
         reportname: this.form.reportname,
         reportdate: tempDate
       }
@@ -521,6 +792,7 @@
         this.mainHeight = window.innerHeight - 85
         this.tableHeight = this.mainHeight - 255
         this.$refs.tableDataRef.doLayout()
+        this.$refs.tableDataRef2.doLayout()
       })
     },
     tableRowClassName({ row, rowIndex }) {
@@ -651,14 +923,29 @@
   justify-content: center;
 }
 
-.tableFixed{
-  ::v-deep .el-table__fixed-right{
+.tableFixed {
+  ::v-deep .el-table__fixed-right {
     height: 100% !important;
   }
-  ::v-deep .el-table__fixed{
+
+  ::v-deep .el-table__fixed {
     height: 100% !important;
   }
 }
+
+.topRight ::v-deep {
+  input::-webkit-input-placeholder {
+    color: $main_color;
+  }
+
+  //input::-moz-input-placeholder {
+  //  color: rgba(0, 204, 254, 1);
+  //}
+
+  input::-ms-input-placeholder {
+    color: $main_color;
+  }
+}
 </style>
 <style>
 

--
Gitblit v1.9.3