detail.vue 35 KB
Newer Older
我在何方's avatar
我在何方 committed
1 2 3
<template>
  <div class="app-container">
        <el-card>
我在何方's avatar
我在何方 committed
4
            <div slot="header" class="card-title">{{$t('报价单详情')}}</div>
我在何方's avatar
我在何方 committed
5 6
          <!-- 列表 -->
          <div class="offer-header">
我在何方's avatar
我在何方 committed
7
              <span style="font-size: 15px;">{{$t('报价单号')}}{{list.number}}</span>
我在何方's avatar
我在何方 committed
8
              <div class="btns">
我在何方's avatar
我在何方 committed
9
            <el-button size="mini" type="primary" v-if="list.status!=5"  @click="$router.push('edit?id=' + offerId)">{{$t('编辑')}}</el-button>
我在何方's avatar
我在何方 committed
10 11
                <el-button type="primary" v-if="[1,3,7].indexOf(list.status) > -1"  size="mini" @click="handleAdd">{{$t('跟进')}}</el-button>
                <el-button type="primary"  v-if="[3,7].indexOf(list.status) > -1" size="mini" @click="toResult">{{$t('结果')}}</el-button>
我在何方's avatar
我在何方 committed
12
                <el-button size="mini" v-if="[1,3,7].indexOf(list.status) > -1" type="primary" @click.native="$router.push('/offer/special?offerId=' + offerId)" >{{$t('特价')}}</el-button>
13
                <el-button type="danger" size="mini" @click="handleDelete">{{$t('删除')}}</el-button>
我在何方's avatar
我在何方 committed
14 15 16 17
              </div>
          </div>
          <div>
            <div class="title-font">
我在何方's avatar
我在何方 committed
18
              <label>{{$t('报价单所属')}}{{list.relation?list.relation==1?$t('发货人'):$t('收货人'):$t('发货人')}}</label>
我在何方's avatar
我在何方 committed
19 20
            </div>
                <el-descriptions :column="3" border class="card">
我在何方's avatar
我在何方 committed
21
                    <el-descriptions-item :label="$t('发货人')+':'">
我在何方's avatar
我在何方 committed
22
                        {{consignorData.contactsName||$t('')}}
我在何方's avatar
我在何方 committed
23
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
24
                    <el-descriptions-item :label="$t('手机号')+':'">
我在何方's avatar
我在何方 committed
25
                      {{consignorData?(checkCode(consignorData.areaCode)+consignorData.phoneNew)||$t(''):$t('')}}
我在何方's avatar
我在何方 committed
26
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
27
                    <el-descriptions-item :label="$t('联系地址')+':'">
我在何方's avatar
我在何方 committed
28
                      {{consignorData.address||$t('')}}
我在何方's avatar
我在何方 committed
29
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
30
                    <el-descriptions-item :label="$t('客户来源')+':'">
我在何方's avatar
我在何方 committed
31
                          {{consignorData.source||$t('')}}
我在何方's avatar
我在何方 committed
32
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
33
                    <el-descriptions-item :label="$t('发货人公司名称')+':'">
我在何方's avatar
我在何方 committed
34
                      {{consignorData.company||$t('')}}
我在何方's avatar
我在何方 committed
35
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
36
                    <el-descriptions-item :label="$t('社交软件')+':'">
我在何方's avatar
我在何方 committed
37 38
                       <dict-tag :type="DICT_TYPE.SOCIAL" :value="consignorData.social" />
                       {{consignorData.socialNumber?('('+consignorData.socialNumber+')'):''}}
我在何方's avatar
我在何方 committed
39 40 41 42
                    </el-descriptions-item>
                </el-descriptions>

               <el-descriptions :column="3" border class="card">
我在何方's avatar
我在何方 committed
43
                   <el-descriptions-item :label="$t('收货人')+':'">
我在何方's avatar
我在何方 committed
44 45
                    {{consigneeData.contactsName||$t('')}}
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
46
                    <el-descriptions-item :label="$t('手机号')+':'">
我在何方's avatar
我在何方 committed
47 48
                      {{consigneeData?(checkCode(consigneeData.areaCode)+consigneeData.phoneNew)||$t(''):$t('')}}
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
49
                    <el-descriptions-item :label="$t('联系地址')+':'">
我在何方's avatar
我在何方 committed
50 51
                      {{consigneeData.address||$t('')}}
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
52
                    <el-descriptions-item :label="$t('客户来源')+':'">
我在何方's avatar
我在何方 committed
53 54
                          {{consigneeData.source||$t('')}}
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
55
                    <el-descriptions-item :label="$t('发货人公司名称')+':'">
我在何方's avatar
我在何方 committed
56 57
                      {{consigneeData.company||$t('')}}
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
58
                    <el-descriptions-item :label="$t('社交软件')+':'">
我在何方's avatar
我在何方 committed
59 60
                       <dict-tag :type="DICT_TYPE.SOCIAL" :value="consigneeData.social" />
                       {{consigneeData.socialNumber?('('+consigneeData.socialNumber+')'):''}}
我在何方's avatar
我在何方 committed
61
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
62
               </el-descriptions>
我在何方's avatar
我在何方 committed
63
                <el-descriptions :column="4" class="card">
我在何方's avatar
我在何方 committed
64
                    <el-descriptions-item :label="$t('运输方式')">
我在何方's avatar
我在何方 committed
65 66
                         <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="list.transportId" />
                    </el-descriptions-item>
我在何方's avatar
我在何方 committed
67
                    <el-descriptions-item :label="$t('出货渠道')" v-if="[3,4].indexOf(list.transportId) > -1">
我在何方's avatar
我在何方 committed
68 69 70 71
                      {{channelName}}
                    </el-descriptions-item>
                 </el-descriptions>
                 <el-descriptions :column="4" class="card">
我在何方's avatar
我在何方 committed
72
                     <el-descriptions-item :label="$t('始发城市')">
我在何方's avatar
我在何方 committed
73 74
                        {{getCity(list.departureId)}}
                     </el-descriptions-item>
我在何方's avatar
我在何方 committed
75
                     <el-descriptions-item :label="$t('目的城市')">
我在何方's avatar
我在何方 committed
76 77 78 79
                        {{getCity(list.objectiveId)}}
                     </el-descriptions-item>
                  </el-descriptions>
                <el-descriptions :column="4" class="card">
我在何方's avatar
我在何方 committed
80
                    <el-descriptions-item :label="$t('线路')">
我在何方's avatar
我在何方 committed
81 82 83
                      {{getRouterNameById(list.lineId)}}
                    </el-descriptions-item>
                 </el-descriptions>
我在何方's avatar
我在何方 committed
84 85 86 87
          </div>
        </el-card>

        <el-card class="card">
我在何方's avatar
我在何方 committed
88
          <div slot="header" class="card-title">{{$t('商品信息')}}</div>
我在何方's avatar
我在何方 committed
89 90
          <div style="overflow: auto;">
          <el-table v-loading="loading" border :data="list.offerProdRespVOList">
我在何方's avatar
我在何方 committed
91
                <el-table-column :label="$t('序号')" width="60px" fixed>
我在何方's avatar
我在何方 committed
92 93 94 95
                  <template slot-scope="scope">
                      {{scope.$index + 1}}
                  </template>
                </el-table-column>
我在何方's avatar
我在何方 committed
96 97 98 99
<!--                <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">
我在何方's avatar
我在何方 committed
100
                  <template slot-scope="scope">
我在何方's avatar
我在何方 committed
101
                      <dict-tag :value="scope.row.brand" :type="DICT_TYPE.ECW_IS_BRAND" defaultable />
我在何方's avatar
我在何方 committed
102 103
                  </template>
                </el-table-column>
我在何方's avatar
我在何方 committed
104 105
                <el-table-column :label="$t('件数')" width="90px" prop="num" />
                <el-table-column :label="$t('包装单位')">
我在何方's avatar
我在何方 committed
106
                  <template slot-scope="scope">
107
                      <dict-tag :value="scope.row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" defaultable />
我在何方's avatar
我在何方 committed
108 109
                  </template>
                </el-table-column>
我在何方's avatar
我在何方 committed
110
                <!-- <el-table-column :label="$t('箱规') + '(m)'" width="120px" prop="boxGauge" /> -->
dragondean@qq.com's avatar
dragondean@qq.com committed
111
                <el-table-column :label="$t('体积') + '(m³)'" width="100px" prop="volume" />
我在何方's avatar
我在何方 committed
112
                <el-table-column :label="$t('数量')" width="100px" prop="quantity" />
dragondean@qq.com's avatar
dragondean@qq.com committed
113 114
                <el-table-column :label="$t('重量') + '(kg)'" width="100px" prop="weight" />
                <el-table-column :label="$t('货值') + '(RMB)'" width="100px" prop="worth" />
我在何方's avatar
我在何方 committed
115 116
                <el-table-column :label="$t('商品特性')" width="200px" prop="prodAttrName" />
                 <el-table-column :label="$t('是否预付')">
我在何方's avatar
我在何方 committed
117
                   <template slot-scope="scope">
我在何方's avatar
我在何方 committed
118
                      {{scope.row.isPayAdvance==1?$t('预付'):$t('到付')}}
我在何方's avatar
我在何方 committed
119 120 121
                   </template>
                 </el-table-column>

我在何方's avatar
我在何方 committed
122
                <el-table-column :label="$t('成交价')" width="200px">
