From 266e4bf654c55ce2f7e9271048e4625f1b8b49f6 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期一, 29 十二月 2025 14:36:08 +0800
Subject: [PATCH] Merge branch 'htq20251215' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu into htq20251215
---
项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue | 347 +++++++++++++++++++--------------------------------------
1 files changed, 118 insertions(+), 229 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
index af6508f..7d27ed6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue"
@@ -1,12 +1,6 @@
<template>
<div>
- <vol-box
- v-model="showDetialBox"
- :lazy="true"
- width="75%"
- :padding="15"
- title="鍗曟嵁鏄庣粏淇℃伅"
- >
+ <vol-box v-model="showDetialBox" :lazy="true" width="75%" :padding="15" title="鍗曟嵁鏄庣粏淇℃伅">
<div class="box-head">
<el-alert :closable="false" style="width: 100%">
<el-row>
@@ -14,84 +8,44 @@
<span>宸查�変腑 {{ selection.length }} 椤�</span>
</el-col>
<el-col :span="8">
- <!-- <el-link
- type="primary"
- size="small"
- style="float: right; height: 20px"
- @click="lockstocks"
- >閿佸畾搴撳瓨</el-link> -->
-
- <el-link
- type="primary"
- size="small"
- style="float: right; height: 20px"
- @click="handleOpenPicking"
- >鎷i��</el-link>
-
- <el-link
- type="primary"
- size="small"
- style="float: right; height: 20px; margin-right: 10px"
- @click="outbound"
- >鐩存帴鍑哄簱</el-link
- >
- <el-link
- type="primary"
- size="small"
- style="float: right; height: 20px; margin-right: 10px"
- @click="getData"
- >鍒锋柊</el-link
- ></el-col
- >
+ <el-link type="primary" size="small" v-if="isBatch === 0" style="float: right; height: 20px"
+ @click="handleOpenPicking">鎷i��</el-link>
+ <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+ v-if="isBatch === 1" @click="handleOpenBatchPicking">鍒嗘壒鎷i��</el-link>
+ <el-link type="primary" size="small" v-if="isBatch === 0"
+ style="float: right; height: 20px; margin-right: 10px" @click="outbound">鐩存帴鍑哄簱</el-link>
+ <el-link type="primary" size="small" v-if="isBatch === 1"
+ style="float: right; height: 20px; margin-right: 10px" @click="outboundbatch">鍒嗘壒鍑哄簱</el-link>
+ <el-link type="primary" size="small" style="float: right; height: 20px; margin-right: 10px"
+ @click="getData">鍒锋柊</el-link>
+ </el-col>
</el-row>
</el-alert>
</div>
<div class="box-table" style="margin-top: 1%">
- <el-table
- ref="singleTable"
- :data="tableData"
- style="width: 100%; height: 100%"
- highlight-current-row
- @current-change="handleCurrentChange"
- height="500px"
- @row-click="handleRowClick"
- @selection-change="handleSelectionChange"
- >
+ <el-table ref="singleTable" :data="tableData" style="width: 100%; height: 100%" highlight-current-row
+ @current-change="handleCurrentChange" height="500px" @row-click="handleRowClick"
+ @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"> </el-table-column>
- <el-table-column
- label="搴忓彿"
- type="index"
- fixed="left"
- width="55"
- align="center"
- ></el-table-column>
- <el-table-column
- v-for="(item, index) in tableColumns.filter((x) => !x.hidden)"
- :key="index"
- :prop="item.prop"
- :label="item.title"
- :width="item.width"
- align="center"
- >
+ <el-table-column label="搴忓彿" type="index" fixed="left" width="55" align="center"></el-table-column>
+ <el-table-column v-for="(item, index) in tableColumns.filter((x) => !x.hidden)" :key="index" :prop="item.prop"
+ :label="item.title" :width="item.width" align="center">
<template #default="scoped">
<div v-if="item.type == 'icon'">
- <el-tooltip
- class="item"
- effect="dark"
- :content="item.title"
- placement="bottom"
- ><el-link
- type="primary"
- :disabled="getButtonEnable(item.prop, scoped.row)"
- @click="tableButtonClick(scoped.row, item)"
- ><i :class="item.icon" style="font-size: 22px"></i></el-link
- ></el-tooltip>
+ <el-tooltip class="item" effect="dark" :content="item.title" placement="bottom">
+ <el-link type="primary" :disabled="getButtonEnable(item.prop, scoped.row)"
+ @click="tableButtonClick(scoped.row, item)">
+ <i :class="item.icon" style="font-size: 22px"></i>
+ </el-link>
+ </el-tooltip>
</div>
-
<div v-else-if="item.type == 'tag'">
<el-tag size="small">
{{ getDictionary(scoped.row, item) }}
</el-tag>
+ </div>
+ <div v-else>
+ {{ scoped.row[item.prop] }}
</div>
</template>
</el-table-column>
@@ -99,29 +53,43 @@
</div>
</vol-box>
<stock-select ref="child" @parentCall="parentCall"></stock-select>
- <selected-stock
- ref="selectedStock"
- @parentCall="parentCall"
- ></selected-stock>
+ <selected-stock ref="selectedStock" @parentCall="parentCall"></selected-stock>
+ <NoStockOut ref="NoStockOut" @parentCall="parentCall"></NoStockOut>
+ <DirectOutbound ref="DirectOutbound" @parentCall="parentCall"></DirectOutbound>
</div>
</template>
+
<script>
import VolBox from "@/components/basic/VolBox.vue";
import VolForm from "@/components/basic/VolForm.vue";
import StockSelect from "./StockSelect.vue";
import SelectedStock from "./SelectedStock.vue";
-import { h,createVNode, render,reactive } from 'vue';
-import { ElDialog , ElForm, ElFormItem, ElSelect,ElOption, ElButton, ElMessage } from 'element-plus';
+import NoStockOut from "./NoStockOut.vue";
+import DirectOutbound from "./DirectOutbound.vue";
+import { h, createVNode, render, reactive } from "vue";
+import {
+ ElDialog,
+ ElForm,
+ ElFormItem,
+ ElSelect,
+ ElOption,
+ ElButton,
+ ElInput,
+ ElMessage,
+} from "element-plus";
+
export default {
- components: { VolBox, VolForm, StockSelect, SelectedStock },
+ components: { VolBox, VolForm, StockSelect, SelectedStock, NoStockOut, DirectOutbound },
data() {
return {
row: null,
+ isBatch: 0,
showDetialBox: false,
flag: false,
currentRow: null,
selection: [],
tableData: [],
+ mainBusinessType: null, // 鏂板锛氬瓨鍌ㄤ富鍗曟嵁鐨刡usinessType
tableColumns: [
{
prop: "id",
@@ -141,7 +109,7 @@
prop: "materielCode",
title: "鐗╂枡缂栧彿",
type: "string",
- width: 150,
+ width: 120,
},
{
prop: "materielName",
@@ -159,7 +127,7 @@
prop: "supplyCode",
title: "渚涘簲鍟嗙紪鍙�",
type: "string",
- width: 150,
+ width: 90,
},
{
prop: "orderQuantity",
@@ -180,16 +148,22 @@
width: 90,
},
{
+ prop: "moveQty",
+ title: "鎸枡鏁伴噺",
+ type: "string",
+ width: 90,
+ },
+ {
prop: "unit",
title: "鍗曚綅",
type: "string",
- width: 90,
+ width: 80,
},
{
prop: "orderDetailStatus",
title: "璁㈠崟鏄庣粏鐘舵��",
type: "tag",
- width: 180,
+ width: 90,
bindKey: "orderDetailStatusEnum",
},
{
@@ -197,6 +171,7 @@
title: "鎸囧畾搴撳瓨",
type: "icon",
width: 90,
+ //hidden: true, // 榛樿闅愯棌
icon: "el-icon-s-grid",
},
{
@@ -241,9 +216,8 @@
order: "desc",
Foots: "",
total: 0,
- // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
sizes: [30, 60, 100, 120],
- size: 30, // 榛樿鍒嗛〉澶у皬
+ size: 30,
Wheres: [],
page: 1,
rows: 30,
@@ -280,11 +254,24 @@
};
},
methods: {
+ toggleAssignStockColumn() {
+ const assignStockColumn = this.tableColumns.find(
+ (item) => item.prop === "assignStock"
+ );
+ // if (assignStockColumn) {
+ // // businessType涓�22鏃舵樉绀猴紝鍚﹀垯闅愯棌
+ // assignStockColumn.hidden = this.mainBusinessType !== '22';
+ // }
+ },
open(row) {
this.row = row;
this.showDetialBox = true;
+ console.log("涓诲崟鎹暟鎹細", this.row);
+ this.isBatch = row.isBatch;
+ this.mainBusinessType = row.businessType;
this.getDictionaryData();
this.getData();
+ this.toggleAssignStockColumn();
},
getData() {
var wheres = [{ name: "orderId", value: this.row.id }];
@@ -293,19 +280,21 @@
rows: this.paginations.rows,
sort: this.paginations.sort,
order: this.paginations.order,
- wheres: JSON.stringify(wheres), // 鏌ヨ鏉′欢锛屾牸寮忎负[{ name: "瀛楁", value: "xx" }]
+ wheres: JSON.stringify(wheres),
};
this.http
.post("api/OutboundOrderDetail/GetPageData", param, "鏌ヨ涓�")
.then((x) => {
this.tableData = x.rows;
+ this.toggleAssignStockColumn(); // 鏁版嵁鍔犺浇鍚庨噸鏂扮‘璁ゅ垪鏄鹃殣
});
},
tableButtonClick(row, column) {
if (column.prop == "assignStock") {
this.$refs.child.open(row);
+ } else if (column.prop == "NoStockOut") {
+ this.$refs.NoStockOut.open(row);
} else {
- //鐐瑰嚮鎵撳紑鍑哄簱璇︽儏
this.$refs.selectedStock.open(row);
}
},
@@ -313,7 +302,7 @@
if (this.selection.length === 0) {
return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
}
- var keys = this.selection.map((item) => item.id); // 鑾峰彇閫変腑琛岀殑id
+ var keys = this.selection.map((item) => item.id);
this.http
.post("api/OutboundOrderDetail/LockOutboundStocks", keys, "鏁版嵁澶勭悊涓�")
.then((x) => {
@@ -325,149 +314,50 @@
});
});
},
- // 鎵撳紑鎷i�夐〉闈�
- handleOpenPicking() {
+ handleOpenPicking() {
this.$router.push({
- path: '/outbound/picking',
- query: { orderId: this.row.id }
- })
+ path: "/outbound/outPicking",
+ query: { orderId: this.row.id, orderNo: this.row.orderNo },
+ });
+ },
+ handleOpenBatchPicking() {
+ this.$router.push({
+ path: "/outbound/outPicking",
+ query: { orderId: this.row.id, orderNo: this.row.orderNo },
+ });
},
outbound() {
if (this.selection.length === 0) {
return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
}
- const platformOptions = [{label:'绔欏彴2',value:'2-1'},{label:'绔欏彴3',value:'3-1'}];
- const mountNode = document.createElement('div');
- document.body.appendChild(mountNode);
- // 2. 琛ㄥ崟鏁版嵁锛堥粯璁ら�変腑绔欏彴3锛�
- const formData = reactive({
- selectedPlatform: platformOptions[0].value // 榛樿缁戝畾銆岀珯鍙�3銆嶇殑value
- });
+ const keys = this.selection.map((item) => item.id);
+ const requestParams = {
+ detailIds: keys,
+ outboundQuantity: 1,
+ operator: "",
+ orderNo: this.row.orderNo,
+ isBatch: this.isBatch
+ };
+ console.log(requestParams);
+ this.$refs.DirectOutbound.open(requestParams);
+ },
+ outboundbatch() {
+ if (this.selection.length === 0) {
+ return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+ }
- // 3. 鍔ㄦ�佸垱寤哄脊绐楃粍浠�
- const vnode = createVNode(ElDialog, {
- title: '鍑哄簱鎿嶄綔 - 閫夋嫨鍑哄簱绔欏彴',
- width: '500px',
- modelValue: true,
- appendToBody: true,
- 'onUpdate:modelValue': (isVisible) => {
- if (!isVisible) {
- render(null, mountNode);
- document.body.removeChild(mountNode);
- }
- },
- style: {
- padding: '20px 0',
- borderRadius: '8px'
- }
- }, {
- default: () => h(ElForm, {
- model: formData,
- rules: {
- selectedPlatform: [
- { required: true, message: '璇烽�夋嫨鍑哄簱绔欏彴', trigger: 'change' }
- ]
- },
- ref: 'outboundForm',
- labelWidth: '100px',
- style: {
- padding: '0 30px'
- }
- }, [
- // 鍑哄簱绔欏彴閫夋嫨椤癸紙鏍稿績琛ㄥ崟椤癸級
- h(ElFormItem, {
- label: '鍑哄簱绔欏彴',
- prop: 'selectedPlatform',
- style: {
- marginBottom: '24px'
- }
- }, [
- h(ElSelect, {
- placeholder: '璇烽�夋嫨鍑哄簱绔欏彴锛�3-12锛�',
- modelValue: formData.selectedPlatform,
- 'onUpdate:modelValue': (val) => {
- formData.selectedPlatform = val;
- },
- style: {
- width: '100%',
- height: '40px',
- borderRadius: '4px',
- borderColor: '#dcdfe6'
- }
- }, platformOptions.map(platform =>
- h(ElOption, { label: platform.label, value: platform.value })
- ))
- ]),
- // 搴曢儴鎸夐挳鍖�
- h('div', {
- style: {
- textAlign: 'right',
- marginTop: '8px',
- paddingRight: '4px'
- }
- }, [
- h(ElButton, {
- type: 'text',
- onClick: () => {
- render(null, mountNode);
- document.body.removeChild(mountNode);
- ElMessage.info('鍙栨秷鍑哄簱鎿嶄綔');
- },
- style: {
- marginRight: '8px',
- color: '#606266'
- }
- }, '鍙栨秷'),
- h(ElButton, {
- type: 'primary',
- onClick: async () => {
- const formRef = vnode.component.refs.outboundForm;
- try {
- // 琛ㄥ崟鏍¢獙
- await formRef.validate();
- } catch (err) {
- return;
- }
+ const keys = this.selection.map((item) => item.id);
+ const requestParams = {
+ detailIds: keys,
+ outboundQuantity: this.selection[0].orderQuantity - this.selection[0].lockQuantity,
+ operator: "",
+ orderNo: this.row.orderNo,
+ isBatch: this.isBatch
+ };
+ console.log(requestParams);
+ this.$refs.DirectOutbound.open(requestParams);
- // 4. 鏋勯�犺姹傚弬鏁帮紙閫変腑鍗曟嵁ID + 閫夋嫨鐨勫嚭搴撶珯鍙帮級
- const keys = this.selection.map((item) => item.id);
- const requestParams = {
- taskIds: keys,
- outboundPlatform: formData.selectedPlatform // 鍑哄簱绔欏彴
- };
-
- // 5. 璋冪敤鍑哄簱鎺ュ彛
- this.http
- .post("api/Task/GenerateOutboundTasks", requestParams, "鏁版嵁澶勭悊涓�")
- .then((x) => {
- if (!x.status) return ElMessage.error(x.message);
-
- ElMessage.success("鎿嶄綔鎴愬姛");
- this.showDetialBox = false; // 鍏抽棴璇︽儏妗�
- this.$emit("parentCall", ($vue) => {
- $vue.getData(); // 閫氱煡鐖剁粍浠跺埛鏂�
- });
- // 鍏抽棴寮圭獥
- render(null, mountNode);
- document.body.removeChild(mountNode);
- })
- .catch(() => {
- ElMessage.error('璇锋眰澶辫触锛岃绋嶅悗閲嶈瘯');
- });
- },
- style: {
- borderRadius: '4px',
- padding: '8px 20px'
- }
- }, '纭畾鍑哄簱')
- ])
- ])
- });
-
- // 缁戝畾app涓婁笅鏂囷紝纭繚El缁勪欢姝e父宸ヤ綔
- vnode.appContext = this.$.appContext;
- render(vnode, mountNode);
},
setCurrent(row) {
this.$refs.singleTable.setCurrentRow(row);
@@ -525,7 +415,6 @@
var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
if (item) {
var dicItem = item.data.find((x) => x.key == row[column.prop]);
- console.log(dicItem);
if (dicItem) {
return dicItem.value;
} else {
@@ -535,10 +424,12 @@
return row[column.prop];
}
}
+ return row[column.prop];
},
},
};
</script>
+
<style scoped>
.text-button {
border: 0px;
@@ -554,14 +445,12 @@
background: oldlace;
}
-.box-table .el-table tbody tr:hover > td {
+.box-table .el-table tbody tr:hover>td {
background-color: #d8e0d4 !important;
- /* color: #ffffff; */
}
-.box-table .el-table tbody tr.current-row > td {
+.box-table .el-table tbody tr.current-row>td {
background-color: #f0f9eb !important;
- /* color: #ffffff; */
}
.el-table .success-row {
@@ -571,4 +460,4 @@
.box-table .el-table {
border: 1px solid #ebeef5;
}
-</style>
+</style>
\ No newline at end of file
--
Gitblit v1.9.3