From 415931fc8e37495b1be97b975bc409c5b279ce6f Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期六, 29 十一月 2025 17:52:20 +0800
Subject: [PATCH] 提交
---
项目代码/WIDESEA_WMSClient/src/extension/check/extend/StockSelect.vue | 347 ++++++++++++++++++++++++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs | 10
项目代码/WIDESEA_WMSClient/src/views/check/checkOrder.vue | 176 ++++++------
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/ReCheckOrderController.cs | 19 +
项目代码/WIDESEA_WMSClient/src/router/viewGird.js | 5
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs | 24
项目代码/WIDESEA_WMSClient/src/extension/outbound/extend/outOrderDetail.vue | 1
项目代码/WIDESEA_WMSClient/src/views/check/ReCheckOrder.vue | 115 ++++++++
项目代码/WIDESEA_WMSClient/src/extension/check/recheckOrder.js | 84 ++++++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs | 2
10 files changed, 674 insertions(+), 109 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/extend/StockSelect.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/extend/StockSelect.vue"
new file mode 100644
index 0000000..ae450b1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/extend/StockSelect.vue"
@@ -0,0 +1,347 @@
+<template>
+ <div>
+ <vol-box
+ v-model="showDetialBox"
+ :lazy="true"
+ width="60%"
+ :padding="15"
+ title="鎸囧畾搴撳瓨"
+ >
+ <div class="box-head">
+ <el-alert :closable="false" style="width: 100%">
+ <el-row>
+ <el-col :span="16">
+ <span class="less-style">鐗╂枡鍚嶇О锛� {{ row.materielName }} </span>
+ <el-divider direction="vertical"></el-divider>
+ <span class="less-style">鐗╂枡缂栧彿锛� {{ row.materielCode }} </span>
+ <el-divider direction="vertical"></el-divider>
+ <span class="less-style">闇�姹傛暟閲忥細 {{ row.qty }} </span>
+ <el-divider direction="vertical"></el-divider>
+ <span :class="selectionClass">宸查�夋暟閲忥細 {{ selectionSum }} </span>
+ </el-col>
+ <el-col :span="8">
+ <el-link
+ type="primary"
+ size="small"
+ style="float: right; height: 20px; margin-right: 10px"
+ @click="getData"
+ >鍒锋柊</el-link
+ >
+ <el-link
+ type="primary"
+ size="small"
+ style="float: right; height: 20px; margin-right: 10px"
+ @click="openOutboundDialog"
+ >鐩存帴鍑哄簱</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
+ @row-click="handleRowClick"
+ height="500px"
+ @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"
+ >
+ <template #default="scoped" v-if="item.type == 'icon'">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="item.title"
+ placement="bottom"
+ ><el-button
+ type="text"
+ @click="tableButtonClick(scoped.row, item)"
+ ><i :class="item.icon" style="font-size: 22px"></i></el-button
+ ></el-tooltip>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <template #footer>
+ <el-button type="danger" size="small" @click="showDetialBox = false"
+ >鍏抽棴</el-button
+ >
+ </template>
+ </vol-box>
+
+ <!-- 鍑哄簱绔欏彴閫夋嫨寮圭獥锛堥潤鎬佹ā鏉垮疄鐜帮級 -->
+ <el-dialog
+ v-model="showOutboundDialog"
+ title="鍑哄簱鎿嶄綔 - 閫夋嫨鍑哄簱绔欏彴"
+ width="500px"
+ :append-to-body="true"
+ >
+ <el-form
+ :model="outboundForm"
+ :rules="outboundRules"
+ ref="outboundFormRef"
+ label-width="100px"
+ style="padding: 0 20px"
+ >
+ <el-form-item label="鍑哄簱绔欏彴" prop="selectedPlatform" style="margin-bottom: 24px">
+ <el-select
+ v-model="outboundForm.selectedPlatform"
+ placeholder="璇烽�夋嫨鍑哄簱绔欏彴锛�3-12锛�"
+ style="width: 100%; height: 40px"
+ >
+ <el-option
+ v-for="platform in platformOptions"
+ :key="platform.value"
+ :label="platform.label"
+ :value="platform.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <el-button @click="showOutboundDialog = false" style="margin-right: 8px">鍙栨秷</el-button>
+ <el-button type="primary" @click="confirmOutbound">纭畾鍑哄簱</el-button>
+ </template>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+import { ElMessage } from "element-plus";
+
+export default {
+ components: { VolBox },
+ data() {
+ return {
+ row: null,
+ showDetialBox: false,
+ tableData: [],
+ tableColumns: [
+ { prop: "materielCode", title: "鐗╂枡缂栧彿", type: "string", width: 150 },
+ { prop: "barcode", title: "鐗╂枡鏉$爜", type: "string", width: 150 },
+ { prop: "palletCode", title: "鎵樼洏缂栧彿", type: "string", width: 150 },
+ { prop: "locationCode", title: "璐т綅缂栧彿", type: "string", width: 180 },
+ { prop: "useableQuantity", title: "鍙敤鏁伴噺", type: "string" },
+ ],
+ selection: [],
+ selectionSum: 0,
+ selectionClass: "less-style",
+ originalQuantity: 0,
+
+ // 鍑哄簱寮圭獥鐩稿叧鏁版嵁
+ showOutboundDialog: false,
+ outboundForm: { selectedPlatform: "" }, // 琛ㄥ崟缁戝畾鏁版嵁
+ outboundRules: {
+ selectedPlatform: [
+ { required: true, message: "璇烽�夋嫨鍑哄簱绔欏彴", trigger: "change" },
+ ],
+ },
+ platformOptions: [
+ { label: "绔欏彴2", value: "2-1" },
+ { label: "绔欏彴3", value: "3-1" },
+ ],
+ };
+ },
+ methods: {
+ open(row) {
+ this.row = row;
+ this.showDetialBox = true;
+ this.getData();
+ console.log(row.id)
+ this.updateSelectionClass(); // 鍒濆鍖栧凡閫夋暟閲忔牱寮�
+ },
+
+ lockStock() {
+ this.http
+ .post(
+ "api/OutboundOrderDetail/LockOutboundStock?id=" + this.row.id,
+ this.selection,
+ "鏁版嵁澶勭悊涓�"
+ )
+ .then((x) => {
+ if (!x.status) return ElMessage.error(x.message);
+ ElMessage.success("鎿嶄綔鎴愬姛");
+ this.showDetialBox = false;
+ this.$emit("parentCall", ($vue) => {
+ $vue.getData();
+ });
+ });
+ },
+
+ // 鎵撳紑鍑哄簱寮圭獥
+ openOutboundDialog() {
+ if (this.selection.length === 0) {
+ return ElMessage.error("璇烽�夋嫨鍗曟嵁鏄庣粏");
+ }
+ // 閲嶇疆琛ㄥ崟閬垮厤娈嬬暀鍊�
+ this.outboundForm.selectedPlatform = "";
+ this.showOutboundDialog = true;
+ },
+
+ // 纭鍑哄簱鎿嶄綔
+ confirmOutbound() {
+ this.$refs.outboundFormRef.validate((valid) => {
+ if (!valid) return;
+
+
+ if (this.selection.length <= 0) {
+ return this.$message.error("璇峰嬀閫�");
+ }
+ let url = this.pkcx
+ ? "api/Task/GenerateOutboundTask?orderDetailId="
+ : "api/Task/GenerateOutboundTask?orderDetailId=";
+ this.http
+ .post(url + this.row.id, this.selection, "鏁版嵁澶勭悊涓�")
+ .then((x) => {
+ if (!x.status) return this.$message.error(x.message);
+ this.$message.success("鎿嶄綔鎴愬姛");
+ this.showDetialBox = false;
+ this.$emit("parentCall", ($vue) => {
+ $vue.getData();
+ });
+ });
+
+ });
+ },
+
+ // 鍥哄畾鏌ヨ绔嬪簱搴撳瓨
+ getData() {
+ const url = "api/StockInfo/GetStockSelectViews?materielCode=";
+ this.http
+ .post(
+ url + this.row.materielCode + "&orderId=" + this.row.id,
+ null,
+ "鏌ヨ涓�"
+ )
+ .then((x) => {
+ this.tableData = x;
+ // 鍒锋柊鍚庢竻绌轰箣鍓嶇殑閫夋嫨鍜岃鏁�
+ this.clearSelection();
+ this.selectionSum = 0;
+ this.originalQuantity = 0;
+ this.updateSelectionClass();
+ });
+ },
+
+ revokeAssign() {
+ this.http
+ .post(
+ "api/OutboundOrderDetail/RevokeLockOutboundStock?id=" + this.row.id,
+ null,
+ "鏁版嵁澶勭悊涓�"
+ )
+ .then((x) => {
+ if (!x.status) return ElMessage.error(x.message);
+ ElMessage.success("鎿嶄綔鎴愬姛");
+ this.showDetialBox = false;
+ this.$emit("parentCall", ($vue) => {
+ $vue.getData();
+ });
+ });
+ },
+
+ handleSelectionChange(val) {
+ this.selection = val;
+ // 璁$畻宸查�夋暟閲忥紙杞暟瀛楅伩鍏嶅瓧绗︿覆鎷兼帴锛�
+ this.selectionSum = val.reduce(
+ (acc, curr) => acc + Number(curr.useableQuantity || 0),
+ 0
+ ) + this.originalQuantity;
+ this.updateSelectionClass();
+ },
+
+ // 鏇存柊宸查�夋暟閲忔牱寮�
+ updateSelectionClass() {
+ if (!this.row) return;
+ if (this.selectionSum === this.row.orderQuantity) {
+ this.selectionClass = "equle-style";
+ } else if (this.selectionSum < this.row.orderQuantity) {
+ this.selectionClass = "less-style";
+ } else {
+ this.selectionClass = "more-style";
+ }
+ },
+
+ toggleSelection(rows) {
+ rows ? rows.forEach((row) => this.$refs.singleTable.toggleRowSelection(row)) : this.clearSelection();
+ },
+
+ clearSelection() {
+ if (this.$refs.singleTable) {
+ this.$refs.singleTable.clearSelection();
+ }
+ },
+
+ handleRowClick(row) {
+ this.$refs.singleTable.toggleRowSelection(row);
+ },
+
+ // 鍥炬爣鎸夐挳鐐瑰嚮鍗犱綅鏂规硶锛堝彲鏍规嵁闇�姹傛墿灞曪級
+ tableButtonClick(row, item) {
+ console.log("鍥炬爣鎸夐挳鐐瑰嚮锛�", item.title, row);
+ },
+ },
+};
+</script>
+
+<style scoped>
+.less-style {
+ color: black;
+}
+
+.equle-style {
+ color: green;
+}
+
+.more-style {
+ color: red;
+}
+</style>
+
+<style>
+.text-button:hover {
+ background-color: #f0f9eb !important;
+}
+
+.el-table .warning-row {
+ background: oldlace;
+}
+
+.box-table .el-table tbody tr:hover > td {
+ background-color: #d8e0d4 !important;
+}
+
+.box-table .el-table tbody tr.current-row > td {
+ background-color: #f0f9eb !important;
+}
+
+.el-table .success-row {
+ background: #f0f9eb;
+}
+
+.box-table .el-table {
+ border: 1px solid #ebeef5;
+}
+
+.box-head .el-alert__content {
+ width: 100%;
+}
+</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/recheckOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/recheckOrder.js"
new file mode 100644
index 0000000..5637829
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/check/recheckOrder.js"
@@ -0,0 +1,84 @@
+/*****************************************************************************************
+** Author:jxx 2022
+** QQ:283591387
+**瀹屾暣鏂囨。瑙侊細http://v2.volcore.xyz/document/api 銆愪唬鐮佺敓鎴愰〉闈iewGrid銆�
+**甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
+**鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
+*****************************************************************************************/
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import gridBody from './extend/StockSelect.vue'
+
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: '',
+ gridBody: gridBody,
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() { //妗嗘灦鍒濆鍖栭厤缃墠锛�
+ this.columns.push({
+ field: '鎿嶄綔',
+ title: '鎿嶄綔',
+ width: 90,
+ fixed: 'right',
+ align: 'center',
+ formatter: (row) => {
+ return (
+ '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">鎸囧畾搴撳瓨</i>'
+ );
+ },
+ click: (row) => {
+ const table = this.$refs.table.$refs.table;
+ if (table) {
+ table.clearSelection();
+ table.toggleRowSelection(row, true);
+ }
+ this.$refs.gridBody.open(row);
+ }
+ });
+ },
+ onInited() {
+ //妗嗘灦鍒濆鍖栭厤缃悗
+ //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+ //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+ return true;
+ },
+ searchAfter(result) {
+ //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+ return true;
+ },
+ addBefore(formData) {
+ //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+ return true;
+ },
+ updateBefore(formData) {
+ //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+ //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+ //(3)this.editFormFields.瀛楁='xxx';
+ //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+ //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
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 07bb89d..feb607c 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"
@@ -213,6 +213,7 @@
title: "鎸囧畾搴撳瓨",
type: "icon",
width: 90,
+ hidden:true,
icon: "el-icon-s-grid",
},
{
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/router/viewGird.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/router/viewGird.js"
index 977eff2..3896357 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/router/viewGird.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/router/viewGird.js"
@@ -212,6 +212,11 @@
path: '/allocateOrder',
name: 'Dt_AllocateOrder',
component: () => import('@/views/inbound/Dt_AllocateOrder.vue')
+ },
+ {
+ path: '/reCheckOrder',
+ name: 'Dt_ReCheckOrder',
+ component: () => import('@/views/check/ReCheckOrder.vue')
}
]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/check/ReCheckOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/check/ReCheckOrder.vue"
new file mode 100644
index 0000000..62a8a5c
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/check/ReCheckOrder.vue"
@@ -0,0 +1,115 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wcs/order/Dt_CheckOrder.js姝ゅ缂栧啓
+ -->
+<template>
+ <view-grid ref="grid" :columns="columns" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
+ </view-grid>
+</template>
+<script>
+import extend from "@/extension/check/recheckOrder.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'id',
+ footer: "Foots",
+ cnName: '閲嶆鍗�',
+ name: 'Dt_ReCheckOrder',
+ url: "/ReCheckOrder/",
+ sortName: "id"
+ });
+
+
+ const editFormFields = ref({
+ OrderNo: "",
+ MaterielCode: "",
+ BatchNo: "",
+ WarehouseCode: "",
+ Unit: "",
+ FactoryArea: "",
+ Result: 0,
+ InspectionNumber: 0,
+ Qty: 0,
+ SignSeq: 0
+ });
+
+
+ const editFormOptions = ref([
+ [
+ { title: "澶嶆鍗曞彿", field: "OrderNo", type: "input", require: true },
+ { title: "鐗╂枡缂栧彿", field: "MaterielCode", type: "input", require: true },
+ { title: "鎵规鍙�", field: "BatchNo", type: "input", require: true },
+ { title: "浠撳簱缂栫爜", field: "WarehouseCode", type: "input", require: true }
+ ],
+ [
+ { title: "鍗曚綅", field: "Unit", type: "input", require: true },
+ { title: "鍘傚尯", field: "FactoryArea", type: "input", require: true },
+ { title: "妫�楠岀粨鏋�", field: "Result", type: "select", require: true,dataKey: "inOrderType",data: []},
+ { title: "妫�楠屾鏁�", field: "InspectionNumber", type: "number", require: true, min: 1 }
+ ],
+ [
+ { title: "鏁伴噺", field: "Qty", type: "number", require: true, min: 0 },
+ { title: "绛惧瓧椤哄簭", field: "SignSeq", type: "number", require: true, min: 1 }
+ ]
+ ]);
+
+
+ const searchFormFields = ref({
+ OrderNo: "",
+ MaterielCode: "",
+ BatchNo: "",
+ WarehouseCode: "",
+ FactoryArea: "",
+ Result: ""
+ });
+
+
+ const searchFormOptions = ref([
+ [
+ { title: "澶嶆鍗曞彿", field: "OrderNo", type: "like" },
+ { title: "鐗╂枡缂栧彿", field: "MaterielCode", type: "like" },
+ { title: "鎵规鍙�", field: "BatchNo", type: "like" },
+ { title: "浠撳簱缂栫爜", field: "WarehouseCode", type: "like" }
+ ],
+ [
+ { title: "鍘傚尯", field: "FactoryArea", type: "like" },
+ { title: "妫�楠岀粨鏋�", field: "Result", type: "select",dataKey: "inOrderType", data: []}
+ ]
+ ]);
+
+
+ const columns = ref([
+ { field: 'id', title: '涓婚敭', type: 'int', width: 150, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'orderNo', title: '澶嶆鍗曞彿', type: 'string', width: 160, require: true, align: 'left', sort: true },
+ { field: 'materielCode', title: '鐗╂枡缂栧彿', type: 'string', width: 160, require: true, align: 'left' },
+ { field: 'batchNo', title: '鎵规鍙�', type: 'string', width: 160, require: true, align: 'left' },
+ { field: 'warehouseCode', title: '浠撳簱缂栫爜', type: 'string', width: 160, require: true, align: 'left' },
+ { field: 'unit', title: '鍗曚綅', type: 'string', width: 100, require: true, align: 'left' },
+ { field: 'factoryArea', title: '鍘傚尯', type: 'string', width: 120, require: true, align: 'left' },
+ { field: 'result', title: '妫�楠岀粨鏋�', type: 'int', width: 110, require: true, align: 'left',bind: { key: "inOrderType", data: [] },},
+ { field: 'inspectionNumber', title: '妫�楠屾鏁�', type: 'int', width: 110, require: true, align: 'left' },
+ { field: 'qty', title: '鏁伴噺', type: 'float', width: 110, require: true, align: 'left' },
+ { field: 'signSeq', title: '绛惧瓧椤哄簭', type: 'int', width: 110, require: true, align: 'left' },
+ { field: 'creater', title: '鍒涘缓鑰�', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', width: 150, require: true, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃ユ湡', type: 'datetime', width: 150, align: 'left', sort: true },
+ ]);
+
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns
+ };
+ },
+});
+</script>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/check/checkOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/check/checkOrder.vue"
index 41ee0fc..d84f1b9 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/check/checkOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/check/checkOrder.vue"
@@ -5,98 +5,92 @@
*涓氬姟璇峰湪@/extension/widesea_wcs/order/Dt_CheckOrder.js姝ゅ缂栧啓
-->
<template>
- <view-grid ref="grid"
- :columns="columns"
- :detail="detail"
- :editFormFields="editFormFields"
- :editFormOptions="editFormOptions"
- :searchFormFields="searchFormFields"
- :searchFormOptions="searchFormOptions"
- :table="table"
- :extend="extend">
+ <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields"
+ :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions"
+ :table="table" :extend="extend">
</view-grid>
</template>
<script>
- import extend from "@/extension/check/checkOrder.js";
- import { ref, defineComponent } from "vue";
- export default defineComponent({
- setup() {
- const table = ref({
- key: 'checkOrderId',
- footer: "Foots",
- cnName: '妫�楠屽崟',
- name: 'checkOrder',
- url: "/CheckOrder/",
- sortName: "checkOrderId"
- });
- const editFormFields = ref({});
- const editFormOptions = ref([]);
- const searchFormFields = ref({
- checkOrderNo:"",
- receiveOrderNo:"",
- checkOrderStatus:"",
- auditStatus:""
- });
- const searchFormOptions = ref([
- [
- {title:"妫�楠屽崟鍙�", field:"checkOrderNo",type:"like"},
- {title:"鏀惰揣鍗曞彿", field:"receiveOrderNo",type:"like"},
- {title:"璐ㄦ鍗曠姸鎬�", field:"checkOrderStatus",type:"select",dataKey:"",data:[]},
- {title:"瀹℃壒鐘舵��", field:"auditStatus",type:"select",dataKey:"",data:[]},
- ],
- [
- {title:"鏀惰揣鍗曟槑缁嗚鍙�", field:"receiveDetailRowNo",type:"like"},
- {title:"鐗╂枡缂栧彿", field:"materielCode",type:"like"},
- {title:"妫�楠岀粨鏋�", field:"result",type:"like"},
- ]
- ]);
- const columns = ref([{field:'checkOrderId',title:'涓婚敭',type:'int',width:150,hidden:true,readonly:true,require:true,align:'left'},
- {field:'checkOrderNo',title:'妫�楠屽崟鍙�',type:'string',width:160,require:true,align:'left',sort:true},
- {field:'receiveOrderNo',title:'鏀惰揣鍗曞彿',type:'string',width:160,require:true,align:'left'},
- {field:'checkOrderStatus',title:'璐ㄦ鍗曠姸鎬�',type:'int',width:110,require:true,align:'left'},
- {field:'auditStatus',title:'瀹℃壒鐘舵��',type:'int',width:110,require:true,align:'left'},
- {field:'receiveDetailRowNo',title:'鏀惰揣鍗曟槑缁嗚鍙�',type:'int',width:110,require:true,align:'left'},
- {field:'materielCode',title:'鐗╂枡缂栧彿',type:'string',width:110,require:true,align:'left'},
- {field:'qualifiedQuantity',title:'鍚堟牸鏁伴噺',type:'float',width:110,align:'left'},
- {field:'defectedQuantity',title:'鐗归噰鏁伴噺',type:'float',width:110,align:'left'},
- {field:'returnQuantity',title:'閫�璐ф暟閲�',type:'float',width:110,align:'left'},
- {field:'scrappedQuantity',title:'鎶ュ簾鏁伴噺',type:'float',width:110,align:'left'},
- {field:'receivedQuantity',title:'妫�楠屾�绘暟',type:'float',width:110,require:true,align:'left'},
- {field:'result',title:'妫�楠岀粨鏋�',type:'string',width:110,align:'left'},
- {field:'defectedNote',title:'鐗归噰璇存槑',type:'string',width:110,align:'left'},
- {field:'checkUserName',title:'妫�楠屼汉',type:'string',width:110,align:'left'},
- {field:'creater',title:'鍒涘缓鑰�',type:'string',width:110,require:true,align:'left'},
- {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
- {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
- {field:'modifyDate',title:'淇敼鏃ユ湡',type:'datetime',width:150,align:'left',sort:true}]);
- const detail = ref({
- cnName: "妫�楠岀粨鏋�",
- table: "CheckOrderResult",
- columns: [
- {field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
- {field:'checkOrderId',title:'妫�楠屽崟涓婚敭',type:'int',width:110,require:true,align:'left',sort:true},
- {field:'defectCode',title:'缂洪櫡浠g爜',type:'string',width:110,require:true,align:'left'},
- {field:'result',title:'妫�楠岀粨鏋�',type:'string',width:110,require:true,align:'left'},
- {field:'quantity',title:'鏁伴噺',type:'float',width:110,require:true,align:'left'},
- {field:'note',title:'澶囨敞',type:'string',width:220,align:'left'},
- {field:'creater',title:'鍒涘缓鑰�',type:'string',width:110,require:true,align:'left'},
- {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
- {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
- {field:'modifyDate',title:'淇敼鏃ユ湡',type:'datetime',width:150,align:'left',sort:true}
- ],
- sortName: "id",
- key: "id"
- });
- return {
- table,
- extend,
- editFormFields,
- editFormOptions,
- searchFormFields,
- searchFormOptions,
- columns,
- detail,
- };
- },
- });
+import extend from "@/extension/check/checkOrder.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+ setup() {
+ const table = ref({
+ key: 'checkOrderId',
+ footer: "Foots",
+ cnName: '妫�楠屽崟',
+ name: 'checkOrder',
+ url: "/CheckOrder/",
+ sortName: "checkOrderId"
+ });
+ const editFormFields = ref({});
+ const editFormOptions = ref([]);
+ const searchFormFields = ref({
+ checkOrderNo: "",
+ receiveOrderNo: "",
+ checkOrderStatus: "",
+ auditStatus: ""
+ });
+ const searchFormOptions = ref([
+ [
+ { title: "妫�楠屽崟鍙�", field: "checkOrderNo", type: "like" },
+ { title: "鏀惰揣鍗曞彿", field: "receiveOrderNo", type: "like" },
+ { title: "璐ㄦ鍗曠姸鎬�", field: "checkOrderStatus", type: "select", dataKey: "", data: [] },
+ { title: "瀹℃壒鐘舵��", field: "auditStatus", type: "select", dataKey: "", data: [] },
+ ],
+ [
+ { title: "鏀惰揣鍗曟槑缁嗚鍙�", field: "receiveDetailRowNo", type: "like" },
+ { title: "鐗╂枡缂栧彿", field: "materielCode", type: "like" },
+ { title: "妫�楠岀粨鏋�", field: "result", type: "like" },
+ ]
+ ]);
+ const columns = ref([{ field: 'checkOrderId', title: '涓婚敭', type: 'int', width: 150, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'checkOrderNo', title: '妫�楠屽崟鍙�', type: 'string', width: 160, require: true, align: 'left', sort: true },
+ { field: 'receiveOrderNo', title: '鏀惰揣鍗曞彿', type: 'string', width: 160, require: true, align: 'left' },
+ { field: 'checkOrderStatus', title: '璐ㄦ鍗曠姸鎬�', type: 'int', width: 110, require: true, align: 'left' },
+ { field: 'auditStatus', title: '瀹℃壒鐘舵��', type: 'int', width: 110, require: true, align: 'left' },
+ { field: 'receiveDetailRowNo', title: '鏀惰揣鍗曟槑缁嗚鍙�', type: 'int', width: 110, require: true, align: 'left' },
+ { field: 'materielCode', title: '鐗╂枡缂栧彿', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'qualifiedQuantity', title: '鍚堟牸鏁伴噺', type: 'float', width: 110, align: 'left' },
+ { field: 'defectedQuantity', title: '鐗归噰鏁伴噺', type: 'float', width: 110, align: 'left' },
+ { field: 'returnQuantity', title: '閫�璐ф暟閲�', type: 'float', width: 110, align: 'left' },
+ { field: 'scrappedQuantity', title: '鎶ュ簾鏁伴噺', type: 'float', width: 110, align: 'left' },
+ { field: 'receivedQuantity', title: '妫�楠屾�绘暟', type: 'float', width: 110, require: true, align: 'left' },
+ { field: 'result', title: '妫�楠岀粨鏋�', type: 'string', width: 110, align: 'left' },
+ { field: 'defectedNote', title: '鐗归噰璇存槑', type: 'string', width: 110, align: 'left' },
+ { field: 'checkUserName', title: '妫�楠屼汉', type: 'string', width: 110, align: 'left' },
+ { field: 'creater', title: '鍒涘缓鑰�', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', width: 150, require: true, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃ユ湡', type: 'datetime', width: 150, align: 'left', sort: true }]);
+ const detail = ref({
+ cnName: "妫�楠岀粨鏋�",
+ table: "CheckOrderResult",
+ columns: [
+ { field: 'id', title: '涓婚敭', type: 'int', width: 110, hidden: true, readonly: true, require: true, align: 'left' },
+ { field: 'checkOrderId', title: '妫�楠屽崟涓婚敭', type: 'int', width: 110, require: true, align: 'left', sort: true },
+ { field: 'defectCode', title: '缂洪櫡浠g爜', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'result', title: '妫�楠岀粨鏋�', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'quantity', title: '鏁伴噺', type: 'float', width: 110, require: true, align: 'left' },
+ { field: 'note', title: '澶囨敞', type: 'string', width: 220, align: 'left' },
+ { field: 'creater', title: '鍒涘缓鑰�', type: 'string', width: 110, require: true, align: 'left' },
+ { field: 'createDate', title: '鍒涘缓鏃堕棿', type: 'datetime', width: 150, require: true, align: 'left', sort: true },
+ { field: 'modifier', title: '淇敼浜�', type: 'string', width: 100, align: 'left' },
+ { field: 'modifyDate', title: '淇敼鏃ユ湡', type: 'datetime', width: 150, align: 'left', sort: true }
+ ],
+ sortName: "id",
+ key: "id"
+ });
+ return {
+ table,
+ extend,
+ editFormFields,
+ editFormOptions,
+ searchFormFields,
+ searchFormOptions,
+ columns,
+ detail,
+ };
+ },
+});
</script>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
index 94e20ec..c992e3d 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundOrderDetailService.cs"
@@ -98,7 +98,7 @@
if (!stockInfos.Any())
{
- throw new Exception($"鐗╂枡[{item.MaterielCode}]鎵规[{item.BatchNo}]鏈壘鍒板彲鍒嗛厤搴撳瓨");
+ throw new Exception($"鐗╂枡[{item.MaterielCode}]鎵规[{item.BatchNo}]渚涘簲鍟哰{item.SupplyCode}]鏈壘鍒板彲鍒嗛厤搴撳瓨");
}
// 鍒嗛厤搴撳瓨锛堟寜鍏堣繘鍏堝嚭锛�
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
index cbd9442..f9c44da 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundPickingService.cs"
@@ -765,19 +765,19 @@
if (currentLockInfo.PickedQty < context.PickingRecord.PickQuantity)
return ValidationResult<bool>.Error($"閿佸畾淇℃伅宸叉嫞閫夋暟閲�({currentLockInfo.PickedQty})灏忎簬鍙栨秷鏁伴噺({context.PickingRecord.PickQuantity})");
- // 楠岃瘉搴撳瓨鏁版嵁
- var currentStockDetail = await _stockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>()
- .FirstAsync(x => x.Barcode == context.PickingRecord.Barcode && x.StockId == context.PickingRecord.StockId);
+ ////// 楠岃瘉搴撳瓨鏁版嵁
+ ////var currentStockDetail = await _stockInfoDetailService.Db.Queryable<Dt_StockInfoDetail>()
+ //// .FirstAsync(x => x.Barcode == context.PickingRecord.Barcode && x.StockId == context.PickingRecord.StockId);
- if (currentStockDetail == null)
- return ValidationResult<bool>.Error($"鏈壘鍒板搴旂殑搴撳瓨鏄庣粏璁板綍");
+ ////if (currentStockDetail == null)
+ //// return ValidationResult<bool>.Error($"鏈壘鍒板搴旂殑搴撳瓨鏄庣粏璁板綍");
- if (currentStockDetail.Status == StockStatusEmun.鍏ュ簱纭.ObjToInt() ||
- currentStockDetail.Status == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt())
- return ValidationResult<bool>.Error($"鏉$爜{context.PickingRecord.Barcode}宸茬粡鍥炲簱锛屾棤娉曞彇娑堝垎鎷�");
+ ////if (currentStockDetail.Status == StockStatusEmun.鍏ュ簱纭.ObjToInt() ||
+ //// currentStockDetail.Status == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt())
+ //// return ValidationResult<bool>.Error($"鏉$爜{context.PickingRecord.Barcode}宸茬粡鍥炲簱锛屾棤娉曞彇娑堝垎鎷�");
// 楠岃瘉鐘舵�佹祦杞殑鍚堟硶鎬�
- if (!await CanCancelPicking(currentLockInfo, currentStockDetail))
+ if (!await CanCancelPicking(currentLockInfo, null))
return ValidationResult<bool>.Error($"褰撳墠鐘舵�佷笉鍏佽鍙栨秷鍒嗘嫞");
return ValidationResult<bool>.Success(true);
@@ -795,9 +795,9 @@
if (lockInfo.Status != (int)OutLockStockStatusEnum.鎷i�夊畬鎴�)
return false;
- // 搴撳瓨鐘舵�佹鏌�
- if (stockDetail.Status == StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt())
- return false;
+ ////// 搴撳瓨鐘舵�佹鏌�
+ ////if (stockDetail.Status == StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt())
+ //// return false;
// 濡傛灉鏄媶鍖呰褰曪紝杩橀渶瑕佹鏌ョ埗閿佸畾淇℃伅鐘舵��
if (lockInfo.IsSplitted == 1 && lockInfo.ParentLockId.HasValue)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
index e52e206..47b932e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoService.cs"
@@ -311,9 +311,9 @@
// 鎵ц鏌ヨ骞舵寜鍏堣繘鍏堝嚭鎺掑簭
var stocks = stockQuery.ToList()
.Where(x => x.Details.Any(d =>
- d.MaterielCode == materielCode &&
- d.BatchNo == orderDetail.BatchNo &&
- d.SupplyCode == orderDetail.SupplyCode &&
+ d.MaterielCode == materielCode &&
+ string.IsNullOrEmpty(orderDetail.BatchNo)?true: d.BatchNo == orderDetail.BatchNo&&
+ string.IsNullOrEmpty(orderDetail.BatchNo)?true:d.SupplyCode == orderDetail.SupplyCode &&
d.StockQuantity > d.OutboundQuantity
))
.OrderBy(x => x.CreateDate)
@@ -323,8 +323,8 @@
{
var relevantDetails = stock.Details
.Where(d => d.MaterielCode == materielCode &&
- d.BatchNo == orderDetail.BatchNo &&
- d.SupplyCode == orderDetail.SupplyCode &&
+ string.IsNullOrEmpty(orderDetail.BatchNo) ? true : d.BatchNo == orderDetail.BatchNo &&
+ string.IsNullOrEmpty(orderDetail.BatchNo) ? true : d.SupplyCode == orderDetail.SupplyCode &&
d.StockQuantity > d.OutboundQuantity)
.ToList();
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/ReCheckOrderController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/ReCheckOrderController.cs"
new file mode 100644
index 0000000..216b453
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Check/ReCheckOrderController.cs"
@@ -0,0 +1,19 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.BaseController;
+using WIDESEA_ICheckService;
+using WIDESEA_Model.Models.Check;
+
+namespace WIDESEA_WMSServer.Controllers.Check
+{
+ /// <summary>
+ /// 閲嶆鍗�
+ /// </summary>
+ [Route("api/ReCheckOrder")]
+ [ApiController]
+ public class ReCheckOrderController : ApiBaseController<IReCheckOrderService, Dt_ReCheckOrder>
+ {
+ public ReCheckOrderController(IReCheckOrderService service) : base(service)
+ {
+ }
+ }
+}
--
Gitblit v1.9.3