index.vue 11.3 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>
8 9
        <el-button v-hasPermi="['ecw:order:reduce']" type="primary" @click="moreApply(1)" >{{$t('批量特价申请')}}</el-button>
        <el-button v-hasPermi="['ecw:order:commission']" type="primary" @click="moreApply(2)" >{{$t('批量管理折扣')}}</el-button>
Marcus's avatar
Marcus committed
10 11
      </div>

12 13
      <el-table v-loading="loading" :data="order.orderItemVOList" @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="55" align="center" />
14
        <el-table-column :label="$t('序号')" align="center" prop="id" type="index"></el-table-column>
Marcus's avatar
Marcus committed
15 16
        <el-table-column
          prop="prodTitleZh"
17
          :label="$t('品名')">
Marcus's avatar
Marcus committed
18 19 20 21 22 23
          <template v-slot="{row}">
            {{ row.prodTitleZh }}/{{ row.prodTitleEn }}
          </template>
        </el-table-column>
        <el-table-column
          prop="prodAttrIds"
24
          :label="$t('填单货物属性')">
Marcus's avatar
Marcus committed
25
          <template v-slot="{row}">
26 27 28 29
            {{$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
30 31 32 33
          </template>
        </el-table-column>
        <el-table-column
          prop="address"
34
          :label="$t('入库货物属性')">
Marcus's avatar
Marcus committed
35
          <template v-slot="{row}">
36
            <template v-if="row.warehouseInInfoVO">
37 38 39
              {{$t('品牌')}}
              <!-- 23-03-27 根据需求方要求,按照详情页一样的规则显示 -->
              <template v-if="row.brandName">{{row.brandName}}</template>
40
              <dict-tag v-else :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" />
41
              <!-- <dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.feeType" /> --><br>
42 43 44
              {{$t('箱数')}}:{{ row.warehouseInInfoVO.cartonsNum }}<br>
              {{$t('体积')}}:{{ row.warehouseInInfoVO.volume }}m³<br>
              {{$t('重量')}}:{{ row.warehouseInInfoVO.weight }}Kg
45
            </template>
46
            <span v-else>{{$t('暂时没有入库信息')}}</span>
Marcus's avatar
Marcus committed
47 48 49 50 51
          </template>
        </el-table-column>
        <el-table-column
          prop="updateTime"
          :formatter="(_, __, v) => parseTime(v)"
52
          :label="$t('最后操作时间')">
Marcus's avatar
Marcus committed
53
        </el-table-column>
54

Marcus's avatar
Marcus committed
55
        <el-table-column
56
          :label="$t('原价')">
Marcus's avatar
Marcus committed
57
          <template v-slot="{row}">
58
            <!-- 原价显示字段调整 https://zentao.test.jdshangmen.com/bug-view-2914.html -->
dragondean@qq.com's avatar
dragondean@qq.com committed
59
            <template v-if="!row.originalSeaFreight">{{$t('未报价')}}</template>
60
            <template v-else-if="row.charging ==1">
61
              {{$t('全包价')}}{{ row.originalCostSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
62 63
            </template>
            <template v-else>
64
              {{$t('运费')}}{{ row.originalCostSeaFreight }} {{ currencyMap[row.seaFreightCurrency] }}/{{ unitMap[row.seaFreightVolume] }}
65
              <br>
66
              {{$t('清关费')}}{{ row.originalCostClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
67
            </template>
Marcus's avatar
Marcus committed
68 69 70
          </template>
        </el-table-column>
        <el-table-column
Marcus's avatar
Marcus committed
71
          :label="$t('成本价')">
Marcus's avatar
Marcus committed
72
          <template v-slot="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
73
            <template v-if="!row.costSeaFreight">{{$t('未报价')}}</template>
74 75 76 77 78 79
            <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>
80
              {{$t('清关费')}}{{ row.costClearanceFreight }} {{ currencyMap[row.clearanceFreightCurrency] }}/{{ unitMap[row.clearanceFreightVolume] }}
81
            </template>
Marcus's avatar
Marcus committed
82 83 84
          </template>
        </el-table-column>
        <el-table-column
85
          :label="$t('销售价')">
Marcus's avatar
Marcus committed
86
          <template v-slot="{row}">
dragondean@qq.com's avatar
dragondean@qq.com committed
87
            <template v-if="!row.oneSeaFreight">{{$t('未报价')}}</template>
88 89 90 91 92 93 94 95
            <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
96 97
          </template>
        </el-table-column>
98

Marcus's avatar
Marcus committed
99 100
        <el-table-column
          prop="address"
101
          :label="$t('操作')">
Marcus's avatar
Marcus committed
102
          <template v-slot="{row}">
103 104
              <el-button v-if="row.originalSeaFreight" size="mini" type="text" v-hasPermi="['ecw:order:reduce']" @click="showDiscountItem=row">{{$t('优惠申请')}}</el-button>
              <el-button v-if="row.originalSeaFreight" size="mini" type="text" v-hasPermi="['ecw:order:commission']" @click="showCommissionItem=row">{{$t('佣金规则')}}</el-button>
dragondean@qq.com's avatar
dragondean@qq.com committed
105
              <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
106 107 108 109 110
          </template>
        </el-table-column>

      </el-table>

dragondean@qq.com's avatar
dragondean@qq.com committed
111 112 113 114 115
      <div class="mt-50 flex-center">
        <!--
          1.海运整柜、海运拼柜显示重货优惠  1,2
          2.空运专线、海空联运显示泡货优惠  3,4
         -->
116
        <el-button v-hasPermi="['ecw:order:heavy']" type="primary" @click="showPreferentialType=4" v-if="order.transportId === 1 || order.transportId === 2">{{$t('申请重货标准优惠')}}</el-button>
117
        <template  v-else>
118
          <el-button v-if="order.orderType == 3" v-hasPermi="['ecw:order:bulky2']" type="primary" @click="showPreferentialType=29">{{$t('申请泡重优惠')}}</el-button>
119 120
          <el-button v-hasPermi="['ecw:order:bulky']" type="primary" @click="showPreferentialType=5">{{$t('申请泡货标准优惠')}}</el-button>
        </template>
dragondean@qq.com's avatar
dragondean@qq.com committed
121
        <el-button type="primary" @click="$tab.closePage()">{{$t('关闭窗口')}}</el-button>
Marcus's avatar
Marcus committed
122 123
      </div>
    </el-card>
124

dragondean@qq.com's avatar
dragondean@qq.com committed
125 126 127 128 129 130
    <!-- 优惠申请 -->
    <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" />
131
    <!-- 重泡货(标准)优惠 -->
dragondean@qq.com's avatar
dragondean@qq.com committed
132
    <preferential v-if="!!showPreferentialType" :applyType="showPreferentialType" :order="order" @close="showPreferentialType=null" @success="onPreferentialSuccess" />
133
  <!-- 批量优惠申请 -->
134
  <discounts v-if="!!showDiscountsIds" :order="order" :ids="ids"  @close="showDiscountsIds=null" @success="onDiscountsSuccess" />
135
  <!-- 批量管理折扣 -->
136
  <discounts v-if="!!showAllowanceIds" :order="order" :ids="ids" @close="showAllowanceIds=null" :applyType="32" @success="onDiscountsSuccess" />
137
  <!-- 佣金规则 -->
Marcus's avatar
Marcus committed
138 139 140 141 142 143 144 145 146 147
  </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"
148

dragondean@qq.com's avatar
dragondean@qq.com committed
149 150 151
import Discount from './Discount'
import Commission from './Commission'
import Preferential from './Preferential'
152
import Discounts from './Discounts'
Marcus's avatar
Marcus committed
153 154 155
export default {
  name: "OrderSpecial",
  components: {
156
    Discount, Commission, Preferential,Discounts
Marcus's avatar
Marcus committed
157 158
  },
  props: {
159
    orderId: [String, Number]
Marcus's avatar
Marcus committed
160 161 162 163 164 165 166 167 168
  },
  data() {
    return {
      parseTime,
      DICT_TYPE,
      getDictDataLabel,
      // 遮罩层
      loading: true,
      list: [],
dragondean@qq.com's avatar
dragondean@qq.com committed
169
      /* total:0,
Marcus's avatar
Marcus committed
170 171 172
      params:{
        page:1,
        rows:20,
173
        orderId:0,
Marcus's avatar
Marcus committed
174
        type:2
dragondean@qq.com's avatar
dragondean@qq.com committed
175
      }, */
Marcus's avatar
Marcus committed
176
      relationId:0,
177
      order: {
Marcus's avatar
Marcus committed
178
        number: '',
179
        orderItemVOList: []
Marcus's avatar
Marcus committed
180 181 182 183
      },
      unitList:[],
      currencyList:[],
      productAttrList:[],
184 185
      hasWarehouseInInfo: false,

dragondean@qq.com's avatar
dragondean@qq.com committed
186 187 188 189
      showDiscountItem: null, // 优惠申请
      showCommissionItem: null, // 佣金规则
      showAllowanceItem: null, // 管理折扣
      showPreferentialType: null, // 重泡货类型
190 191 192 193
      showDiscountsIds: null, // 批量优惠申请
      showAllowanceIds: null, // 批量管理折扣
      multipleSelection:null,
      ids:null
Marcus's avatar
Marcus committed
194 195 196
    };
  },
  created() {
dragondean@qq.com's avatar
dragondean@qq.com committed
197
    this.getOrder()
Marcus's avatar
Marcus committed
198 199 200 201 202 203 204
    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
205
      getOrder(this.orderId).then(response => {
Marcus's avatar
Marcus committed
206
        this.loading = false
207
        this.order = response.data
208 209 210 211 212
        this.order.orderItemVOList.forEach(e => {
          if (e.warehouseInInfoVO){
            this.hasWarehouseInInfo = true
          }
        })
Marcus's avatar
Marcus committed
213 214
      })
    },
215 216 217 218 219
    toweight(){
      this.$router.push({
        path:"/order/specialWeight/"+this.params.orderId,
      })
    },
我在何方's avatar
我在何方 committed
220 221 222 223 224
    tolight(){
      this.$router.push({
        path:"/order/specialLight/"+this.params.orderId,
      })
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
225 226
    onDiscountSuccess(){
      this.showDiscountItem = null
227
      this.showAllowanceItem = null
dragondean@qq.com's avatar
dragondean@qq.com committed
228 229
      this.getOrder()
    },
230 231 232 233 234 235
    onDiscountsSuccess(){
      this.showDiscountsIds = null
      this.showAllowanceIds = null
      this.multipleSelection = null
      this.getOrder()
    },
dragondean@qq.com's avatar
dragondean@qq.com committed
236 237 238 239 240 241 242
    onCommissionSuccess(){
      this.showCommissionItem = null
      this.getOrder()
    },
    onPreferentialSuccess(){
      this.showPreferentialType = null
      this.getOrder()
243 244 245 246 247 248
    },
    // 表格多选
    handleSelectionChange(selection) {
      this.multipleSelection = selection
      this.ids = selection.map(item => item.orderItemId)
    },
249 250 251 252 253 254 255 256 257 258
    moreApply(type){
      if(!this.ids||this.ids.length==0){
        this.$message.error(this.$t('请选择商品'))
        return
      }
      if(type==1){
        this.showDiscountsIds = true
      }else{
        this.showAllowanceIds = true
      }
dragondean@qq.com's avatar
dragondean@qq.com committed
259
    }
Marcus's avatar
Marcus committed
260 261
  },
  computed: {
262
    currencyMap(){
Marcus's avatar
Marcus committed
263 264
      let map = {}
      this.currencyList.forEach(item => {
265
        map[item.id] = this.$l(item, 'title')
Marcus's avatar
Marcus committed
266 267 268 269 270 271
      })
      return map
    },
    unitMap(){
      let map = {}
      this.unitList.forEach(item => {
272
        map[item.id] = this.$l(item, 'title')
Marcus's avatar
Marcus committed
273 274 275 276 277 278 279
      })
      return map
    }
  }

};
</script>
我在何方's avatar
我在何方 committed
280
<style scoped>
Marcus's avatar
Marcus committed
281 282 283 284
.card-title{
  font-size: 18px;
  font-weight: bold;
}
285
.order-header{
Marcus's avatar
Marcus committed
286 287 288
  padding-bottom: 16px;
  display: flex;
  align-items: center;
289 290 291 292
  /* justify-content: space-between; */
}
.order-header button{
  margin-left:20px;
Marcus's avatar
Marcus committed
293 294
}
</style>