<template>
  <div class="app-container">
    <el-card>
      <div slot="header" class="card-title">{{ $t("报价单号") }}：{{ list.number }} - <dict-tag :type="DICT_TYPE.ECW_OFFER_STATUS" :value="list.status" /></div>
      <!-- 列表 -->
      <div class="offer-header">
        <span style="font-size: 15px"></span>
        <div class="btns">
          <el-button v-hasPermi="['ecw:offer:update']" size="mini" type="primary" v-if="[4, 5, 6].indexOf(list.status) == -1" @click="$router.push('edit?id=' + offerId)">{{ $t("编辑") }}</el-button>
          <el-button v-hasPermi="['ecw:offer:loglist']" type="primary" v-if="[1, 3, 7].indexOf(list.status) > -1" size="mini" @click="handleAddOffer">{{ $t("跟进") }}</el-button>
          <el-button v-hasPermi="['ecw:offer:result']" type="primary" v-if="[3, 7].indexOf(list.status) > -1" size="mini" @click="toResult">{{ $t("结果") }}</el-button>
          <el-button v-hasPermi="['ecw:offer:discount', 'ecw:offer:commission']" size="mini" v-if="[1, 3, 7].indexOf(list.status) > -1" type="primary" @click.native="$router.push('/offer/special?offerId=' + offerId)">{{ $t("特价") }}</el-button>
          <el-button v-hasPermi="['ecw:offer:delete']" type="danger" size="mini" @click="handleDelete">{{ $t("删除") }}</el-button>
        </div>
      </div>
      <div>
        <div class="title-font">
          <label>{{ $t("报价单所属") }}：{{ list.relation ? (list.relation == 1 ? $t("发货人") : $t("收货人")) : $t("发货人") }}</label>
        </div>
        <el-descriptions :column="3" border class="card" v-if="list.consignorId" :labelStyle="{ width: '110px' }" :contentStyle="{ width: '110px' }" style="margin-top: 10px">
          <el-descriptions-item :label="$t('客户经理') + ':'">
            {{list.followUpSalesmanName}}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('销售阶段') + ':'">
            <dict-tag :type="DICT_TYPE.CUSTOMER_FOLLOWUP_SALE_STAGE" :value="list.saleStage" />
          </el-descriptions-item>
          <el-descriptions-item label="">
          </el-descriptions-item>
        </el-descriptions>

        <el-descriptions :column="3" border class="card" v-if="list.consignorId" :labelStyle="{ width: '110px' }" :contentStyle="{ width: '110px' }">
          <el-descriptions-item :label="$t('发货人') + ':'">
            {{ consignorData.contactsName || $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('手机号') + ':'">
            {{ consignorData && consignorData.phoneNew ? checkCode(consignorData.areaCode) + consignorData.phoneNew || $t("无") : $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('联系地址') + ':'">
            {{ consignorData.address || $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('客户来源') + ':'">
            {{ consignorData.source || $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('发货人公司名称') + ':'">
            {{ consignorData.company || $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('社交软件') + ':'">
            <dict-tag :type="DICT_TYPE.SOCIAL" :value="consignorData.social" />
            {{ consignorData.socialNumber ? "(" + consignorData.socialNumber + ")" : "" }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('客户状态') + ':'">
            <dict-tag :type="DICT_TYPE.ECW_OFFER_CUSTOMER_STATUS" :value="list.customerStatus" />
          </el-descriptions-item>
          <el-descriptions-item :label="$t('货物状态') + ':'">
            <dict-tag :type="DICT_TYPE.ECW_OFFER_CARGO_STATUS" :value="list.cargoStatus" />
          </el-descriptions-item>
          <el-descriptions-item :label="$t('询盘来源') + ':'">
            <dict-tag :type="DICT_TYPE.ECW_OFFER_INQUIRY_SOURCE" :value="list.inquirySource" />
          </el-descriptions-item>
        </el-descriptions>

        <el-descriptions :column="3" border class="card" v-if="list.consigneeId" :labelStyle="{ width: '110px' }" :contentStyle="{ width: '110px' }">
          <el-descriptions-item :label="$t('收货人') + ':'">
            {{ consigneeData.contactsName || $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('手机号') + ':'">
            {{ consigneeData && consigneeData.phoneNew ? checkCode(consigneeData.areaCode) + consigneeData.phoneNew || $t("无") : $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('联系地址') + ':'">
            {{ consigneeData.address || $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('客户来源') + ':'">
            {{ consigneeData.source || $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('发货人公司名称') + ':'">
            {{ consigneeData.company || $t("无") }}
          </el-descriptions-item>
          <el-descriptions-item :label="$t('社交软件') + ':'">
            <dict-tag :type="DICT_TYPE.SOCIAL" :value="consigneeData.social" />
            {{ consigneeData.socialNumber ? "(" + consigneeData.socialNumber + ")" : "" }}
          </el-descriptions-item>
        </el-descriptions>
      </div>
    </el-card>
    <el-card class="card">
      <div slot="header" class="card-title">{{ $t("运输") }}</div>
      <div style="overflow: auto">
        <el-descriptions :column="4" border class="card" :labelStyle="{ width: '120px' }">
          <el-descriptions-item :label="$t('始发仓')" :contentStyle="{ width: '16%' }">{{ $l(list.logisticsInfoDto, "startTitle") }}</el-descriptions-item>
          <el-descriptions-item :label="$t('目的仓')" :contentStyle="{ width: '25%' }"> {{ $l(list.logisticsInfoDto, "destCountryTitle") }} - {{ $l(list.logisticsInfoDto, "destCityTitle") }} - {{ $l(list.logisticsInfoDto, "destTitle") }} </el-descriptions-item>
          <el-descriptions-item :label="$t('运输方式')" :contentStyle="{ width: '16%' }">
            <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="list.transportId" />
          </el-descriptions-item>
          <el-descriptions-item v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, list.transportId).cssClass == 'channel'" :label="$t('出货渠道')">{{ list.channelName }}</el-descriptions-item>
          <el-descriptions-item :label="$t('服务')">
            <el-tag v-if="list.serviceType && list.serviceType.indexOf('1') > -1">
              {{ $t("集运") }}
            </el-tag>
            <el-tag v-if="list.serviceType && list.serviceType.indexOf('2') > -1">
              {{ $t("海外仓") }}
            </el-tag>
          </el-descriptions-item>
        </el-descriptions>
      </div>
    </el-card>
    <el-card class="card">
      <div slot="header" class="card-title">{{ $t("商品") }}</div>
      <div style="overflow: auto">
        <el-table v-loading="loading" border show-summary :data="list.offerProdRespVOList">
          <el-table-column :label="$t('序号')" width="60px" fixed>
            <template slot-scope="scope">
              {{ scope.$index + 1 }}
            </template>
          </el-table-column>
          <el-table-column :label="$t('中文品名')" align="center" prop="prodTitleZh" />
          <el-table-column :label="$t('英文品名')" align="center" prop="prodTitleEn" />
          <el-table-column :label="$t('品牌')" width="100px">
            <template slot-scope="scope">
              <dict-tag :value="scope.row.brand" :type="DICT_TYPE.ECW_IS_BRAND" defaultable />
            </template>
          </el-table-column>
          <el-table-column :label="$t('件数')" width="90px" prop="num" />
          <el-table-column :label="$t('包装单位')">
            <template slot-scope="scope">
              <dict-tag :value="scope.row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" defaultable />
            </template>
          </el-table-column>
          <!-- <el-table-column :label="$t('箱规') + '(m)'" width="120px" prop="boxGauge" /> -->
          <el-table-column :label="$t('体积') + '(m³)'" width="100px" prop="volume" />
          <el-table-column :label="$t('数量')" width="100px" prop="quantity" />
          <el-table-column :label="$t('重量') + '(kg)'" width="100px" prop="weight" />
          <el-table-column :label="$t('货值') + '(RMB)'" width="100px" prop="worth" />
          <el-table-column :label="$t('商品特性')" width="200px" prop="prodAttrName" />
          <el-table-column :label="$t('是否预付')">
            <template slot-scope="scope">
              {{ scope.row.isPayAdvance == 1 ? $t("预付") : $t("到付") }}
            </template>
          </el-table-column>

          <el-table-column :label="$t('成交价')" width="200px">
            <template slot-scope="{ row }">
              <template v-if="row.charging == 1">
                <template v-if="!row.oneSeaFreight">{{ $t("未报价") }}</template>
                <template>{{ $t("全包价") }} {{ row.oneSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</template>
              </template>
              <template v-else-if="!row.oneSeaFreight && !row.oneClearanceFreight">{{ $t("未报价") }}</template>
              <template v-else-if="row.specialPriceType">
                <div style="color: red;font-weight: 700;">
                  {{ $t("原价") }}
                </div>
                <div>
                  {{ $t("运费") }}：{{ row.originalSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}
                </div>
                <div>
                  {{ $t("清关费") }}：{{ row.originalClearanceFreight }} {{ currentcyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}
                </div>
                <div style="color: red;font-weight: 700;">
                  {{ $t("特价") }}
                </div>
                <div>
                  {{ $t("运费") }}：{{ row.oneSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}
                </div>
                <div>
                  {{ $t("清关费") }}：{{ row.oneClearanceFreight }} {{ currentcyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}
                </div>
              </template>
              <template v-else>
                <div>{{ $t("运费") }}：{{ row.oneSeaFreight }} {{ currentcyMap[row.seaFreightCurrency] }} / {{ unitMap[row.seaFreightVolume] }}</div>
                <div v-if="row.oneClearanceFreight">{{ $t("清关费") }}：{{ row.oneClearanceFreight }} {{ currentcyMap[row.clearanceFreightCurrency] }} / {{ unitMap[row.clearanceFreightVolume] }}</div>
                <div v-else>{{ $t("清关费未报价") }}</div>
              </template>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </el-card>

    <el-card class="mt-10">
      <div class="card-title" slot="header">{{ $t("费用") }}</div>

      <el-descriptions :column="5" border>
        <el-descriptions-item :label="$t('保价费')"> {{ list.estCostVO ? list.estCostVO.insuranceFee : 0 }} {{ selectedRouter ? currentcyMap[selectedRouter.currencyUnit || 1] : "" }} </el-descriptions-item>
        <el-descriptions-item :label="$t('总运费')">
          <template v-if="freightFeeList.length > 0" v-for="item in freightFeeList">
            <div :key="item.currencyId">{{ item.amount || 0 }}{{ currentcyMap[item.currencyId] }}</div>
          </template>
        </el-descriptions-item>
        <template v-if="freightFeeList.length == 0"> 0 </template>
        <!--代收货款，只有非控货订单、并且线路开通了代收货款后，才显示是否代收货款选项-->
        <el-descriptions-item :label="$t('总清关费')">
          <template v-if="clearanceFeeList.length > 0" v-for="item in clearanceFeeList">
            <div :key="item.currencyId">{{ item.amount || 0 }}{{ currentcyMap[item.currencyId] }}</div>
          </template>
          <template v-if="clearanceFeeList.length == 0"> 0 </template>
        </el-descriptions-item>
        <el-descriptions-item :label="$t('其他费用')">
          <template v-if="otherFeeList.length > 0" v-for="item in otherFeeList">
            <div :key="item.currencyId">{{ item.amount || 0 }}{{ currentcyMap[item.currencyId] }}</div>
          </template>
          <template v-if="otherFeeList.length == 0"> 0 </template>
        </el-descriptions-item>
<!--        <el-descriptions-item :label="$t('原价')" :span="2">-->
<!--          <template v-if="originalFeeList.length > 0" v-for="item in originalFeeList">-->
<!--            <div :key="item.currencyId">{{ item.amount || 0 }}{{ currentcyMap[item.currencyId] }}</div>-->
<!--          </template>-->
<!--          <template v-if="originalFeeList.length == 0"> 0 </template>-->
<!--        </el-descriptions-item>-->
      </el-descriptions>

      <div class="card-title" style="padding: 20px 0">{{ $t("优惠信息") }}</div>
      <el-table :data="couponList" :show-header="false">
        <el-table-column label="">
          <template slot-scope="scope">
            {{ scope.$index + 1 }}.
            {{ getProductName(scope.row.prodId) }}
          </template>
        </el-table-column>
        <el-table-column label="">
          <template slot-scope="{ row }">
            <dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="row.type" />
          </template>
        </el-table-column>
        <el-table-column label="">
          <template slot-scope="{ row }">
            {{ $l(row, "title") }}
          </template>
        </el-table-column>
        <el-table-column label="">
          <template slot-scope="{ row }">
            -{{ row.reduceAmount }}
            {{ currentcyMap[row.reduceCurrencyId] }}
          </template>
        </el-table-column>
        <el-table-column label="">
          <template slot-scope="{ row }"> {{ $t("有效期至") }}：{{ row.endTime ? row.endTime : $t("永久有效") }} </template>
        </el-table-column>
      </el-table>

      <el-descriptions :column="1" class="mt-20">
        <el-descriptions-item :label="$t('优惠费用')" v-if="couponTotalAmountList && couponTotalAmountList.length > 0">
          <div v-for="(item, discountIndex) in couponTotalAmountList" :key="discountIndex">{{ item.totalAmount }} {{ currentcyMap[item.currencyId] }}</div>
        </el-descriptions-item>
        <el-descriptions-item :label="$t('预计费用')">
          <template>
            <div style="display: flex; flex-direction: column">
              <div v-for="item in estimatedCosts" :key="item.currencyId">
                <span>{{ item.amount || 0 }}{{ currentcyMap[item.currencyId] }}</span>
              </div>
            </div>
          </template>
        </el-descriptions-item>
      </el-descriptions>
    </el-card>
    <el-card class="card">
      <div slot="header" class="card-title">{{ $t("通用信息") }}</div>
      <el-descriptions :column="4":labelStyle="{ width: '110px' }" :contentStyle="{ width: '110px' }">
        <el-descriptions-item :label="$t('唛头')">
          {{ list.marks || "/" }}
        </el-descriptions-item>
        <el-descriptions-item :label="$t('报关方式')">
          <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="list.customsType"></dict-tag>
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions :column="4":labelStyle="{ width: '110px' }" :contentStyle="{ width: '110px' }">
        <el-descriptions-item :label="$t('预计结束时间')">
          {{ list.stopTime || "/" }}
        </el-descriptions-item>
        <el-descriptions-item :label="$t('预计发货时间')">
          {{ list.estimatedShippingTime || "/" }}
        </el-descriptions-item>
        <el-descriptions-item :label="$t('控货')">
          {{ list.control ? $t("是") : $t("否") }}
        </el-descriptions-item>
        <el-descriptions-item :label="$t('竞争对手')">
          {{ list.competitor || "/" }}
        </el-descriptions-item>
        <el-descriptions-item :label="$t('重要程度')">
          <el-rate v-model="list.importance" disabled></el-rate>
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions :column="4":labelStyle="{ width: '110px' }" :contentStyle="{ width: '110px' }">
        <el-descriptions-item :label="$t('价格有效期')"> {{ list.startTime + $t("至") }}{{ list.endTime }} </el-descriptions-item>
        <el-descriptions-item :label="$t('交货方式')">
          <dict-tag :type="DICT_TYPE.ECW_TRADE_TYPE" :value="list.tradeType"></dict-tag>
          <span style="margin-left: 10px">{{ list.tradeAdress }}</span>
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions :column="4":labelStyle="{ width: '110px' }" :contentStyle="{ width: '110px' }">
        <el-descriptions-item :label="$t('厂家')">
          {{ list.manufacturer || "/" }}
        </el-descriptions-item>
        <el-descriptions-item :label="$t('厂家电话')">
          {{ list.manufacturerPhone || "/" }}
        </el-descriptions-item>
        <el-descriptions-item :label="$t('优惠信息')">
          {{ list.specialOffers || "/" }}
        </el-descriptions-item>
        <el-descriptions-item :label="$t('备注')">
          {{ list.remarks || "/" }}
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions :column="4":labelStyle="{ width: '110px' }" :contentStyle="{ width: '110px' }">
        <el-descriptions-item :label="$t('创建人')"> {{ list.creatorName || "/" }} </el-descriptions-item>
        <el-descriptions-item :label="$t('创建时间')"> {{ list.createTime || "/" }} </el-descriptions-item>
        <el-descriptions-item :label="$t('最后更新人')"> {{ list.updaterName || "/" }} </el-descriptions-item>
        <el-descriptions-item :label="$t('最后更新时间')"> {{ list.updateTime || "/" }} </el-descriptions-item>
      </el-descriptions>
    </el-card>
    <el-card class="mt-10" v-if="list.transportVO">
      <div slot="header" class="card-title">
        <div class="card-name">
          <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="list.transportId"></dict-tag>
          <el-button type="primary" size="mini" icon="el-icon-plus" @click="qiTaTag=!qiTaTag" style="float: right"></el-button>
        </div>
      </div>
      <div class="line" v-show="qiTaTag">
<!--        <el-descriptions>-->
<!--          <el-descriptions-item :label="[3, 4].indexOf(list.transportId) > -1 ? $t('空运路线') : $t('海运路线')">-->
<!--            {{ getRouterNameById(list.lineId) || "/" }}-->
<!--          </el-descriptions-item>-->
<!--        </el-descriptions>-->
        <el-descriptions v-if="[3, 4].indexOf(list.transportId) > -1">
          <el-descriptions-item :label="$t('出货渠道')">
            {{ channelName || "/" }}
          </el-descriptions-item>
        </el-descriptions>
      </div>
      <el-descriptions class="card" v-if="[2, 3, 4].indexOf(list.transportId) > -1" v-show="qiTaTag">
        <el-descriptions-item :label="$t('是否双清')">
          <dict-tag :type="DICT_TYPE.ECW_DOUBLE_CLEAR" :value="list.transportVO.doubleClear"></dict-tag>
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions v-if="[3, 4].indexOf(list.transportId) > -1" v-show="qiTaTag">
        <el-descriptions-item :label="$t('航空公司')">
          {{ airlineCompany ? $l(airlineCompany, "company") : "/" }}
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions v-if="list.transportId == 2" v-show="qiTaTag">
        <el-descriptions-item :label="$t('船公司')">
          {{ shippingCompany ? $l(shippingCompany, "company") : "/" }}
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions v-if="[2, 3, 4].indexOf(list.transportId) > -1" v-show="qiTaTag">
        <el-descriptions-item :label="$t('清关证书')">
          <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="list.transportVO.customsClearCert"></dict-tag>
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions v-if="[2, 3, 4].indexOf(list.transportId) > -1" v-show="qiTaTag">
        <el-descriptions-item :label="$t('清关证书备注')">
          {{ list.transportVO.remarks || "/" }}
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions class="card" v-if="[3, 4].indexOf(list.transportId) > -1" v-show="qiTaTag">
        <el-descriptions-item :label="$t('是否拆包')">
          <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="list.transportVO.isUnpack"></dict-tag>
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions v-if="[3, 4].indexOf(list.transportId) > -1" v-show="qiTaTag">
        <el-descriptions-item :label="$t('单票立刻转运')">
          <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="list.transportVO.isSingleTicketTransport"></dict-tag>

          <span style="margin-left: 10px; color: #0000ff">{{ $t("注：若只有一件，货到仓库立即发，选“是”，多件需仓库集运待发，选“否”") }}</span>
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions v-show="qiTaTag">
        <el-descriptions-item :label="$t('特殊要求')">
          <dict-selector form-type="checkbox" :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple v-model="list.transportVO.packageType" :disabled="true" />
        </el-descriptions-item>
      </el-descriptions>
      <el-descriptions v-show="qiTaTag">
        <el-descriptions-item :label="$t('特殊要求备注')">
          {{ list.transportVO.packageRemarks || "/" }}
        </el-descriptions-item>
      </el-descriptions>
    </el-card>
    <customer-follow ref="customerFollow" v-if="customerFollowVisible" @close="customerFollowVisible = false" :customerService="curData.salesmanId" :customerNumber="curData.customerNumber" :offerId="offerId" />
  </div>
</template>

<script>
import { DICT_TYPE, getDictDatas, getDictData } from "@/utils/dict"
import { getOffer, deleteOffer } from "@/api/ecw/offer"
import { getProductAttrList } from "@/api/ecw/productAttr"
import { getCustomerList, getCustomer } from "@/api/ecw/customer"
import { getChannelList, getChannel } from "@/api/ecw/channel"
import { getTradeCityList } from "@/api/ecw/region"
import { getUnitList } from "@/api/ecw/unit"
import { getOrder } from "@/api/ecw/order"
import { getCurrencyList } from "@/api/ecw/currency"
import { getCustomerContactsSelect } from "@/api/ecw/customerContacts"
import { openedRouterList as getOpenedRouterList } from "@/api/ecw/warehouse"
import { calculationPrice } from "@/api/ecw/product"
import { getSupplier, getSupplierPage } from "@/api/ecw/supplier"
import Decimal from "decimal.js"
window.Decimal = Decimal

import CustomerFollow from "@/views/ecw/customer/components/customerFollow"
import { listServiceUser } from "@/api/system/user"
export default {
  name: "detail",
  components: { CustomerFollow },
  data() {
    return {
      DICT_TYPE,
      getDictData,
      customerFollowVisible: false,
      // 遮罩层
      loading: false,
      list: [],
      types: "package,bag",
      importance: 1,
      productAttrList: [],
      offerId: 0,
      //发货/收货人信息
      consigneeData: {},
      routerList: [],
      fee: {},
      channelName: "/",
      tradeCityList: [],
      productNames: {},
      currencyList: [],
      unitList: [],
      orderData: [],
      consignorData: {},
      customerSource: getDictDatas(DICT_TYPE.CUSTOMER_SOURCE),
      couponAvailableGroupDtoList: [], // 可用优惠
      couponTotalAmountList: [], // 优惠总额
      // 航空公司
      airlineCompany: null,
      // 船公司
      shippingCompany: null,
      curData: {},
      serviceUserList: [],
      qiTaTag: false
    }
  },
  computed: {
    // 根据id获取商品名称（显示优惠列表的时候用）
    getProductName() {
      return (prodId) => {
        if (!this.list) return this.$t("未知")
        let row = this.list.offerProdRespVOList.find((item) => item.prodId == prodId)
        if (!row) return this.$t("未知")
        return this.$l(row, "prodTitle")
      }
    },
    selectedRouter() {
      // otherService 1 送货上门，2非控货订单代收货款
      if (!this.list.lineId) return null
      return this.routerList.find((item) => item.id == this.list.lineId)
    },
    currentcyMap() {
      let map = {}
      this.currencyList.forEach((item) => {
        map[item.id] = this.$i18n.locale == "zh_CN" ? item.titleZh : item.titleEn
      })
      return map
    },
    unitMap() {
      let map = {}
      this.unitList.forEach((item) => {
        map[item.id] = this.$i18n.locale == "zh_CN" ? item.titleZh : item.titleEn
      })
      return map
    },
    // 总有优惠金额
    // 总有优惠金额
    // 总有优惠金额
    couponList() {
      let arr = []
      this.couponAvailableGroupDtoList.forEach((item) => {
        if (item.couponAvailableDtoList && item.couponAvailableDtoList.length) {
          // 只取第一个
          let it = item.couponAvailableDtoList[0]
          arr.push({
            prodId: item.prodId,
            type: it.type,
            titleZh: it.titleZh,
            titleEn: it.titleEn,
            endTime: it.endTime,
            reduceAmount: it.reduceAmount,
            reduceCurrencyId: it.reduceCurrencyId
          })
        }
      })
      return arr
    },
    // 计算返回的费用清单
    feeDtoList() {
      if (this.list && this.list.estCostVO) {
        return this.list.estCostVO.feeDtoList || []
      } else {
        return []
      }
    },
    // 清关费
    clearanceFeeList() {
      return this.feeDtoList.filter((item) => item.feeType == 2)
    },
    // 运费
    freightFeeList() {
      return this.feeDtoList.filter((item) => item.feeType == 1)
    },
    // 其他费用
    otherFeeList() {
      return this.feeDtoList.filter((item) => item.feeType == 3)
    },
    // 原价（清关费 + 运费）
    originalFeeList() {
      let arr = []
      this.clearanceFeeList.forEach((item) => {
        let it = {
          src: this.$t("清关费"),
          currencyId: item.currencyId,
          amount: Decimal(item.amount)
        }
        let freight = this.freightFeeList.find((fee) => fee.currencyId == item.currencyId)
        if (freight) {
          it.amount = it.amount.plus(freight.amount)
        }
        arr.push(it)
      })
      // 判断是否有运费单位不在清关费里的
      this.freightFeeList.forEach((item) => {
        if (!arr.find((arrItem) => arrItem.currencyId == item.currencyId)) {
          arr.push({
            src: this.$t("未计算的运费"),
            currencyId: item.currencyId,
            amount: Decimal(item.amount)
          })
        }
      })
      return arr
    },
    // 预计费用(原价 - 优惠金额)
    estimatedCosts() {
      let arr = []
      this.originalFeeList.forEach((item) => {
        let it = {
          currencyId: item.currencyId,
          amount: Decimal(item.amount)
        }
        let coupon = this.couponList.find((coupon) => coupon.reduceCurrencyId == item.currencyId)
        if (coupon) {
          it.amount = it.amount.minus(coupon.reduceAmount)
        }
        arr.push(it)
      })
      // 累加保价费
      const insuranceFeeIndex = arr.findIndex((item) => item.currencyId == this.insuranceFeeCurrency)
      const insuranceFee = this.list && this.list.estCostVO && this.list.estCostVO.insuranceFee
      if (insuranceFeeIndex > -1) {
        arr[insuranceFeeIndex].amount = arr[insuranceFeeIndex].amount.plus(insuranceFee || 0)
      } else {
        arr.push({
          currencyId: this.insuranceFeeCurrency,
          amount: Decimal(insuranceFee || 0)
        })
      }

      // 累加其他费用
      const otherFeeIndex = arr.findIndex((item) => item.currencyId == this.list.otherFeeCurrencyId)
      if (otherFeeIndex > -1) {
        arr[otherFeeIndex].amount = arr[otherFeeIndex].amount.plus(this.list.otherFee || 0)
      } else {
        if (this.list.otherFee > 0) {
          arr.push({
            currencyId: this.list.otherFeeCurrencyId,
            amount: Decimal(this.list.otherFee || 0)
          })
        }
      }
      return arr
    },
    // 保价费单位（路线里设置，默认美元）
    insuranceFeeCurrency() {
      return this.selectedRouter?.currencyUnit || 1
    }
  },
  created() {
    getCurrencyList().then((res) => (this.currencyList = res.data))
    getUnitList().then((res) => (this.unitList = res.data))
    getTradeCityList().then((res) => (this.tradeCityList = res.data))
    getProductAttrList().then((res) => (this.productAttrList = res.data))
    if (this.$route.query.offerId) {
      this.offerId = parseInt(this.$route.query.offerId)
      this.getList()
    }
  },
  methods: {
    handleAddOffer() {
      this.curData = this.list
      this.customerFollowVisible = true
      this.$nextTick(() => {
        this.$refs["customerFollow"].handleAdd()
      })
    },
    sourceLabel(data) {
      let label = ""
      var source = this.customerSource.find((item) => item.value == data)
      if (source) label = this.$i18n.locale == "zh_CN" ? source.label : source.labelEn
      return label
    },
    checkCode(data) {
      if (!data) {
        return ""
      }
      if (data.indexOf("+") == -1) {
        return "+" + data
      }
      return data
    },
    getOrderData(id) {
      let that = this
      that.loading = true
      // 执行查询
      getOrder(id).then((response) => {
        that.orderData = response.data
      })
    },
    getProductListWithDefaultValue() {
      let arr = []
      this.list.offerProdRespVOList.forEach((item) => {
        let tmp = {
          brand: item.brand,
          unit: item.unit,
          prodId: item.prodId,
          num: item.num,
          quantity: item.quantity,
          volume: item.volume,
          weight: item.weight,
          worth: item.worth,
          brandType: item.brandType || 0,
          prodAttrIds: item.prodAttrIds
        }
        arr.push(tmp)
      })
      return arr
    },
    // 计算商品运费
    calculationPrice() {
      calculationPrice({
        lineId: this.list.lineId,
        transportId: this.list.transportId,
        channelId: this.list.channelId,
        prodConditionParamList: this.getProductListWithDefaultValue(),
        consigneeCustomerContactsId: this.list.consigneeCustomerContactsId,
        consignorCustomerContactsId: this.list.consignorCustomerContactsId,
        customsType: this.list.customsType,
        isCargoControl: this.list.control,
        orderType: this.list.orderType
      })
        .then((res) => {
          this.$set(this, "fee", res.data.costDto)
          if (res.data.availableDto) {
            this.$set(this, "couponTotalAmountList", res.data.availableDto.couponTotalAmountList)
            this.$set(this, "couponAvailableGroupDtoList", res.data.availableDto.couponAvailableGroupDtoList)
          }
        })
        .finally(() => {
          this.calculating = false
        })
    },
    /** 查询列表 */
    getList() {
      let that = this
      that.loading = true
      // 执行查询
      getOffer(that.offerId).then((response) => {
        that.list = response.data
        if (that.list.channelId) {
          that.getChannelData()
        }
        that.calculationPrice()
        // if(that.list.orderId){
        //   that.getOrderData(that.list.orderId)
        // }
        getCustomerContactsSelect({ ids: [that.list.consignorId, that.list.consigneeId].join(",") }).then((res) => {
          let consignor = res.data.list.find((item) => item.customerContactsId == that.list.consignorId)
          if (consignor) that.consignorData = consignor
          let consignee = res.data.list.find((item) => item.customerContactsId == that.list.consigneeId)
          if (consignee) that.consigneeData = consignee
          that.getCnsigneeData()
        })
        listServiceUser().then((r) => {
            for (var a in r.data) {
              if(r.data[a].id == that.list.followUpSalesmanId) {
                this.$set(that.list, "followUpSalesmanName", r.data[a].nickname)
              }
            }
        })
        that.list.offerProdRespVOList.forEach((item) => {
          var arr = item.prodAttrIds.split(",")
          var prodAttrName = []
          arr.forEach((itemValue) => {
            var prodAttrCenter = this.productAttrList.filter((items) => items.id == itemValue)
            if (prodAttrCenter.length > 0) {
              prodAttrName.push(this.$i18n.locale == "zh_CN" ? prodAttrCenter[0].attrName : prodAttrCenter[0].attrNameEn)
            }
          })
          if (prodAttrName.length > 1) {
            item.prodAttrName = prodAttrName.join(",")
          } else if (prodAttrName.length == 1) {
            item.prodAttrName = prodAttrName[0]
          } else {
            item.prodAttrName = ""
          }
        })

        that.loading = false

        that.getOpenedRouterList()

        if (this.list.transportVO.airlineCompany) {
          getSupplier(this.list.transportVO.airlineCompany).then((res) => {
            if (res.data) {
              this.airlineCompany = res.data.companyZh
            }
          })
        }
        if (this.list.transportVO.shippingCompany) {
          getSupplier(this.list.transportVO.shippingCompany).then((res) => {
            if (res.data) {
              this.shippingCompany = res.data.companyZh
            }
          })
        }
      })
    },
    getCity(id) {
      var city = ""
      this.tradeCityList.forEach((item) => {
        if (item.id == id) {
          city = this.$i18n.locale == "zh_CN" ? item.titleZh : item.titleEn
        }
      })
      return city
    },
    getChannelData() {
      getChannel(this.list.channelId).then((res) => {
        this.channelName = res.data.nameZh
      })
    },
    // 获取路线
    getOpenedRouterList() {
      let params = {}
      if (this.list.departureId) {
        params.startCityId = this.list.departureId
      }
      if (this.list.objectiveId) {
        params.destCityId = this.list.objectiveId
      }
      getOpenedRouterList(params).then((res) => (this.routerList = res.data))
    },
    // 根据线路id显示线路名称
    getRouterNameById(routerId) {
      let router = this.routerList.find((item) => item.id == routerId)
      if (router) {
        return this.$i18n.locale == "zh_CN" ? router.startTitleZh : router.startTitleEn + " >>>" + this.$i18n.locale == "zh_CN" ? router.destTitleZh : router.destTitleEn
      }
      return "-"
    },
    // 获取发货/收货人
    getCnsigneeData() {
      let that = this
      if (that.consigneeData && that.consigneeData.customerId) {
        getCustomer(that.consigneeData.customerId).then((result) => {
          result.data.source = this.sourceLabel(result.data.source)
          that.$set(that.consigneeData, "source", result.data.source)
          that.$set(that.consigneeData, "address", result.data.address)
        })
      }
      if (that.consignorData && that.consignorData.customerId) {
        getCustomer(that.consignorData.customerId).then((ress) => {
          ress.data.source = this.sourceLabel(ress.data.source)
          that.$set(that.consignorData, "source", ress.data.source)
          that.$set(that.consignorData, "address", ress.data.address)
        })
      }
    },
    /** 跟进按钮操作 */
    handleAdd() {
      this.$router.push({
        path: "/offer/logList",
        query: {
          offerId: this.offerId,
          relationId: this.list.consignorId
        }
      })
    },
    toResult() {
      this.$router.push({
        path: "/offer/result",
        query: {
          offerId: this.offerId,
          number: this.list.number
        }
      })
    },
    /** 删除按钮操作 */
    handleDelete() {
      const offerId = this.offerId
      this.$confirm(this.$t("是否确认删除报价单管理编号为") + '"' + offerId + '"' + this.$t("的数据项") + "?")
        .then(function () {
          return deleteOffer(offerId)
        })
        .then(() => {
          this.$router.push({
            path: "/offer/result"
          })
          this.$message.success(this.$t("删除成功"))
        })
        .catch(() => {})
    }
  }
}
</script>

<style scoped>
.card-title {
  font-size: 18px;
  font-weight: bold;
  margin-top: 10px;
}
.offer-header {
  padding-bottom: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.line {
  display: flex;
  align-items: center;
}
.line el-descriptions {
  flex: 1;
}
.btn {
  width: 60%;
  display: flex;
  align-items: center;
  justify-content: space-around;
}
.title-font {
  font-size: 16px;
  font-weight: 600;
  margin-top: 20px;
}
.title-font label {
  margin-right: 20px;
}
.card {
  margin-top: 20px;
}

/deep/.el-table__fixed-footer-wrapper tbody td.el-table__cell .cell {
  font-size: 18px;
  font-weight: bold;
}
/deep/.el-table__footer-wrapper tbody td.el-table__cell .cell {
  font-size: 18px;
  font-weight: bold;
}
</style>