123 124 125 126 127 128 129 130 131 132 133 134 135 136
                  <template slot-scope="{row}">
                    <template v-if="row.charging ==1">
                      <template v-if="!row.seaFreight">未报价</template>
                      <template>{{$t('全包价')}} {{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}</template>
                    </template>
                    <template v-else-if="!row.seaFreight && !row.clearanceFreight">未报价</template>
                    <template v-else>
                      <div>
                          {{$t('运费')}}{{row.oneSeaFreight}} {{currentcyMap[row.seaFreightCurrency]}} / {{unitMap[row.seaFreightVolume]}}
                      </div>
                      <div>
                          {{$t('清关费')}}{{row.oneClearanceFreight}} {{currentcyMap[row.clearanceFreightCurrency]}} / {{unitMap[row.clearanceFreightVolume]}}
                      </div>
                    </template>
我在何方's avatar
我在何方 committed
137 138 139 140 141 142
                  </template>
                </el-table-column>
              </el-table>
              </div>
        </el-card>
        <el-card class="card">
我在何方's avatar
我在何方 committed
143
          <div slot="header" class="card-title">{{$t('费用小计')}}</div>
我在何方's avatar
我在何方 committed
144
            <el-descriptions border class="card" :column="5">
我在何方's avatar
我在何方 committed
145
              <el-descriptions-item :label="$t('总件数')+':'">
146
                  {{list.estCostVO?list.estCostVO.totalNum||'0':0}}
我在何方's avatar
我在何方 committed
147
              </el-descriptions-item>
我在何方's avatar
我在何方 committed
148
              <el-descriptions-item :label="$t('总体积')+':'">
我在何方's avatar
我在何方 committed
149 150
                {{list.estCostVO?(list.estCostVO.totalVolume+'m³')||'0':0}}
              </el-descriptions-item>
我在何方's avatar
我在何方 committed
151
              <el-descriptions-item :label="$t('总重量')+':'">
我在何方's avatar
我在何方 committed
152 153
                {{list.estCostVO?(list.estCostVO.totalWeight+'kg')||'0':0}}
              </el-descriptions-item>
我在何方's avatar
我在何方 committed
154
              <el-descriptions-item :label="$t('总数量')+':'">
我在何方's avatar
我在何方 committed
155 156
                {{list.estCostVO?list.estCostVO.totalQuantity||'0':0}}
              </el-descriptions-item>
我在何方's avatar
我在何方 committed
157
              <el-descriptions-item :label="$t('总货值(RMB)')+':'">
158
                  {{list.estCostVO?list.estCostVO.totalWorth||'0':0}}
我在何方's avatar
我在何方 committed
159
              </el-descriptions-item>
我在何方's avatar
我在何方 committed
160
<!--              <el-descriptions-item :label="报价费:">
161
                {{list.estCostVO?list.estCostVO.insuranceFee||'0':0}}
我在何方's avatar
我在何方 committed
162
              </el-descriptions-item> -->
我在何方's avatar
我在何方 committed
163 164
          </el-descriptions>
<!--          <el-descriptions border class="card">
我在何方's avatar
我在何方 committed
165
            <el-descriptions-item :label="佣金类型" :span="2" class="card">
我在何方's avatar
我在何方 committed
166 167 168 169
                <dict-selector :type="DICT_TYPE.COMMISSION_TYPE" form-type="radio" fomtter="number"  :value="list.commissionType" defaultable />
            </el-descriptions-item>
          </el-descriptions> -->
        </el-card>
我在何方's avatar
我在何方 committed
170 171 172 173 174 175 176 177
        <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}} {{$t('美元')}}
                </el-descriptions-item>
                <el-descriptions-item :label="$t('总运费')">
我在何方's avatar
我在何方 committed
178
                    <template v-if="freightFeeList.length>0" v-for="item in freightFeeList">
我在何方's avatar
我在何方 committed
179 180 181
                        <div :key="item.currencyId">{{item.amount || 0}}{{currentcyMap[item.currencyId]}}</div>
                    </template>
                </el-descriptions-item>
我在何方's avatar
我在何方 committed
182 183 184
                <template v-if="freightFeeList.length==0">
                    0
                </template>
我在何方's avatar
我在何方 committed
185 186
                <!--代收货款,只有非控货订单、并且线路开通了代收货款后,才显示是否代收货款选项-->
                <el-descriptions-item :label="$t('总清关费')">
我在何方's avatar
我在何方 committed
187
                    <template v-if="clearanceFeeList.length>0" v-for="item in clearanceFeeList">
我在何方's avatar
我在何方 committed
188 189
                        <div :key="item.currencyId">{{item.amount || 0}}{{currentcyMap[item.currencyId]}}</div>
                    </template>
我在何方's avatar
我在何方 committed
190 191 192
                    <template v-if="clearanceFeeList.length==0">
                        0
                    </template>
