From 2c9627e058670e4a56437f2880270160c197dabb Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期二, 09 十二月 2025 19:40:05 +0800
Subject: [PATCH] 提交
---
项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue | 237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 230 insertions(+), 7 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 890b066..f4dca4d 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"
@@ -24,16 +24,32 @@
<el-link
type="primary"
size="small"
+ v-if="isBatch === 0"
style="float: right; height: 20px"
@click="handleOpenPicking"
>鎷i��</el-link>
-
- <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"
@@ -103,6 +119,7 @@
ref="selectedStock"
@parentCall="parentCall"
></selected-stock>
+ <NoStockOut ref="NoStockOut" @parentCall="parentCall"></NoStockOut>
</div>
</template>
<script>
@@ -110,13 +127,17 @@
import VolForm from "@/components/basic/VolForm.vue";
import StockSelect from "./StockSelect.vue";
import SelectedStock from "./SelectedStock.vue";
+import NoStockOut from "./NoStockOut.vue";
import { h,createVNode, render,reactive } from 'vue';
-import { ElDialog , ElForm, ElFormItem, ElSelect,ElOption, ElButton, ElMessage } from 'element-plus';
+import { ElDialog , ElForm, ElFormItem, ElSelect,ElOption, ElButton, ElInput, ElMessage } from 'element-plus';
+import { th } from 'element-plus/es/locale';
+
export default {
- components: { VolBox, VolForm, StockSelect, SelectedStock },
+ components: { VolBox, VolForm, StockSelect, SelectedStock,NoStockOut},
data() {
return {
row: null,
+ isBatch :0,
showDetialBox: false,
flag: false,
currentRow: null,
@@ -180,6 +201,12 @@
width: 90,
},
{
+ prop: "moveQty",
+ title: "鎸枡鏁伴噺",
+ type: "string",
+ width: 90,
+ },
+ {
prop: "unit",
title: "鍗曚綅",
type: "string",
@@ -189,7 +216,7 @@
prop: "orderDetailStatus",
title: "璁㈠崟鏄庣粏鐘舵��",
type: "tag",
- width: 180,
+ width: 90,
bindKey: "orderDetailStatusEnum",
},
{
@@ -197,6 +224,7 @@
title: "鎸囧畾搴撳瓨",
type: "icon",
width: 90,
+ hidden:true,
icon: "el-icon-s-grid",
},
{
@@ -283,6 +311,8 @@
open(row) {
this.row = row;
this.showDetialBox = true;
+ console.log(this.row);
+ this.isBatch = row.isBatch;
this.getDictionaryData();
this.getData();
},
@@ -304,8 +334,10 @@
tableButtonClick(row, column) {
if (column.prop == "assignStock") {
this.$refs.child.open(row);
- } else {
- //鐐瑰嚮鎵撳紑鍑哄簱璇︽儏
+ } else if (column.prop == "NoStockOut") {
+ this.$refs.NoStockOut.open(row);
+ }else{
+ //鐐瑰嚮鎵撳紑鍑哄簱璇︽儏
this.$refs.selectedStock.open(row);
}
},
@@ -331,6 +363,11 @@
path: '/outbound/picking',
query: { orderId: this.row.id ,orderNo:this.row.orderNo}
})
+ },
+ handleOpenBatchPicking() {
+ this.$router.push({
+ path: '/outbound/batchpicking',
+ query: { orderId: this.row.id ,orderNo:this.row.orderNo}})
},
outbound() {
if (this.selection.length === 0) {
@@ -469,6 +506,192 @@
vnode.appContext = this.$.appContext;
render(vnode, mountNode);
},
+ outboundbatch() {
+ if (this.selection.length === 0) {
+ return this.$message.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+ }
+ if (this.selection.length>1) {
+ 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
+ outboundDecimal: '' // 鏂板锛氬皬鏁拌緭鍏ユ瀛楁
+ });
+
+ // 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' }
+ ],
+ // 鏂板锛氬皬鏁板瓧娈甸獙璇佽鍒欙紙蹇呭~ + 鏈夋晥灏忔暟鏍煎紡锛�
+ outboundDecimal: [
+ { required: true, message: '璇疯緭鍏ュ皬鏁版暟鍊�', trigger: 'blur' },
+ {
+ validator: (rule, value, callback) => {
+ // 楠岃瘉瑙勫垯锛氭鏁般�佹敮鎸佸皬鏁扮偣鍚庢渶澶�2浣嶏紙鍙牴鎹渶姹傝皟鏁村皬鏁颁綅鏁帮級
+ const decimalReg = /^(([1-9]\d*)|0)(\.\d{1,2})?$/;
+ if (value && !decimalReg.test(value)) {
+ callback(new Error('璇疯緭鍏ユ湁鏁堢殑灏忔暟锛堟鏁帮紝鏈�澶�2浣嶅皬鏁帮級'));
+ } else {
+ callback();
+ }
+ },
+ trigger: 'blur'
+ }
+ ]
+ },
+ 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(ElFormItem, {
+ label: '鍑哄簱鏁�', // 鍙牴鎹笟鍔¢渶姹備慨鏀规爣绛惧悕锛堝鈥滃嚭搴撴暟閲忊�濃�滈噸閲忊�濈瓑锛�
+ prop: 'outboundDecimal',
+ style: {
+ marginBottom: '24px'
+ }
+ }, [
+ h(ElInput, {
+ type: 'number', // 鏁板瓧绫诲瀷锛屽師鐢熸敮鎸佸皬鏁拌緭鍏�
+ placeholder: '璇疯緭鍏ュ皬鏁版暟鍊硷紙鏈�澶�2浣嶅皬鏁帮級',
+ modelValue: formData.outboundDecimal,
+ 'onUpdate:modelValue': (val) => {
+ formData.outboundDecimal = val;
+ },
+ style: {
+ width: '100%',
+ height: '40px',
+ borderRadius: '4px',
+ borderColor: '#dcdfe6'
+ },
+ step: '0.01', // 姝ラ暱0.01锛岀偣鍑讳笂涓嬬澶存椂鎸�0.01澧炲噺
+ precision: 2, // 闄愬埗鏈�澶氳緭鍏�2浣嶅皬鏁帮紙Element Plus灞炴�э級
+ min: 0.01, // 鍙�夛細闄愬埗鏈�灏忓�间负0.01锛岄伩鍏嶈緭鍏�0鎴栬礋鏁�
+ })
+ ]),
+ // 搴曢儴鎸夐挳鍖�
+ 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;
+ }
+console.log(this.selection);
+ // 4. 鏋勯�犺姹傚弬鏁帮紙鏂板灏忔暟瀛楁锛�
+ const keys = this.selection.map((item) => item.id);
+ const requestParams = {
+ orderDetailId: keys[0], // 鍒嗘壒鍑哄簱浠呮敮鎸佸崟鏉℃槑缁�
+ outboundPlatform: formData.selectedPlatform, // 鍑哄簱绔欏彴
+ batchQuantity: formData.outboundDecimal // 鏂板锛氬皬鏁板瓧娈典紶缁欏悗绔�
+ };
+
+ // 5. 璋冪敤鍑哄簱鎺ュ彛
+ this.http
+ .post("api/Task/GenerateOutboundBatchTasks", 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);
},
--
Gitblit v1.9.3