<template>
  <div class="app-container">

    <!-- 搜索工作栏 -->
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item :label="$t('客户名称')" prop="customerId" >
        <el-select
          :remote-method="customerDropDownFn"
          remote
          clearable
          filterable
          v-model="queryParams.customerId"
          :placeholder="$t('请输入关键词')">
          <el-option
            v-for="(item, index) in customerNameFn"
            :key="item.id"
            :value="item.id"
            :label="item.name"
          >
          </el-option>
        </el-select>
      </el-form-item>
      <el-form-item :label="$t('联系电话')" prop="type">
        <el-input v-model="queryParams.defaultContactPhone" :placeholder="$t('请输入电话')" clearable size="small">
        </el-input>
      </el-form-item>
      <el-form-item :label="$t('佣金类型')" prop="transportId">
        <el-select v-model="queryParams.type"  clearable size="small">
          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMISSION_TYPE)"
                       :key="dict.value" :label="dict.label" :value="dict.value"/>
        </el-select>
      </el-form-item>
      <el-form-item :label="$t('运输方式')" prop="departureId">
        <el-select v-model="queryParams.departureId"  clearable size="small">
          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.ECW_TRANSPORT_TYPE)"
                     :key="dict.value" :label="dict.label" :value="dict.value"/>
        </el-select>
      </el-form-item>
      <el-form-item :label="$t('始发地')" prop="objectiveId">
        <el-select v-model="queryParams.objectiveId"  clearable size="small">
          <el-option v-for="dict in exportCityList"
                     :key="dict.id" :label="dict.titleZh" :value="dict.id"/>
        </el-select>
      </el-form-item>
      <el-form-item :label="$t('目的地')" prop="customsType">
        <el-select v-model="queryParams.customsType"  clearable size="small">
          <el-option v-for="dict in importCityList"
                     :key="dict.id" :label="dict.titleZh" :value="dict.id"/>
        </el-select>
      </el-form-item>
      <el-form-item :label="$t('报关方式')" prop="approval">
        <el-select v-model="queryParams.approval" clearable size="small">
          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SHIPPING_DECLARATION_TYPE)"
                       :key="dict.value" :label="dict.label" :value="dict.value"/>
        </el-select>
      </el-form-item>
      <el-form-item :label="$t('备案')" prop="darkReturnType">
        <el-select v-model="queryParams.darkReturnType"  clearable size="small">
          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.COMMISSION_PRODUCT_APPROVAL)"
                       :key="dict.value" :label="dict.label" :value="dict.value"/>
        </el-select>
      </el-form-item>
        <div style="width:100%;display: flex;justify-content: space-between;margin-bottom: 50px;">
          <div style="flex: 1">
            <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
            <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button></div>
          <div style="flex: 1; text-align: right;">
            <router-link :to="'/customerCommissionInfo/'+ 0 ">
              <el-button type="primary">{{$t('佣金设置')}}</el-button>
            </router-link>
          </div>
        </div>
    </el-form>

    <!-- 操作工具栏 -->
    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <!-- 列表 -->
    <el-table v-loading="loading" :data="list">
      <el-table-column
        type="selection"
        width="55">
      </el-table-column>
      <el-table-column :label="$t('佣金编码')" align="center" prop="id" />
      <el-table-column :label="$t('客户名称')" align="center" prop="customerName" show-overflow-tooltip >
      </el-table-column>
      <el-table-column :label="$t('联系电话')" align="center" prop="transportId" show-overflow-tooltip >
        <template slot-scope="scope">
          <div>+{{scope.row.defaultContactPhoneAreaCode}}</div>
         <div>{{scope.row.defaultContactPhone}}</div>
        </template>
      </el-table-column>
      <el-table-column :label="$t('佣金类型')" type="" align="center" prop="type">
        <template slot-scope="scope">
          <dict-tag :type="DICT_TYPE.COMMISSION_TYPE" :value="scope.row.type" />
        </template>
      </el-table-column>
      <el-table-column :label="$t('暗佣返佣类型')" align="center" prop="darkReturnType">
        <template slot-scope="scope">
          <dict-tag :type="DICT_TYPE.COMMISSION_DARK_TYPE" :value="scope.row.darkReturnType" />
        </template>
      </el-table-column>
      <el-table-column :label="$t('运输方式')" align="center" prop="transportId">
        <template slot-scope="scope">
          <dict-tag v-if="scope.row.transportId !== -1" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="scope.row.transportId" />
          <div v-else>{{$t('全部')}}</div>
        </template>
      </el-table-column>
      <el-table-column :label="$t('始发地/目的地')" align="center" prop="departureId" show-overflow-tooltip :formatter="originDestination">
      </el-table-column>
      <el-table-column :label="$t('报关方式')" align="center" prop="customsType" show-overflow-tooltip>
        <template slot-scope="scope">
          <dict-tag v-if="scope.row.customsType !==  -1" :type="DICT_TYPE.SHIPPING_DECLARATION_TYPE" :value="scope.row.customsType" />
          <div v-else>{{$t('全部')}}</div>
        </template>
      </el-table-column>
      <el-table-column :label="$t('备案')" align="center" prop="approval">
        <template slot-scope="scope">
          <dict-tag v-if="scope.row.approval !==  -1" :type="DICT_TYPE.COMMISSION_PRODUCT_APPROVAL" :value="scope.row.approval" />
          <div v-else>{{$t('全部')}}</div>
        </template>
      </el-table-column>
      <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" width="200px">
        <template slot-scope="scope">
          <el-button size="mini" type="text" icon="el-icon-view" @click="handleUpdate(scope.row)">查看</el-button>
          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)">{{$t('删除')}}</el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页组件 -->
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
                @pagination="getList"/>

  </div>
