From 0df3be4057cc6b21303b88c81b85e0792448d332 Mon Sep 17 00:00:00 2001 From: houjunxiang Date: Fri, 27 Mar 2026 17:32:11 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E7=89=A9=E6=96=99=E8=AF=95?= =?UTF-8?q?=E5=89=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nx/api/material.js | 34 ++++ pages.json | 21 +++ pages/material/inventoryCheck/check.vue | 177 +++++++++++++++++++ pages/material/inventoryCheck/detailList.vue | 63 +++++++ pages/material/inventoryCheck/index.vue | 113 ++++++++++++ pages/material/openMark/index.vue | 3 +- pages/material/outbound/index.vue | 3 +- pages/material/useRecord/useForm.vue | 3 +- pages/material/useUpMark/index.vue | 3 +- static/images/menus/inventoryCheck .png | Bin 0 -> 10722 bytes 10 files changed, 416 insertions(+), 4 deletions(-) create mode 100644 pages/material/inventoryCheck/check.vue create mode 100644 pages/material/inventoryCheck/detailList.vue create mode 100644 pages/material/inventoryCheck/index.vue create mode 100644 static/images/menus/inventoryCheck .png diff --git a/nx/api/material.js b/nx/api/material.js index 64422e3..4d81915 100644 --- a/nx/api/material.js +++ b/nx/api/material.js @@ -81,5 +81,39 @@ export default { url: '/qms/resource/material-use-end-reuse/reuse', method: 'PUT', data + }), + // 流程列表 + getLifecycleList: params => + request({ + url: '/qms/resource/material-lifecycle/page', + method: 'GET', + params + }), + // 获取流程明细 + getLifecycleDetail: params => + request({ + url: '/qms/resource/material-lifecycle/get', + method: 'GET', + params + }), + // 存盘点明细 + inventoryCheckDetails: params => + request({ + url: '/qms/resource/material-inventory-check-detail/page', + method: 'GET', + params + }), + inventoryCheckInf: data => + request({ + url: '/qms/resource/material-lifecycle/inventory-inf', + method: 'PUT', + data + }), + // 盘点执行人提交盘点 + submitInventoryCheck: params => + request({ + url: '/qms/resource/material-lifecycle/operator-submit', + method: 'PUT', + params }) } diff --git a/pages.json b/pages.json index 92bbea9..43bf647 100644 --- a/pages.json +++ b/pages.json @@ -351,6 +351,27 @@ "navigationStyle": "custom" } }, + { + "path": "pages/material/inventoryCheck/index", + "style": { + "navigationBarTitleText": "库存盘点", + "navigationStyle": "custom" + } + }, + { + "path": "pages/material/inventoryCheck/check", + "style": { + "navigationBarTitleText": "库存单", + "navigationStyle": "custom" + } + }, + { + "path": "pages/material/inventoryCheck/detailList", + "style": { + "navigationBarTitleText": "盘点明细", + "navigationStyle": "custom" + } + }, { "path": "pages/setting/UrlConfig", "style": { diff --git a/pages/material/inventoryCheck/check.vue b/pages/material/inventoryCheck/check.vue new file mode 100644 index 0000000..dcd8bc8 --- /dev/null +++ b/pages/material/inventoryCheck/check.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/pages/material/inventoryCheck/detailList.vue b/pages/material/inventoryCheck/detailList.vue new file mode 100644 index 0000000..8e565c8 --- /dev/null +++ b/pages/material/inventoryCheck/detailList.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/pages/material/inventoryCheck/index.vue b/pages/material/inventoryCheck/index.vue new file mode 100644 index 0000000..782ec43 --- /dev/null +++ b/pages/material/inventoryCheck/index.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/pages/material/openMark/index.vue b/pages/material/openMark/index.vue index fcb6ab8..3908b7a 100644 --- a/pages/material/openMark/index.vue +++ b/pages/material/openMark/index.vue @@ -63,7 +63,8 @@ const debouncedHandleScan = debounce(val => { scanQRInfo.value = '' if (nx.$router.getCurrentPage().route !== 'pages/material/openMark/index') return try { - materialCode.value = val + const {code} = JSON.parse(val) + materialCode.value = code getMaterialList() } catch (error) { uni.showToast({ diff --git a/pages/material/outbound/index.vue b/pages/material/outbound/index.vue index 57cf27e..b954cfa 100644 --- a/pages/material/outbound/index.vue +++ b/pages/material/outbound/index.vue @@ -109,7 +109,8 @@ const debouncedHandleScan = debounce(val => { scanQRInfo.value = '' if (nx.$router.getCurrentPage().route !== 'pages/material/outbound/index') return try { - materialCode.value = val + const {code} = JSON.parse(val) + materialCode.value = code getMaterialList() } catch (error) { uni.showToast({ diff --git a/pages/material/useRecord/useForm.vue b/pages/material/useRecord/useForm.vue index 7708024..bcb2f79 100644 --- a/pages/material/useRecord/useForm.vue +++ b/pages/material/useRecord/useForm.vue @@ -81,7 +81,8 @@ const debouncedHandleScan = debounce(val => { scanQRInfo.value = '' if (nx.$router.getCurrentPage().route !== 'pages/material/useRecord/index') return try { - materialCode.value = val + const {code} = JSON.parse(val) + materialCode.value = code getMaterialInfo() } catch (error) { uni.showToast({ diff --git a/pages/material/useUpMark/index.vue b/pages/material/useUpMark/index.vue index 952ab26..973c395 100644 --- a/pages/material/useUpMark/index.vue +++ b/pages/material/useUpMark/index.vue @@ -59,7 +59,8 @@ const debouncedHandleScan = debounce(val => { scanQRInfo.value = '' if (nx.$router.getCurrentPage().route !== 'pages/material/useUpMark/index') return try { - materialCode.value = val + const {code} = JSON.parse(val) + materialCode.value = code getMaterialList() } catch (error) { uni.showToast({ diff --git a/static/images/menus/inventoryCheck .png b/static/images/menus/inventoryCheck .png new file mode 100644 index 0000000000000000000000000000000000000000..0929f48e26e7e9465c99d7d5d9af839da878af5f GIT binary patch literal 10722 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 TS|fm_O^~{Zj`Ax-tEm46