Commit c1f8f56c authored by 邓春圆's avatar 邓春圆

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

parents df1cce2b 81c0bb98
......@@ -1015,3 +1015,11 @@ export function setCanNotShipment(orderId){
method: 'put',
})
}
// 查看母订单
export function getParentOrder(orderId){
return request({
url: '/ecw/order/getParentOrder?orderId=' + orderId,
method: 'get'
})
}
......@@ -4,17 +4,17 @@
<el-descriptions-item :label="$t('唛头')">{{ order.marks }}</el-descriptions-item>
<el-descriptions-item :label="$t('已到箱数/总箱数')">{{ order.sumNum }}/{{ order.costVO.totalNum }}</el-descriptions-item>
<el-descriptions-item :label="$t('订单状态')"><dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="order.status" :class="{red: order.status === 1, green: order.status === 5 || order.status === 2}" /></el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.logisticsInfoDto.transportId"></dict-tag>
<el-descriptions-item :label="$t('运输方式') + '(' + $t('渠道') + ')'">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.logisticsInfoDto.transportId"></dict-tag> ({{ order.channelName }})
</el-descriptions-item>
<el-descriptions-item :label="$t('始发地')">{{ order.logisticsInfoDto.startTitleZh || '' }}<span v-if="order.isExternalWarehouse" style="color: red">{{ $t('(外部仓)') }}</span></el-descriptions-item>
<el-descriptions-item :label="$t('目的地')">{{ order.logisticsInfoDto.destTitleZh || '' }}</el-descriptions-item>
<el-descriptions-item :label="$t('发货人姓名')">{{ order.consignorVO && order.consignorVO.name || ''}}</el-descriptions-item>
<el-descriptions-item :label="$t('发货人公司')">{{ order.consignorVO && order.consignorVO.company || '' }}</el-descriptions-item>
<el-descriptions-item :label="$t('发货人电话')">{{ order.consignorVO && (order.consignorVO.countryCode + order.consignorVO.phone) || '' }}</el-descriptions-item>
<el-descriptions-item :label="$t('发货人电话')">{{ order.consignorVO && ('+' + order.consignorVO.countryCode + order.consignorVO.phone) || '' }}</el-descriptions-item>
<el-descriptions-item :label="$t('收货人姓名')">{{ order.consigneeVO && order.consigneeVO.name || ''}}</el-descriptions-item>
<el-descriptions-item :label="$t('收货人公司')">{{ order.consigneeVO && order.consigneeVO.company || '' }}</el-descriptions-item>
<el-descriptions-item :label="$t('收货人电话')">{{ order.consigneeVO &&(order.consigneeVO.countryCode + order.consigneeVO.phone) || '' }}</el-descriptions-item>
<el-descriptions-item :label="$t('收货人电话')">{{ order.consigneeVO &&('+' + order.consigneeVO.countryCode + order.consigneeVO.phone) || '' }}</el-descriptions-item>
<el-descriptions-item :label="$t('送货时间')">{{ order.deliveryDate || '' }}</el-descriptions-item>
<el-descriptions-item :label="$t('入仓类型')">{{ getDictDataLabel(DICT_TYPE.ECW_WAREHOUSING_TYPE, order.warehouseType) }}</el-descriptions-item>
<el-descriptions-item :label="$t('订单号')">{{ order.orderNo }}</el-descriptions-item>
......@@ -27,9 +27,11 @@
<script>
import {DICT_TYPE, getDictDataLabel} from "@/utils/dict"
import DictTag from "@/components/DictTag/index.vue";
export default {
name: "orderBaseInfo",
components: {DictTag},
props: {
order: Object,
......
......@@ -21,7 +21,7 @@
type="daterange" range-separator="-" :start-placeholder="$t('开始日期')"
:end-placeholder="$t('结束日期')"/>
</el-form-item>
<<!-- el-form-item :label="$t('业务编号')" prop="businessNo">
<!-- el-form-item :label="$t('业务编号')" prop="businessNo">
<el-input v-model="queryParams.businessNo" :placeholder="$t('请输入业务编号')" clearable
@keyup.enter.native="handleQuery"/>
</el-form-item> -->
......@@ -41,7 +41,7 @@
<dict-tag :type="DICT_TYPE.BPM_MODEL_CATEGORY" :value="scope.row.category"/>
</template>
</el-table-column>
<el-table-column :label="$t('当前审批节点')" align="center" prop="name" width="200"/>
<!-- <el-table-column :label="$t('状态')" align="center" prop="" width="200" >{{ $t('缺少字段') }}</el-table-column> -->
<!-- <el-table-column :label="$t('流程发起人')" align="center" prop="processInstance.startUserNickname" width="120"/>-->
......
......@@ -3,7 +3,7 @@
<div class="message-title">{{$t(`您确定撤销${cancelClearInfo.orderNo}已清关状态吗?`)}}</div>
<el-form ref="arrivalForm" :rules="rules" :model="cusClearanceObj" label-width="120px">
<el-form-item :label="$t('撤销理由')" prop="clEstTime">
<el-input v-if="flag" v-model="cusClearanceObj.applyReason" type="textarea" :rows="4"></el-input>
<el-input v-if="[0,3,4].includes(apply.approvalStatus)" v-model="cusClearanceObj.applyReason" type="textarea" :rows="4"></el-input>
<template v-else>
{{apply.applyReason}}
</template>
......@@ -11,8 +11,9 @@
</el-form>
<el-row class="operate-button">
<el-button v-if="flag" type="primary" @click="onSubmit">{{$t('确定')}}</el-button>
<el-button v-if="!flag" type="primary" @click="$router.push({path: '/bpm/process-instance/detail', query: {id: apply.bpmProcessId}})">{{$t('审核中')}}</el-button>
<el-button v-if="[0,3,4].includes(apply.approvalStatus)" type="primary" @click="onSubmit">{{$t('确定')}}</el-button>
<el-button v-if="apply.approvalStatus == 1" type="primary" @click="$router.push({path: '/bpm/process-instance/detail', query: {id: apply.bpmProcessId}})">{{$t('审核中')}}</el-button>
<el-button v-if="apply.approvalStatus == 1" plain type="primary" @click="canclAudit">{{$t('取消审核')}}</el-button>
<el-button @click="cancel">{{$t('取消')}}</el-button>
</el-row>
</div>
......@@ -20,6 +21,7 @@
<script>
import { approvalCreate } from "@/api/ecw/boxSea";
import {cancelProcessInstance} from "@/api/bpm/processInstance";
export default {
name: "updateError",
......@@ -39,8 +41,7 @@ export default {
{ required: true, message: this.$t("必填"), trigger: "change" },
]
},
apply: {},
flag: true
apply: {}
};
},
created() {
......@@ -48,7 +49,6 @@ export default {
let order = orders.find(item=>item.orderId == this.cancelClearInfo.orderId)
if(order){
this.apply = order
this.flag = false
}
},
methods: {
......@@ -68,8 +68,14 @@ export default {
}
});
},
/* 取消审核 */
canclAudit() {
cancelProcessInstance(this.apply.bpmProcessId, this.$t("取消审核")).then(() => {
this.$emit("closeDialog","edit");
});
},
cancel() {
this.$emit("closeDialog");
this.$emit("closeDialog","edit");
},
},
};
......
......@@ -192,10 +192,10 @@
<editForm v-if="dialogConfig.visible" @closeDialog="closeDialog" :shipmentObj="shipmentObj" :warehouseList="warehouseList" :transportTypes="transportTypes" :cabinetList="cabinetList" />
</template>
<template v-if="dialogConfig.type === 'cost'">
<costForm v-if="dialogConfig.visible" @closeDialog="closeDialog" :shipmentObj="shipmentObj" :costDetail="costDetail" :flag="flag" />
<costForm v-if="dialogConfig.visible" @closeDialog="closeDialog" :shipmentObj="shipmentObj" :costDetail="costDetail" flag="sea" />
</template>
<template v-if="dialogConfig.type === 'error'">
<regError v-if="dialogConfig.visible" @closeDialog="closeDialog" :shipmentObj="shipmentObj" :allUsers="allUsers" :flag="flag" />
<regError v-if="dialogConfig.visible" @closeDialog="closeDialog" :shipmentObj="shipmentObj" :allUsers="allUsers" flag="sea" />
</template>
<template v-if="dialogConfig.type === 'updateError'">
<updateError v-if="dialogConfig.visible" @closeDialog="closeDialog" :shipmentObj="shipmentObj" :errorInfo="errorInfo" />
......
......@@ -118,7 +118,7 @@
<div class="status-line"></div>
<div class="status-number">{{logList.length - index}}</div>
<div class="status-info">
<div>{{$l(item, 'title')}}</div>
<div>{{$l(item, 'title')}} <el-button v-if="item.approvalId>0" type="text" @click="handleApproval(item.bpmProcessId)">{{$t('查看审批')}}</el-button></div>
<div>
<p>{{formatDate(item.createTime)}}</p>
<p>{{item.operator}}</p>
......@@ -161,12 +161,12 @@
<el-table-column type="index" align="center" :label="$t('序号')" width="50" />
<el-table-column prop="opStep" :label="$t('操作')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PROCESS" :value="scope.row.opStep" />
<dict-tag :type="DICT_TYPE.BOX_AIR_SHIPMENT_PROCESS" :value="scope.row.opStep" />
</template>
</el-table-column>
<el-table-column prop="billAbnId" :label="$t('异常')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_TICKET_EXCEPTION" :value="scope.row.billAbnId" />
<dict-tag :type="DICT_TYPE.BOX_AIR_SHIPMENT_PROCESS" :value="scope.row.billAbnId" />
</template>
</el-table-column>
<el-table-column prop="abnDetail" :label="$t('异常描述')" align="center" width="300"></el-table-column>
......@@ -656,6 +656,9 @@ export default {
);
}
},
handleApproval(id) {
this.$router.push({path: '/bpm/process-instance/detail', query: {id: id}})
}
},
computed: {
visitedViews() {
......
......@@ -15,7 +15,7 @@
<span v-for="order in cusClearanceObj.clearanceOrderList" :key="order.id">{{ order.orderNo }} </span>
</el-form-item>
<div>
<div v-if="cusClearanceObj.clearanceType == 1">
<el-form ref="airArrivalForm" :rules="airArrivalrules" :model="airArrivalInfo" label-width="160px">
<el-form-item :label="$t('实际二程起飞时间')" prop="actSecondTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airArrivalInfo.actSecondTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
......@@ -336,7 +336,7 @@ export default {
onSubmit(operateType) {
this.$refs['cusClearanceForm'].validate((valid) => {
if (valid) {
if (this.cusClearanceObj.clearanceType == 1 && this.cusClearanceObj.clearanceOrderIdList.length > 0) {
if (this.cusClearanceObj.clearanceType == 1) {
this.$refs['airArrivalForm'].validate((arrvalid) => {
if (arrvalid) {
updateOrderArrival({
......
......@@ -39,7 +39,7 @@
<el-form-item :label="$t('品名')" prop="itemName">
<el-input v-model="queryParams.itemName" :placeholder="$t('请输入品名')" clearable />
</el-form-item>
<el-form-item :label="$t('货比')" prop="weightRatioMax">
<el-form-item :label="$t('货比')" prop="weightRatioMax">
<el-input v-model="queryParams.weightRatioMax" :placeholder="$t('请输入 大')" clearable />
</el-form-item>
<el-form-item label="" prop="weightRatioMin">
......@@ -177,7 +177,7 @@
</template>
</template>
</el-table-column>
<el-table-column :label="$t('体积') + '/' + $t('重量') + '/' + $t('货比')" align="center" width="140" prop="volumeWeight">
<el-table-column :label="$t('体积') + '/' + $t('重量') + '/' + $t('货比')" align="center" width="140" prop="volumeWeight">
<template slot-scope="scope">
<p v-if="scope.row.warehouseInInfoVO.volume">{{getTotlContent(scope.row.warehouseInInfoVO,['volume'])}}</p>
<p v-if="scope.row.warehouseInInfoVO.weight">{{getTotlContent(scope.row.warehouseInInfoVO,['weight'])}}</p>
......@@ -265,7 +265,7 @@
<p>{{getShipChannelName(item.channelId)}}</p>
</div>
<div>
<p>{{$t('货比')}}</p>
<p>{{$t('货比')}}</p>
<p>{{item.weightRatio}}</p>
</div>
<div v-if="item.isExternalWarehouse === 1" style="color:blue;fontWeight:bold;">
......
......@@ -3,7 +3,14 @@
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="95%" append-to-body>
<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}">
<template v-if="row.orderWarehouseInDetailsVOList && row.orderWarehouseInDetailsVOList.length">
<WarehouseRecordDetail v-model="row.orderWarehouseInDetailsVOList" :num="row.cartonsNum" text readonly />
</template>
<template v-else>{{ row.cartonsNum }}</template>
</template>
</el-table-column>
<el-table-column :label="$t('入仓类型')" prop="cartonsNum">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" :value="row.specificationType" />
......@@ -44,10 +51,13 @@
</template>
<script>
import { getOrder, getOrderWarehouseIn } from "@/api/ecw/order";
import { DICT_TYPE } from "@/utils/dict";
import { parseTime } from "@/utils/ruoyi";
import WarehouseRecordDetail from '@/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue'
export default {
filters: { parseTime },
components: {
WarehouseRecordDetail
},
props: {
order: Object, // order 和 orderId 二选一
orderId: Number,
......
......@@ -186,6 +186,10 @@ export default {
break;
// 清关
case "cusClearance":
if((!this.shipmentObj.airArrivalInfo || this.shipmentObj.airArrivalInfo.arriveType == 0) && this.shipmentObj.sapStatus != 152){
this.$message.error(this.$t("请先完成到港操作"));
return;
}
this.$set(this.dialogConfig, "width", "700px");
break;
// AGENT
......@@ -220,6 +224,10 @@ export default {
break;
// 卸柜
case "unloading":
if((!this.shipmentObj.clearanceInfo || this.shipmentObj.clearanceInfo.clearanceType == 0) && this.shipmentObj.clStatus != 132){
this.$message.error(this.$t("请先完成清关操作"));
return;
}
// 卸柜反审
const unStatus = this.shipmentObj[node.keyName];
if ([186].includes(unStatus)) {
......@@ -269,6 +277,10 @@ export default {
if (start.includes(val[keyName]) && val[voName]) {
node.currStatus = "wait";
if(type === "arrival" || type === "cusClearance"){
++nodeIndex;
continue;
}
}
if (wait.includes(val[keyName])) {
......
......@@ -3,7 +3,14 @@
<el-dialog :title="title" visible :before-close="closeDialog" :close-on-click-modal="false" width="95%" append-to-body>
<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}">
<template v-if="row.orderWarehouseInDetailsVOList && row.orderWarehouseInDetailsVOList.length">
<WarehouseRecordDetail v-model="row.orderWarehouseInDetailsVOList" :num="row.cartonsNum" text readonly />
</template>
<template v-else>{{ row.cartonsNum }}</template>
</template>
</el-table-column>
<el-table-column :label="$t('入仓类型')" prop="cartonsNum">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" :value="row.specificationType" />
......@@ -44,10 +51,13 @@
</template>
<script>
import { getOrder, getOrderWarehouseIn } from "@/api/ecw/order";
import { DICT_TYPE } from "@/utils/dict";
import WarehouseRecordDetail from '@/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue'
import { parseTime } from "@/utils/ruoyi";
export default {
filters: { parseTime },
components: {
WarehouseRecordDetail
},
props: {
order: Object, // order 和 orderId 二选一
orderId: Number,
......
......@@ -107,11 +107,7 @@
<el-table-column :label="$t('客户名称')" align="center" prop="name"/>
<el-table-column :label="$t('联系方式')" align="center" prop="phoneNew"/>
<el-table-column :label="$t('唛头')" align="center" prop="marks"/>
<el-table-column :label="$t('订单状态')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column :label="$t('订单状态')" align="center" prop="statusMsg"/>
<el-table-column :label="$t('是否控货')" align="center" prop="isCargoControl">
<template slot-scope="scope">
{{scope.row.isCargoControl?$t(''):$t('')}}
......
......@@ -111,11 +111,7 @@
<el-table-column :label="$t('客户名称')" align="center" prop="name"/>
<el-table-column :label="$t('联系方式')" align="center" prop="phoneNew"/>
<el-table-column :label="$t('唛头')" align="center" prop="marks"/>
<el-table-column :label="$t('订单状态')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column :label="$t('订单状态')" align="center" prop="statusMsg"/>
<el-table-column :label="$t('是否控货')" align="center" prop="isCargoControl">
<template slot-scope="scope">
{{scope.row.isCargoControl?$t(''):$t('')}}
......
......@@ -110,11 +110,7 @@
<el-table-column :label="$t('客户名称')" align="center" prop="name"/>
<el-table-column :label="$t('联系方式')" align="center" prop="phoneNew"/>
<el-table-column :label="$t('唛头')" align="center" prop="marks"/>
<el-table-column :label="$t('订单状态')" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status"/>
</template>
</el-table-column>
<el-table-column :label="$t('订单状态')" align="center" prop="statusMsg"/>
<el-table-column :label="$t('是否控货')" align="center" prop="isCargoControl">
<template slot-scope="scope">
{{scope.row.isCargoControl?$t(''):$t('')}}
......@@ -151,7 +147,7 @@
import dayjs from "dayjs";
import {listServiceUser} from "@/api/system/user";
import {getWarehouseList} from '@/api/ecw/warehouse'
export default {
name: "EcwDepttargetMydeptachievement",
components: {},
......@@ -241,7 +237,7 @@
}
return '/'
}
},
},
exportWarehouseList(){
/* tradeType 1 进口,2出口,3进出口 */
return this.warehouseList.filter(item => item.tradeType == 2 || item.tradeType == 3)
......
......@@ -811,7 +811,27 @@ export default {
that.calculation()
getOrder(that.$route.query.orderId).then(response => {
// console.log(response.data)
if(response.data.customerId) that.$set(that.form,'customerId',response.data.customerId)
if(response.data.customerId){
that.$set(that.form,'customerId',response.data.customerId)
}else{
if(response.data.drawee==1){
that.$set(that.form,'customerId',response.data.consignorVO.customerId)
}else if(response.data.drawee==2){
that.$set(that.form,'customerId',response.data.consigneeVO.customerId)
}else{
if(response.data.customDraweeVOList){
response.data.customDraweeVOList.map(v=>{
if(v.name == 'freight'){
if(v.value==1){
that.$set(that.form,'customerId',response.data.consignorVO.customerId)
}else{
that.$set(that.form,'customerId',response.data.consigneeVO.customerId)
}
}
})
}
}
}
})
getDestCountryByOrderId({orderId:that.$route.query.orderId}).then(response => {
// console.log(response.data)
......@@ -854,7 +874,27 @@ export default {
})
this.calculation()
getOrder(that.$route.query.orderId).then(response => {
if(response.data.customerId) this.$set(this.form,'customerId',response.data.customerId)
if(response.data.customerId){
that.$set(that.form,'customerId',response.data.customerId)
}else{
if(response.data.drawee==1){
that.$set(that.form,'customerId',response.data.consignorVO.customerId)
}else if(response.data.drawee==2){
that.$set(that.form,'customerId',response.data.consigneeVO.customerId)
}else{
if(response.data.customDraweeVOList){
response.data.customDraweeVOList.map(v=>{
if(v.name == 'freight'){
if(v.value==1){
that.$set(that.form,'customerId',response.data.consignorVO.customerId)
}else{
that.$set(that.form,'customerId',response.data.consigneeVO.customerId)
}
}
})
}
}
}
})
})
getDestCountryByOrderId({orderId:this.$route.query.orderId}).then(response => {
......
......@@ -676,10 +676,10 @@ export default {
this.$modal.msgError(this.$t('请选择供应商未付款项'));
return
}
if(!params.supplierBankAccount){
/*if(!params.supplierBankAccount){
this.$modal.msgError(this.$t('请选择供应商银行账号'));
return
}
}*/
if (this.id && this.id !== '0') {
updatePayment(params).then(res => {
this.$modal.msgSuccess(this.$t('申请成功'));
......@@ -727,7 +727,7 @@ export default {
},
selectChangeBank(val){
this.$forceUpdate()
var bank = this.bankData.find(item=>item.bankAccount==this.form.supplierBankAccount)
let bank = this.bankData.find(item=>item.bankAccount==this.form.supplierBankAccount)
this.form.supplierBank = bank.bankName
this.form.supplierBankAccountName = bank.accountName
},
......@@ -737,9 +737,9 @@ export default {
if(val){
getSupplier(val).then((res)=>{
this.bankData = res.data.bankList
var bank = this.bankData.find(item=>item.bankAccount==this.form.supplierBankAccount)
console.log(this.bankData)
if(this.bankData.length>0&&!bank) this.form.supplierBankAccount= this.bankData[0]['bankAccount']
let bank = this.bankData.find(item=>item.bankAccount==this.form.supplierBankAccount)
if(!bank) this.form.supplierBankAccount=''
if(!bank&&this.bankData.length>0) this.form.supplierBankAccount= this.bankData[0]['bankAccount']
})
}
......
......@@ -476,7 +476,7 @@
</el-col>
</el-row>
<div v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" class="page-title">优惠详情</div>
<div v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" class="page-title">{{ $t('优惠详情') }}</div>
<el-table v-if="feeDetail && feeDetail.coupons && feeDetail.coupons.length" :data="feeDetail.coupons">
<el-table-column label="优惠ID" prop="couponId"></el-table-column>
<el-table-column label="优惠名称">
......@@ -756,8 +756,10 @@ export default {
value: row[item.field],
currency: row.seaFreightCurrency,
volume: row.seaFreightVolume,
remark: row.specialPriceType && item.field == 'oneSeaFreight' ? this.$t('特价') : null
// 特价通过四个字段标识,任一为true则为特价
remark: item.field == 'oneSeaFreight' && (row.specialPriceType || row.splitCustomPriceType || row.channelManualPricing) ? this.$t('特价') : null
})
}
})
......
......@@ -1396,7 +1396,7 @@ export default {
// 修改的提交
if (this.form.orderNo != null) {
if (this.form.orderId) {
let data = Object.assign({}, this.form, {
status: submitType,
customDraweeVOList: this.customDraweeList,
......
......@@ -21,8 +21,9 @@
</el-descriptions-item>
</el-descriptions>
<div v-for="(row,index) in orderItemData" :key="row.orderItemId">
<div style="font-weight:600;font-size:14px;margin-bottom:10px">品名{{parseInt(index)+1}}{{$l(row, 'prodTitle')}}</div>
<div v-if="row.charging ==1" class="price_list">
<span>品名{{parseInt(index)+1}}{{$l(row.prodTitle, 'desc')}}</span>
<span>旧成交价:</span>
<div>
<div v-if="!row.freightFee">
......@@ -174,17 +175,23 @@ export default {
if(this.orderExceptionData.orderExceptionRemark){
this.orderExceptionData.orderExceptionRemark=JSON.parse(this.orderExceptionData.orderExceptionRemark)
}
if(res.data.oldPriceJson){
this.orderItemData = JSON.parse(res.data.oldPriceJson)
}
if(res.data.orderId){
getOrder(res.data.orderId).then(res => {
this.order = res.data
this.orderItemData.map(v=>{
let item = this.order.orderItemVOList.find(vs=>vs.orderItemId==v.orderItemId)
if(item){
v.prodTitleZh = item.prodTitleZh
v.prodTitleEn = item.prodTitleEn
}
})
this.getExceptionPriceList(res.data.orderId)
})
}
console.log(res.data)
if(res.data.oldPriceJson){
this.orderItemData = JSON.parse(res.data.oldPriceJson)
console.log(this.orderItemData)
}
})
},
getProdAtrr(ids){
......
......@@ -46,7 +46,16 @@
<el-option v-for="dict in followUpList" :key="parseInt(dict.id)" :label="dict.nickname" :value="parseInt(dict.id)"/>
</el-select>
</el-form-item>
<el-form-item :label="$t('出货渠道')" prop="channelId">
<!--嵌套一个form来脱离disabled控制-->
<selector
:clearable="true"
v-model="queryParams.channelId"
:options="channelList"
value-field="channelId"
:label-field="$l(null, 'name')"
></selector>
</el-form-item>
</el-row>
<el-row>
<el-form-item :label="$t('控货')+':'">
......@@ -284,12 +293,14 @@ import CustomerSelector from '@/components/CustomerSelector'
import ProductSelector from '@/components/ProductSelector'
import {getWarehouseList} from '@/api/ecw/warehouse'
import Template from "@/views/cms/template/index.vue";
import {getChannelList} from '@/api/ecw/channel'
import Selector from '@/components/Selector'
export default {
name: "EcwOrderException",
components: {
Template,
CustomerSelector,ProductSelector
CustomerSelector,ProductSelector,Selector
},
data() {
return {
......@@ -315,14 +326,15 @@ export default {
warehouseList:[],
totalData:{},
followUpList:[],
channelList: [], // 出货取到
};
},
activated(){
this.getList();
},
created() {
async created() {
this.getList();
this.channelList = (await getChannelList()).data
getTradeCityList().then(res => this.tradeCityList = res.data)
listServiceUser().then(r => {
this.creatorData = r.data
......
......@@ -361,7 +361,7 @@
<el-dropdown-item @click.native="splitRevoke(scope.row)" v-hasPermi="['ecw:order:split_revoke']">{{$t('撤销拆单')}}</el-dropdown-item>
</template>
<template v-if="scope.row.parentOrderId">
<el-dropdown-item @click.native="$router.push('./detail?orderId=' + scope.row.parentOrderId)">{{$t('查看母订单')}}</el-dropdown-item>
<el-dropdown-item @click.native="showParentOrder(scope.row)">{{$t('查看母订单')}}</el-dropdown-item>
</template>
......@@ -566,6 +566,7 @@ import {
exportShippingDatas,
exportShipFee,
exportUnload, splitCancelApply, orderSplitRevoke, setCanShipment, setCanNotShipment
,getParentOrder
} from "@/api/ecw/order";
/* import { getDictDatas, DICT_TYPE } from '@/utils/dict'; */
import PrintTag from './components/PrintTag'
......@@ -1021,6 +1022,12 @@ export default {
this.$message(this.$t('操作成功'))
this.getList()
})
},
// 查看母订单
showParentOrder(row){
getParentOrder(row.orderId).then(res => {
this.$router.push('./detail?orderId=' + res.data.orderId)
})
}
}
};
......
This diff is collapsed.
......@@ -211,7 +211,7 @@
</template>
</el-table-column>
<el-table-column :label="$t('数量(个)')" align="center" prop="quantity" width="80"></el-table-column>
<el-table-column :label="$t('成交单价')" align="center" min-width="220px" v-if="[3,4].indexOf(orderData.transportId) > -1">
<el-table-column :label="$t('成交单价')" align="center" min-width="220px" v-if="[3,4].indexOf(item.transportId) > -1">
<template slot-scope="scope">
<template v-if="scope.row.charging != 1">
<div class="flex">
......
......@@ -12,9 +12,10 @@
<span style="min-width: 200px;margin-right: 15px;display: inline-block">
<product-selector
v-model="form.prodId"
@change="handleProdChange"
/>
</span>
<el-button type="text" @click="isShowProduct = true">{{ $t('添加新品名') }}</el-button>
<el-button type="text" @click="isShowProduct = true">{{ $t('添加新商品') }}</el-button>
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"><span style="color: red">*</span>{{ $t('英文品名') }}</template>
......@@ -22,6 +23,7 @@
<product-selector
lang="En"
v-model="form.prodId"
@change="handleProdChange"
/>
</span>
</el-descriptions-item>
......@@ -215,7 +217,7 @@
</el-card>
<el-card style="margin-top: 15px;">
<div slot="header" class="clearfix">
<span style="font-size: 18px">{{$t('入仓影像')}}</span>
<span style="font-size: 18px"><span style="color: red">*</span>{{$t('入仓影像')}}</span>
</div>
<div>
<image-and-video-upload :fileSize="50" :isShowTip="true" v-model="pictureUrls" ></image-and-video-upload>
......@@ -272,7 +274,7 @@ import WarehouseRecordDetail from "@/views/ecw/order/warehousing/components/Ware
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index.vue";
export default {
name: "Package",
name: "NewProduct",
components: {
ImageAndVideoUpload,
WarehouseRecordDetail,
......@@ -520,6 +522,13 @@ export default {
})
if (this.pictureUrls?.length === 0) {
return this.$notify({
title: '请上传入仓影像',
type: 'warning'
});
}
// 首次入仓、入仓补充
return finishPacked({
brand: this.form.brand,
......@@ -665,6 +674,12 @@ export default {
titleZh: undefined,
titleEn: undefined
}
},
handleProdChange(prod){
console.log('handleProdChange', prod)
let attrIds = prod.attrId?.split(',')?.map(item => parseInt(item)) || []
this.$set(this.form,'warehouseInProdAttrIds', attrIds)
this.$set(this.form, 'material', prod.materialType)
}
}
}
......
......@@ -213,7 +213,7 @@
</el-card>
<el-card style="margin-top: 15px;">
<div slot="header" class="clearfix">
<span style="font-size: 18px">{{$t('入仓影像')}}</span>
<span style="font-size: 18px"><span style="color: red">*</span>{{$t('入仓影像')}}</span>
</div>
<div>
<image-and-video-upload :fileSize="50" :isShowTip="true" v-model="pictureUrls" ></image-and-video-upload>
......@@ -533,6 +533,13 @@ export default {
})
if (this.pictureUrls?.length === 0) {
return this.$notify({
title: '请上传入仓影像',
type: 'warning'
});
}
// 首次入仓、入仓补充
return finishPacked({
brand: this.form.brand,
......
......@@ -15,14 +15,14 @@
-->
<el-table
v-if="order.orderItemVOList && order.orderItemVOList.length > 0 && orderItemList && orderItemList.length > 0"
:data="order.orderItemVOList.filter(item => !!wareItem(item.orderItemId).orderWarehouseInBackItemDoList.length) || []"
:data="order.orderItemVOList || []"
default-expand-all
style="width: 100%">
<!--入仓记录-->
<el-table-column type="expand">
<template slot-scope="props">
<div style="padding-left: 80px">
<el-table v-if="wareItem(props.row.orderItemId).orderWarehouseInBackItemDoList" :data="wareItem(props.row.orderItemId).orderWarehouseInBackItemDoList">
<div style="padding-left: 80px" v-if="orderWarehouseInList(props.row.orderItemId).length">
<el-table :data="orderWarehouseInList(props.row.orderItemId)">
<el-table-column :label="$t('序号')" width="80px">
<template slot-scope="{row, column, $index}">
{{$index + 1}}
......@@ -151,20 +151,25 @@
</el-table-column>
<el-table-column
prop="createTime"
:label="$t('打包状态')">
:label="$t('打包状态')" width="100">
<template v-slot="{row}">
<dict-tag :type="DICT_TYPE.ORDER_ITEM_PACK_STATUS" :value="wareItemPackStatus(row.orderItemId)" />
</template>
</el-table-column>
<el-table-column
prop="address"
:label="$t('操作')">
:label="$t('操作')" width="220">
<template v-slot="{ row, column, $index }">
<template v-if="wareItemPackStatus(row.orderItemId) == 1">
<el-button size="mini" type="warning" @click="noNeedPack(row)">{{$t('无需打包')}}</el-button>
<el-button size="mini" type="primary" @click="package(row, $t('打包'))">{{$t('打包')}}</el-button>
</template>
<el-button v-else size="mini" type="primary" @click="package(row, $t('修改打包'))">{{$t('修改打包')}}</el-button>
<!--没有入仓记录的不显示打包按钮 https://zentao.test.jdshangmen.com/bug-view-5389.html-->
<el-button-group v-if="orderWarehouseInList(row.orderItemId).length">
<template v-if="wareItemPackStatus(row.orderItemId) == 1">
<el-button size="mini" type="warning" @click="noNeedPack(row)">{{$t('无需打包')}}</el-button>
<el-button size="mini" type="primary" @click="package(row, $t('打包'))">{{$t('打包')}}</el-button>
</template>
<el-button v-else size="mini" type="primary" @click="package(row, $t('修改打包'))">{{$t('修改打包')}}</el-button>
<el-button size="mini" type="danger" @click="rollback(row)">{{$t('退仓')}}</el-button>
</el-button-group>
</template>
</el-table-column>
</el-table>
......@@ -255,7 +260,7 @@ import {
getOrder,
getOrderWarehouseIn,
getSpecialListByOrderId,
noNeedPack,
noNeedPack, rollbackDelete,
warehousePictureList
} from '@/api/ecw/order'
import orderBaseInfo from "@/components/OrderBaseInfo"
......@@ -416,7 +421,8 @@ export default {
async handleSubmit() {
let unpackProds = []
this.orderItemList.forEach(item => {
if(item.packStatus == 1){
// 有入仓记录且未打包
if(item.orderWarehouseInBackItemDoList.length && item.packStatus == 1){
unpackProds.push(this.$l(item, 'prodTitle'))
}
})
......@@ -477,6 +483,19 @@ export default {
finishPacked(data).then(res => {
this.$message.success(this.$t('操作成功'))
})
},
// 退仓
async rollback(orderItem){
this.$confirm(this.$l(orderItem, 'prodTitle') + this.$t("退仓后不可恢复,是否确认退仓?"), this.$t('提示')).then(() => {
return rollbackDelete({
orderId: this.orderId,
orderItemId: orderItem.orderItemId,
isPackagingRollback: true
})
}).then(res =>{
this.$message.success(this.$t('操作成功'))
this.getList()
})
}
},
watch: {
......@@ -498,6 +517,12 @@ export default {
return this.orderItemList.find(item => item.orderItemId == orderItemId)
}
},
// 根据orderItemId获取入仓记录
orderWarehouseInList(){
return (orderItemId) => {
return this.wareItem(orderItemId)?.orderWarehouseInBackItemDoList || []
}
},
// 获取打包状态
wareItemPackStatus(){
return orderItemId => {
......
......@@ -93,7 +93,8 @@ export default {
"unit": "",
"usageIds": "",
"volume": undefined,
"weight": undefined
"weight": undefined,
"material": undefined
}]
} else {
this.dataList = JSON.parse(JSON.stringify(this.value))
......@@ -119,7 +120,8 @@ export default {
"unit": "",
"usageIds": "",
"volume": undefined,
"weight": undefined
"weight": undefined,
"material": undefined
})
},
handleDelete(index) {
......@@ -140,6 +142,20 @@ export default {
.catch(_ => {});
},
handleSave() {
for (let i = 0; i < this.dataList.length; i++) {
if (!this.dataList[i].prodId) {
return this.$notify({
title: '明细' + (i + 1) + ': ' + '请选择品名',
type: "warning"
})
}
if (!this.dataList[i].brand) {
return this.$notify({
title: '明细' + (i + 1) + ': ' + '请选择品牌',
type: "warning"
})
}
}
this.$emit('input', this.dataList)
this.dialogVisible = false
}
......
......@@ -6,12 +6,12 @@
</div>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item :label="$t('中文品名')">
<el-form-item :label="$t('中文品名')" required>
<product-selector v-model="value.prodId" @change="onProductChange" determined :disabled="readonly" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('品牌')">
<el-form-item :label="$t('品牌')" required>
<el-select
v-model="value.brand"
:placeholder="$t('可修改')"
......@@ -31,6 +31,11 @@
</el-col>
</el-row>
<el-row :gutter="10">
<el-col :span="4">
<el-form-item :label="$t('材质')">
<dict-selector :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" v-model="material" clearable :disabled="readonly"></dict-selector>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('商品特性')">
<el-checkbox-group v-model="prodAttrIds">
......@@ -38,7 +43,7 @@
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="8">
<el-form-item :label="$t('用途')">
<el-checkbox-group v-model="usageIds">
<el-checkbox v-for="item in getDictDatas(DICT_TYPE.WAREHOUSING_RECORD_DETAIL_USAGE)" :key="item.value" :label="item.value" :disabled="readonly">{{ $l(item, 'label') }}</el-checkbox>
......@@ -46,7 +51,7 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10">
<!--<el-row :gutter="10">
<el-col :span="4">
<el-form-item :label="$t('长')">
<el-input v-model="boxGauge1" type="number" :disabled="readonly" />
......@@ -72,9 +77,9 @@
<el-input v-model="value.volume" type="number" :disabled="readonly" />
</el-form-item>
</el-col>
</el-row>
</el-row>-->
<el-row :gutter="10">
<el-col :span="4">
<!--<el-col :span="4">
<el-form-item :label="$t('快递单号')">
<el-input v-model="value.expressNo" :disabled="readonly" />
</el-form-item>
......@@ -83,7 +88,7 @@
<el-form-item :label="$t('包装类型')">
<dict-selector :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="value.unit" :disabled="readonly"></dict-selector>
</el-form-item>
</el-col>
</el-col>-->
<el-col :span="4">
<el-form-item :label="$t('数量')">
<el-input v-model="value.quantityAll" type="number" :disabled="readonly" />
......@@ -131,7 +136,7 @@ export default {
brandList: [],
prodAttrIds: [],
usageIds: [],
material: '',
boxGauge1: '',
boxGauge2: '',
boxGauge3: '',
......@@ -147,6 +152,10 @@ export default {
this.getProductBrandPage()
}
if(this.value.material){
this.material = this.value.material
}
if (typeof this.value.prodAttrIds === 'string' && this.value.prodAttrIds.length > 0) {
this.prodAttrIds = this.value.prodAttrIds.split(',').map(e => +e)
}
......@@ -220,6 +229,9 @@ export default {
this.value.boxGauge = this.boxGauge1 + '*' + this.boxGauge2 + '*' + this.boxGauge3
this.value.volume = (this.boxGauge1 * this.boxGauge2 * this.boxGauge3 / 1000000).toFixed(2)
},
material(material){
this.value.material = material
},
'value.volume'() {
if (this.value.volume < 0) {
this.value.volume = -this.value.volume
......
......@@ -39,10 +39,14 @@
{{$t('第{index}阶梯定价方案', {index: index+1})}}
<template v-if="index == form.priceStepList.length - 1">
<el-link type="primary" @click.native="form.priceStepList.push({})">{{$t('添加区间')}}</el-link>
<el-divider direction="vertical"></el-divider>
<el-link type="danger" @click.native="form.priceStepList.splice(index, 1)">{{$t('删除')}}</el-link>
<el-divider v-if="index" direction="vertical"></el-divider>
<el-link v-if="index" type="danger" @click.native="form.priceStepList.splice(index, 1)">{{$t('删除')}}</el-link>
</template>
</div>
<div v-if="willBeIgnore(item)" style="color:red">{{$t('此阶梯未设置阶梯和价格,将会被忽略')}}</div>
<div v-else-if="!isStepPriceOk(item)" style="color:red">{{$t('此阶梯价信息设置不完整')}}</div>
<el-form-item :label="$t(`第{index}阶梯`, {index: index+1})">
<el-input v-model="item.startNum" type="number" placeholder="" class="w100"></el-input>
-
......@@ -255,7 +259,33 @@ export default {
}
return {currency, unit}
}
},
// 判断是否空值
isEmpty(){
return (content) => {
return !content && content !== 0 && content !== '0'
}
},
// 判断某个阶梯价是否会被忽略
willBeIgnore(){
return (stepPrice) => {
if(!this.isEmpty(stepPrice.startNum) || !this.isEmpty(stepPrice.endNum)) return false
if(this.form.priceType == 1 && !this.isEmpty(stepPrice.allPrice)) return false
if(this.form.priceType != 1 && !this.isEmpty(stepPrice.transportPrice) && !this.isEmpty(stepPrice.clearancePrice)) return false
return true
}
},
// 判断阶梯价是否设置不完整
isStepPriceOk(){
return (stepPrice) => {
if(this.isEmpty(stepPrice.startNum) || this.isEmpty(stepPrice.endNum)) return false
if(this.form.priceType == 1 && (this.isEmpty(stepPrice.allPrice) || this.isEmpty(stepPrice.allPriceUnit) || this.isEmpty(stepPrice.allVolumeUnit))) return false
else if(this.isEmpty(stepPrice.transportPrice) || this.isEmpty(stepPrice.transportPriceUnit)){ // 清关费可能为0或者空
return false
}
return true
}
},
},
watch: {
checkList() { //选择路线
......@@ -504,6 +534,27 @@ export default {
// 没有设置阶梯价格则不提交priceStepList
if(data.stepPrice != 1){
delete data.priceStepList
}else{
// 根据23-11-23 21点左右的群讨论,阶梯价如果留空则不提交,如果全部为空则不提交此字段
// 相关工单 https://zentao.test.jdshangmen.com/bug-view-5460.html
// 填写不完整的给提示
let notOk = []
data.priceStepList.forEach((item, index) => {
if(!this.willBeIgnore(item) && !this.isStepPriceOk(item)){
notOk.push(index + 1)
}
})
if(notOk.length){
return this.$confirm(this.$t("第{steps}阶梯设置不完整", {steps: notOk.join(",")}))
}
// 删除未填写的阶梯价
data.priceStepList = data.priceStepList.filter(item => {
return !this.willBeIgnore(item)
})
if(!data.priceStepList.length){
delete data.priceStepList
}
}
data.lineChannelList = this.selectedRoutes
......
......@@ -37,7 +37,12 @@
<el-option v-for="city in destCityList" :key="city.id" :label="$l(city, 'title')" :value="city.id" />
</el-select>
</el-form-item>
<el-form-item :label="$t('是否预付')" prop="needPay">
<el-select v-model="queryParams.needPay" :placeholder="$t('请选择')" clearable>
<el-option :label="$t('是')" value="1"></el-option>
<el-option :label="$t('否')" value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('上架状态')" prop="auditStatus">
<dict-selector :type="DICT_TYPE.ECW_PRICE_AUDIT_STATUS" v-model="queryParams.auditStatus" clearable/>
</el-form-item>
......@@ -47,7 +52,12 @@
<el-option :label="$t('黑名单')" value="blacklist_1"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('是否单询')" prop="needOrderInquiry">
<el-select v-model="queryParams.needOrderInquiry" :placeholder="$t('请选择')" clearable>
<el-option :label="$t('是')" value="1"></el-option>
<el-option :label="$t('否')" value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
......
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