</template>

<script>
import {deleteCustomerCommission, getCustomerCommissionPage, exportCustomerCommissionExcel } from "@/api/ecw/customerCommission";
import {DICT_TYPE, getDictDatas} from "@/utils/dict";
import {getTradeCityList} from "@/api/ecw/region";
import {customerDropDownList} from "@/api/ecw/customerCommissionInfo";
import {getCustomerList} from "@/api/ecw/customer";

export default {
  name: "CustomerCommission",
  components: {
  },
  data() {
    return {
      DICT_TYPE,
      getDictDatas,
      tradeCityList:[],
      // 遮罩层
      loading: true,
      // 导出遮罩层
      exportLoading: false,
      // 显示搜索条件
      showSearch: true,
      // 总条数
      total: 0,
      // 客户佣金类型列表
      list: [],
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      // 查询参数
      queryParams: {
        pageNo: 1,
        pageSize: 10,
        customerId: null,//客户id
        type: null,//	佣金类型
        transportId: null,//	运输方式
        departureId: null,//始发地id
        objectiveId: null,//目的地id
        customsType: null,//报关类别
        approval: null,//产品备案
        darkReturnType: null,	//暗佣类型 1产品2达标
        defaultContactPhone:null,//主联系电话
      },
      // 表单参数
      form: {},
      // 表单校验
      rules: {
        customerId: [{ required: true, message: this.$t('客户id不能为空'), trigger: "change" }],
        type: [{ required: true, message: this.$t('佣金类型不能为空'), trigger: "change" }],
        darkReturnType: [{ required: true, message: this.$t('暗佣类型 1产品2达标不能为空'), trigger: "change" }],
      },
      customeList:[],
      selectCustomeList:[]
    };
  },
  computed:{
    //目的地
    importCityList(){
      return this.tradeCityList.filter(item => item.type == 1)
    },
    //始发地
    exportCityList(){
      return this.tradeCityList.filter(item => item.type == 2)
    },
    customerNameFn(){
      if(this.selectCustomeList.length > 0){
        let i = this.customeList.findIndex(item => item.id === this.selectCustomeList[0].id)
        if(i < 0){
          this.customeList.unshift(this.selectCustomeList[0])
        }
      }
      return  this.customeList
    }
  },
  created() {
    this.customerDropDownFn()
    if(this.$route.query.customerId){
        this.queryParams.customerId = Number(this.$route.query.customerId)
       getCustomerList({ids:this.queryParams.customerId}).then(r =>{
         console.log(r,'rrr');
        this.selectCustomeList = r.data
      })
    }
    this.getList();
    getTradeCityList().then(res => {
      this.tradeCityList = res.data
    })
  },
  methods: {
    customerDropDownFn(val){
      customerDropDownList({pageNo:1,pageSize: 100,searchKey:val}).then(res => {
        if (res.code === 0) {
          this.customeList = res.data.list
        }
      })
    },
    /** 查询列表 */
    getList() {
      this.loading = true;
      // 处理查询参数
      let params = {...this.queryParams};
      // 执行查询
      getCustomerCommissionPage(params).then(response => {
        this.list = response.data.list;
        this.total = response.data.total;
        this.loading = false;
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNo = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.handleQuery();
    },
    /** 查看按钮操作 */
    handleUpdate(row) {
      const customerId = row.customerId;
      const id = row.id;
      this.$router.push(`/customerCommissionInfo/${customerId}/${id}`)
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      const id = row.id;
      this.$modal.confirm(this.$t('是否确认删除客户佣金类型编号为"') + id + this.$t('"的数据项?')).then(function() {
          return deleteCustomerCommission(id);
        }).then(() => {
          this.getList();
          this.$modal.msgSuccess("删除成功");
        }).catch(() => {});
    },
    originDestination(row){

      let index1 = this.exportCityList.findIndex(item =>item.id == row.departureId);
      let index2 = this.importCityList.findIndex(item => item.id == row.objectiveId);
      let flag = `${index1 === -1 ? this.$t('全部') : this.exportCityList[index1].titleZh}/${index2 === -1 ? this.$t('全部') : this.importCityList[index2].titleZh}`;
       return flag
    },
  }
};
</script>
