index.vue 9.11 KB
Newer Older
Marcus's avatar
Marcus committed
1 2 3
<template>
  <div class="app-container">
    <el-card>
4
      <div slot="header" class="card-title">{{$t('申请特价')}}</div>
Marcus's avatar
Marcus committed
5
      <!-- 列表 -->
6
      <div class="order-header">
7
        <span style="font-size: 15px;">{{$t('订单号')}}{{ order.orderNo }}</span>
Marcus's avatar
Marcus committed
8 9
      </div>

10
      <el-table v-loading="loading" :data="order.orderItemVOList">
11
        <el-table-column :label="$t('序号')" align="center" prop="id" type="index"></el-table-column>
Marcus's avatar
Marcus committed
12 13
        <el-table-column
          prop="prodTitleZh"
14
          :label="$t('品名')">
Marcus's avatar
Marcus committed
15 16 17 18 19 20
          <template v-slot="{row}">
            {{ row.prodTitleZh }}/{{ row.prodTitleEn }}
          </template>
        </el-table-column>
        <el-table-column
          prop="prodAttrIds"
21
          :label="$t('填单货物属性')">
Marcus's avatar
Marcus committed
22
          <template v-slot="{row}">
23 24 25 26
            {{$t('品牌')}}<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.brandType" /><br>
            {{$t('箱数')}}{{ row.num }}<br>
            {{$t('体积')}}{{ row.volume }}<br>
            {{$t('重量')}}{{ row.weight }}Kg
Marcus's avatar
Marcus committed
27 28 29 30
          </template>
        </el-table-column>
        <el-table-column
          prop="address"
31
          :label="$t('入库货物属性')">
Marcus's avatar
Marcus committed
32
          <template v-slot="{row}">
33
            <template v-if="row.warehouseInInfoVO">
dragondean@qq.com's avatar
dragondean@qq.com committed
34
              {{$t('品牌')}}<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" /><br>
35 36 37
              {{$t('箱数')}}{{ row.warehouseInInfoVO.cartonsNum }}<br>
              {{$t('体积')}}{{ row.warehouseInInfoVO.volume }}<br>
              {{$t('重量')}}{{ row.warehouseInInfoVO.weight }}Kg
38
            </template>
39
            <span v-else>{{$t('暂时没有入库信息')}}</span>
Marcus's avatar
Marcus committed
40 41 42 43 44
          </template>
        </el-table-column>
        <el-table-column
          prop="updateTime"
          :formatter="(_, __, v) => parseTime(v)"
45
          :label="$t('最后操作时间')">
Marcus's avatar
Marcus committed
46
        </el-table-column>
47
        
Marcus's avatar
Marcus committed
48
        <el-table-column
49
          :label="$t('原价')">
Marcus's avatar
Marcus committed
50
          <template v-slot="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
51
            <template v-if="!row.originalSeaFreight">{{$t('未报价')}}</template>
