charles
2024-08-06 5ecb7958c96d3f0b6d47b79aff7eb306c2cf690f
src/views/reportForm/monthboundDetail/index.vue
@@ -1,20 +1,49 @@
<template>
  <div class="rightContent">
    <el-dialog
            title="配置初期时间"
            :visible.sync="timeModal"
            width="30%"
            :before-close="handlerClose">
      <el-form style="width: 80%;margin: 20px auto;" ref="sysFormRef">
        <el-form-item label="日期配置:">
          <el-select v-model="startDate.day" style="margin-left: 20px">
            <el-option v-for="day in 28" :value="day.toString().padStart(2,'0')":label="day.toString().padStart(2,'0')"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="时间配置:">
          <el-time-select
                  :picker-options="startPickerOptions"
                  v-model="startDate.time"
                  type="time"
                  format="HH:mm"
                  value-format="HH:mm"
                  :clearable='true'
                  class='margin_left_20px'>
          </el-time-select>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="timeModal = false" size="mini">取 消</el-button>
        <el-button type="primary" @click="saveStartDate" size="mini">保存</el-button>
      </span>
    </el-dialog>
    <div class="top">
      <SearchCommonView :add-title="'新建'" :showAdd="false" :placeholder="'请输入产品编码/产品名称搜索'" :amount-view="false"
      <SearchCommonView :add-title="'新建'" :showAdd="false" :placeholder="'请输入产品编码/产品名称搜索'" :amount-view="false" :showDownload="true" @downloadClick="downHttpClick"
         @searchClick="getList" >
        <template slot="leftButton">
          <el-date-picker
                    v-model="monthBoundObject.date"
                    value-format="yyyy-MM"
                    format="yyyy-MM"
                    type="month"
                    :clearable='false'
                    class='margin_left_20px'
                    @change='getData'
                    placeholder="选择日期"
                    :picker-options="pickerOptions"
                  >
                    :picker-options="pickerOptions">
          </el-date-picker>
          <el-button size="mini" @click="timeModal=true" class="el-icon-setting" type="text" style="margin-left: 10px">配置</el-button>
        </template>
      </SearchCommonView>
    </div>
@@ -23,7 +52,12 @@
        <TableCommonView ref="tableListRef" :loading="isTableOneLoading" :table-list="tableList" :showCheckcol='false' @selTableCol="selTableCol">
          <template slot="tableButton">
              <el-table-column label="期初库存" prop='inventoryStart'>
                <el-table-column label="件" prop='inventoryStart' min="90">
                <el-table-column v-for="unit in unitList" :label="unit.name" prop='inventoryStart' min="90">
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.beginMoreUnitsArr,unit.name,scope.row.beginAmount,scope.row.unit)}}
                  </template>
                </el-table-column>
                <!--<el-table-column label="件" prop='inventoryStart' min="90">
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.beginMoreUnitsArr,'件',scope.row.beginAmount,scope.row.unit)}}
                  </template>
@@ -42,10 +76,15 @@
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.beginMoreUnitsArr,'重量',scope.row.beginAmount,scope.row.unit)}}
                  </template>
                </el-table-column>
                </el-table-column>-->
              </el-table-column>
              <el-table-column label="本月入库" prop='inInventoryCurrentMonth'>
                <el-table-column label="件" prop='inventoryStart' min="90">
                <el-table-column v-for="unit in unitList" :label="unit.name" prop='inInventoryCurrentMonth' min="90">
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.inputMoreUnitsArr,unit.name,scope.row.inputAmount,scope.row.unit)}}
                  </template>
                </el-table-column>
                <!--<el-table-column label="件" prop='inventoryStart' min="90">
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.inputMoreUnitsArr,'件',scope.row.inputAmount,scope.row.unit)}}
                  </template>
@@ -64,10 +103,15 @@
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.inputMoreUnitsArr,'重量',scope.row.inputAmount,scope.row.unit)}}
                  </template>
                </el-table-column>
                </el-table-column>-->
              </el-table-column>
              <el-table-column label="本月出库" prop='outInventoryCurrentMonth'>
                <el-table-column label="件" prop='inventoryStart' min="90">
                <el-table-column v-for="unit in unitList" :label="unit.name" prop='outInventoryCurrentMonth' min="90">
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.outputMoreUnitsArr,unit.name,scope.row.outputAmount,scope.row.unit)}}
                  </template>
                </el-table-column>
                <!--<el-table-column label="件" prop='inventoryStart' min="90">
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.outputMoreUnitsArr,'件',scope.row.outputAmount,scope.row.unit)}}
                  </template>
