Commit 9a5e67fb authored by 邓春圆's avatar 邓春圆

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

parents 45dda5cf 66c486d8
...@@ -54,6 +54,15 @@ export function exportboxExcel(query) { ...@@ -54,6 +54,15 @@ export function exportboxExcel(query) {
}); });
} }
// 导出预装单-异步
export function exportPreloadGoodsList(query) {
return request({
url: "/ecw/box-preload-goods/downloadPreloadGoodsList",
method: "get",
params: query
});
}
// 创建费用登记 // 创建费用登记
export function createCost(data) { export function createCost(data) {
if (data.id) { if (data.id) {
...@@ -220,6 +229,15 @@ export function getNoticeList(data) { ...@@ -220,6 +229,15 @@ export function getNoticeList(data) {
}); });
} }
// 空运出货提示
export function getAirNoticeList(data) {
return request({
url: "/shipment/box/airNoticeList",
method: "post",
data,
});
}
/** /**
* 根据订单ID下载提货单 * 根据订单ID下载提货单
* *
......
...@@ -112,7 +112,7 @@ export function getBmpDetailByBusinessId(businessId) { ...@@ -112,7 +112,7 @@ export function getBmpDetailByBusinessId(businessId) {
// 导出订单异常 Excel // 导出订单异常 Excel
export function exportExcel(params) { export function exportExcel(params) {
return request({ return request({
url: '/ecw/order-exception/export-excel', url: '/ecw/order-exception/export-excel-async',
method: 'get', method: 'get',
timeout: 30*60*1000, timeout: 30*60*1000,
params, params,
......
...@@ -21,3 +21,17 @@ export function download(id){ ...@@ -21,3 +21,17 @@ export function download(id){
export function downloadFileResponse(url){ export function downloadFileResponse(url){
return axios.get(url, {responseType: 'blob'}) return axios.get(url, {responseType: 'blob'})
} }
// 重试
export function retry(id){
return request({
url: '/system/download-log/retry/' + id
})
}
// 删除
export function deleteLog(id){
return request({
url: '/system/download-log/del/' + id
})
}
...@@ -220,6 +220,7 @@ export const DICT_TYPE = { ...@@ -220,6 +220,7 @@ export const DICT_TYPE = {
BOX_SHIPPING_BRAND_TYPE: 'shipping_brand_type', // 出货品牌类型 BOX_SHIPPING_BRAND_TYPE: 'shipping_brand_type', // 出货品牌类型
BOX_SHIPPING_NOTICE_TYPE: 'shipping_notice_type', // 出货通知类型 BOX_SHIPPING_NOTICE_TYPE: 'shipping_notice_type', // 出货通知类型
BOX_ORDER_SHIPMENT_STATE: 'order_shipment_state', BOX_ORDER_SHIPMENT_STATE: 'order_shipment_state',
BOX_AIR_SHIPMENT_STATE: 'air_shipment_status',
BOX_INSPECTION_TIME_CUSTOMS: 'inspection_time_customs', // 校验时间-报关 BOX_INSPECTION_TIME_CUSTOMS: 'inspection_time_customs', // 校验时间-报关
BOX_INSPECTION_TIME_SHIPPING: 'inspection_time_shipping', // 校验时间-起运 BOX_INSPECTION_TIME_SHIPPING: 'inspection_time_shipping', // 校验时间-起运
BOX_INSPECTION_TIME_ARRIVAL: 'inspection_time_arrival', // 校验时间-到港 BOX_INSPECTION_TIME_ARRIVAL: 'inspection_time_arrival', // 校验时间-到港
......
...@@ -421,6 +421,28 @@ export default { ...@@ -421,6 +421,28 @@ export default {
component: () => import('@/views/ecw/customer/components/customer-handover-details.vue'), component: () => import('@/views/ecw/customer/components/customer-handover-details.vue'),
processId: this.processInstance.businessKey, processId: this.processInstance.businessKey,
type: this.processInstance.processDefinition?.formCustomViewPath type: this.processInstance.processDefinition?.formCustomViewPath
},
// 出货审核
air_shipment: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
type: 'shipment'
},
//排单分拣审核
shipment_order_sorting: {
component: "shippingDetail",
processId: this.processInstance.businessKey
},
// 出货反审
shipment_review: {
component: "shippingDetail",
processId: this.processInstance.businessKey
},
// 删单退场
customs_declare_remove: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
type: 'deleteExit'
} }
} }
console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim()) console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim())
......
<template>
<el-dialog :title="orderNo + $t('订单转异')" center :visible.sync="show" v-bind="$attrs" :close-on-click-modal="false">
<el-form label-position="top" label-width="200" ref="exceptionForm" :model="form" :rules="exceptionRules">
<el-form-item :label="$t('原因类型')" prop="manualExceptionType">
<dict-selector v-model="form.manualExceptionType" form-type="checkbox" :type="DICT_TYPE.MANUAL_EXCEPTION_TYPE" multiple ></dict-selector>
</el-form-item>
<el-form-item :label="$t('附件')">
<image-upload v-model="form.exceptionUrls"></image-upload>
</el-form-item>
<el-form-item :label="$t('详细信息')">
<el-input v-model="form.descZh" type="textarea"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleException">{{$t('确认转异')}}</el-button>
<el-button @click="cancel">{{$t('取消')}}</el-button>
</span>
</el-dialog>
</template>
<script>
import imageUpload from "@/components/ImageUpload/index.vue";
import {batchException} from "@/api/ecw/order";
export default {
components: {imageUpload},
props:{
orderNo:{
type: String,
},
orderId:{
type: Number,
}
},
data(){
return {
show: false,
form: {
manualExceptionType: [],
exceptionUrls: '',
descZh: ''
},
exceptionRules:{}
}
},
async created(){
this.$nextTick()
this.show = true
},
methods:{
cancel(){
this.show = false
this.$emit('cancel');
},
handleException(){
if(!this.form.manualExceptionType.length){
return this.$message.error(this.$t('请选择异常类型'))
}
batchException({
orderIds: [this.orderId],
manualExceptionType: this.form.manualExceptionType.join(","),
exceptionUrls: this.form.exceptionUrls?.split(",") || [],
descZh: this.form.descZh
}).then(res=>{
this.$message.success(this.$t('操作成功'));
this.show = false
this.$emit('success');
})
}
}
}
</script>
<style scoped lang="scss">
</style>
...@@ -25,13 +25,14 @@ ...@@ -25,13 +25,14 @@
<el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option> <el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('目的港清关')" prop="destinationClearance"> <el-form-item :label="$t('目的港清关')" prop="destinationClearanceSelect">
<el-radio-group v-model="form.destinationClearanceSelect" @input="destinationClearanceSelect"> <el-radio-group v-model="form.destinationClearance">
<el-radio :label="1">{{$t('我司')}}</el-radio> <el-radio v-if="form.destinationClearance != 2" :label="1">{{$t('我司')}}</el-radio>
<el-radio v-else :label="2">{{$t('我司')}}</el-radio>
<el-radio :label="3">{{$t('客户')}}</el-radio> <el-radio :label="3">{{$t('客户')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item v-if="form.destinationClearanceSelect==1" prop="destinationClearance" :rules="[ <el-form-item v-if="form.destinationClearance===1 || form.destinationClearance===2" prop="destinationClearance" :rules="[
{ required: true, message: this.$t('清关方式不能为空'), trigger: 'blur' } { required: true, message: this.$t('清关方式不能为空'), trigger: 'blur' }
]"> ]">
<el-radio-group v-model="form.destinationClearance"> <el-radio-group v-model="form.destinationClearance">
...@@ -79,7 +80,7 @@ export default { ...@@ -79,7 +80,7 @@ export default {
data() { data() {
return { return {
// 表单参数 // 表单参数
form: {}, form: { },
channelList: [], channelList: [],
// 表单校验 // 表单校验
rules: { rules: {
...@@ -95,13 +96,20 @@ export default { ...@@ -95,13 +96,20 @@ export default {
} }
}; };
}, },
watch:{
'form.destinationClearanceSelect'(){
if(!this.form.destinationClearance){
this.$set(this.form, 'destinationClearance', 1)
}
}
},
methods: { methods: {
getChannelList() { getChannelList() {
getChannelList().then((res) => (this.channelList = res.data)) getChannelList().then((res) => (this.channelList = res.data))
}, },
destinationClearanceSelect(val) { /*destinationClearanceSelect(val) {
this.$set(this.form,'destinationClearance',val) this.$set(this.form,'destinationClearance',val)
}, },*/
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
......
...@@ -21,9 +21,9 @@ ...@@ -21,9 +21,9 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('状态')" prop="boxStatus"> <el-form-item :label="$t('状态')" prop="shipmentStatusAir">
<el-select v-model="queryParams.boxStatus" :placeholder="$t('请选择状态')" clearable size="small"> <el-select v-model="queryParams.shipmentStatusAir" :placeholder="$t('请选择状态')" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BOX_SHIPMENT_STATUS)" :key="dict.value" :label="$l(dict, 'label')" :value="dict.value" /> <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BOX_AIR_SHIPMENT_STATE)" :key="dict.value" :label="$l(dict, 'label')" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-row> <el-row>
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
<el-dropdown trigger="click" @command="(command) => handleCommand(scope.row, command)" style="marginRight:10px;"> <el-dropdown trigger="click" @command="(command) => handleCommand(scope.row, command)" style="marginRight:10px;">
<el-button type="primary"> {{ $t('操作') }}<i class="el-icon-arrow-down el-icon--right"></i> </el-button> <el-button type="primary"> {{ $t('操作') }}<i class="el-icon-arrow-down el-icon--right"></i> </el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="edit">{{$t('编辑')}}</el-dropdown-item> <el-dropdown-item command="edit" :disabled="scope.row.prStatus>21">{{$t('编辑')}}</el-dropdown-item>
<el-dropdown-item command="air">{{$t('操作')}}-{{$t('空运')}}</el-dropdown-item> <el-dropdown-item command="air">{{$t('操作')}}-{{$t('空运')}}</el-dropdown-item>
<el-dropdown-item command="error">{{$t('异常登记')}}</el-dropdown-item> <el-dropdown-item command="error">{{$t('异常登记')}}</el-dropdown-item>
<el-dropdown-item command="cost">{{$t('费用登记')}}</el-dropdown-item> <el-dropdown-item command="cost">{{$t('费用登记')}}</el-dropdown-item>
...@@ -194,7 +194,15 @@ ...@@ -194,7 +194,15 @@
</template> </template>
<script> <script>
import {deletebox, getbox, getboxPage, exportboxExcel, getNoticeList, dealCustomsSplitNotify} from '@/api/ecw/box' import {
deletebox,
getbox,
getboxPage,
exportboxExcel,
getNoticeList,
dealCustomsSplitNotify,
exportPreloadGoodsList, downloadReceivableList, getAirNoticeList, zipDownload
} from '@/api/ecw/box'
import { getChannelList } from '@/api/ecw/channel' import { getChannelList } from '@/api/ecw/channel'
import { getWarehouseList } from '@/api/ecw/warehouse' import { getWarehouseList } from '@/api/ecw/warehouse'
import costForm from './costForm.vue' import costForm from './costForm.vue'
...@@ -260,7 +268,7 @@ export default { ...@@ -260,7 +268,7 @@ export default {
selfNo: null, selfNo: null,
cubNo: null, cubNo: null,
cabinetId: null, cabinetId: null,
boxStatus: null, shipmentStatusAir: null,
startWarehouseId: null, startWarehouseId: null,
destWarehouseId: null, destWarehouseId: null,
transportType: null transportType: null
...@@ -350,7 +358,7 @@ export default { ...@@ -350,7 +358,7 @@ export default {
getChannelList().then((res) => (this.channelList = res.data)) getChannelList().then((res) => (this.channelList = res.data))
}, },
queryNotice() { queryNotice() {
getNoticeList({ getAirNoticeList({
transportTypeList: this.transportTypes.map((item) => item.value), transportTypeList: this.transportTypes.map((item) => item.value),
}).then((res) => { }).then((res) => {
const { data } = res; const { data } = res;
...@@ -506,12 +514,13 @@ export default { ...@@ -506,12 +514,13 @@ export default {
this.$router.push('/boxAir/batch_markup?shipmentId=' + row.id) this.$router.push('/boxAir/batch_markup?shipmentId=' + row.id)
break break
case "downloadPreloadGoodsList": case "downloadPreloadGoodsList":
downloadFile( // downloadFile(
command, // command,
{shipmentId: row.id}, // {shipmentId: row.id},
this.$t("预装单") + `(${row.selfNo}).xlsx`, // this.$t("预装单") + `(${row.selfNo}).xlsx`,
"xlsx" // "xlsx"
); // );
this.exportExcel(exportPreloadGoodsList, { shipmentId: row.id }, this.$t("预装单") + `(${row.selfNo}).xlsx`)
break; break;
case "downloadLoadGoodsList": case "downloadLoadGoodsList":
downloadFile( downloadFile(
...@@ -522,20 +531,19 @@ export default { ...@@ -522,20 +531,19 @@ export default {
); );
break; break;
case "downloadReceivableList": case "downloadReceivableList":
downloadFile( this.exportExcel(
command, downloadReceivableList,
{shipmentId: row.id}, {shipmentId: row.id}
this.$t("应收汇总表") + `(${row.selfNo}).xlsx`,
"xlsx"
); );
break; break;
case "zipDownload": case "zipDownload":
downloadFile( /*downloadFile(
command, command,
{shipmentId: row.id}, {shipmentId: row.id},
this.$t("提货单") + `(${row.selfNo}).zip`, this.$t("提货单") + `(${row.selfNo}).zip`,
"zip" "zip"
); );*/
this.exportExcel(zipDownload, { shipmentId: row.id }, this.$t("提货单") + `(${row.selfNo}).zip`)
break; break;
case "downloadAgentListFiles": case "downloadAgentListFiles":
case "downloadSoncapFiles": case "downloadSoncapFiles":
...@@ -563,6 +571,20 @@ export default { ...@@ -563,6 +571,20 @@ export default {
this.$set(this.dialogCfg, "open", true); this.$set(this.dialogCfg, "open", true);
} }
}, },
// 通用导出函数
exportExcel(func, params, fileName = null){
this.exportLoading = true;
func(params).then(res => {
console.log({res})
if(!fileName){
fileName = this.$t('订单')
}
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
// this.$download.excel(res, fileName + '.xls');
}).finally(() => {
this.exportLoading = false
})
},
} }
} }
......
...@@ -213,7 +213,7 @@ import { ...@@ -213,7 +213,7 @@ import {
getbox, getbox,
getboxPage, getboxPage,
exportboxExcel, exportboxExcel,
getNoticeList, dealCustomsSplitNotify, getNoticeList, dealCustomsSplitNotify, exportPreloadGoodsList, zipDownload,
} from "@/api/ecw/box"; } from "@/api/ecw/box";
import { import {
downloadFile, downloadFile,
...@@ -287,7 +287,7 @@ export default { ...@@ -287,7 +287,7 @@ export default {
countryList: [], countryList: [],
// 通知列表 // 通知列表
noticeList: [], noticeList: [],
allUsers: [], allUsers: []
}; };
}, },
computed: { computed: {
...@@ -489,12 +489,13 @@ export default { ...@@ -489,12 +489,13 @@ export default {
break; break;
case "downloadPreloadGoodsList": case "downloadPreloadGoodsList":
downloadFile( // downloadFile(
command, // command,
{ shipmentId: row.id }, // { shipmentId: row.id },
this.$t("预装单") + `(${row.selfNo}).xlsx`, // this.$t("预装单") + `(${row.selfNo}).xlsx`,
"xlsx" // "xlsx"
); // );
this.exportExcel(exportPreloadGoodsList, { shipmentId: row.id }, this.$t("预装单") + `(${row.selfNo}).xlsx`)
break; break;
case "downloadLoadGoodsList": case "downloadLoadGoodsList":
downloadFile( downloadFile(
...@@ -513,12 +514,13 @@ export default { ...@@ -513,12 +514,13 @@ export default {
); );
break; break;
case "zipDownload": case "zipDownload":
downloadFile( /* downloadFile(
command, command,
{ shipmentId: row.id }, { shipmentId: row.id },
this.$t("提货单") + `(${row.selfNo}).zip`, this.$t("提货单") + `(${row.selfNo}).zip`,
"zip" "zip"
); );*/
this.exportExcel(zipDownload, { shipmentId: row.id }, this.$t("提货单") + `(${row.selfNo}).zip`)
break; break;
case "downloadAgentListFiles": case "downloadAgentListFiles":
case "downloadSoncapFiles": case "downloadSoncapFiles":
...@@ -547,6 +549,20 @@ export default { ...@@ -547,6 +549,20 @@ export default {
this.$set(this.dialogCfg, "open", true); this.$set(this.dialogCfg, "open", true);
} }
}, },
// 通用导出函数
exportExcel(func, params, fileName = null){
this.exportLoading = true;
func(params).then(res => {
console.log({res})
if(!fileName){
fileName = this.$t('订单')
}
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
// this.$download.excel(res, fileName + '.xls');
}).finally(() => {
this.exportLoading = false
})
},
/* 分页 */ /* 分页 */
pageChange(page) { pageChange(page) {
this.pageParam.page = page; this.pageParam.page = page;
......
...@@ -302,7 +302,7 @@ export default { ...@@ -302,7 +302,7 @@ export default {
// 下载 // 下载
downloadList: [ downloadList: [
{ title: this.$t("预装单"), serviceName: "downloadPreloadGoodsList", hasPermi: "shipment:box:download:downloadPreloadGoodsList" }, { title: this.$t("预装单"), serviceName: "downloadPreloadGoodsList", hasPermi: "shipment:box:download:downloadPreloadGoodsList" },
{ title: this.$t("已装单"), serviceName: "downloadLoadGoodsList", hasPermi: "shipment:box:download:downloadLoadGoodsList" }, // { title: this.$t("已装单"), serviceName: "downloadLoadGoodsList", hasPermi: "shipment:box:download:downloadLoadGoodsList" },
{ title: this.$t("应收汇总表"), serviceName: "downloadReceivableList", hasPermi: "shipment:box:download:downloadReceivableList" }, { title: this.$t("应收汇总表"), serviceName: "downloadReceivableList", hasPermi: "shipment:box:download:downloadReceivableList" },
{ {
title: this.$t("提货单"), title: this.$t("提货单"),
......
...@@ -68,12 +68,12 @@ ...@@ -68,12 +68,12 @@
<el-input type="textarea" :rows ="6" v-model="airCheckoutObj.remark" :placeholder="$t('备注')"></el-input> <el-input type="textarea" :rows ="6" v-model="airCheckoutObj.remark" :placeholder="$t('备注')"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button> <el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button>
<el-button type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button> <el-button :disabled="$attrs.shipmentObj.approvaling" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button> <el-button @click="cancel">{{$t('关闭')}}</el-button>
</el-row> </el-row>
</div> </div>
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="cusDeclarationObj.dcDecTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="cusDeclarationObj.dcDecTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('状态')" prop="dcCustomsStatus"> <el-form-item :label="$t('状态')" prop="dcCustomsStatus">
<el-radio-group v-model="cusDeclarationObj.dcCustomsStatus" :disabled="inReview || isCheckDeal('status')"> <el-radio-group v-model="cusDeclarationObj.dcCustomsStatus" :disabled="inReview || inOverReview || isCheckDeal('status')">
<el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_DCCUSTOMS_STATUS)" :key="item.value" :label="item.value">{{$l(item, 'label')}}</el-radio> <el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_DCCUSTOMS_STATUS)" :key="item.value" :label="item.value">{{$l(item, 'label')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<!-- 查验 --> <!-- 查验 -->
<div v-show="cusDeclarationObj.dcCustomsStatus === '3'"> <div v-show="cusDeclarationObj.dcCustomsStatus === '3'">
<el-form-item :label="$t('查验')"> <el-form-item :label="$t('查验')">
<el-radio-group v-model="cusDeclarationObj.dcCheckStatus" :disabled="inReview || isCheckDeal('check')"> <el-radio-group v-model="cusDeclarationObj.dcCheckStatus" :disabled="inReview || inOverReview || isCheckDeal('check')">
<el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_CHECK_STATUS)" :key="item.value" :label="item.value" :disabled="disabledRadio(item)">{{$l(item, 'label')}}</el-radio> <el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_CHECK_STATUS)" :key="item.value" :label="item.value" :disabled="disabledRadio(item)">{{$l(item, 'label')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
...@@ -54,27 +54,40 @@ ...@@ -54,27 +54,40 @@
</el-form-item> </el-form-item>
<el-form-item :label="$t('过机状态')" prop="overMachineStatus"> <el-form-item :label="$t('过机状态')" prop="overMachineStatus">
<el-radio-group v-model="cusDeclarationObj.overMachineStatus" :disabled="inReview"> <el-radio-group v-model="cusDeclarationObj.overMachineStatus" :disabled="inReview||inOverReview">
<el-radio :label="1">{{$t('顺利')}}</el-radio> <el-radio :label="1">{{$t('顺利')}}</el-radio>
<el-radio :label="2">{{$t('异常')}}</el-radio> <el-radio :label="2">{{$t('异常')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item prop="overMachineAbnormalStatus" v-show="cusDeclarationObj.overMachineStatus == 2"> <el-form-item prop="overMachineAbnormalStatus" v-show="cusDeclarationObj.overMachineStatus == 2">
<el-radio-group v-model="cusDeclarationObj.overMachineAbnormalStatus" :disabled="inReview"> <el-radio-group v-model="cusDeclarationObj.overMachineAbnormalStatus" :disabled="inReview||inOverReview">
<el-radio :label="1">{{$t('敏感货')}}</el-radio> <el-radio :label="1">{{$t('敏感货')}}</el-radio>
<el-radio :label="2">{{$t('重量误报')}}</el-radio> <el-radio :label="2">{{$t('重量误报')}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1" :label="$t('删单退场类型')">
<el-radio-group v-model="cusDeclarationObj.deleteExitType" :disabled="inReview||inOverReview">
<el-radio :label="1">{{$t('退场时间')}}<el-tooltip class="item" effect="dark" :content="$t('选择退场时间,填写退场时间后,提交删单退场审核,订单返回到“已订舱”环节修改订舱号后,提交之后直接到报关流程')" placement="top">
<div class="el-icon-question"></div>
</el-tooltip></el-radio>
<el-radio :label="2">{{$t('返回仓库')}}<el-tooltip class="item" effect="dark" :content="$t('删单退场审核通过后,通过PDA空运退场到仓进行货物入仓')" placement="top">
<div class="el-icon-question"></div>
</el-tooltip></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1 && cusDeclarationObj.deleteExitType == 1" :label="$t('退场时间')">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="cusDeclarationObj.deleteExitTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1"> <el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1">
<el-form-item :label="$t('删单退场状态')"> <el-form-item :label="$t('删单退场状态')">
{{getCheckExamineStatus}} {{getOverExamineStatus}}
</el-form-item> </el-form-item>
</el-form-item> </el-form-item>
<el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1 && shipmentObj.overMachineExamineStatus == 0 && (typeof cusDeclarationObj.id != 'undefined')"> <el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1 && ![1].includes(shipmentObj.overMachineExamineStatus)">
<el-button type="primary" @click="approvalCreate">{{$t('提交删单退场审核')}}</el-button> <el-button type="primary" @click="approvalCreate">{{$t('提交删单退场审核')}}</el-button>
</el-form-item> </el-form-item>
<el-form-item prop="weightMisreport" v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 2"> <el-form-item prop="weightMisreport" v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 2">
<el-radio-group v-model="cusDeclarationObj.weightMisreport" :disabled="inReview"> <el-radio-group v-model="cusDeclarationObj.weightMisreport" :disabled="inOverReview">
<el-radio :label="1">{{$t('机场误差3%')}}</el-radio> <el-radio :label="1">{{$t('机场误差3%')}}</el-radio>
<el-radio :label="2">{{$t('超过误差10KG')}}</el-radio> <el-radio :label="2">{{$t('超过误差10KG')}}</el-radio>
<el-radio :label="3">{{$t('过机放行-未找到重货订单')}}</el-radio> <el-radio :label="3">{{$t('过机放行-未找到重货订单')}}</el-radio>
...@@ -106,10 +119,14 @@ ...@@ -106,10 +119,14 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="operate-button" v-if="inReview">
<el-button type="primary" @click="jumpReviewDetail">{{cusDeclarationObj.dcCheckStatus === '1' ? $t('全部退场审核中') : $t('部分退场审核中')}}</el-button>
<el-button type="primary" plain @click="canclAudit">{{cusDeclarationObj.dcCheckStatus === '1' ? $t('取消全部退场审核') : $t('取消部分退场审核')}}</el-button>
</el-row>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button type="primary" v-if="inReview" plain @click="canclAudit">{{$t('取消删单退场审核')}}</el-button> <el-button type="primary" v-if="inOverReview" plain @click="canclOverAudit">{{$t('取消删单退场审核')}}</el-button>
<el-button type="primary" @click="onSubmit(1)" :disabled="isCheckDeal('submit')">{{$t('保存')}}</el-button> <el-button type="primary" @click="onSubmit(1)" :disabled="isCheckDeal('submit')">{{$t('保存')}}</el-button>
<el-button type="success" v-if="!inReview" @click="onSubmit(2)" :disabled="isCheckDeal('submit')">{{$t('提交')}}</el-button> <el-button type="success" v-if="!inReview&&!inOverReview" @click="onSubmit(2)" :disabled="isCheckDeal('submit')">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button> <el-button @click="cancel">{{$t('关闭')}}</el-button>
<el-button type="primary" @click="extraCost" v-show="cusDeclarationObj.dcCustomsStatus === '2' || cusDeclarationObj.dcCustomsStatus === '3'">{{$t('额外费用')}}</el-button> <el-button type="primary" @click="extraCost" v-show="cusDeclarationObj.dcCustomsStatus === '2' || cusDeclarationObj.dcCustomsStatus === '3'">{{$t('额外费用')}}</el-button>
<!-- <el-button type="primary" @click="exceptionReg" :disabled="!isShowError">{{$t('异常登记')}}</el-button> --> <!-- <el-button type="primary" @click="exceptionReg" :disabled="!isShowError">{{$t('异常登记')}}</el-button> -->
...@@ -250,6 +267,7 @@ export default { ...@@ -250,6 +267,7 @@ export default {
costList: [], costList: [],
// 是否审核中 // 是否审核中
inReview: false, inReview: false,
inOverReview: false,
// 异常登记 // 异常登记
regDialogVisible: false, regDialogVisible: false,
isShowError: false, isShowError: false,
...@@ -294,6 +312,13 @@ export default { ...@@ -294,6 +312,13 @@ export default {
this.$set(this.cusDeclarationObj, "overMachineStatus", 2) this.$set(this.cusDeclarationObj, "overMachineStatus", 2)
this.$set(this.cusDeclarationObj, "overMachineAbnormalStatus", 1) this.$set(this.cusDeclarationObj, "overMachineAbnormalStatus", 1)
} }
if(this.shipmentObj.customsDeleteExitApprovalInfo){
if(this.shipmentObj.customsDeleteExitApprovalInfo.details){
let details = JSON.parse(this.shipmentObj.customsDeleteExitApprovalInfo.details)
this.$set(this.cusDeclarationObj, "deleteExitType", details.deleteExitType)
this.$set(this.cusDeclarationObj, "deleteExitTime", details.deleteExitTime)
}
}
}, },
methods: { methods: {
strToArray(str) { strToArray(str) {
...@@ -372,12 +397,26 @@ export default { ...@@ -372,12 +397,26 @@ export default {
}, },
//提交删单退场审核 //提交删单退场审核
approvalCreate(){ approvalCreate(){
if(!this.cusDeclarationObj.deleteExitType){
this.$message.error(this.$t("请选择删单退场类型或者时间"));
return;
}
if(this.cusDeclarationObj.deleteExitType == 1 && !this.cusDeclarationObj.deleteExitTime){
this.$message.error(this.$t("请选择退场时间"));
return;
}
let details = {
deleteExitType: this.cusDeclarationObj.deleteExitType,
deleteExitTime: this.cusDeclarationObj.deleteExitTime
}
approvalCreate({ approvalCreate({
shipmentId: this.shipmentObj.id, shipmentId: this.shipmentObj.id,
approvalStatus: 0, approvalStatus: 0,
approvalType: 11 approvalType: 11,
details: JSON.stringify(details)
}).then((res) => { }).then((res) => {
serviceMsg(res, this).then(() => { serviceMsg(res, this).then(() => {
this.cancel("submit");
}); });
}); });
}, },
...@@ -564,8 +603,23 @@ export default { ...@@ -564,8 +603,23 @@ export default {
toReviewDetail.apply(this, [customsApprovalInfo.bpmProcessId]); toReviewDetail.apply(this, [customsApprovalInfo.bpmProcessId]);
this.cancel("close"); this.cancel("close");
}, },
/* 取消审核 */ /* 取消退场审核 */
canclAudit() { canclAudit() {
console.log(this.shipmentObj)
approvalCancel({
applyReason: this.$t("取消审核"),
id: this.shipmentObj["customsApprovalInfo"].id,
shipmentId: this.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
// 触发外层重新查询出货信息
this.cancel("close");
this.$emit("getBoxInfo");
});
});
},
/* 取消删单退场审核 */
canclOverAudit() {
console.log(this.shipmentObj) console.log(this.shipmentObj)
approvalCancel({ approvalCancel({
applyReason: this.$t("取消审核"), applyReason: this.$t("取消审核"),
...@@ -636,8 +690,12 @@ export default { ...@@ -636,8 +690,12 @@ export default {
immediate: true, immediate: true,
handler: function (val) { handler: function (val) {
// 监听查验状态变化 // 监听查验状态变化
let { overMachineExamineStatus } = val; let { overMachineExamineStatus, checkExamineStatus } = val;
if (overMachineExamineStatus === 1) { if (overMachineExamineStatus === 1) {
// 按钮变成审核中
this.inOverReview = true;
}
if (checkExamineStatus === 1) {
// 按钮变成审核中 // 按钮变成审核中
this.inReview = true; this.inReview = true;
} }
...@@ -662,21 +720,38 @@ export default { ...@@ -662,21 +720,38 @@ export default {
computed: { computed: {
/* 获取报关审核退场状态文字 */ /* 获取报关审核退场状态文字 */
getCheckExamineStatus() { getCheckExamineStatus() {
const { overMachineExamineStatus, checkDealStatus, customsInfo } = const { checkExamineStatus, checkDealStatus, customsInfo } =
this.shipmentObj; this.shipmentObj;
const { dcCheckStatus } = customsInfo ?? {}; const { dcCheckStatus } = customsInfo ?? {};
if (overMachineExamineStatus === 1) { if (checkExamineStatus === 1) {
return dcCheckStatus === 1 return dcCheckStatus === 1
? this.$t("退场审核中") ? this.$t("退场审核中")
: this.$t("部分退场审核中"); : this.$t("部分退场审核中");
} }
if (overMachineExamineStatus === 2 && checkDealStatus === 0) { if (checkExamineStatus === 2 && checkDealStatus === 0) {
return dcCheckStatus === 1 return dcCheckStatus === 1
? this.$t("审核通过,退场中") ? this.$t("审核通过,退场中")
: this.$t("审核通过,部分退场中"); : this.$t("审核通过,部分退场中");
} }
return this.$t("未审核"); return this.$t("未审核");
}, },
/* 获取报关审核删单退场状态文字 */
getOverExamineStatus() {
const { overMachineExamineStatus, checkDealStatus, customsInfo } =
this.shipmentObj;
const { dcCheckStatus } = customsInfo ?? {};
if (overMachineExamineStatus === 1) {
return dcCheckStatus === 1
? this.$t("删单退场审核中")
: this.$t("删单退场审核中");
}
if (overMachineExamineStatus === 2 && checkDealStatus === 0) {
return dcCheckStatus === 1
? this.$t("删单退场审核通过,退场中")
: this.$t("删单退场审核通过,退场中");
}
return this.$t("未审核");
},
/* 判断是否已处理 */ /* 判断是否已处理 */
isCheckDeal() { isCheckDeal() {
return (type) => { return (type) => {
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
<el-button <el-button
size="small" size="small"
type="primary" type="primary"
:disabled="shipmentObj.approvaling"
@click=" @click="
addMergedialogVisible = true addMergedialogVisible = true
isMergeEdit = false isMergeEdit = false
...@@ -57,8 +58,8 @@ ...@@ -57,8 +58,8 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')" align="center" width="260" class-name="small-padding fixed-width" fixed="right"> <el-table-column :label="$t('操作')" align="center" width="260" class-name="small-padding fixed-width" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="scope.row.status == 1" type="text" size="small" @click="editMerge(scope.row)">{{ $t('编辑') }}</el-button> <el-button :disabled="shipmentObj.approvaling" v-if="scope.row.status == 1" type="text" size="small" @click="editMerge(scope.row)">{{ $t('编辑') }}</el-button>
<el-button type="text" size="small" @click="pkgPage(scope.row)">{{ $t('装箱') }}</el-button> <el-button :disabled="shipmentObj.approvaling" type="text" size="small" @click="pkgPage(scope.row)">{{ $t('装箱') }}</el-button>
<el-button v-if="scope.row.status != 2" type="text" size="small" @click="deleteMerge(scope.row.id)">{{ $t('删除') }}</el-button> <el-button v-if="scope.row.status != 2" type="text" size="small" @click="deleteMerge(scope.row.id)">{{ $t('删除') }}</el-button>
<el-button type="text" size="small" @click="printTag(scope.row.id)">{{ $t('打印标签') }}</el-button> <el-button type="text" size="small" @click="printTag(scope.row.id)">{{ $t('打印标签') }}</el-button>
</template> </template>
...@@ -115,7 +116,7 @@ ...@@ -115,7 +116,7 @@
</el-dialog> </el-dialog>
<el-row style="margin-top: 15px" class="operate-button"> <el-row style="margin-top: 15px" class="operate-button">
<el-button size="small" type="primary" @click="finish">{{ $t('完成') }}</el-button> <el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="finish">{{ $t('完成') }}</el-button>
<el-button size="small" @click="$emit('closeDialog')">{{ $t('取消') }}</el-button> <el-button size="small" @click="$emit('closeDialog')">{{ $t('取消') }}</el-button>
</el-row> </el-row>
</el-col> </el-col>
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('备案')" align="center"> <el-table-column :label="$t('备案')" align="center">
<template slot-scope="{ row }"> <template slot-scope="{ row }">
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="row.productRecord" /> <dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="row.productRecord" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('箱数')" align="center" prop="sumNum"> <el-table-column :label="$t('箱数')" align="center" prop="sumNum">
...@@ -265,4 +265,4 @@ export default { ...@@ -265,4 +265,4 @@ export default {
</script> </script>
<style> <style>
</style> </style>
\ No newline at end of file
...@@ -109,11 +109,11 @@ ...@@ -109,11 +109,11 @@
<!--<div class="red-label"> <!--<div class="red-label">
<p>{{$t('可分拣方数')}}</p> <p>{{$t('可分拣方数')}}</p>
<p>{{preList.remainVolume}}</p> <p>{{preList.remainVolume}}</p>
</div>--> </div>
<div class="red-label"> <div class="red-label">
<p>{{$t('重量')}}</p> <p>{{$t('重量')}}</p>
<p>{{preList.remainWeight || 0}}kg</p> <p>{{preList.remainWeight || 0}}kg</p>
</div> </div-->
<div class="table-button"> <div class="table-button">
<el-button type="success" size="small" @click="addPart" :disabled="isAudit">{{$t('增加')}}</el-button> <el-button type="success" size="small" @click="addPart" :disabled="isAudit">{{$t('增加')}}</el-button>
</div> </div>
...@@ -174,7 +174,7 @@ ...@@ -174,7 +174,7 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('特性')" align="center" prop="attrNameList" width="120"> <el-table-column :label="$t('特性')" align="center" prop="attrNameList" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
{{scope.row.attrNameList?scope.row.attrNameList.toString():''}} {{scope.row.warehouseInAttrNameList?scope.row.warehouseInAttrNameList.toString():""}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('备案')" align="center" prop="productRecord" width="100"> <el-table-column :label="$t('备案')" align="center" prop="productRecord" width="100">
...@@ -335,7 +335,7 @@ ...@@ -335,7 +335,7 @@
<el-row class="process-area"> <el-row class="process-area">
<div class="process"> <div class="process">
<div>{{$t('审批流程')}}</div> <div>{{$t('审批流程')}}</div>
<work-flow xmlkey="shipment_preassemble" v-model="selectedUsers"></work-flow> <work-flow xmlkey="shipment_order_sorting" v-model="selectedUsers"></work-flow>
</div> </div>
<div v-show="isAudit"> <div v-show="isAudit">
<el-button type="primary" @click="jumpReviewDetail">{{$t('审核中')}}</el-button> <el-button type="primary" @click="jumpReviewDetail">{{$t('审核中')}}</el-button>
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
</el-form-item> </el-form-item>
<span v-if="voKey=='preInstallBackInfo'" style="color: red;margin-left: 120px;">{{$t('请注意,分拣反审后,全部提单需重新制作')}}</span> <span v-if="voKey=='preInstallBackInfo'" style="color: red;margin-left: 120px;">{{$t('请注意,分拣反审后,全部提单需重新制作')}}</span>
</el-form> </el-form>
<work-flow v-if="xmlKey" :xmlkey="xmlKey" v-model="copyUserId"></work-flow>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button type="success" @click="onSubmit" v-show="!isReview">{{$t('发起申请')}}</el-button> <el-button type="success" @click="onSubmit" v-show="!isReview">{{$t('发起申请')}}</el-button>
<el-button type="primary" @click="jumpReviewDetail" v-show="isReview">{{$t('审核中')}}</el-button> <el-button type="primary" @click="jumpReviewDetail" v-show="isReview">{{$t('审核中')}}</el-button>
...@@ -18,6 +19,7 @@ ...@@ -18,6 +19,7 @@
<script> <script>
import { approvalCreate, approvalCancel } from "@/api/ecw/boxSea"; import { approvalCreate, approvalCancel } from "@/api/ecw/boxSea";
import { serviceMsg, toReviewDetail } from "../utils"; import { serviceMsg, toReviewDetail } from "../utils";
import WorkFlow from "@/components/WorkFlow/index.vue";
/** /**
* 反审 * 反审
...@@ -25,6 +27,7 @@ import { serviceMsg, toReviewDetail } from "../utils"; ...@@ -25,6 +27,7 @@ import { serviceMsg, toReviewDetail } from "../utils";
export default { export default {
name: "review", name: "review",
inheritAttrs: false, inheritAttrs: false,
components: {WorkFlow},
data() { data() {
return { return {
// 反审对象 // 反审对象
...@@ -32,8 +35,21 @@ export default { ...@@ -32,8 +35,21 @@ export default {
isReview: false, isReview: false,
bpmProcessId: "", bpmProcessId: "",
voKey: "", voKey: "",
copyUserId: [], // 抄送人
}; };
}, },
computed:{
type(){
return this.$attrs.currNode?.type
},
xmlKey(){
if(!this.type) return null
return {
// 出货反审核
'shipment': 'shipment_audit_no'
}[this.type]
}
},
created() { created() {
const { currNode, shipmentObj } = this.$attrs; const { currNode, shipmentObj } = this.$attrs;
...@@ -48,6 +64,8 @@ export default { ...@@ -48,6 +64,8 @@ export default {
case "unloading": case "unloading":
voKey = "cabinetUnloadBackApprovalInfo"; voKey = "cabinetUnloadBackApprovalInfo";
break; break;
case "shipment":
voKey = "airShipmentBackApprovalInfo";
} }
if (voKey) { if (voKey) {
...@@ -95,6 +113,7 @@ export default { ...@@ -95,6 +113,7 @@ export default {
let approvalType = 14; // 预装反审 let approvalType = 14; // 预装反审
if (currNode.type === "cabinet") approvalType = 9; // 装柜反审 if (currNode.type === "cabinet") approvalType = 9; // 装柜反审
if (currNode.type === "unloading") approvalType = 16; // 到仓反审核 if (currNode.type === "unloading") approvalType = 16; // 到仓反审核
if(currNode.type === "shipment") approvalType = 19; // 出货反审核
approvalCreate({ approvalCreate({
shipmentId: shipmentObj.id, shipmentId: shipmentObj.id,
......
...@@ -58,15 +58,17 @@ ...@@ -58,15 +58,17 @@
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button v-if="airShipmentApprovalInfo && airShipmentApprovalInfo.approvalStatus == 1" type="primary" @click="$router.push({path: '/bpm/process-instance/detail', query: {id: airShipmentApprovalInfo.bpmProcessId}})">{{$t('出货审核中')}}</el-button>
<el-button v-if="airShipmentApprovalInfo && airShipmentApprovalInfo.approvalStatus == 1" type="primary" @click="canclAudit">{{$t('取消出货审核')}}</el-button>
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button> <el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button>
<el-button type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button> <el-button :disabled="$attrs.shipmentObj.approvaling" v-if="!airShipmentApprovalInfo || airShipmentApprovalInfo.approvalStatus != 1" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button> <el-button @click="cancel">{{$t('关闭')}}</el-button>
</el-row> </el-row>
</div> </div>
</template> </template>
<script> <script>
import { airShipmentCreate } from "@/api/ecw/boxSea"; import { airShipmentCreate, approvalCancel } from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue"; import userSelect from "./common/userSelect.vue";
import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils"; import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils";
...@@ -87,6 +89,7 @@ export default { ...@@ -87,6 +89,7 @@ export default {
rules: { rules: {
deliverType: [{ required: true, message: this.$t("必填"), trigger: "change" }], deliverType: [{ required: true, message: this.$t("必填"), trigger: "change" }],
}, },
airShipmentApprovalInfo: {}
}; };
}, },
created() { created() {
...@@ -95,7 +98,7 @@ export default { ...@@ -95,7 +98,7 @@ export default {
oldData = formatDateStr(oldData, ["deliverTime"]); oldData = formatDateStr(oldData, ["deliverTime"]);
oldData = formatNumberString(oldData, ["deliverType"]); oldData = formatNumberString(oldData, ["deliverType"]);
this.airShipmentObj = oldData; this.airShipmentObj = oldData;
console.log(this.airShipmentObj) this.airShipmentApprovalInfo = this.$attrs.shipmentObj.airShipmentApprovalInfo
}, },
methods: { methods: {
/** 提交 */ /** 提交 */
...@@ -114,6 +117,21 @@ export default { ...@@ -114,6 +117,21 @@ export default {
} }
}); });
}, },
/* 取消审核 */
canclAudit() {
console.log(this.shipmentObj)
approvalCancel({
applyReason: this.$t("取消审核"),
id: this.airShipmentApprovalInfo.id,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
// 触发外层重新查询出货信息
this.cancel("close");
this.$emit("getBoxInfo");
});
});
},
/** 取消 */ /** 取消 */
cancel(type) { cancel(type) {
this.$emit("closeDialog", type); this.$emit("closeDialog", type);
......
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
<el-row class="operate-button"> <el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button> <el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button>
<el-button type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button> <el-button :disabled="shipmentObj.approvaling" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button> <el-button @click="cancel">{{$t('关闭')}}</el-button>
<el-button :disabled="shipmentObj.ladingBillInfo == null" @click="download">{{$t('下载提单确认件')}}</el-button> <el-button :disabled="shipmentObj.ladingBillInfo == null" @click="download">{{$t('下载提单确认件')}}</el-button>
</el-row> </el-row>
...@@ -134,7 +134,7 @@ export default { ...@@ -134,7 +134,7 @@ export default {
packageUnit: oldData.packageUnit === 0 ? undefined : oldData.packageUnit, packageUnit: oldData.packageUnit === 0 ? undefined : oldData.packageUnit,
}; };
if(!this.shipmentObj.ladingBillInfo){ if(!this.shipmentObj.ladingBillInfo){
this.$set(this.subMaterialObj,'agentId',this.shipmentObj.agentInfo?.agentId||undefined) this.$set(this.subMaterialObj,'agentId',this.shipmentObj.agentInfo?.agentId||undefined)
this.$set(this.subMaterialObj,'soNo',this.shipmentObj.bookSeaInfo?.sono||undefined) this.$set(this.subMaterialObj,'soNo',this.shipmentObj.bookSeaInfo?.sono||undefined)
this.$set(this.subMaterialObj,'blMblNo',this.shipmentObj.bookSeaInfo?.sono||undefined) this.$set(this.subMaterialObj,'blMblNo',this.shipmentObj.bookSeaInfo?.sono||undefined)
...@@ -192,7 +192,7 @@ export default { ...@@ -192,7 +192,7 @@ export default {
download() { download() {
getBoxLadingBillPdf({shipmentId: this.shipmentObj.id}).then(res=>{ getBoxLadingBillPdf({shipmentId: this.shipmentObj.id}).then(res=>{
let blob = new Blob([res], {type: "application/vnd.ms-excel"}) let blob = new Blob([res], {type: "application/vnd.ms-excel"})
FileSaver.saveAs(blob, this.$t('提单确认件.xlsx')); FileSaver.saveAs(blob, this.$t('提单确认件.xlsx'));
}) })
} }
}, },
......
...@@ -21,8 +21,8 @@ ...@@ -21,8 +21,8 @@
<el-row style="margin-top: 15px"> <el-row style="margin-top: 15px">
<el-row> <el-row>
<el-button size="small" type="primary" @click="()=>tallyClick('batch')">{{$t('批量理货')}}</el-button> <el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="()=>tallyClick('batch')">{{$t('批量理货')}}</el-button>
<el-button size="small" type="primary" @click="()=>removeClick('batch')">{{$t('批量移出')}}</el-button> <el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="()=>removeClick('batch')">{{$t('批量移出')}}</el-button>
</el-row> </el-row>
<el-row style="margin-top: 5px"> <el-row style="margin-top: 5px">
<el-table border :data="tallyList" @select="checkboxSelect" @select-all="checkboxSelect" max-height="600px"> <el-table border :data="tallyList" @select="checkboxSelect" @select-all="checkboxSelect" max-height="600px">
...@@ -93,8 +93,9 @@ ...@@ -93,8 +93,9 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')" align="center" width="160" class-name="small-padding fixed-width" fixed="right"> <el-table-column :label="$t('操作')" align="center" width="160" class-name="small-padding fixed-width" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="tallyClick('single',scope.row)">{{$t('理货')}}</el-button> <el-button :disabled="shipmentObj.approvaling" type="text" size="small" @click="tallyClick('single',scope.row)">{{$t('理货')}}</el-button>
<el-button type="text" size="small" @click="removeClick('single',scope.row)">{{$t('移出')}}</el-button> <el-button :disabled="shipmentObj.approvaling" type="text" size="small" @click="removeClick('single',scope.row)">{{$t('移出')}}</el-button>
<el-button type="text" size="small" @click="currentTurnExceptionOrder=scope.row">{{$t('转异')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -102,7 +103,7 @@ ...@@ -102,7 +103,7 @@
</el-row> </el-row>
<el-row style="margin-top: 15px" class="operate-button"> <el-row style="margin-top: 15px" class="operate-button">
<el-button size="small" type="primary" @click="tallyFinish">{{$t('完成理货')}}</el-button> <el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="tallyFinish">{{$t('完成理货')}}</el-button>
<el-button size="small" @click="cancel">{{$t('取消')}}</el-button> <el-button size="small" @click="cancel">{{$t('取消')}}</el-button>
</el-row> </el-row>
</el-col> </el-col>
...@@ -112,6 +113,13 @@ ...@@ -112,6 +113,13 @@
<batchTally v-if="dialogConfig.dialogVisible" v-bind="$attrs" @closeDialog="closeDialog" :type="dialogConfig.type" :tallyRows="tallyRows" :shipmentObj="shipmentObj" /> <batchTally v-if="dialogConfig.dialogVisible" v-bind="$attrs" @closeDialog="closeDialog" :type="dialogConfig.type" :tallyRows="tallyRows" :shipmentObj="shipmentObj" />
</el-dialog> </el-dialog>
<warehouse-detail :order="order" :orderItemId="showWarehouseInItemId" v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null" /> <warehouse-detail :order="order" :orderItemId="showWarehouseInItemId" v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null" />
<exception
v-if="currentTurnExceptionOrder"
:orderNo="currentTurnExceptionOrder.orderNo"
:orderId="currentTurnExceptionOrder.orderId"
append-to-body
@cancel="currentTurnExceptionOrder=null"
@success="currentTurnExceptionOrder=null" />
</div> </div>
</template> </template>
...@@ -121,11 +129,13 @@ import { getTallyList, tallyRemove, tallyCommit } from "@/api/ecw/boxSea"; ...@@ -121,11 +129,13 @@ import { getTallyList, tallyRemove, tallyCommit } from "@/api/ecw/boxSea";
import { formatDate, serviceMsg } from "../../utils"; import { formatDate, serviceMsg } from "../../utils";
import WarehouseDetail from "./warehouseDetail"; import WarehouseDetail from "./warehouseDetail";
import { getOrder } from "@/api/ecw/order"; import { getOrder } from "@/api/ecw/order";
import Exception from "@/views/ecw/box/components/Exception.vue";
export default { export default {
name: "tally", name: "tally",
inheritAttrs: false, inheritAttrs: false,
components: { components: {
Exception,
batchTally, batchTally,
WarehouseDetail, WarehouseDetail,
}, },
...@@ -149,6 +159,8 @@ export default { ...@@ -149,6 +159,8 @@ export default {
type: "", type: "",
fullscreen: false, fullscreen: false,
}, },
// 当前转异订单
currentTurnExceptionOrder: null
}; };
}, },
created() { created() {
...@@ -203,6 +215,9 @@ export default { ...@@ -203,6 +215,9 @@ export default {
}, },
// 理货点击 // 理货点击
tallyClick(type, data) { tallyClick(type, data) {
if(this.shipmentObj.approvaling){
return this.$message.error(this.$t('业务待审核,暂不能操作'))
}
if (type === "batch") { if (type === "batch") {
if (this.selectedRows.length === 0) { if (this.selectedRows.length === 0) {
this.$message.error(this.$t("请选择需要理货的订单")); this.$message.error(this.$t("请选择需要理货的订单"));
......
...@@ -67,14 +67,6 @@ export default { ...@@ -67,14 +67,6 @@ export default {
onSubmit(operateType) { onSubmit(operateType) {
this.$refs["unloadingForm"].validate((valid) => { this.$refs["unloadingForm"].validate((valid) => {
if (valid) { if (valid) {
if (operateType === 2) {
const { keyName } = this.$attrs.currNode;
const ulStatus = this.$attrs.shipmentObj[keyName];
if (ulStatus !== 185) {
this.$message.error(this.$t("请先通过卸柜审批"));
return;
}
}
unloadCreate({ unloadCreate({
...this.unloadingObj, ...this.unloadingObj,
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
......
...@@ -12,6 +12,12 @@ ...@@ -12,6 +12,12 @@
<p style="color:#D9001B;" v-if="pageData.boxCustomsBackVO&&pageData.boxCustomsBackVO.overMachineStatus==2&&pageData.boxCustomsBackVO.overMachineAbnormalStatus==2&&pageData.boxCustomsBackVO.overWeight>0"> <p style="color:#D9001B;" v-if="pageData.boxCustomsBackVO&&pageData.boxCustomsBackVO.overMachineStatus==2&&pageData.boxCustomsBackVO.overMachineAbnormalStatus==2&&pageData.boxCustomsBackVO.overWeight>0">
{{$t('过机重量异常')}}:{{$t('超过机场重量')}}{{pageData.boxCustomsBackVO.overWeight}}kg {{$t('过机重量异常')}}:{{$t('超过机场重量')}}{{pageData.boxCustomsBackVO.overWeight}}kg
</p> </p>
<p style="color:#D9001B;" v-if="pageData.boxCustomsBackVO&&pageData.boxCustomsBackVO.overMachineStatus==2&&pageData.boxCustomsBackVO.overMachineAbnormalStatus==2&&pageData.boxCustomsBackVO.weightMisreport==3">
{{$t('过机重量异常')}}: {{$t('过机放行-未找到重货订单')}}
</p>
<p style="color:#D9001B;" v-if="pageData.boxCustomsBackVO&&pageData.boxCustomsBackVO.overMachineStatus==2&&pageData.boxCustomsBackVO.overMachineAbnormalStatus==2&&pageData.boxCustomsBackVO.weightMisreport==4">
{{$t('过机重量异常')}}: {{$t('过机放行-已找到重货订单')}}:{{pageData.boxCustomsBackVO.overOrders}}
</p>
</el-row> </el-row>
<el-row class="number-area"> <el-row class="number-area">
<p class="label-font">{{$t('自编号')}}</p> <p class="label-font">{{$t('自编号')}}</p>
......
...@@ -162,6 +162,14 @@ export default { ...@@ -162,6 +162,14 @@ export default {
this.$set(this.dialogConfig, "fullscreen", true); this.$set(this.dialogConfig, "fullscreen", true);
this.$set(this.dialogConfig, "title", this.$t("合包列表")); this.$set(this.dialogConfig, "title", this.$t("合包列表"));
break; break;
// 出货
case "shipment":
if (this.shipmentObj[node.keyName] == 175) {
this.currentComponent = `reviewWidget`;
this.$set(this.dialogConfig, "width", "700px");
this.$set(this.dialogConfig, "title", this.$t("出货反审"));
}
break;
// 清关文件 // 清关文件
case "clrDocument": case "clrDocument":
this.$set(this.dialogConfig, "width", "700px"); this.$set(this.dialogConfig, "width", "700px");
......
...@@ -107,14 +107,14 @@ function airBaseData() { ...@@ -107,14 +107,14 @@ function airBaseData() {
type: "shipment", type: "shipment",
dataKey: "4", // 字典数据键值 dataKey: "4", // 字典数据键值
/** /**
* 出货状态:171、待出货 172、已出货 * 出货状态:171、待出货 172、出货审核中 173、审核失败 174、审核成功 = 175、已出货
*/ */
voName: "boxAirShipmentBackVO", voName: "boxAirShipmentBackVO",
keyName: "airShipmentStatus", keyName: "airShipmentStatus",
status: { status: {
start: [171], start: [171],
wait: [], wait: [172,173],
end: [172], end: [175],
}, },
}, },
{ {
...@@ -293,7 +293,7 @@ function airBaseData() { ...@@ -293,7 +293,7 @@ function airBaseData() {
* 卸柜状态:181、未卸柜;182、卸柜中;183、卸柜审核中;184、卸柜审核失败;185、卸柜审核成功;186、已卸柜 * 卸柜状态:181、未卸柜;182、卸柜中;183、卸柜审核中;184、卸柜审核失败;185、卸柜审核成功;186、已卸柜
*/ */
voName: "cabinetUnloadInfo", voName: "cabinetUnloadInfo",
keyName: "ulStatus", keyName: "toWarehouseStatus",
status: { status: {
start: [181], start: [181],
wait: [182, 183, 184, 185], wait: [182, 183, 184, 185],
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<el-descriptions-item :label="$t('出货渠道')"> <el-descriptions-item :label="$t('出货渠道')">
{{getShipChannelName(boxBackVO.shippingChannelId)}} {{getShipChannelName(boxBackVO.shippingChannelId)}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('柜型')"> <el-descriptions-item :label="$t('柜型')" v-if="boxBackVO.transportType != 3">
{{cabinetLabel}} {{cabinetLabel}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('体积/重量')"> <el-descriptions-item :label="$t('体积/重量')">
...@@ -20,6 +20,30 @@ ...@@ -20,6 +20,30 @@
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<div class="mt-20" v-if="type === 'shipment'">
<el-descriptions :column="1" v-if="boxAirShipmentBackVO" border :label-style="{width: '200px'}">
<el-descriptions-item :label="$t('出货方式')">
{{deliverType}}
</el-descriptions-item>
<el-descriptions-item :label="$t('送货时间') + '/' + $t('自提时间')">
{{parseTime(boxAirShipmentBackVO.deliverTime)}}
</el-descriptions-item>
<el-descriptions-item :label="$t('送货地址') + '/' + $t('自提地址')">
{{boxAirShipmentBackVO.deliverAddress}}
</el-descriptions-item>
<el-descriptions-item :label="$t('车牌')">
{{boxAirShipmentBackVO.licensePlate}}
</el-descriptions-item>
<el-descriptions-item :label="$t('司机')">
{{boxAirShipmentBackVO.driver}}
</el-descriptions-item>
<el-descriptions-item :label="$t('司机联系方式')">
{{boxAirShipmentBackVO.driverPhone}}
</el-descriptions-item>
</el-descriptions>
<template v-else>暂无出货审核信息</template>
</div>
<el-row style="marginTop:15px"> <el-row style="marginTop:15px">
<el-button type="primary" @click="showOrder">{{$t('订单列表')}}</el-button> <el-button type="primary" @click="showOrder">{{$t('订单列表')}}</el-button>
</el-row> </el-row>
...@@ -103,12 +127,14 @@ ...@@ -103,12 +127,14 @@
</template> </template>
<script> <script>
import { approvalDetail } from "@/api/ecw/box"; import {approvalDetail, getbox} from "@/api/ecw/box";
import { getSeaStatus, getTotlContent } from "./shippingSea/utils"; import { getSeaStatus, getTotlContent } from "./shippingSea/utils";
import { getCabinetPage } from "@/api/ecw/cabinet"; import { getCabinetPage } from "@/api/ecw/cabinet";
import { getChannelList } from "@/api/ecw/channel"; import { getChannelList } from "@/api/ecw/channel";
import Decimal from "decimal.js"; import Decimal from "decimal.js";
import ImagePreview from "@/components/ImagePreview"; import ImagePreview from "@/components/ImagePreview";
import {constantDict} from "@/views/ecw/box/shippingAir/utils";
import {parseTime} from "../../../utils/ruoyi";
/** /**
* 出货审核详情 * 出货审核详情
...@@ -137,12 +163,15 @@ export default { ...@@ -137,12 +163,15 @@ export default {
visible: false, visible: false,
}, },
srcStrs: [], srcStrs: [],
// 出货审核详情
boxAirShipmentBackVO: null
}; };
}, },
created() { created() {
getChannelList().then((res) => (this.channelList = res.data)); getChannelList().then((res) => (this.channelList = res.data));
}, },
methods: { methods: {
parseTime,
getTotlContent, getTotlContent,
/* 获取详情 */ /* 获取详情 */
getApprovalDetail(processId) { getApprovalDetail(processId) {
...@@ -161,8 +190,20 @@ export default { ...@@ -161,8 +190,20 @@ export default {
? res.data.cabinetUnloadVO.ulImgs.split(",") ? res.data.cabinetUnloadVO.ulImgs.split(",")
: []; : [];
} }
// 如果是出货审核则需要调用出货详情获取出货信息
if (this.type === "shipment") {
this.getShipmentDetail();
}
if (this.type === "deleteExit") {
this.getDeleteExit();
}
}); });
}, },
getShipmentDetail(){
getbox(this.boxBackVO.id).then(res => {
this.boxAirShipmentBackVO = res.data.boxAirShipmentBackVO
})
},
/* 获取柜型 */ /* 获取柜型 */
getCabinetLabel(cabinetId) { getCabinetLabel(cabinetId) {
getCabinetPage(null).then((response) => { getCabinetPage(null).then((response) => {
...@@ -210,6 +251,9 @@ export default { ...@@ -210,6 +251,9 @@ export default {
}, },
}, },
computed: { computed: {
constantDict() {
return constantDict
},
/* 渠道 */ /* 渠道 */
getShipChannelName() { getShipChannelName() {
return (shippingChannelId) => { return (shippingChannelId) => {
...@@ -232,6 +276,11 @@ export default { ...@@ -232,6 +276,11 @@ export default {
return getSeaStatus(shippingVO) >= 182 ? true : false; return getSeaStatus(shippingVO) >= 182 ? true : false;
}; };
}, },
// 出乎方式
deliverType(){
if(!this.boxAirShipmentBackVO) return ''
return constantDict.deliverType.find(item => item.value == this.boxAirShipmentBackVO.deliverType)?.label
}
}, },
}; };
</script> </script>
......
<template> <template>
<div> <div>
<el-select <el-select filterable :value="value === 0 ? undefined : value" @change="change" v-bind="$attrs" clearable>
filterable <el-option v-for="supplier in getSuppliers" :key="supplier.id" :label="$t('公司名称:') + $l(supplier, 'company') + $t(',地址:') + supplier.externalBackVO.receiveAddress + $t(',邮箱:') + supplier.externalBackVO.receiveEmail + $t(',品名:') + supplier.externalBackVO.goodName + $t(',From M No:') + supplier.externalBackVO.fromNo + $t(',BA No:') + supplier.externalBackVO.baNo" :value="supplier.id" style="width: 600px">
:value="value === 0 ? undefined : value" <el-tooltip class="item" effect="dark" placement="top">
@change="change" <div slot="content">
v-bind="$attrs" <span>{{ $t('公司名称:') + $l(supplier, 'company') + $t(',地址:') + supplier.externalBackVO.receiveAddress + $t(',邮箱:') + supplier.externalBackVO.receiveEmail + $t(',品名:') + supplier.externalBackVO.goodName + $t(',From M No:') + supplier.externalBackVO.fromNo + $t(',BA No:') + supplier.externalBackVO.baNo }}</span>
clearable </div>
> <div class="iclass">{{ $t('公司名称:') + $l(supplier, 'company') + $t(',地址:') + supplier.externalBackVO.receiveAddress + $t(',邮箱:') + supplier.externalBackVO.receiveEmail + $t(',品名:') + supplier.externalBackVO.goodName + $t(',From M No:') + supplier.externalBackVO.fromNo + $t(',BA No:') + supplier.externalBackVO.baNo }}</div>
<el-option </el-tooltip>
v-for="supplier in getSuppliers" </el-option>
:key="supplier.id" </el-select>
:label="$t('公司名称:')+$l(supplier, 'company')+$t(',地址:')+supplier.externalBackVO.receiveAddress+$t(',邮箱:')+supplier.externalBackVO.receiveEmail+$t(',品名:')+supplier.externalBackVO.goodName+$t(',From M No:')+supplier.externalBackVO
.fromNo+$t(',BA No:')+supplier.externalBackVO
.baNo"
:value="supplier.id"
></el-option>
</el-select>
</div> </div>
</template> </template>
<script> <script>
...@@ -25,7 +18,7 @@ ...@@ -25,7 +18,7 @@
* 供应商 * 供应商
*/ */
export default { export default {
name: "supplierSelect", name: 'supplierSelect',
props: { props: {
companyType: String, companyType: String,
value: Number, value: Number,
...@@ -33,38 +26,40 @@ export default { ...@@ -33,38 +26,40 @@ export default {
areaType: { areaType: {
type: Number, type: Number,
default: 0 default: 0
}, }
}, },
model: { model: {
prop: "value", prop: 'value',
event: "change", event: 'change'
}, },
data() { data() {
return {}; return {}
}, },
computed: { computed: {
getSuppliers() { getSuppliers() {
let allSupplier = this.allSupplier.filter( let allSupplier = this.allSupplier.filter((item) => item.areaType == this.areaType)
(item) => item.areaType == this.areaType allSupplier.forEach((map) => {
); map.externalBackVO.receiveAddress = map.externalBackVO.receiveAddress ? map.externalBackVO.receiveAddress : ''
allSupplier.forEach(map=>{ map.externalBackVO.receiveEmail = map.externalBackVO.receiveEmail ? map.externalBackVO.receiveEmail : ''
map.externalBackVO.receiveAddress = map.externalBackVO.receiveAddress?map.externalBackVO.receiveAddress: '' map.externalBackVO.goodName = map.externalBackVO.goodName ? map.externalBackVO.goodName : ''
map.externalBackVO.receiveEmail = map.externalBackVO.receiveEmail?map.externalBackVO.receiveEmail:'' map.externalBackVO.fromNo = map.externalBackVO.fromNo ? map.externalBackVO.fromNo : ''
map.externalBackVO.goodName = map.externalBackVO.goodName?map.externalBackVO.goodName:'' map.externalBackVO.baNo = map.externalBackVO.baNo ? map.externalBackVO.baNo : ''
map.externalBackVO.fromNo = map.externalBackVO.fromNo?map.externalBackVO.fromNo:''
map.externalBackVO.baNo = map.externalBackVO.baNo?map.externalBackVO.baNo:''
}) })
if(this.areaType == 1 || !this.companyType) return allSupplier; if (this.areaType == 1 || !this.companyType) return allSupplier
return allSupplier.filter((item) => return allSupplier.filter((item) => item.companyTypes.includes(this.companyType))
item.companyTypes.includes(this.companyType) }
);
},
}, },
methods: { methods: {
change(val) { change(val) {
this.$emit("change", val); this.$emit('change', val)
}, }
}, }
}; }
</script> </script>
<style scoped>
.iclass {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<el-descriptions-item :label="$t('付款人姓名')">{{ customer.payerName }}</el-descriptions-item> <el-descriptions-item :label="$t('付款人姓名')">{{ customer.payerName }}</el-descriptions-item>
<el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证姓名')">{{ customer.carName }}</el-descriptions-item> <el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证姓名')">{{ customer.carName }}</el-descriptions-item>
<el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证号码')">{{ customer.carNo }}</el-descriptions-item> <el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证号码')">{{ customer.carNo }}</el-descriptions-item>
<!-- <el-descriptions-item :label="$t('信用等级')">{{ customer }}</el-descriptions-item>--> <el-descriptions-item :label="$t('询盘信息')">{{ customer.inquiry }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>
......
...@@ -66,7 +66,7 @@ export default { ...@@ -66,7 +66,7 @@ export default {
}).then(r=>{ }).then(r=>{
if(r.code === 0){ if(r.code === 0){
if(r.data){ if(r.data){
this.$message.warning(r.data) this.$message.success(r.data)
this.$emit('update:show',false) this.$emit('update:show',false)
this.$emit('update:customerIds',[]) this.$emit('update:customerIds',[])
this. service = ''; this. service = '';
......
...@@ -183,7 +183,7 @@ ...@@ -183,7 +183,7 @@
<el-descriptions :column="5" border> <el-descriptions :column="5" border>
<el-descriptions-item :label="$t('保价费')"> <el-descriptions-item :label="$t('保价费')">
{{list.estCostVO?list.estCostVO.insuranceFee: 0}} {{$t('美元')}} {{list.estCostVO?list.estCostVO.insuranceFee: 0}} {{ selectedRouter ? currentcyMap[selectedRouter.currencyUnit || 1] : '' }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('总运费')"> <el-descriptions-item :label="$t('总运费')">
<template v-if="freightFeeList.length>0" v-for="item in freightFeeList"> <template v-if="freightFeeList.length>0" v-for="item in freightFeeList">
...@@ -435,6 +435,11 @@ ...@@ -435,6 +435,11 @@
return this.$l(row, 'prodTitle') return this.$l(row, 'prodTitle')
} }
}, },
selectedRouter(){
// otherService 1 送货上门,2非控货订单代收货款
if(!this.list.lineId) return null
return this.routerList.find(item => item.id == this.list.lineId)
},
currentcyMap(){ currentcyMap(){
let map = {} let map = {}
this.currencyList.forEach(item => { this.currencyList.forEach(item => {
...@@ -495,32 +500,32 @@ ...@@ -495,32 +500,32 @@
originalFeeList(){ originalFeeList(){
let arr = [] let arr = []
this.clearanceFeeList.forEach(item => { this.clearanceFeeList.forEach(item => {
let it = {...item} let it = {
src: this.$t('清关费'),
currencyId: item.currencyId,
amount: Decimal(item.amount)
}
let freight = this.freightFeeList.find(fee => fee.currencyId == item.currencyId) let freight = this.freightFeeList.find(fee => fee.currencyId == item.currencyId)
if(freight){ if(freight){
it.amount += freight.amount it.amount = it.amount.plus(freight.amount)
} }
arr.push(it) arr.push(it)
}) })
// 判断是否有运费单位不在清关费里的
this.freightFeeList.forEach(item => { this.freightFeeList.forEach(item => {
if(!arr.find(items=>items.currencyId==item.currencyId)){ if(!arr.find(arrItem => arrItem.currencyId == item.currencyId)){
let its = {...item} arr.push({
// let freights = this.clearanceFeeList.find(fee => fee.currencyId == item.currencyId) src: this.$t('未计算的运费'),
// if(freights){ currencyId: item.currencyId,
// its.amount += freights.amount amount: Decimal(item.amount)
// } })
arr.push(its)
} }
}) })
return arr return arr
}, },
// 预计费用(原价 - 优惠金额) // 预计费用(原价 - 优惠金额)
estimatedCosts(){ estimatedCosts(){
let arr = [] let arr = []
let withInsuranceFee = false
let withOtherFee = false
this.originalFeeList.forEach(item => { this.originalFeeList.forEach(item => {
let it = { let it = {
currencyId: item.currencyId, currencyId: item.currencyId,
...@@ -530,56 +535,38 @@ ...@@ -530,56 +535,38 @@
if(coupon){ if(coupon){
it.amount = it.amount.minus(coupon.reduceAmount) it.amount = it.amount.minus(coupon.reduceAmount)
} }
// 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 = it.amount.plus(otherFee.amount || 0)
withOtherFee = true
}
// 保价费(美元)
if(item.currencyId == 1 && this.fee && this.fee.insuranceFee){
it.amount = it.amount.plus(this.fee.insuranceFee)
withInsuranceFee = true
}
arr.push(it) arr.push(it)
}) })
// 累加保价费
const insuranceFeeIndex = arr.findIndex(item => item.currencyId == this.insuranceFeeCurrency)
const insuranceFee = this.list&&this.list.estCostVO&&this.list.estCostVO.insuranceFee
if(insuranceFeeIndex > -1){
arr[insuranceFeeIndex].amount = arr[insuranceFeeIndex].amount.plus(insuranceFee || 0)
}else{
arr.push({
currencyId: this.insuranceFeeCurrency,
amount: Decimal(insuranceFee || 0)
})
}
// 如果没有累加其他费用,则另外增加货币 // 累加其他费用
if(!withOtherFee && this.list.otherFee){ const otherFeeIndex = arr.findIndex(item => item.currencyId == this.list.otherFeeCurrencyId)
let fee = { if(otherFeeIndex > -1){
currencyId: this.list.otherFeeCurrencyId, arr[otherFeeIndex].amount = arr[otherFeeIndex].amount.plus(this.list.otherFee || 0)
amount: Decimal(this.list.otherFee) }else{
} if(this.list.otherFee>0){
// 如果保价费跟其他费用是同一种货币(都是美元)
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({ arr.push({
currencyId: 1, currencyId: this.list.otherFeeCurrencyId,
amount: Decimal(this.fee.insuranceFee) amount: Decimal(this.list.otherFee || 0)
}) })
} }
this.otherFeeList.forEach(item => { }
if(!arr.find(items=>items.currencyId==item.currencyId)){ return arr
let its = {...item} },
// let freights = this.clearanceFeeList.find(fee => fee.currencyId == item.currencyId) // 保价费单位(路线里设置,默认美元)
// if(freights){ insuranceFeeCurrency() {
// its.amount += freights.amount return this.selectedRouter?.currencyUnit || 1;
// } },
arr.push(its)
}
})
return arr
}
}, },
created() { created() {
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
......
...@@ -758,10 +758,12 @@ export default { ...@@ -758,10 +758,12 @@ export default {
if(otherFeeIndex > -1){ if(otherFeeIndex > -1){
arr[otherFeeIndex].amount = arr[otherFeeIndex].amount.plus(this.form.otherFee || 0) arr[otherFeeIndex].amount = arr[otherFeeIndex].amount.plus(this.form.otherFee || 0)
}else{ }else{
arr.push({ if(this.form.otherFee>0){
currencyId: this.form.otherFeeCurrencyId, arr.push({
amount: Decimal(this.form.otherFee || 0) currencyId: this.form.otherFeeCurrencyId,
}) amount: Decimal(this.form.otherFee || 0)
})
}
} }
return arr return arr
......
...@@ -373,8 +373,12 @@ ...@@ -373,8 +373,12 @@
<el-card class="mt-10"> <el-card class="mt-10">
<span slot="header">{{$t('特价折扣')}}</span> <span slot="header">{{$t('特价折扣')}}</span>
<el-table :data="orderSpecialApplyVOList"> <el-table :data="orderSpecialApplyVOList">
<el-table-column :label="$t('商品类型')" prop="prodType"></el-table-column> <el-table-column :label="$t('商品类型')" prop="prodType">
<el-table-column :label="$t('商品名称')" prop="prodTitleEn"></el-table-column> <template slot-scope="{row}">
{{showProductTypeName(row.prodType)}}
</template>
</el-table-column>
<el-table-column :label="$t('商品名称')" prop="prodTitleZh"></el-table-column>
<el-table-column :label="$t('英文名称')" prop="prodTitleEn"></el-table-column> <el-table-column :label="$t('英文名称')" prop="prodTitleEn"></el-table-column>
<!--<el-table-column :label="$t('线路')" width="120" prop="line"> <!--<el-table-column :label="$t('线路')" width="120" prop="line">
...@@ -420,6 +424,7 @@ import Price from "@/views/ecw/order/components/price.vue"; ...@@ -420,6 +424,7 @@ import Price from "@/views/ecw/order/components/price.vue";
import {parseTime} from "@/utils/ruoyi"; import {parseTime} from "@/utils/ruoyi";
import Decimal from "decimal.js"; import Decimal from "decimal.js";
import {createElementVNode} from "@vue/runtime-dom"; import {createElementVNode} from "@vue/runtime-dom";
import {getProductTypeList} from "@/api/ecw/productType";
export default { export default {
props:{ props:{
orderId: [Number, String], orderId: [Number, String],
...@@ -437,7 +442,9 @@ export default { ...@@ -437,7 +442,9 @@ export default {
// 订单费用汇总 // 订单费用汇总
orderSummary: null, orderSummary: null,
// 订单费用明细汇总 // 订单费用明细汇总
orderDetailSummary: null orderDetailSummary: null,
// 商品类型
productTypeList: []
} }
}, },
computed:{ computed:{
...@@ -467,8 +474,25 @@ export default { ...@@ -467,8 +474,25 @@ export default {
// 特价折扣 // 特价折扣
orderSpecialApplyVOList(){ orderSpecialApplyVOList(){
return this.orderDetailSummary?.orderSpecialApplyVOList || [] return this.orderDetailSummary?.orderSpecialApplyVOList || []
},
// 根据商品类型ID返回名称
showProductTypeName(){
return id => {
if(!this.productTypeList.length) return '-'
const item = this.productTypeList.find(item => item.id === id)
return this.$l(item, 'title')
}
} }
}, },
watch:{
orderSpecialApplyVOList(list){
if(list.length && !this.productTypeList.length){
getProductTypeList().then(res => {
this.productTypeList = res.data
})
}
}
},
mounted() { mounted() {
this.getOrderSummary() this.getOrderSummary()
this.getOrderDetailSummary() this.getOrderDetailSummary()
......
...@@ -495,7 +495,7 @@ ...@@ -495,7 +495,7 @@
</div> </div>
<div v-if="[2,3,4].indexOf(+form.transportId) > -1"> <div v-if="[2,3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('清关证书')"> <el-form-item :label="$t('清关证书')">
<dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" /> <dict-selector v-model="form.customsClearCert" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" :defaultable="!editMode" :disabled="false" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('清关证书备注')" > <el-form-item :label="$t('清关证书备注')" >
<el-input v-model="form.customsClearCertRemarks" :disabled="false"></el-input> <el-input v-model="form.customsClearCertRemarks" :disabled="false"></el-input>
...@@ -503,12 +503,12 @@ ...@@ -503,12 +503,12 @@
</div> </div>
<div v-if="[3,4].indexOf(+form.transportId) > -1"> <div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('是否拆包')"> <el-form-item :label="$t('是否拆包')">
<dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" /> <dict-selector v-model="form.isUnpack" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" :defaultable="!editMode" :disabled="false" />
</el-form-item> </el-form-item>
</div> </div>
<div class="form-section"> <div class="form-section">
<el-form-item :label="$t('单票立刻转运')" v-if="[3,4].indexOf(+form.transportId) > -1"> <el-form-item :label="$t('单票立刻转运')" v-if="[3,4].indexOf(+form.transportId) > -1">
<dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" defaultable :disabled="false" /> <dict-selector v-model="form.isSingleTicketTransport" form-type="radio" :type="DICT_TYPE.INFRA_BOOLEAN_STRING" formatter="bool" :defaultable="!editMode" :disabled="false" />
<span style="margin-left:10px">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span> <span style="margin-left:10px">{{$t('注:若只有一件,货到仓库立即发,选“是”,多件需仓库集运待发,选“否”')}}</span>
</el-form-item> </el-form-item>
</div> </div>
...@@ -524,7 +524,7 @@ ...@@ -524,7 +524,7 @@
<el-card class="mt-10" v-if="showWorkFlow"> <el-card class="mt-10" v-if="showWorkFlow">
<div class="card-title" slot="header">{{$t('审批流程')}}</div> <div class="card-title" slot="header">{{$t('审批流程')}}</div>
<work-flow xmlkey="order_modify" v-model="ccIdArr" /> <work-flow :xmlkey="updateChannel ? 'shipment_channel_change' : 'order_modify'" v-model="ccIdArr" />
</el-card> </el-card>
<div style="margin: 30px 0; display: flex"> <div style="margin: 30px 0; display: flex">
...@@ -870,7 +870,7 @@ export default { ...@@ -870,7 +870,7 @@ export default {
// 空运 // 空运
if(!this.initing && (this.form.transportId == 4 || this.form.transportId == 3)){ if(!this.initing && (this.form.transportId == 4 || this.form.transportId == 3)){
this.$nextTick(() => { this.$nextTick(() => {
connsole.log('切换空运,修改默认值') console.log('切换空运,修改默认值')
this.$set(this, 'form', Object.assign(this.form, { this.$set(this, 'form', Object.assign(this.form, {
doubleClear: 2, doubleClear: 2,
customsClearCert: false, customsClearCert: false,
...@@ -1068,6 +1068,12 @@ export default { ...@@ -1068,6 +1068,12 @@ export default {
this.getOfferData() this.getOfferData()
/* this.form.orderItemVOList = []; */ /* this.form.orderItemVOList = []; */
console.log({...this.form}, {
customsClearCert: this.form.customsClearCert,
isUnpack: this.form.isUnpack,
isSingleTicketTransport: this.form.isSingleTicketTransport,
})
this.form.type = this.form.type ? this.form.type.split(',').filter(item => item != '') : [] this.form.type = this.form.type ? this.form.type.split(',').filter(item => item != '') : []
this.form.packageTypeArr = this.form.packageType ? this.form.packageType.split(',').filter(item => item != '') : [] this.form.packageTypeArr = this.form.packageType ? this.form.packageType.split(',').filter(item => item != '') : []
if(res.data.consignorVO){ if(res.data.consignorVO){
......
...@@ -108,13 +108,6 @@ ...@@ -108,13 +108,6 @@
<el-option :label="$t('自有仓')" :value="0"></el-option> <el-option :label="$t('自有仓')" :value="0"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('品名')+':'">
<div style="display: flex;width: 100%;">
<dict-selector :type="DICT_TYPE.EXCEPTION_SELECT_FILED" style="width: 90px;" v-model="queryParams.goodsNameKey" />
<product-selector v-model="queryParams.goodsName" style="flex:1;" :clearable="true" @keyup.enter.native="handleQuery" />
</div>
</el-form-item>
</el-row> </el-row>
<el-row> <el-row>
<el-form-item label=""> <el-form-item label="">
...@@ -189,17 +182,17 @@ ...@@ -189,17 +182,17 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('体积/重量')" align="center"> <el-table-column :label="$t('体积/重量')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.orderExceptionType!='order_heavy_cargo_exception'&&scope.row.orderExceptionType!='order_bulky_cargo_exception'"> <div v-if="scope.row.orderType==1">
<span v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span> <span v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span> <span v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</div> </div>
<el-tooltip v-if="scope.row.orderExceptionType=='order_heavy_cargo_exception'" class="item" effect="dark" :content="(scope.row.wvolume||0)+'m³'" placement="bottom"> <el-tooltip v-else-if="scope.row.orderType==2" class="item" effect="dark" :content="(scope.row.wvolume||0)+'m³'" placement="bottom">
<span style="color:#ff4949" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span> <span class="red" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span style="color:#ff4949" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span> <span class="red" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</el-tooltip> </el-tooltip>
<el-tooltip v-if="scope.row.orderExceptionType=='order_bulky_cargo_exception'" class="item" effect="dark" :content="(scope.row.vweight||0)+'kg'" placement="bottom"> <el-tooltip v-else-if="scope.row.orderType==3" class="item" effect="dark" :content="(scope.row.vweight||0)+'kg'" placement="bottom">
<span style="color:#ff4949" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span> <span class="red" v-if="scope.row.orderStatus >= 5 ">{{scope.row.volume+"m³/"+scope.row.weight+"kg"}}</span>
<span style="color:#ff4949" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span> <span class="red" v-else>{{scope.row.totalVolume+"m³/"+scope.row.totalWeight+"kg"}}</span>
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> </el-table-column>
...@@ -261,6 +254,7 @@ ...@@ -261,6 +254,7 @@
<el-button v-else-if="scope.row.orderExceptionType=='in_warehousing_diff_exception'" v-hasPermi="['ecw:exception:inWarehousingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='in_warehousing_diff_exception'" v-hasPermi="['ecw:exception:inWarehousingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='stock_up_exception'" v-hasPermi="['ecw:exception:stockUpException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='stock_up_exception'" v-hasPermi="['ecw:exception:stockUpException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='channel_exception'" v-hasPermi="['ecw:exception:channelException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='channel_exception'" v-hasPermi="['ecw:exception:channelException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='channel_packaging_overweight_exception'" v-hasPermi="['ecw:exception:channelPackagingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -301,9 +295,9 @@ export default { ...@@ -301,9 +295,9 @@ export default {
queryParams: { queryParams: {
page: 1, page: 1,
rows: 10, rows: 10,
orderNoKey:'eq', orderNoKey:'in',
marksKey:'eq', marksKey:'in',
goodsNameKey:'eq' goodsNameKey:'in'
}, },
tradeCityList:[], tradeCityList:[],
warehouseList:[], warehouseList:[],
...@@ -363,9 +357,9 @@ export default { ...@@ -363,9 +357,9 @@ export default {
this.queryParams = { this.queryParams = {
page: 1, page: 1,
rows: 10, rows: 10,
orderNoKey:'eq', orderNoKey:'in',
marksKey:'eq', marksKey:'in',
goodsNameKey:'eq' goodsNameKey:'in'
} }
this.getList() this.getList()
}, },
...@@ -409,19 +403,9 @@ export default { ...@@ -409,19 +403,9 @@ export default {
return tag return tag
}, },
exportSearch(){ exportSearch(){
this.exportExcel(exportExcel, this.queryParams, this.$t('异常订单')) exportExcel(this.queryParams).then(res => {
}, this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
// 通用导出函数 })
exportExcel(func, params, fileName = null){
this.exportLoading = true;
func(params).then(res => {
if(!fileName){
fileName = this.$t('订单')
}
this.$download.excel(res, fileName + '.xls');
}).finally(() => {
this.exportLoading = false
})
}, },
} }
} }
...@@ -437,4 +421,7 @@ export default { ...@@ -437,4 +421,7 @@ export default {
display:flex; display:flex;
align-items: center; align-items: center;
} }
.red{
color:#ff4949;
}
</style> </style>
...@@ -55,10 +55,10 @@ ...@@ -55,10 +55,10 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')"> <el-table-column :label="$t('操作')">
<template v-slot:default = 'scope'> <template v-slot:default = 'scope'>
<!--<el-button type="text" v-if="scope.row.status !== 0&&scope.row.status !== 1">{{STATUS[scope.row.status]}}</el-button> <el-button type="text" v-if="scope.row.status !== 0&&scope.row.status !== 1">{{STATUS[scope.row.status]}}</el-button>
<el-button type="text" v-if="scope.row.status == 1" @click="examineFn">{{$t('审核中')}}</el-button> <!--el-button type="text" v-if="scope.row.status == 1" @click="examineFn">{{$t('审核中')}}</el-button>
<el-button type="text" v-if="scope.row.status === 2" @click="modify(scope.row)">{{$t('修改')}}</el-button>--> <el-button type="text" v-if="scope.row.status === 2" @click="modify(scope.row)">{{$t('修改')}}</el-button>-->
<el-button type="text" :disabled="!!scope.row.status" @click="del(scope.$index)">删除</el-button> <el-button type="text" v-if="scope.row.status === 0" @click="del(scope.$index)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
<work-flow xmlkey="free_apply" v-model="selectedUsers" /> <work-flow xmlkey="free_apply" v-model="selectedUsers" />
</div> </div>
<div style="text-align: center;margin-top: 20px;"> <div style="text-align: center;margin-top: 20px;">
<el-button type="primary" v-if="!processInstanceId" style="margin-right: 30px;" @click="submit">{{$t('提交')}}</el-button> <el-button type="primary" v-if="!processInstanceId" style="margin-right: 30px;" :disabled="!feeList.length" @click="submit">{{$t('提交')}}</el-button>
<el-button type="primary" v-if="processInstanceId" style="margin-right: 30px;" @click="goProcessDetail">{{$t('审核中')}}</el-button> <el-button type="primary" v-if="processInstanceId" style="margin-right: 30px;" @click="goProcessDetail">{{$t('审核中')}}</el-button>
<el-button type="primary" v-if="processInstanceId" style="margin-right: 30px;" @click="cancel">{{$t('取消审核')}}</el-button> <el-button type="primary" v-if="processInstanceId" style="margin-right: 30px;" @click="cancel">{{$t('取消审核')}}</el-button>
<el-button @click="$emit('update:dialogVisible',false)">{{$t('返回')}}</el-button> <el-button @click="$emit('update:dialogVisible',false)">{{$t('返回')}}</el-button>
...@@ -117,6 +117,11 @@ export default { ...@@ -117,6 +117,11 @@ export default {
selectedUsers:[] selectedUsers:[]
} }
}, },
computed:{
feeList(){
return this.list.filter(item => item.status === 0)
}
},
created() { created() {
this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach( e =>{ this.getDictDatas(this.DICT_TYPE.AUDIT_STATUS).forEach( e =>{
this.STATUS[e.value] = e.label this.STATUS[e.value] = e.label
...@@ -135,9 +140,9 @@ export default { ...@@ -135,9 +140,9 @@ export default {
getFeeApplicationApproveByOrderId(this.orderId).then(res => { getFeeApplicationApproveByOrderId(this.orderId).then(res => {
if(res.data.formId){ if(res.data.formId){
this.processInstanceId = res.data.formId this.processInstanceId = res.data.formId
getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => { /*getBatchFeeByBusinessId(res.data.orderApprovalId).then(res => {
this.list = res.data this.list = res.data
}) })*/
} }
}) })
}, },
...@@ -160,8 +165,15 @@ export default { ...@@ -160,8 +165,15 @@ export default {
}) })
}, },
submit(){ submit(){
// 判断费用申请是否有未填项
const errList = this.feeList.filter(item => {
return !item['feeType'] || !item['applicationFee'] || !item['applicationFeeCurrency'] || !item['payType']
})
if(errList.length){
return this.$message.error('请填写完整费用申请信息')
}
feeApplicationCreateBatch( { feeApplicationCreateBatch( {
orderFeeApplicationCreateReqVOList: this.list.filter(item => !item.status), orderFeeApplicationCreateReqVOList: this.feeList,
copyUserId:this.selectedUsers, copyUserId:this.selectedUsers,
orderId: this.orderId orderId: this.orderId
}).then(r=>{ }).then(r=>{
......
...@@ -267,7 +267,10 @@ ...@@ -267,7 +267,10 @@
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!-- 编辑 --> <!-- 编辑 -->
<template v-if=" <template v-if="
( scope.row.status < 12 || (scope.row.status == 12 && scope.row.shipmentState == 314) ) && !scope.row.abnormalState && exclude(scope.row.inWarehouseState, [204,205,206]) ( scope.row.status < 12 || (scope.row.status == 12 && scope.row.shipmentState == 314) ) &&
!scope.row.abnormalState &&
exclude(scope.row.inWarehouseState, [204,205,206]) &&
exclude(scope.row.shipmentState, [307, 407])
"> ">
<el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:edit']" >{{$t('编辑')}}</el-dropdown-item> <el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:edit']" >{{$t('编辑')}}</el-dropdown-item>
</template> </template>
......
...@@ -173,6 +173,7 @@ ...@@ -173,6 +173,7 @@
<el-button v-else-if="scope.row.orderExceptionType=='in_warehousing_diff_exception'" v-hasPermi="['ecw:exception:inWarehousingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='in_warehousing_diff_exception'" v-hasPermi="['ecw:exception:inWarehousingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='stock_up_exception'" v-hasPermi="['ecw:exception:stockUpException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='stock_up_exception'" v-hasPermi="['ecw:exception:stockUpException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='channel_exception'" v-hasPermi="['ecw:exception:channelException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button> <el-button v-else-if="scope.row.orderExceptionType=='channel_exception'" v-hasPermi="['ecw:exception:channelException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='channel_packaging_overweight_exception'" v-hasPermi="['ecw:exception:channelPackagingException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
</el-form-item> </el-form-item>
</el-row> </el-row>
<div v-if="shopData&&['goods_add_exception','line_loop_exception','overweight_exception','stock_up_exception','in_warehousing_diff_exception','channel_exception','not_shipping_channel_exception'].indexOf(orderExceptionData.orderExceptionType) == -1"> <div v-if="shopData&&['goods_add_exception','line_loop_exception','overweight_exception','stock_up_exception','in_warehousing_diff_exception','channel_exception','not_shipping_channel_exception','channel_packaging_overweight_exception'].indexOf(orderExceptionData.orderExceptionType) == -1">
<el-row> <el-row>
<el-form-item :label="$t('产品名称')+':'" > <el-form-item :label="$t('产品名称')+':'" >
{{shopData.prodTitleZh || ''}} {{shopData.prodTitleZh || ''}}
...@@ -33,7 +33,12 @@ ...@@ -33,7 +33,12 @@
{{orderData?getRouterNameById():''}} {{orderData?getRouterNameById():''}}
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row :span="12" v-if="orderExceptionData.orderExceptionType=='overweight_exception'"> <el-row>
<el-form-item :label="$t('异常类型')+':'" v-if="orderExceptionData.orderExceptionType=='overweight_exception'||orderExceptionData.orderExceptionType=='channel_packaging_overweight_exception'">
<dict-tag :type="DICT_TYPE.ORDER_ERROR_TYPE" :value="orderExceptionData.orderExceptionType" />
</el-form-item>
</el-row>
<el-row :span="12" v-if="orderExceptionData.orderExceptionType=='overweight_exception'||orderExceptionData.orderExceptionType=='channel_packaging_overweight_exception'">
<el-form-item :label="$t('异常描述')+':'"> <el-form-item :label="$t('异常描述')+':'">
<!-- <dict-tag :type="DICT_TYPE.ORDER_ERROR_TYPE" :value="orderExceptionData.orderExceptionType" /> --> <!-- <dict-tag :type="DICT_TYPE.ORDER_ERROR_TYPE" :value="orderExceptionData.orderExceptionType" /> -->
<!-- {{orderExceptionData.orderExceptionDescVO?orderExceptionData.orderExceptionDescVO.descZh:''}} --> <!-- {{orderExceptionData.orderExceptionDescVO?orderExceptionData.orderExceptionDescVO.descZh:''}} -->
...@@ -41,7 +46,7 @@ ...@@ -41,7 +46,7 @@
</el-form-item> </el-form-item>
</el-row> </el-row>
<!-- 单证异常,发货人异常,其他异常 不显示这部分内容 --> <!-- 单证异常,发货人异常,其他异常 不显示这部分内容 -->
<div v-if="['order_doc_exception','order_consignor_exception', 'order_other_exception','overweight_exception'].indexOf(orderExceptionData.orderExceptionType) == -1"> <div v-if="['order_doc_exception','order_consignor_exception', 'order_other_exception','overweight_exception','channel_packaging_overweight_exception'].indexOf(orderExceptionData.orderExceptionType) == -1">
<!-- 预付异常,提货异常,代收货款是针对整个订单的 --> <!-- 预付异常,提货异常,代收货款是针对整个订单的 -->
<template v-if="['order_pay_exception','order_pick_up_exception', 'order_cod_exception','not_customer_service_exception'].indexOf(orderExceptionData.orderExceptionType) > -1"> <template v-if="['order_pay_exception','order_pick_up_exception', 'order_cod_exception','not_customer_service_exception'].indexOf(orderExceptionData.orderExceptionType) > -1">
<el-row> <el-row>
...@@ -174,7 +179,7 @@ ...@@ -174,7 +179,7 @@
</el-table> </el-table>
<!-- 单证异常,发货人异常,其他异常的表格 --> <!-- 单证异常,发货人异常,其他异常的表格 -->
<el-table v-if="['order_doc_exception', 'order_consignor_exception', 'order_other_exception','fee_exception','overweight_exception'].indexOf(orderExceptionData.orderExceptionType) > -1" v-loading="loading" border :data="orderData.orderItemVOList"> <el-table v-if="['order_doc_exception', 'order_consignor_exception', 'order_other_exception','fee_exception','overweight_exception','channel_packaging_overweight_exception'].indexOf(orderExceptionData.orderExceptionType) > -1" v-loading="loading" border :data="orderData.orderItemVOList">
<el-table-column :label="$t('序号')" align="center" prop="id" type="index"> <el-table-column :label="$t('序号')" align="center" prop="id" type="index">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{scope.$index + 1}}</span> <span>{{scope.$index + 1}}</span>
...@@ -886,7 +891,6 @@ ...@@ -886,7 +891,6 @@
changeLined(e){ changeLined(e){
this.selectLine = this.routerList.find(item => item.id == this.handlerParams.lineId) this.selectLine = this.routerList.find(item => item.id == this.handlerParams.lineId)
}, },
// getDictData,
getDictData, getDictData,
onTableMounted(e){ onTableMounted(e){
// console.warn('onTableMounted', e) // console.warn('onTableMounted', e)
......
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
<template v-slot:header> <template v-slot:header>
<span style="color: red">*</span>{{ $t('箱数') }}</template> <span style="color: red">*</span>{{ $t('箱数') }}</template>
<template v-slot="{r,c,$index}"> <template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.cartonsNum"> <el-form-item :rules="tableFormRules.cartonsNum" :prop="`table.${$index}.cartonsNum`">
<el-input v-model="form.table[$index].cartonsNum" placeholder="" @blur="handleVolume($index)" :disabled="$index < protectRowCount"> <el-input v-model="form.table[$index].cartonsNum" placeholder="" @blur="handleVolume($index)" :disabled="$index < protectRowCount">
<span slot="append">{{ getDictDataLabel(DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE, form.table[$index].specificationType) }}</span> <span slot="append">{{ getDictDataLabel(DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE, form.table[$index].specificationType) }}</span>
</el-input> </el-input>
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
<span>{{ $t('') }}</span>(cm) <span>{{ $t('') }}</span>(cm)
</template> </template>
<template v-slot="{r,c,$index}"> <template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.boxGauge1"> <el-form-item :rules="tableFormRules.boxGauge1" :prop="`table.${$index}.boxGauge1`">
<el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge1" placeholder="" @blur="handleVolume($index)"></el-input> <el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge1" placeholder="" @blur="handleVolume($index)"></el-input>
</el-form-item> </el-form-item>
</template> </template>
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
<span>{{ $t('') }}</span>(cm) <span>{{ $t('') }}</span>(cm)
</template> </template>
<template v-slot="{r,c,$index}"> <template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.boxGauge2"> <el-form-item :rules="tableFormRules.boxGauge2" :prop="`table.${$index}.boxGauge2`">
<el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge2" placeholder="" @blur="handleVolume($index)"></el-input> <el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge2" placeholder="" @blur="handleVolume($index)"></el-input>
</el-form-item> </el-form-item>
</template> </template>
...@@ -126,7 +126,7 @@ ...@@ -126,7 +126,7 @@
<span>{{ $t('') }}</span>(cm) <span>{{ $t('') }}</span>(cm)
</template> </template>
<template v-slot="{r,c,$index}"> <template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.boxGauge3"> <el-form-item :rules="tableFormRules.boxGauge3" :prop="`table.${$index}.boxGauge3`">
<el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge3" placeholder="" @blur="handleVolume($index)"></el-input> <el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge3" placeholder="" @blur="handleVolume($index)"></el-input>
</el-form-item> </el-form-item>
</template> </template>
...@@ -136,7 +136,7 @@ ...@@ -136,7 +136,7 @@
<span style="color: red">*</span> <span>{{ $t('体积') }}</span>(m³) <span style="color: red">*</span> <span>{{ $t('体积') }}</span>(m³)
</template> </template>
<template v-slot="{r,c,$index}"> <template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.volume"> <el-form-item :rules="tableFormRules.volume" :prop="`table.${$index}.volume`">
<el-input :disabled="$index < protectRowCount" v-model="form.table[$index].volume" placeholder="" type="number"></el-input> <el-input :disabled="$index < protectRowCount" v-model="form.table[$index].volume" placeholder="" type="number"></el-input>
</el-form-item> </el-form-item>
</template> </template>
...@@ -146,7 +146,7 @@ ...@@ -146,7 +146,7 @@
<span style="color: red">*</span> <span>{{ $t('重量') }}</span>(Kg) <span style="color: red">*</span> <span>{{ $t('重量') }}</span>(Kg)
</template> </template>
<template v-slot="{r,c,$index}"> <template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.weight"> <el-form-item :rules="tableFormRules.weight" :prop="`table.${$index}.weight`">
<el-input :disabled="$index < protectRowCount" v-model="form.table[$index].weight" placeholder="" type="number"></el-input> <el-input :disabled="$index < protectRowCount" v-model="form.table[$index].weight" placeholder="" type="number"></el-input>
</el-form-item> </el-form-item>
</template> </template>
...@@ -376,13 +376,13 @@ export default { ...@@ -376,13 +376,13 @@ export default {
brand: [{required: true, message: this.$t("请选择品牌"), trigger: "change"}], brand: [{required: true, message: this.$t("请选择品牌"), trigger: "change"}],
}, },
tableFormRules: { tableFormRules: {
// cartonsNum: [{required: true, message: this.$t("箱数不能为空"), trigger: "change"}], cartonsNum: [{required: true, message: this.$t("箱数不能为空"), trigger: "change"}],
// boxGauge1: [{required: true, message: this.$t("货物长不能为空"), trigger: "change"}], boxGauge1: [{required: true, message: this.$t("货物长不能为空"), trigger: "change"}],
// boxGauge2: [{required: true, message: this.$t("货物宽不能为空"), trigger: "change"}], boxGauge2: [{required: true, message: this.$t("货物宽不能为空"), trigger: "change"}],
// boxGauge3: [{required: true, message: this.$t("货物高不能为空"), trigger: "change"}], boxGauge3: [{required: true, message: this.$t("货物高不能为空"), trigger: "change"}],
// volume: [{required: true, message: this.$t("体积不能为空"), trigger: "change"}], volume: [{required: true, message: this.$t("体积不能为空"), trigger: "change"}],
// weight: [{required: true, message: this.$t("重量不能为空"), trigger: "change"}], weight: [{required: true, message: this.$t("重量不能为空"), trigger: "change"}],
// // quantityAll: [{required: true, message: this.$t("数量不能为空"), trigger: "change"}] // quantityAll: [{required: true, message: this.$t("数量不能为空"), trigger: "change"}]
}, },
...@@ -492,31 +492,30 @@ export default { ...@@ -492,31 +492,30 @@ export default {
type: 'warning' type: 'warning'
}) })
} }
this.$refs['form'].validate(valid => { this.$refs['tableForm'].validate(valid1 => {
this.$refs['tableForm'].validate(valid1 => { console.log("表单校验", valid1)
if (!valid || !valid1) { if (!valid1) {
return return
} }
// 首次入仓、入仓补充 // 首次入仓、入仓补充
return finishPacked({ return finishPacked({
brand: this.form.brand, brand: this.form.brand,
orderId: this.warehousing.orderId, orderId: this.warehousing.orderId,
orderItemId: this.warehousing.orderItemId, orderItemId: this.warehousing.orderItemId,
orderWarehouseInItemDtoList: this.form.table.map(e => { orderWarehouseInItemDtoList: this.form.table.map(e => {
return { return {
...e, ...e,
boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3, boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3,
orderLocationCreateReqVOList: e.orderLocationBackVOList orderLocationCreateReqVOList: e.orderLocationBackVOList
}
}),
}).then(r => {
if (r.data) {
this.$message.success('打包成功')
this.handleClose()
} else {
this.$message.success('打包失败')
} }
}) }),
}).then(r => {
if (r.data) {
this.$message.success('打包成功')
this.handleClose()
} else {
this.$message.success('打包失败')
}
}) })
}) })
}, },
......
...@@ -306,7 +306,7 @@ ...@@ -306,7 +306,7 @@
{{ form1.table[$index].cartonsNum }} {{ form1.table[$index].cartonsNum }}
{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, form1.table[$index].unit) }} {{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, form1.table[$index].unit) }}
</span> </span>
<el-input v-else v-model="form1.table[$index].cartonsNum" placeholder=""> <el-input v-else v-model="form1.table[$index].cartonsNum" placeholder="" @blur="handleVolume($index, 1)">
<span slot="append">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, form1.table[$index].unit) }}</span> <span slot="append">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, form1.table[$index].unit) }}</span>
</el-input> </el-input>
<dict-selector :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" v-model="form1.table[$index].specificationType" @change="handleVolume($index, 1)"></dict-selector> <dict-selector :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" v-model="form1.table[$index].specificationType" @change="handleVolume($index, 1)"></dict-selector>
...@@ -743,10 +743,15 @@ export default { ...@@ -743,10 +743,15 @@ export default {
this.form.orderId = this.warehousing.orderId this.form.orderId = this.warehousing.orderId
this.form.orderItemId = this.warehousing.orderItemId this.form.orderItemId = this.warehousing.orderItemId
this.form.orderNo = this.warehousing.orderNo this.form.orderNo = this.warehousing.orderNo
this.form.warehouseInProdAttrIds = if (this.edit || this.isAdd) {
this.warehousing.warehouseInProdAttrIds?.split(',').map(e => +e) this.form.warehouseInProdAttrIds = this.warehousing.warehouseInProdAttrIds?.split(',').map(e => +e) || []
|| this.warehousing.prodAttrIds?.split(',').map(e => +e) } else {
|| [] this.form.warehouseInProdAttrIds =
this.warehousing.warehouseInProdAttrIds?.split(',').map(e => +e)
|| this.warehousing.prodAttrIds?.split(',').map(e => +e)
|| []
}
this.form.prodId = this.warehousing.prodId this.form.prodId = this.warehousing.prodId
this.form.prodTitleEn = this.warehousing.prodTitleEn this.form.prodTitleEn = this.warehousing.prodTitleEn
this.form.prodTitleZh = this.warehousing.prodTitleZh this.form.prodTitleZh = this.warehousing.prodTitleZh
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
<el-card> <el-card>
<div slot="header" class="card-title">{{$t('查看')}}</div> <div slot="header" class="card-title">{{$t('查看')}}</div>
<el-descriptions :column="4"> <el-descriptions :column="4">
<el-descriptions-item :label="$t('订单号')">
{{orderData.orderNo||''}}
</el-descriptions-item>
<el-descriptions-item :label="$t('唛头')"> <el-descriptions-item :label="$t('唛头')">
{{orderData.marks?orderData.marks:$t('')}} {{orderData.marks?orderData.marks:$t('')}}
</el-descriptions-item> </el-descriptions-item>
...@@ -16,8 +19,9 @@ ...@@ -16,8 +19,9 @@
<el-descriptions-item :label="$t('送货日期')"> <el-descriptions-item :label="$t('送货日期')">
<span>{{orderData.deliveryDate||$t('')}}</span> <span>{{orderData.deliveryDate||$t('')}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')"> <el-descriptions-item :label="$t('运输方式')" :span="2">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="orderData.transportId" /> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="orderData.transportId" />
<span v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, orderData.transportId).cssClass == 'channel'" style="margin-left:10px">{{$t('出货渠道')}}:{{orderData.channelName}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('始发地')" :span="2"> <el-descriptions-item :label="$t('始发地')" :span="2">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.startTitleZh:$t('')}} {{orderData.logisticsInfoDto?orderData.logisticsInfoDto.startTitleZh:$t('')}}
...@@ -117,7 +121,9 @@ ...@@ -117,7 +121,9 @@
{{parseTime(handlerParams.handlerTime)}} {{parseTime(handlerParams.handlerTime)}}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('处理结果')"> <el-descriptions-item :label="$t('处理结果')">
{{handlerParams.handlerResult=='general_cargo'?$t('设为普货'):$t('设为已处理')}} <span v-if="handlerParams.handlerResult=='general_cargo'">{{$t('设为普货')}}</span>
<span v-else-if="handlerParams.handlerResult=='process'">{{$t('设为已处理')}}</span>
<span v-else>{{$t('设为半抛')}}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item :label="$t('备注')"> <el-descriptions-item :label="$t('备注')">
{{handlerParams.handlerRemark||"无"}} {{handlerParams.handlerRemark||"无"}}
...@@ -128,6 +134,7 @@ ...@@ -128,6 +134,7 @@
<div v-if="list.orderExceptionStatus!=2"> <div v-if="list.orderExceptionStatus!=2">
<el-button type="primary" @click="submit('general_cargo')">{{$t('设为普货')}}</el-button> <el-button type="primary" @click="submit('general_cargo')">{{$t('设为普货')}}</el-button>
<el-button plain type="primary" @click="submit('process')">{{$t('设为已处理')}}</el-button> <el-button plain type="primary" @click="submit('process')">{{$t('设为已处理')}}</el-button>
<el-button v-if="type!='order_heavy_cargo_exception'" plain type="primary" @click="submit('half_throw')">{{$t('设为半抛')}}</el-button>
</div> </div>
<div v-else> <div v-else>
<el-button plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button> <el-button plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button>
...@@ -147,6 +154,7 @@ import {getExceptionById,handlerExceptionByExceptionId,getOrderExcptionResult} f ...@@ -147,6 +154,7 @@ import {getExceptionById,handlerExceptionByExceptionId,getOrderExcptionResult} f
import {DICT_TYPE} from '@/utils/dict' import {DICT_TYPE} from '@/utils/dict'
import {getOrder} from '@/api/ecw/order' import {getOrder} from '@/api/ecw/order'
import {getProductBrankPage} from '@/api/ecw/productBrank' import {getProductBrankPage} from '@/api/ecw/productBrank'
import {getDictData, getDictDatas} from '@/utils/dict'
export default { export default {
name: "WeightDeal", name: "WeightDeal",
...@@ -179,6 +187,11 @@ export default { ...@@ -179,6 +187,11 @@ export default {
this.branklist=data.data.list this.branklist=data.data.list
}) })
}, },
computed:{
getDictData(){
return (type, value) => getDictData(type, value) || {}
},
},
methods: { methods: {
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
......
...@@ -177,7 +177,7 @@ ...@@ -177,7 +177,7 @@
</el-form-item> </el-form-item>
</template> </template>
<el-form-item :label="$t('是否询')" prop="inquiry"> <el-form-item :label="$t('是否询')" prop="inquiry">
<dict-selector :type="DICT_TYPE.NEED_ORDER_INQUIRY" v-model="form.needOrderInquiry" form-type="radio"></dict-selector> <dict-selector :type="DICT_TYPE.NEED_ORDER_INQUIRY" v-model="form.needOrderInquiry" form-type="radio"></dict-selector>
</el-form-item> </el-form-item>
</el-card> </el-card>
...@@ -321,8 +321,6 @@ export default { ...@@ -321,8 +321,6 @@ export default {
this.$set(this.form, 'stepPrice', 1) this.$set(this.form, 'stepPrice', 1)
} }
}) })
}, },
methods: { methods: {
// 获取模板数据(复制的源路线价格信息) // 获取模板数据(复制的源路线价格信息)
...@@ -351,11 +349,13 @@ export default { ...@@ -351,11 +349,13 @@ export default {
stepPrice, stepPrice,
specialList, specialList,
priceStepList, priceStepList,
minWeight, minWeight,
minWeightUnit minWeightUnit,
needOrderInquiry,
needBook
} = res.data } = res.data
this.$set(this, 'form', Object.assign({}, this.form, { const data = {
allPrice, allPrice,
allPriceUnit, allPriceUnit,
allVolumeUnit, allVolumeUnit,
...@@ -370,8 +370,16 @@ export default { ...@@ -370,8 +370,16 @@ export default {
specialList, specialList,
priceStepList, priceStepList,
minWeight, minWeight,
minWeightUnit minWeightUnit,
})) needOrderInquiry,
needBook
}
// 海运需要填充货柜位置和订单方数上限
if(this.type == 'sea'){
data.containerLocation = res.data.containerLocation
data.square = res.data.square
}
this.$set(this, 'form', Object.assign({}, this.form, data))
// 产品选择器默认选择的商品 // 产品选择器默认选择的商品
getProduct(res.data.productId).then(res => { getProduct(res.data.productId).then(res => {
......
...@@ -876,7 +876,8 @@ export default { ...@@ -876,7 +876,8 @@ export default {
// 复制模板 // 复制模板
copyTemplate(row){ copyTemplate(row){
// 跳转到批量设置页面,并填充数据 // 跳转到批量设置页面,并填充数据
this.$router.push(`../../lineProject/batch-edit-${row.transportType == 3 || row.transportType == 4 ? 'air' : 'sea'}?templateId=${row.id}`) let transportType = row.warehouseLineDO.transportType
this.$router.push(`../../lineProject/batch-edit-${transportType == 3 || transportType == 4 ? 'air' : 'sea'}?templateId=${row.id}`)
}, },
// 关闭更多阶梯价格窗口 // 关闭更多阶梯价格窗口
closeMoreStepPrice(){ closeMoreStepPrice(){
......
...@@ -325,10 +325,13 @@ ...@@ -325,10 +325,13 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('保费币种')"> <el-form-item :label="$t('保费币种')">
<el-select v-model="lineform.currencyUnit"> <el-select @change="modifyAmountUnit" v-model="lineform.currencyUnit">
<el-option v-for="(item) in currencyList" :disabled="item.status === 1" :label="$l(item, 'title')" :value="item.id"></el-option> <el-option v-for="(item) in currencyList" :disabled="item.status === 1" :label="$l(item, 'title')" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('最小保价费金额')" >
<el-input-number :controls="false" v-model="lineform.minPrice" > </el-input-number>
</el-form-item>
<el-form-item :label="$t('是否支持控货')"> <el-form-item :label="$t('是否支持控货')">
<el-radio-group v-model="lineform.controlStatus"> <el-radio-group v-model="lineform.controlStatus">
<el-radio :label="0">支持</el-radio> <el-radio :label="0">支持</el-radio>
...@@ -554,8 +557,7 @@ export default { ...@@ -554,8 +557,7 @@ export default {
// 表单参数 // 表单参数
form: {checkList:[],}, form: {checkList:[],},
ladingform: {prefixCounter:null,titleZh:null,contentZh:null,account:null,acctArr:[]}, ladingform: {prefixCounter:null,titleZh:null,contentZh:null,account:null,acctArr:[]},
lineform: {otherService:[],isClientShow:1,makeBillNode:'2'}, lineform: {otherService:[],isClientShow:1,makeBillNode:'2',controlStatus:'0',currencyUnit:1,minPrice:0},
lineform: {otherService:[],isClientShow:1,makeBillNode:'2',controlStatus:'0',currencyUnit:1},
startName:'', startName:'',
destName:'', destName:'',
...@@ -590,17 +592,17 @@ export default { ...@@ -590,17 +592,17 @@ export default {
}, },
computed: { computed: {
checkedFn(){
return (val)=>{
return (Array.isArray(this.lineform.otherService) ? this.lineform.otherService : []).includes(val)
}
},
DICT_TYPE() { DICT_TYPE() {
return DICT_TYPE return DICT_TYPE
}, },
getDictDataL() { getDictDataL() {
return getDictDataL return getDictDataL
}, },
checkedFn(){
return (val)=>{
return (Array.isArray(this.lineform.otherService) ? this.lineform.otherService : []).includes(val)
}
},
isShowError() { isShowError() {
return (item) => { return (item) => {
if(item.id !== '5' && item.id !== '10') return true; if(item.id !== '5' && item.id !== '10') return true;
...@@ -698,6 +700,17 @@ export default { ...@@ -698,6 +700,17 @@ export default {
}, },
methods: { methods: {
getDictDataLabel, getDictDataLabel,
modifyAmountUnit(val){
if(val === 6){
this.lineform.minPrice = 900
} else if(val === 3){
this.lineform.minPrice = 10
}
else {
this.lineform.minPrice = 2
}
},
changeOtherService(val){ changeOtherService(val){
if(val === '2' && !( Array.isArray(this.lineform.otherService) ? this.lineform.otherService :[]).includes('10')){ if(val === '2' && !( Array.isArray(this.lineform.otherService) ? this.lineform.otherService :[]).includes('10')){
this.lineform.otherService.push('10'); this.lineform.otherService.push('10');
...@@ -884,6 +897,20 @@ export default { ...@@ -884,6 +897,20 @@ export default {
this.lineform.makeBillNode = row.makeBillNode; this.lineform.makeBillNode = row.makeBillNode;
this.lineform.currencyUnit = row.currencyUnit ? row.currencyUnit : 1 this.lineform.currencyUnit = row.currencyUnit ? row.currencyUnit : 1
this.lineform.controlStatus = row.controlStatus ? row.controlStatus : 0 this.lineform.controlStatus = row.controlStatus ? row.controlStatus : 0
this.lineform.minPrice = row.minPrice ? row.minPrice : 0
if(row.minPrice){
this.lineform.minPrice = row.minPrice;
}else {
if(this.lineform.currencyUnit === 6){
this.lineform.minPrice = 900
} else if(this.lineform.currencyUnit === 3 ){
this.lineform.minPrice = 10
} else {
this.lineform.minPrice = 2
}
}
console.log(row,'row') console.log(row,'row')
}, },
...@@ -899,7 +926,8 @@ export default { ...@@ -899,7 +926,8 @@ export default {
isClientShow:this.lineform.isClientShow, isClientShow:this.lineform.isClientShow,
makeBillNode:this.lineform.makeBillNode, makeBillNode:this.lineform.makeBillNode,
controlStatus:this.lineform.controlStatus, controlStatus:this.lineform.controlStatus,
currencyUnit:this.lineform.currencyUnit currencyUnit:this.lineform.currencyUnit,
minPrice:this.lineform.minPrice
}).then(res => { }).then(res => {
this.$modal.msgSuccess(this.$t("操作成功")); this.$modal.msgSuccess(this.$t("操作成功"));
this.getRouteList() this.getRouteList()
......
...@@ -42,7 +42,11 @@ ...@@ -42,7 +42,11 @@
<el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" width="100"> <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope" > <template slot-scope="scope" >
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDownload(scope.row)" <el-button size="mini" type="text" icon="el-icon-edit" @click="handleDownload(scope.row)"
v-hasPermi="['system:notice:update']">{{$t('下载')}}</el-button> v-hasPermi="['system:notice:update']" v-if="scope.row.status == 2">{{$t('下载')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleRetry(scope.row)"
v-hasPermi="['system:notice:update']" v-if="scope.row.status == 3">{{$t('重试')}}</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleDel(scope.row)"
v-hasPermi="['system:notice:update']">{{$t('删除')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -54,13 +58,11 @@ ...@@ -54,13 +58,11 @@
</template> </template>
<script> <script>
import {download, downloadFileArrayBuffer, downloadFileResponse, downloadPage} from "@/api/system/download"; import {deleteLog, download, downloadFileResponse, downloadPage, retry} from "@/api/system/download";
import {parseTime} from "../../../utils/ruoyi"; import {parseTime} from "../../../utils/ruoyi";
import Template from "@/views/cms/template/index.vue";
export default { export default {
name: "Download", name: "Download",
components: {Template},
data() { data() {
return { return {
// 遮罩层 // 遮罩层
...@@ -103,7 +105,18 @@ export default { ...@@ -103,7 +105,18 @@ export default {
this.loading = false; this.loading = false;
}) })
}, },
handleRetry(row){
retry(row.id).then(res => {
this.$message.success('重试已提交')
this.getList()
})
},
handleDel(row){
deleteLog(row.id).then(res => {
this.$message.success('删除成功')
this.getList()
})
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.page = 1; this.queryParams.page = 1;
......
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