<template>
  <div class="sms">
    <el-form ref="searchFrom" :model="searchFrom" label-width="100px" inline size="small">
      <el-form-item label="用户ID">
        <el-input v-model="searchFrom.user_id" style="width: 80px"></el-input>
      </el-form-item>
      <!-- <el-form-item label="发货状态">
          <el-select filterable v-model="searchFrom.type" placeholder="请选择"  clearable>
            <el-option
              v-for="(data,index) in logisticsType"
              :key="index"
              :label="data.name"
              :value="data.value">
            </el-option>
          </el-select>
        </el-form-item> -->
      <el-form-item label="期数">
          <el-cascader
            :options="goodsList"
            :props="{value:'id',label:'name'}"
            @active-item-change="handleItemChange"
            @change="changePeriods"
            v-model="selectedGoods"
          >
          </el-cascader>
        </el-form-item>
        <el-form-item label="主题">
          <el-select filterable v-model="searchFrom.theme_id" placeholder="请选择"  clearable>
            <el-option
              v-for="(data,index) in themeList"
              :key="index"
              :label="data.name"
              :value="data.id">
            </el-option>
          </el-select>
        </el-form-item>
      <!-- <el-form-item label="期数id">
        <el-input v-model="searchFrom.periods_id" style="width: 120px"></el-input>
      </el-form-item> -->
      <el-form-item>
        <el-button type="primary" plain @click="getList">搜索</el-button>
        <el-button type="success" plain @click="reset">重置</el-button>
        <el-button v-if="!$store.state.readonly" type="primary" plain @click="downLoad()">excel模板下载</el-button>
        <el-button type="primary" plain @click="exportTable" v-if="$store.state.export">导出当前待发货</el-button>
      </el-form-item>
      <el-form-item v-if="$store.state.export">
        <el-upload
          :show-file-list="false"
          :onSuccess="fileSuccess"
          :headers="uploadHeader"
          :data="{param_token:param_token}"
          action="/api/admin/order/deliver/list/import"
        >
          <el-button type="success" plain>导入发货信息</el-button>
        </el-upload>
      </el-form-item>
    </el-form>
    <el-tabs v-model="searchFrom.type" type="card" @tab-click="handleClick">
      <el-tab-pane label="当前待发货" name="0"></el-tab-pane>
      <el-tab-pane label="所有待发货" name="1"></el-tab-pane>
      <el-tab-pane label="所有已发货" name="2"></el-tab-pane>
    </el-tabs>
    <el-table :data="deliverList" size="mini" style="width: 100%">
    <el-table-column
        width="220"
        className="f-c"
        label="用户">
        <template slot-scope="scope">
          <img class="avatar" :src="scope.row.user_avatar"/> {{scope.row.user_nickname}}<br>(ID:{{scope.row.user_id}})<br>手机:{{scope.row.user_mobile}}
        </template>
      </el-table-column>
      <el-table-column prop="address" label="收货地址">
        <template slot-scope="scope">
          {{scope.row.receive_name}}<br>
          {{scope.row.receive_mobile}}<br>
          {{scope.row.province_name}}{{scope.row.city_name}}{{scope.row.area_name}}{{scope.row.address}}
        </template>
      </el-table-column>
      <el-table-column prop="periods_title" label="期数名称">
      </el-table-column>
      <el-table-column prop="theme_name" label="主题">
      </el-table-column>
      <el-table-column prop="deliver_start_at" label="预计发货开始时间">
      </el-table-column>
      <el-table-column prop="deliver_end_at" label="预计发货结束时间">
      </el-table-column>
      <el-table-column prop="deliver_at" label="发货时间">
      </el-table-column>
      <el-table-column prop="status" label="物流状态">
        <template slot-scope="scope">
          {{scope.row.status|LogisticsStatusFil}}<br>
          <span v-if="searchFrom.type==2">名称:{{scope.row.express_name}}<br>单号:{{scope.row.express_no}}</span>
        </template>
      </el-table-column>
      <el-table-column width="150" label="操作" v-if="!$store.state.readonly" fixed="right">
        <template slot-scope="scope">
          <el-button  @click="editAddress(scope.row)"  plain type="info" size="mini">
                编辑收货地址
              </el-button>
        </template>
      </el-table-column>
    </el-table>
    <page :nowPage="nowPage" :total="total" @pageChange="onPageChange" @sizeChange="onSizeChange" />
    <address-dialog :dialogObj="dialogObj" @reflash="onUpdateAddress"></address-dialog>
  </div>
