<template>
  <div>
    <basic-container v-if="show">
      <avue-crud
        ref="crud"
        :option="option"
        :data="data"
        :page.sync="page"
        @search-change="searchChange"
        :search.sync="search"
        :table-loading="loading"
        @on-load="onLoad"
        @row-update="rowUpdate"
        @refresh-change="refreshChange"
        :cell-style="cellStyle">
        <template slot-scope="scope" slot="lockingQuantity">
          <span v-if="Number(scope.row.lockingQuantity) > 0" style="color: #409EFF;cursor: pointer" @click.stop="viewCell(scope.row,scope.index)">{{ scope.row.lockingQuantity }}</span>
          <span v-else>{{ scope.row.lockingQuantity }}</span>
        </template>
        <template slot-scope="{row,index}" slot="menu">
          <el-button
            type="text"
            size="small"
            @click="rowCell(row,index)"
          >{{ row.$cellEdit ? '保存' : '修改' }}
          </el-button>
          <el-button
            type="text"
            size="small"
            @click="deletePrice(row,index)"
          >删除
          </el-button>
        </template>
        <template slot="menuLeft">
          <el-button
            type="primary"
            size="small"
            icon="el-icon-plus"
            @click="excelBox = !excelBox"
          >导入
          </el-button>
          <el-button
            type="success"
            icon="el-icon-download"
            size="small"
            @click="derivation()"
          >下载模板
          </el-button>
          <el-button
            type="info"
            icon="el-icon-printer"
            size="small"
            :loading="exportLoading"
            @click.stop="statement"
          >报表打印
          </el-button>
        </template>
      </avue-crud>
      <el-dialog title="导入库存"
                 append-to-body
                 :visible.sync="excelBox"
                 :close-on-click-modal="false"
                 width="555px">
        <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter"/>
      </el-dialog>
    </basic-container>
    <report-dialog
      :switchDialog="switchDialog"
      :searchValue="statementData"
      :reportName="'国内贸易-库存账'"
      @onClose="onClose()"
    ></report-dialog>
  </div>
</template>
<script>
import option from "./configuration/mainList.json"
import {deleteTemplate,customerList,typeSave} from "@/api/basicData/inventoryAccount"
import {getToken} from "@/util/auth";
import { defaultDate } from "@/util/date";
import reportDialog from "@/components/report-dialog/main";

export default {
  components:{
    reportDialog
  },
  data() {
    return {
      data: [],
      search:{},
      loading: false,
      exportLoading:false,
      switchDialog:false,
      statementData: {},
      excelForm: {},
      excelOption: {
        submitBtn: false,
        emptyBtn: false,
        column: [
          {
            label: '导入数据',
            prop: 'excelFile',
            type: 'upload',
            drag: true,
            loadText: '导入数据中，请稍等',
            span: 24,
            propsHttp: {
              res: 'data'
            },
            tip: '请上传 .xls,.xlsx 标准格式文件',
            action: "/api/blade-stock/stockgoods/import-price"
          }
        ]
      },
      excelBox: false,
      option: option,
      page: {
        pageSize: 10,
        pagerCount: 5,
        total: 0,
        pageSizes: [10,50,100,200,300]
      },
      show: true,
      params: {
        corpId: null,
        itemId: null
      },
    }
  },
  created() {
    // this.search.createTime = defaultDate(1)
    let i = 0;
    this.option.column.forEach(item => {
      if (item.search) i++
    })
    if (i % 3 !== 0){
      const num = 3 - Number(i % 3)
      this.option.searchMenuSpan = num * 8;
      this.option.searchMenuPosition = "right";
    }
  },
  methods: {
    cellStyle() {
      return "padding:0;height:40px;";
    },
    derivation() {
      this.$confirm("是否下载模板?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        window.open(`/api/blade-stock/stockgoods/export-template?${this.website.tokenHeader}=${getToken()}`);
      });
    },
    uploadAfter(res, done, loading, column) {
      console.log(res)
      window.console.log(column);
      this.excelBox = false;
      this.page.currentPage = 1;
      if (res) {
        this.$message.warning(res)
      } else {
        this.$message.success('导入成功')
      }
      this.onLoad(this.page);
      loading()
      done();
    },
    rowCell(row, index) {
      this.$refs.crud.rowCell(row, index)
    },
    deletePrice(row,index){
      if (row.id){
        this.$confirm("确定将选择数据删除?", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
          return deleteTemplate(row.id);
        }).then(() => {
          this.$message({
            type: "success",
            message: "操作成功!"
          });
          this.page.currentPage = 1;
          this.onLoad(this.page);
        })
      }
    },
    //点击搜索按钮触发
    searchChange(params, done) {
      if (params.createTime) {
        params.createStartTime = params.createTime[0]+ " " + "00:00:00"
        params.createEndTime = params.createTime[1]+ " " + "23:59:59"
        delete params.createTime;
      }
      this.page.currentPage = 1;
      this.onLoad(this.page, params);
      done()
    },
    onLoad(page, params = {}) {
      if (this.search.createTime && this.search.createTime.length > 0) {
        params = {
          ...params,
          createStartTime: this.search.createTime[0]+ " " + "00:00:00",
          createEndTime: this.search.createTime[1]+ " " + "23:59:59",
        }
        delete params.createTime;
      }
      let queryParams = Object.assign({}, params, {
        size: page.pageSize,
        current: page.currentPage,
      })
      this.loading = true;
      customerList(queryParams).then(res => {
        this.data = res.data.data.records
        this.page.total = res.data.data.total
      }).finally(() => {
        this.loading = false;
      })
    },
    rowUpdate(form, index, done) {
      typeSave(form).then(res => {
        this.$message({type: "success", message: form.id ? "修改成功!" : "新增成功!"});
        // this.page.currentPage = 1;
        // this.onLoad(this.page);
        //成功关闭此页面回到列表页
        // this.backToList()
      })
      done()
    },
    // 查看
    viewCell(row, index) {
      if (this.$store.getters.domStockDetail) {
        this.$alert("明细已存在,请保存关闭明细再进行操作", "温馨提示", {
          confirmButtonText: "确定",
          type: "warning",
          callback: action => {
            console.log(action);
          }
        });
      } else {
        this.params.corpId = row.corpId
        this.params.itemId = row.goodsId
        this.$router.$avueRouter.closeTag("/businessManagement/inventoryAccount/detail");
        this.$router.push({
          path: "/businessManagement/inventoryAccount/detail",
          query: {
            corpId: row.corpId,
            itemId: row.goodsId
          },
        });
      }
      // this.show = false;
    },
    statement() {
      this.statementData = {...this.search};
      if (this.statementData.createTime && this.statementData.createTime.length > 0) {
        this.statementData.createStartTime = this.statementData.createTime[0]+ " " + "00:00:00"
        this.statementData.createEndTime = this.statementData.createTime[1]+ " " + "23:59:59"
        delete this.statementData.createTime;
      }
      this.switchDialog = !this.switchDialog;
    },
    onClose(val) {
      this.switchDialog = val;
    },
    //列表刷新触发
    refreshChange() {
      this.data.forEach(item => {
        this.$refs.crud.toggleRowExpansion(item, false)
      })
      this.page.currentPage = 1;
      this.onLoad(this.page,this.search);
    },
  }
}
</script>
