Commit 0231012e authored by dcy's avatar dcy

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

parents 542d3768 37182c43
......@@ -210,13 +210,29 @@ function jsonToFormData(params) {
return formData;
}
// 根据订单ID下载提货单
// 创建制作提货单
export function getNoticeList(data) {
return request({
url: "/shipment/box/noticeList",
method: "post",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
data: jsonToFormData(data),
});
}
/**
* 根据订单ID下载提货单
*
* @export
* @param {*} orderId
* @return {*}
*/
export function downloadByOrderId(orderId) {
return request({
url: "/shipment/make-bill-of-lading/downloadByOrderId",
method: "get",
params: {orderId},
responseType: 'arraybuffer'
params: { orderId },
responseType: "arraybuffer",
});
}
......@@ -227,4 +243,79 @@ export function getBoxApproval(params) {
method: "get",
params,
});
}
\ No newline at end of file
}
// 获得制作提货单(审核中调用)
export function getBillOfLandingInProcessing(params){
return request({
url: "/shipment/make-bill-of-lading/getInProcessing",
method: "get",
params,
});
}
// 下载agent list文件
export function downloadAgentListFiles(params) {
return request({
url: "/ecw/box-preload-goods/downloadAgentListFiles",
method: "get",
params,
});
}
// 下载son cap文件
export function downloadSoncapFiles(params) {
return request({
url: "/ecw/box-preload-goods/downloadSoncapFiles",
method: "get",
params,
});
}
// 下载报关单
export function downloadCustomFiles(params) {
return request({
url: "/ecw/box-preload-goods/downloadCustomFiles",
responseType: "arraybuffer",
method: "get",
params,
});
}
// 下载已装单
export function downloadLoadGoodsList(params) {
return request({
url: "/ecw/box-preload-goods/downloadLoadGoodsList",
responseType: "arraybuffer",
method: "get",
params,
});
}
// 下载预装单
export function downloadPreloadGoodsList(params) {
return request({
url: "/ecw/box-preload-goods/downloadPreloadGoodsList",
responseType: "arraybuffer",
method: "get",
params,
});
}
// 下载应收汇总
export function downloadReceivableList(params) {
return request({
url: "/ecw/box-preload-goods/downloadReceivableList",
responseType: "arraybuffer",
method: "get",
params,
});
}
// 下载提单copy
export function downloadLadingCopy(params) {
return request({
url: "/ecw/box-lading-copy/downloadLadingCopy",
method: "get",
params,
});
}
......@@ -624,6 +624,34 @@ export function createApproval(data) {
});
}
/**
* 订单详情
*
* @param {*} params
* @returns
*/
export function getOrderDetailByBoxNo(data) {
return request({
url: "/my/shipment/searchLoadOrderByBoxNo",
method: "post",
data,
});
}
/**
* 外部仓装柜
*
* @param {*} params
* @returns
*/
export function externalLoad(data) {
return request({
url: "/ecw/box-load-info/externalLoad",
method: "post",
data,
});
}
/***************************** 装柜 end **********************************/
/***************************** 卸柜 start **********************************/
......
......@@ -430,4 +430,31 @@ export function orderSpecialNeedGet(params){
method:'delete',
data
})
}
\ No newline at end of file
}
// 获得订单修改申请详情
export function getUpdateInfo(id){
return request({
url:'/ecw/order/update/info/' + id,
method:'get'
})
}
// 根据审批ID获得订单修改申请详情
export function getUpdateInfoByApproveId(approveId){
return request({
url:'/ecw/order/update/info',
method:'get',
params: {approveId}
})
}
// (新修改订单)订单修改审批申请
export function updateApply(data){
return request({
url:'/ecw/order/update/apply',
method:'put',
data
})
}
\ No newline at end of file
......@@ -72,9 +72,9 @@ export function setUnauthCustomerFeeType(data) {
}
//
export function getFeeTypeByCustomerProduct(data){
export function getFeeTypeByOrderProduct(data){
return request({
url: '/ecw/product-brank/getFeeTypeByCustomerProduct',
url: '/ecw/product-brank/getFeeTypeByOrderProduct',
method: 'post',
data
})
......
......@@ -49,6 +49,7 @@ export default {
return name.trim() === '首页' // 修复 Index 重复的问题
},
handleLink(item) {
return
const { redirect, path } = item
if (redirect) {
this.$router.push(redirect)
......
......@@ -89,7 +89,7 @@ export const DICT_TYPE = {
ECW_COOPERATION_TYPE: 'cooperation_type', // 合作类型
ECW_SHIPPING_DECLARATION_TYPE: 'shipping_declaration_type', // 出货报关方式(与订单报关方式相同)
ECW_CUSTOMS_TYPE: 'customs_type', // 订单报关方式(非出货报关),优惠券中的单证报关
ECW_PACKAGE_TYPE: 'packageType', // 包装单位
// ECW_PACKAGE_TYPE: 'packageType', // 包装单位
ECW_DOUBLE_CLEAR: 'double_clear', // 是否双清
ECW_TRADE_TYPE: 'trade_type', // 交货放肆
ECW_OFFER_RESULT: 'offer_result', // 报单结果 赢单 输单
......@@ -196,6 +196,7 @@ export const DICT_TYPE = {
BOX_SHIPPING_TICKET_EXCEPTION: 'shipping_ticket_exception', // 票异常
BOX_SHIPPING_PROCESS: 'shipping_process', // 海运出货流程
BOX_SHIPPING_BRAND_TYPE: 'shipping_brand_type', // 出货品牌类型
BOX_SHIPPING_NOTICE_TYPE: 'shipping_notice_type', // 出货通知类型
}
/**
......
......@@ -299,6 +299,24 @@ export default {
id: this.processInstance.businessKey,
applyType: 10
},
// 提单审核
order_landing_bill:{
component: () => import('@/views/ecw/order/components/LandingBillDetail'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
// 订单审核详情
order_approval:{
component: () => import('@/views/ecw/order/components/ApprovalDetail'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
// 订单修改审批
order_update:{
component: () => import('@/views/ecw/order/components/UpdateDetail'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
}
return map[this.processInstance.processDefinition.formCustomViewPath.trim()]
}
......
......@@ -96,16 +96,14 @@ export default {
if (this.form.id != null) {
updatebox(this.form).then((response) => {
this.$modal.msgSuccess('修改成功')
this.open = false
this.getList()
this.$emit("closeDialog", "edit");
})
return
}
// 添加的提交
createbox(this.form).then((response) => {
this.$modal.msgSuccess('新增成功')
this.open = false
this.getList()
this.$emit("closeDialog", "edit");
})
})
},
......
......@@ -33,10 +33,10 @@
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['ecw:future-box:create']">新建计划</el-button>
</el-col>
<el-col :span="1.5">
<!-- <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
v-hasPermi="['ecw:future-box:export']">导出</el-button>
</el-col>
</el-col> -->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
......
......@@ -124,21 +124,21 @@
<el-dropdown-item command="error">异常登记</el-dropdown-item>
<el-dropdown-item command="cost">费用登记</el-dropdown-item>
<el-dropdown-item command="delete">删除</el-dropdown-item>
<el-dropdown-item v-if="scope.row.ldStatus==47" command="editLadingBill">编辑提货单</el-dropdown-item>
<el-dropdown-item v-if="scope.row.ldStatus>42" command="editLadingBill">编辑提货单</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-dropdown trigger="click">
<el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)">
<el-button type="primary">
下载<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="">预装单</el-dropdown-item>
<el-dropdown-item command="">已装单</el-dropdown-item>
<el-dropdown-item command="">应收汇总表</el-dropdown-item>
<el-dropdown-item command="">agent list</el-dropdown-item>
<el-dropdown-item command="">son cap</el-dropdown-item>
<el-dropdown-item command="">提货单</el-dropdown-item>
<el-dropdown-item command="">提单Copy</el-dropdown-item>
<el-dropdown-item command="downloadPreloadGoodsList">预装单</el-dropdown-item>
<el-dropdown-item command="downloadLoadGoodsList">已装单</el-dropdown-item>
<el-dropdown-item command="downloadReceivableList">应收汇总表</el-dropdown-item>
<el-dropdown-item command="downloadAgentListFiles">agent list</el-dropdown-item>
<el-dropdown-item command="downloadSoncapFiles">soncap</el-dropdown-item>
<el-dropdown-item command="zipDownload">提货单</el-dropdown-item>
<el-dropdown-item command="downloadLadingCopy">提单Copy</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
......@@ -161,12 +161,50 @@
<template v-if="dialogCfg.dialogType === 'editLadingBill'">
<ladingBill v-if="dialogCfg.open" @closeDialog="closeDialog" :shipmentObj="currRow" :getCabinetName="getCabinetName" />
</template>
<template v-if="dialogCfg.dialogType === 'notice'">
<div class="notice-dialog">
<div class="notice-title">您有一个/多个待处理出货操作,请尽快前往处理:</div>
<el-table :data="noticeList" height="500px" border>
<el-table-column label="自编号" align="center" prop="selfNo" />
<el-table-column label="类型" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_NOTICE_TYPE" :value="String(scope.row.noticeType)" />
</template>
</el-table-column>
<el-table-column label="操作时间" align="center">
<template slot-scope="scope">
{{formatDate(scope.row.createTime)}}
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="text" @click="handleCommand(scope.row, 'sea')">处理</el-button>
</template>
</el-table-column>
</el-table>
<el-row class="operate-button">
<el-button type="primary" @click="closeDialog">关闭窗口</el-button>
</el-row>
</div>
</template>
</el-dialog>
</div>
</template>
<script>
import { deletebox, getbox, getboxPage, exportboxExcel } from "@/api/ecw/box";
import {
deletebox,
getbox,
getboxPage,
exportboxExcel,
getNoticeList,
} from "@/api/ecw/box";
import {
downloadFile,
downloadFileByUrl,
formatDate,
} from "./shippingSea/utils";
import { getCabinetPage } from "@/api/ecw/cabinet";
import { getWarehouseList } from "@/api/ecw/warehouse";
import { getListTree } from "@/api/ecw/region";
......@@ -224,8 +262,10 @@ export default {
cabinetList: [],
warehouseList: [],
transportTypes: [],
//国家信息列表
// 国家信息列表
countryList: [],
// 通知列表
noticeList: [],
};
},
computed: {
......@@ -260,8 +300,22 @@ export default {
});
this.getList();
this.getCountryList();
this.queryNotice();
},
methods: {
formatDate,
queryNotice() {
getNoticeList({}).then((res) => {
const { data } = res;
this.noticeList = data ?? [];
if (data.length) {
this.$set(this.dialogCfg, "title", "出货操作提醒");
this.$set(this.dialogCfg, "dialogType", "notice");
this.$set(this.dialogCfg, "width", "650px");
this.$set(this.dialogCfg, "open", true);
}
});
},
/* 国家 */
getCountryList() {
getListTree({ treeType: 1 }).then((response) => {
......@@ -300,6 +354,9 @@ export default {
this.$set(this.dialogCfg, "width", "600px");
this.$set(this.dialogCfg, "fullscreen", false);
this.$set(this.dialogCfg, "open", true);
this.currRow = {
transportType: "1",
};
},
/** 修改按钮操作 */
handleUpdate(row) {
......@@ -340,7 +397,7 @@ export default {
return exportboxExcel(params);
})
.then((response) => {
this.$download.excel(response, "${table.classComment}.xls");
this.$download.excel(response, "海运管理.xls");
this.exportLoading = false;
})
.catch(() => {});
......@@ -389,6 +446,44 @@ export default {
case "error":
this.$set(this.dialogCfg, "title", "异常登记");
break;
case "downloadPreloadGoodsList":
downloadFile(
command,
{ shipmentId: row.id },
`预装单(${row.selfNo}).xlsx`,
"xlsx"
);
break;
case "downloadLoadGoodsList":
downloadFile(
command,
{ shipmentId: row.id },
`已装单(${row.selfNo}).xlsx`,
"xlsx"
);
break;
case "downloadReceivableList":
downloadFile(
command,
{ shipmentId: row.id },
`应收汇总表(${row.selfNo}).xlsx`,
"xlsx"
);
break;
case "zipDownload":
downloadFile(
command,
{ shipmentId: row.id },
`提货单(${row.selfNo}).zip`,
"zip"
);
break;
case "downloadAgentListFiles":
case "downloadSoncapFiles":
case "downloadLadingCopy":
downloadFileByUrl(command, { shipmentId: row.id });
break;
}
if (["editLadingBill", "cost", "error"].includes(command)) {
......@@ -406,3 +501,17 @@ export default {
},
};
</script>
<style lang="scss" scoped>
.notice-dialog {
::v-deep .notice-title {
font-size: 24px;
font-weight: bold;
margin-bottom: 10px;
}
::v-deep .operate-button {
margin-top: 10px;
text-align: center;
}
}
</style>
......@@ -149,7 +149,11 @@
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column label="自编号" align="center" prop="selfNo" />
<el-table-column label="自编号" align="center" prop="selfNo">
<template slot-scope="scope">
<a href="javascript:void(0)" @click="handleCommand(scope.row, 'detail')">{{ scope.row.selfNo }}</a>
</template>
</el-table-column>
<el-table-column label="柜号" align="center" prop="cubNo" />
<el-table-column label="柜型" align="center" prop="cabinetId">
<template slot-scope="scope">
......@@ -224,21 +228,21 @@
<el-dropdown-item command="error">异常登记</el-dropdown-item>
<el-dropdown-item command="cost">费用登记</el-dropdown-item>
<el-dropdown-item command="delete">删除</el-dropdown-item>
<el-dropdown-item command="editLadingBill">编辑提货单</el-dropdown-item>
<el-dropdown-item v-if="scope.row.ldStatus>42" command="editLadingBill">编辑提货单</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-dropdown trigger="click">
<el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)">
<el-button type="primary">
下载<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="">预装单</el-dropdown-item>
<el-dropdown-item command="">已装单</el-dropdown-item>
<el-dropdown-item command="">应收汇总表</el-dropdown-item>
<el-dropdown-item command="">agent list</el-dropdown-item>
<el-dropdown-item command="">son cap</el-dropdown-item>
<el-dropdown-item command="">提货单</el-dropdown-item>
<el-dropdown-item command="">提单Copy</el-dropdown-item>
<el-dropdown-item command="downloadPreloadGoodsList">预装单</el-dropdown-item>
<el-dropdown-item command="downloadLoadGoodsList">已装单</el-dropdown-item>
<el-dropdown-item command="downloadReceivableList">应收汇总表</el-dropdown-item>
<el-dropdown-item command="downloadAgentListFiles">agent list</el-dropdown-item>
<el-dropdown-item command="downloadSoncapFiles">soncap</el-dropdown-item>
<el-dropdown-item command="zipDownload">提货单</el-dropdown-item>
<el-dropdown-item command="downloadLadingCopy">提单Copy</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
......@@ -304,6 +308,11 @@ import {
getboxPage,
exportboxExcel
} from '@/api/ecw/box'
import {
downloadFile,
downloadFileByUrl,
formatDate,
} from "./shippingSea/utils";
import { getCabinetPage } from '@/api/ecw/cabinet'
import { getChannelList } from '@/api/ecw/channel'
import { getWarehouseList } from '@/api/ecw/warehouse'
......@@ -536,6 +545,10 @@ export default {
this.$router.push('/boxSeaAir/shippingSeaAir/' + row.id)
break
case "detail":
this.$router.push("/boxSeaAir/query/" + row.id);
break;
case 'edit':
this.handleUpdate(row)
break
......@@ -560,6 +573,43 @@ export default {
case 'error':
this.$set(this.dialogCfg, 'title', '异常登记')
break
case "downloadPreloadGoodsList":
downloadFile(
command,
{ shipmentId: row.id },
`预装单(${row.selfNo}).xlsx`,
"xlsx"
);
break;
case "downloadLoadGoodsList":
downloadFile(
command,
{ shipmentId: row.id },
`已装单(${row.selfNo}).xlsx`,
"xlsx"
);
break;
case "downloadReceivableList":
downloadFile(
command,
{ shipmentId: row.id },
`应收汇总表(${row.selfNo}).xlsx`,
"xlsx"
);
break;
case "zipDownload":
downloadFile(
command,
{ shipmentId: row.id },
`提货单(${row.selfNo}).zip`,
"zip"
);
break;
case "downloadAgentListFiles":
case "downloadSoncapFiles":
case "downloadLadingCopy":
downloadFileByUrl(command, { shipmentId: row.id });
break;
}
if (["editLadingBill", "cost", "error"].includes(command)) {
this.currRow = row;
......
......@@ -2,8 +2,8 @@
<el-row class="shipping-ladingBill">
<el-row class="oper-button">
<el-button type="primary" @click="clickZipDownload">打包下载</el-button>
<el-button type="primary">应收汇总单</el-button>
<el-button type="primary">下载已装单</el-button>
<el-button type="primary" @click="handleCommand('downloadReceivableList')">应收汇总表</el-button>
<el-button type="primary" @click="handleCommand('downloadLoadGoodsList')">下载已装单</el-button>
</el-row>
<el-row style="margin-top:15px">
......@@ -91,7 +91,11 @@ import {
deleteBillService,
zipDownload,
} from "@/api/ecw/box";
import { getTotlContent, getCapacity } from "../shippingSea/utils";
import {
getTotlContent,
getCapacity,
downloadFile,
} from "../shippingSea/utils";
import makeLadingBill from "./makeLadingBill.vue";
import previewBill from "./previewBill.vue";
import FileSaver from "file-saver";
......@@ -169,17 +173,31 @@ export default {
}
});
break;
case "downloadLoadGoodsList":
downloadFile(
type,
{ shipmentId: this.shipmentObj.id },
`已装单(${this.shipmentObj.selfNo}).xlsx`,
"xlsx"
);
return;
case "downloadReceivableList":
downloadFile(
type,
{ shipmentId: this.shipmentObj.id },
`应收汇总表(${this.shipmentObj.selfNo}).xlsx`,
"xlsx"
);
return;
}
this.currRow = row;
this.$set(this.dialogCfg, "type", type);
this.$set(this.dialogCfg, "visible", true);
},
makeBill(row) {
const { bookSeaInfo } = this.shipmentObj;
makeBillService({
orderId: row.orderId,
zgDate: '2022-09-27',
// zgDate: bookSeaInfo.sailTime,
shipmentId: this.shipmentObj.id,
}).then((res) => {
const { data } = res;
const { titleZh = "", contentZh = "" } = data?.ladingTemplate ?? {};
......
......@@ -52,11 +52,6 @@ export default {
});
},
},
watch: {
contentHtml(val) {
console.log(val);
},
},
};
</script>
......
......@@ -157,9 +157,14 @@
</el-table>
</el-tab-pane>
<el-tab-pane label="表单" name="download">
<el-table :data="[]" style="width: 50%">
<el-table-column prop="" label="文件类型"> </el-table-column>
<el-table-column prop="" label="下载链接"> </el-table-column>
<el-table :data="downloadList" style="width: 50%">
<el-table-column prop="title" label="文件类型"></el-table-column>
<el-table-column prop="" label="下载链接">
<template slot-scope="scope">
<a v-if="scope.row.serviceName" href="javascript:void(0)" @click="downloadDetailFile(scope.row)">下载</a>
<div v-else>未完成</div>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
......@@ -199,6 +204,8 @@ import {
getTotlContent,
formatDate,
serviceMsg,
downloadFile,
downloadFileByUrl,
} from "./shippingSea/utils";
import { getSectionList, boxGoodsDetail } from "@/api/ecw/boxSea";
import { getSupplierPage } from "@/api/ecw/supplier";
......@@ -264,6 +271,20 @@ export default {
transportTypes: [],
// 费用详情
costDetail: {},
// 下载
downloadList: [
{ title: "预装单", serviceName: "downloadPreloadGoodsList" },
{ title: "已装单", serviceName: "downloadLoadGoodsList" },
{ title: "应收汇总表", serviceName: "downloadReceivableList" },
{ title: "提货单", serviceName: "zipDownload", fileFormat: "zip" },
{
title: "agent list",
serviceName: "downloadAgentListFiles",
type: "url",
},
{ title: "soncap", serviceName: "downloadSoncapFiles", type: "url" },
{ title: "提单Copy", serviceName: "downloadLadingCopy", type: "url" },
],
};
},
methods: {
......@@ -427,6 +448,22 @@ export default {
}
},
formatDate,
downloadDetailFile(row) {
const { fileFormat, type } = row;
if (type === "url") {
downloadFileByUrl(row.serviceName, { shipmentId: this.shipmentId });
} else {
let fileName = `${row.title}(${this.shipmentObj.selfNo}).${
fileFormat ?? "xlsx"
}`;
downloadFile(
row.serviceName,
{ shipmentId: this.shipmentId },
fileName,
fileFormat ?? "xlsx"
);
}
},
},
computed: {
visitedViews() {
......
......@@ -22,13 +22,13 @@
<!-- 开始装柜 -->
<el-dialog title="开始装柜" :visible.sync="dialogVisible" fullscreen :modal-append-to-body=false append-to-body>
<startPacking v-bind="$attrs" v-if="dialogVisible" @closeDialog="closeDialog" />
<startPacking v-bind="$attrs" v-if="dialogVisible" v-on="$listeners" @closeDialog1="closeDialog1" />
</el-dialog>
<!-- 操作 -->
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">保存</el-button>
<el-button type="success" @click="onSubmit(2)" :disabled="isStartCabinet">封柜</el-button>
<el-button type="success" @click="onSubmit(2)" :disabled="isSeal">封柜</el-button>
<el-button @click="cancel">关闭</el-button>
<el-button type="danger" @click="startCabinet" :disabled="isStartCabinet">开始装柜</el-button>
</el-row>
......@@ -68,10 +68,20 @@ export default {
"ldBoxTime",
"ldOutWarehouseTime",
]);
let pictures = oldData.ldPictures;
if (oldData.ldPictures) {
pictures = JSON.parse(oldData.ldPictures);
if (Array.isArray(pictures)) {
pictures = pictures.map((item) => item.url).join(",");
}
}
this.cabinetObj = {
...oldData,
ldWarehouseType:
oldData.ldWarehouseType === 0 ? undefined : oldData.ldWarehouseType,
ldPictures: pictures,
};
},
methods: {
......@@ -87,9 +97,20 @@ export default {
return;
}
}
const { ldPictures } = this.cabinetObj;
let pictures = ldPictures?.split(",") ?? [];
// 兼容手机端数据结构
pictures = pictures.map((item) => {
return {
type: "image",
url: item,
};
});
cabinetCreate({
shipmentId: this.$attrs.shipmentObj.id,
...this.cabinetObj,
ldPictures: JSON.stringify(pictures),
operateType,
}).then((res) => {
serviceMsg(res, this).then(() => {
......@@ -99,7 +120,7 @@ export default {
}
});
},
closeDialog(type) {
closeDialog1(type) {
this.dialogVisible = false;
if (type) this.cancel(type);
},
......@@ -114,6 +135,11 @@ export default {
},
computed: {
isStartCabinet() {
const { currNode, shipmentObj } = this.$attrs;
const status = shipmentObj[currNode.keyName];
return [46, 47].includes(status) ? true : false;
},
isSeal() {
const { currNode, shipmentObj } = this.$attrs;
const status = shipmentObj[currNode.keyName];
return status === 47 ? true : false;
......
......@@ -38,7 +38,7 @@
{{orderData.consignorVO?orderData.consignorVO.company||'':''}}
</el-descriptions-item>
<el-descriptions-item label="发货电话">
{{orderData.consignorVO?(orderData.consignorVO.phone?(orderData.consignorVO.countryCode+orderData.consignorVO.phone):''):''}}
{{orderData.consignorVO?(orderData.consignorVO.phone?("+"+orderData.consignorVO.countryCode+orderData.consignorVO.phone):''):''}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="4">
......@@ -49,7 +49,7 @@
{{orderData.consigneeVO?orderData.consigneeVO.company||'':''}}
</el-descriptions-item>
<el-descriptions-item label="收货电话">
{{orderData.consigneeVO?orderData.consigneeVO.phone?orderData.consigneeVO.countryCode+orderData.consigneeVO.phone :'':''}}
{{orderData.consigneeVO?orderData.consigneeVO.phone?"+"+orderData.consigneeVO.countryCode+orderData.consigneeVO.phone :'':''}}
</el-descriptions-item>
</el-descriptions>
</el-card>
......@@ -117,7 +117,7 @@
</p>
</div>
<div>
<el-button type="primary" @click="addShop">放入</el-button>
<el-button type="primary" :disabled="isAudit" @click="addShop">放入</el-button>
</div>
</div>
<el-table border :data="splitData.orderSplitItemBackVOList">
......@@ -157,7 +157,7 @@
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">移出</el-button>
<el-button size="mini" :disabled="isAudit" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">移出</el-button>
</template>
</el-table-column>
</el-table>
......@@ -168,12 +168,12 @@
<work-flow xmlkey="split_order" v-model="selectedUsers"></work-flow>
</el-row>
<div slot="footer" class="card footer_btn" v-if="orderData.status!=99">
<el-button v-if="orderData.status!=19" type="primary" @click="submitForm">提交申请</el-button>
<el-button v-if="orderData.status!=19" plain type="primary" @click="$emit('closeDialog')">取消</el-button>
<el-button v-if="orderData.status==19" type="primary">审核中</el-button>
<el-button v-if="orderData.status==19" plain type="primary" @click="cancelSplit">取消审核</el-button>
<el-button v-if="orderData.status==19" plain type="primary" @click="$emit('closeDialog')">返回</el-button>
<div slot="footer" class="card footer_btn">
<el-button v-if="!isAudit" type="primary" @click="submitForm">提交申请</el-button>
<el-button v-if="!isAudit" plain type="primary" @click="$emit('closeDialog2')">取消</el-button>
<el-button v-if="isAudit" type="primary" @click="jumpReviewDetail">审核中</el-button>
<el-button v-if="isAudit" plain type="primary" @click="cancelSplit">取消审核</el-button>
<el-button v-if="isAudit" plain type="primary" @click="$emit('closeDialog2')">返回</el-button>
</div>
<!-- 对话框(添加 / 修改) -->
......@@ -196,7 +196,7 @@
{{shopForm.sum||0}}
</el-form-item>
<el-form-item label="放入箱数:" prop="num">
<el-input-number v-model="shopForm.num" controls-position="right" :min="1" :max="shopForm.sum"></el-input-number>
<el-input-number v-model="shopForm.num" controls-position="right" :min="0" :max="shopForm.sum"></el-input-number>
</el-form-item>
<el-form-item label="备注信息:">
<el-input v-model="shopForm.remarks"></el-input>
......@@ -215,15 +215,14 @@
import {
getSplitList,
createSplit,
cancelApply,
createSplitItem,
deleteSplitItem,
} from "@/api/ecw/orderHandle";
import { getTradeCityList } from "@/api/ecw/region";
import WorkFlow from "@/components/WorkFlow";
import { getOrder } from "@/api/ecw/order";
import { serviceMsg } from "../../utils";
import { createApproval } from "@/api/ecw/boxSea";
import { serviceMsg, toReviewDetail } from "../../utils";
import { createApproval, approvalCancel } from "@/api/ecw/boxSea";
export default {
name: "splitOrder",
......@@ -288,13 +287,30 @@ export default {
},
},
},
computed: {
isAudit() {
const { shipmentObj } = this.$attrs;
const { cabinetSplitInfo } = shipmentObj;
if (cabinetSplitInfo) {
/**
* PROCESS(1, "处理中"),
* APPROVE(2, "通过"),
* REJECT(3, "不通过"),
* CANCEL(4, "已取消");
*/
const { approvalStatus } = cabinetSplitInfo;
if (approvalStatus === 1) return true;
}
return false;
},
},
methods: {
/* 拆箱总数 */
totalSplitNum() {
let _total = 0;
const { orderSplitItemBackVOList = [] } = this.splitData;
orderSplitItemBackVOList.forEach((v) => {
_total += Number(v.splitNum);
_total += Number(v.num);
});
return _total;
},
......@@ -405,11 +421,13 @@ export default {
shipmentId: shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then((res) => {
this.$emit("getBoxInfo");
this.getSplit();
});
});
},
addShop() {
this.shopForm = {};
this.shopOpen = true;
},
changeProdTitleZh() {
......@@ -417,7 +435,8 @@ export default {
list = this.currRow.goodsList.filter(
(item) => item.prodTitleZh == this.shopForm.prodTitleZh
);
this.shopForm.sum = list[0].num;
this.shopForm.sum =
this.currRow.num - this.currRow.installNum - this.totalSplitNum();
this.shopForm.orderItemId = list[0].orderItemId;
this.shopForm.prodTitleEn = list[0].prodTitleEn;
},
......@@ -426,7 +445,9 @@ export default {
list = this.orderData.orderItemVOList.filter(
(item) => item.prodTitleEn == this.shopForm.prodTitleEn
);
this.shopForm.sum = list[0].num;
this.shopForm.sum =
this.currRow.num - this.currRow.installNum - this.totalSplitNum();
this.shopForm.orderItemId = list[0].orderItemId;
this.shopForm.prodTitleZh = list[0].prodTitleZh;
},
shopAdd() {
......@@ -440,6 +461,10 @@ export default {
this.$message.error("放入箱数不能大于总箱数");
return;
}
if (this.shopForm.num === 0) {
this.$message.error("放入箱数不能为0");
return;
}
let params = {
num: this.shopForm.num,
......@@ -450,7 +475,6 @@ export default {
createSplitItem(params).then((res) => {
this.$message.success("放入成功");
this.getSplit();
this.shopForm = {};
});
this.shopOpen = false;
}
......@@ -469,11 +493,12 @@ export default {
const { shipmentObj } = this.$attrs;
approvalCancel({
applyReason: "取消审核",
id: shipmentObj["cabinetApprovalInfo"].id,
id: shipmentObj["cabinetSplitInfo"].id,
shipmentId: shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog");
this.$emit("getBoxInfo");
this.getSplit();
});
});
},
......@@ -481,6 +506,11 @@ export default {
this.shopOpen = false;
this.shopForm = {};
},
jumpReviewDetail() {
const { cabinetSplitInfo } = this.$attrs.shipmentObj;
toReviewDetail.apply(this, [cabinetSplitInfo.bpmProcessId]);
this.$emit("closeDialog2", "close");
},
},
};
</script>
......
......@@ -40,7 +40,12 @@
<el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="订单号" align="center" prop="orderNo">
<template slot-scope="scope">
<a href="javascript:void(0);" class="order-href" @click="orderClick(scope.row)">{{ scope.row.orderNo }}</a>
<div>
<a href="javascript:void(0);" class="order-href" @click="orderClick(scope.row)">{{ scope.row.orderNo }}</a>
</div>
<div style="color:blue;fontWeight:bold;">
{{ scope.row.isExternalWarehouse === 1 ? '(外部仓)' : ''}}
</div>
</template>
</el-table-column>
<el-table-column label="货物信息" align="center" prop="goodsList">
......@@ -119,7 +124,7 @@
<div v-if="isUnderReview">
<el-button type="primary" @click="jumpReviewDetail">封柜审核中</el-button>
<el-button plain type="primary" @click="canclAudit">取消审核</el-button>
<el-button plain type="primary" @click="$emit('closeDialog')">返回</el-button>
<el-button plain type="primary" @click="$emit('closeDialog1')">返回</el-button>
</div>
</el-row>
......@@ -154,7 +159,7 @@
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit('modifyForm')">下一步</el-button>
<el-button @click="closeDialog">取消</el-button>
<el-button @click="closeDialog2">取消</el-button>
</el-row>
</template>
<!-- 装柜纠错 -->
......@@ -166,7 +171,7 @@
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit('correctionForm')">提交</el-button>
<el-button @click="closeDialog">取消</el-button>
<el-button @click="closeDialog2">取消</el-button>
</el-row>
</template>
<!-- 批量装柜纠错(订单号) -->
......@@ -178,23 +183,54 @@
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit('orderForm')">提交</el-button>
<el-button @click="closeDialog">取消</el-button>
<el-button @click="closeDialog2">取消</el-button>
</el-row>
</template>
<!-- 装柜批量输入 -->
<template v-if="dialogConfig.type === 'batchInput' && dialogConfig.dialogVisible">
<el-form ref="batchForm" :rules="rules" :model="batchObj" label-position="top">
<el-form-item label="" prop="qrCode">
<el-input type="textarea" :rows="3" v-model="batchObj.qrCode" placeholder="请输入,多个以逗号分隔" clearable />
<el-form ref="batchForm" :rules="rules" :model="batchObj">
<el-form-item label="" prop="qrCode" class="two-element">
<el-input v-model="batchObj.qrCode" placeholder="请输入订单号" clearable />
<el-button style="marginLeft:10px;" type="primary" @click="queryOrderInfo">确定</el-button>
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="订单号">
{{boxOrderInfo.orderNo}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="箱数">
<el-input-number v-if="boxOrderInfo.isExternalWarehouse === 1" v-model="batchObj.boxNum" :min="0" :max="boxOrderInfo.num" />
<template v-else>
{{boxOrderInfo.num}}
</template>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="方数">
{{getTotlContent(boxOrderInfo, ['volume'])}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="重量">
{{getTotlContent(boxOrderInfo, ['weight'])}}
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit('batchForm')">提交</el-button>
<el-button @click="closeDialog">取消</el-button>
<el-button type="primary" :disabled="boxOrderInfo.orderId ? false : true" @click="batchLoad">提交</el-button>
<el-button @click="closeDialog2">取消</el-button>
</el-row>
</template>
<!-- 拆单 -->
<splitOrder v-bind="$attrs" :shipmentObj="shipmentObj" v-if="dialogConfig.type === 'splitOrder' && dialogConfig.dialogVisible" :currRow="currRow" @closeDialog="closeDialog" />
<splitOrder v-bind="$attrs" v-on="$listeners" :shipmentObj="shipmentObj" v-if="dialogConfig.type === 'splitOrder' && dialogConfig.dialogVisible" :currRow="currRow" @closeDialog2="closeDialog2" />
</el-dialog>
</div>
</template>
......@@ -214,6 +250,8 @@ import {
boxUpdate,
approvalCreate,
approvalCancel,
getOrderDetailByBoxNo,
externalLoad,
} from "@/api/ecw/boxSea";
import {
getTotlContent,
......@@ -279,6 +317,8 @@ export default {
// 当前行
currRow: {},
selectedUsers: [],
// 订单信息
boxOrderInfo: {},
};
},
created() {
......@@ -352,6 +392,7 @@ export default {
case "batchInput":
this.$set(this.dialogConfig, "fullscreen", false);
this.batchObj = {};
this.boxOrderInfo = {};
break;
case "correction":
this.$set(this.dialogConfig, "fullscreen", false);
......@@ -372,7 +413,7 @@ export default {
this.$set(this.dialogConfig, "dialogVisible", true);
},
/** 关闭弹窗 */
closeDialog() {
closeDialog2() {
this.$set(this.dialogConfig, "dialogVisible", false);
},
/** 修改提交 */
......@@ -428,7 +469,7 @@ export default {
params.orderNo = this.batchObj.qrCode;
batchCreate(params).then((res) => {
serviceMsg(res, this).then(() => {
this.closeDialog();
this.closeDialog2();
this.getLoadSecGoodsList();
});
});
......@@ -445,14 +486,14 @@ export default {
if (type === "single") {
singleDelete(params).then((res) => {
serviceMsg(res, this).then(() => {
this.closeDialog();
this.closeDialog2();
this.getLoadSecGoodsList();
});
});
} else {
batchDelete(params).then((res) => {
serviceMsg(res, this).then(() => {
this.closeDialog();
this.closeDialog2();
this.getLoadSecGoodsList();
});
});
......@@ -479,12 +520,12 @@ export default {
};
boxUpdate(params).then((res) => {
serviceMsg(res, this);
this.closeDialog();
this.closeDialog2();
});
},
/* 补单完成 */
supplementFinish() {
this.closeDialog();
this.closeDialog2();
this.getLoadSecGoodsList();
},
/* 申请封柜 */
......@@ -497,7 +538,7 @@ export default {
shipmentId: this.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog", "submit");
this.$emit("closeDialog1", "submit");
});
});
},
......@@ -516,14 +557,57 @@ export default {
shipmentId: this.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog", "submit");
this.$emit("closeDialog1", "submit");
});
});
},
/* 跳转详情 */
jumpReviewDetail() {
const { cabinetApprovalInfo } = this.shipmentObj;
toReviewDetail.apply(this, [cabinetApprovalInfo.bpmProcessId]);
this.$emit("closeDialog", "close");
this.$emit("closeDialog1", "close");
},
queryOrderInfo() {
this.$refs["batchForm"].validate((valid) => {
if (valid) {
getOrderDetailByBoxNo({
orderNumCode: this.batchObj.qrCode,
shipmentId: this.shipmentObj.id,
}).then((res) => {
const { data } = res;
this.boxOrderInfo = data;
this.batchObj.boxNum = data.num;
});
}
});
},
batchLoad() {
if (!this.boxOrderInfo.orderId) {
this.$message.error("请输入订单号");
return;
}
if (this.batchObj.boxNum === 0) {
this.$message.error("箱数不能为0");
return;
}
let params = {
boxNum: this.boxOrderInfo.num,
orderId: this.boxOrderInfo.orderId,
orderNo: this.boxOrderInfo.orderNo,
shipmentId: this.shipmentObj.id,
};
if (this.boxOrderInfo.isExternalWarehouse === 1) {
params.boxNum = this.batchObj.boxNum;
}
externalLoad(params).then((res) => {
serviceMsg(res, this).then(() => {
this.closeDialog2();
this.boxOrderInfo = {};
this.getLoadSecGoodsList();
});
});
},
},
computed: {
......
......@@ -30,7 +30,7 @@
<el-date-picker type="datetime" placeholder="请选择日期" v-model="cusDeclarationObj.dcCutOffTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item label="状态" prop="dcCustomsStatus">
<el-radio-group v-model="cusDeclarationObj.dcCustomsStatus" :disabled="inReview">
<el-radio-group v-model="cusDeclarationObj.dcCustomsStatus" :disabled="inReview || isCheckDeal">
<el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_DCCUSTOMS_STATUS)" :key="item.value" :label="item.value">{{item.label}}</el-radio>
</el-radio-group>
</el-form-item>
......@@ -38,14 +38,14 @@
<!-- 查验 -->
<div v-show="cusDeclarationObj.dcCustomsStatus === '3'">
<el-form-item label="查验">
<el-radio-group v-model="cusDeclarationObj.dcCheckStatus" :disabled="inReview">
<el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_CHECK_STATUS)" :key="item.value" :label="item.value">{{item.label}}</el-radio>
<el-radio-group v-model="cusDeclarationObj.dcCheckStatus" :disabled="inReview || isCheckDeal">
<el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_CHECK_STATUS)" :key="item.value" :label="item.value" :disabled="disabledRadio(item)">{{item.label}}</el-radio>
</el-radio-group>
</el-form-item>
</div>
<!-- 退场 -->
<div v-show="cusDeclarationObj.dcCheckStatus === '1' || cusDeclarationObj.dcCheckStatus === '2'">
<div v-show="['1','2','3'].includes(cusDeclarationObj.dcCheckStatus)">
<el-form-item label="查验时间">
<el-date-picker type="datetime" placeholder="请选择日期" v-model="cusDeclarationObj.dcCheckTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
......@@ -55,18 +55,21 @@
<el-form-item label="新封条">
<el-input v-model="cusDeclarationObj.dcStripSeal" placeholder="请输入新封条" clearable />
</el-form-item>
<el-form-item label="退场状态" v-if="cusDeclarationObj.dcCheckStatus === '1' || cusDeclarationObj.dcCheckStatus === '2'">
{{getCheckExamineStatus}}
</el-form-item>
</div>
<!-- 放行 -->
<el-form-item label="放行时间" v-show="cusDeclarationObj.dcCustomsStatus === '2' || cusDeclarationObj.dcCheckStatus === '2'">
<el-form-item label="放行时间" v-show="cusDeclarationObj.dcCustomsStatus === '2' || cusDeclarationObj.dcCheckStatus === '3'">
<el-date-picker type="datetime" placeholder="请选择日期" v-model="cusDeclarationObj.dcPassTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item label="装箱单">
<!-- <el-form-item label="装箱单">
<el-button type="primary">下载装箱单</el-button>
</el-form-item>
</el-form-item> -->
<el-form-item label="报关单">
<el-button type="primary">下载所有报关单</el-button>
<el-button type="primary" @click="downloadCusFile">下载所有报关单</el-button>
</el-form-item>
</el-form>
......@@ -75,8 +78,8 @@
<el-button type="primary" plain @click="canclAudit">{{cusDeclarationObj.dcCheckStatus === '1' ? '取消全部退场审核' : '取消部分退场审核'}}</el-button>
</el-row>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">保存</el-button>
<el-button type="success" v-if="!inReview" @click="onSubmit(2)">提交</el-button>
<el-button type="primary" @click="onSubmit(1)" :disabled="isCheckDeal">保存</el-button>
<el-button type="success" v-if="!inReview" @click="onSubmit(2)" :disabled="isCheckDeal">提交</el-button>
<el-button @click="cancel">关闭</el-button>
<el-button type="primary" @click="extraCost" v-show="cusDeclarationObj.dcCustomsStatus === '2' || cusDeclarationObj.dcCustomsStatus === '3'">额外费用</el-button>
</el-row>
......@@ -143,13 +146,14 @@ import {
extraCostOrder,
extraCostCreate,
extraCostUpdate,
approvalCreate,
approvalCancel,
} from "@/api/ecw/boxSea";
import {
formatNumberString,
formatDateStr,
serviceMsg,
toReviewDetail,
downloadFile,
} from "../utils";
import ImageUpload from "@/components/ImageUpload";
......@@ -260,7 +264,7 @@ export default {
if (["1", "2"].includes(dcCheckStatus)) {
const { checkExamineStatus } = this.shipmentObj;
// 退场审核状态,1-审核中,2-审核成功,3-审核失败,4-取消
if ([0, 3, 4].includes(checkExamineStatus)) {
if ([0, 2, 3, 4].includes(checkExamineStatus)) {
this.$modal
.confirm(
`您确认提交${
......@@ -278,8 +282,9 @@ export default {
this.$emit("getBoxInfo");
});
});
})
.catch(() => {});
});
} else {
this.submitCustomsCreate(operateType);
}
}
}
......@@ -409,19 +414,45 @@ export default {
},
/* 取消审核 */
canclAudit() {
const { currNode, shipmentObj } = this.$attrs;
const { voName } = currNode;
approvalCancel({
applyReason: "取消审核",
id: shipmentObj[voName].id,
shipmentId: shipmentObj.id,
id: this.shipmentObj["customsApprovalInfo"].id,
shipmentId: this.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
// 触发外层重新查询出货信息
this.cancel("close");
this.$emit("getBoxInfo");
});
});
},
/* 判断查验选择是否禁用 */
disabledRadio(item) {
const {
checkExamineStatus,
checkDealStatus,
customsInfo = {},
} = this.shipmentObj;
const { dcCheckStatus } = customsInfo;
// 部分退场状态并且审核通过,退场不可选择
if (
checkExamineStatus === 2 &&
dcCheckStatus === 2 &&
item.value === "1"
) {
return true;
}
return false;
},
/* 下载报关单 */
downloadCusFile() {
downloadFile(
"downloadCustomFiles",
{ shipmentId: this.shipmentObj.id },
`报关单(${this.shipmentObj.selfNo}).xlsx`,
"xlsx"
);
},
},
watch: {
"cusDeclarationObj.dcBoxWgt"(dcBoxWgt) {
......@@ -433,6 +464,14 @@ export default {
"cusDeclarationObj.dcCustomsStatus"(val) {
if (val !== "3") {
this.$set(this.cusDeclarationObj, "dcCheckStatus", "");
} else {
const { customsInfo = {} } = this.shipmentObj;
this.$set(
this.cusDeclarationObj,
"dcCheckStatus",
(customsInfo.dcCheckStatus && String(customsInfo.dcCheckStatus)) ||
"3"
);
}
},
shipmentObj: {
......@@ -448,6 +487,40 @@ export default {
},
},
},
computed: {
/* 获取报关审核退场状态文字 */
getCheckExamineStatus() {
const { checkExamineStatus, customsInfo = {} } = this.shipmentObj;
const { dcCheckStatus } = customsInfo;
if (checkExamineStatus === 1) {
return dcCheckStatus === 1 ? "退场审核中" : "部分退场审核中";
}
if (checkExamineStatus === 2) {
return dcCheckStatus === 1
? "审核通过,退场中"
: "审核通过,部分退场中";
}
return "未审核";
},
/* 判断是否已处理 */
isCheckDeal() {
const {
checkExamineStatus,
checkDealStatus,
customsInfo = {},
} = this.shipmentObj;
const { dcCheckStatus } = customsInfo;
// 退场未处理不能操作
if (
checkExamineStatus === 2 &&
dcCheckStatus === 1 &&
checkDealStatus === 0
) {
return true;
}
return false;
},
},
};
</script>
......
......@@ -120,7 +120,16 @@
<div v-show="!part.fold">
<el-table v-loading="preLoading" border :data="part.sectionGoodsList" @select="(selection)=>checkboxSelect(selection, part)" @select-all="(selection)=>checkboxSelect(selection, part)">
<el-table-column type="selection" align="center" width="55" fixed="left" />
<el-table-column label="订单号" align="center" prop="orderNo" width="120" />
<el-table-column label="订单号" align="center" prop="orderNo" width="120">
<template slot-scope="scope">
<div>
{{scope.row.orderNo}}
</div>
<div style="color:blue;fontWeight:bold;">
{{ scope.row.isExternalWarehouse === 1 ? '(外部仓)' : ''}}
</div>
</template>
</el-table-column>
<el-table-column label="目的地" align="center" prop="destWarehouseName" width="120" />
<el-table-column label="入仓时间" align="center" prop="rucangTime" width="120">
<template slot-scope="scope">
......@@ -205,6 +214,9 @@
<p>重货比:</p>
<p>{{item.weightRatio}}</p>
</div>
<div v-if="item.isExternalWarehouse === 1" style="color:blue;fontWeight:bold;">
<p>外部仓</p>
</div>
<div class="table-button">
<el-dropdown trigger="click" @command="(command)=>handleGoods('all',item,command)">
<el-button type="success" size="small">预装全部</el-button>
......@@ -234,7 +246,7 @@
</el-table-column>
<el-table-column label="包装类型" align="center" prop="">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_PACKAGE_TYPE" :value="scope.row.unit" />
<dict-tag :type="DICT_TYPE.ECW_PACKAGING_TYPE" :value="scope.row.unit" />
</template>
</el-table-column>
<el-table-column label="材质" align="center" prop="material">
......@@ -358,7 +370,7 @@ export default {
operatorData: {},
// 校验
rules: {
noticeUser: [{ required: true, message: "必填", trigger: "change" }],
noticeUser: [{ required: true, message: "目的地操作员必填", trigger: "change" }],
},
// 出货信息
shipmentObj: this.$attrs.shipmentObj,
......@@ -450,21 +462,22 @@ export default {
},
/** 提交 */
onSubmit() {
this.$refs["operatorForm"].validate((valid) => {
if (valid) {
approvalCreate({
...this.operatorData,
applyReason: "预装审核",
approvalStatus: 0,
approvalType: 1, // 预装
copyUserId: this.selectedUsers,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog", "submit");
});
});
this.$refs["operatorForm"].validate((valid, errors) => {
if (!valid) {
return this.$showFormValidateErrors(errors);
}
approvalCreate({
...this.operatorData,
applyReason: "预装审核",
approvalStatus: 0,
approvalType: 1, // 预装
copyUserId: this.selectedUsers,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog", "submit");
});
});
});
},
/* 统计列 */
......
......@@ -28,7 +28,16 @@
<el-table border :data="tallyList" @select="checkboxSelect" @select-all="checkboxSelect" max-height="600px">
<el-table-column type="selection" align="center" width="55" fixed="left" />
<el-table-column type="index" align="center" label="序号" width="50" />
<el-table-column label="订单号" align="center" prop="orderNo" />
<el-table-column label="订单号" align="center" prop="orderNo">
<template slot-scope="scope">
<div>
{{scope.row.orderNo}}
</div>
<div style="color:blue;fontWeight:bold;">
{{ scope.row.isExternalWarehouse === 1 ? '(外部仓)' : ''}}
</div>
</template>
</el-table-column>
<el-table-column label="商品信息" width="250px" align="center" prop="prodTitleZh">
</el-table-column>
<el-table-column label="备案" align="center" prop="productRecord">
......
......@@ -286,7 +286,7 @@ export default {
}
}
.arrow-area {
margin: 0 10px;
margin: 0 6px;
}
}
}
......
import dayjs from "dayjs";
import * as _BOX from "@/api/ecw/box";
import FileSaver from "file-saver";
/**
* 节点状态值
......@@ -442,7 +444,7 @@ function seaBaseData() {
*
* @return {*}
*/
function seaAirBaseData() {
function seaAirBaseData() {
return [
[
{
......@@ -1492,6 +1494,19 @@ function toReviewDetail(bpmProcessId) {
});
}
function downloadFile(funName, params, fileName, fileFormat) {
_BOX[funName](params).then((res) => {
let blob = new Blob([res], { type: `application/${fileFormat}` });
FileSaver.saveAs(blob, fileName);
});
}
function downloadFileByUrl(funName, params) {
_BOX[funName](params).then((res) => {
if (res.data) FileSaver.saveAs(res.data);
});
}
export {
getStatusName,
getColmnMapping,
......@@ -1508,4 +1523,6 @@ export {
sumStatistics,
serviceMsg,
toReviewDetail,
downloadFile,
downloadFileByUrl,
};
......@@ -26,7 +26,7 @@
</el-card>
<!-- 海运流程图 -->
<seaProcess :seaBaseData="seaAirBaseData" :shipmentObj="shipmentObj" width="66px" height="66px" :allSupplier="allSupplier" :allDocks="allDocks" :allUsers="allUsers" :warehouseList="warehouseList" @getBoxInfo="getBoxInfo" />
<seaProcess :seaBaseData="seaAirBaseData" :shipmentObj="shipmentObj" width="50px" height="50px" :allSupplier="allSupplier" :allDocks="allDocks" :allUsers="allUsers" :warehouseList="warehouseList" @getBoxInfo="getBoxInfo" />
<!-- 海运步骤图 -->
<seaStepDetail :seaBaseData="seaAirBaseData" :shipmentObj="shipmentObj" :allSupplier="allSupplier" :allDocks="allDocks" :allUsers="allUsers" :warehouseList="warehouseList" />
......
......@@ -103,7 +103,7 @@
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户经理')" prop="customerService">
<el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')">
<el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')" :disabled="customerId !== '0' && form.customerService">
<el-option v-for="item in serviceUserList"
:key="item.id" :label="item.nickname" :value="item.id" />
</el-select>
......@@ -282,7 +282,7 @@
>
<template v-slot = "{row}">
<el-form-item label="">
<el-select v-model="row.userid" @change="selectBD" size="mini">
<el-select v-model="row.userid" @change="selectBD" size="mini" filterable>
<el-option v-for="(item,index) in memberList" :value="item.id" :key="item.id" :label="item.nickname + '(' + item.mobile + ')'" ></el-option>
</el-select>
</el-form-item>
......@@ -431,16 +431,17 @@ export default {
},
created() {
this.reset()
if(this.customerId !== '0') {
// 编辑客户
this.getCustomer(this.customerId).then(() => {
getCustomerContactsListByCustomer({customerId: this.customerId}).then(r => {
this.form.customerContacts = r.data
})
})
} else {
const obj = Object.assign({}, this.$route, { title: this.$t('自定义标题') })
this.$tab.updatePage(obj);
this.$tab.updatePage({...this.$route, meta: {...this.$route.meta, name: 'abc'}})
// 新建客户
this.handleAddContact()
}
getNodeList().then(r => {
......@@ -664,6 +665,7 @@ export default {
createTime: undefined,
isShowTidanPrice:true,
};
this.form.createTime = (new Date()).getTime()
this.resetForm("form");
},
getCustomer(id) {
......
......@@ -20,10 +20,10 @@
<el-descriptions-item :label="$t('结算方式')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_BALANCE, customer.balance) }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户生日')">{{ parseTime(customer.birthday, '{y}-{m}-{d}') }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户等级')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_LEVEL, customer.level) }}</el-descriptions-item>
<el-descriptions-item :label="$t('国家')">{{ getDictDataLabel(DICT_TYPE.COUNTRY, customer.country) }}</el-descriptions-item>
<el-descriptions-item :label="$t('国家')">{{ country }}</el-descriptions-item>
<!-- <el-descriptions-item :label="$t('业务员')">{{ customer }}</el-descriptions-item>-->
<el-descriptions-item :label="$t('客户来源')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_SOURCE, customer.source) }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户类别')">{{ getDictDataLabel(DICT_TYPE.CUSTOMER_TYPE, customer.type) }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户类别')">{{ getDictDatas2(DICT_TYPE.CUSTOMER_TYPE, customer.type.split(',')).map(e => e.label).join(', ') }}</el-descriptions-item>
<!-- <el-descriptions-item :label="$t('联系方式')">{{ customer }}</el-descriptions-item>-->
<el-descriptions-item :label="$t('推介人')">{{ promoter }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户经理')">{{ customerService }}</el-descriptions-item>
......@@ -73,13 +73,15 @@
</template>
</el-table-column>
<el-table-column
prop="username"
prop="userid"
:label="$t('关联账号')"
:formatter="userIdFormatter"
>
</el-table-column>
<el-table-column
prop="social"
:label="$t('社交软件')"
:formatter="(row, column, cellValue) => getDictDataLabel(DICT_TYPE.SOCIAL, cellValue)"
>
</el-table-column>
<el-table-column
......@@ -404,9 +406,9 @@ import {
orderStatistics,
creditLogCreate,
creditScoreStatistic,
infoListReceiptPage
infoListReceiptPage, userMemberUserList
} from '@/api/ecw/customer'
import { DICT_TYPE, getDictDataLabel } from '@/utils/dict'
import { DICT_TYPE, getDictDataLabel, getDictDatas2 } from '@/utils/dict'
import { getProductTypeList } from '@/api/ecw/productType'
import { getNodeList } from '@/api/ecw/node'
import CustomerFollow from "@/components/CustomerFollow"
......@@ -417,6 +419,7 @@ import { getCustomerContactsListByCustomer } from '@/api/ecw/customerContacts'
import {getOrderPage} from "@/api/ecw/order";
import Template from "@/views/cms/template";
import {getCreditRulePage} from "@/api/customer/creditRule";
import {getCountry} from "@/api/ecw/country"
export default {
name: 'query',
......@@ -442,6 +445,10 @@ export default {
getCustomerContactsListByCustomer({customerId: this.id}).then(r => {
this.customerContacts = r.data
})
getCountry(this.customer.country).then(r => {
this.country = r.data.nameZh
})
})
getProductTypeList().then(r => {
this.productTypeList = r.data
......@@ -461,6 +468,10 @@ export default {
this.getOrderStatistics()
this.creditScoreStatisticFn()
this.infoListReceiptFn()
userMemberUserList().then(r => {
this.memberList = r.data
})
},
data() {
return {
......@@ -476,12 +487,14 @@ export default {
dialogVisible:false,
DICT_TYPE,
getDictDataLabel,
getDictDatas2,
parseTime,
nodeList: [],
productTypeList: [],
customerSelect: [],
serviceUserList: [],
customerContacts: [],
memberList: [],
customer: {
id: undefined,
number: undefined,
......@@ -559,7 +572,8 @@ export default {
pageNo:1,
pageSize:10,
},
infoListReceiptTotal:0
infoListReceiptTotal:0,
country: ''
}
},
computed: {
......@@ -591,6 +605,14 @@ export default {
}
},
methods:{
userIdFormatter(row, column, cellValue){
const member = this.memberList.find(e => e.id === cellValue)
if (member) {
return member.nickname + '(' + member.mobile + ')'
} else {
return ''
}
},
changeDate(val){
if(val){
this.queryParams.houseStartDate = val[0];
......
......@@ -84,7 +84,6 @@
label-width="0"
style="margin-bottom: 0"
prop="remark"
:rules="{ required: true, trigger: ['blur', 'change'], message: '备注不能为空' }"
>
<el-input v-model="form.remark" placeholder="备注"></el-input>
</el-form-item>
......@@ -136,7 +135,9 @@
</el-table-column>
<el-table-column label="优惠金额" align="center">
<template slot-scope="scope">
{{ scope.row.discountTotal ? `${scope.row.discountTotal}(${scope.row.discountRemark})` : 0 }}
<span> {{ scope.row.discountTotal ? `${scope.row.discountTotal}`:0}}</span>
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="scope.row.currencyId" />
<span>{{scope.row.discountRemark?('('+scope.row.discountRemark+')'): '' }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
......@@ -608,10 +609,10 @@
{{ selectListRow.totalAmount - (discountForm.discountTotal || 0) }}
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_PRICE_UNIT" :value="selectListRow.currencyId" />
</el-form-item>
<el-form-item label="操作人">
<el-form-item v-if="opnotice" label="操作人">
{{ discountForm.author }}
</el-form-item>
<el-form-item label="操作时间">
<el-form-item v-if="opnotice" label="操作时间">
{{ discountForm.time }}
</el-form-item>
</el-form>
......@@ -657,6 +658,7 @@ export default {
list: [],
// fileList: [],
orderData: [],
opnotice:false,
dialogTableKey: 0,
total: 0,
headers: {
......@@ -1022,12 +1024,23 @@ export default {
this.$set(this.discountForm, 'discountTotal', res.data.discountTotal)
this.$set(this.discountForm, 'discountRemark', res.data.discountRemark)
this.$set(this.discountForm, 'author', res.data.creatorName)
this.opnotice = true
}else{
this.opnotice = false
}
})
},
saveDiscount() {
console.log(this.discountForm)
// this.selectListRow.id
if (this.discountForm.discountTotal === 0||!this.discountForm.discountTotal) {
this.$modal.msgError("优惠金额不能为空");
return
}
if (this.discountForm.discountRemark === 0||!this.discountForm.discountRemark) {
this.$modal.msgError("优惠原因不能为空");
return
}
const params = {
id: this.selectListRow.id,
discountTotal: this.discountForm.discountTotal,
......@@ -1075,7 +1088,8 @@ export default {
this.open = false;
},
submitForm(addType) {
const params = {...this.form, addType}
const params = {...this.form}
params.addType = addType
params.receiptAccountList.length = params.receiptAccountList.length - 1
params.receiptAccountList.map(v => {
delete v.discountTotal
......@@ -1086,8 +1100,7 @@ export default {
delete params.receivableDetail
if (this.list && this.list.length > 0) {
params.receivableVOList = this.list
}
if (params.receivableVOList.length === 0) {
}else{
this.$modal.msgError("请添加未收客户款项");
return
}
......@@ -1130,6 +1143,7 @@ export default {
if (valid) {
this.saveBtnLoading = true
if (this.id && this.id !== '0') {
if(params.state==0) params.state = 1
updateReceipt(params).then(res => {
this.$modal.msgSuccess("修改成功");
this.$router.back();
......
......@@ -100,14 +100,12 @@
label-width="0"
style="margin-bottom: 0"
prop="supplierBankAccount"
required
error="请选择收款账户"
>
<el-select v-model="form.supplierBankAccount" placeholder="请选择收款账户">
<el-select v-model="form.supplierBankAccount" @change="selectChangeBank" placeholder="请选择收款账户">
<el-option
v-for="item in bankData"
:key="item.id"
:label="item.baAccountName + '(' + item.baAccountNum + ')'"
:label="item.bankName + '(' + item.bankAccount+ ')'"
:value="item.id"
/>
</el-select>
......@@ -414,10 +412,9 @@ import { DICT_TYPE } from "@/utils/dict";
import { getToken } from "@/utils/auth";
import { getChannelList } from "@/api/ecw/channel";
import CustomerSelector from "@/components/CustomerSelector";
import { getBankAccountPage } from "@/api/ecw/bankAccount";
import { listSimpleDepts } from "@/api/system/dept";
import { getTradeCityList } from "@/api/ecw/region";
import { getSupplierPage } from "@/api/ecw/supplier";
import { getSupplierPage,getSupplier } from "@/api/ecw/supplier";
import { getPayableList, getPayableInfoByIds, createPayment, getPaymentInfoByIds, getPaymentItem, updatePayment } from "@/api/ecw/financial"
export default {
name: "CreatPayment",
......@@ -482,9 +479,9 @@ export default {
listSimpleUsers().then((res) => (that.creatorData = res.data));
getChannelList().then((res) => (that.channelList = res.data));
getTradeCityList().then((res) => (that.tradeCityList = res.data));
getBankAccountPage(that.params).then(
(res) => (that.bankData = res.data.list)
);
// getBankAccountPage(that.params).then(
// (res) => (that.bankData = res.data.list)
// );
getSupplierPage({ pageNo: "1", pageSize: "10000" }).then((res) => {
const { data } = res;
this.allSupplier = data.list;
......@@ -558,6 +555,10 @@ export default {
if (this.list && this.list.length > 0) {
params.payableReqVOList = [...this.list]
}
if(!params.supplierBankAccount){
this.$modal.msgError("请选择供应商银行账号");
return
}
if (params.payableReqVOList.length === 0) {
this.$modal.msgError("请选择供应商未付款项");
return
......@@ -585,6 +586,10 @@ export default {
if (this.list && this.list.length > 0) {
params.payableReqVOList = [...this.list]
}
if(!params.supplierBankAccount){
this.$modal.msgError("请选择供应商银行账号");
return
}
if (params.payableReqVOList.length === 0) {
this.$modal.msgError("请选择供应商未付款项");
return
......@@ -593,9 +598,24 @@ export default {
}
})
},
selectChangeBank(val){
this.$forceUpdate()
console.log(this.form.supplierBankAccount)
},
selectChange(val) {
this.bankData = []
// this.form.supplierBankAccount=''
if(val){
getSupplier(val).then((res)=>{
this.bankData = res.data.bankList
this.form.supplierBankAccount=''
})
}
const t = this.allSupplier.find(v => v.id == val)
t && (this.form.supplierName = t.companyZh)
// t && (this.bankData = t.bankList)
},
handleQuery() {},
handleSelectionChange(val) {
......@@ -635,7 +655,7 @@ export default {
var chineseStr = '';
//分离金额后用的数组,预定义
var parts;
// 传入的参数为空情况
// 传入的参数为空情况
if(money === '') {
return '';
}
......@@ -643,7 +663,7 @@ export default {
if(money >= maxNum){
return ''
}
// 传入的参数为0情况
// 传入的参数为0情况
if (money === 0) {
chineseStr = cnNums[0] + cnIntLast + cnInteger;
return chineseStr
......@@ -678,7 +698,7 @@ export default {
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if(m == 0 && zeroCount < 4){
chineseStr += cnIntUnits[q];
chineseStr += cnIntUnits[q];
}
}
// 最后+ 元
......
<template>
<el-dialog visible :close-on-click-modal="false" :before-close="closeDialog" :title="$t('佣金规则申请')">
<el-form ref="form" :model="form" label-width="80px" :rules="rules" :disabled="!!form.applyStatus">
<el-form ref="form" :model="form" label-width="80px" :rules="rules" :disabled="form.applyStatus == 1">
<el-form-item :label="$t('商品类型')">
<span>{{ getProductTypeNameById(form.productType) }}</span>
</el-form-item>
......
......@@ -105,7 +105,7 @@
<el-table-column :label="$t('件数')" width="90px" prop="num" />
<el-table-column :label="$t('包装单位')">
<template slot-scope="scope">
<dict-tag :value="scope.row.unit" :type="DICT_TYPE.ECW_PACKAGE_TYPE" defaultable />
<dict-tag :value="scope.row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" defaultable />
</template>
</el-table-column>
<el-table-column :label="$t('箱规(m)')" width="120px" prop="boxGauge" />
......
......@@ -75,7 +75,7 @@
</el-descriptions>
<el-descriptions :column="3" border>
<el-descriptions-item :label="$t('收货人')" :labelStyle="labelStyle">
<el-form-item label="" label-width="0" style="margin-bottom: 0" prop="consigneeId" required :error="$t('收货人不能为空')">
<customer-contact-selector v-model="form.consigneeId" @change="consignee = $event" type="2" />
</el-form-item>
......@@ -90,7 +90,7 @@
{{consignee.email || this.$t('')}}
</el-descriptions-item>
</el-descriptions> -->
<div class="form-section">
<el-form-item :label="$t('运输方式')" prop="transportId">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" @input="calculationPrice" class="w-200"/>
......@@ -174,7 +174,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column :label="$t('件数')" width="90px">
<template slot-scope="{row}">
<el-input v-model.number="row.num" @input="calculationPrice" :disabled="!canAddProduct" />
......@@ -182,7 +182,7 @@
</el-table-column>
<el-table-column :label="$t('包装单位')">
<template slot-scope="{row}">
<dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGE_TYPE" defaultable @input="calculationPrice" :disabled="!canAddProduct" />
<dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" defaultable @input="calculationPrice" :disabled="!canAddProduct" />
</template>
</el-table-column>
<el-table-column :label="$t('数量') + '(个)'">
......@@ -263,7 +263,7 @@
</template>
</el-table-column>
</el-table>
<!--
<!--
</el-card>
<el-card class="mt-10"> -->
<div class="card-title" style="padding:20px 0;">{{$t('合计')}}</div>
......@@ -280,7 +280,7 @@
<el-descriptions-item label="总数量">
{{sum.totalQuatity.toFixed() || 0}}
</el-descriptions-item>
<el-descriptions-item :label="$t('总货值') + '(RMB)'">
{{sum.totalWorth.toFixed() || 0}}{{$t('元')}}
</el-descriptions-item>
......@@ -289,7 +289,7 @@
<el-card class="mt-10">
<div class="card-title" slot="header">{{$t('预计费用')}}</div>
<el-descriptions :column="5" border>
<el-descriptions-item :label="$t('保价费')">
{{fee.insuranceFee || 0}} {{$t('美元')}}
......@@ -316,7 +316,7 @@
</el-descriptions-item>
</el-descriptions>
<div class="card-title" style="padding:20px 0;">{{$t('优惠信息')}}</div>
<el-table :data="couponList" :show-header="false">
<el-table-column label="">
......@@ -337,7 +337,7 @@
</el-table-column>
<el-table-column label="">
<template slot-scope="{row}">
-{{row.reduceAmount}}
-{{row.reduceAmount}}
{{currencyMap[row.reduceCurrencyId]}}
</template>
</el-table-column>
......@@ -361,7 +361,7 @@
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="mt-10">
<div class="card-title" slot="header">{{$t('通用')}}</div>
<div class="form-section">
......@@ -369,7 +369,7 @@
<el-input v-model="form.marks" placeholder="" class="w-200"></el-input>
</el-form-item>
</div>
<div class="form-section">
<div class="form-section">
<el-form-item :label="$t('报关方式')" prop="customsType">
<dict-selector :type="DICT_TYPE.ECW_CUSTOMS_TYPE" v-model="form.customsType" form-type="radio" defaultable />
</el-form-item>
......@@ -398,7 +398,7 @@
<el-date-picker v-model="form.endTime" placeholder="" value-format="yyyy-MM-dd HH:mm:ss" class="w-200"></el-date-picker>
</el-form-item>
</div>
<div class="form-section">
<el-form-item :label="$t('交货方式')">
<!--
......@@ -406,7 +406,7 @@
FOB(离岸价),CIF(到岸价),CNF(成本加运费),EXW(出厂价)
-->
<dict-selector :type="DICT_TYPE.ECW_TRADE_TYPE" fomtter="number" v-model="form.tradeType" class="w-200"/>
</el-form-item>
<el-form-item :label="$t('交货地址')">
<el-input v-model="form.tradeAdress" placeholder="港口或地点"></el-input>
......@@ -433,7 +433,7 @@
</el-select> -->
<supplier-selector v-model="form.transportVO.airlineCompany" companyType="10" />
</el-form-item>
<el-form-item :label="$t('船公司')" v-if="[2].indexOf(+form.transportId) > -1">
<!-- <el-select placeholder="" v-model="form.shippingCompany">
</el-select> -->
......@@ -462,12 +462,12 @@
<el-input v-model="form.transportVO.packageRemarks" ></el-input>
</el-form-item>
</el-card>
<el-form-item label="" class="mt-20">
<!-- 非草稿状态显示为编辑按钮 -->
<el-button v-if="form.offerId && form.status != 2" type="primary" @click="submitForm(2)">{{$t('编辑')}}</el-button>
<template v-else>
<el-button type="primary" @click="submitForm(2)">{{$t('保存草稿')}}</el-button> <!-- 草稿 -->
<el-button type="primary" @click="submitForm(3)">{{$t('确认报价')}}</el-button> <!-- 需求确认 -->
......@@ -714,7 +714,7 @@ export default {
}
arr.push(it)
})
// 没有累加保价费(没有美元计价)但是有保价费则需要加上去
if(!withInsuranceFee && this.fee && this.fee.insuranceFee){
arr.push({
......@@ -771,7 +771,7 @@ export default {
},
'form.lineId'(lineId){
let router = this.routerList.find(item => item.id == lineId)
if(!router) return
if(!router) return
this.$set(this.form, 'departureId', router.startCityId)
this.$set(this.form, 'objectiveId', router.destCityId)
},
......@@ -869,7 +869,7 @@ export default {
titleEn: product.titleEn
})
}
this.calculationPrice()
},
onLineChange(row){
......@@ -934,14 +934,14 @@ export default {
if (!valid) {
return this.$showFormValidateErrors(errors)
}
this.form.prodCreateReqVOList.map(item => {
item.prodAttrIds = item.prodAttrArr.join(',')
item.lineId = this.form.lineId
item.channelId = this.form.channelId
item.transportId = this.form.transportId
})
// 修改的提交
if (this.form.offerId != null) {
let data = Object.assign({}, this.form, {
......@@ -986,9 +986,9 @@ export default {
})
if(this.calculating || !calcable) return false
this.calculating = true
console.log('calculationPrice')
calculationPrice({
lineId: this.form.lineId,
transportId: this.form.transportId,
......@@ -1005,8 +1005,8 @@ export default {
this.$set(this, 'couponTotalAmountList', res.data.availableDto.couponTotalAmountList)
this.$set(this, 'couponAvailableGroupDtoList', res.data.availableDto.couponAvailableGroupDtoList)
}
this.form.prodCreateReqVOList.map((item, index) => {
this.$set(item, 'fee', res.data.prodCostDtoList[index] || null)
})
......@@ -1049,9 +1049,9 @@ export default {
cursor: pointer;
}
}
}
::v-deep .product-list .el-form-item__error{
position: static;
}
</style>
\ No newline at end of file
</style>
......@@ -40,7 +40,7 @@
<el-table-column
:label="$t('包装')">
<template v-slot="{row}">
<dict-tag :value="row.unit" :type="DICT_TYPE.ECW_PACKAGE_TYPE" />
<dict-tag :value="row.unit" :type="DICT_TYPE.ECW_PACKAGING_TYPE" />
</template>
</el-table-column>
......@@ -95,7 +95,7 @@
</el-table-column>
</el-table>
<!-- <div style="text-align: center;margin-top: 80px">
<el-button type="primary">申请重货优惠</el-button>
<el-button type="primary">申请泡货优惠</el-button>
......
......@@ -69,7 +69,7 @@
</el-table-column>
<el-table-column label="操作">
<template v-slot:default='scope'>
<el-button type="text" @click ="guanlianOrderByOrderId(scope.row.orderId)">
<el-button type="text" @click ="guanlianOrderByOrderId(scope.row.relateOrderId)">
移出
</el-button>
</template>
......
......@@ -124,15 +124,17 @@
<!--已全部放货,但是未复核-->
<template v-if="scope.row.cargoControlStatus == 1 && scope.row.isToReview">
<el-button type="text" size="mini" @click="review(scope.row)">{{$t('放货复核')}}</el-button>
<el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('修改')}}</el-button>
<el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('取消')}}</el-button>
</template>
<!--已完成放货,没有待复核;真正的放货完成-->
<!--已完成放货,没有待复核;真正的放货完成-->
<template v-if="scope.row.cargoControlStatus == 1 && !scope.row.isToReview">
<!-- <el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('查看')}}</el-button> -->
<el-button type="text" size="mini" @click="cargoTransfer(scope.row)" >{{$t('调货')}}</el-button>
<el-button type="text" size="mini" @click="showFallbackOrder=scope.row" v-if="scope.row.isReleaseAfterGoods">{{$t('反复核')}}</el-button>
</template>
<el-button type="text" size="mini" @click="toDetail(scope.row)" >{{$t('查看')}}</el-button>
</template>
</el-table-column>
</el-table>
......
<!--拆单审核中的申请信息部分-->
<template>
<div v-if="detail && order">
<el-descriptions :column="4" v-if="order" :colon="false">
<el-descriptions-item :label="$t('订单号')">{{order.orderNo}}</el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')">
<dict-tag class="mr-10" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" />
</el-descriptions-item>
<el-descriptions-item :label="$t('出货方式')">
{{channel ? channel.nameZh : '/'}}
</el-descriptions-item>
<el-descriptions-item :label="$t('订单状态')">
{{order.statusMsg}}
</el-descriptions-item>
<el-descriptions-item :label="$t('唛头')">{{order.marks}}</el-descriptions-item>
<el-descriptions-item :label="$t('始发仓')">
{{order.logisticsInfoDto.startTitleZh}}
</el-descriptions-item>
<el-descriptions-item :label="$t('目的仓')" :span="2">
{{order.logisticsInfoDto.destAddressZh}}
</el-descriptions-item>
<!-- 提单审核 -->
<el-descriptions-item v-if="path == 'order_landing_bill'">
<el-button type="primary" @click="getBillOfLandingInProcessing">查看提单</el-button>
</el-descriptions-item>
</el-descriptions>
<PrintLandingBill :order-id="order.orderId" v-if="ShowLandingBill" @close="ShowLandingBill=false"/>
</div>
</template>
<script>
import {getOrder, getApproval} from '@/api/ecw/order'
import {getChannel} from '@/api/ecw/channel'
import {getBillOfLandingInProcessing, getBillService} from '@/api/ecw/box'
/*
优惠申请 1
管理优惠 2
佣金设置 3
重货优惠 4
泡货优惠 5
拆单申请 6
控货订单放货修改 7
控货订单反复核 8
控货订单已放货记录调货审批 9
控货订单取消放货 10
合单申请 11
费用申请 12
调仓申请 13
订单修改 14
预装审核 18
封柜审核 19
入仓修改 22
退仓 23
*/
export default {
name: 'OrderApprovalDetail',
props:{
id: [String, Number],
path: String
},
components:{
PrintLandingBill: () => import('./PrintLadingBill.vue')
},
data(){
return {
detail: null,
order: null,
channel: null,
ShowLandingBill: false
}
},
watch:{
id(){
this.getData()
},
detail(){
this.getOrder()
},
order(){
if(this.order.channelId){
this.getChannel()
}
}
},
created(){
if(this.id){
this.getData()
}
},
methods:{
getData(){
getApproval(this.id).then(res => {
this.detail = JSON.parse(res.data.details)
})
},
getOrder(){
getOrder(this.detail.orderId).then(res => {
this.order = res.data
})
},
getChannel(){
getChannel(this.order.channelId).then(res => {
this.channel = res.data
})
},
getBillService(){
},
getBillOfLandingInProcessing(){
getBillOfLandingInProcessing({orderId: this.detail.orderId}).then(res => {
console.log(res)
})
}
}
}
</script>
<style scoped lang="scss">
.title{
padding: 10px 0;
span{
font-size: 14px;
font-weight: bold;
}
}
</style>
\ No newline at end of file
<!--拆单审核中的申请信息部分-->
<template>
<div v-if="order">
<el-descriptions :column="4" v-if="order" :colon="false">
<el-descriptions-item :label="$t('订单号')">{{order.orderNo}}</el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')">
<dict-tag class="mr-10" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" />
</el-descriptions-item>
<el-descriptions-item :label="$t('出货方式')">
{{channel ? channel.nameZh : '/'}}
</el-descriptions-item>
<el-descriptions-item :label="$t('订单状态')">
{{order.statusMsg}}
</el-descriptions-item>
<el-descriptions-item :label="$t('唛头')">{{order.marks}}</el-descriptions-item>
<el-descriptions-item :label="$t('始发仓')">
{{order.logisticsInfoDto.startTitleZh}}
</el-descriptions-item>
<el-descriptions-item :label="$t('目的仓')" :span="2">
{{order.logisticsInfoDto.destAddressZh}}
</el-descriptions-item>
<!-- 提单审核 -->
<el-descriptions-item>
<el-button type="primary" @click="ShowLandingBill=true">查看提单</el-button>
</el-descriptions-item>
</el-descriptions>
<el-dialog title="查看提单" :visible.sync="ShowLandingBill">
<div style="text-align:center; width: 600px; margin: auto" v-html="billContent" />
</el-dialog>
</div>
</template>
<script>
import {getOrder} from '@/api/ecw/order'
import {getChannel} from '@/api/ecw/channel'
import {getBillService} from '@/api/ecw/box'
export default {
name: 'OrderLandingBill',
props:{
id: [String, Number],
path: String
},
data(){
return {
order: null,
channel: null,
ShowLandingBill: false,
billContent: null
}
},
watch:{
order(){
if(this.order.channelId){
this.getChannel()
}
}
},
created(){
if(this.id){
getBillService({id: this.id}).then(res => {
this.billContent = res.data.billContent
return getOrder(res.data.orderId)
}).then(res => {
this.order = res.data
})
}
},
methods:{
getChannel(){
getChannel(this.order.channelId).then(res => {
this.channel = res.data
})
}
}
}
</script>
<style scoped lang="scss">
.title{
padding: 10px 0;
span{
font-size: 14px;
font-weight: bold;
}
}
</style>
\ No newline at end of file
......@@ -22,7 +22,7 @@ export default {
components: {PdfViewer},
filters: {parseTime},
props:{
transportType: Number,
//transportType: Number,
// tidanNO: [String, Number],
orderId: String
},
......@@ -45,11 +45,11 @@ export default {
}
return t
},
type(){
/* type(){
if(this.transportType <= 2) return 1
if(this.transportType == 3) return 3
if(this.transportType == 4) return 2
}
} */
},
created(){
this.show = true
......@@ -60,6 +60,7 @@ export default {
this.loading = true
downloadByOrderId(this.orderId)
.then(arrayBuffer => {
console.log({arrayBuffer})
this.pdfData = arrayBuffer
})
.finally(() => {
......
<!--订单修改审核的申请信息部分-->
<template>
<div v-if="order">
<el-descriptions :column="4" v-if="order" :colon="false">
<el-descriptions-item :label="$t('订单号')">{{order.orderNo}}</el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')">
<dict-tag class="mr-10" :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" />
</el-descriptions-item>
<el-descriptions-item :label="$t('出货方式')">
{{channel ? channel.nameZh : '/'}}
</el-descriptions-item>
<el-descriptions-item :label="$t('订单状态')">
{{order.statusMsg}}
</el-descriptions-item>
<el-descriptions-item :label="$t('唛头')">{{order.marks}}</el-descriptions-item>
<el-descriptions-item :label="$t('始发仓')">
{{order.logisticsInfoDto ? $l(order.logisticsInfoDto, 'startTitle') : '-'}}
</el-descriptions-item>
<el-descriptions-item :label="$t('目的仓')" :span="2">
{{order.logisticsInfoDto ? $l(order.logisticsInfoDto, 'destAddress') : '-'}}
</el-descriptions-item>
<el-descriptions-item :label="$t('申请理由')" :span="4">
<div>
<div v-for="(item, index) in order.applyInfoList" :key="index">
{{index+1}}{{item.name}} {{$t('从旧的【{orgValue}】改成新的【{newValue}', {orgValue: item.orgValue, newValue: item.newValue })}}
</div>
</div>
</el-descriptions-item>
</el-descriptions>
</div>
</template>
<script>
import {getOrder, getUpdateInfoByApproveId} from '@/api/ecw/order'
import {getChannel} from '@/api/ecw/channel'
import {getBillOfLandingInProcessing, getBillService} from '@/api/ecw/box'
export default {
name: 'OrderApprovalDetail',
props:{
id: [String, Number],
path: String
},
components:{
PrintLandingBill: () => import('./PrintLadingBill.vue')
},
data(){
return {
order: null,
channel: null
}
},
watch:{
id(){
this.getData()
},
order(){
if(this.order.channelId){
this.getChannel()
}
}
},
created(){
if(this.id){
this.getData()
}
},
methods:{
getData(){
getUpdateInfoByApproveId(this.id).then(res => {
this.order = res.data
})
},
getChannel(){
getChannel(this.order.channelId).then(res => {
this.channel = res.data
})
}
}
}
</script>
<style scoped lang="scss">
.title{
padding: 10px 0;
span{
font-size: 14px;
font-weight: bold;
}
}
</style>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
......@@ -138,7 +138,12 @@
<template v-else>{{row.sumVolume}}m³ /{{row.sumWeight}}Kg</template>
</template>
</el-table-column>
<el-table-column :label="$t('始发仓')" align="center" prop="departureName" />
<el-table-column :label="$t('始发仓')" align="center" prop="departureName">
<template slot-scope="{row}">
{{row.departureName}}
<template v-if="row.isExternalWarehouse">({{$t('外部仓')}})</template>
</template>
</el-table-column>
<el-table-column :label="$t('运输方式/目的地')" align="center" prop="transportId">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId" /> / {{row.objectiveName}}
......@@ -172,7 +177,7 @@
exclude(scope.row.abnormalState, [1 ,99 ,2 ,3 ,4 ,9 ,10 ,11 ,12 ,14]) &&
exclude(scope.row.status, [20,21]) &&
exclude(scope.row.shipmentState, [320,322,323]) &&
(exclude(scope.row.inWarehouseState, [ 212, 218, 213, 214, 215]) && exclude(scope.row.status, [5,8]) )
exclude(scope.row.inWarehouseState, [ 212, 218, 213, 214, 215])
">
<el-dropdown-item @click.native="handleUpdate(scope.row)" v-hasPermi="['ecw:order:update']" >{{$t('编辑')}}</el-dropdown-item>
</template>
......@@ -253,12 +258,12 @@
<el-button type="text">{{$t('仓库')}}</el-button>
<el-dropdown-menu slot="dropdown">
<!-- 入仓操作 -->
<template v-if="include(scope.row.status, [0,2]) || include(scope.row.abnormalState, [1])">
<template v-if="include(scope.row.status, [0,2]) || include(scope.row.abnormalState, [1]) || scope.row.inWarehouseState == 208">
<el-dropdown-item @click.native="$router.push('/order/warehousing?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓操作')}}</el-dropdown-item>
</template>
<!-- 入仓补充 -->
<template v-if="
include(scope.row.inWarehouseState, [201,202, 208, 202, 210, 202, 211, 202, 213, 214, 215, 216]) &&
include(scope.row.inWarehouseState, [201,202, 202, 210, 202, 211, 202, 213, 214, 215, 216]) &&
scope.row.abnormalState != 1 &&
include(scope.row.status, [2,3,5,10,9,8])
">
......@@ -266,14 +271,14 @@
</template>
<!-- 入仓修改 -->
<template v-if="
include(scope.row.inWarehouseState, [202, 207, 208, 202, 209, 210, 202, 211, 212, 202, 213, 214, 215, 216, 204, 205, 206])
include(scope.row.inWarehouseState, [202, 207, 202, 209, 210, 202, 211, 212, 202, 213, 214, 215, 216, 204, 205, 206])
">
<el-dropdown-item @click.native="$router.push('/order/warehousing-update?id=' + scope.row.orderId)" v-hasPermi="['ecw:order:update']">{{$t('入仓修改')}}</el-dropdown-item>
</template>
<!-- 退仓 -->
<template v-if="
include(scope.row.inWarehouseState, [201, 202, 207, 208, 202, 209, 210, 202, 211, 212, 202, 213, 214, 215, 216]) &&
include(scope.row.inWarehouseState, [201, 202, 207, 202, 209, 210, 202, 211, 212, 202, 213, 214, 215, 216]) &&
exclude(scope.row.abnormalState, [1])
">
<el-dropdown-item @click.native="show = true;orderId = scope.row.orderId; " v-hasPermi="['ecw:order:update']">{{$t('退仓')}}</el-dropdown-item>
......@@ -282,7 +287,7 @@
<!-- 调仓 -->
<template v-if="
include(scope.row.inWarehouseState, [201, 202, 208, 202, 210, 202, 211, 202, 213, 215, 216])
include(scope.row.inWarehouseState, [201, 202, 202, 210, 202, 211, 202, 213, 215, 216])
">
<el-dropdown-item @click.native="orderId = scope.row.orderId;warehouseBol=true;" >{{$t('调仓')}}</el-dropdown-item>
</template>
......
......@@ -65,7 +65,7 @@
</el-table-column>
<el-table-column :label="$t('异常描述')" align="center">
<template slot-scope="scope">
<span>{{scope.row.orderExceptionDescVO.descZh}}</span>
<span v-if="scope.row.orderExceptionDescVO">{{$l(scope.row.orderExceptionDescVO, 'desc')}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('金额')" align="center" scope="orderExceptionAmount" />
......
......@@ -209,19 +209,36 @@
</el-row>
<div v-if="orderExceptionData.orderExceptionType=='order_miss_exception'||orderExceptionData.orderExceptionType=='order_superfluous_goods_exception'||orderExceptionData.orderExceptionType=='order_in_water_exception'||orderExceptionData.orderExceptionType=='order_damage_exception'">
<el-row>
<!-- <el-row>
<el-form-item :label="$t('详细内容:')">
{{orderExceptionData.orderExceptionDetails||'无'}}
</el-form-item>
</el-row>
</el-row> -->
<el-row >
<el-form-item :label="$t('状态:')">
<el-radio v-model="handlerParams.orderExceptionStatus" label="1">{{$t('处理中')}}</el-radio>
<el-radio v-model="handlerParams.orderExceptionStatus" label="2">{{$t('已处理')}}</el-radio>
</el-form-item>
</el-row>
<el-row>
<el-form-item :label="$t('处理结果:')" required v-if="handlerParams.orderExceptionStatus==2">
<el-select v-model="handlerParams.orderExceptionHandlerResult" placeholder="请选择" clearable>
<el-option v-for="dict in getDictDatas(orderExceptionData.orderExceptionType+'_don_result')"
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
</el-row>
<el-row >
<el-form-item :label="$t('赔付金额:')" size="medium" required v-if="handlerParams.orderExceptionStatus==2&&handlerParams.orderExceptionHandlerResult=='confirm_loss'">
<el-input style="width: 100px;" type="text" v-model="handlerParams.amount" />
<el-select v-model="handlerParams.currency" style="width: 100px;margin-left: 10px;" clearable>
<el-option v-for="dict in getDictDatas('shipping_price_unit') "
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item :label="$t('查明原因:')" required>
<el-form-item :label="$t('查明原因:')" required v-if="handlerParams.orderExceptionStatus==1">
<el-select v-model="handlerParams.orderExceptionHandlerResult" clearable>
<el-option v-for="dict in getDictDatas(orderExceptionData.orderExceptionType+'_result')"
:key="dict.value" :label="dict.label" :value="dict.value"/>
......@@ -300,7 +317,7 @@
getExceptionById(that.orderExceptionId).then(response => {
that.orderExceptionData = response.data;
// that.orderExceptionData.orderExceptionType = 'order_other_exception'
// that.orderExceptionData.orderExceptionType = 'order_pick_up_exception'
// that.orderExceptionData.orderExceptionType = 'order_miss_exception'
// that.orderExceptionData.orderExceptionType = 'order_pay_exception'
that.loading = false;
that.orderId = response.data.orderId
......
......@@ -24,11 +24,11 @@
<el-descriptions-item :label="$t('出货渠道')">
{{orderData.channelId?getChannelName(orderData.channelId):'/'}}
</el-descriptions-item>
<el-descriptions-item :label="$t('始发地')" :span="2">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.startAddressZh:$t('')}}
<el-descriptions-item :label="$t('始发地')" >
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.startTitleZh:$t('')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('目的地')">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.destAddressZh:$t('')}}
<el-descriptions-item :label="$t('目的地')" :span="2">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.destTitleZh:$t('')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('发货人姓名')">
{{orderData.consignorVO?orderData.consignorVO.name||$t(''):$t('')}}
......
......@@ -27,11 +27,11 @@
<el-descriptions-item :label="$t('运输方式')">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="orderData.transportId" />
</el-descriptions-item>
<el-descriptions-item :label="$t('始发地')" :span="2">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.startAddressZh:$t('')}}
<el-descriptions-item :label="$t('始发地')" >
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.startTitleZh:$t('')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('目的地')">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.destAddressZh:$t('')}}
<el-descriptions-item :label="$t('目的地')" :span="2">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.destTitleZh:$t('')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('发货人姓名')">
{{orderData.consignorVO?orderData.consignorVO.name||$t(''):$t('')}}
......@@ -92,7 +92,7 @@
<el-table-column :label="$t('入库货物属性')" align="center" width="400">
<template slot-scope="scope">
<el-row>
<span>{{$t('规格')}}{{scope.row.boxGauge}}</span>
<span>{{$t('规格')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.boxGauge:0}}</span>
</el-row>
<el-row>
<span>{{$t('品牌')}}
......@@ -157,7 +157,7 @@
</el-table-column>
<el-table-column :label="$t('重量')" align="center">
<template slot-scope="scope">
<span>{{scope.row.weight}}</span>
<span>{{scope.row.weight}}kg</span>
</template>
</el-table-column>
<el-table-column :label="$t('箱数')" align="center">
......@@ -229,7 +229,7 @@
{{shopForm.sum||0}}
</el-form-item>
<el-form-item :label="$t('放入箱数:')">
<el-input-number v-model="shopForm.num" controls-position="right" :min="1" :max="shopForm.sum-1"></el-input-number>
<el-input-number v-model="shopForm.num" controls-position="right" :min="1" :max="shopForm.sum"></el-input-number>
</el-form-item>
<el-form-item :label="$t('备注信息:')">
<el-input v-model="shopForm.remarks"></el-input>
......@@ -335,7 +335,6 @@ export default {
const tds = document.querySelectorAll(
"#table .el-table__footer-wrapper tr>td"
);
console.log(tds)
// colSpan合并列
tds[1].colSpan = 5;
tds[1].style.textAlign = "left";
......@@ -381,7 +380,7 @@ export default {
getSplitList(this.queryParams).then(response => {
this.splitData = response.data.orderSplitBackVOList
if(response.data.orderApprovalBackVO){
this.orderApprovalBackVO = response.data.orderApprovalBackVO
this.orderApprovalBackVO = response.data.orderApprovalBackVO
}
this.loading = false;
......@@ -394,7 +393,6 @@ export default {
this.query.warehouseIds = this.form.destWarehouseId
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
console.log(rowIndex)
if (rowIndex==this.orderData.orderItemVOList.length) {
if (columnIndex === 1) {
return [2, 3];
......@@ -424,7 +422,7 @@ export default {
leviteV += column.warehouseInInfoVO?column.warehouseInInfoVO.volume:0
leviteW += column.warehouseInInfoVO?column.warehouseInInfoVO.weight:0
});
sums[1] = this.$t('下单统计')+' '+ orderSum+' '+this.$t('')+' '+ orderV +'' + orderW + ' kg ' + ' '+this.$t('入仓统计:')+ leviteSum+' '+this.$t('')+' '+ leviteV +'' + leviteW + ' kg'
sums[1] = this.$t('下单统计')+' '+ orderSum+' '+this.$t('')+' '+ orderV.toFixed(2) +'' + orderW + ' kg ' + ' '+this.$t('入仓统计:')+ leviteSum+' '+this.$t('')+' '+ leviteV.toFixed(2) +'' + leviteW + ' kg'
return sums;
},
......
......@@ -8,9 +8,16 @@
<el-tabs v-model="activeName" type="card" @tab-click="handleTabs">
<el-tab-pane :label="edit ? '货物修改' : '货物入仓'" name="first">
<el-descriptions border :column="2">
<el-descriptions-item label="中文品名">{{ warehousing.prodTitleZh }}</el-descriptions-item>
<el-descriptions-item label="英文品名">{{ warehousing.prodTitleEn }}</el-descriptions-item>
<el-descriptions-item>
<template slot="label"><span style="color: red">*</span> 中文品名</template>
{{ warehousing.prodTitleZh }}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label"><span style="color: red">*</span> 英文品名</template>
{{ warehousing.prodTitleEn }}
</el-descriptions-item>
<el-descriptions-item label="品牌">
<template slot="label"><span style="color: red">*</span> 品牌</template>
<span v-if="false">{{ form.brand ? brand : '无' }}</span>
<el-select
v-else v-model="form.brand"
......@@ -26,8 +33,14 @@
</el-option>
</el-select>
</el-descriptions-item>
<el-descriptions-item label="是否备案">{{ isBeian }}</el-descriptions-item>
<el-descriptions-item label="收费模式">{{ feeType }}</el-descriptions-item>
<el-descriptions-item label="是否备案">
<template slot="label"><span style="color: red">*</span> 是否备案</template>
{{ isBeian }}
</el-descriptions-item>
<el-descriptions-item label="收费模式">
<template slot="label"><span style="color: red">*</span> 收费模式</template>
{{ feeType }}
</el-descriptions-item>
<el-descriptions-item label="填单参数">
箱数:
<el-input size="mini" v-if="edit" v-model="warehousing.num" style="display: inline-block;width: 100px"></el-input>
......@@ -64,10 +77,10 @@
<el-form-item :rules="tableFormRules.cartonsNum" :prop="$index + '.cartonsNum'">
<span v-if="tableData[$index].id && !edit">
{{ tableData[$index].cartonsNum }}
{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGE_TYPE, tableData[$index].unit) }}
{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, tableData[$index].unit) }}
</span>
<el-input v-else v-model="tableData[$index].cartonsNum" placeholder="">
<span slot="append">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGE_TYPE, tableData[$index].unit) }}</span>
<span slot="append">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, tableData[$index].unit) }}</span>
</el-input>
</el-form-item>
</template>
......@@ -75,8 +88,8 @@
<el-table-column label="包装类型" width="100px">
<template v-slot="{r,c,$index}">
<el-form-item>
<span v-if="tableData[$index].id && !edit">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGE_TYPE, tableData[$index].unit) }}</span>
<dict-selector v-else :type="DICT_TYPE.ECW_PACKAGE_TYPE" v-model="tableData[$index].unit"></dict-selector>
<span v-if="tableData[$index].id && !edit">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, tableData[$index].unit) }}</span>
<dict-selector v-else :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="tableData[$index].unit"></dict-selector>
</el-form-item>
</template>
</el-table-column>
......@@ -195,10 +208,10 @@
<el-form-item :rules="tableFormRules.cartonsNum" :prop="$index + '.cartonsNum'">
<span v-if="tableData1[$index].id">
{{ tableData1[$index].cartonsNum }}
{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGE_TYPE, tableData1[$index].unit) }}
{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, tableData1[$index].unit) }}
</span>
<el-input v-else v-model="tableData1[$index].cartonsNum" placeholder="">
<span slot="append">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGE_TYPE, tableData1[$index].unit) }}</span>
<span slot="append">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, tableData1[$index].unit) }}</span>
</el-input>
</el-form-item>
</template>
......@@ -206,8 +219,8 @@
<el-table-column label="包装类型" width="100px">
<template v-slot="{r,c,$index}">
<el-form-item>
<span v-if="tableData1[$index].id">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGE_TYPE, tableData1[$index].unit) }}</span>
<dict-selector v-else :type="DICT_TYPE.ECW_PACKAGE_TYPE" v-model="tableData1[$index].unit"></dict-selector>
<span v-if="tableData1[$index].id">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, tableData1[$index].unit) }}</span>
<dict-selector v-else :type="DICT_TYPE.ECW_PACKAGING_TYPE" v-model="tableData1[$index].unit"></dict-selector>
</el-form-item>
</template>
</el-table-column>
......@@ -294,7 +307,7 @@
import dictSelector from "@/components/DictSelector"
import {DICT_TYPE, getDictDataLabel} from "@/utils/dict"
import { orderWarehouseIn, orderWarehouseInUpdateApply } from '@/api/ecw/order'
import { getFeeTypeByCustomerProduct, getProductBrankPage } from '@/api/ecw/productBrank'
import { getFeeTypeByOrderProduct, getProductBrankPage } from '@/api/ecw/productBrank'
import WorkFlow from "@/components/WorkFlow"
import elSelect from '@/components/render/slots/el-select'
import ProductSelector from "@/components/ProductSelector"
......@@ -309,7 +322,7 @@ export default {
},
props: {
customerId: {
orderId: {
type: Number,
default: undefined
},
......@@ -346,12 +359,6 @@ export default {
if(e.id){
e.id = e.id.toString()
}
const boxGauge = e.boxGauge
if (boxGauge && boxGauge.length > 0) {
const boxGaugeList = boxGauge.split('*')
const [boxGauge1, boxGauge2, boxGauge3] = boxGaugeList
return {...e, boxGauge1, boxGauge2, boxGauge3}
}
return e
})
]
......@@ -365,7 +372,7 @@ export default {
opened: false,
brandList: [],
form: {
"brand": "",
"brand": "0",
"brandType": 0,
"inTime": "",
"material": "",
......@@ -392,7 +399,7 @@ export default {
quantityAll: [{required: true, message: "数量不能为空", trigger: "blur"}]
},
form1: {
"brand": "",
"brand": "0",
"brandType": 0,
"inTime": "",
"material": "",
......@@ -457,10 +464,10 @@ export default {
},
handleTabs(){},
handleBrandChange(v){
getFeeTypeByCustomerProduct({
getFeeTypeByOrderProduct({
brandId: parseInt(v),
productId: this.warehousing.prodId,
customerId: this.customerId
orderId: this.orderId
}).then(r => {
if(r.code === 0){
(this.activeName === "first" ? this.form : this.form1).feeType = parseInt(r.data.feeType);
......@@ -581,7 +588,7 @@ export default {
"cartonsNum": cartonsNum > 0 ? cartonsNum : '',
"expressNo": "",
"quantityAll": "",
"unit": "package",
"unit": "1",
"volume": '',
"weight": ''
})
......@@ -605,7 +612,15 @@ export default {
// 入仓修改的时候
this.form.orderWarehouseInItemDoList = this.warehousing.orderWarehouseInBackItemDoList
return this.form.orderWarehouseInItemDoList
return this.form.orderWarehouseInItemDoList.map(e => {
const boxGauge = e.boxGauge
if (boxGauge && boxGauge.length > 0) {
const boxGaugeList = boxGauge.split('*')
const [boxGauge1, boxGauge2, boxGauge3] = boxGaugeList
return {...e, boxGauge1, boxGauge2, boxGauge3}
}
return e
})
},
tableData1() {
return this.form1.orderWarehouseInItemDoList
......
......@@ -142,7 +142,7 @@
<warehouse-area-dialog ref="area" :visible.sync="areaVisible" v-model="form.orderLocationCreateReqVOList"
:order-id="orderId" :city-id="cityId"></warehouse-area-dialog>
<edit-dialog :title="title" :customer-id="order.customerId" :visible.sync="warehousingVisible" :warehousing="warehousing" :edit="isEdit"></edit-dialog>
<edit-dialog :title="title" :order-id="order.orderId" :visible.sync="warehousingVisible" :warehousing="warehousing" :edit="isEdit"></edit-dialog>
<!-- 完成入仓 -->
<el-dialog
......@@ -291,14 +291,14 @@ export default {
})
},
getTowSum(){
let sumVolume = 0
let sumWeight = 0
this.order.orderItemVOList.forEach(e => {
if (e?.warehouseInInfoVO?.volume) sumVolume += e.warehouseInInfoVO.volume
if (e?.warehouseInInfoVO?.weight) sumWeight += e.warehouseInInfoVO.weight
})
this.form.sumVolume = sumVolume
this.form.sumWeight = sumWeight
// let sumVolume = 0
// let sumWeight = 0
// this.order.orderItemVOList.forEach(e => {
// if (e?.warehouseInInfoVO?.volume) sumVolume += e.warehouseInInfoVO.volume
// if (e?.warehouseInInfoVO?.weight) sumWeight += e.warehouseInInfoVO.weight
// })
this.form.sumVolume = this.order.sumVolume// || sumVolume
this.form.sumWeight = this.order.sumWeight// || sumWeight
},
getOrder(){
getOrder(this.orderId).then(r => {
......@@ -326,18 +326,20 @@ export default {
return
}
}
let p = {
let form = {
orderSpecialNeedReceivableReqVoList: this.form.orderSpecialNeedReceivableReqVoList,
"orderLocationCreateReqVOList": this.form.orderLocationCreateReqVOList,
"orderId": this.order.orderId,
urls: this.form.urls
urls: this.form.urls,
sumVolume: this.form.sumVolume,
sumWeight: this.form.sumWeight
}
if (this.escapeBol) {
p.exceptionUrls = this.form.exceptionUrls.split(',');
p.descZh = this.form.descZh;
p.manualExceptionType = this.form.manualExceptionType
form.exceptionUrls = this.form.exceptionUrls.split(',');
form.descZh = this.form.descZh;
form.manualExceptionType = this.form.manualExceptionType
}
orderWarehouseInFinish(p).then(r => {
orderWarehouseInFinish(form).then(r => {
if (r.code === 0) {
this.escapeBol = false;
this.finishVisible = false
......
......@@ -74,23 +74,23 @@
</el-table-column>
<el-table-column :label="$t('入库货物属性')" align="center" >
<template slot-scope="scope">
<span>{{$t('箱规')}}{{scope.row.boxGauge||0}}</span>
<span>{{$t('箱规')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.boxGauge:0}}</span>
<p>
<span>{{$t('品牌')}}<dict-tag :value="scope.row.brandType" :type="DICT_TYPE.ECW_IS_BRAND" /></span>
<span>{{$t('箱数')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.cartonsNum:0}}</span>
<span>{{$t('体积')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.volume:0}}CBM</span>
<span>{{$t('品牌')}}{{getBrand(scope.row.brand)}}&nbsp;&nbsp;</span>
<span>{{$t('箱数')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.cartonsNum:0}}&nbsp;&nbsp;</span>
<span>{{$t('体积')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.volume:0}}CBM&nbsp;&nbsp;</span>
<span>{{$t('重量')}}{{scope.row.warehouseInInfoVO?scope.row.warehouseInInfoVO.weight:0}}KG</span>
</p>
</template>
</el-table-column>
<el-table-column :label="$t('重货方数')" align="center" v-if="type=='order_heavy_cargo_exception'">
<template slot-scope="scope">
<span>{{ scope.row.warehouseInInfoVO?(scope.row.warehouseInInfoVO.heavyNumber||0):0}}CBM</span>
<span>{{scope.row.wvolume||0}}CBM</span>
</template>
</el-table-column>
<el-table-column :label="$t('泡货方数')" align="center" v-else >
<template slot-scope="scope">
<span>{{ scope.row.warehouseInInfoVO?(scope.row.warehouseInInfoVO.lightNumber||0):0}}CBM</span>
<span>{{scope.row.vweight||0}}CBM</span>
</template>
</el-table-column>
<el-table-column :label="$t('最后操作时间')" scope="handlerTime" />
......@@ -111,6 +111,7 @@
import {getExceptionById,handlerExceptionByExceptionId} from "@/api/ecw/orderException"
import {DICT_TYPE} from '@/utils/dict'
import {getOrder} from '@/api/ecw/order'
import {getProductBrankPage} from '@/api/ecw/productBrank'
export default {
name: "WeightDeal",
......@@ -124,7 +125,8 @@ export default {
orderData:{},
list: {},
orderId:0,
type:''
type:'',
branklist:[]
};
},
created() {
......@@ -135,6 +137,9 @@ export default {
if(this.$route.query.type){
this.type = this.$route.query.type
}
getProductBrankPage({pageNo:1,pageSize:500}).then((data)=>{
this.branklist=data.data.list
})
},
methods: {
/** 查询列表 */
......@@ -147,6 +152,10 @@ export default {
this.getOrders()
});
},
getBrand(id){
var brank = this.branklist.find(item=>item.id==id)
return brank.titleZh||''
},
checkCode(data){
if(data.indexOf('+')==-1){
return '+'+data
......
......@@ -63,14 +63,14 @@
<div slot="header" style="font-size:20px;">
{{$t('价格设置')}}
<span>
<el-checkbox label="" @change="form.needPay=$event ? 1 : 0">{{$t('预付')}}</el-checkbox>
<el-checkbox label="" @change="form.stepPrice=$event ? 1 : 0">{{$t('阶梯订单')}}</el-checkbox>
<el-checkbox label="" v-model="needPay">{{$t('预付')}}</el-checkbox>
<el-checkbox label="" v-model="stepPrice">{{$t('阶梯定价')}}</el-checkbox>
</span>
</div>
<el-form-item :label="$t('单价模式')" prop="priceType">
<dict-selector :type="DICT_TYPE.ECW_PRICE_TYPE" v-model="form.priceType" form-type="radio" formatter="number" defaultable />
</el-form-item>
<!--阶梯订单-->
<!--阶梯定价-->
<template v-if="form.stepPrice==1" >
<div v-for="(item, index) in priceStepList" :key="index">
<div style="font-size:14px; margin:10px 0">
......@@ -224,6 +224,8 @@ export default {
validateEndDate: undefined,
validateStartDate: undefined
},
needPay: false, // 是否需要预付
stepPrice: false, // 是否阶梯订单
specialProducts: [],
priceStepList: [{},{}], // 阶梯价格
// specialList:[], // 特殊需求,默认四个
......@@ -314,6 +316,12 @@ export default {
if(val) this.$set(this.form, 'dayLimit', 10000)
else delete this.form.dayLimit
},
needPay(val){
this.$set(this.form, 'needPay', val ? 1 : 0)
},
stepPrice(val){
this.$set(this.form, 'stepPrice', val ? 1 : 0)
},
selectedRoutes(routers) {
let transportIds = []
routers.forEach(item => {
......@@ -339,6 +347,15 @@ export default {
if(this.$route.query.action == 'update'){
getProductPrice(this.$route.query.id).then(res => {
this.$set(this, 'form', res.data)
if(this.form.needPay){
this.needPay = true
}
if(res.data.validateStartDate){
this.form.validateStartDate = parseTime(res.data.validateStartDate)
}
if(res.data.validateEndDate){
this.form.validateEndDate = parseTime(res.data.validateEndDate)
}
this.lineList = [res.data]
})
}
......
......@@ -336,9 +336,21 @@ export default {
// 根据状态获取状态名称 ,这个应该可以改成字典,目前接口缺少相关数据,待定
statusName() {
return row => {
if(row.blacklist) return '黑名单';
if(row.auditStatus === AuditStatusEnum.PASS) return '已审核';
return '已下架';
//判断价格是否过期
let validateStartDate = row.validateStartDate;
let validateEndDate = row.validateEndDate;
let notSetPrice = false;
let nowDate = new Date().getTime();
if(validateStartDate && validateStartDate > nowDate) {
notSetPrice = true;
}
if(validateEndDate && validateEndDate < nowDate) {
notSetPrice = true;
}
let setPriceText = notSetPrice ? '(未设置价格)' : '';
if(row.blacklist) return '黑名单' + setPriceText;
if(row.auditStatus === AuditStatusEnum.PASS) return '已审核' + setPriceText;
return '已下架' + setPriceText;
}
},
......
......@@ -89,6 +89,9 @@
</template>
</el-table-column>
<el-table-column :label="$t('名称') + '*'">
<template slot="header">
{{$t('名称')}}<span class="red">*</span>
</template>
<template slot-scope="scope">
<el-form-item
class="mb-0 mr-0"
......@@ -100,6 +103,9 @@
</template>
</el-table-column>
<el-table-column :label="$t('电话') + '*'">
<template slot="header">
{{$t('电话')}}<span class="red">*</span>
</template>
<template slot-scope="scope">
<el-form-item
class="mb-0 mr-0"
......@@ -128,6 +134,9 @@
<template slot-scope="scope">{{scope.$index + 1}}</template>
</el-table-column>
<el-table-column :label="$t('账户名称') + '*'">
<template slot="header">
{{$t('账户名称')}}<span class="red">*</span>
</template>
<template slot-scope="scope">
<el-form-item
class="mb-0 mr-0"
......@@ -139,6 +148,9 @@
</template>
</el-table-column>
<el-table-column :label="$t('币别') + '*'">
<template slot="header">
{{$t('币别')}}<span class="red">*</span>
</template>
<template slot-scope="scope">
<el-form-item
class="mb-0 mr-0"
......@@ -150,6 +162,9 @@
</template>
</el-table-column>
<el-table-column :label="$t('银行名称') + '*'">
<template slot="header">
{{$t('银行名称')}}<span class="red">*</span>
</template>
<template slot-scope="scope">
<el-form-item
class="mb-0 mr-0"
......@@ -161,6 +176,9 @@
</template>
</el-table-column>
<el-table-column :label="$t('银行账户') + '*'">
<template slot="header">
{{$t('银行账户')}}<span class="red">*</span>
</template>
<template slot-scope="scope">
<el-form-item
class="mb-0 mr-0"
......@@ -345,6 +363,13 @@ export default {
if (!valid) {
return this.$showFormValidateErrors(errors)
}
if(!this.formData.bankList.length){
return this.$message.error('请添加银行信息')
}
if(!this.formData.contactList.length){
return this.$message.error('请添加联系人信息')
}
let data = Object.assign({}, this.formData)
// 修改的提交
......@@ -385,4 +410,7 @@ export default {
::v-deep .data-list .el-form-item__error{
position: static;
}
.red{
color: red;
}
</style>
......@@ -139,6 +139,11 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item v-if="form.type != '3'" label="重定向" prop="redirect">
<el-input v-model="form.redirect" placeholder="请输入重定向地址" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
......@@ -262,10 +267,11 @@ export default {
name: undefined,
enName: undefined,
icon: undefined,
isShowInMenuBar: undefined,
isShowInMenuBar: true,
type: SystemMenuTypeEnum.DIR,
sort: undefined,
keepalive: false,
redirect: undefined,
status: CommonStatusEnum.ENABLE
};
this.resetForm("form");
......
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