<template>
  <div class="fee-application">
    <h1>费用申请-{{orderDetails.orderNo}}
    </h1>
    <el-divider></el-divider>
    <el-form label-width="100px" inline>
      <el-form-item label="订单号:"><div class="content">
          {{orderDetails.orderNo}}
      </div></el-form-item>
      <el-form-item label="发货人："><div class="content">{{orderDetails.consignorVO ? orderDetails.consignorVO.name :''}}</div></el-form-item>
      <el-form-item label="唛头"><div class="content">{{orderDetails.marks}}</div></el-form-item>
      <el-form-item> <el-button @click="addCost">添加申请</el-button></el-form-item>
    </el-form>
     <el-table :data="list">
       <el-table-column label="序号" type="index"></el-table-column>
       <el-table-column label="费用类型">
          <template  v-slot:default = "scope">
            <dict-selector :disabled="isModify[forbidden(scope.row)]"  :type="DICT_TYPE.FEE_TYPE" v-model="scope.row.feeType" />
          </template>
       </el-table-column>
       <el-table-column label="金额">
         <template v-slot:default = 'scope'>
           <el-input  :disabled="isModify[forbidden(scope.row)]" v-model="scope.row.applicationFee" ></el-input>
         </template>
       </el-table-column>
       <el-table-column label="货币类型">
         <template v-slot:default = 'scope'>
           <dict-selector  :disabled="isModify[forbidden(scope.row)]" :type="DICT_TYPE.COMMISSION_CURRENCY_TYPE" v-model="scope.row.applicationFeeCurrency" />
         </template>
       </el-table-column>
       <el-table-column label="付款类型">
         <template v-slot = {row}>
           <dict-selector  :disabled="isModify[forbidden(row)]" :type="DICT_TYPE.PAYMENT_TYPE" v-model="row.payType" />
         </template>
       </el-table-column>
       <el-table-column label="备注">
         <template v-slot:default="scope">
           <el-input  :disabled="isModify[forbidden(scope.row)]" v-model="scope.row.remarks" type="textarea"></el-input>
         </template>
       </el-table-column>
       <el-table-column label="确认收款">
         <template v-slot:default ="scope">
           <dict-tag :type="DICT_TYPE.RECEIVE_FLAG" :value="scope.row.receiveFlag" />
       </template>
       </el-table-column>
       <el-table-column label="申请人">
          <template v-slot:default ="scope">
            {{scope.row.status === 0 ?'未提交': scope.row.applicationAuthor}}
          </template>
       </el-table-column>
       <el-table-column label="操作">
         <template v-slot:default = 'scope'>
           <el-button type="text" v-if="scope.row.status !== 0">{{STATUS[scope.row.status]}}</el-button>
           <el-button type="text" v-if="scope.row.status === 2" @click="modify(scope.row)">修改</el-button>
         </template>
       </el-table-column>
     </el-table>
       <div style="text-align: center;margin-top: 20px;">
         <el-button style="margin-right: 30px;" @click="submit">提交</el-button>
         <el-button>取消</el-button>
       </div>
  </div>
</template>

<script>
import {getOrder, feeApplicationCreate, ApplicationListByOrderId, applicationUpdate} from "@/api/ecw/order";
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import Template from "@/views/cms/template";
export default {
  name: "feeApplication",
  components: {Template},
  props:{
    orderId:[Number, String],
  },
  data(){
    return {
      orderDetails:{},
      list:[],
      DICT_TYPE,
      getDictDatas,
      STATUS:{},
      isModify:[],
      isModifyIf:false
    }
  },
  created() {
    getOrder(this.orderId).then(r =>{
     if(r.code === 0){
       this.orderDetails = r.data
     }
    })
    this.getOrderList()
    this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach( e =>{
      this.STATUS[e.value] = e.label
    })
  },
  computed:{
    forbidden(){
      return (row)=>{
        return this.list.findIndex(e => e.id = row.id)
      }
    }
  },
  methods:{
    addCost(){
      if(this.list.some(e => e.status === 0 || e.status === 1)){
        return this.$message.success('当前有申请费用为审核中或未提交，请审核后在申请');
      }
        this.list.push(
          {
            orderId:this.orderId,
            feeType:undefined,//费用申请类型
            applicationFee:undefined,//金额
            applicationFeeCurrency:undefined,//	费用申请货币类型
            remarks:undefined,
            receiveFlag:0,
            applicationAuthor:undefined,
            status:0,
          }
        )
      this.isModify.push(false)
      this.isModifyIf = false;
    },
    submit(){
      if(this.isModifyIf){
        applicationUpdate({...this.list[this.isModify.findIndex(e => e === false)],status:1}).then(r => {
          if(r.code === 0){
            this.getOrderList();
            this.$message.success('修改成功');
          }
        })
      }else {
        if(this.list[this.list.length - 1].status === 0){
          feeApplicationCreate( {...this.list[this.list.length - 1],status:1}).then(r=>{
            if(r.code === 0){
              this.getOrderList();
              this.$message.success('添加成功');
            }
          })
        }
      }
    },
    getOrderList(){
      ApplicationListByOrderId({orderId: this.orderId}).then(r => {
        if(r.code === 0){
          this.list = r.data;
          this.list.forEach(()=>this.isModify.push(true))
        }
      })
    },
    modify(row){
      this.isModifyIf = true;
      this.$set(this.isModify, this.list.findIndex(e => e.id = row.id), false )
    }
  }
}
</script>

<style scoped lang="scss">
.fee-application {
  padding: 0 20px;
  h1{
    font-weight: 600;
    font-size: 20px;
  }
  .content{
    width: 200px;
  }
}
</style>
