<template>
  <div class="pagex">
    <div class="section-page">
      <!--搜索区-->
      <el-form :inline="true" :model="formParam" ref="formParam" label-width="80px">
        <el-form-item label="账单号" prop="bill_sn">
          <el-input v-model="formParam.bill_sn" placeholder="请输入账单号" @keyup.enter.native="submit" clearable></el-input>
        </el-form-item>
        <el-form-item label="型号" prop="goods_name">
          <el-autocomplete v-model="formParam.goods_name" :trigger-on-focus="false" @keyup.enter.native="onSubmit" :fetch-suggestions="querySearchAsync" placeholder="请输入型号" clearable></el-autocomplete>
        </el-form-item>
        <el-form-item label="创建时间" prop="create_time">
          <el-date-picker v-model="formParam.create_time" align="right" type="date" placeholder="请选择创建时间" value-format="yyyy-MM-dd"></el-date-picker>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="onSubmit">搜索</el-button>
          <el-button @click="resetForm('formParam')">重置</el-button>
        </el-form-item>
      </el-form>
      <!--操作区-->
      <div class="operation-area row verCenter bothSide">
        <div class="operation-button row verCenter">
          <el-button type="primary" @click="exportVerifiedBill()">导出账单</el-button>
        </div>
      </div>
      <!--列表区-->
      <div class="data-box">
        <el-table :data="list" border max-height="600" @selection-change="handleSelectionChange">
          <el-table-column type="selection" width="40" align="center" fixed></el-table-column>
          <el-table-column type="index" label="序号" width="50" align="center" fixed></el-table-column>
          <el-table-column prop="bill_sn" label="账单号" width="120" :show-overflow-tooltip="true" align="center">
            <template slot-scope="scope">
              <el-link type="primary" :underline="false" @click="$router.push({path: '/reconciledBillDetail', query: {bill_id: scope.row.bill_id}})" style="font-size: 12px;">{{ scope.row.bill_sn }}</el-link>
            </template>
          </el-table-column>
          <el-table-column prop="bill_name" label="账单名称" min-width="170" :show-overflow-tooltip="true" align="center"></el-table-column>
          <el-table-column prop="total_amount" label="应付总金额" width="120" :show-overflow-tooltip="true" align="center"></el-table-column>
          <el-table-column prop="unpaid_amount" label="未付总金额" width="120" :show-overflow-tooltip="true" align="center"></el-table-column>
          <el-table-column prop="paid_amount" label="已付总金额" width="120" :show-overflow-tooltip="true" align="center"></el-table-column>
          <el-table-column prop="paying_amount" label="付款中总金额" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
          <el-table-column prop="contact_name" label="对接人" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
          <el-table-column prop="create_name" label="创建人" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
          <el-table-column prop="create_time" label="创建时间" width="160" :show-overflow-tooltip="true" align="center"></el-table-column>
          <el-table-column prop="create_type" label="创建方式" width="80" :show-overflow-tooltip="true" align="center"></el-table-column>
        </el-table>
        <el-pagination layout="total, sizes, prev, pager, next, jumper" :page-sizes="[10, 20, 50, 100, 200]" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"></el-pagination>
      </div>
    </div>
    <Menu></Menu>
  </div>
</template>
<script>
import Vue from 'vue';
import Menu from "@/components/menu.vue";
import {Autocomplete, Button, DatePicker, Descriptions, DescriptionsItem, Dialog, Divider, Dropdown, DropdownItem, DropdownMenu, Form, FormItem, Input, Link, Message, MessageBox, Option, Pagination, Popover, Select, Table, TableColumn, Tag, Tooltip} from 'element-ui'
import {NODE_ENVS} from "@/ajax";
import Tool from "@/tool";

Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm;
Vue.use(Button).use(Link).use(Form).use(Select).use(Option).use(Input).use(FormItem).use(Dialog).use(Tooltip).use(Autocomplete).use(Popover).use(Tag).use(Divider);
Vue.use(DatePicker).use(Dropdown).use(DropdownMenu).use(DropdownItem).use(TableColumn).use(Table).use(Pagination).use(Descriptions).use(DescriptionsItem);
export default {
  name: "reconciledBill",
  data() {
    return {
      multipleSelection: [],
      total: 0,
      page: 1,
      limit: 10,
      list: [],
      formParam: {
        bill_sn: '',
        goods_name: '',
        create_time: ''
      }
    };
  },
  created() {
    this.getData()
  },
  methods: {
    getData() {
      var params = Object.assign({}, this.formParam, {page: this.page, limit: this.limit});
      this.$http('GET', "/api/bill/getVerifiedBillList", params).then(res => {
        if (res.code === 0) {
          this.list = res.data.list || [];
          this.total = Number(res.data.total) || 0;
        } else {
          this.$message({
            message: res.msg,
            type: 'error'
          });
        }
      })
    },
    /**
     * 型号监听
     * @param queryString
     * @param cb
     */
    querySearchAsync(queryString, cb) {
      if (!queryString) {
        cb([]);
        return;
      }
      this.$http('GET', "/api/search/getspu", {spu_name: queryString}).then(res => {
        if (res.code == 0 && res.data.list?.length) {
          const arr = res.data.list.map(item => ({
            value: item.spu_name
          }));
          cb(arr);
        } else {
          cb([]);
        }
      }).catch(() => {
        cb([]);
      });
    },
    /**
     * 搜索
     */
    onSubmit() {
      this.page = 1;
      this.getData();
    },
    /**
     * 重置表单
     * @param formName
     */
    resetForm(formName) {
      this.formParam.date = '';
      this.$refs[formName].resetFields();
    },
    /**
     * 列表分页条数筛选监听
     * @param val
     */
    handleSizeChange(val) {
      this.limit = val;
      this.getData();
    },
    /**
     * 列表分页输入页码监听
     * @param val
     */
    handleCurrentChange(val) {
      this.page = val;
      this.getData();
    },
    /**
     * chebox 选择监听
     * @param val
     */
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    /**
     * 已对账账单-导出(待采购系统确认)
     */
    exportVerifiedBill() {
      let bill_id = this.multipleSelection.map(item => item.bill_id).join(',');
      let url = NODE_ENVS + '/api/bill/exportVerifiedBill?bill_id=' + bill_id + '&token=' + Tool.getCookie('token');
      Tool.openNewWindow(url);
    }
  },
  components: {
    Menu
  }
};
</script>
<style scoped>

</style>