<script>
import Selector from "@/components/Selector/index.vue";

export default {
  name: "QuickSet.vue",
  props:{
    type:String,
    unitList:{
      type: Array,
      default(){
        return []
      }
    },
    currencyList:{
      type: Array,
      default(){
        return []
      }
    },
    value:{
      type: Object,
      default(){
        return {}
      }
    }
  },
  components: {Selector},
  data(){
    return {
      quickForm:{}, // 快速加价/减价表单
    }
  },
  computed:{
    getUnit(){
      return (field, unitField) => {
        if(this.type == 'sea'){
          if(this.value.stepPrice && !this.value.priceStepList?.length){
            return null
          }
          if(this.value.stepPrice){
            return this.value.priceStepList[0][unitField]
          }
          return this.value[unitField]
        }
        // 后面是空运的
        if(!this.value[field]?.length) return null
        return this.value[field][0][unitField]
      }
    }
  },
  methods:{
    handleConfirm(type){
      let amount = this.quickForm[type]
      if(!amount){
        return this.$message.error(this.$t('请输入加价金额'))
      }
      if(this.type == 'sea'){
        return this.batchSetSeaPrice(type, amount)
      }
      if(this.value?.priceType == 1){
        this.batchSetPrice("fullPriceStepList", 'all', amount)
      }else if(type == 'transport'){
        this.batchSetPrice("freightPriceStepList","transport", amount)
      }else if(type == 'clearance'){
        this.batchSetPrice("clearancePriceStepList", "clearance", amount)
      }
    },
    batchSetPrice(field, fieldPrefix, amount){
      if(!this.value[field]?.length) return
      this.value[field].forEach(item => {
        if(item[fieldPrefix + 'Price']){
          item[fieldPrefix + 'Price'] = (item[fieldPrefix + 'Price'] * 100 + amount * 100) / 100
        }
        // 特性价格
        if(item.specialList?.length){
          item.specialList.forEach(special => {
            console.log(special.specialDictType, special[fieldPrefix + 'Price'])
            if(special[fieldPrefix + 'Price']){
              special[fieldPrefix + 'Price'] = (special[fieldPrefix + 'Price'] * 100 + amount * 100) / 100
            }
          })
        }
        // 包装价格
        if(item.packagingList?.length){
          item.packagingList.forEach(packaging => {
            if(packaging['packagingPrice']){
              packaging['packagingPrice'] = (packaging['packagingPrice'] * 100 + amount * 100) / 100
            }
          })
        }
      })
    },
    batchSetSeaPrice(type, amount){
      console.log('快捷设置海运价格', type, amount)
      if(!this.value.stepPrice){
        if(!this.value.priceType){
          this.setSeaPrice(this.value,"transport", amount)
          this.setSeaPrice(this.value,"clearance",amount)
        }else{
          this.setSeaPrice(this.value,"all", amount)
        }
        return
      }
      this.value.priceStepList.forEach(item => {
        if(!this.value.priceType){
          this.setSeaPrice(item,"transport", amount)
          this.setSeaPrice(item,"clearance",amount)
        }else{
          this.setSeaPrice(item,"all", amount)
        }
      })
    },
    setSeaPrice(parent, fieldPrefix, amount){
      console.log(parent[`${fieldPrefix}Price`], ...arguments)
      parent[`${fieldPrefix}Price`] = (parent[fieldPrefix + 'Price'] * 100 + amount * 100) / 100
      if(!parent.specialList?.length) return
      parent.specialList.forEach(special => {
        console.log(special.specialDictType, special[fieldPrefix + 'Price'])
        if(special[fieldPrefix + 'Price']){
          special[fieldPrefix + 'Price'] = (special[fieldPrefix + 'Price'] * 100 + amount * 100) / 100
        }
      })
    }
  }
}
</script>

<template>
  <div>
    <h2 class="mt-5">{{$t('快捷设置')}}</h2>
    <div class="flex items-center" v-if="value.priceType != 1">
      <div class="w-100">{{$t('运费快捷加价')}}</div>
      <el-input-number :controls="false" v-model="quickForm.transport" class="w-100 ml-10 mr-10"></el-input-number>
      <selector disabled :value="getUnit('freightPriceStepList', 'transportPriceUnit')" :options="currencyList" :label-field="$l('title')" value-field="id" class="w-100" />
      / <selector disabled :value="getUnit('freightPriceStepList', 'transportVolumeUnit')" :options="unitList" :label-field="$l('title')" value-field="id" class="w-100" />
      <div class="ml-10">
        <el-button @click="handleConfirm('transport')" type="primary">{{$t('提交运费')}}</el-button>
      </div>
    </div>
    <div class="flex items-center mt-10" v-if="value.priceType != 1">
      <div class="w-100">{{$t('清关费快捷加价')}}</div>
      <el-input-number :controls="false" v-model="quickForm.clearance" class="w-100 ml-10 mr-10"></el-input-number>
      <selector disabled :value="getUnit('clearancePriceStepList', 'clearancePriceUnit')" :options="currencyList" :label-field="$l('title')" value-field="id" class="w-100" />
      / <selector disabled :value="getUnit('clearancePriceStepList', 'clearanceVolumeUnit')" :options="unitList" :label-field="$l('title')" value-field="id" class="w-100" />
      <div class="ml-10">
        <el-button @click="handleConfirm('clearance')" type="primary">{{$t('提交清关费')}}</el-button>
      </div>
    </div>
    <div class="flex items-center" v-if="value.priceType == 1">
      <div class="w-100">{{$t('全包价快捷加价')}}</div>
      <el-input-number v-model="quickForm.all" :controls="false" class="w-100 ml-10 mr-10"></el-input-number>
      <selector disabled :value="getUnit('fullPriceStepList', 'allPriceUnit')" :options="currencyList" :label-field="$l('title')" value-field="id" class="w-100" />
      / <selector disabled :value="getUnit('fullPriceStepList', 'allVolumeUnit')" :options="unitList" :label-field="$l('title')" value-field="id" class="w-100" />
      <div class="ml-10">
        <el-button @click="handleConfirm('all')" type="primary">{{$t('提交全包价')}}</el-button>
      </div>
    </div>
  </div>
</template>

<style scoped lang="scss">

</style>
