<template>
  <div>
    <el-table :data="list" :row-key="(row) => row.id">
      <el-table-column label="默认" width="50" align="center" prop="isDefault">
        <template slot-scope="scope">
          <el-checkbox @change="(e) => changeDefault(e, scope.$index)"
            v-model="scope.row.isDefault" :checked="scope.row.isDefault===1" true-label="1" false-label="0"></el-checkbox>
        </template>
      </el-table-column>
      <el-table-column label="推荐" width="50" align="center" prop="isRecommend">
        <template slot-scope="scope">
          <el-checkbox true-label="1" false-label="0" v-model="scope.row.isRecommend"></el-checkbox>
        </template>
      </el-table-column>
      <el-table-column label="名称" width="120" align="center" prop="name">
        <template slot-scope="scope">
          <el-input placeholder="名称" v-model="scope.row.name" wi></el-input>
        </template>
      </el-table-column>
      <el-table-column label="价格" width="120" align="center" prop="amount">
        <template slot-scope="scope">
          <el-input placeholder="价格" v-model="scope.row.amount"> </el-input>
        </template>
      </el-table-column>

      <el-table-column label="原料" align="center" prop="specRuleMaterials">
        <template slot-scope="scope">
          <div @click="addMaterial(scope.$index)" v-if="
            scope.row.specRuleMaterials &&
            scope.row.specRuleMaterials.length > 0
          ">
            <span v-for="item in scope.row.specRuleMaterials" :key="item.id" style="color:blue">
              {{ item.materialName }}* {{ item.quantity || "" }}
            </span>
          </div>
          <el-button v-else type="primary" @click="addMaterial(scope.$index)" size="mini">添加原料
          </el-button>
        </template>
      </el-table-column>
      <el-table-column label="操作" width="80" align="center">
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.$index)">删除
          </el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-button type="primary" class="add" @click="add">添加</el-button>
    <SelectMaterial ref="SelectMaterial" @callback="selectMaterial" />
  </div>
</template>

<script>
import SelectMaterial from "@/components/SelectMaterial";
export default {
  components: { SelectMaterial },
  props: ["initData"],
  watch: {
    initData(data) {
      this.list = data;
    },
  },
  data() {
    return {
      list: [],
      index: "",
    };
  },
  mounted() {
    this.list = this.initData;
  },
  methods: {
    changeDefault(def, data) {
      this.list = this.list.map((item, index) => {
        item.isDefault = "0";
        if (def == "1" && data == index) item.isDefault = "1";
        return item;
      });
    },
    handleDelete(index) {
      this.list.splice(index, 1);
      if(this.list.length>=1){
        for(let i=0;i<this.list.length;i++){
          if(i==0){
             this.$set(this.list[i],"isDefault","1")
            return;
          }
        }
      }
    },
    addMaterial(index) {
      this.index = index;
      this.$refs.SelectMaterial.openModal();
    },
    selectMaterial(data) {
      this.list[this.index].specRuleMaterials = JSON.parse(
        JSON.stringify(data)
      );
    },
    add() {
      let obj={
        name: "",
        amount: "",
        specRuleMaterials: [],
        isDefault:""
      }
      if(this.list.length==0){
        obj.isDefault="1";
        this.list.push(obj);
      }else{
        let p=0;       
        for(let i=0;i<this.list.length;i++){
          if(this.list[i].isDefault=="1"){        
            p=1;
            this.list.push(obj);
            return;
          }
        }
        //没有选择默认项,默认第一条
        if(p==0){
         this.$set(this.list[0],"isDefault","1")
        }              
      }
    }, 
    clearMaterial() {
      this.list = [];
    },
  },
};
</script>

<style>
.add {
  margin-top: 10px;
}
</style>