<script>
|
export default {
|
data() {
|
return {
|
// 合并单号
|
dialogOrderMerge: false,
|
// 快递公司对话框
|
mainid: "",
|
expressDialogVisible: false,
|
// 快递公司修改方式:列表批量或者编辑页面修改
|
expressModifyType: "editor",
|
formLabelWidth: "120px",
|
// 快递类别下拉框数据列表
|
expressCorpTypeList: [],
|
// 快递名称下拉框数据列表
|
expressCorpNameList: [],
|
expressCorpType: "",
|
expressCorpName: "",
|
expressCorp_Id: "",
|
// 更改快递单号
|
dialogExpressCode: false,
|
dialogSplitOrder: false,
|
expressCode: "", // 快递单号
|
orderMergeList: [],
|
// 明细导入框
|
dialogLandingdetail: false,
|
fileListdetail: [],
|
// 导入消息
|
importMsg: null,
|
// 一次性收费项弹框
|
isFeeTtemPopup: false,
|
// 收费项下拉值
|
feeTtemList: [],
|
// 选中的收费项
|
feeItem_Ids: [],
|
// 显示新建框
|
addVisible: false
|
};
|
},
|
methods: {
|
// 列表页面按钮点击事件
|
buttonClick(authNode) {
|
switch (authNode) {
|
case "batchConfirm":
|
// 批量审核
|
this.multiAuditing(this.dataListSelections);
|
return false;
|
case "batchSort":
|
// 批量分拣
|
this.multiBatchSort(this.dataListSelections);
|
return false;
|
case "allImport":
|
debugger;
|
// 批量导入
|
this.orderImportConfig.isShowDialog = true;
|
return false;
|
case "changeExpress":
|
// 修改快递公司
|
this.updateExpressCorp(1);
|
this.expressModifyType = "dataList";
|
return false;
|
case "orderMerge":
|
// 订单合并
|
this.orderMerge();
|
return false;
|
case "closeOrder":
|
// 关闭订单
|
this.closeOrder();
|
return false;
|
case "quickOut":
|
// 一键出库
|
this.quickOut();
|
return false;
|
// 新建
|
// case "add":
|
// this.add();
|
// return false;
|
}
|
},
|
add() {
|
this.addVisible = true; // 显示对话框
|
},
|
// 明细按钮点击事件
|
detailButtonClick(authNode) {
|
switch (authNode) {
|
case "detailAdd":
|
// 明细添加,打开物料选择器
|
this.openSelected();
|
return true;
|
case "detailAddPosition":
|
// 打开库存选择器
|
this.openPositionSelected();
|
return true;
|
case "detailSplitOrders":
|
// 拆分订单
|
this.splitOrder();
|
return false;
|
case "detailImport":
|
// 明细导入
|
this.importList();
|
return false;
|
case "lackAnalysis":
|
this.lackAnalysis();
|
return true;
|
}
|
},
|
// 批量审核
|
multiAuditing(dataList) {
|
const the = this;
|
// 获得已选中的ID
|
const selectIDs = dataList.map((item, index, Array) => {
|
return item.order_Id;
|
});
|
if (!selectIDs.length) {
|
this.$message({
|
message: "至少选中一行!",
|
type: "warning"
|
});
|
return;
|
}
|
const statusList = ["终止", "待审核"];
|
const filterList = dataList.filter(item => {
|
return statusList.indexOf(item.statusText) < 0;
|
});
|
if (filterList.length) {
|
this.$message({
|
message: "只有状态终止或待审核才允许审核操作",
|
type: "warning"
|
});
|
return;
|
}
|
|
this.$confirm("确定要批量进行审核操作吗?", "批量审核", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
// 获得已选中的ID
|
const selectIDs = dataList.map((item, index, Array) => {
|
return item.order_Id;
|
});
|
const url = "/api/outbound/order/multiConfirm";
|
const params = {
|
selectIDs: selectIDs
|
};
|
const ref = the.dataList;
|
// const refEditor = the.editor;
|
var callback = res => {
|
the.common.showMsg(res);
|
if (res.result) {
|
ref.loadData();
|
this.editorOptions.config.visible = false;
|
}
|
};
|
the.common.ajax(url, params, callback, ref);
|
})
|
.catch(() => {
|
the.$message({
|
type: "info",
|
message: "已取消"
|
});
|
});
|
},
|
// 批量分拣
|
multiBatchSort(dataList) {
|
const the = this;
|
this.$confirm("请点击“开始分拣”按钮进行出库单分拣,判断库存是否满足出库?", "批量分拣", {
|
confirmButtonText: "开始分拣",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
// 获得已选中的ID
|
var isStatusText = true;
|
const selectIDs = dataList.map((item, index, Array) => {
|
if (item.statusText !== "审核成功") {
|
isStatusText = false;
|
}
|
return item.order_Id;
|
});
|
if (!selectIDs.length) {
|
this.$message({
|
message: "至少选中一行!",
|
type: "warning"
|
});
|
return;
|
}
|
if (isStatusText !== true) {
|
this.$message({
|
message: "只有审核成功的订单才可以分拣!",
|
type: "warning"
|
});
|
return;
|
}
|
const url = "/api/outbound/order/sorting";
|
const params = {
|
openNodeApi: true,
|
selectIDs: selectIDs
|
};
|
const ref = the.dataList;
|
var callback = res => {
|
the.common.showMsg(res);
|
if (res.result) {
|
ref.loadData();
|
}
|
};
|
the.common.ajax(url, params, callback, ref);
|
})
|
.catch(() => {
|
the.$message({
|
type: "info",
|
message: "已取消"
|
});
|
});
|
},
|
// 更改快递公司
|
updateExpressCorp(code) {
|
var ids = [];
|
// 列表批量修改
|
if (this.expressModifyType === "dataList") {
|
ids = this.dataListSelections.map(item => item.order_Id);
|
} else {
|
const order_Id = this.editor.formData["order_Id"];
|
ids = [order_Id];
|
}
|
if (!ids.length) {
|
this.$message({
|
message: "至少选择一条数据!",
|
type: "warning"
|
});
|
return;
|
}
|
if (code === 1) {
|
const url = "/api/basicInfo/base/expressCorp/getExpressCorpType";
|
const params = {};
|
this.common.ajax(url, params, res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.expressCorpTypeList = res.data;
|
}
|
});
|
// 弹出框
|
this.expressDialogVisible = true;
|
}
|
if (code === 2) {
|
const expressCorp_Id = this.expressCorp_Id;
|
const expressCorpType = this.expressCorpType;
|
const expressCorpName = this.expressCorpName;
|
if (!expressCorp_Id) {
|
this.$message({
|
message: "请先选择快递名称!",
|
type: "warning"
|
});
|
return;
|
}
|
const url = "/api/outbound/order/changeExpressCorp";
|
const params = {
|
ids: ids,
|
expressCorpType: expressCorpType,
|
expressCorp_Id: expressCorp_Id,
|
expressCorpName: expressCorpName
|
};
|
this.common.ajax(url, params, res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
// 关闭弹出框
|
this.expressDialogVisible = false;
|
if (this.expressModifyType === "dataList") {
|
this.dataList.reload();
|
} else {
|
this.editor.reload();
|
}
|
}
|
});
|
}
|
},
|
// 选择快递单号后加载快递名称
|
changeExpressCorpType(value) {
|
const expressCorpType = value;
|
const url = "/api/basicInfo/base/expressCorp/getList";
|
const params = {
|
expressCorpType: expressCorpType
|
};
|
this.common.ajax(url, params, res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.expressCorpNameList = res.data;
|
} else {
|
this.expressCorpNameList = [];
|
}
|
});
|
},
|
// 选择弹框的快递名称后赋值
|
changeExpressCorp(value) {
|
this.expressCorp_Id = value;
|
this.expressCorpNameList.forEach(item => {
|
if (item.expressCorp_Id === value) {
|
this.expressCorpName = item.expressCorpName;
|
}
|
});
|
},
|
// 修改快递单号
|
updateExpressCode(code) {
|
const order_Id = this.editor.formData["order_Id"];
|
if (!order_Id) {
|
this.$message({
|
message: "当前数据没有保存!",
|
type: "warning"
|
});
|
return;
|
}
|
if (code === 1) {
|
// 弹出框
|
this.dialogExpressCode = true;
|
}
|
if (code === 2) {
|
// 修改数据
|
const expressCode = this.expressCode;
|
const url = "/api/outbound/order/updateExpressCode";
|
const params = {
|
order_Id: order_Id,
|
expressCode: expressCode
|
};
|
this.common.ajax(url, params, res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
// 关闭弹出框
|
this.dialogExpressCode = false;
|
this.editor.reload();
|
}
|
});
|
}
|
},
|
// 合并单据
|
orderMerge() {
|
this.dialogOrderMerge = true;
|
this.orderMergeList = this.dataListSelections;
|
},
|
// 批量关闭订单
|
closeOrder() {
|
const the = this;
|
const selectIDs = this.dataListSelections.map((item, index, Array) => {
|
return item.order_Id;
|
});
|
this.$confirm("确定要进行批量关闭操作吗?", "关闭单据", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
const url = "/api/outbound/order/closeOrder";
|
const params = {
|
order_Ids: selectIDs
|
};
|
const ref = the.$refs[this.dataListRef];
|
// const refEditor = the.editor;
|
var callback = res => {
|
the.common.showMsg(res);
|
if (res.result) {
|
ref.loadData();
|
this.dialogOrderMerge = false;
|
}
|
};
|
the.common.ajax(url, params, callback, ref);
|
})
|
.catch(() => {
|
the.$message({
|
type: "info",
|
message: "已取消"
|
});
|
});
|
},
|
// 一键出库
|
quickOut() {
|
let isok = true;
|
const order_Ids = this.dataListSelections.map((item, index, Array) => {
|
return item.order_Id;
|
});
|
const statusText = this.dataListSelections.map((item, index, Array) => {
|
return item.statusText;
|
});
|
if (order_Ids.length !== 1) {
|
this.$message.error("请选择一条预到货单进行操作");
|
return false;
|
}
|
|
const statusList = ["待审核", "审核成功"];
|
statusText.forEach(rowData => {
|
if (statusList.indexOf(rowData) < 0) return (isok = false);
|
});
|
if (!isok) {
|
this.$message.error(`只有【${statusList.join(",")}】的单据才允许出库库!`);
|
return false;
|
}
|
const url = "/api/outbound/order/quickOut";
|
const params = {
|
order_Id: Number(order_Ids[0])
|
};
|
this.common.ajax(url, params, res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.dataList.reload();
|
}
|
});
|
},
|
// 明细拆分订单
|
splitOrder() {
|
this.dialogSplitOrder = true;
|
const datas = this.editorOptions.fields.filter(item => item.type === "detail-grid")[0].options.detailSelections;
|
this.splitDetails = JSON.parse(JSON.stringify(datas));
|
},
|
// 确认拆分订单
|
addSplitOrder() {
|
const the = this;
|
const productModelList = [];
|
let modelInfo = {};
|
this.splitDetails.forEach(a => {
|
modelInfo = {
|
orderList_Id: a.orderList_Id,
|
productModel: a.productModel,
|
quantity: a.quantityOrder
|
};
|
productModelList.push(modelInfo);
|
});
|
const order_Id = this.editor.formData["order_Id"];
|
this.$confirm("确定要进行拆分操作吗?", "拆分单据", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
const url = "/api/outbound/order/splitOrder";
|
const params = {
|
order_Id: order_Id,
|
productModelList: productModelList
|
};
|
// const refEditor = the.editor;
|
var callback = res => {
|
the.common.showMsg(res);
|
if (res.result) {
|
this.dataList.reload();
|
this.dialogSplitOrder = false;
|
this.editorOptions.config.visible = false;
|
}
|
};
|
the.common.ajax(url, params, callback, true);
|
})
|
.catch(() => {
|
the.$message({
|
type: "info",
|
message: "已取消"
|
});
|
});
|
},
|
// 确认合并单据
|
addOrderMerge() {
|
const the = this;
|
const mainOrderCode = this.mainid;
|
if (!mainOrderCode) {
|
this.$message({
|
message: "请选择主订单!",
|
type: "warning"
|
});
|
return;
|
}
|
const selectIDs = this.dataListSelections.map((item, index, Array) => {
|
return item.order_Id;
|
});
|
this.$confirm("确定要进行合并操作吗?", "合并单据", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning"
|
})
|
.then(() => {
|
const url = "/api/outbound/order/addOrderMerge";
|
const params = {
|
selectIDs: selectIDs,
|
mainOrderCode: mainOrderCode
|
};
|
const ref = the.$refs[this.dataListRef];
|
// const refEditor = the.editor;
|
var callback = res => {
|
the.common.showMsg(res);
|
if (res.result) {
|
ref.loadData();
|
this.dialogOrderMerge = false;
|
}
|
};
|
the.common.ajax(url, params, callback, ref);
|
})
|
.catch(() => {
|
the.$message({
|
type: "info",
|
message: "已取消"
|
});
|
});
|
},
|
// 明细导入
|
importList() {
|
this.dialogLandingdetail = true;
|
},
|
// 点击文件时的钩子
|
handlePreviewdetail(file) {},
|
handleRemovedetail(file, fileList) {
|
this.fullFileRote = null;
|
},
|
// 上传附件Url
|
detaliupLoadUrl: function() {
|
var domain = this.common.domain;
|
return domain + "/api/common/uploadSingleFile";
|
},
|
// 上传成功后
|
handleSuccessdetail(res, file) {
|
this.common.showMsg("上传成功!");
|
this.fullFileRote = res.data.url;
|
},
|
// 明细导入
|
detailImport() {
|
var the = this;
|
var formData = the.editor.formData;
|
var idValue = formData[the.dataOptions.idField];
|
this.importMsg = null;
|
if (!this.fullFileRote) {
|
this.$message.error("请上传文件!");
|
return;
|
}
|
const url = "api/outbound/order/detailimportExel";
|
const ref = this.dataList;
|
const params = {
|
url: this.fullFileRote,
|
order_Id: idValue
|
};
|
var callback = res => {
|
if (res.result) {
|
this.fullFileRote = null;
|
this.fileListdetail = [];
|
this.importMsg = res.msg;
|
this.dialogLandingdetail = false;
|
this.editorOptions.config.visible = false;
|
ref.loadData();
|
} else {
|
this.importMsg = "<font color='red'>" + res.msg + "</font>";
|
}
|
};
|
this.common.ajax(url, params, callback, true);
|
},
|
// 显示一次性收费项弹窗
|
showFeeTtemPopup() {
|
// 显示一次性收费项弹窗
|
this.feeItem_Ids = [];
|
this.isFeeTtemPopup = true;
|
this.getFeeTtemList();
|
},
|
// 获取一次性收费项值
|
getFeeTtemList() {
|
var url = "/api/common/loadDropDown";
|
var params = {
|
openNodeApi: true,
|
where: [722]
|
};
|
var callBack = res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
if (res.data) {
|
this.feeTtemList = res.data["dropdown722"];
|
}
|
}
|
};
|
this.common.ajax(url, params, callBack, true);
|
},
|
// 修改一次性收费项
|
modifyfeeItems() {
|
const order_Id = this.editor.formData["order_Id"];
|
if (!order_Id) {
|
this.$message({
|
message: "当前数据没有保存!",
|
type: "warning"
|
});
|
return;
|
}
|
const url = "/api/outbound/order/modifyfeeItems";
|
const params = {
|
order_Id: order_Id,
|
feeItem_Ids: this.feeItem_Ids.join("/")
|
};
|
this.common.ajax(url, params, res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
// 关闭弹出框
|
this.isFeeTtemPopup = false;
|
this.editor.reload();
|
}
|
});
|
}
|
}
|
};
|
</script>
|