Commit 0e5d8f9d authored by 邓春圆's avatar 邓春圆

Merge remote-tracking branch 'origin/dev' into dev

parents 7fb46a5d 859189d6
......@@ -833,3 +833,11 @@ export function batchException(data){
data
})
}
// 打包记录列表
export function orderItemPackLogPage(params){
return request({
url: '/order/item-pack-log/page',
method: 'get',
params
})
}
\ No newline at end of file
......@@ -5,10 +5,11 @@
<el-image @click="dialogImageUrl = item.url; dialogVisible = true; " style="height: 148px; width:148px;" fit="fit" :src="item.url">
<video controls width="148px" height="148px" slot="error" :src="item.url" ></video>
</el-image>
<div @click="handleRemove(index)" class="el-icon-error" style="font-size: 25px;cursor: pointer;position: absolute;right: -10px; top: -10px" ></div>
<div v-if="!readonly" @click="handleRemove(index)" class="el-icon-error" style="font-size: 25px;cursor: pointer;position: absolute;right: -10px; top: -10px" ></div>
</div>
<div>
<el-upload
v-if="!readonly"
multiple
:action="uploadImgUrl"
list-type="picture-card"
......@@ -23,7 +24,7 @@
<i class="el-icon-plus"></i>
</el-upload>
<!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip">
<div class="el-upload__tip" slot="tip" v-if="showTip && !readonly">
{{ $t('请上传') }}
<template v-if="fileSize">{{ $t('大小不超过') }}<b style="color: #f56c6c">{{ fileSize }}MB</b> </template> <br>
<template v-if="fileType">{{ $t('格式为') }}<b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>{{ $t('的文件') }}</div>
......@@ -63,6 +64,10 @@ export default {
isShowTip: {
type: Boolean,
default: true
},
readonly: {
type: Boolean,
default: false
}
},
data() {
......
......@@ -25,22 +25,22 @@
<el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的港清关')" prop="transportType">
<el-radio-group v-model="form.qingguan">
<el-form-item :label="$t('目的港清关')" prop="destinationClearance">
<el-radio-group v-model="form.destinationClearanceSelect" @input="destinationClearanceSelect">
<el-radio :label="1">{{$t('我司')}}</el-radio>
<el-radio :label="2">{{$t('客户')}}</el-radio>
<el-radio :label="3">{{$t('客户')}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.qingguan==1" prop="qingguan2" :rules="[
<el-form-item v-if="form.destinationClearanceSelect==1" prop="destinationClearance" :rules="[
{ required: true, message: this.$t('清关方式不能为空'), trigger: 'blur' }
]">
<el-radio-group v-model="form.qingguan2">
<el-radio-group v-model="form.destinationClearance">
<el-radio :label="1">{{$t('我司清关')}}</el-radio>
<el-radio :label="2">{{$t('合作方清关')}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="$t('发货方式')" prop="transportType">
<el-radio-group v-model="form.fahuo">
<el-form-item :label="$t('发货方式')" prop="deliveryType">
<el-radio-group v-model="form.deliveryType">
<el-radio :label="1">{{$t('多票')}}</el-radio>
<el-radio :label="2">{{$t('单票')}}</el-radio>
</el-radio-group>
......@@ -69,12 +69,17 @@ export default {
},
created() {
this.form = { ...this.shipmentObj };
if(this.form.destinationClearance && this.form.destinationClearance != 3){
this.form.destinationClearanceSelect = 1
}
this.getChannelList()
},
data() {
return {
// 表单参数
form: {},
form: {
destinationClearance: null
},
channelList: [],
// 表单校验
rules: {
......@@ -94,6 +99,11 @@ export default {
getChannelList() {
getChannelList().then((res) => (this.channelList = res.data))
},
destinationClearanceSelect(val) {
if(val == 3){
this.form.destinationClearance = val
}
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate((valid) => {
......
<template>
<!-- 订单获取入仓记录 -->
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="800px">
<el-table v-if="packData" :data="packData">
<el-table-column type="index" :label="$t('序号')" />
<el-table-column :label="$t('打包人')" prop="name">
<template slot-scope="{row}">
{{row.creatorName}}
</template>
</el-table-column>isNoNeedToPack
<el-table-column :label="$t('打包时间')" prop="time" >
<template slot-scope="{row}">{{row.createTime|parseTime}}</template>
</el-table-column>
<el-table-column :label="$t('备注')" prop="time" >
<template slot-scope="{row}">{{row.isNoNeedToPack?this.$t('无需打包'):''}}</template>
</el-table-column>
<el-table-column :label="$t('操作')">
<template slot-scope="{row}">
<el-button type="primary" @click="showPackDetail(row)">{{$t('详情')}}</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows"
@pagination="getList" />
</el-dialog>
</template>
<script>
import { orderItemPackLogPage } from '@/api/ecw/order'
import { parseTime } from '@/utils/ruoyi'
export default {
filters: {parseTime},
props:{
order: Object,
orderItemId: Number,
},
data(){
return {
total:0,
queryParams:{
page:1,
rows:10
},
packData:[]
}
},
computed:{
title(){
if(!this.order||!this.orderItemId) return this.$t('打包历史')
var orderItem = this.order.orderItemVOList.find(item => item.orderItemId == this.orderItemId)
if(!orderItem) return this.$t('打包历史')
return orderItem.prodTitleZh+'('+ orderItem.prodTitleEn+')' + this.$t('打包历史')
}
},
created(){
this.show = true
if(this.order && this.orderItemId){
this.queryParams.orderId = this.order.orderId;
this.queryParams.orderItemId = this.orderItemId;
orderItemPackLogPage(this.queryParams).then(res => {
this.packData = []
this.$nextTick(() => {
this.packData = res.data.list
})
this.total = res.data.total;
})
}
},
methods:{
getList(){
},
closeDialog(){
this.show = false
this.$emit('close');
},
showPackDetail(orderWarehouseInContent){
this.$emit('showPackDetail',orderWarehouseInContent);
}
}
}
</script>
<template>
<!-- 订单获取入仓记录 -->
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="1200px">
<el-card style="margin-bottom:10px">
<el-descriptions :title="$t('入仓数据')" :column="3" :labelStyle="{width:'66px'}">
<el-descriptions-item :label="$t('品名')">{{orderItem.prodTitleZh}}</el-descriptions-item>
<el-descriptions-item :label="$t('英文品名')">{{orderItem.prodTitleEn}}</el-descriptions-item>
<el-descriptions-item :label="$t('品牌')" >
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="orderItem.brandType" />
</el-descriptions-item>
<el-descriptions-item :label="$t('箱数')">{{orderItem.num+$t('')}}</el-descriptions-item>
<el-descriptions-item :label="$t('体积')">{{orderItem.warehouseInInfoVO ? orderItem.warehouseInInfoVO.volume : orderItem.volume}}</el-descriptions-item>
<el-descriptions-item :label="$t('重量')">{{orderItem.warehouseInInfoVO ? orderItem.warehouseInInfoVO.weight : orderItem.weight}}kg</el-descriptions-item>
<el-descriptions-item :label="$t('重量')">{{orderItem.warehouseInInfoVO ? orderItem.warehouseInInfoVO.quantityAll : orderItem.quantity}}</el-descriptions-item>
<el-descriptions-item :label="$t('备货状态')">{{airShipmentData[info.airShipment]}}</el-descriptions-item>
<el-descriptions-item :label="$t('商品特性')">{{productAttr}}</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card style="margin-bottom:10px">
<div slot="header" class="card-title">
{{$t('打包前')}}
</div>
<el-table v-if="orderWarehouseInContent" :data="orderWarehouseInContent">
<el-table-column type="index" :label="$t('序号')" />
<el-table-column :label="$t('箱数')" prop="cartonsNum" />
<el-table-column :label="$t('入仓类型')" prop="cartonsNum">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" :value="row.specificationType" />
</template>
</el-table-column>
<el-table-column :label="$t('包装类型')" prop="unit">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="row.unit" />
</template>
</el-table-column>
<el-table-column :label="$t('长')" prop="boxGauge">
<template slot-scope="{row}">
{{row.boxGauge.split('*')[0]}}
</template>
</el-table-column>
<el-table-column :label="$t('宽')" prop="boxGauge" >
<template slot-scope="{row}">
{{row.boxGauge.split('*')[1]}}
</template>
</el-table-column>
<el-table-column :label="$t('高')" prop="boxGauge" >
<template slot-scope="{row}">
{{row.boxGauge.split('*')[2]}}
</template>
</el-table-column>
<el-table-column :label="$t('体积') + '(m³)'" prop="volume" />
<el-table-column :label="$t('重量') + '(kg)'" prop="weight" />
<el-table-column :label="$t('数量(个)')" prop="quantityAll" />
<el-table-column :label="$t('入仓快递单号')" prop="expressNo" />
<el-table-column :label="$t('入仓时间')" prop="inTime" >
<template slot-scope="{row}">{{row.inTime|parseTime}}</template>
</el-table-column>
<el-table-column :label="$t('储位')" prop="orderLocationBackVOList" >
<template slot-scope="{row}">
{{getLocationName(row.orderLocationBackVOList)}}
</template>
</el-table-column>
</el-table>
</el-card>
<el-card style="margin-bottom:10px">
<div slot="header" class="card-title">
{{$t('打包后')}}
</div>
<el-table v-if="warehouseItem && warehouseItem.orderWarehouseInBackItemDoList" :data="warehouseItem.orderWarehouseInBackItemDoList">
<el-table-column type="index" :label="$t('序号')" />
<el-table-column :label="$t('箱数')" prop="cartonsNum" />
<el-table-column :label="$t('入仓类型')" prop="cartonsNum">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" :value="row.specificationType" />
</template>
</el-table-column>
<el-table-column :label="$t('包装类型')" prop="unit">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="row.unit" />
</template>
</el-table-column>
<el-table-column :label="$t('长')" prop="boxGauge">
<template slot-scope="{row}">
{{row.boxGauge.split('*')[0]}}
</template>
</el-table-column>
<el-table-column :label="$t('宽')" prop="boxGauge" >
<template slot-scope="{row}">
{{row.boxGauge.split('*')[1]}}
</template>
</el-table-column>
<el-table-column :label="$t('高')" prop="boxGauge" >
<template slot-scope="{row}">
{{row.boxGauge.split('*')[2]}}
</template>
</el-table-column>
<el-table-column :label="$t('体积') + '(m³)'" prop="volume" />
<el-table-column :label="$t('重量') + '(kg)'" prop="weight" />
<el-table-column :label="$t('数量(个)')" prop="quantityAll" />
<el-table-column :label="$t('入仓快递单号')" prop="expressNo" />
<el-table-column :label="$t('入仓时间')" prop="inTime" >
<template slot-scope="{row}">{{row.inTime|parseTime}}</template>
</el-table-column>
<el-table-column :label="$t('储位')" prop="orderLocationBackVOList" >
<template slot-scope="{row}">
{{getLocationName(row.orderLocationBackVOList)}}
</template>
</el-table-column>
</el-table>
</el-card>
<el-card style="margin-bottom:10px">
<el-descriptions :title="$t('打包数据')" :column="2" :labelStyle="{width:'120px'}">
<el-descriptions-item :label="$t('打包后箱数')">{{packData.cartonsNum+$t('箱')}}</el-descriptions-item>
<el-descriptions-item :label="$t('打包后体积')">{{packData.volume}}m³</el-descriptions-item>
<el-descriptions-item :label="$t('打包后重量')">{{packData.weight}}kg</el-descriptions-item>
<el-descriptions-item :label="$t('打包后数量(个)')" >{{packData.quantityAll}}</el-descriptions-item>
<el-descriptions-item :label="$t('打包人')">{{packAfterData.creatorName}}</el-descriptions-item>
<el-descriptions-item :label="$t('打包时间')">{{packAfterData.createTime|parseTime}}</el-descriptions-item>
</el-descriptions>
</el-card>
<el-button type="primary" @click="closeDialog">{{$t('关闭窗口')}}</el-button>
</el-dialog>
</template>
<script>
import { getOrder, getOrderWarehouseIn } from '@/api/ecw/order'
import { DICT_TYPE } from '@/utils/dict'
import { parseTime } from '@/utils/ruoyi'
import WarehouseAreaSelect from "@/components/WarehouseAreaSelect"
import {getProductAttrList} from '@/api/ecw/productAttr'
export default {
components: {
WarehouseAreaSelect
},
filters: {parseTime},
props:{
order: Object, // order 和 orderId 二选一
packAfterData: Object,
orderItemId: Number,
},
data(){
return {
orderDetail: null,
warehouseList: null,
productAttrList:[], // 商品属性
airShipmentData:['默认值','待出','可出','备货中','已备货'],
packData:{
cartonsNum:0,
volume:0,
weight:0,
quantityAll:0
}
}
},
computed:{
info(){
return this.orderDetail || this.order
},
orderItem(){
if(!this.info) return null
return this.info.orderItemVOList.find(item => item.orderItemId == this.orderItemId)
},
warehouseItem(){
if(!this.warehouseList) return []
return this.warehouseList.find(item => item.orderItemId == this.orderItemId) || []
},
title(){
if(!this.orderItem) return '-'
return this.$l(this.orderItem, 'prodTitle') + ' - ' + this.$t('入仓记录')
},
orderWarehouseInContent(){
if(!this.packAfterData) return []
return JSON.parse(this.packAfterData.orderWarehouseInContent)
},
productAttr(){
if(this.productAttrList.length==0||!this.orderItem.prodAttrIds) return ''
var data = []
this.productAttrList.forEach(item=>{
if(this.orderItem.prodAttrIds.indexOf(item.id)>-1){
data.push(this.$l(item, 'attrName'))
}
})
return data.join(',')
},
},
async created(){
this.show = true
if(!this.order && this.orderId){
getOrder(this.orderId).then(res => {
this.orderDetail = res.data
})
}
this.getOrderWarehouseIn()
this.productAttrList = (await getProductAttrList()).data
},
methods:{
// 获取储位名称
getLocationName(locationArr){
if(!locationArr || !locationArr.length) return ''
let arr = []
locationArr.forEach(item => {
arr.push(`${item.areaName}${item.locationName || ''}`)
})
return Array.from(new Set(arr)).join(",")
},
closeDialog(){
this.show = false
this.$emit('close');
},
getOrderWarehouseIn(){
getOrderWarehouseIn(this.info.orderId).then(res => {
this.warehouseList = res.data
var warehouseItem = this.warehouseList.find(item => item.orderItemId == this.orderItemId)
if(warehouseItem&&warehouseItem.orderWarehouseInBackItemDoList!=null){
warehouseItem.orderWarehouseInBackItemDoList.forEach(item=>{
if(item.volume) this.packData.volume += parseFloat(item.volume)
if(item.weight) this.packData.weight += parseFloat(item.weight)
if(item.cartonsNum) this.packData.cartonsNum += parseInt(item.cartonsNum)
if(item.quantityAll) this.packData.quantityAll += parseInt(item.quantityAll)
})
}
})
},
}
}
</script>
<template>
<!-- 订单获取入仓记录 -->
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="1000px">
<el-button v-if="info.transportId==3" style="position:absolute;top:15px;left:340px" type="primary" @click="seePackLog">{{$t('查看打包历史')}}</el-button>
<el-table v-if="warehouseItem && warehouseItem.orderWarehouseInBackItemDoList" :data="warehouseItem.orderWarehouseInBackItemDoList">
<el-table-column type="index" :label="$t('序号')" />
<el-table-column :label="$t('箱数')" prop="cartonsNum" />
......@@ -110,6 +111,9 @@ export default {
getOrderWarehouseIn(this.info.orderId).then(res => {
this.warehouseList = res.data
})
},
seePackLog(){
this.$emit('openPackHistory',2)
}
}
}
......
......@@ -376,7 +376,7 @@
<print-warehouse-receipt v-if="showWarehouseReceipt" :order-id="order.orderId" @close="showWarehouseReceipt=false" />
<print-lading-bill v-if="showLadingBill" :order-id="order.orderId" :transport-type="order.transportId" @close="showLadingBill=false" />
<warehouse-detail :order="order" :orderItemId="showWarehouseInItemId" v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null" />
<warehouse-detail :order="order" @openPackHistory="openPackHistory" :orderItemId="showWarehouseInItemId" v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null" />
<el-dialog :title="$t('付款人')" :visible.sync="showDarweeDialog" v-if="order && order.customDraweeVOList">
<el-table :data="order.customDraweeVOList" v-if="order.drawee==3" >
<el-table-column :label="$t('费用类型')" prop="label" width="200px">
......@@ -444,6 +444,10 @@
<!--日志详情-->
<operate-log-detail v-if="showLogDetailId" :log-id="showLogDetailId" @close="showLogDetailId=null"></operate-log-detail>
<!--打包历史-->
<pack-history v-if="shopPackId" :order ="order" :orderItemId="shopPackId" @showPackDetail="showPackDetail" @close="shopPackId=null"></pack-history>
<!--打包历史详情-->
<pack-history-detail v-if="packAfterData" :order="order" :packAfterData="packAfterData" :orderItemId="showWarehouseInItemId" @close="packAfterData=null"></pack-history-detail>
</div>
</template>
......@@ -464,11 +468,13 @@ import { parseTime } from '@/utils/ruoyi';
import WarehouseAreaSelect from "@/components/WarehouseAreaSelect"
import {checkPermi} from '@/utils/permission'
import OperateLogDetail from "@/views/ecw/order/components/OprateLogDetail";
import PackHistory from './components/PackHistory';
import PackHistoryDetail from './components/PackHistoryDetail';
export default {
name: "detail",
components: {
OperateLogDetail,
PrintWarehouseReceipt, PrintLadingBill, WarehouseDetail, WarehouseAreaSelect
PrintWarehouseReceipt, PrintLadingBill, WarehouseDetail, WarehouseAreaSelect,PackHistory,PackHistoryDetail
},
filters: {
customsTypeFilter(e, customsTypeList) {
......@@ -513,6 +519,8 @@ export default {
showMore:false,
consigneeText:this.$t('更多'),
showLogDetailId: null, // 显示日志详情的ID
shopPackId:null,//显示打包历史的ID
packAfterData:null,//显示打包历史详情
}
},
computed:{
......@@ -745,6 +753,15 @@ export default {
parseLogNote(note){
if(!note) return []
return JSON.parse(note)
},
//查看打包历史
openPackHistory(){
this.shopPackId = this.showWarehouseInItemId
},
//查看打包历史详情
showPackDetail(packAfterData){
this.packAfterData = packAfterData
}
}
};
......
......@@ -478,6 +478,7 @@
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<!-- 不可出渠道异常 -->
<div v-if="orderExceptionData.orderExceptionType=='not_shipping_channel_exception'&&handlerParams.orderExceptionHandlerResult=='change_channel'">
<el-form-item :label="$t('出货渠道')" prop="channelId" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, orderData.transportId).cssClass == 'channel'">
<!--嵌套一个form来脱离disabled控制-->
......@@ -501,6 +502,30 @@
</option>
</select>
</div>
<div v-if="orderExceptionData.orderExceptionType=='not_shipping_channel_exception'&&(handlerParams.orderExceptionHandlerResult=='change_channel'||handlerParams.orderExceptionHandlerResult=='hand_confirm')">
<div>
<el-form-item :label="$t('运费成交单价')+':'" size="medium">
<el-select v-model="handlerParams.currency" style="width: 120px !important;" clearable :disabled="orderExceptionData.orderExceptionStatus==2">
<el-option v-for="dict in currencyList "
:key="dict.id" :label="dict.titleZh" :value="dict.id"/>
</el-select>
</el-form-item>
<el-input style="width: 100px;" type="text" v-model="handlerParams.amount" />
<span style="margin:0 20px;font-size:16px">/</span>
<el-input style="width: 100px;" type="text" v-model="handlerParams.amount" />
</div>
<div>
<el-form-item :label="$t('清关费成交单价')+':'" size="medium">
<el-select v-model="handlerParams.currency" style="width: 12 0px !important;" clearable :disabled="orderExceptionData.orderExceptionStatus==2">
<el-option v-for="dict in currencyList "
:key="dict.id" :label="dict.titleZh" :value="dict.id"/>
</el-select>
</el-form-item>
<el-input style="width: 100px;" type="text" v-model="handlerParams.amount" />
<span style="margin:0 20px;font-size:16px">/</span>
<el-input style="width: 100px;" type="text" v-model="handlerParams.amount" />
</div>
</div>
</el-row>
</div>
</el-form>
......@@ -732,7 +757,7 @@
// that.orderExceptionData.orderExceptionType = 'order_other_exception'
// that.orderExceptionData.orderExceptionType = 'order_miss_exception'
// that.orderExceptionData.orderExceptionType = 'not_customer_service_exception'
// that.orderExceptionData.orderExceptionType = 'not_shipping_channel_exception'
that.orderExceptionData.orderExceptionType = 'not_shipping_channel_exception'
that.loading = false;
that.orderId = response.data.orderId
that.getOrderData()
......
......@@ -158,6 +158,15 @@
<span slot="append">kg</span>
</el-input>
</el-form-item>
<el-card style="margin-top: 15px;">
<div slot="header" class="clearfix">
<span style="font-size: 18px">{{$t('入仓影像')}}</span>
</div>
<div>
<image-and-video-upload readonly :fileSize="50" :isShowTip="true" :value="[...form.urls, ...this.orderItemList.map(e => e.pictureUrls).flat()]" ></image-and-video-upload>
</div>
</el-card>
<div style="text-align: center;margin-top: 15px" v-if="!(order.status !== 3 && isEdit)">
<el-button @click="escapeBol = true;" type="primary">{{$t('转异')}}</el-button>
<el-button type="primary" @click="finishVisible = true">{{$t('完成入仓')}}</el-button>
......@@ -222,6 +231,7 @@ import PrintTag from "@/views/ecw/order/components/PrintTag"
import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt"
import imageUpload from "@/components/ImageUpload";
import {parseTime} from "@/utils/ruoyi"
import ImageAndVideoUpload from '@/components/ImageAndVideoUpload'
import Warehouse from "@/views/ecw/order/warehousing/components/Warehouse"
export default {
name: "Warehousing",
......@@ -232,6 +242,7 @@ export default {
PrintTag,
PrintWarehouseReceipt,
imageUpload,
ImageAndVideoUpload,
Warehouse
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment