<template>
    <div>
      <el-breadcrumb separator=">">
        <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
        <el-breadcrumb-item>
          <a href="#">基础信息管理</a>
        </el-breadcrumb-item>
        <el-breadcrumb-item>
          <a href="/base/wishInfo">心愿互换记录</a>
        </el-breadcrumb-item>
      </el-breadcrumb>
      <el-divider></el-divider>
      <!--
        要resetFields起作用，必须配置:model和prop
      -->
      <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
        <el-form-item label="流水号" prop="num">
          <el-input type="text" size="mini" v-model="queryModel.num"></el-input>
        </el-form-item>
        <el-form-item label="作品" prop="wishInfoTitle">
          <el-input type="text" size="mini" v-model="queryModel.wishInfoTitle"></el-input>
        </el-form-item>
        <el-form-item label="作品类别" prop="category">
          <el-select v-model="queryModel.category" placeholder="请选择" size="mini">
              <el-option
              v-for="item in categoryList"
              :key="item.value"
              :label="item.name"
              :value="item.value">
              </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="爱心人士电话" prop="phone">
          <el-input type="text" size="mini" v-model="queryModel.phone"></el-input>
        </el-form-item>
        <el-form-item>
          <el-button
            type="primary"
            size="mini"
            icon="ios-search"
            @click="changePage(1)"
            :loading="loading"
          >查询</el-button>&nbsp;
          <el-button
            type="info"
            size="mini"
            style="margin-left: 8px"
            @click="handleReset('queryForm')"
          >重置</el-button>&nbsp;
        </el-form-item>
      </el-form>
      <el-divider></el-divider>
      <el-row class="button-group">
        <el-button
          type="primary"
          size="small"
          plain
          icon="el-icon-remove"
          :disabled="multipleSelection.length==0"
          @click="handleBatchDelete"
        >删除选中项</el-button>
      </el-row>
      <el-table
        :data="tableData"
        style="min-height:400px;"
        v-loading="loading"
        stripe
        @sort-change="sortChange"
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column
          prop="num"
          label="流水号"
          width="150"
        ></el-table-column>
        <el-table-column
          prop="categoryN"
          label="作品类别"
        ></el-table-column>
        <el-table-column
          prop="wishInfoTitle"
          label="作品名"
        ></el-table-column>
        <el-table-column
          prop="regUserName"
          label="爱心人士"
        ></el-table-column>
        <el-table-column
          prop="regUserPhone"
          label="爱心人士电话"
          width="150"
        ></el-table-column>
        <el-table-column
          prop="studentName"
          label="学生姓名"
        ></el-table-column>
        <el-table-column  prop="isSpot"  label="是否现场互换心愿">
            <template slot-scope="{row}">
                <span v-if="row.isSpot">是</span>
                <span v-else>否</span>
          </template>
        </el-table-column>
        <el-table-column
          prop="deliveryTime"
          label="发货时间"
          width="150"
        ></el-table-column>
        <el-table-column
          prop="completionTime"
          label="完成时间"
          width="150"
        ></el-table-column>
        <el-table-column  prop="status"  label="互换状态" width="120">
            <template slot-scope="{row}">
                <!-- <span v-if="row.status=='0'">互换中</span>
                <span v-else-if="row.status=='1'" style="color:#67C23A">已完成</span> -->
                <el-select v-model="row.status" placeholder="请选择" size="mini" @change="handleChange(row.id,$event)">
                    <el-option
                    v-for="item in statusList"
                    :key="item.value"
                    :label="item.name"
                    :value="item.value">
                    </el-option>
                </el-select>
            </template>
        </el-table-column>
        <el-table-column label="操作" width="200" fixed="right">
          <template slot-scope="{row}">
            <el-button size="mini" type="warning" @click="handleEdit(row)">详情</el-button>
            <el-button size="mini" type="danger" @click="handleDelete(row)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination
        :current-page.sync="pageIndex"
        :total="totalElements"
        :page-sizes="pageSizeList"
        @current-change="changePage"
        @size-change="pageSizeChange"
        layout="total, sizes, prev, pager, next, jumper"
      ></el-pagination>
      <wishInfoUserRecord-detail
        v-if="showModal"
        ref="userDetail"
        :businessKey="businessKey"
        :title="modalTitle"
        @close="onDetailModalClose"
      ></wishInfoUserRecord-detail>
    </div>
  </template>
  <script>
  import Constant from "@/constant";
  import wishInfoUserRecordDetail from "./wishInfoUserRecord-detail";
  import wishInfoUserRecordApi from "@/api/base/wishInfoUserRecord";
  import dataDictionaryApi from "@/api/sys/dataDictionary";
  
  export default {
    name: 'regUserList',
    data() {
      var self = this;
  
      return {
        queryModel: {
          wishInfoTitle: "",
          num:"",
          phone:"",
          category:"",
        },
        loading: false,
        tableData: [],
        pageIndex: 1,
        pageSize: 10,
        totalPages: 0,
        totalElements: 0,
        field: "",
        direction: "",
        pageSizeList: [10, 20, 30],
        multipleSelection: [],
        modalTitle: "",      
        businessKey: "",
        showModal: false,
        dialogFormVisible:false,
        categoryList:[],
        statusList:[
          {
            "name":"互换中",
            "value":"0",
          },
          {
            "name":"已完成",
            "value":"1",
          }
        ],
        props: {
          // 配置项（必选）
          value: "id",
          label: "name",
          children: "children"
        },
      };
    },
    created() {
    dataDictionaryApi.findByCatalogName({catalogName: "心愿类型",})
      .then((response) => {
          var jsonData = response.data;
          this.categoryList = jsonData.data;
    });
  },
    methods: {
      changePage(pageIndex) {
        var self = this;
  
        console.log(pageIndex);
  
        self.pageIndex = pageIndex;
        var formData = new FormData();
  
        formData.append("pageIndex", self.pageIndex);
        formData.append("pageSize", self.pageSize);
        formData.append("wishInfoTitle", self.queryModel.wishInfoTitle);

        formData.append("phone", self.queryModel.phone);
        formData.append("num", self.queryModel.num);
        formData.append("category", self.queryModel.category);
  
        self.loading = true;
  
        wishInfoUserRecordApi.pageList(formData).then(function(response) {
          self.loading = false;
  
          var jsonData = response.data;
  
          if(jsonData.result){
            var pageInfo = jsonData.data;
  
            self.tableData = pageInfo.data;
            self.totalPages = pageInfo.totalPages;
            self.totalElements = pageInfo.recordsTotal;
          }
          else {
            self.$message({
                message: jsonData.message + "",
                type: "warning"
              });
          }
        }).catch((error)=>{
          self.loading = false;
        });
      },
      pageSizeChange(pageSize) {
        this.pageSize = pageSize;
      },
      sortChange(data) {
        this.field = data.column.field;
        this.direction = data.order == "ascending" ? "asc" : "desc";
  
        this.changePage(this.pageIndex);
      },
      handleSelectionChange(val) {
        this.multipleSelection = val;
      },
      handleReset(name) {
        this.$refs[name].resetFields();
      },
      handleAdd() {
        var self = this;
        
        self.modalTitle = "新增";
        self.businessKey = "";
        self.showModal = true;
      },
      handleEdit(record) {
        var self = this;
        
        self.modalTitle = "详情";
        self.businessKey = record.id;
        self.showModal = true;
      },
      handleDelete(record) {
        var self = this;
  
        this.$confirm("是否确认删除？", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
            wishInfoUserRecordApi.remove(record.id).then(function(response) {
            var jsonData = response.data;
  
            if (jsonData.result) {
              // var index = self.tableData.indexOf(record);
              // self.tableData.splice(index, 1);
              self.changePage(self.pageIndex);
  
              self.$message({
                type: "success",
                message: "删除成功!"
              });
            }
          });
        });
      },
      handleBatchDelete() {
        var self = this;
  
        var idList = this.multipleSelection.map(record => {
          return record.id;
        });
  
        this.$confirm("是否确认删除选中项？", "提示", {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
            wishInfoUserRecordApi.batchRemove(idList).then(function(response) {
            var jsonData = response.data;
  
            if (jsonData.result) {
              self.changePage(self.pageIndex);
  
              self.$message({
                type: "success",
                message: "删除成功!"
              });
            }
          });
        });
      },
      handleChange(id,val){
        var self = this;
        var formData = new FormData();
  
        formData.append("id", id);
        formData.append("status", val);

        self.loading = true;

        wishInfoUserRecordApi.changeStatus(formData).then(function(response) {
          self.loading = false;

          var jsonData = response.data;

          if(jsonData.result){
            self.changePage(self.pageIndex);
            self.$message({
                type: "success",
                message: "修改成功!"
            });
          }
          else {
            self.$message({
                message: jsonData.message + "",
                type: "warning"
            });
          }
        }).catch((error)=>{
          self.loading = false;
        });
      },
      onDetailModalClose(refreshed) {
      this.showModal = false;

      if(refreshed) {
        this.changePage(this.pageIndex);
      }
    },
    },
    mounted: function() {
      var self = this;
      this.changePage(1);
    },
    components: {
      "wishInfoUserRecord-detail": wishInfoUserRecordDetail,
    }
  };
  </script>
  <style lang="scss" scoped>
  .el-breadcrumb {
    margin: 10px;
    line-height: 20px;
  }
  
  .el-divider {
    margin: 5px 0;
  }
  
  .demo-form-inline {
    margin-left: 10px;
    text-align: left;
  }
  
  .button-group {
    padding: 10px;
    text-align: left;
  }
  </style>