</template>

<script>
import page from "../framework/page";
import md5 from 'js-md5';
import addressDialog from "./dialog";
import {
  getDeliverListApi,
  getPeriodsApi,
  getGoodsListApi,
  getDefaultPeriodsApi,
  exportExcelApi,
  getThemeListApi
} from "../../service/api";
import {
  LogisticsStatus,
  GOODSTYPE 
} from "../../util/wordbook";

export default {
  name: "index",
  components: {
    page,
    addressDialog
  },
  data() {
    let singjson = {
      sing: "singsingenglish21000"
    };
    return {
      dialogObj: {
        show: false
      },
      adressDialog:false,
      searchFrom: {
        user_id: "",
        theme_id: "",
        periods_id:"",
        type:""
      },
      nowPage: 1,
      total: 0,
      limit: 10,
      deliverList:[],
      selectedGoods: [],
      secGoods:[],
      periodsId:null,
      goods_id:null,
      goodsList:[],
      themeList:[],
      param_token:md5(JSON.stringify(singjson)),
      uploadHeader:{token:localStorage.getItem('cc_token')},
      logisticsType:[{value:'0',name:'当前待发货 '},{value:'1',name:'所有待发货 '},{value:'2',name:'所有已发货 '}]
    };
  },
  filters: {
    LogisticsStatusFil(val){
     return LogisticsStatus[val]
    }
  },
  mounted() {
    this.init()
  },
  methods: {
    downLoad(){
      window.open('/static/待发货模板.xls')
    },
    handleClick(tab) {
          this.searchFrom.type = tab.name;
          this.getList();
        },
    editAddress(row) {
      // this.dialogObj={show:true}
      console.log(row)
      // if (!row || !row.province_name) {
      //   this.dialogObj.province = "";
      //   this.dialogObj.city = "";
      //   this.dialogObj.district = "";
      // } else {
      //   this.dialogObj.province = "";
      //     this.dialogObj.district = "";
      //     this.dialogObj.city = "";
      // }
      this.dialogObj.detail = row.address;
      this.dialogObj.receive_mobile = row.receive_mobile;
      this.dialogObj.receive_name =row.receive_name;
      this.dialogObj.province_name = '';
      this.dialogObj.city_name = "";
      this.dialogObj.district_name ='';
      this.dialogObj.id = row.id;
      this.dialogObj.show = true;
    },
    onUpdateAddress() {
      this.dialogObj.show = false;
      this.getList()
    },
    fileSuccess(){
      this.$message({
        message: '提交成功,请稍后刷新',
        type: 'success'
      });
      this.getList()
    },
    init(){
      this.getList()
      let json = {
          page: 1,
          limit: 100,
          goods_type:'1,2'
        };
        getThemeListApi({page: 1,limit: 100}).then(res=>{
          this.themeList = res.list
        })
        getGoodsListApi(json).then(res=>{
          console.log(res)
          res.list.forEach(i=>{
            i.name = '['+i.id+']'+'[' + GOODSTYPE[i.goods_type] + ']' + '[' +i.current_price / 100 + '元]' + i.name
            i.children = [];
          });
          this.goodsList = res.list;
          // this.initQuery();
        });
    },
    exportTable(){
        let json = {};
        if (this.searchFrom.user_id) {
          json.user_id = this.searchFrom.user_id
        }
        if (this.searchFrom.theme_id) {
          json.theme_id = this.searchFrom.theme_id
        }
        if (this.searchFrom.periods_id) {
          json.periods_id = this.searchFrom.periods_id
        }
        exportExcelApi('/api/admin/order/deliver/list/export',json)
      },
    initQuery(){
        let _query = this.$route.query;
        if (_query && _query.goods_id && _query.periods_id) { 
          this.goods_id = _query.goods_id;
          this.selectedGoods = [parseInt(_query.goods_id),parseInt(_query.periods_id)];
          getPeriodsApi({goods_id:this.selectedGoods[0],limit:100}).then(res=>{
            res.list.forEach(i=>{i.name = i.title});
            this.goodsList.find(i=>{return i.id === this.selectedGoods[0]}).children = res.list
            let nowGoods = this.goodsList.find(i=>{return i.id === this.selectedGoods[0]});
            this.periods = nowGoods.children.find(i=>{return i.id === this.selectedGoods[1]});
            console.log(this.periods)
          })
        } else {
          getDefaultPeriodsApi().then(res=>{
            console.log(res)
            // 
            if(res){
              this.goods_id = res.goods_id;
              this.selectedGoods = [parseInt(res.goods_id),parseInt(res.id)];
              getPeriodsApi({goods_id:this.selectedGoods[0],limit:100}).then(res=>{
                res.list.forEach(i=>{i.name = i.title});
                this.goodsList.find(i=>{return i.id === this.selectedGoods[0]}).children = res.list
                let nowGoods = this.goodsList.find(i=>{return i.id === this.selectedGoods[0]});
                this.periods = nowGoods.children.find(i=>{return i.id === this.selectedGoods[1]});
                this.teacher_id = '';
                console.log(this.periods)
                // this.getClassList()
              });
            }
          })
        }
        console.log(this.goodsList)
      },
    onPageChange(val){
      // console.log(val)
        this.nowPage = val;
        this.getList()
      },
      onSizeChange(val){
        this.limit = val;
        this.nowPage = 1;
        this.getList()
      },
      getList(){
        let json = {
        limit: this.limit,
        page: this.nowPage
        };
        if(this.searchFrom.user_id){
        json.user_id = this.searchFrom.user_id
        }
        if(this.searchFrom.theme_id){
        json.theme_id = this.searchFrom.theme_id
        }
        if(this.searchFrom.periods_id){
        json.periods_id = this.searchFrom.periods_id
        }
        if(this.searchFrom.type){
        json.type = this.searchFrom.type
        }
        
        getDeliverListApi(json).then((res)=>{
          this.deliverList = res.list
          this.total = res.total
          console.log(this.deliverList)
        })
      },
      reset(){
          this.searchFrom= {
          user_id: "",
          theme_id: "",
          periods_id:"",
          type:''
        }
        this.getList()
      },
      changePeriods(data){
        if(data.length>1){
          this.goods_id = data[0];
          let nowGoods = this.goodsList.find(i=>{return i.id === data[0]});
          this.periods = nowGoods.children.find(i=>{return i.id === data[1]});
          console.log(this.goodsList)
          console.log(this.periods)
          this.searchFrom.periods_id = this.periods.id
          // debugger
        }
      },
      handleItemChange(val){
        getPeriodsApi({goods_id:val[0],limit:100}).then(res=>{
          res.list.forEach(i=>{i.name = i.title});
          this.goodsList.find(i=>{return i.id === val[0]}).children = res.list
        })
      },
  }
};
</script>

<style scoped>
.sms {
  padding: 20px 0;
}
.el-button+.el-button{
  margin-left: 0;
  /* margin-top: 10px; */
}
.avatar {
  width: 50px;
  min-width: 50px;
  margin-right: 10px;
  height: 50px;

  border-radius: 50%;
}
</style>
<style>
.userInfo > div {
  display: flex;
  flex-flow: row nowrap;
  justify-content: flex-start;
  align-items: center;
}
.f-c > .cell {
  display: flex !important;
  flex-flow: row;
  justify-content: flex-start;
  align-items: center;
}
</style>