<template>
  <el-dialog
    :title="dialogObj.title"
    :visible.sync="dialogObj.show"
  >
    <el-form ref="form" :model="form" label-width="120px">
      <el-form-item label="期数" v-if="!this.dialogObj.periodsId">
        <el-cascader
          :options="goodsList"
          :props="{value:'id',label:'name'}"
          @active-item-change="handleItemChange"
          @change="changePeriods"
        >
        </el-cascader>
      </el-form-item>
      <el-form-item label="老师">
        <el-select v-model="form.teacher_id" placeholder="请选择" filterable @change="selectName(teacherList,form.teacher_id)">
          <el-option
            v-for="(data,index) in teacherList"
            :key="index"
            :label="data.name"
            :value="data.id" >
          </el-option>
        </el-select>
      </el-form-item>
       <el-form-item label="班级名称">
        <el-input v-model="form.class_name" style="width:220px"></el-input>
      </el-form-item>
      <el-form-item label="最大学员">
        <el-input-number v-model="form.max_join_num"></el-input-number>
      </el-form-item>
      <el-form-item label="招生来源">
        <el-select v-model="form.source" placeholder="请选择" filterable>
          <el-option
            v-for="(data,index) in classSource"
            :key="index"
            :label="data.label"
            :value="data.value" >
          </el-option>
        </el-select>
      </el-form-item >
            <el-form-item label="班级二维码">
              <!--<el-input v-model="form.qr"></el-input>-->
              <el-upload
                action="/api/public/upload/zone"
                :http-request="uploadFile"
                :class="{disabled:!uploadShow}"
                :before-upload="beforeAvatarUpload"
                list-type="picture-card"
                :file-list="imageList"
                :on-success="handleAvatarSuccess"
                :on-remove="handleRemove">
                <i class="el-icon-plus"></i>
              </el-upload>
            </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
        <el-button @click="dialogObj.show = false">取 消</el-button>
        <el-button type="primary" @click="onSave">确 定</el-button>
      </span>
  </el-dialog>
</template>