我在何方's avatar
我在何方 committed
193 194
                </el-descriptions-item>
                <el-descriptions-item :label="$t('其他费用')">
我在何方's avatar
我在何方 committed
195
                   <template v-if="otherFeeList.length>0" v-for="item in otherFeeList">
我在何方's avatar
我在何方 committed
196 197
                       <div :key="item.currencyId">{{item.amount || 0}}{{currentcyMap[item.currencyId]}}</div>
                   </template>
我在何方's avatar
我在何方 committed
198 199 200
                   <template v-if="otherFeeList.length==0">
                       0
                   </template>
我在何方's avatar
我在何方 committed
201 202
                </el-descriptions-item>
                <el-descriptions-item :label="$t('原价')" :span="2">
我在何方's avatar
我在何方 committed
203
                    <template v-if="originalFeeList.length>0" v-for="item in originalFeeList">
我在何方's avatar
我在何方 committed
204 205
                        <div :key="item.currencyId">{{item.amount || 0}}{{currentcyMap[item.currencyId]}}</div>
                    </template>
我在何方's avatar
我在何方 committed
206 207 208
                    <template v-if="originalFeeList.length==0">
                        0
                    </template>
我在何方's avatar
我在何方 committed
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
                </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}}.
                        <dict-tag :type="DICT_TYPE.ECW_COUPON_TYPE" :value="scope.row.type" />
<!--                        {{$l(productNames[scope.row.prodId], 'title') || $t('未知')}} -->
                    </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">
我在何方's avatar
我在何方 committed
241
                <el-descriptions-item :label="$t('优惠费用')"  v-if="couponTotalAmountList && couponTotalAmountList.length>0">
我在何方's avatar
我在何方 committed
242 243 244 245 246
                    <div v-for="(item, discountIndex) in couponTotalAmountList" :key="discountIndex">
                        {{item.totalAmount}} {{currentcyMap[item.currencyId]}}
                    </div>
                </el-descriptions-item>
                <el-descriptions-item :label="$t('预计费用')">
我在何方's avatar
我在何方 committed
247
                    <template >
我在何方's avatar
我在何方 committed
248 249 250 251 252
                      <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>
我在何方's avatar
我在何方 committed
253 254 255 256
                    </template>
                </el-descriptions-item>
            </el-descriptions>
        </el-card>
我在何方's avatar
我在何方 committed
257
        <el-card class="card">
我在何方's avatar
我在何方 committed
258 259 260
          <div slot="header" class="card-title">{{$t('通用信息')}}</div>
            <el-descriptions :column="4">
              <el-descriptions-item :label="$t('唛头')">
我在何方's avatar
我在何方 committed
261
                  {{list.marks||'/'}}
我在何方's avatar
我在何方 committed
262 263 264 265 266 267 268
              </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('预计结束时间')">
我在何方's avatar
我在何方 committed
269
                  {{list.stopTime||'/'}}
我在何方's avatar
我在何方 committed
270 271 272 273 274
              </el-descriptions-item>
              <el-descriptions-item :label="$t('控货')">
                   {{list.control?$t('是'):$t('否')}}
               </el-descriptions-item>
               <el-descriptions-item :label="$t('竞争对手')">
我在何方's avatar
我在何方 committed
275
                  {{list.competitor||'/'}}
我在何方's avatar
我在何方 committed
276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291
                </el-descriptions-item>
                <el-descriptions-item :label="$t('重要程度')">
                    <el-rate v-model="list.importance"></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('备注')">
我在何方's avatar
我在何方 committed
292
                   {{list.remarks||'/'}}
我在何方's avatar
我在何方 committed
293 294 295 296
               </el-descriptions-item>
          </el-descriptions>
        </el-card>
        <el-card class="card" v-if='list.transportVO'>
我在何方's avatar
我在何方 committed
297
          <div slot="header" class="card-title">
我在何方's avatar
我在何方 committed
298
            <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="list.transportId"></dict-tag>
我在何方's avatar
我在何方 committed
299 300
          </div>
          <div class="line">
我在何方's avatar
我在何方 committed
301
            <el-descriptions>
我在何方's avatar
我在何方 committed
302
                <el-descriptions-item :label="[3,4].indexOf(list.transportId)>-1?$t('空运路线'):$t('海运路线')">
我在何方's avatar
我在何方 committed
303
                    {{getRouterNameById(list.lineId)||'/'}}
我在何方's avatar
我在何方 committed
304 305
                </el-descriptions-item>
            </el-descriptions>
我在何方's avatar
我在何方 committed
306
            <el-descriptions v-if="[3,4].indexOf(list.transportId) > -1">
我在何方's avatar
我在何方 committed
307
               <el-descriptions-item :label="$t('出货渠道')">
我在何方's avatar
我在何方 committed
308
                   {{channelName||'/'}}
