From f723878f3226e9fc0c2c1ee067084a0422d4de4e Mon Sep 17 00:00:00 2001 From: hehaibing-1996 Date: Fri, 14 Feb 2025 17:09:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A7=E6=9E=B6=E7=BB=91=E5=AE=9A=20=20?= =?UTF-8?q?=E8=A7=A3=E7=BB=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PDA/PDA/pages.json | 7 + PDA/PDA/pages/main/main.vue | 4 +- .../shelfLocationBindUnbind.vue | 334 ++++++++++++++++ .../dist/dev/app-plus/app-config-service.js | 2 +- .../dist/dev/app-plus/app-service.js | 356 ++++++++++++++++-- .../IPDAShelfLocationBindUnbindService.cs | 48 +++ .../ShelfLocationBindUnbindRequest.cs | 14 + .../ShelfLocationBindUnbindResponse.cs | 19 + .../Controllers/LocationInfoController.cs | 2 +- .../PDAShelfLocationBindUnbindController.cs | 66 ++++ WCS.WebApi/Controllers/StoreInfoController.cs | 2 +- 11 files changed, 811 insertions(+), 43 deletions(-) create mode 100644 PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue create mode 100644 WCS.BLL/Services/IService/IPDAShelfLocationBindUnbindService.cs create mode 100644 WCS.Model/ApiModel/PDAShelfLocationBindUnbind/ShelfLocationBindUnbindRequest.cs create mode 100644 WCS.Model/ApiModel/PDAShelfLocationBindUnbind/ShelfLocationBindUnbindResponse.cs create mode 100644 WCS.WebApi/Controllers/PDAShelfLocationBindUnbindController.cs diff --git a/PDA/PDA/pages.json b/PDA/PDA/pages.json index bd2ccff..8ffe9d4 100644 --- a/PDA/PDA/pages.json +++ b/PDA/PDA/pages.json @@ -47,6 +47,13 @@ { "navigationBarTitleText" : "智慧物流系统-库存盘点" } + }, + { + "path" : "pages/shelfLocationBindUnbind/shelfLocationBindUnbind", + "style" : + { + "navigationBarTitleText" : "智慧物流系统-货架位置绑定解绑" + } } ], "globalStyle": { diff --git a/PDA/PDA/pages/main/main.vue b/PDA/PDA/pages/main/main.vue index 7789221..4e85bb8 100644 --- a/PDA/PDA/pages/main/main.vue +++ b/PDA/PDA/pages/main/main.vue @@ -66,11 +66,11 @@ - + - 货架位置 + 货架位置绑定解绑 diff --git a/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue b/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue new file mode 100644 index 0000000..db32940 --- /dev/null +++ b/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue @@ -0,0 +1,334 @@ + + + + + \ No newline at end of file diff --git a/PDA/PDA/unpackage/dist/dev/app-plus/app-config-service.js b/PDA/PDA/unpackage/dist/dev/app-plus/app-config-service.js index 2e70fa5..cd44844 100644 --- a/PDA/PDA/unpackage/dist/dev/app-plus/app-config-service.js +++ b/PDA/PDA/unpackage/dist/dev/app-plus/app-config-service.js @@ -2,7 +2,7 @@ ;(function(){ let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[]; const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"智慧物流系统-移动端","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"PDA","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"4.45","entryPagePath":"pages/index/index","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}}; - const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"navigationBar":{"titleText":"智慧物流系统-登录","type":"default"},"isNVue":false}},{"path":"pages/config/config","meta":{"navigationBar":{"titleText":"智慧物流系统-用户配置","type":"default"},"isNVue":false}},{"path":"pages/main/main","meta":{"navigationBar":{"titleText":"智慧物流系统-主页","type":"default"},"isNVue":false}},{"path":"pages/bind/bind","meta":{"navigationBar":{"titleText":"智慧物流系统-物料绑定","type":"default"},"isNVue":false}},{"path":"pages/bindSelectMat/bindSelectMat","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}},{"path":"pages/queryBindList/queryBindList","meta":{"navigationBar":{"titleText":"智慧物流系统-绑定查询","type":"default"},"isNVue":false}},{"path":"pages/stockTaking/stockTaking","meta":{"navigationBar":{"titleText":"智慧物流系统-库存盘点","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute)); + const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"navigationBar":{"titleText":"智慧物流系统-登录","type":"default"},"isNVue":false}},{"path":"pages/config/config","meta":{"navigationBar":{"titleText":"智慧物流系统-用户配置","type":"default"},"isNVue":false}},{"path":"pages/main/main","meta":{"navigationBar":{"titleText":"智慧物流系统-主页","type":"default"},"isNVue":false}},{"path":"pages/bind/bind","meta":{"navigationBar":{"titleText":"智慧物流系统-物料绑定","type":"default"},"isNVue":false}},{"path":"pages/bindSelectMat/bindSelectMat","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}},{"path":"pages/queryBindList/queryBindList","meta":{"navigationBar":{"titleText":"智慧物流系统-绑定查询","type":"default"},"isNVue":false}},{"path":"pages/stockTaking/stockTaking","meta":{"navigationBar":{"titleText":"智慧物流系统-库存盘点","type":"default"},"isNVue":false}},{"path":"pages/shelfLocationBindUnbind/shelfLocationBindUnbind","meta":{"navigationBar":{"titleText":"智慧物流系统-货架位置绑定解绑","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute)); __uniConfig.styles=[];//styles __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); __uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); diff --git a/PDA/PDA/unpackage/dist/dev/app-plus/app-service.js b/PDA/PDA/unpackage/dist/dev/app-plus/app-service.js index ae2020d..0a5acc7 100644 --- a/PDA/PDA/unpackage/dist/dev/app-plus/app-service.js +++ b/PDA/PDA/unpackage/dist/dev/app-plus/app-service.js @@ -151,7 +151,7 @@ if (uni.restoreGlobal) { } return target; }; - const _sfc_main$c = { + const _sfc_main$d = { data() { return { title: "登录", @@ -227,7 +227,7 @@ if (uni.restoreGlobal) { } } }; - function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [ vue.createElementVNode("navigator", { url: "../config/config", @@ -313,8 +313,8 @@ if (uni.restoreGlobal) { ]) ]); } - const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$b], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/index/index.vue"]]); - const _sfc_main$b = { + const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$c], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/index/index.vue"]]); + const _sfc_main$c = { data() { return { serverIP: "", @@ -336,7 +336,7 @@ if (uni.restoreGlobal) { } } }; - function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [ vue.createElementVNode("view", null, [ vue.createElementVNode("label", null, "服务器IP:"), @@ -373,7 +373,7 @@ if (uni.restoreGlobal) { }, "保存配置") ]); } - const PagesConfigConfig = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$a], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/config/config.vue"]]); + const PagesConfigConfig = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$b], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/config/config.vue"]]); const _imports_0$1 = "/static/logOut.png"; const _imports_1 = "/static/bind.png"; const _imports_2 = "/static/bindQuery.png"; @@ -382,13 +382,13 @@ if (uni.restoreGlobal) { const _imports_5 = "/static/stockTaking.png"; const _imports_6 = "/static/task.png"; const _imports_7 = "/static/shelfLocation.png"; - const _sfc_main$a = { + const _sfc_main$b = { data() { return {}; }, methods: {} }; - function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [ vue.createElementVNode("view", null, [ vue.createElementVNode("navigator", { @@ -529,7 +529,7 @@ if (uni.restoreGlobal) { style: { "flex": "5" } }, [ vue.createElementVNode("navigator", { - url: "../bind/bind", + url: "../shelfLocationBindUnbind/shelfLocationBindUnbind", "hover-class": "navigator-hover" }, [ vue.createElementVNode("view", { @@ -541,7 +541,7 @@ if (uni.restoreGlobal) { src: _imports_7 }) ]), - vue.createElementVNode("view", { class: "function-text" }, "货架位置") + vue.createElementVNode("view", { class: "function-text" }, "货架位置绑定解绑") ]) ]), vue.createElementVNode("view", { @@ -560,8 +560,8 @@ if (uni.restoreGlobal) { ]) ]); } - const PagesMainMain = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$9], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/main/main.vue"]]); - const _sfc_main$9 = { + const PagesMainMain = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$a], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/main/main.vue"]]); + const _sfc_main$a = { data() { return { visible: false, @@ -647,7 +647,7 @@ if (uni.restoreGlobal) { } } }; - function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) { return $data.visible ? (vue.openBlock(), vue.createElementBlock("view", { key: 0, class: "popup-container" @@ -678,9 +678,9 @@ if (uni.restoreGlobal) { ]) ])) : vue.createCommentVNode("v-if", true); } - const PagesBindSelectMatBindSelectMat = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$8], ["__scopeId", "data-v-68e7b952"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/bindSelectMat/bindSelectMat.vue"]]); + const PagesBindSelectMatBindSelectMat = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$9], ["__scopeId", "data-v-68e7b952"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/bindSelectMat/bindSelectMat.vue"]]); const _imports_0 = "/static/scan.png"; - const _sfc_main$8 = { + const _sfc_main$9 = { components: { bindSelectMat: PagesBindSelectMatBindSelectMat }, @@ -904,7 +904,7 @@ if (uni.restoreGlobal) { } } }; - function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) { const _component_bindSelectMat = vue.resolveComponent("bindSelectMat"); return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [ vue.createVNode(_component_bindSelectMat, { @@ -1085,7 +1085,7 @@ if (uni.restoreGlobal) { ]) ]); } - const PagesBindBind = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$7], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/bind/bind.vue"]]); + const PagesBindBind = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$8], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/bind/bind.vue"]]); class MPAnimation { constructor(options, _this) { this.options = options; @@ -1196,7 +1196,7 @@ if (uni.restoreGlobal) { clearTimeout(_this.timer); return new MPAnimation(option, _this); } - const _sfc_main$7 = { + const _sfc_main$8 = { name: "uniTransition", emits: ["click", "change"], props: { @@ -1443,7 +1443,7 @@ if (uni.restoreGlobal) { } } }; - function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) { return $data.isShow ? (vue.openBlock(), vue.createElementBlock("view", { key: 0, ref: "ani", @@ -1455,8 +1455,8 @@ if (uni.restoreGlobal) { vue.renderSlot(_ctx.$slots, "default") ], 14, ["animation"])) : vue.createCommentVNode("v-if", true); } - const __easycom_0$1 = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$6], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/uni_modules/uni-transition/components/uni-transition/uni-transition.vue"]]); - const _sfc_main$6 = { + const __easycom_0$1 = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$7], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/uni_modules/uni-transition/components/uni-transition/uni-transition.vue"]]); + const _sfc_main$7 = { name: "uniPopup", components: {}, emits: ["change", "maskClick"], @@ -1784,7 +1784,7 @@ if (uni.restoreGlobal) { } } }; - function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) { const _component_uni_transition = resolveEasycom(vue.resolveDynamicComponent("uni-transition"), __easycom_0$1); return $data.showPopup ? (vue.openBlock(), vue.createElementBlock( "view", @@ -1844,8 +1844,8 @@ if (uni.restoreGlobal) { /* CLASS */ )) : vue.createCommentVNode("v-if", true); } - const __easycom_0 = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$5], ["__scopeId", "data-v-4dd3c44b"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/uni_modules/uni-popup/components/uni-popup/uni-popup.vue"]]); - const _sfc_main$5 = { + const __easycom_0 = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$6], ["__scopeId", "data-v-4dd3c44b"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/uni_modules/uni-popup/components/uni-popup/uni-popup.vue"]]); + const _sfc_main$6 = { __name: "Card", props: { item: { @@ -1869,7 +1869,7 @@ if (uni.restoreGlobal) { return __returned__; } }; - function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "card" }, [ vue.createElementVNode("view", { class: "card-header" }, [ vue.createElementVNode( @@ -1970,8 +1970,8 @@ if (uni.restoreGlobal) { ]) ]); } - const Card = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$4], ["__scopeId", "data-v-29c414df"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/components/Card.vue"]]); - const _sfc_main$4 = { + const Card = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$5], ["__scopeId", "data-v-29c414df"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/components/Card.vue"]]); + const _sfc_main$5 = { name: "uniPopup", components: {}, emits: ["change", "maskClick"], @@ -2324,7 +2324,7 @@ if (uni.restoreGlobal) { } } }; - function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) { const _component_uni_transition = resolveEasycom(vue.resolveDynamicComponent("uni-transition"), __easycom_0$1); return $data.showPopup ? (vue.openBlock(), vue.createElementBlock( "view", @@ -2384,8 +2384,8 @@ if (uni.restoreGlobal) { /* CLASS */ )) : vue.createCommentVNode("v-if", true); } - const uniPopup = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$3], ["__scopeId", "data-v-7db519c7"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/node_modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.vue"]]); - const _sfc_main$3 = { + const uniPopup = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$4], ["__scopeId", "data-v-7db519c7"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/node_modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.vue"]]); + const _sfc_main$4 = { components: { uniPopup, Card @@ -2705,7 +2705,7 @@ if (uni.restoreGlobal) { } } }; - function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { const _component_uni_popup = resolveEasycom(vue.resolveDynamicComponent("uni-popup"), __easycom_0); const _component_Card = vue.resolveComponent("Card"); return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [ @@ -2886,8 +2886,8 @@ if (uni.restoreGlobal) { ]) ]); } - const PagesQueryBindListQueryBindList = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/queryBindList/queryBindList.vue"]]); - const _sfc_main$2 = { + const PagesQueryBindListQueryBindList = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$3], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/queryBindList/queryBindList.vue"]]); + const _sfc_main$3 = { __name: "StocktakingCard", props: { item: { @@ -2911,7 +2911,7 @@ if (uni.restoreGlobal) { return __returned__; } }; - function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", null, [ vue.createElementVNode("view", { class: "card-header" }, [ vue.createElementVNode( @@ -3025,8 +3025,8 @@ if (uni.restoreGlobal) { ]) ]); } - const StocktakingCard = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__scopeId", "data-v-e2c0cdac"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/components/StocktakingCard.vue"]]); - const _sfc_main$1 = { + const StocktakingCard = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2], ["__scopeId", "data-v-e2c0cdac"], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/components/StocktakingCard.vue"]]); + const _sfc_main$2 = { components: { uniPopup, StocktakingCard @@ -3270,7 +3270,7 @@ if (uni.restoreGlobal) { } } }; - function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { const _component_uni_popup = resolveEasycom(vue.resolveDynamicComponent("uni-popup"), __easycom_0); const _component_StocktakingCard = vue.resolveComponent("StocktakingCard"); return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [ @@ -3462,7 +3462,286 @@ if (uni.restoreGlobal) { ]) ]); } - const PagesStockTakingStockTaking = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/stockTaking/stockTaking.vue"]]); + const PagesStockTakingStockTaking = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/stockTaking/stockTaking.vue"]]); + const _sfc_main$1 = { + data() { + return { + locationId: null, + locationCode: "", + userName: "", + //当前登录的用户名 + shelfId: null, + shelfCode: "", + placeholderText: "请先扫描货架码", + matCodeCondition: "" + //物料编码搜索条件 + }; + }, + onShow: function() { + this.userName = getConfig("userName", "admin"); + const self = this; + recive(function(res) { + formatAppLog("log", "at pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue:125", "Success:" + res.data); + self.analysisScanCode(res.data); + }, function(err) { + formatAppLog("log", "at pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue:128", "Error:", JSON.stringify(err)); + }); + }, + methods: { + analysisScanCode: function(encodedString) { + encodedString = encodedString.replace(/,\s*\.\.\.$/, ""); + this.shelfCode = encodedString; + var serverIPAndPort = getServerIPAndPort(); + uni.request({ + url: "http://" + serverIPAndPort + "/pdaStocktaking/getStocktakingInfosByShelfCode", + // 请求的接口地址 + method: "POST", + // 设置请求方式为 POST + data: { + "shelfCode": this.shelfCode, + "userName": this.userName, + "deviceType": "PDA", + "pageNumber": 1, + "pageSize": 1e3 + }, + header: { + "Content-Type": "application/json" + // 如果需要以JSON格式发送数据 + }, + success: (res) => { + if (res.statusCode === 200) { + if (res.data.code == 200) { + if (res.data.data == null || res.data.data.count == 0) { + uni.showToast({ + title: "该货架不存在绑定的物料信息!", + icon: "none", + duration: 1500 + }); + return; + } + this.cardData = res.data.data.lists; + this.recordCount = res.data.data.count; + uni.showToast({ + title: "获取成功!", + icon: "none", + duration: 100 + }); + } else { + uni.showToast({ + title: "获取失败:" + res.data.message, + icon: "none", + duration: 3500 + }); + this.clear(); + } + } else { + uni.showToast({ + title: "服务器返回错误状态码" + res.statusCode, + icon: "none", + duration: 3e3 + }); + this.clear(); + } + }, + fail: (err) => { + uni.showToast({ + title: "请求失败" + err, + icon: "none", + duration: 3e3 + }); + this.clear(); + }, + complete: (event) => { + formatAppLog("log", "at pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue:205", "请求完成", event); + } + }); + }, + //清空当前界面所有内容 + clear: function() { + this.placeholderText = "请先扫描货架码"; + } + } + }; + function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + const _component_uni_popup = resolveEasycom(vue.resolveDynamicComponent("uni-popup"), __easycom_0); + return vue.openBlock(), vue.createElementBlock("view", { class: "bg-image" }, [ + vue.createVNode( + _component_uni_popup, + { + ref: "popup", + type: "dialog" + }, + { + default: vue.withCtx(() => [ + vue.createElementVNode("view", { class: "popup-content" }, [ + vue.createElementVNode("view", { class: "info-item" }, [ + vue.createElementVNode("label", null, "物料编码:"), + vue.createElementVNode( + "text", + null, + vue.toDisplayString(_ctx.fixedInfo.matCode), + 1 + /* TEXT */ + ) + ]), + vue.createElementVNode("view", { class: "info-item" }, [ + vue.createElementVNode("label", null, "物料名称:"), + vue.createElementVNode( + "text", + null, + vue.toDisplayString(_ctx.fixedInfo.matName), + 1 + /* TEXT */ + ) + ]), + vue.createElementVNode("view", { class: "info-item" }, [ + vue.createElementVNode("label", null, "物料规格:"), + vue.createElementVNode( + "text", + null, + vue.toDisplayString(_ctx.fixedInfo.matSpec), + 1 + /* TEXT */ + ) + ]), + vue.createElementVNode("view", { class: "info-item" }, [ + vue.createElementVNode("label", null, "数量:"), + vue.createElementVNode( + "text", + null, + vue.toDisplayString(_ctx.fixedInfo.matQty), + 1 + /* TEXT */ + ) + ]), + vue.createElementVNode("view", { + class: "input-item", + style: { "background-color": "wheat" } + }, [ + vue.createElementVNode("label", null, "盘点数量:"), + vue.withDirectives(vue.createElementVNode( + "input", + { + ref: "inputRef", + "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.inputValue = $event), + type: "number", + placeholder: "输入数量" + }, + null, + 512 + /* NEED_PATCH */ + ), [ + [ + vue.vModelText, + _ctx.inputValue, + void 0, + { number: true } + ] + ]) + ]), + vue.createElementVNode("view", { class: "button-group" }, [ + vue.createElementVNode("button", { + onClick: _cache[1] || (_cache[1] = (...args) => _ctx.hidePopup && _ctx.hidePopup(...args)) + }, "取消"), + vue.createElementVNode("button", { + onClick: _cache[2] || (_cache[2] = ($event) => _ctx.saveData(_ctx.fixedInfo)) + }, "保存") + ]) + ]) + ]), + _: 1 + /* STABLE */ + }, + 512 + /* NEED_PATCH */ + ), + vue.createElementVNode("view", { class: "diy-flex-row" }, [ + vue.createElementVNode("view", { style: { "flex": "3" } }, [ + vue.createCommentVNode(" 占位 ") + ]), + vue.createElementVNode("view", { style: { "flex": "80", "margin": "5rpx" } }, [ + vue.createElementVNode("view", { class: "diy-flex-row" }, [ + vue.createElementVNode("view", { + class: "rightImageContainer", + style: { "flex": "12", "padding-top": "20rpx" } + }, [ + vue.createElementVNode("image", { + style: { "width": "60rpx", "height": "60rpx" }, + src: _imports_0 + }) + ]), + vue.createElementVNode("view", { + class: "uni-input-wrapper", + style: { "flex": "60" } + }, [ + vue.withDirectives(vue.createElementVNode("input", { + id: "inputMatCode", + class: "uni-input", + style: { "font-size": "50rpx", "padding": "10rpx" }, + placeholder: $data.placeholderText, + "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $data.matCodeCondition = $event), + onBlur: _cache[4] || (_cache[4] = (...args) => _ctx.queryMatList && _ctx.queryMatList(...args)) + }, null, 40, ["placeholder"]), [ + [vue.vModelText, $data.matCodeCondition] + ]) + ]), + vue.createElementVNode("view", { style: { "flex": "3" } }), + vue.createElementVNode("view", { style: { "flex": "30" } }, [ + vue.createElementVNode("button", { + onClick: _cache[5] || (_cache[5] = ($event) => $options.analysisScanCode(this.shelfCode)) + }, "切换") + ]) + ]) + ]), + vue.createElementVNode("view", { style: { "flex": "2" } }, [ + vue.createCommentVNode(" 占位 ") + ]) + ]), + vue.createElementVNode("view", { + class: "diy-flex-column", + style: { "margin-top": "5rpx" } + }, [ + vue.createElementVNode("view", { class: "diy-flex-inforow" }, [ + vue.createElementVNode("view", { style: { "width": "10rpx" } }), + vue.createElementVNode( + "view", + { style: { "width": "700rpx" } }, + "货架码:" + vue.toDisplayString($data.shelfCode), + 1 + /* TEXT */ + ) + ]) + ]), + vue.createElementVNode("view", { + class: "diy-flex-column", + style: { "margin-top": "5rpx" } + }, [ + vue.createElementVNode("view", { class: "diy-flex-inforow" }, [ + vue.createElementVNode("view", { style: { "width": "10rpx" } }), + vue.createElementVNode( + "view", + { style: { "width": "700rpx" } }, + "当前位置:" + vue.toDisplayString($data.shelfCode), + 1 + /* TEXT */ + ) + ]) + ]), + vue.createElementVNode("view", { style: { "flex": "1" } }, [ + vue.createElementVNode("view", { style: { "flex": "40", "text-align": "center" } }, [ + vue.createElementVNode("button", { + style: { "margin": "50rpx", "font-size": "40rpx" }, + size: "mini" + }, "绑  定"), + vue.createElementVNode("button", { + style: { "margin": "50rpx", "font-size": "40rpx", "background-color": "red" }, + size: "mini" + }, "解  绑") + ]) + ]) + ]); + } + const PagesShelfLocationBindUnbindShelfLocationBindUnbind = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "E:/代码/赛特制冷WCS/wcs/PDA/PDA/pages/shelfLocationBindUnbind/shelfLocationBindUnbind.vue"]]); __definePage("pages/index/index", PagesIndexIndex); __definePage("pages/config/config", PagesConfigConfig); __definePage("pages/main/main", PagesMainMain); @@ -3470,6 +3749,7 @@ if (uni.restoreGlobal) { __definePage("pages/bindSelectMat/bindSelectMat", PagesBindSelectMatBindSelectMat); __definePage("pages/queryBindList/queryBindList", PagesQueryBindListQueryBindList); __definePage("pages/stockTaking/stockTaking", PagesStockTakingStockTaking); + __definePage("pages/shelfLocationBindUnbind/shelfLocationBindUnbind", PagesShelfLocationBindUnbindShelfLocationBindUnbind); const _sfc_main = { onLaunch: function() { formatAppLog("log", "at App.vue:4", "App Launch"); diff --git a/WCS.BLL/Services/IService/IPDAShelfLocationBindUnbindService.cs b/WCS.BLL/Services/IService/IPDAShelfLocationBindUnbindService.cs new file mode 100644 index 0000000..297b57f --- /dev/null +++ b/WCS.BLL/Services/IService/IPDAShelfLocationBindUnbindService.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using WCS.Model; +using WCS.Model.ApiModel.PDAShelfLocationBindUnbind; +using WCS.Model.ApiModel.SingleLight; +using WCS.Model.ApiModel.UpLoad; +using WCS.Model.WebSocketModel; + +namespace WCS.BLL.Services.IService +{ + /// + /// PDA绑定解绑货架位置信息相关接口 + /// + public interface IPDAShelfLocationBindUnbindService + { + /// + /// 通过货架编码查询当前绑定的位置 + /// + /// + /// + public Task getLocationInfoByShelfCode(ShelfLocationBindUnbindRequest request); + + /// + /// 扫码 通过位置码获取当前位置的相关信息和当前位置上的货架的信息 + /// + /// + /// + public Task getLocationInfoByLocationInfo(ShelfLocationBindUnbindRequest request); + + + /// + /// 货架绑定至位置 + /// + /// + /// + public Task shelfLocationBind(ShelfLocationBindUnbindRequest request); + + /// + /// 货架与位置解绑 + /// + /// + /// + public Task shelfLocationUnBind(ShelfLocationBindUnbindRequest request); + } +} diff --git a/WCS.Model/ApiModel/PDAShelfLocationBindUnbind/ShelfLocationBindUnbindRequest.cs b/WCS.Model/ApiModel/PDAShelfLocationBindUnbind/ShelfLocationBindUnbindRequest.cs new file mode 100644 index 0000000..74ab37a --- /dev/null +++ b/WCS.Model/ApiModel/PDAShelfLocationBindUnbind/ShelfLocationBindUnbindRequest.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WCS.Model.ApiModel.PDAShelfLocationBindUnbind +{ + public class ShelfLocationBindUnbindRequest : RequestBase + { + public int ShelfId { get; set; } + public string ShelfCode { get; set; } + public int LocationId { get; set; } = 0; + public string LocationCode { get; set; } + } +} diff --git a/WCS.Model/ApiModel/PDAShelfLocationBindUnbind/ShelfLocationBindUnbindResponse.cs b/WCS.Model/ApiModel/PDAShelfLocationBindUnbind/ShelfLocationBindUnbindResponse.cs new file mode 100644 index 0000000..64195fc --- /dev/null +++ b/WCS.Model/ApiModel/PDAShelfLocationBindUnbind/ShelfLocationBindUnbindResponse.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WCS.Model.ApiModel.PDAShelfLocationBindUnbind +{ + public class ShelfLocationBindUnbindResponse : ResponseCommon + { + public new ShelfLocationBindUnbindResponseData Data { get; set; } + } + + public class ShelfLocationBindUnbindResponseData + { + public int ShelfId { get; set; } + public string ShelfCode { get; set; } + public int LocationId { get; set; } = 0; + public string LocationCode { get; set; } + } +} diff --git a/WCS.WebApi/Controllers/LocationInfoController.cs b/WCS.WebApi/Controllers/LocationInfoController.cs index f33e386..ae4d7d5 100644 --- a/WCS.WebApi/Controllers/LocationInfoController.cs +++ b/WCS.WebApi/Controllers/LocationInfoController.cs @@ -14,7 +14,7 @@ using WCS.Model.ApiModel.LocationInfo; namespace WCS.WebApi.Controllers { /// - /// 货架管理、模组管理、库位管理的接口 + /// 位置管理的接口 /// [ApiController] [Route("[controller]")] diff --git a/WCS.WebApi/Controllers/PDAShelfLocationBindUnbindController.cs b/WCS.WebApi/Controllers/PDAShelfLocationBindUnbindController.cs new file mode 100644 index 0000000..b578326 --- /dev/null +++ b/WCS.WebApi/Controllers/PDAShelfLocationBindUnbindController.cs @@ -0,0 +1,66 @@ +using Microsoft.AspNetCore.Mvc; +using WCS.BLL.Services.IService; +using WCS.BLL.Services.Service; +using WCS.Model; +using WCS.Model.ApiModel.MatBaseInfo; +using WCS.Model.ApiModel.Stocktaking; + +namespace WCS.WebApi.Controllers +{ + /// + /// PDA货架绑定解绑 相关接口 + /// + [ApiController] + [Route("[controller]")] + public class PDAShelfLocationBindUnbindController : ControllerBase + { + public IStockTakingService _stockTakingService { get; set; } + public PDAShelfLocationBindUnbindController(IStockTakingService stockTakingService) + { + _stockTakingService = stockTakingService; + } + + [Route("getLocationInfoByShelfCode")] + [HttpPost(Name = "getLocationInfoByShelfCode")] + public async Task getLocationInfoByShelfCode(StockTakingByIdRequest request) + { + try + { + #region 参数校验 + //判断参数 //数量可以为空 数量为空盘点确认 这边删除对应数据即可 + if (request.MatDetailCurrentInfoId == 0) + { + return new ResponseCommon() + { + Code = 201, + Message = $"操作失败:参数传入错误(Id为0)!", + Data = null, + }; + } + + if (request.StocktakingQty < 0) + { + return new ResponseCommon() + { + Code = 201, + Message = $"操作失败:数量应大于等于0!", + Data = null, + }; + } + #endregion + + return await _stockTakingService.stockTakingById(request); + } + catch (Exception ex) + { + return new ResponseCommon() + { + Code = 201, + Message = ex.Message, + Data = null, + }; + } + } + + } +} diff --git a/WCS.WebApi/Controllers/StoreInfoController.cs b/WCS.WebApi/Controllers/StoreInfoController.cs index 1634100..f5706e1 100644 --- a/WCS.WebApi/Controllers/StoreInfoController.cs +++ b/WCS.WebApi/Controllers/StoreInfoController.cs @@ -11,7 +11,7 @@ using WCS.DAL.DbModels; namespace WCS.WebApi.Controllers { /// - /// 货架管理、模组管理、库位管理的接口 + /// 货架管理 /// [ApiController] [Route("[controller]")]