Newer
Older
smartKitchenFront / src / components / mycomponent / snCode / codeField.vue
<!--SN码规则新增弹窗内置组件1-->
<template>
  <div class="codeItem ">
    <div class="inputContent">
      <div class="inputBox">
        <red-star />
        <input-vue v-model.number="itemInfo.snDigit" title="位数" width="150px" />
      </div>
    </div>
    <div class="inputContent">
      <div class="inputBox">
        <red-star />
        <input-vue v-model="itemInfo.snDigitName" title="名称" />
      </div>
    </div>
    <div class="Content_content">
      <div class="left_title">
        <red-star />编码规则:
      </div>
      <div class="right_content">
        <div class="title">
          <div class="title_item">
            <input-vue>
              <el-checkbox v-model="itemInfo.checked">
                是否关联前一项
              </el-checkbox>
            </input-vue>
          </div>
          <div class="title_item">
            <input-vue title="关联项名称">
              <el-select
                v-model="relevanceName"
                filterable
                placeholder="请选择"
                style="width: 130px"
                @change="changitemInfo"
              >
                <el-option
                  v-for="(item,index) in NameList"
                  :key="index"
                  :label="item.snDigitName"
                  :value="item.snDigitName"
                />
              </el-select>
            </input-vue>
          </div>

          <div class="title_item">
            <i class="el-icon-circle-plus icon" @click="addAry" />
          </div>
        </div>
        <div class="right_content_conetent">
          <div v-for="(item,index) in itemInfo.itemList" :key="index">
            <code-item v-model=" itemInfo.itemList[index]" :checked="checked" :code-list="codelist" @upmove="upmove(index)" @downmove="downmove(index)" @remove="remove(index)" />
          </div>
        </div>
      </div>
    </div>
  </div>
</template>

<script>

import InputVue from '../input/inputVue.vue'
import RedStar from '../redStar.vue'
import codeItem from './codeItem.vue'
export default {
  components: { codeItem, InputVue, RedStar },
  props: ['ruleList', 'allInfo', 'index'],
  data() {
    return {
      checked: false,
      itemInfo: {},
      relevanceName: '',
      codelist: '',
      codeItemInfo: ''// 编码详情
    }
  },
  computed: {
    NameList() {
      // console.log(this.allInfo[0].itemList[0].digitItem,"=========");
      const temp = [...this.allInfo]
      const temp2 = temp.slice(0, this.index)
      //  console.log(temp2[0].itemList[0].digitItem,"+=====temp2====");
      return [...temp2]
    // return []
    }
    // codeList(){
    //     const index = this.allInfo.findIndex(item => {

    //       return  item.snDigitName = this.relevanceName
    //       // console.log(item.snDigitName ,  this.relevanceName);
    //     })
    //     // if(index==-1) return []
    //     // const temp  =  this.ruleList[index].itemList
    //     // return [...temp]
    //     return index
    // }
  },
  watch: {

    itemInfo: {
      handler(vls) {
        this.changitemInfo()
        //  iteminfo改变时改变父组件
        // 判断是否带前项编码
        //  if(!vls.checked){

        //  const  temp = vls.itemList.map(item => {
        //    item.itemList = {
        //      digitItem:item.digitItem,
        //      digitItemIllustration:item.digitItemIllustration
        //    }
        //    return item
        //  })
        //    this.$emit('changeRuleList',{data:temp,index:this.index})
        // // console.log(temp, "-===========================",vls);
        // }else{
        this.$emit('changeRuleList', { data: vls, index: this.index })
      // }
      },
      deep: true
    },
    allInfo: {
      handler(vls) {
        this.changitemInfo()
      },
      deep: true
    }
    // checked(){
    //     this.subInfo(this.itemInfo)
    // }
    // ruleList:{
    //   handler(vls){

    //     if(this.itemInfo.digitItem)
    //    this.itemInfo = {...vls}
    //   },
    //   deep:true,
    //   immediate:true
    // }
  },
  // model: {
  //   prop: 'snDigitOrder',
  //   event: 'changeSnDigitOrder'
  // },
  mounted() {
    this.itemInfo = { ...this.ruleList } // 单个框数据
    //  allInfo 全部数据
    // this.itemInfo = this.ruleList   // 根据 对象的性质
    // this.$on('submitCode',()=>{console.log(11);})
    // this.codeItemInfo =
  },
  methods: {
    remove(index) {
      this.itemInfo.itemList.splice(index, 1)
    },
    upmove(index) {
      if (index == 0) return
      console.log(this.itemInfo)
      const temp = this.itemInfo.itemList[index - 1]
      this.itemInfo.itemList[index - 1] = this.itemInfo.itemList[index]
      this.itemInfo.itemList[index] = temp
      console.log(this.itemInfo.itemList[index])
    },
    downmove(index) {
      console.log(index, this.itemInfo.itemList.length - 1)
      if (index == this.itemInfo.itemList.length - 1) return
      const temp = this.itemInfo.itemList[index + 1]
      this.itemInfo.itemList[index + 1] = this.itemInfo.itemList[index]
      this.itemInfo.itemList[index] = temp
    },
    addAry() {
      console.log(this.itemInfo)
      this.itemInfo.itemList.push({
        digitItem: '',
        digitPre: '',
        digitItemIllustration: ''
      })
    },
    changitemInfo() {
      const temp = this.NameList.findIndex(item => {
        return item.snDigitName == this.relevanceName
      })

      if (temp == -1) return []
      const ary = this.NameList[temp].itemList.map(item => {
        return { digitItem: item.digitItem }
      })
      console.log(ary, '======ary=====')
      this.codelist = ary
    //  this.codelist = temp
    }

  }
}
</script>

<style lang="scss" scoped>
.codeItem {
      display: flex;
      flex: 1;
      .inputContent {
        flex: 1;
        .inputBox {
          display: flex;
          align-items: center;
        }
      }
      .Content_content {
        flex: 3;
        display: flex;
        // align-items:center;
        .left_title{
          line-height: 50px;
          padding: 0 10px;
        }
        .right_content{
          flex: 1;
        .title{
           align-items:center;
          display: flex;
          .title_item{
            flex: 1;
            .icon{
              width: 40px;
              height: 40px;
              color: skyblue;
              // margin-left: 10px;
              text-align: center;
              font-size: 20px;
              line-height: 40px;
            }
          }
        }
        .right_content_conetent{
          display: flex;
          flex-direction: column;
    /* justify-content: right; */
           align-items: end;
        }
        }
      }
    }
</style>