我在何方's avatar
我在何方 committed
309 310 311
                </el-descriptions-item>
            </el-descriptions>
          </div>
我在何方's avatar
我在何方 committed
312
          <el-descriptions class="card" v-if="[2,3,4].indexOf(list.transportId) > -1">
我在何方's avatar
我在何方 committed
313 314
              <el-descriptions-item :label="$t('是否双清')">
                  <dict-tag :type="DICT_TYPE.ECW_DOUBLE_CLEAR" :value="list.transportVO.doubleClear"></dict-tag>
我在何方's avatar
我在何方 committed
315 316
              </el-descriptions-item>
          </el-descriptions>
我在何方's avatar
我在何方 committed
317
          <el-descriptions v-if="[3,4].indexOf(list.transportId) > -1">
我在何方's avatar
我在何方 committed
318
              <el-descriptions-item :label="$t('航空公司')">
我在何方's avatar
我在何方 committed
319
                 {{getSupplierData(list.transportVO.airlineCompany)||'/'}}
我在何方's avatar
我在何方 committed
320 321
              </el-descriptions-item>
          </el-descriptions>
我在何方's avatar
我在何方 committed
322
          <el-descriptions v-if="list.transportId==2">
我在何方's avatar
我在何方 committed
323
              <el-descriptions-item :label="$t('船公司')">
我在何方's avatar
我在何方 committed
324
                 {{getSupplierData(list.transportVO.shippingCompany)||'/'}}
我在何方's avatar
我在何方 committed
325 326
              </el-descriptions-item>
          </el-descriptions>
我在何方's avatar
我在何方 committed
327
          <el-descriptions v-if="[2,3,4].indexOf(list.transportId) > -1">
我在何方's avatar
我在何方 committed
328 329
              <el-descriptions-item :label="$t('清关证书')">
                 <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="list.transportVO.customsClearCert"></dict-tag>
我在何方's avatar
我在何方 committed
330 331
              </el-descriptions-item>
          </el-descriptions>
我在何方's avatar
我在何方 committed
332
          <el-descriptions v-if="[2,3,4].indexOf(list.transportId) > -1">
我在何方's avatar
我在何方 committed
333
              <el-descriptions-item :label="$t('清关证书备注')">
我在何方's avatar
我在何方 committed
334
                 {{list.transportVO.remarks||'/'}}
我在何方's avatar
我在何方 committed
335 336
              </el-descriptions-item>
          </el-descriptions>
我在何方's avatar
我在何方 committed
337
          <el-descriptions class="card" v-if="[3,4].indexOf(list.transportId) > -1">
我在何方's avatar
我在何方 committed
338 339
              <el-descriptions-item :label="$t('是否拆包')">
                 <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="list.transportVO.isUnpack"></dict-tag>
我在何方's avatar
我在何方 committed
340 341
              </el-descriptions-item>
          </el-descriptions>
我在何方's avatar
我在何方 committed
342
          <el-descriptions v-if="[3,4].indexOf(list.transportId) > -1">
我在何方's avatar
我在何方 committed
343 344
              <el-descriptions-item :label="$t('单票立刻转运')">
                <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="list.transportVO.isSingleTicketTransport"></dict-tag>
我在何方's avatar
我在何方 committed
345

我在何方's avatar
我在何方 committed
346
                   <span style="margin-left:10px;color: #0000FF;">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span>
我在何方's avatar
我在何方 committed
347 348 349
              </el-descriptions-item>

          </el-descriptions>
我在何方's avatar
我在何方 committed
350
          <el-descriptions>
我在何方's avatar
我在何方 committed
351 352
              <el-descriptions-item :label="$t('特殊要求')">
                 <dict-selector  form-type="checkbox"  :type="DICT_TYPE.ORDER_SPECIAL_NEEDS" multiple  v-model="list.transportVO.packageType" :disabled="true" />
我在何方's avatar
我在何方 committed
353 354
              </el-descriptions-item>
          </el-descriptions>
我在何方's avatar
我在何方 committed
355
          <el-descriptions>
我在何方's avatar
我在何方 committed
356
              <el-descriptions-item :label="$t('特殊要求备注')">
我在何方's avatar
我在何方 committed
357
                {{list.transportVO.packageRemarks||'/'}}
我在何方's avatar
我在何方 committed
358 359 360
              </el-descriptions-item>
          </el-descriptions>
        </el-card>
我在何方's avatar
我在何方 committed
361

我在何方's avatar
我在何方 committed
362 363 364 365
  </div>
</template>

<script>
我在何方's avatar
我在何方 committed
366
  import {DICT_TYPE,getDictDatas} from  '@/utils/dict'
我在何方's avatar
我在何方 committed
367 368 369
  import {getOffer,deleteOffer} from '@/api/ecw/offer'
  import {getProductAttrList} from '@/api/ecw/productAttr'
  import {getCustomerList,getCustomer} from '@/api/ecw/customer'
