<template> <div class="app-container"> <el-card> <div slot="header" class="card-title">{{$t('报价单详情')}}</div> <!-- 列表 --> <div class="offer-header"> <span style="font-size: 15px;">{{$t('报价单号')}}:{{list.number}}</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="handleAdd">{{$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"> <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> <el-descriptions :column="3" border class="card" v-if="list.consigneeId"> <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> <el-descriptions :column="4" class="card"> <el-descriptions-item :label="$t('运输方式')"> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="list.transportId" /> </el-descriptions-item> <el-descriptions-item :label="$t('出货渠道')" v-if="[3,4].indexOf(list.transportId) > -1"> {{channelName}} </el-descriptions-item> </el-descriptions> <el-descriptions :column="4" class="card"> <el-descriptions-item :label="$t('始发城市')"> {{getCity(list.departureId)}} </el-descriptions-item> <el-descriptions-item :label="$t('目的城市')"> {{getCity(list.objectiveId)}} </el-descriptions-item> </el-descriptions> <el-descriptions :column="4" class="card"> <el-descriptions-item :label="$t('线路')"> {{getRouterNameById(list.lineId)}} </el-descriptions-item> </el-descriptions> <el-descriptions :column="4" class="card"> <el-descriptions-item :label="$t('报价单状态')"> <dict-tag :type="DICT_TYPE.ECW_OFFER_STATUS" :value="list.status" /> </el-descriptions-item> </el-descriptions> <el-descriptions :column="4" class="card" v-if="list.status==5"> <el-descriptions-item :label="$t('输单原因')"> {{list.reason}} </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 :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="商品类型" align="center" prop="goodsType" /> --> <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> <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="card"> <div slot="header" class="card-title">{{$t('费用小计')}}</div> <el-descriptions border class="card" :column="5"> <el-descriptions-item :label="$t('总件数')+':'"> {{list.estCostVO?list.estCostVO.totalNum||'0':0}} </el-descriptions-item> <el-descriptions-item :label="$t('总体积')+':'"> {{list.estCostVO?(list.estCostVO.totalVolume+'m³')||'0':0}} </el-descriptions-item> <el-descriptions-item :label="$t('总重量')+':'"> {{list.estCostVO?(list.estCostVO.totalWeight+'kg')||'0':0}} </el-descriptions-item> <el-descriptions-item :label="$t('总数量')+':'"> {{list.estCostVO?list.estCostVO.totalQuantity||'0':0}} </el-descriptions-item> <el-descriptions-item :label="$t('总货值(RMB)')+':'"> {{list.estCostVO?list.estCostVO.totalWorth||'0':0}} </el-descriptions-item> <!-- <el-descriptions-item :label="报价费:"> {{list.estCostVO?list.estCostVO.insuranceFee||'0':0}} </el-descriptions-item> --> </el-descriptions> <!-- <el-descriptions border class="card"> <el-descriptions-item :label="佣金类型" :span="2" class="card"> <dict-selector :type="DICT_TYPE.COMMISSION_TYPE" form-type="radio" fomtter="number" :value="list.commissionType" defaultable /> </el-descriptions-item> </el-descriptions> --> </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"> <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"> <el-descriptions-item :label="$t('预计结束时间')"> {{list.stopTime||'/'}} </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"> <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 > <el-descriptions-item :label="$t('备注')"> {{list.remarks||'/'}} </el-descriptions-item> </el-descriptions> </el-card> <el-card class="card" v-if='list.transportVO'> <div slot="header" class="card-title"> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="list.transportId"></dict-tag> </div> <div class="line"> <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"> <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"> <el-descriptions-item :label="$t('航空公司')"> {{airlineCompany ? $l(airlineCompany, 'company') : '/'}} </el-descriptions-item> </el-descriptions> <el-descriptions v-if="list.transportId==2"> <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"> <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"> <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"> <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"> <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> <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> <el-descriptions-item :label="$t('特殊要求备注')"> {{list.transportVO.packageRemarks||'/'}} </el-descriptions-item> </el-descriptions> </el-card> </div> </template> <script> import {DICT_TYPE,getDictDatas} 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 export default { name: "detail", data() { return { // 遮罩层 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, }; }, 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 = this.$route.query.offerId this.getList(); } }, methods: { 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() }) 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; } </style>