<template>
  <div>
    <Toptitle :title="$route.query.type==1?'码单编辑':$route.query.type == 2?'码单查看':'码单新增'">
      <slot name="titleButton" class="btn_set">
          <div class="btn_set">
           <Upload
              :headers="headers"
              name="your_file"
              :data="uploadData"
              :show-upload-list="false"
              :on-error="uploadError"
              :on-success="uploadSuccess"
              :before-upload="handleBeforeUpload"
              :action="$store.state.ip + '/api/cut_order_import'"
              style="margin-right: 10px"
              v-if="$route.query.type != 2"
            >
              <Button style="margin-left:10px" type="primary">导入</Button>
            </Upload>
        <Button style="margin-left:10px" @click="$router.go(-1)">返回</Button>
        <Button style="margin-left:10px" v-if="$route.query.type != 2" @click="saveData">保存</Button>
        </div>
      </slot>
    </Toptitle>
    <div class="weight_memo_info_content">
      <div class="form_content">
        <Form :label-width="85" :model="formData">
          <FormItem label="项目编码:">
               <span  v-if="this.$route.query.type == 2">{{formData.project_number}}</span>
            <Input size='small' v-model="formData.project_number" v-else placeholder="请输入项目编码"/>
          </FormItem>
          <FormItem label="项目名称:">
           <span  v-if="this.$route.query.type == 2">{{formData.product_name}}</span>
            <Input v-else size='small' v-model='formData.product_name' placeholder="请输入项目名称"/>
          </FormItem>
          <FormItem label="项目简称:">
             <span  v-if="this.$route.query.type == 2">{{formData.project_abbreviation}}</span>
            <Input v-else size='small' v-model="formData.project_abbreviation" placeholder="请输入项目简称"/>
          </FormItem>
          <FormItem label="下单日期:">
            <span v-if="this.$route.query.type == 2">{{formData.start_time}}</span>
            <DatePicker
              type="date"
              v-model="formData.start_time"
              placeholder="年/月/日"
              v-else
              size='small'
            ></DatePicker>
          </FormItem>
        </Form>
      </div>
      <Card v-for="(item,index) in infoNumber" :key="index">
          <div class="table_header">
            <div class="table_header_left">
              <span>图号：{{item.url_number}}</span>
              <span>产品名称：{{item.product_title}}</span>
              <span :style="item.state == 1?'':'color:red;'"
                    v-if="$route.query.type != 3"
                    >{{item.state == 0?'未匹配':item.state == 1?'匹配完成':'匹配中'}}</span>
            </div>
            <div class="table_header_right">
              <Button type="primary" size="small" :disabled="item.state==0?false:true" @click="del(item,index)" v-if="$route.query.type!=2">删除</Button>
              <div @click="show(item,index)" style="cursor: pointer;"><span style="font-size:16px;">{{item.showType?'收缩':'展开'}}</span><Icon type="md-arrow-dropright"  ref="ico" class="ico"/></div>
              <span>总计{{item.total}}条数据</span>
            </div>
          </div>
          <div v-if="item.showType">
          <div>
            <Topsearch :list="list" @searchData="search_data" />
          </div>
          <div v-for="(_item,_index) in tableData" :key="_index">
              <div class="mate_info"><div>匹配信息：{{_item.value}} {{_item.number}}组</div><span>总计{{_item.children.length}}条数据</span></div>
              <Table :columns="tableColumns" border :data="_item.children">
                  <template slot="state" slot-scope="{row}">
                       <span>{{row.state ==0?'未匹配':row.state ==2?'匹配完成':'匹配中'}}</span>
                  </template>
              </Table>
          </div>
        </div>
      </Card>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      formData: {
        start_time: null,
        project_number:'',
        project_abbreviation:'',
        product_name:'',
        id:''
      },
      tableData:[],
      del_id:[],
      searchData: {},
      tableColumns:[
            { title: "序号", type:'index', align: "center", minWidth: 140 },
              { title: "部件名称", key: "part_title", align: "center", minWidth: 140 },
                { title: "行号", key: "line_number", align: "center", minWidth: 140 },
                  { title: "木皮1", key: "veneer_one", align: "center", minWidth: 140 },
                    { title: "原材料", key: "material", align: "center", minWidth: 140 },
                      { title: "木皮2", key: "veneer_two", align: "center", minWidth: 140 },
                        { title: "毛料尺寸", key: "wollens_size", align: "center", minWidth: 140 },
                         { title: "毛料合并的行号", key: "wool_line", align: "center", minWidth: 140 },
                          { title: "原料数量", key: "material_num", align: "center", minWidth: 140 },
                            { title: "精裁尺寸", key: "vacuum_size", align: "center", minWidth: 140 },
                              { title: "零部件数量", key: "part_num", align: "center", minWidth: 140 },
                                { title: "贴皮面积", key: "treatment_area", align: "center", minWidth: 140 },
                                { title: "精裁面积", key: "vacuum_area", align: "center", minWidth: 140 },
                                { title: "工艺要求", key: "technological_requirements", align: "center", minWidth: 140 },
                                { title: "匹配状态", key: "state", align: "center", minWidth: 140,slot:'state' },
      ],
      headers: { Authorization: localStorage.getItem("token") },//请求头
      //进入页面需要获取的数值
      infoNumber:[],
      part_title:[],
      cut_size:[],
      cut_order_id:'',
      cut_order_product_id:''
    };
  },
  created(){
      if(this.$route.query.type == 1||this.$route.query.type == 2){
          this.axios.get('/api/cut_order_detail',{params:{cut_order_id:this.$route.query.cut_order_id,order_type:1}}).then(res=>{
             this.formData.project_number = res.data.project_number;
             this.formData.product_name = res.data.project_name;
             this.formData.project_abbreviation = res.data.abbreviation;
             this.formData.start_time = this.func.replaceDate(res.data.crt_time);
             this.infoNumber = [...res.data.children];
             console.log(this.infoNumber)
             this.cut_order_id = res.data.cut_order_id
          })
      }
  },
  mounted(){
  },
  computed: {
    list() {
      return [
      {
          title: "部件名称",
          name: "Select",
          value: "",
          multiple: true,
          placeholder: "请选择",
          serverName: "part_title",
          optionName:'part_title',
          optionValue:'part_title',
          option: [
            ...this.part_title
          ]
      },
      {
          title: "精裁尺寸",
          name: "Select",
          value: "",
          placeholder: "请选择",
          serverName: "cut_size",
          optionName:'cut_size',
          optionValue:'cut_size',
          option: [
           ...this.cut_size
          ]
      },
      {
          title: "匹配状态",
          name: "Select",
          value: "",
          placeholder: "请选择",
          serverName: "state",
          option: [
            { label: "匹配中", value: 1 },
            { label: "未匹配", value: 0 },
            { label: "匹配完成", value: 2 },
          ]
      }
        ];
    },
    uploadData(){
        return {type:this.infoNumber.length==0?this.$route.query.type:4,
            project_number:this.formData.project_number
        }
    },
  },
  methods: {
      saveData(){
          if(!this.formData.project_number){
                this.$Message.warning('请填写项目编码！')
         }else{
          let date = new Date();
         if(!this.formData.start_time){
             this.formData.start_time = date
         }
      this.axios.get('/api/cut_order_save',{params:{
          project_name:this.formData.product_name,
          project_number:this.formData.project_number,   
          abbreviation:this.formData.project_abbreviation,
          crt_time:this.formData.start_time,
          id:this.cut_order_id,
          }}).then(res=>{
              if(res.code ==200){
                   this.$Message.success(res.msg)
               this.axios.post('/api/cut_order_del',{cut_order_product_id:this.del_id,order_type:1,cut_order_id:this.cut_order_id})
              }  
          });
         }
      },
      search_data(row){
                this.axios.post('/api/cut_order_open',{
              cut_order_product_id:this.cut_order_product_id,
              cut_order_id:this.cut_order_id,
              order_type:1,
              ...row
              }).then(res=>{
                  this.tableData=res.data.data;
              })
      },
      search(item){
          this.axios.post('/api/cut_order_open',{
              cut_order_product_id:item.cut_order_product_id,
              cut_order_id:this.cut_order_id,
              order_type:1
              }).then(res=>{
                  this.tableData=res.data.data;
                  this.part_title = res.data.part_title;
                  this.cut_size = res.data.cut_size;
                
              })
      },
      del(item,index){
            this.confirmDelete({
                content:'是否删除？',
                title:'码单删除',
                type:'primary',
                then:()=>{
                     this.infoNumber.splice(index,1)
                     this.del_id.push(item.cut_order_product_id) 
                },
                cancel:()=>{}
            })
      },
    initData() {

    },
    handleBeforeUpload() {},
     uploadError(err) {
      this.$Message.error(err.msg || "导入失败");
    },
    uploadSuccess(res) {
      if (res.code == 200) {
        this.$Message.success("导入成功");
        this.cut_order_id = res.data.cut_order_id;
        this.formData.project_number = res.data.project_number;
        this.formData.product_name = res.data.project_name;
         this.formData.project_abbreviation = res.data.abbreviation;
        this.formData.id = res.data.cut_order_id;
        this.formData.start_time =this.func.replaceDate(res.data.crt_time);
        console.log(this.formData.start_time)
        if(this.infoNumber.length == 0){
             this.infoNumber.push(res.data.children)
             this.infoNumber[0].showType = false
        }else{
            this.infoNumber.push(res.data.children);
        this.infoNumber.forEach((item,index)=>{
          if(item.cut_order_product_id == res.data.children.cut_order_product_id){
              this.infoNumber.pop();
              this.infoNumber.splice(index,1,res.data.children)
          }
        })}
      } else {
        this.$Message.warning(res.msg || "导入失败");
      }
      },
    show(item,index) {
        
        // item.showType = !item.showType
        this.infoNumber[index].showType = !this.infoNumber[index].showType
        if(item.showType){           //全部未展开
            this.infoNumber.forEach(_item=>{
           _item.showType = false;
        })
             document.getElementsByClassName('ico')[index].style.transform = 'rotate(90deg)'
             item.showType = true
             this.$forceUpdate();
             this.cut_order_product_id = item.cut_order_product_id;
            this.search(item)
        }else{    //展开其中一项
             this.infoNumber.forEach(_item=>{
           _item.showType = false;
        })
            document.getElementsByClassName('ico')[index].style.transform = 'rotate(0deg)'
            this.$forceUpdate();
        }
    },
  },
};
</script>
<style scoped lang='scss'>
.weight_memo_info_content{
    height: 700px;
    overflow: auto;
}
.form_content {
  margin-top: 10px;
  /deep/.ivu-form {
    display: flex;
    justify-content: flex-start;
    flex-wrap: wrap;
  }
  /deep/.ivu-form-item {
    display: inline-block;
    width: 250px;
  }
}
.table_header {
  display: flex;
  justify-content: space-between;
  .table_header_left{
      span{
          margin: 0 20px;
      }
  }
  .table_header_right {
      width: 240px;
    display: flex;
    justify-content: space-around;
  }
}
.mate_info{
    display: flex;
    justify-content: space-between;
    margin: 20px 0;
}
.ico{
   height:14px;
   transition: all 0.4s;
   vertical-align: middle;
}
/deep/ .ivu-card{
    border-radius: 15px;
    margin: 15px 0;
    background: rgb(236, 236, 236);
}
.btn_set{
    display: flex;
}
</style>