370
   import {getChannelList,getChannel} from '@/api/ecw/channel'
我在何方's avatar
我在何方 committed
371 372 373 374 375
   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'
376
   import {openedRouterList as getOpenedRouterList} from '@/api/ecw/warehouse'
我在何方's avatar
我在何方 committed
377 378
   import {calculationPrice} from '@/api/ecw/product'
   import {getSupplier, getSupplierPage} from '@/api/ecw/supplier'
我在何方's avatar
我在何方 committed
379 380 381
   import Decimal from 'decimal.js'
   window.Decimal=  Decimal

我在何方's avatar
我在何方 committed
382 383 384 385 386 387 388 389 390 391
  export default {
    name: "detail",
    data() {
      return {
        // 遮罩层
        loading: false,
        list: [],
        types:'package,bag',
        importance:1,
        productAttrList:[],
392
        offerId:0,
我在何方's avatar
我在何方 committed
393
        //发货/收货人信息
我在何方's avatar
我在何方 committed
394
        consigneeData:{},
我在何方's avatar
我在何方 committed
395
        routerList:[],
我在何方's avatar
我在何方 committed
396
        fee:{},
我在何方's avatar
我在何方 committed
397 398
        channelName:'/',
        tradeCityList:[],
我在何方's avatar
我在何方 committed
399
        productNames: {},
我在何方's avatar
我在何方 committed
400 401
        currencyList:[],
        unitList:[],
我在何方's avatar
我在何方 committed
402
        orderData:[],
我在何方's avatar
我在何方 committed
403 404
        consignorData:{},
        customerSource: getDictDatas(DICT_TYPE.CUSTOMER_SOURCE),
我在何方's avatar
我在何方 committed
405 406
        couponAvailableGroupDtoList: [], // 可用优惠
        couponTotalAmountList: [], // 优惠总额
我在何方's avatar
我在何方 committed
407 408
      };
    },
我在何方's avatar
我在何方 committed
409 410 411 412 413 414 415 416 417 418 419 420 421 422
    computed:{
      currentcyMap(){
          let map = {}
          this.currencyList.forEach(item => {
              map[item.id] = item.titleZh
          })
          return map
      },
      unitMap(){
          let map = {}
          this.unitList.forEach(item => {
              map[item.id] = item.titleZh
          })
          return map
我在何方's avatar
我在何方 committed
423 424
      },
      // 总有优惠金额
我在何方's avatar
我在何方 committed
425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445
    // 总有优惠金额
   // 总有优惠金额
    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
    },
我在何方's avatar
我在何方 committed
446 447
      // 计算返回的费用清单
      feeDtoList(){
我在何方's avatar
我在何方 committed
448 449 450 451 452
          if(this.list&&this.list.estCostVO){
            return this.list.estCostVO.feeDtoList || []
          }else{
            return []
          }
我在何方's avatar
我在何方 committed
453 454 455 456 457 458 459 460 461 462 463
      },
      // 清关费
      clearanceFeeList(){
          return this.feeDtoList.filter(item => item.feeType == 2)
      },
      // 运费
      freightFeeList(){
          return this.feeDtoList.filter(item => item.feeType == 1)
      },
      // 其他费用
      otherFeeList(){
我在何方's avatar
我在何方 committed
464
          return this.feeDtoList.filter(item => item.feeType == 3)
我在何方's avatar
我在何方 committed
465 466 467 468 469 470 471 472 473 474 475 476
      },
      // 原价(清关费 + 运费)
      originalFeeList(){
          let arr = []
          this.clearanceFeeList.forEach(item => {
              let it = {...item}
              let freight = this.freightFeeList.find(fee => fee.currencyId == item.currencyId)
              if(freight){
                  it.amount += freight.amount
              }
              arr.push(it)
          })
我在何方's avatar
我在何方 committed
477 478 479 480 481 482 483 484 485 486 487 488
          this.freightFeeList.forEach(item => {
              if(!arr.find(items=>items.currencyId==item.currencyId)){
                  let its = {...item}
                  // let freights = this.clearanceFeeList.find(fee => fee.currencyId == item.currencyId)
                  // if(freights){
                  //     its.amount += freights.amount
                  // }
                  arr.push(its)
              }

          })

我在何方's avatar
我在何方 committed
489 490 491 492
          return arr
      },
      // 预计费用(原价 - 优惠金额)
      estimatedCosts(){
我在何方's avatar
我在何方 committed
493 494 495 496 497 498 499 500 501
          // let arr = []
          // this.originalFeeList.forEach(item => {
          //     let it = {...item}
          //     let coupon = this.couponList.find(coupon => coupon.reduceCurrencyId == item.currencyId)
          //     if(coupon){
          //         it.amount -= coupon.reduceAmount
          //     }
          //     arr.push(it)
          // })
我在何方's avatar
我在何方 committed
502
          let arr = []
我在何方's avatar
我在何方 committed
503 504
          let withInsuranceFee = false
          let withOtherFee = false
我在何方's avatar
我在何方 committed
505
          this.originalFeeList.forEach(item => {
我在何方's avatar
我在何方 committed
506 507 508 509
              let it = {
                  currencyId: item.currencyId,
                  amount: Decimal(item.amount)
              }
我在何方's avatar
我在何方 committed
510 511
              let coupon = this.couponList.find(coupon => coupon.reduceCurrencyId == item.currencyId)
              if(coupon){
我在何方's avatar
我在何方 committed
512 513
                  it.amount = it.amount.minus(coupon.reduceAmount)
              }
我在何方's avatar
我在何方 committed
514 515 516 517 518 519 520
              // if(this.list.otherFee && this.list.otherFeeCurrencyId == item.currencyId){
              //     it.amount = it.amount.plus(this.list.otherFee)
              //     withOtherFee = true
              // }
              let otherFee = this.otherFeeList.find(fee => fee.currencyId == item.currencyId)
              if(otherFee){
                  it.amount += otherFee.amount
我在何方's avatar
我在何方 committed
521 522 523 524 525 526
                  withOtherFee = true
              }
              // 保价费(美元)
              if(item.currencyId == 1 && this.fee && this.fee.insuranceFee){
                  it.amount = it.amount.plus(this.fee.insuranceFee)
                  withInsuranceFee = true
我在何方's avatar
我在何方 committed
527 528 529
              }
              arr.push(it)
          })
我在何方's avatar
我在何方 committed
530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550

          // 如果没有累加其他费用,则另外增加货币
          if(!withOtherFee && this.list.otherFee){
              let fee = {
                  currencyId: this.list.otherFeeCurrencyId,
                  amount: Decimal(this.list.otherFee)
              }

              // 如果保价费跟其他费用是同一种货币(都是美元)
              if(!withInsuranceFee && this.fee && this.fee.insuranceFee && this.list.otherFeeCurrencyId == 1){
                  fee.amount = fee.amount.plus(this.fee.insuranceFee)
              }
            arr.push(fee)
            }
            // 没有累加保价费(没有美元计价)但是有保价费则需要加上去
            if(!withInsuranceFee && this.fee && this.fee.insuranceFee){
                arr.push({
                    currencyId: 1,
                    amount: Decimal(this.fee.insuranceFee)
                })
            }
我在何方's avatar
我在何方 committed
551 552 553 554 555 556 557 558 559
            this.otherFeeList.forEach(item => {
                if(!arr.find(items=>items.currencyId==item.currencyId)){
                    let its = {...item}
                    // let freights = this.clearanceFeeList.find(fee => fee.currencyId == item.currencyId)
                    // if(freights){
                    //     its.amount += freights.amount
                    // }
                    arr.push(its)
                }
我在何方's avatar
我在何方 committed
560

我在何方's avatar
我在何方 committed
561
            })
我在何方's avatar
我在何方 committed
562 563
            return arr
      }
我在何方's avatar
我在何方 committed
564
    },