@@ -86,10 +130,15 @@
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.outputMoreUnitsArr,'重量',scope.row.outputAmount,scope.row.unit)}}
                  </template>
                </el-table-column>
                </el-table-column>-->
              </el-table-column>
              <el-table-column label="期末库存" prop='inventoryEnd'>
                <el-table-column label="件" prop='inventoryStart' min="90">
                <el-table-column v-for="unit in unitList" :label="unit.name" prop='inventoryEnd' min="90">
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.MoreUnitsArr,unit.name,scope.row.amount,scope.row.unit)}}
                  </template>
                </el-table-column>
                <!--<el-table-column label="件" prop='inventoryStart' min="90">
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.MoreUnitsArr,'件',scope.row.amount,scope.row.unit)}}
                  </template>
@@ -108,7 +157,7 @@
                  <template slot-scope="scope">
                    {{getUnitValue(scope.row.MoreUnitsArr,'重量',scope.row.amount,scope.row.unit)}}
                  </template>
                </el-table-column>
                </el-table-column>-->
              </el-table-column>
            </template>
        </TableCommonView>
@@ -123,9 +172,14 @@
<script>
import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
import { getmonthStats } from "@/api/reportForm/inventoryRwport"
import { getmonthStats ,getSystemConfigApi,saveSystemConfigApi} from "@/api/reportForm/inventoryRwport"
import newDate from "@/api/date";
const { getPreviousMonth,formatTime} = newDate;
import { downloadMonthStats } from "@/api/downFile"
import FileSaver from 'file-saver'
import _ from 'lodash'
const { getPreviousMonth,formatTime,getCurrentMonth} = newDate;
import {getUnitInfo} from "@/api/basic/standard";
export default {
  name: "outboundDetail",
  props: {},
@@ -134,25 +188,91 @@
  computed: {},
  data() {
    return {
        unitList:[],
        systemParams:{
            ID:0,
            configType:1,
            name:'',
        },
        startDate:{
            day:'01',
            time:'00:00'
        },
        timeModal:false,
      monthBoundObject:{
        keyWord:'',
        date:getPreviousMonth(),
        date:getCurrentMonth(),
      },
        startPickerOptions:{
            start:'00:00',
            step:'00:30',
            end:'23:59'
        },
      tableList: {},
      showcol: [],
      pickerOptions: {
        disabledDate(time) {
          return time.getTime() > formatTime(getPreviousMonth());
          return time.getTime() > formatTime(getCurrentMonth());
        },
      },
      isTableOneLoading: false,
    }
  },
  created() {
    this.setTable()
    this.getData()
    this.setTable();
    this.getData();
    this.querySystemConfig();
      this.getUnitInfo();
  },
  methods: {
      async getUnitInfo(){
          const { code,data }=await getUnitInfo();
          if(code===200){
              this.unitList=data;
          }
      },
      async querySystemConfig(){
          const params={configType:1};
          const {code,data}=await getSystemConfigApi(params);
          if(code===200){
              if(data.val){
                  this.systemParams.ID=data.id;
                  this.systemParams.name=data.name;
                  this.startDate.day=data.val.split("-")[0];
                  this.startDate.time=data.val.split("-")[1];
                  //this.monthBoundObject.date=this.$moment(this.monthBoundObject.date).format('yyyy-MM')+'-'+this.startDate.day
              }
          }
      },
      handlerClose(){
        this.timeModal=false;
        this.$refs.sysFormRef.resetFields();
      },
      async saveStartDate(){
        const params={...this.systemParams,val:this.startDate.day+'-'+this.startDate.time};
        const {code} =await saveSystemConfigApi(params);
        if(code===200){
            this.$message.success('配置成功');
            this.querySystemConfig();
            this.timeModal=false;
        }else{
            this.$message.error('配置失败');
        }
      },
     // 下载
     downHttpClick: _.debounce(function(){
      downloadMonthStats({
          date:this.monthBoundObject.date,
          keyword: this.monthBoundObject.keyWord,
          page: this.pagerOptions.currPage,
          pageSize: this.pagerOptions.pageSize
      }).then(res => {
        if (res) {
          FileSaver.saveAs(res, '月度统计报表.xlsx');
          this.$message.success("下载成功!");
        }
      })
    }, 1000),
    getUnitValue(list,val,num,unit){
      let  string='--'
      if(list){
@@ -178,8 +298,8 @@
        showcol: this.showcol,
        allcol: [],
        tableColumn: this.setTableColumn(this.showcol)
      }
      let allcol = []
      };
      let allcol = [];
      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
        if (!this.tableList.tableColumn[i].default) {
          const label = this.tableList.tableColumn[i].label
@@ -204,16 +324,17 @@
          isShowColumn: true,
          default: true
        },
      ]
      ];
      return tableColumn
    },
    selTableCol(val) {
      this.showcol = val
      this.showcol = val;
      this.tableList.tableColumn = this.setTableColumn(val)
    },
    // 库存报表跳转请求数据
    async getData() {
      this.isTableOneLoading = true;
      //this.monthBoundObject.date=this.$moment(this.monthBoundObject.date).format('yyyy-MM')+'-'+this.startDate.day;
        await getmonthStats({
          date:this.monthBoundObject.date,
          keyword: this.monthBoundObject.keyWord,