loulijun2021
2023-03-06 5c5bc1e6e73a2b421fc5132796a081d5fdda6e36
src/views/bbgl/bzgz.vue
@@ -1,8 +1,33 @@
<template>
  <div>
    <div class="body" :style="{height:mainHeight+'px'}">
      <div class="bodyTopButtonGroup">
      <div class="bodyTopButtonGroup" style="justify-content: space-between">
        <el-button type="primary" icon="el-icon-download" @click="download">导出</el-button>
        <div class="topRight" style="display: flex;align-items: center">
          <div
            style="color: red;margin: 0px 10px 0 0;"
          >当前报表只统计自制件工序
          </div>
          <el-select
            v-model="form.rejectstepcode"
            style="width: 170px;"
            multiple
            placeholder="请选择剔除工序"
            collapse-tags
            filterable
            clearable
            @change="getGroupSalaryReportSearch"
          >
            <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 +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;">
@@ -26,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;">
@@ -42,7 +67,7 @@
            <el-form-item v-show="isExpandForm" label="操作人员" style=" display: flex;">
              <el-input v-model="form.username" style="width: 200px" placeholder="请输入" />
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="操作时间" style="display: flex;align-items: center">
            <el-form-item v-show="isExpandForm" label="报工时间" style="display: flex;align-items: center">
              <el-date-picker
                v-model="form.operdate"
                type="daterange"
@@ -59,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>
@@ -84,155 +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
          :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-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
@@ -250,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>
@@ -257,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>
@@ -273,8 +480,7 @@
      :code="code"
    />
  </div>
</template>
  </div></template>
<script>
import Pagination from '@/components/Pagination'
@@ -288,6 +494,8 @@
} from '@/api/bbgl'
import { MesOrderStepReportSelectUserGroup } from '@/api/scgl'
import { StepSelect } from '@/api/zzmx'
export default {
  name: 'Zzjg',
  components: {
@@ -299,6 +507,7 @@
      isExpandForm: false,
      mainHeight: 0,
      tableHeight: 0,
      StepSelectArr: [], // 剔除工序数组
      form: {
        wocode: '', // 工单编号
        partcode: '', // 产品编码
@@ -308,6 +517,8 @@
        groupcode: '', // 生产班组
        username: '', // 操作人员
        operdate: '', // 操作时间
        rejectstepcode: [], // 剔除工序(固定薪资工序不参与计算
        compute: 'last', // 计件方式  逐道工序:contin   末道工序:last
        prop: 'lm_date', // 排序字段
        order: 'desc', // 排序字段
        page: 1, // 第几页
@@ -316,6 +527,7 @@
      groupArr: [],
      total: 10,
      tableData: [],
      tableData2: [],
      dialogVisible: false,
      tagArr: [], //
      dialogForm: {
@@ -358,13 +570,57 @@
    window.addEventListener('resize', this.getHeight)
    this.getHeight()
  },
  // updated() {
  //   this.$nextTick(() => {
  //     this.$refs.tableDataRef.doLayout()
  //     this.$refs.tableDataRef2.doLayout()
  //   })
  // },
  methods: {
    handleRequest() {
      this.getGroupSalaryReportSearch().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 = []
      columns.forEach((column, index) => {
        if (index === 10) {
          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 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()
      })
      return sums
    },
    async getGroupSalaryReportSearch() {
      let tempDate = this.form.operdate
@@ -380,15 +636,22 @@
        groupcode: this.form.groupcode,
        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,
        rows: this.form.rows
      }
      console.log(data, 1)
      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 }
@@ -397,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 }) {
@@ -425,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)
@@ -535,6 +804,7 @@
        this.mainHeight = window.innerHeight - 85
        this.tableHeight = this.mainHeight - 255
        this.$refs.tableDataRef.doLayout()
        this.$refs.tableDataRef2.doLayout()
      })
    },
    tableRowClassName({ row, rowIndex }) {
@@ -674,6 +944,20 @@
    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>