我在何方's avatar
我在何方 committed
565
    created() {
我在何方's avatar
我在何方 committed
566 567 568
      getCurrencyList().then(res => this.currencyList = res.data)
      getUnitList().then(res => this.unitList = res.data)
      getTradeCityList().then(res => this.tradeCityList = res.data)
我在何方's avatar
我在何方 committed
569 570 571 572 573 574 575
      getProductAttrList().then(res => this.productAttrList = res.data)
      if(this.$route.query.offerId){
        this.offerId = this.$route.query.offerId
        this.getList();
      }
    },
    methods: {
我在何方's avatar
我在何方 committed
576 577 578 579 580 581
      sourceLabel(data){
        let label=''
        var source = this.customerSource.find(item=>item.value==data)
        if(source) label = source.label
        return label
      },
我在何方's avatar
我在何方 committed
582
      checkCode(data){
我在何方's avatar
我在何方 committed
583 584 585
        if(!data){
          return ''
        }
我在何方's avatar
我在何方 committed
586 587 588 589 590
        if(data.indexOf('+')==-1){
        	return '+'+data
        }
        return data
      },
我在何方's avatar
我在何方 committed
591 592 593 594 595
      getOrderData(id) {
        let that = this
        that.loading = true;
        // 执行查询
        getOrder(id).then(response => {
我在何方's avatar
我在何方 committed
596
          that.orderData = response.data;
我在何方's avatar
我在何方 committed
597 598
        });
      },
我在何方's avatar
我在何方 committed
599 600 601 602 603 604 605 606 607 608 609
      getSupplierData(id){
        var labelname = ''
        if(id){
          getSupplier(id).then(res=>{
            if(res.data){
              labelname =  res.data.companyZh
            }
          })
        }
        return labelname
      },
我在何方's avatar
我在何方 committed
610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628
      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
      },