<script>
  import {getTeacherListApi,getClassDetailApi,editClassApi,addClassApi,getPeriodsApi,getGoodsListApi,getPeriodsTeacherApi,uploadFileApi} from "../../service/api";
  import {GOODSTYPE,CLASSSOURCE} from '../../util/wordbook';
  export default {
    props:[
      'dialogObj'
    ],
    data(){
      let classSource=[];
      for (let x in CLASSSOURCE ) {
        classSource.push({label:CLASSSOURCE[x],value:Number(x)})
      }
      return{
        imageList:[],
        form:{
          teacher_id:'',
          max_join_num:'',
          class_name:"",
          source:"",
          qr:""
        },
        type:0,
        classSource:classSource,
        teacherList:[],
        exitTeacherList: [],
        goodsList: [],
        periods: {},
        uploadShow: true
      }
    },
    methods:{
      beforeAvatarUpload(){
        this.uploadShow = false
      },
      handleRemove(){
        this.uploadShow = true
      },
      handleAvatarSuccess(res) {
        this.imageList = [{name:res.data.url,url:process.env.IMAGE_URL_HEAD + res.data.url}]
      },
      uploadFile(a) {
        this.loading = true;
        this.$store.dispatch('setProgress',{type:'new',id:a.file.uid});
        this.fileUid = a.file.uid;
        uploadFileApi({file:a.file,type:'all'}).then(res=>{
          this.form.media_id = res.wechat_info ? res.wechat_info.media_id : '';
          this.imageList = [{name:res.url,url:process.env.IMAGE_URL_HEAD + res.url}];
          this.uploadShow = false;
          this.loading = false;
          this.$message({
            type: 'success',
            message: '上传成功!'
          });
        }).catch(()=>{
          this.loading = false;
        })
      },
      findDifferentArray(array1, array2){
        let newArray = [];
        array1.forEach((val)=>{
            let index = array2.findIndex((item)=>{
                return item.teacher_id === val.id
            })
            if (index === -1) {
              newArray.push(val)
            }
        })
        return newArray
      },
      getTeacher(){
        getTeacherListApi({limit:100,status:0}).then(res=>{
            this.teacherList = res.list
        });
      },
      getTeacherByPeriods(){
          getTeacherListApi({limit:100,status:0}).then(res=>{
              this.teacherList = res.list
        })
      },
      initPage(){
        // 1为编辑
        this.periods = this.dialogObj.periods
        switch (this.dialogObj.type) {
          case 0:
            if(!this.dialogObj.periodsId){
              this.getPeriodList();
            }
            this.form = {
              teacher_id:'',
              max_join_num:'',
              source:'',
              qr:""
            };
            this.type = 0;
            this.uploadShow = true
            this.getTeacher();
            break;
          case 1:
          this.type = 1;
            getClassDetailApi(this.dialogObj.id).then(res=>{
              this.form = {
                teacher_id: parseInt(res.teacher_id),
                max_join_num:res.max_join_num,
                class_name:res.class_name,
                source:res.source,
              };
              if(res.qr){
                this.form.qr = res.qr
                this.imageList = [{name:res.qr,url:res.qr}];
              }
              this.form.media_id = res.media_id ? res.media_id : '';
              this.uploadShow = !res.qr
              console.log(this.uploadShow)
              this.getTeacher();
            })
        }
      },
      getPeriodList(){
        getGoodsListApi().then(res=>{
          res.list.forEach(i=>{
             i.name = '[' + GOODSTYPE[i.goods_type] + ']' + '[' +i.current_price / 100 + '元]' + i.name
            i.children = [];
          });
          this.goodsList = res.list;
          if(!this.periods) {
            getPeriodsApi({goods_id:this.goodsList[0].id}).then(res=>{
              res.list.forEach(i=>{i.name = i.title});
              this.goodsList[0].children = res.list;
              this.periods = res.list[0]
            })
          }
        });
      },
      onSave(){
        if(this.imageList.length > 0){
            this.form.qr = this.imageList[0].url;
        }
        let json = {
          max_join_num:String(this.form.max_join_num),
          teacher_id:String(this.form.teacher_id),
          source : this.form.source,
          class_name:this.form.class_name,
          media_id:this.form.media_id
        };
        if(this.form.qr){
          json.qr = this.form.qr
        }
        console.log(json)
        switch (this.dialogObj.type) {
          case 0:
            let id = this.dialogObj.periodsId ? this.dialogObj.periodsId : this.periods.id;
            addClassApi(id,json).then(res=>{
              this.$message({
                type: 'success',
                message: '添加成功!'
              });
              this.$emit("reflash", this.periods);
              this.dialogObj.show = false;
            });
            break;
          case 1:
            editClassApi(this.dialogObj.id,json).then(res=>{
              this.$message({
                type: 'success',
                message: '修改成功!'
              });
              this.$emit("reflash",this.periods);
              this.dialogObj.show = false;
            })
        }
      },
      handleItemChange(val){
        getPeriodsApi({goods_id:val[0]}).then(res=>{
          res.list.forEach(i=>{i.name = i.title});
          this.goodsList.find(i=>{return i.id === val[0]}).children = res.list
        })
      },
      changePeriods(data){
        if(data.length>1){
          let nowGoods = this.goodsList.find(i=>{return i.id === data[0]});
          this.periods = nowGoods.children.find(i=>{return i.id === data[1]});
          this.getTeacherByPeriods()
        }
      },
      selectName(val,id){
          let filterVal=val.filter(function(item,i){
                 return item.id == id
              });
              this.form.class_name=filterVal[0].name+"一班";
      }
    },
    watch:{
      'dialogObj.show'(value){
        if(value){
          this.initPage()
        }
      }
    }
  }
</script>

<style scoped>
.qr-img {
    width: 148px !important;
    border: none !important;
    border-radius: 0 !important;
  }
.disabled .el-upload--picture-card {
    display: none !important;
  }
</style>
