<template>
  <el-dialog visible :close-on-click-modal="false" width="80%" :before-close="closeDialog" :title="applyType == 32 ? $t('管理折扣') : $t('优惠申请')">
    <el-form ref="form" :model="order" label-width="80px">
      <el-form-item :label="$t('订单号')">
        <span>{{ order.orderNo }}</span>
      </el-form-item>
      <el-form-item :label="$t('线路')">{{ $t('【') }}<dict-tag :type="DICT_TYPE.TRANSPORT_TYPE" :value="order.transportId" />】
        {{ channel ? $l(channel, 'title') : '' }}
        {{$t("从【{departureName}】发往【{objectiveName}】", {departureName: $l(order.logisticsInfoDto, 'startTitle'), objectiveName: $l(order.logisticsInfoDto, 'destTitle')})}}
      </el-form-item>
    </el-form>
      <el-table  border :data="form.batchApplyOrderItemDetailVOList">
       <el-table-column :label="$t('品名')" align="center">
          <template  v-slot="{row}">
            {{row.prodTitleZh+'/'+row.prodTitleEn}}
          </template>
        </el-table-column>
       <el-table-column :label="$t('填单货物属性')" align="center">
          <template v-slot="{row}">
            {{$t('品牌')}}：<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" /><br>
            {{$t('箱数')}}：{{ row.num }}<br>
            {{$t('体积')}}：{{ row.volume }}m³<br>
            {{$t('重量')}}：{{ row.weight }}Kg
          </template>
        </el-table-column>
        <el-table-column
          prop="address"
          :label="$t('入库货物属性')">
          <template v-slot="{row}">
            <template v-if="row.warehouseInInfoVO">
              {{$t('品牌')}}：
              <template v-if="row.brandName">{{row.brandName}}</template>
              <dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" /><br>
              {{$t('箱数')}}：{{ row.warehouseInInfoVO.cartonsNum }}<br>
              {{$t('体积')}}：{{ row.warehouseInInfoVO.volume }}m³<br>
              {{$t('重量')}}：{{ row.warehouseInInfoVO.weight }}Kg
            </template>
            <span v-else>{{$t('暂时没有入库信息')}}</span>
          </template>
        </el-table-column>
       <el-table-column :label="$t('旧费用')" align="center">
          <template v-slot="{row}">
            <div v-if="!row.charging">
              <div>{{$t('旧运费')}}:{{row.orgFreight}} {{ currentMap[row.freightCurrency] }} / {{ unitMap[row.freightVolume] }}</div>
              <div>{{$t('旧清关费')}}:{{row.orgClearanceFreight}} {{ currentMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}</div>
            </div>
            <div v-else>
              {{$t('旧全包价')}}:{{row.orgFreight}} {{ currentMap[row.freightCurrency] }} / {{ unitMap[row.freightVolume] }}
            </div>
          </template>
        </el-table-column>
       <el-table-column :label="$t('新费用')" align="center" width="300px">
          <template v-slot="{row}">
            <div v-if="!row.charging">
              <div>{{$t('新运费')}}: <el-input v-model="row.freight" type="number" class="w-100" /> {{ currentMap[row.freightCurrency] }} / {{ unitMap[row.freightVolume] }}</div>
              <div>{{$t('新清关费')}}: <el-input v-model="row.clearanceFreight" type="number" class="w-100" /> {{ currentMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}</div>
            </div>
            <div v-else>
              {{$t('新全包价')}}: <el-input v-model="row.freight" type="number" class="w-100" />{{ currentMap[row.freightCurrency] }} / {{ unitMap[row.freightVolume] }}
            </div>
          </template>
        </el-table-column>
      </el-table>

    <div class="page-title">{{ $t('审批流程') }}</div>
    <work-flow xmlkey="special_apply" v-model="ccIdArr" />
    <div v-if="form.applyStatus != 1">
      <el-button type="primary" @click="handleSubmit" >{{ $t('提交') }}</el-button>
    </div>
    <div v-else>
      <el-button type="primary" @click="$router.push('/bpm/process-instance/detail?id=' + form.formId)">
        <dict-tag :type="DICT_TYPE.APPLY_STATUS" :value="form.applyStatus" />
      </el-button>
      <el-button type="primary" @click="cancelAudit">{{ $t('取消审核') }}</el-button>
      <el-button type="default" @click="closeDialog">{{ $t('返回') }}</el-button>
    </div>
  </el-dialog>
</template>

<script>
import {createOrderSpecialBatch, getOrderSpecialBatch} from "@/api/ecw/order"
import {getUnitList} from "@/api/ecw/unit"
import {getChannel, getChannelList} from "@/api/ecw/channel"
import { getCurrencyList } from '@/api/ecw/currency'
import { getProductType } from '@/api/ecw/productType'
import {cancelProcessInstance} from '@/api/bpm/processInstance'
import WorkFlow from '@/components/WorkFlow'

export default {
  name: "OrderSpecialDiscount",
  props: {
    order: Object,
    ids:Array,
    applyType:{ // // 31是优惠申请32是管理折扣
      type: Number,
      default: 31
    }
  },
  components: {
    WorkFlow
  },
  created() {
    // 查看详情，列表进来的
    this.getOrderSpecial()

    getUnitList().then(res => this.unitList = res.data)
    getCurrencyList().then(res => this.currencyList = res.data)

    // getProductType(this.orderItem.prodType).then(res => {
    //   this.productType = res.data
    // })
    if(this.order.channelId){
      getChannel(this.order.channelId).then(res => {
        this.channel = res.data
      })
    }
  },
  data() {
    return {
      // applyType: 1, // 1是优惠申请2是管理折扣3是佣金设置4是重货优惠5是泡货优惠
      unitList:[],
      // channelList:[],
      currencyList:[],
      // productTypeList:[],
      ccIdArr: [],
      form: { },
      productType: null,
      channel: null
    }
  },
  watch:{
    ccIdArr(){
      this.$set(this.form, 'ccIds', this.ccIdArr.join(','))
    }
  },
  methods: {
    handleSubmit(){
      var fee = false
      var msg = ''
      this.form.batchApplyOrderItemDetailVOList.map(v=>{
        if(v.charging){
          if(!v.freight){
            fee = true
            msg = this.$t('新全包价不能为空')
          }else if(v.freight==v.orgFreight){
            fee = true
            msg = this.$t('新全包价不能与旧全包价一致')
          }

        }else{
          if(!v.clearanceFreight){
            fee = true
            msg = this.$t('新清关费不能为空')
          }
          if(!v.freight){
            fee = true
            msg = this.$t('新运费不能为空')
          }
          if(v.freight&&v.clearanceFreight){
            if(v.freight==v.orgFreight&&v.clearanceFreight==v.orgClearanceFreight){
              fee = true
              msg = this.$t('新费用不能与旧费用一致')
            }
          }
        }
      })
      if(fee){
        this.$message.error(msg)
        return
      }
        createOrderSpecialBatch(Object.assign({}, this.form, {orderId:this.order.orderId,orderNo:this.order.orderNo},{applyType: this.applyType})).then(res => {
          this.$message.success(this.$t('提交成功'))
          this.$emit('success')
        })
    },
    getOrderSpecial(){
      getOrderSpecialBatch(this.order.orderId, this.applyType).then(r => {
        this.form = r.data
        var volist = r.data.batchApplyOrderItemDetailVOList
        if(this.form.applyStatus==1){
          this.form.batchApplyOrderItemDetailVOList.map(v=>{
            var item = this.order.orderItemVOList.find(vs=>vs.orderItemId==v.orderItemId)
            if(item){
              v.brandType = item.brandType
              v.num = item.num
              v.volume = item.volume
              v.weight = item.weight
              v.brandName = item.brandName
              v.warehouseInInfoVO = item.warehouseInInfoVO
            }
          })
        }else{
          this.form.batchApplyOrderItemDetailVOList = []
          var list = []
          console.log(this.ids)
          volist.map(v=>{
            console.log(v.orderItemId)
            if(this.ids.indexOf(v.orderItemId)>-1){
              var item = this.order.orderItemVOList.find(vs=>vs.orderItemId==v.orderItemId)
              if(item){
                v.brandType = item.brandType
                v.num = item.num
                v.volume = item.volume
                v.weight = item.weight
                v.brandName = item.brandName
                v.warehouseInInfoVO = item.warehouseInInfoVO
              }
              list.push(v)
            }
          })
          console.log(list)
          this.$set(this.form,'batchApplyOrderItemDetailVOList',list)
        }
      })
    },
    /* getProductTypeNameById(id){
      return this.$l(this.productTypeList.find(e => e.id === id), 'title')
    }, */
    cancelAudit(){
      this.$prompt(this.$t('请输入取消原因？'), this.$t("取消审批"), {
        type: 'warning',
        confirmButtonText: this.$t("确定"),
        cancelButtonText: this.$t("取消"),
        inputPattern: /^[\s\S]*.*[^\s][\s\S]*$/, // 判断非空，且非空格
        inputErrorMessage: this.$t("取消原因不能为空"),
      }).then(({ value }) => {
        return cancelProcessInstance(this.form.formId, value);
      }).then(() => {
        this.$modal.msgSuccess(this.$t("取消成功"));
        this.closeDialog()
      })
    },
    closeDialog(){
      this.$emit('close')
    }
  },
  computed: {
    // 是否可以提交
    submitable(){
      let submitable = false;
      if(!this.form.freight || (!this.form.clearanceFreight && !this.form.charging)){
        return false
      }
      [
        ['orgClearanceFreight', 'clearanceFreight'],
        ['orgFreight', 'freight']
      ].forEach(item => {
        if(this.form[item[0]] != this.form[item[1]]){
          submitable = true
        }
      })
      return submitable
    },
    // 根据渠道id显示渠道名
    getChannelNameById(){
      return channelId => {
        const s = this.channelList.find(item => item.channelId == channelId) ?. nameZh
        return s ? this.$t('【') + s + this.$t('】') : ''
      }
    },
    currentMap(){
      let map = {}
      this.currencyList.forEach(item => {
        map[item.id] = this.$l(item, 'title')
      })
      return map
    },
    unitMap(){
      let map = {}
      this.unitList.forEach(item => {
        map[item.id] = this.$l(item, 'title')
      })
      return map
    }
  }
}
</script>