我在何方's avatar
我在何方 committed
629 630 631 632 633 634
      // 计算商品运费
      calculationPrice(){
          calculationPrice({
              lineId: this.list.lineId,
              transportId: this.list.transportId,
              channelId: this.list.channelId,
我在何方's avatar
我在何方 committed
635
              prodConditionParamList: this.getProductListWithDefaultValue(),
我在何方's avatar
我在何方 committed
636 637 638 639 640 641
              consigneeCustomerContactsId: this.list.consigneeCustomerContactsId,
              consignorCustomerContactsId: this.list.consignorCustomerContactsId,
              customsType: this.list.customsType,
              isCargoControl: this.list.control,
              orderType: this.list.orderType,
          }).then(res => {
我在何方's avatar
我在何方 committed
642 643 644 645 646
              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)
              }
我在何方's avatar
我在何方 committed
647 648 649 650
          }).finally(() => {
              this.calculating = false
          })
      },
我在何方's avatar
我在何方 committed
651 652 653 654 655 656 657
      /** 查询列表 */
      getList() {
        let that = this
        that.loading = true;
        // 执行查询
        getOffer(that.offerId).then(response => {
          that.list = response.data;
我在何方's avatar
我在何方 committed
658 659 660
          if(that.list.channelId){
            that.getChannelData()
          }
我在何方's avatar
我在何方 committed
661
          that.calculationPrice()
我在何方's avatar
我在何方 committed
662 663 664
          // if(that.list.orderId){
          //   that.getOrderData(that.list.orderId)
          // }
我在何方's avatar
我在何方 committed
665 666 667 668 669
          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
我在何方's avatar
我在何方 committed
670
               that.getCnsigneeData()
我在何方's avatar
我在何方 committed
671 672 673 674 675 676 677 678 679 680
          })
          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(prodAttrCenter[0].attrName)
                 }
            })
我在何方's avatar
我在何方 committed
681 682 683 684 685 686 687
            if(prodAttrName.length>1){
              item.prodAttrName = prodAttrName.join(',')
            }else if(prodAttrName.length==1){
              item.prodAttrName = prodAttrName[0]
            }else{
              item.prodAttrName = ''
            }
我在何方's avatar
我在何方 committed
688 689 690
          })

          that.loading = false;
我在何方's avatar
我在何方 committed
691

692
          that.getOpenedRouterList()
我在何方's avatar
我在何方 committed
693 694
        });
      },
我在何方's avatar
我在何方 committed
695 696 697 698 699 700 701 702 703 704 705 706 707 708
      getCity(id){
        var city = ''
        this.tradeCityList.forEach((item)=>{
          if(item.id == id){
            city = item.titleZh
          }
        })
        return city
      },
      getChannelData(){
        getChannel(this.list.channelId).then(res=>{
          this.channelName = res.data.nameZh
        })
      },
709 710 711 712 713 714 715 716 717 718 719 720 721
      // 获取路线
      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){
我在何方's avatar
我在何方 committed
722 723 724 725 726
            let router = this.routerList.find(item => item.id == routerId)
            if(router){
                return router.startTitleZh + ' >>>' + router.destTitleZh
            }
            return '-'
727
      },
我在何方's avatar
我在何方 committed
728 729 730
      // 获取发货/收货人
      getCnsigneeData(){
        let that = this
我在何方's avatar
我在何方 committed
731 732 733 734 735 736
         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)

我在何方's avatar
我在何方 committed
737
            })
我在何方's avatar
我在何方 committed
738 739 740 741 742 743
        }
        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)
我在何方's avatar
我在何方 committed
744 745
            })
          }
我在何方's avatar
我在何方 committed
746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768
      },
      /** 跟进按钮操作 */
      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;
我在何方's avatar
我在何方 committed
769
        this.$modal.confirm(this.$t('是否确认删除报价单管理编号为')+'"' + offerId + '"'+this.$t('的数据项')+'?').then(function() {
我在何方's avatar
我在何方 committed
770 771 772 773 774
            return deleteOffer(offerId);
          }).then(() => {
            this.$router.push({
              path: "/offer/result"
            });
我在何方's avatar
我在何方 committed
775
            this.$modal.msgSuccess(this.$t("删除成功"));
我在何方's avatar
我在何方 committed
776 777 778
          }).catch(() => {});
      },
    }
我在何方's avatar
我在何方 committed
779
  }
我在何方's avatar
我在何方 committed
780 781
</script>

我在何方's avatar
我在何方 committed
782
<style scoped>
我在何方's avatar
我在何方 committed
783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818
  .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>