52 53 54 55 56 57 58 59
            <template v-else-if="row.charging ==1">
              {{$t('全包价')}}{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
            </template>
            <template v-else>
              {{$t('运费')}}{{ row.originalSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
              <br>
              {{$t('清关费')}}{{ row.originalClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
            </template>
Marcus's avatar
Marcus committed
60 61 62
          </template>
        </el-table-column>
        <el-table-column
Marcus's avatar
Marcus committed
63
          :label="$t('成本价')">
Marcus's avatar
Marcus committed
64
          <template v-slot="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
65
            <template v-if="!row.costSeaFreight">{{$t('未报价')}}</template>
66 67 68 69 70 71 72 73
            <template v-else-if="row.charging">
              {{$t('全包价')}}{{ row.costSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
            </template>
            <template v-else>
              {{$t('运费')}}{{ row.costSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
              <br>
              {{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
            </template>
Marcus's avatar
Marcus committed
74 75 76
          </template>
        </el-table-column>
        <el-table-column
77
          :label="$t('销售价')">
Marcus's avatar
Marcus committed
78
          <template v-slot="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
79
            <template v-if="!row.oneSeaFreight">{{$t('未报价')}}</template>
80 81 82 83 84 85 86 87
            <template v-else-if="row.charging">
              {{$t('全包价')}}{{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
            </template>
            <template v-else>
              {{$t('运费')}}{{ row.oneSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
              <br>
              {{$t('清关费')}}{{ row.oneClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
            </template>
Marcus's avatar
Marcus committed
88 89
          </template>
        </el-table-column>
90

Marcus's avatar
Marcus committed
91 92
        <el-table-column
          prop="address"
93
          :label="$t('操作')">
Marcus's avatar
Marcus committed
94
          <template v-slot="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
95 96
              <el-button v-if="row.originalSeaFreight" size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="showDiscountItem=row">{{$t('优惠申请')}}</el-button>
              <el-button v-if="row.originalSeaFreight" size="mini" type="text" v-hasPermi="['ecw:order:update']" @click="showCommissionItem=row">{{$t('佣金规则')}}</el-button>
dragondean@qq.com's avatar
dragondean@qq.com committed
97
              <el-button v-if="row.originalSeaFreight" size="mini" type="text" v-hasPermi="['ecw:order:discount']" @click="showAllowanceItem=row">{{$t('管理折扣')}}</el-button>
Marcus's avatar
Marcus committed
98 99 100 101 102
          </template>
        </el-table-column>

      </el-table>

dragondean@qq.com's avatar
dragondean@qq.com committed
103 104 105 106 107 108 109 110
      <div class="mt-50 flex-center">
        <!--
          1.海运整柜、海运拼柜显示重货优惠  1,2
          2.空运专线、海空联运显示泡货优惠  3,4
         -->
        <el-button type="primary" @click="showPreferentialType=4" v-if="order.transportId === 1 || order.transportId === 2">{{$t('申请重货优惠')}}</el-button>
        <el-button type="primary" @click="showPreferentialType=5" v-else>{{$t('申请泡货优惠')}}</el-button>
        <el-button type="primary" @click="$tab.closePage()">{{$t('关闭窗口')}}</el-button>
Marcus's avatar
Marcus committed
111 112
      </div>
    </el-card>
113

dragondean@qq.com's avatar
dragondean@qq.com committed
114 115 116 117 118 119 120 121
    <!-- 优惠申请 -->
    <discount v-if="!!showDiscountItem" :order="order" :orderItem="showDiscountItem" @close="showDiscountItem=null" @success="onDiscountSuccess" />
    <!-- 管理折扣 -->
    <discount v-if="!!showAllowanceItem" :order="order" :orderItem="showAllowanceItem" @close="showAllowanceItem=null" :applyType="2" @success="onDiscountSuccess" />
    <!-- 佣金规则 -->
    <commission v-if="!!showCommissionItem" :order="order" :orderItem="showCommissionItem" @close="showCommissionItem=null" @success="onCommissionSuccess" />
    <!-- 重泡货优惠 -->
    <preferential v-if="!!showPreferentialType" :applyType="showPreferentialType" :order="order" @close="showPreferentialType=null" @success="onPreferentialSuccess" />
Marcus's avatar
Marcus committed
122 123 124 125 126 127 128 129 130 131
  </div>
</template>

<script>
import {DICT_TYPE, getDictDataLabel} from '@/utils/dict'
import {getUnitList} from "@/api/ecw/unit"
import {getCurrencyList} from "@/api/ecw/currency"
import {getProductAttrList} from "@/api/ecw/productAttr"
import { parseTime } from '@/utils/ruoyi'
import {getOrder} from "@/api/ecw/order"
132

dragondean@qq.com's avatar
dragondean@qq.com committed
133 134 135
import Discount from './Discount'
import Commission from './Commission'
import Preferential from './Preferential'
Marcus's avatar
Marcus committed
136 137 138
export default {
  name: "OrderSpecial",
  components: {
dragondean@qq.com's avatar
dragondean@qq.com committed
139
    Discount, Commission, Preferential
Marcus's avatar
Marcus committed
140 141
  },
  props: {
142
    orderId: [String, Number]
Marcus's avatar
Marcus committed
143 144 145 146 147 148 149 150 151
  },
  data() {
    return {
      parseTime,
      DICT_TYPE,
      getDictDataLabel,
      // 遮罩层
      loading: true,
      list: [],
dragondean@qq.com's avatar
dragondean@qq.com committed
152
      /* total:0,
Marcus's avatar
Marcus committed
153 154 155
      params:{
        page:1,
        rows:20,
156
        orderId:0,
Marcus's avatar
Marcus committed
157
        type:2
dragondean@qq.com's avatar
dragondean@qq.com committed
158
      }, */
Marcus's avatar
Marcus committed
159
      relationId:0,
160
      order: {
Marcus's avatar
Marcus committed
161
        number: '',
162
        orderItemVOList: []
Marcus's avatar
Marcus committed
163 164 165 166
      },
      unitList:[],
      currencyList:[],
      productAttrList:[],
167 168
      hasWarehouseInInfo: false,

dragondean@qq.com's avatar
dragondean@qq.com committed
169 170 171 172
      showDiscountItem: null, // 优惠申请
      showCommissionItem: null, // 佣金规则
      showAllowanceItem: null, // 管理折扣
      showPreferentialType: null, // 重泡货类型
Marcus's avatar
Marcus committed
173 174 175
    };
  },
  created() {
dragondean@qq.com's avatar
dragondean@qq.com committed
176
    this.getOrder()
Marcus's avatar
Marcus committed
177 178 179 180 181 182 183
    getUnitList().then(res => this.unitList = res.data)
    getCurrencyList().then(res => this.currencyList = res.data)
    getProductAttrList().then(res => this.productAttrList = res.data)
  },
  methods: {
    getOrder(){
      this.loading = true
184
      getOrder(this.orderId).then(response => {
Marcus's avatar
Marcus committed
185
        this.loading = false
186
        this.order = response.data
187 188 189 190 191
        this.order.orderItemVOList.forEach(e => {
          if (e.warehouseInInfoVO){
            this.hasWarehouseInInfo = true
          }
        })
Marcus's avatar
Marcus committed
192 193
      })
    },
194 195 196 197 198
    toweight(){
      this.$router.push({
        path:"/order/specialWeight/"+this.params.orderId,
      })
    },
我在何方's avatar
我在何方 committed
199 200 201 202 203
    tolight(){
      this.$router.push({
        path:"/order/specialLight/"+this.params.orderId,
      })
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
204 205
    onDiscountSuccess(){
      this.showDiscountItem = null
206
      this.showAllowanceItem = null
dragondean@qq.com's avatar
dragondean@qq.com committed
207 208 209 210 211 212 213 214 215 216
      this.getOrder()
    },
    onCommissionSuccess(){
      this.showCommissionItem = null
      this.getOrder()
    },
    onPreferentialSuccess(){
      this.showPreferentialType = null
      this.getOrder()
    }
Marcus's avatar
Marcus committed
217 218
  },
  computed: {
219
    currencyMap(){
Marcus's avatar
Marcus committed
220 221
      let map = {}
      this.currencyList.forEach(item => {
222
        map[item.id] = this.$l(item, 'title')
Marcus's avatar
Marcus committed
223 224 225 226 227 228
      })
      return map
    },
    unitMap(){
      let map = {}
      this.unitList.forEach(item => {
229
        map[item.id] = this.$l(item, 'title')
Marcus's avatar
Marcus committed
230 231 232 233 234 235 236
      })
      return map
    }
  }

};
</script>
我在何方's avatar
我在何方 committed
237
<style scoped>
Marcus's avatar
Marcus committed
238 239 240 241
.card-title{
  font-size: 18px;
  font-weight: bold;
}
242
.order-header{
Marcus's avatar
Marcus committed
243 244 245 246 247 248
  padding-bottom: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
</style>