Commit d5fb83eb authored by houjn@hikoon.cn's avatar houjn@hikoon.cn
parents e174fdca e2716eb8
{
"ExpandedNodes": [
"",
"\\src"
"\\src",
"\\src\\views",
"\\src\\views\\ecw",
"\\src\\views\\ecw\\order"
],
"SelectedNode": "\\src\\main.js",
"PreviewInSolutionExplorer": false
}
\ No newline at end of file
No preview for this file type
......@@ -506,10 +506,11 @@ export function boxGoodsDetail(data) {
* @param {*} id
* @return {*}
*/
export function deleteSection(id) {
export function deleteSection(params) {
return request({
url: "/ecw/box-preload-goods/deleteSection?id=" + id,
url: "/ecw/box-preload-goods/deleteSection",
method: "delete",
params
});
}
......@@ -520,10 +521,11 @@ export function deleteSection(id) {
* @param {*} id
* @return {*}
*/
export function deleteGoods(id) {
export function deleteGoods(params) {
return request({
url: "/ecw/box-preload-goods/delete?ids=" + id.join(","),
url: "/ecw/box-preload-goods/delete",
method: "delete",
params
});
}
......@@ -536,12 +538,27 @@ export function deleteGoods(id) {
*/
export function createGoods(data) {
return request({
url: "/ecw/box-preload-goods/create",
url: "/ecw/box-preload-goods/v2/create",
method: "post",
data,
});
}
/**
* 获得订单所有关联列表
*
* @export
* @param {*} params
* @return {*}
*/
export function getAllRelateOrderList(params) {
return request({
url: "/order/guanlian/getAllRelateOrderList",
method: "get",
params,
});
}
/**
* 预装关联订单
*
......
import request from '@/utils/request'
import {param} from "@/utils";
// 创建订单
export function createOrder(data) {
......@@ -688,3 +687,65 @@ export function operateLogPage(params){
timeout: 5 * 60000
})
}
// 获取操作日志详情
export function getOperateLogDetail(id){
return request({
url: '/ecw/order-operate-log/get',
params: {id},
method: 'get',
})
}
// 取消拆单申请
export function splitCancelApply(data){
return request({
url: '/order/split/cancel-apply',
method: 'put',
data
})
}
// 撤销拆单
export function orderSplitRevoke(data){
return request({
url: '/order/split/revoke',
method: 'put',
data
})
}
/*根据订单ID获取撤销拆单详情*/
export function splitRevoke(orderId){
return request({
url: '/order/split/revoke/' + orderId,
method: 'get'
})
}
/*根据审批ID获取撤销拆单详情*/
export function splitRevokeApply(approvalId){
return request({
url: '/order/split/revoke/apply/' + approvalId,
method: 'get'
})
}
/*取消撤销拆单*/
export function cancelSplitRevoke(data){
return request({
url: '/order/split/cancel/revoke',
method: 'put',
data
})
}
/*修改拆单项*/
export function splitItemUpdate(data){
return request({
url: '/order/split-item/update',
method: 'post',
data
})
}
......@@ -113,3 +113,11 @@ export function exportExcel(params) {
responseType: 'arraybuffer'
})
}
// 根据订ID获取订单异常结果
export function getOrderExcptionResult(query) {
return request({
url: '/ecw/order-exception-result/page',
method: 'get',
params: query
})
}
\ No newline at end of file
......@@ -59,7 +59,6 @@ export function deleteSplit(id) {
})
}
//取消申请拆单
export function cancelApply(data) {
return request({
url: '/order/split/cancel-apply',
......@@ -137,3 +136,12 @@ export function quantitycheck(query) {
params: query
})
}
// 重置拆单
export function deleteAllSplit(orderId) {
return request({
url: '/order/split/delete/all',
method: 'delete',
params: {orderId}
})
}
......@@ -9,6 +9,15 @@ export function createProduct(data) {
})
}
// 创建产品
export function addProduct(data) {
return request({
url: '/ecw/product/add',
method: 'post',
data: data
})
}
// 更新产品
export function updateProduct(data) {
return request({
......
......@@ -134,4 +134,10 @@ export function serviceConfig(data) {
})
}
// 数量是否必填
export function quantityRequired(lineId) {
return request({
url: '/ecw/warehouse/quantity/required/' + lineId,
method: 'get'
})
}
......@@ -13,6 +13,12 @@
<div class="value">{{item.contactsName}}</div>
<el-tag v-if="item.isInOpenSea" type="danger" effect="dark">{{$t('')}}</el-tag>
</div>
<!-- v1.7新增 -->
<div class="line">
<div class="label">{{$t('姓名(英文)')}}</div>
<div class="value">{{item.contactsNameEn}}</div>
<el-tag v-if="item.isInOpenSea" type="danger" effect="dark">{{$t('')}}</el-tag>
</div>
<div class="line">
<div class="label">{{$t('电话')}}</div>
<div class="value">+{{item.areaCode}} {{item.phoneNew}}</div>
......@@ -25,6 +31,11 @@
<div class="label">{{$t('公司')}}</div>
<div class="value">{{item.company}}</div>
</div>
<!-- v1.7新增 -->
<div class="line">
<div class="label">{{$t('公司(英文)')}}</div>
<div class="value">{{item.companyEn}}</div>
</div>
</div>
</div>
</div>
......@@ -91,7 +102,7 @@ export default {
padding: 5px;
border-radius: 10px;
border: 5px solid transparent;
background: linear-gradient(white,white) padding-box,repeating-linear-gradient(-45deg, red 0, red 12.5%, transparent 0, transparent 25%, #58a 0, #58a 37.5%, transparent 0, transparent 50%) 0/5em 5em;
background: linear-gradient(white,white) padding-box,repeating-linear-gradient(-45deg, red 0, red 12.5%, transparent 0, transparent 25%, #58a 0, #58a 37.5%, transparent 0, transparent 50%) 0/5em 5em;
.item-box{
/* background: #fbfaf5; */
padding: 20px;
......
......@@ -14,8 +14,12 @@
<el-option
v-for="(item, index) in list"
:key="item.id"
:label="item['title' + lang]"
:label="item['title' + lang] + (item.auditStatus === 2 ? '' : `(${lang === 'Zh' ? '待确定' : 'To be determined'})`)"
:value="index">
<span style="float: left">{{ item['title' + lang] }}</span>
<span style="float: right; color: #c76e6e; font-size: 13px">
{{ item.auditStatus === 2 ? '' : (lang === 'Zh' ? '待确定' : 'To be determined') }}
</span>
</el-option>
</el-select>
</template>
......@@ -30,6 +34,16 @@ export default {
lang: {
type: String,
default: 'Zh'
},
// 是否显示待确认商品,不传默认不显示
determined: {
type: Boolean,
default: false
},
// 是否显示已有商品,不传默认
status: {
type: [String, Number],
default: null
}
},
data(){
......@@ -59,7 +73,7 @@ export default {
init(){
if(!this.value){
this.index = null
return
return
}
let index = this.list.findIndex(item => item.id == this.value)
if(index < 0){
......@@ -80,7 +94,9 @@ export default {
},
remoteMethod(keyword){
let params = {
pageSize: keyword ? 100000 : 10
pageSize: keyword ? 100000 : 10,
filter: !this.determined,
status:this.status
}
if(this.productType){
params.typeId = this.productType
......@@ -93,4 +109,4 @@ export default {
}
}
}
</script>
\ No newline at end of file
</script>
......@@ -17,11 +17,15 @@
</template>
<script>
import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts'
import {listSimpleUsers} from '@/api/system/user'
import {listServiceUser, listSimpleUsers} from '@/api/system/user'
export default {
props:{
value: [String, Number],
clearable: Boolean
clearable: Boolean,
manage:{
type:Boolean,
default:false
}
},
data(){
return {
......@@ -44,9 +48,18 @@ export default {
}
},
created(){
if(this.manage){
// 客户经理
listServiceUser().then(r=>{
this.list = r.data;
})
}else {
// 全部客户
listSimpleUsers().then(res => {
this.list = res.data
this.list = res.data
})
}
// this.init()
},
methods:{
......@@ -81,4 +94,4 @@ export default {
} */
}
}
</script>
\ No newline at end of file
</script>
......@@ -258,30 +258,34 @@ export default {
}
},
initArea(){
return getByWarehouseId({ warehouseId: this.warehouseId }).then(r => {
const area = r.data
area.forEach(e => {
// 仓库
e.children?.forEach(f => {
// 区域
f.selected = this.isSelected(e.id, f.id)
if(f.positionList) f.positionList.forEach(g => {
// 位置
g.selected = this.isSelected(e.id, f.id, g.id)
g.children?.forEach(k => {
// 子位置
k.selected = this.isSelected(e.id, f.id, k.id)
})
resetAreaTreeSelected(area) {
area.forEach(e => {
// 仓库
e.children?.forEach(f => {
// 区域
f.selected = this.isSelected(e.id, f.id)
if(f.positionList) f.positionList.forEach(g => {
// 位置
g.selected = this.isSelected(e.id, f.id, g.id)
g.children?.forEach(k => {
// 子位置
k.selected = this.isSelected(e.id, f.id, k.id)
})
})
})
this.area = area
})
return area
},
initArea(){
return getByWarehouseId({ warehouseId: this.warehouseId }).then(r => {
this.area = this.resetAreaTreeSelected(r.data)
})
},
// 用于储位回显选中
isSelected(warehouse, area, position = 0){
return !!this.value.find(e => warehouse === e.wareId && area === e.areaId && position === e.locationId)
return !!this.value.find(e => warehouse === e.wareId && area === e.areaId && (position === e.locationId || undefined === e.locationId))
},
}
}
......
......@@ -3834,15 +3834,67 @@
"收款单核销审核": "The payment voucher verification review",
"系统提示": "System prompt",
"合计:{totalNum}箱,{totalVolume}m³(测) {totalChargeVolume}m³(重) {totalWeight}KG": "Total:{totalNum}Box,{totalVolume}m³(Test) {totalChargeVolume}m³(Weight) {totalWeight}KG",
"确定要取消此报价单么?": "",
"确定要恢复此报价单么?": "",
"确定要删除此报价单么?": "",
"优质条件": "",
"港口": "",
"确定要取消此报价单么?": "Are you sure you want to cancel this quote?",
"确定要恢复此报价单么?": "Are you sure you want to restore this quote?",
"确定要删除此报价单么?": "Are you sure you want to delete this quote?",
"优质条件": "high-quality conditions",
"港口": "port",
"出证速度": "Speed of certification",
"快": "fast",
"慢": "slow",
"CTN NO": "",
"请输入CTN NO": "请输入CTN NO",
"境内外类型": "Internal and external types"
}
"CTN NO": "CTN NO",
"请输入CTN NO": "Please enter CTN NO",
"境内外类型": "Internal and external types",
"为保证入仓数据准确性,入仓请带上一份装箱单(品名,件数,毛重,尺寸方数,是否有牌)": "To ensure the accuracy of warehousing information, please bring a packing list with goods when entrying the warehouse. (Packing list should contain: Product name, Number of cartons, Gross weight, Measurements, Branded or not)",
"姓名(英文)": "Name (English)",
"公司(英文)": "Company (English)",
"入仓体积": "Warehouse volume",
"收费体积": "Fee volume",
"入仓重量": "Warehouse weight",
"收费重量": "Fee weight",
"数据无效": "The data is invalid",
"客户英文名称": "the customer's English name",
"请输入客户英文名称": "Please enter the customer's English name",
"付款人姓名": "The sender's name",
"请输入付款人姓名": "Please enter the name of the payer",
"公司英文名称": "Company English Name",
"联系人英文名称": "Contact's English name",
"请输入联系人英文名称": "Please enter the contact's name in English",
"入仓修改时间": "Warehouse modification time",
"退仓图片": "withdrawal image",
"发货人中文名称": "The sender's Chinese name",
"发货人英文名称": "The sender's English name",
"发货人公司中文名称": "Sender Company's Chinese name",
"发货人公司英文名称": "Sender Company's English name",
"收货人中文名称": "Consignee's Chinese name",
"收货人英文名称": "Consignee's English name",
"收货人公司中文名称": "Consignee company Chinese name",
"收货人公司英文名称": "Consignee company English name",
"显示更多": "Show more",
"订单包含不接受货物,请检查": "The order contains goods that are not accepted. Please check.",
"撤销拆单": "Cancel split order",
"新增品名中文": "New product name in Chinese",
"新增品名英文": "New product name in English",
"{prods}等商品拆单总数据跟主单不匹配": "The total data for the split order of {prods} products does not match the main order.",
"入仓特性": "",
"剩余入仓方数": "",
"剩余收费方数": "",
"剩余入仓重量": "",
"剩余收费重量": "",
"是否需要一起预装?": "",
"请注意,预装反审后,全部提单需重新制作": "",
"请先处理完出货异常,再进行操作": "",
"业绩类型": "",
"普通订单": "",
"收费统计": "",
"公司中文名称": "",
"展示": "",
"无归属订单": "Unassigned Order",
"最多可放入{quantity}": "",
"可放入仓方数": "",
"可放入收费方数": "",
"入仓方数": "",
"收费方数": "",
"可放入重量": "",
"可放入收费重量": ""
}
\ No newline at end of file
......@@ -87,6 +87,7 @@ service.interceptors.response.use(res => {
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) {
Message({
dangerouslyUseHTMLString: true,
message: msg,
type: 'error'
})
......@@ -106,6 +107,12 @@ service.interceptors.response.use(res => {
} else if (code === 555) {
// 额外情况
return Promise.reject(res.data)
} else if (code === 566) {
// 额外情况
return Promise.reject(res.data)
} else if (code === 666) {
// 额外情况
return Promise.reject(res.data)
} else if (code !== 200) {
Notification.error({
title: msg
......
......@@ -386,6 +386,11 @@ export default {
component: ()=>import('@/views/ecw/financial/components/commissionPaymentDetails.vue'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
/*撤销拆单*/
split_revoke:{
component: () => import("@/views/ecw/order/components/SplitRevokeDetail"),
id: this.processInstance.businessKey
}
}
console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim())
......
......@@ -9,7 +9,22 @@
<el-row style="margin-top:15px">
<el-table :data="billData.list" border max-height="500px">
<el-table-column :label="$t('序号')" align="center" width="50" prop="tidanNo" />
<el-table-column :label="$t('订单号')" align="center" prop="orderNo" />
<el-table-column :label="$t('订单号')" align="center" prop="orderNo">
<template slot-scope="scope">
<div>
{{scope.row.orderNo}}
</div>
<div style="color:blue;fontWeight:bold;">
{{ scope.row.drawee? scope.row.drawee:''}}
</div>
<div style="color:red;fontWeight:bold;">
{{ scope.row.applicationInfo? scope.row.applicationInfo : ''}}
</div>
<div style="color:red;fontWeight:bold;">
{{ scope.row.customsTypeName? scope.row.customsTypeName : ''}}
</div>
</template>
</el-table-column>
<el-table-column :label="$t('货物信息')" align="center" prop="">
<template slot-scope="scope">
<section class="table-goodList">
......
......@@ -50,6 +50,7 @@ import html2canvas from 'html2canvas';
import { jsPDF } from "jspdf";
import {uploadFile} from '@/api/infra/file'
import FileSaver from 'file-saver'
import {getOrder, getOrderDetail} from "@/api/ecw/order";
window.html2canvas = html2canvas
export default {
name: "makeLadingBill",
......@@ -175,7 +176,13 @@ export default {
showLoaingTemplate() {
this.visible = true;
},
// 先获取订单信息,pdf用 订单号+唛头命名
createPdf(){
getOrder(this.currRow.orderId).then(res => {
this.afterCreatePdf(res.data)
})
},
afterCreatePdf(orderData){
let loading = this.$loading()
html2canvas(document.querySelector("#html2canvas-container"), {dpi:144, useCORS: true}).then(canvas => {
const doc = new jsPDF('p','pt','a4',true);
......@@ -194,13 +201,13 @@ export default {
/* doc.save("a4.pdf");
return Promise.reject() */
let form = new FormData()
let file = this.selfNo + '-' + this.currRow.tidanNo + '.pdf'
let file = this.currRow.orderNo + '-' + orderData.marks + '.pdf' //this.selfNo + '-' + this.currRow.tidanNo + '.pdf'
form.append('file', new File([doc.output('arraybuffer')], file, {type: 'application/pdf'}))
form.append('path', `admin/shipment/${this.selfNo}/pdf/${file}`) // 最前面不能有/,否则返回的url会有两个/
/* let blob = new Blob([doc.output('arraybuffer')], {type: "application/pdf"})
FileSaver.saveAs(blob, file);
FileSaver.saveAs(blob, file);
return */
return uploadFile(form)
}).then(res => {
......
......@@ -535,6 +535,31 @@ export default {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
}).catch((res) => {
if (res.code === 666) {
this.$confirm("<div style='max-height:500px;overflow:auto'>"+res.msg+this.$t('是否需要一起移出?')+"</div>", this.$t("提示"), {
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
confirmButtonText: '确定移出',
cancelButtonText: '仅移出当前订单'
})
.then((_) => {
remove({ ...params, deleteType: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
});
})
.catch(action => {
if(action =='cancel'){
remove({ ...params, deleteType: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
});
}
});
}
});
},
/* 修改柜信息 */
......
......@@ -246,6 +246,31 @@ export default {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
}).catch((res) => {
if (res.code === 666) {
this.$confirm(res.msg+this.$t('是否需要一起移出?'), this.$t("提示"), {
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
confirmButtonText: '确定移出',
cancelButtonText: '仅移出当前订单'
})
.then((_) => {
remove({ ...params, deleteType: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
});
})
.catch(action => {
if(action =='cancel'){
remove({ ...params, deleteType: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
});
}
});
}
});
},
/** 预装 */
......@@ -262,11 +287,67 @@ export default {
} else {
params.orderItemIdList = [item.orderItemId];
}
createGoods(params).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
createGoods(params)
.then((res) => {
const { data } = res;
if (data.relationMsg) {
const msg = data.relationMsg.replaceAll(",", "");
this.$confirm(msg, this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
loadRelationOrder(data).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch((_) => {
this.queryAllData();
});
} else {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
}
})
.catch((res) => {
if (res.code === 555) {
const msg = res.msg && res.msg.replaceAll(",", "");
this.$confirm(msg, this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
createGoods({ ...params, relationStatus: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch((_) => {
this.queryAllData();
});
}
if (res.code === 566) {
this.$confirm(res.msg+this.$t('是否需要一起预装?'), this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
createGoods({ ...params, relationStatus: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch((_) => {
this.queryAllData();
});
}
});
},
/* 增加部分 */
addPart() {
......@@ -289,7 +370,11 @@ export default {
}
)
.then((_) => {
deleteSection(this.partData.id).then((res) => {
let params = {
id: this.partData.id,
deleteType: 2
};
deleteSection(params).then((res) => {
serviceMsg(res, this).then(() => {
this.partData = {};
this.getSecGoods();
......
......@@ -319,9 +319,9 @@
</el-row>
<!-- 关联订单弹窗 -->
<el-dialog :title="relationOrderListDialog.title" :visible.sync="relationOrderListDialog.visible" width="30%" append-to-body>
<el-row v-for="(item,index) in relationOrderListDialog.data" :key="item.id">
{{index+1}}. {{item.orderNo}}
</el-row>
<el-card>
<div v-html="relationOrderListDialog.data"></div>
</el-card>
<el-row style="margin-top: 10px;text-align: center;">
<el-button type="primary" @click="relationOrderListDialog.visible = false">{{$t('关闭窗口')}}</el-button>
</el-row>
......@@ -343,6 +343,7 @@ import {
approvalCreate,
approvalCancel,
loadRelationOrder,
getAllRelateOrderList
} from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue";
import {
......@@ -516,10 +517,12 @@ export default {
},
/**查看关联订单 */
getRelationOrder(item) {
console.log(item)
this.relationOrderListDialog.title = item.orderNo+'关联订单'
this.relationOrderListDialog.visible = true
this.relationOrderListDialog.data = item.relateOrderList
getAllRelateOrderList({orderId:item.orderId,orderNo:item.orderNo}).then(res=>{
this.relationOrderListDialog.title = item.orderNo+'关联订单'
this.relationOrderListDialog.visible = true
this.relationOrderListDialog.data = res.msg.replace(/\n/g,'<br>')
})
},
/** 搜索按钮操作 */
handleQuery(type) {
......@@ -628,7 +631,11 @@ export default {
}
)
.then((_) => {
deleteSection(part.id).then((res) => {
let params = {
id: part.id,
deleteType: 2
};
deleteSection(params).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
......@@ -654,6 +661,7 @@ export default {
if (data.relationMsg) {
const msg = data.relationMsg.replaceAll(",", "");
this.$confirm(msg, this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
......@@ -676,6 +684,7 @@ export default {
if (res.code === 555) {
const msg = res.msg && res.msg.replaceAll(",", "");
this.$confirm(msg, this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
......@@ -689,6 +698,23 @@ export default {
this.queryAllData();
});
}
if (res.code === 566) {
this.$confirm(res.msg+this.$t('是否需要一起预装?'), this.$t("提示"), {
dangerouslyUseHTMLString: true,
type: "warning",
})
.then((_) => {
createGoods({ ...params, relationStatus: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch((_) => {
this.queryAllData();
});
}
});
} else {
let params = {
......@@ -718,11 +744,38 @@ export default {
if (type === "row") {
ids.push(data.id);
}
deleteGoods(ids).then((res) => {
let param = {
ids: ids.join(",")
}
deleteGoods(param).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
}).catch((res) => {
if (res.code === 666) {
this.$confirm("<div style='max-height:500px;overflow:auto'>"+res.msg+this.$t('是否需要一起移出?')+"</div>", this.$t("提示"), {
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
confirmButtonText: '确定移出',
cancelButtonText: '仅移出当前订单'
})
.then((_) => {
deleteGoods({ ...param, deleteType: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
})
.catch(action => {
if(action =='cancel'){
deleteGoods({ ...param, deleteType: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
}
});
}
});
},
/* 查询所有数据 */
......
......@@ -4,6 +4,7 @@
<el-form-item :label="$t('申请理由')">
<el-input v-model="reviewObj.applyReason" type="textarea" rows="2" :placeholder="$t('请输入申请理由')" :disabled="isReview"></el-input>
</el-form-item>
<span v-if="voKey=='preInstallBackInfo'" style="color: red;margin-left: 120px;">{{$t('请注意,预装反审后,全部提单需重新制作')}}</span>
</el-form>
<el-row class="operate-button">
<el-button type="success" @click="onSubmit" v-show="!isReview">{{$t('发起申请')}}</el-button>
......
......@@ -240,14 +240,40 @@ export default {
type: "warning",
})
.then((_) => {
tallyRemove({
let param = {
orderIdLIst: orderIds,
shipmentId: this.shipmentObj.id,
}).then((res) => {
}
tallyRemove(param).then((res) => {
serviceMsg(res, this).then(() => {
this.getList();
});
});
}).catch((res) => {
if (res.code === 666) {
this.$confirm("<div style='max-height:500px;overflow:auto'>"+res.msg+this.$t('是否需要一起移出?')+"</div>", this.$t("提示"), {
dangerouslyUseHTMLString: true,
distinguishCancelAndClose: true,
confirmButtonText: '确定移出',
cancelButtonText: '仅移出当前订单'
})
.then((_) => {
tallyRemove({ ...param, deleteType: 2 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getList();
});
});
})
.catch(action => {
if(action =='cancel'){
tallyRemove({ ...param, deleteType: 1 }).then((res) => {
serviceMsg(res, this).then(() => {
this.getList();
});
});
}
});
}
});
})
.catch((_) => {});
},
......
......@@ -126,7 +126,7 @@
import { createChannel, updateChannel, deleteChannel, getChannel, getChannelPage, exportChannelExcel } from "@/api/ecw/channel";
export default {
name: "Channel",
name: "EcwChannelIndex",
components: {
},
data() {
......@@ -163,6 +163,9 @@ export default {
created() {
this.getList();
},
activated() {
this.getList();
},
methods: {
/** 查询列表 */
getList() {
......
......@@ -17,6 +17,16 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户英文名称')">
<el-input v-model="form.nameEn" :placeholder="$t('请输入客户英文名称')"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('付款人姓名')">
<el-input v-model="form.payerName" :placeholder="$t('请输入付款人姓名')"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户等级')" prop="level">
<el-select v-model="form.level" :placeholder="$t('请选择客户等级')" disabled>
......@@ -70,7 +80,6 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('客户生日')" prop="birthday">
<el-date-picker
v-model="form.birthday"
......@@ -80,6 +89,11 @@
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('公司英文名称')">
<el-input v-model="form.companyEn" :placeholder="$t('请输入客户英文名称')"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('主营类别')" prop="productType">
<el-row :gutter="10">
......@@ -268,6 +282,16 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column>
<template slot="header">
{{$t('联系人英文名称')}}
</template>
<template v-slot="{row, cellValue, $index}">
<el-form-item label="">
<el-input v-model="row.nameEn" :placeholder="$t('请输入联系人英文名称')" size="mini"/>
</el-form-item>
</template>
</el-table-column>
<el-table-column
prop="areaCode"
:label="$t('区号')"
......@@ -873,12 +897,15 @@ export default {
id: undefined,
number: undefined,
name: undefined,
nameEn: undefined,
level: 1,
country: undefined,
type: undefined,
transportType:[],
agentId: undefined,
company: undefined,
companyEn: undefined,
payerName:undefined,
address: undefined,
productType: undefined,
productId: undefined,
......@@ -948,6 +975,7 @@ export default {
"social": undefined,
"socialNumber": "",
"userid": undefined,
"nameEn":"",
// "username": ""
})
},
......
......@@ -105,7 +105,7 @@
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name">
<template slot-scope="{row}">
{{row.name}} <el-tag v-if="row.isInOpenSea" size="mini">{{ $t('') }}</el-tag>
{{$l(row, 'name')}} <el-tag v-if="row.isInOpenSea" size="mini">{{ $t('') }}</el-tag>
</template>
</el-table-column>
......
......@@ -44,7 +44,7 @@
<el-table-column :label="$t('客户名称')" align="center" prop="name" >
<template v-slot="scope">
<router-link :to="{path: '/customer/indirectInfo',query: {id: scope.row.id}}" class="link-type">
<span>{{ scope.row.name }}</span>
<span>{{ $l(scope.row,'name') }}</span>
</router-link>
</template>
</el-table-column>
......
......@@ -15,7 +15,8 @@
<el-card style="margin-top: 15px;">
<el-descriptions :column="4" border>
<el-descriptions-item :label="$t('客户编号')">{{ customer.number }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户名称')">{{ customer.name }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户名称')">{{ customer.name}}</el-descriptions-item>
<el-descriptions-item :label="$t('客户英文名称')">{{customer.nameEn }}</el-descriptions-item>
<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('出货渠道')">
......@@ -38,6 +39,7 @@
<el-descriptions-item :label="$t('推介人')">{{ customer.promoterName }}</el-descriptions-item>
<el-descriptions-item :label="$t('客户经理')">{{customerService }}</el-descriptions-item>
<el-descriptions-item :label="$t('公司名称')">{{ customer.company }}</el-descriptions-item>
<el-descriptions-item :label="$t('公司英文名称')">{{ customer.companyEn }}</el-descriptions-item>
<el-descriptions-item :label="$t('联系地址')">{{ customer.address }}</el-descriptions-item>
<el-descriptions-item :label="$t('创建时间')">{{ parseTime(customer.createTime) }}</el-descriptions-item>
<el-descriptions-item :label="$t('创建人')">{{ customer.founderName }}</el-descriptions-item>
......@@ -48,7 +50,8 @@
<el-image v-show="!!customer.picture" :src="customer.picture" style="width: 100px;height: 100px"></el-image>
</el-descriptions-item>
<el-descriptions-item :label="$t('备注')">{{ customer.remarks }}</el-descriptions-item>
<el-descriptions-item :label="$t('新老客户')">{{ customer.isNew ?$t('新客户') : $t('老客户') }}</el-descriptions-item>
<el-descriptions-item :label="$t('业绩类型')">{{ customer.isNew ?$t('新客户') : $t('老客户') }}</el-descriptions-item>
<el-descriptions-item :label="$t('付款人姓名')">{{ customer.payerName }}</el-descriptions-item>
<el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证姓名')">{{ customer.carName }}</el-descriptions-item>
<el-descriptions-item v-if="permissions.includes('ecw:customer:query-card')" :label="$t('身份证号码')">{{ customer.carNo }}</el-descriptions-item>
<!-- <el-descriptions-item :label="$t('信用等级')">{{ customer }}</el-descriptions-item>-->
......@@ -77,6 +80,12 @@
prop="name"
:label="$t('联系人')"
>
</el-table-column>
<el-table-column
prop="nameEn"
:label="$t('联系人英文名称')"
>
</el-table-column>
<el-table-column
prop="phoneNew"
......@@ -165,7 +174,7 @@
@change="changeDate"
style="width: 240px"
value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
type="datetimerange"
range-separator="-"
:start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
</el-form-item>
......@@ -231,6 +240,11 @@
<!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status" />-->
<!-- </template>-->
</el-table-column>
<el-table-column :label="$t('入仓时间')">
<template v-slot="{row}">
{{parseTime(row.rucangTime)}}
</template>
</el-table-column>
</el-table>
<pagination @pagination="getorderList" :page.sync="queryParams.page" :limit.sync="queryParams.rows" :total="orderTotal" ></pagination>
</el-card>
......
......@@ -85,7 +85,11 @@
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" />
<el-table-column :label="$t('客户名称')" align="center" prop="name" >
<template v-slot="{row}">
{{$l(row, 'name')}}
</template>
</el-table-column>
<el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
......
......@@ -96,7 +96,11 @@
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" />
<el-table-column :label="$t('客户名称')" align="center" prop="name" >
<template v-slot="{row}">
{{$l(row, 'name')}}
</template>
</el-table-column>
<el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
......
......@@ -73,6 +73,7 @@
<dict-tag :type="DICT_TYPE.CUSTOMER_ESOURCE_TYPE" :value="scope.row.customerType"/>
</template>
</el-table-column>
<el-table-column :label="$t('业绩类型')" align="center" prop="achieveType"/>
<el-table-column :label="$t('报价单号')" align="center" width="180">
<template slot-scope="scope">
<span>{{scope.row.number}}</span>
......@@ -130,7 +131,7 @@
import {listServiceUser} from "@/api/system/user";
export default {
name: "DeptTarget",
name: "EcwDepttargetAllachievement",
components: {},
data() {
return {
......@@ -219,7 +220,11 @@
}
}
},
created() {
activated() {
this.getChannelList();
this.getList();
},
created() {
this.getChannelList();
this.getList();
listServiceUser().then(r=>{
......
......@@ -154,7 +154,7 @@
import { parseTime } from '@/utils/ruoyi';
export default {
name: "DeptTarget",
name: "EcwDepttargetIndex",
components: {},
data() {
return {
......@@ -266,7 +266,11 @@ import { parseTime } from '@/utils/ruoyi';
this.getChannelList();
this.getList();
},
methods: {
activated() {
this.getChannelList();
this.getList();
},
methods: {
/** 查询部门列表 */
getDeptList(){
this.loading = true;
......
......@@ -71,6 +71,7 @@
<dict-tag :type="DICT_TYPE.CUSTOMER_ESOURCE_TYPE" :value="scope.row.customerType"/>
</template>
</el-table-column>
<el-table-column :label="$t('业绩类型')" align="center" prop="achieveType"/>
<el-table-column :label="$t('报价单号')" align="center" width="180">
<template slot-scope="scope">
<span>{{scope.row.number}}</span>
......@@ -126,7 +127,7 @@
import {listServiceUser} from "@/api/system/user";
export default {
name: "DeptTarget",
name: "EcwDepttargetMyachievement",
components: {},
data() {
return {
......@@ -215,7 +216,11 @@
}
}
},
created() {
activated() {
this.getChannelList();
this.getList();
},
created() {
this.getChannelList();
this.getList();
listServiceUser().then(r=>{
......
......@@ -70,6 +70,7 @@
<dict-tag :type="DICT_TYPE.CUSTOMER_ESOURCE_TYPE" :value="scope.row.customerType"/>
</template>
</el-table-column>
<el-table-column :label="$t('业绩类型')" align="center" prop="achieveType"/>
<el-table-column :label="$t('报价单号')" align="center" width="180">
<template slot-scope="scope">
<span>{{scope.row.number}}</span>
......@@ -126,7 +127,7 @@
import {listServiceUser} from "@/api/system/user";
export default {
name: "DeptTarget",
name: "EcwDepttargetMydeptachievement",
components: {},
data() {
return {
......
......@@ -155,7 +155,7 @@
import { parseTime } from '@/utils/ruoyi';
export default {
name: "DeptTarget",
name: "EcwDepttargetMydepttarget",
components: {},
data() {
return {
......@@ -267,13 +267,17 @@ import { parseTime } from '@/utils/ruoyi';
this.getChannelList();
this.getList();
},
methods: {
activated() {
this.getChannelList();
this.getList();
},
methods: {
/** 查询部门列表 */
getDeptList(){
this.loading = true;
myListDept(this.queryParams).then(response => {
this.deptList = this.handleTree(response.data, "id");
console.log("this.deptList:"+JSON.stringify(this.deptList));
// console.log("this.deptList:"+JSON.stringify(this.deptList));
this.deptList.forEach((item) => {
this.normalizer(item);
// this.deptData.push(item);
......
......@@ -85,7 +85,11 @@
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" />
<el-table-column :label="$t('客户名称')" align="center" prop="name" >
<template v-slot="{row}">
{{$l(row, 'name')}}
</template>
</el-table-column>
<el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
......
......@@ -90,7 +90,11 @@
</router-link>
</template>
</el-table-column>
<el-table-column :label="$t('客户名称')" align="center" prop="name" />
<el-table-column :label="$t('客户名称')" align="center" prop="name" >
<template v-slot="{row}">
{{$l(row, 'name')}}
</template>
</el-table-column>
<el-table-column :label="$t('客户等级')" align="center" prop="vipLevelNameZh">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.CUSTOMER_LEVEL" :value="scope.row.level" />
......
<script>
// 对edit组件复用并更名,防止keepalive缓存数据
import edit from './edit.vue'
edit.name = 'OfferCreate'
edit.name = 'EcwOfferCreate'
export default edit
</script>
\ No newline at end of file
</script>
......@@ -520,6 +520,16 @@ import QuickCreateCustomer from '@/components/QuickCreateCustomer'
import {getCustomerContactsSelect} from '@/api/ecw/customerContacts'
import Decimal from 'decimal.js'
window.Decimal= Decimal
const createDefaultForm = () => {
return {
sendstatus:0,
type: [],
control: false,
isCargoControl: false,
prodCreateReqVOList:[],
transportVO: {}
}
}
export default {
name: "EcwOfferEdit",
components: {
......@@ -542,16 +552,9 @@ export default {
// couponList: [],
fee: {}, // 费用
// 表单参数
form: {
sendstatus:0,
type: [],
control: false,
isCargoControl: false,
prodCreateReqVOList:[],
transportVO: {}
},
form: {...createDefaultForm()},
// 表单校验
labelStyle: 'width:120px',
productNames: {}, // 品名id和名称对应关系
couponAvailableGroupDtoList: [], // 可用优惠
......@@ -771,7 +774,7 @@ export default {
currencyId: this.form.otherFeeCurrencyId,
amount: Decimal(this.form.otherFee)
}
// 如果保价费跟其他费用是同一种货币(都是美元)
if(!withInsuranceFee && this.fee && this.fee.insuranceFee && this.form.otherFeeCurrencyId == 1){
fee.amount = fee.amount.plus(this.fee.insuranceFee)
......@@ -780,7 +783,7 @@ export default {
arr.push(fee)
}
return arr
},
......@@ -823,7 +826,7 @@ export default {
}))
}
this.getOpenedRouterList()
// 更换运输方式之后,之前选择的路线会失效,需要重新选择
if(oldTransportId && oldTransportId != transportId && transportId != this.selectedRouter?.transportType){
console.log('重置路线',oldTransportId, transportId, this.selectedRouter?.transportType)
......@@ -840,13 +843,13 @@ export default {
this.$set(this.form, 'departureId', router.startCityId)
this.$set(this.form, 'objectiveId', router.destCityId)
}
this.$nextTick(() => {
this.calculationPrice('form.lineId')
})
},
'form.transportVO.packageTypeArr'(val){
this.$set(this.form.transportVO, 'packageType', val.join(','))
this.$set(this.form.transportVO, 'packageType', (val || []).join(','))
},
// 选择的路线变化后,需要判断是否开通了对应的服务,如果没开通需要取消对应的服务选择
selectedRouter(val){
......@@ -982,6 +985,8 @@ export default {
if(this.form.channelId){
params.channelId = this.form.channelId
}
// 如果没有任何条件,不请求接口
if(!params.startCityId && !params.destCityId && !params.transportType && !params.channelId) return false
getOpenedRouterList(params).then(res => this.routerList = res.data)
},
// 计算体积
......@@ -1035,6 +1040,14 @@ export default {
})
// 添加的提交
createOffer(data).then(response => {
// 重置表单内容
this.$set(this, 'form', {...createDefaultForm()})
this.routerList = []
this.$nextTick(() => {
console.log('清理表单校验和路线')
this.addProduct()
this.$refs.form.clearValidate()
})
this.$modal.msgSuccess(this.$t("新增成功"));
this.$redirect('index')
});
......
......@@ -42,10 +42,7 @@
{{parseTime(row.rucangTime)}}
</template>
</el-table-column>
<el-table-column :label="$t('状态')">
<template v-slot:default="scope">
<dict-tag :value="scope.row.status" :type="DICT_TYPE.ORDER_STATUS"></dict-tag>
</template>
<el-table-column :label="$t('状态')" prop="statusMsg">
</el-table-column>
<el-table-column :label="$t('操作')">
<template v-slot:default="scope">
......
......@@ -20,7 +20,7 @@
{{$t('已加入关联订单列表')}}
</h1>
<div style="flex: 1;margin-left: 20px;">
<el-button :disabled="multipleSelection.length === 0" type="primary" @click="batchGuanlianOrderByOrderId(multipleSelection.map(e =>({orderId:orderId,relateOrderId:e.relateOrderId})))" >{{$t('批量移出')}}</el-button>
<el-button :disabled="multipleSelection.length === 0" type="primary" @click="batchGuanlianOrderByOrderId(multipleSelection.map(e =>({orderId:orderId,relateOrderId:e.orderId})))" >{{$t('批量移出')}}</el-button>
</div>
<div>
<el-button type="primary" @click="$router.push(`/order/add-associated-order/${orderId}`)">{{$t('添加关联订单')}}</el-button>
......@@ -54,7 +54,7 @@
</el-table-column>
<el-table-column :label="$t('状态')" prop="status" >
<template v-slot:default="scope">
<dict-tag :value="scope.row.orderBackVO.status" :type="DICT_TYPE.ORDER_STATUS" ></dict-tag>
{{scope.row.orderBackVO.statusMsg}}
</template>
</el-table-column>
<el-table-column :label="$t('操作人')" prop="creator">
......@@ -69,7 +69,7 @@
</el-table-column>
<el-table-column :label="$t('操作')">
<template v-slot:default='scope'>
<el-button type="text" @click ="guanlianOrderByOrderId(scope.row.relateOrderId)">
<el-button type="text" @click ="guanlianOrderByOrderId(scope.row.orderId)">
{{$t('移出')}}
</el-button>
</template>
......
......@@ -57,6 +57,13 @@
<el-option :label="$t('自有仓')" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('订单类型')" prop="number">
<el-select v-model="queryParams.type" :placeholder="$t('请选择')" clearable >
<el-option :label="$t('普通订单')" :value="0"></el-option>
<el-option :label="$t('集运服务')" :value="1"></el-option>
<el-option :label="$t('海外仓')" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
......
<template>
<el-dialog :visible="true" title="日志详情" :before-close="closeDialog">
<el-form label-width="100px">
<el-form-item label="ID">{{detail.id}}</el-form-item>
<el-form-item :label="$t('时间')">{{detail.createTime|parseTime}}</el-form-item>
<el-form-item :label="$t('操作人')">{{detail.creatorName}}【ID: {{detail.creator}}</el-form-item>
<el-form-item :label="$t('操作人类型')">{{detail.userType == 2 ? $t('管理员') : $t('会员')}}</el-form-item>
<el-form-item :label="$t('操作描述')">{{detail.msg}}</el-form-item>
<el-form-item :label="$t('操作类型')">{{detail.type}}</el-form-item>
<el-form-item :label="$t('请求地址')">{{detail.requestUrl}}</el-form-item>
<el-form-item :label="$t('请求备注')">{{detail.note}}</el-form-item>
<el-form-item :label="$t('请求内容')">{{detail.body}}</el-form-item>
</el-form>
</el-dialog>
</template>
<script>
import {getOperateLogDetail} from "@/api/ecw/order";
import {parseTime} from '@/utils/ruoyi'
export default {
name: "OperateLogDetail",
filters: {parseTime},
props:{
logId: Number
},
data(){
return {
detail: null
}
},
created() {
this.$nextTick(this.getDetail)
},
methods:{
getDetail(){
getOperateLogDetail(this.logId).then(res => {
this.detail = res.data
})
},
closeDialog(){
this.$emit('close')
}
}
}
</script>
<style scoped>
</style>
<template>
<el-dialog :visible="true" title="撤销拆单" :before-close="close">
<el-form :model="form" label-width="100px">
<!--<el-form-item label="申请理由">
<el-input v-model="form.reason"></el-input>
</el-form-item>-->
<el-form-item label="抄送">
<work-flow v-model="form.ccIds" xmlkey="revoke_split_order"></work-flow>
</el-form-item>
</el-form>
<div slot="footer">
<template v-if="formId" >
<el-button type="primary" @click="toBpmDetail">审核中</el-button>
<el-button type="default" @click="cancelApproval">取消审核</el-button>
</template>
<el-button v-else type="primary" @click="submit" :loading="submitting" :disabled="submitting">确认</el-button>
</div>
</el-dialog>
</template>
<script>
import WorkFlow from "@/components/WorkFlow";
import {cancelSplitRevoke, orderSplitRevoke, splitRevoke} from '@/api/ecw/order'
export default {
name: "SplitRevoke",
components: { WorkFlow},
props:{
orderId: Number
},
data(){
return {
formId: null, // 审批ID
submitting: false,
form: {
ccIds: []
}
}
},
created() {
splitRevoke(this.orderId).then(res =>{
console.log(res)
if(res.data.formId){
this.formId = res.data.formId
}
})
},
methods:{
submit(){
console.log('提交')
if(this.submitting) return
this.submitting = true
orderSplitRevoke({
orderId: this.orderId,
copyUserId: this.form.ccIds
}).then(res => {
this.$message.success(res.msg || '操作成功')
this.close()
}).finally(() =>{
this.submitting = false
})
},
close(){
this.$emit('close')
},
toBpmDetail(){
this.$router.push(`/bpm/process-instance/detail?id=${this.formId}`)
this.close()
},
// 取消审核
cancelApproval(){
this.$prompt(this.$t("请输入取消原因")).then(res => {
return cancelSplitRevoke({orderId: this.orderId, reason: res.value})
}).then(res => {
this.$message.success(res.msg || this.$t('操作成功'))
this.close()
})
}
}
}
</script>
<style scoped>
</style>
<!--拆单审核中的申请信息部分-->
<template>
<div v-if="orders">
<el-table :data="orders">
<el-table-column :label="$t('订单编号')">
<template slot-scope="scope">{{scope.row.orderNo}}</template>
</el-table-column>
<el-table-column :label="$t('唛头')">
<template slot-scope="{row}">{{row.marks}}</template>
</el-table-column>
<el-table-column label="订单状态">
<template slot-scope="{row}">{{row.statusMsg}}</template>
</el-table-column>
<el-table-column :label="$t('填单统计')">
<template slot-scope="{row}">
{{row.costVO.totalNum}}{{$t('')}}<br/>{{row.costVO.totalVolume}}<br/>{{row.costVO.totalWeight}}kg
</template>
</el-table-column>
<el-table-column :label="$t('入仓统计')">
<template slot-scope="{row}">
{{row.sumNum}}{{$t('')}}<br/>{{row.sumVolume}}<br/>{{row.sumWeight}}kg
</template>
</el-table-column>
<el-table-column :label="$t('收费统计')">
<template slot-scope="{row}">
{{row.sumNum}}{{$t('')}}<br/>{{row.wvolume}}<br/>{{row.vweight}}kg
</template>
</el-table-column>
<el-table-column :label="$t('入仓时间')">
<template slot-scope="{row}">
{{row.rucangTime|parseTime}}
</template>
</el-table-column>
<el-table-column :label="$t('运输方式')">
<template slot-scope="{row}">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="row.transportId" />
</template>
</el-table-column>
<el-table-column :label="$t('出货渠道')">
<template slot-scope="{row}">
{{getChannelName(row.channelId)}}
</template>
</el-table-column>
<el-table-column :label="$t('始发仓')">
<template slot-scope="{row}">{{jsonParse(row.departureVO.departure).titleZh}}</template>
</el-table-column>
<el-table-column :label="$t('目的仓')">
<template slot-scope="{row}">
{{jsonParse(row.objectiveVO.objective).titleZh}}
</template>
</el-table-column>
<el-table-column :label="$t('发货人')">
<template slot-scope="{row}">
{{row.consignorVO.name}}
</template>
</el-table-column>
<el-table-column :label="$t('收货人')">
<template slot-scope="{row}">
{{row.consigneeVO.name}}
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import {getApproval, getOrder, splitRevokeApply} from '@/api/ecw/order'
import {getMergeListByMergeId} from '@/api/ecw/orderHandle'
import {getChannelListByIds} from '@/api/ecw/channel'
import {parseTime} from '@/utils/ruoyi'
export default {
name: 'SplitRevokeDetail',
filters: {parseTime},
props:{
id: [String, Number]
},
data(){
return {
orders: null,
channels: []
}
},
watch:{
id(){
this.getData()
}
},
computed:{
jsonParse(){
return d => {
return JSON.parse(d)
}
},
getChannelName(){
return id => {
let channel = this.channels.find(item => item.channelId == id)
return channel ? channel.nameZh : '/'
}
}
},
created(){
if(this.id){
this.getData()
}
},
methods:{
getData(){
splitRevokeApply(this.id).then(res => {
this.orders = res.data.childrenOrderList
this.getChannels()
})
},
getChannels(){
let ids = []
this.orders.forEach(order => {
if(order.channelId){
ids.push(order.channelId)
}
})
if(!ids.length) return false
getChannelListByIds({ids: ids.join(',')}).then(res => {
this.channels = res.data
})
}
}
}
</script>
<style scoped lang="scss">
.title{
padding: 10px 0;
span{
font-size: 14px;
font-weight: bold;
}
}
</style>
......@@ -130,6 +130,16 @@
<div>
{{ FeeDetails.details && FeeDetails.details.reason ? FeeDetails.details.reason :''}}
</div>
<p>{{$t('退仓图片')}}</p>
<div>
<el-image
v-for="(item, index) in (FeeDetails.details.imgUrl || '').split(',')"
:key = 'index'
style="width: 100px; height: 100px;margin:10px;"
:src="item"
:preview-src-list="(FeeDetails.details.imgUrl || '').split(',')">
</el-image>
</div>
</div>
<div v-if="type === 4">
<p>{{ $t('申请理由') }}</p>
......
<script>
// 对edit组件复用并更名,防止keepalive缓存数据
import edit from './edit.vue'
edit.name = 'OrderCreate'
edit.name = 'EcwOrderCreate'
export default edit
</script>
\ No newline at end of file
</script>
This diff is collapsed.
This diff is collapsed.
......@@ -85,6 +85,11 @@
<el-option :label="$t('自有仓')" :value="0"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="">
<el-checkbox style="margin-left:60px" v-model="queryParams.isHaveCustomer" @change="handleQuery">{{$t('无归属订单')}}</el-checkbox>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<!-- <el-button icon="el-icon-refresh" @click="reset">{{ $t('重置') }}</el-button> -->
......@@ -178,7 +183,7 @@
<el-button v-else-if="scope.row.orderExceptionType=='order_lack_box_exception'" v-hasPermi="['ecw:exception:lackBox']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_pay_exception'" v-hasPermi="['ecw:exception:pay']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_miss_exception'" v-hasPermi="['ecw:exception:miss']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_superfluous_goods_exception'" v-hasPermi="['ecw:exception:superfluousGoods']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_superfluous_goods_exception'" v-hasPermi="['ecw:exception:superfluousGoods']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_in_water_exception'" v-hasPermi="['ecw:exception:inWater']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_damage_exception'" v-hasPermi="['ecw:exception:damaged']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_heavy_cargo_exception'" v-hasPermi="['ecw:exception:heavyCargo']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
......@@ -190,6 +195,7 @@
<el-button v-else-if="scope.row.orderExceptionType=='order_bulky_cargo_exception'" v-hasPermi="['ecw:exception:bulkyCargo']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_pick_up_exception'" v-hasPermi="['ecw:exception:pickUp']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='not_customer_service_exception'" v-hasPermi="['ecw:exception:notCustomer']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='goods_add_exception'" v-hasPermi="['ecw:exception:goodsAddException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row.orderId)">{{$t('处理')}}</el-button>
</template>
</el-table-column>
</el-table>
......@@ -290,6 +296,7 @@ export default {
},
/** 搜索按钮操作 */
handleQuery() {
console.log(this.queryParams)
this.queryParams.page = 1
this.getList();
},
......
......@@ -64,7 +64,7 @@
<dict-selector :type="DICT_TYPE.ECW_WAREHOUSING_TYPE" v-model="queryParams.warehouseType" clearable/>
</el-form-item>
<el-form-item :label="$t('客户经理')" >
<user-selector v-model="queryParams.salesmanId" clearable @change="handleQuery"/>
<user-selector manage v-model="queryParams.salesmanId" clearable @change="handleQuery"/>
</el-form-item>
<el-form-item :label="$t('订单状态')" prop="status">
<dict-selector :type="DICT_TYPE.ORDER_STATUS" v-model="queryParams.status"
......@@ -105,7 +105,13 @@
<dict-selector :type="DICT_TYPE.ECW_ORDER_APPROVAL_TYPE" v-model="queryParams.auditType"
@keyup.enter.native="handleQuery" clearable />
</el-form-item>
<el-form-item :label="$t('订单类型')" prop="number">
<el-select v-model="queryParams.type" :placeholder="$t('请选择')" clearable >
<el-option :label="$t('普通订单')" :value="0"></el-option>
<el-option :label="$t('集运服务')" :value="1"></el-option>
<el-option :label="$t('海外仓')" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
......@@ -316,6 +322,12 @@
<el-dropdown-item @click.native="$router.push(`/order/splitApply?orderId=${scope.row.orderId}`)" v-hasPermi="['ecw:order:split']">{{$t('拆单申请')}}</el-dropdown-item>
</template>
<!--撤销拆单,拆单的子订单,预装前显示,预装后变灰不可点击-->
<template v-if="scope.row.parentOrderId && scope.row.status < 11">
<el-dropdown-item @click.native="splitRevoke(scope.row)" v-hasPermi="['ecw:order:split_revoke']">{{$t('撤销拆单')}}</el-dropdown-item>
</template>
<!-- 合单日志,提货日志 -->
<template v-if="(
scope.row.status > 2
......@@ -453,6 +465,7 @@
<fee-application :order-id="orderId" :currencys="JSON.stringify(currencyList)" :dialog-visible.sync="feeApplicationBol"></fee-application>
<merge-log :order-no="showMergedLogOrderNo" v-if="showMergedLogOrderNo !== null" @close="showMergedLogOrderNo=null" />
<pickup-log v-if="showPickupLogOrderNo" :order-no="showPickupLogOrderNo" @close="showPickupLogOrderNo=null" @delete="getList" />
<SplitRevoke v-if="splitRevokeOrderId" :order-id="splitRevokeOrderId" @close="splitRevokeOrderId=null;getList()"></SplitRevoke>
</div>
</template>
......@@ -462,7 +475,6 @@ import ProductSelector from '@/components/ProductSelector'
import { getProductAttrList } from '@/api/ecw/productAttr'
import CustomerSelector from '@/components/CustomerSelector'
import specialNeeds from '@/views/ecw/order/components/specialNeeds';
import { getTradeCityList } from '@/api/ecw/region'
import {
createOrder,
updateOrder,
......@@ -488,7 +500,7 @@ import {
exportCustomsDatas,
exportShippingDatas,
exportShipFee,
exportUnload
exportUnload, splitCancelApply, orderSplitRevoke
} from "@/api/ecw/order";
/* import { getDictDatas, DICT_TYPE } from '@/utils/dict'; */
import PrintTag from './components/PrintTag'
......@@ -503,6 +515,7 @@ import MergeLog from '@/views/ecw/order/components/MergeLog'
import PickupLog from './components/PickupLog'
import {getWarehouseList} from '@/api/ecw/warehouse'
import { getCurrencyPage } from "@/api/ecw/currency";
import SplitRevoke from "@/views/ecw/order/components/SplitRevoke";
export default {
name: "EcwOrderIndex",
components: {
......@@ -511,6 +524,7 @@ export default {
BatchSingleApplication,
MergeLog,
PickupLog,
SplitRevoke,
CustomerSelector, ProductSelector, Selector,specialNeeds,PrintTag, PrintWarehouseReceipt, PrintLadingBill, BatchPickup,withdrawal
},
props: {
......@@ -574,6 +588,8 @@ export default {
},
currencyList:[],
statistics: null ,// 统计数据
splitRevokeOrderId: null, // 撤销拆单的订单ID
};
},
watch:{
......@@ -637,7 +653,7 @@ export default {
}
},
activated(){
this.handleQuery()
this.getList()
},
created() {
this.getTransportFromRoute()
......@@ -649,6 +665,10 @@ export default {
getCurrencyPage(this.params).then(res => this.currencyList = res.data.list)
},
methods: {
// 取消拆单申请
splitRevoke(row){
this.splitRevokeOrderId = row.orderId
},
// 获得导出函数
getExportFunc(){
let func = orderExportSearch
......@@ -741,10 +761,10 @@ export default {
return this.$alert('不支持此操作')
}
this.$confirm(action.confirm)
.then(res => {
.then(() => {
return action.callable(orderId)
})
.then(res => {
.then(() => {
this.getList()
})
},
......@@ -841,14 +861,13 @@ export default {
specialRendering(val){
if(val !== undefined){
let i = val.split(',')
let special = this.getDictDatas(this.DICT_TYPE.ORDER_SPECIAL_NEEDS).filter(e => {
return this.getDictDatas(this.DICT_TYPE.ORDER_SPECIAL_NEEDS).filter(e => {
return i.indexOf(e.value) > -1
})
return special
}
},
deleteSpecial(id,orderId){
this.$confirm(this.$t('确定删除此特需么?')).then(res => {
this.$confirm(this.$t('确定删除此特需么?')).then(() => {
return orderSpecialNeed({orderId:orderId,advanceType:id})
}).then(() => {
this.getList()
......
......@@ -54,7 +54,7 @@
</el-table-column>
<el-table-column :label="$t('状态')" prop="status" >
<template v-slot:default="scope">
<dict-tag :value="scope.row.orderBackVO.status" :type="DICT_TYPE.ORDER_STATUS" ></dict-tag>
{{scope.row.orderBackVO.statusMsg}}
</template>
</el-table-column>
<el-table-column :label="$t('操作人')">
......
......@@ -42,10 +42,7 @@
{{parseTime(row.rucangTime)}}
</template>
</el-table-column>
<el-table-column :label="$t('状态')">
<template v-slot:default="scope">
<dict-tag :value="scope.row.status" :type="DICT_TYPE.ORDER_STATUS"></dict-tag>
</template>
<el-table-column :label="$t('状态')" prop="statusMsg" >
</el-table-column>
<el-table-column :label="$t('操作')">
<template v-slot:default="scope">
......
......@@ -110,7 +110,25 @@
</el-table-column>
<el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope">
<el-tag v-if="scope.row.orderExceptionStatus==2">{{$t('已完成')}}</el-tag>
<!-- <el-button v-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType!='order_no_quote_exception'" v-hasPermi="['ecw:exception:seeExceptionInfo']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button> -->
<el-button v-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_superfluous_box_exception'" v-hasPermi="['ecw:exception:superfluousBox']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_lack_box_exception'" v-hasPermi="['ecw:exception:lackBox']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_pay_exception'" v-hasPermi="['ecw:exception:pay']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_miss_exception'" v-hasPermi="['ecw:exception:miss']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_superfluous_goods_exception'" v-hasPermi="['ecw:exception:superfluousGoods']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_in_water_exception'" v-hasPermi="['ecw:exception:inWater']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_damage_exception'" v-hasPermi="['ecw:exception:damaged']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_heavy_cargo_exception'" v-hasPermi="['ecw:exception:heavyCargo']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_doc_exception'" v-hasPermi="['ecw:exception:doc']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_consignor_exception'" v-hasPermi="['ecw:exception:consignor']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_other_exception'" v-hasPermi="['ecw:exception:other']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_cod_exception'" v-hasPermi="['ecw:exception:cod']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_bulky_cargo_exception'" v-hasPermi="['ecw:exception:bulkyCargo']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='order_pick_up_exception'" v-hasPermi="['ecw:exception:pickUp']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='not_customer_service_exception'" v-hasPermi="['ecw:exception:notCustomer']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionStatus==2&&scope.row.orderExceptionType=='goods_add_exception'" v-hasPermi="['ecw:exception:goodsAddException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('查看')}}</el-button>
<el-tag style="margin-left:10px" v-if="scope.row.orderExceptionStatus==2">{{$t('已完成')}}</el-tag>
<el-button v-else-if="scope.row.orderExceptionType=='order_superfluous_box_exception'" v-hasPermi="['ecw:exception:superfluousBox']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_lack_box_exception'" v-hasPermi="['ecw:exception:lackBox']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_pay_exception'" v-hasPermi="['ecw:exception:pay']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
......@@ -127,6 +145,7 @@
<el-button v-else-if="scope.row.orderExceptionType=='order_bulky_cargo_exception'" v-hasPermi="['ecw:exception:bulkyCargo']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='order_pick_up_exception'" v-hasPermi="['ecw:exception:pickUp']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='not_customer_service_exception'" v-hasPermi="['ecw:exception:notCustomer']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
<el-button v-else-if="scope.row.orderExceptionType=='goods_add_exception'" v-hasPermi="['ecw:exception:goodsAddException']" size="mini" type="text" icon="el-icon-edit" @click="handEdit(scope.row)">{{$t('处理')}}</el-button>
</template>
</el-table-column>
</el-table>
......
This diff is collapsed.
This diff is collapsed.
......@@ -8,15 +8,17 @@
<div class="title">{{$t('新增订单生成成功')}}</div>
<div class="line">{{$t('订单号')}}{{order.orderNo}}</div>
<div class="line">{{$t('运输方式')}}<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.transportId" /></div>
<div class="line">{{$t('路线')}}{{order.logisticsInfoDto.startTitleZh}} >> {{order.logisticsInfoDto.destTitleZh}}</div>
<div class="line">{{$t('路线')}}{{$l(order.logisticsInfoDto, 'startTitle')}} >> {{$l(order.logisticsInfoDto, 'destTitle')}}</div>
<div class="line">{{$t('商品列表')}}
<span v-for="(item, index) in order.orderItemVOList" :key="index">
{{item.prodTitleZh}}
{{$l(item, 'prodTitle')}}
<template v-if="index < order.orderItemVOList.length - 1">{{ $t('') }}</template>
</span>
</div>
<div class="line">{{$t('仓库地址')}}:{{order.logisticsInfoDto.startAddressZh}}</div>
<div class="line">{{$t('仓库地址')}}:{{$l(order.logisticsInfoDto, 'startAddress')}}</div>
<div class="line">{{$t('仓库电话')}}: {{order.logisticsInfoDto.startTell}}</div>
<!-- v1.7新增 -->
<div class="line">{{$t('为保证入仓数据准确性,入仓请带上一份装箱单(品名,件数,毛重,尺寸方数,是否有牌)')}}</div>
<div class="line"></div>
<div class="line">{{$t('您的订单已提交,谢谢您选择捷道物流!')}}</div>
</el-col>
......@@ -92,4 +94,4 @@ export default {
display: flex;
justify-content: center;
}
</style>
\ No newline at end of file
</style>
......@@ -90,7 +90,6 @@
:title="$t('修改')"
:order="order"
@close="getList"></warehouse>
<!-- <el-button v-if="isEdit" size="mini" type="text" @click="handleWarehousing(row)">{{$t('修改')}}</el-button>-->
<template v-else-if="
wareItem(row.orderItemId)
&& wareItem(row.orderItemId).orderWarehouseInBackItemDoList
......@@ -103,7 +102,6 @@
:title="$t('追加')"
:order="order"
@close="getList"></warehouse>
<!-- <el-button size="mini" type="text" @click="handleWarehousing(row)">{{$t('追加')}}</el-button>-->
<el-button size="mini" type="text" @click="handleWarehousingReturn(row)">{{$t('退仓')}}</el-button>
<!-- </template>-->
</template>
......@@ -114,7 +112,6 @@
:title="$t('入仓')"
:order="order"
@close="getList"></warehouse>
<!-- <el-button v-else size="mini" type="text" @click="handleWarehousing(row)">{{$t('入仓')}}</el-button>-->
</template>
</el-table-column>
</el-table>
......@@ -179,8 +176,6 @@
<warehouse-area-dialog ref="area" :visible.sync="areaVisible" v-model="form.orderLocationCreateReqVOList"
:order-id="orderId" :warehouse-id="warehouseId" :is-editing="isEdit"></warehouse-area-dialog>
<edit-dialog :order="order" :title="title" :order-id="order.orderId" :visible.sync="warehousingVisible" :warehousing="warehousing" :edit="isEdit" :is-jiyun="order.type === 1 || order.type === '1'"></edit-dialog>
<!-- 完成入仓 -->
<el-dialog
:title="$t('确认入仓')"
......@@ -231,7 +226,6 @@ import {
} from '@/api/ecw/order'
import orderBaseInfo from "@/components/OrderBaseInfo"
import WarehouseAreaDialog from '@/components/WarehouseAreaDialog'
import editDialog from '@/views/ecw/order/warehousing/components/editDialog'
import {DICT_TYPE} from "@/utils/dict"
import PrintTag from "@/views/ecw/order/components/PrintTag"
import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt"
......@@ -245,7 +239,6 @@ export default {
components: {
orderBaseInfo,
WarehouseAreaDialog,
editDialog,
PrintTag,
PrintWarehouseReceipt,
imageUpload,
......@@ -477,11 +470,6 @@ export default {
}
})
},
handleWarehousing(row) {
let wareItem = this.orderItemList.find(item => item.orderItemId == row.orderItemId) || {}
this.warehousing = {...row, ...wareItem}
this.warehousingVisible = true
},
handleWarehousingReturn(item){
this.$confirm(item.prodTitleZh + this.$t('退仓后不可恢复,是否确认退仓?'), this.$t('确定要退仓?'), {
confirmButtonText: this.$t('确定'),
......@@ -507,12 +495,6 @@ export default {
},
watch: {
warehousingVisible(val) {
if (!val){
this.getOrder()
this.getOrderItemList()
}
},
orderSpecialNeeds(val){
val.forEach(e => {
this.form.orderSpecialNeedReceivableReqVoList.push({
......
......@@ -88,36 +88,52 @@
</el-table-column>
<el-table-column :label="$t('重货方数')" v-if="type=='order_heavy_cargo_exception'">
<template slot-scope="scope">
<span>{{scope.row.weVolume||0}}CBM</span>
<span>{{scope.row.chargeVolume||0}}CBM</span>
</template>
</el-table-column>
<el-table-column :label="$t('泡货方数')" v-if="type!='order_heavy_cargo_exception'">
<template slot-scope="scope">
<span>{{scope.row.weVolume||0}}CBM</span>
<span>{{scope.row.chargeVolume||0}}CBM</span>
</template>
</el-table-column>
<el-table-column :label="$t('重货重量')" v-if="type=='order_heavy_cargo_exception'">
<template slot-scope="scope">
<span>{{scope.row.voWeight||0}}KG</span>
<span>{{scope.row.chargeWeight ||0}}KG</span>
</template>
</el-table-column>
<el-table-column :label="$t('泡货重量')" v-if="type!='order_heavy_cargo_exception'" >
<template slot-scope="scope">
<span>{{scope.row.vweight||0}}KG</span>
<span>{{scope.row.chargeWeight ||0}}KG</span>
</template>
</el-table-column>
<el-table-column :label="$t('最后操作时间')" scope="handlerTime" />
</el-table>
</el-card>
<el-card v-if="list.orderExceptionStatus==2">
<div slot="header" class="card-title">{{$t('处理结果')}}</div>
<el-descriptions :column="1">
<el-descriptions-item :label="$t('处理时间')">
{{parseTime(handlerParams.handlerTime)}}
</el-descriptions-item>
<el-descriptions-item :label="$t('处理结果')">
{{handlerParams.handlerResult=='general_cargo'?$t('设为普货'):$t('设为已处理')}}
</el-descriptions-item>
<el-descriptions-item :label="$t('备注')">
{{handlerParams.handlerRemark||"无"}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<div slot="footer" class="dialog-footer">
<div>
<div v-if="list.orderExceptionStatus!=2">
<el-button type="primary" @click="submit('general_cargo')">{{$t('设为普货')}}</el-button>
<el-button plain type="primary" @click="submit('process')">{{$t('设为已处理')}}</el-button>
</div>
<div v-else>
<el-button plain type="primary" @click="$store.dispatch('tagsView/delCurrentView')">{{$t('返回')}}</el-button>
</div>
</div>
<el-form :model="handlerParams" ref="queryForms" size="small" label-width="50px" class="card">
<el-form v-if="list.orderExceptionStatus!=2" :model="handlerParams" ref="queryForms" size="small" label-width="50px" class="card">
<el-form-item :label="$t('备注')+':'" size="medium">
<el-input style="width: 500px;" type="textarea" v-model="handlerParams.orderExceptionHandlerRemark" />
</el-form-item>
......@@ -127,7 +143,7 @@
</template>
<script>
import {getExceptionById,handlerExceptionByExceptionId} from "@/api/ecw/orderException"
import {getExceptionById,handlerExceptionByExceptionId,getOrderExcptionResult} from "@/api/ecw/orderException"
import {DICT_TYPE} from '@/utils/dict'
import {getOrder} from '@/api/ecw/order'
import {getProductBrankPage} from '@/api/ecw/productBrank'
......@@ -171,6 +187,9 @@ export default {
getExceptionById(this.id).then(response => {
this.list = response.data;
this.loading = false;
if(this.list.orderExceptionStatus==2){
this.getOrderExcptionResult()
}
this.getOrders()
});
},
......@@ -178,6 +197,14 @@ export default {
var brank = this.branklist.find(item=>item.id==id)
return brank.titleZh||''
},
//获取异常结果
getOrderExcptionResult(){
getOrderExcptionResult({orderExceptionId:this.id}).then(res=>{
this.handlerParams = res.data.list[0]
console.log(this.handlerParams)
})
},
checkCode(data){
if(data.indexOf('+')==-1){
return '+'+data
......@@ -219,7 +246,7 @@ export default {
submit(result){
handlerExceptionByExceptionId({orderExceptionId:this.list.id,orderExceptionHandlerResult:result,orderExceptionHandlerRemark:this.handlerParams.orderExceptionHandlerRemark}).then(res=>{
this.$modal.msgSuccess(this.$t("提交成功"));
this.$router.back()
this.$store.dispatch('tagsView/delCurrentView')
})
}
}
......
......@@ -13,6 +13,9 @@
<el-form-item :label="$t('退仓原因')">
<el-input v-model="params.reason" style="width:500px" type="textarea"></el-input>
</el-form-item>
<el-form-item :label="$t('图片')">
<image-and-video-upload :file-type="['png' , 'jpg', 'jpeg']" :fileSize="50" :isShowTip="true" v-model="params.imgUrl" ></image-and-video-upload>
</el-form-item>
</el-form>
<el-divider></el-divider>
<h2>{{$t('审批流程')}}</h2>
......@@ -37,6 +40,7 @@ import {
warehouseApprovalCancel
} from "@/api/ecw/batchSingleApplication";
import workFlow from "@/components/WorkFlow";
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index.vue";
export default {
name: "withdrawal",
......@@ -45,6 +49,7 @@ export default {
dialogVisible:Boolean
},
components:{
ImageAndVideoUpload,
workFlow
},
data(){
......@@ -55,6 +60,7 @@ export default {
orderNo:undefined,
reason:'',
copyUserId:[],
imgUrl:[]
},
isExamine:true,
details:{},
......@@ -82,6 +88,7 @@ export default {
submit(){
this.params.orderId = this.orderDetails.orderId;
this.params.orderNo =this.orderDetails.orderNo;
this.params.imgUrl = this.params.imgUrl.join(',')
orderWarehouseInDelete(this.params).then(r => {
if(r.code === 0){
this.$message.success(this.$t('退仓成功'));
......
......@@ -159,6 +159,13 @@
</el-form-item>
<el-form-item prop="auditStatus" :label="$t('是否审核')">
<template slot-scope="scope">
<el-select v-model="form.auditStatus">
<el-option v-for="auditStatusItem in auditStatusDictDatas" :key="auditStatusItem.id" :label="$l(auditStatusItem, 'label')" :value="parseInt(auditStatusItem.value)" />
</el-select>
</template>
</el-form-item>
<el-form-item :label="$t('商品编码')" prop="productCode">
<el-input v-model="form.productCode" :placeholder="$t('请输入商品编码')" />
</el-form-item>
......@@ -328,6 +335,7 @@ export default {
packagingList: getDictDatas(DICT_TYPE.ECW_PACKAGING_TYPE),
locationList: getDictDatas(DICT_TYPE.ECW_CONTAINER_LOCATION),
preferentialList:[],
exceptionProductId:0//新增商品异常传的id
};
},
......@@ -372,9 +380,19 @@ export default {
if(this.$route.query.typeId != this.queryParams.typeId){
this.queryParams.typeId = +this.$route.query.typeId || null
}
//新增商品异常跳转商品修改
if(this.$route.query.prodId){
this.exceptionProductId = this.$route.query.prodId
this.handleUpdate({id:this.$route.query.prodId})
}
this.getList()
},
created() {
//新增商品异常跳转商品修改
if(this.$route.query.prodId){
this.exceptionProductId = this.$route.query.prodId
this.handleUpdate({id:this.$route.query.prodId})
}
let typeId = this.$route.query.typeId;
if (typeId) {
this.queryParams.typeId = parseInt(typeId);
......@@ -382,6 +400,7 @@ export default {
this.getAttrList();
this.getTypeList();
this.getList();
},
methods: {
/** 获取产品属性列表 */
......@@ -432,6 +451,7 @@ export default {
params.filter=false;
this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime');
// 执行查询
params.status = 0;
getProductPage(params).then(response => {
this.list = response.data.list;
this.total = response.data.total;
......@@ -487,10 +507,11 @@ export default {
/** 修改按钮操作 */
handleUpdate(row) {
// this.reset();
console.log(row);
const id = row.id;
getProduct(id).then(response => {
this.form = {...response.data,couponIds:[]};
let attrArray = this.form.attrId.split(',');
let attrArray = this.form.attrId?this.form.attrId.split(','):[];
for (let index in attrArray) {
let value = attrArray[index];
attrArray[index] = parseInt(value);
......@@ -519,9 +540,17 @@ export default {
this.form.attrId = this.form.attrArray.join(',');
// 修改的提交
if (this.form.id != null) {
if(this.exceptionProductId){
this.form.productId = this.exceptionProductId
this.form.status = 0
}
updateProduct(this.form).then(response => {
this.$modal.msgSuccess(this.$t("修改成功"));
this.open = false;
if(this.exceptionProductId){
this.exceptionProductId = null
this.$router.replace({ path: '/product/product-list'})
}
this.getList();
});
return;
......
This diff is collapsed.
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