From 7ee3df9ab9aca273c23611a3f78caee43c5495de Mon Sep 17 00:00:00 2001 From: houjunxiang Date: Thu, 20 Nov 2025 17:23:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=A0=B7=E5=93=81=E5=BA=93=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- defaultBaseUrl.js | 6 +- nx/api/sampleWarehouse.js | 57 ++++ nx/helper/calcAnalysisValue.js | 86 +++--- nx/helper/index.js | 14 +- nx/scss/index.scss | 5 +- nx/store/biz.js | 6 +- pages.json | 35 +++ pages/analysis/index/index.vue | 6 +- pages/analysis/sample/sample-work-detail.vue | 1 + pages/index/index.vue | 6 +- .../dispatchGiveBack/index.vue | 7 + .../execChangeLocation/index.vue | 252 +++++++++++------- pages/sampleWarehouse/index/index.vue | 66 +++-- pages/sampleWarehouse/returnToStock/index.vue | 60 ++--- .../sampleDispatchExternal/detail.vue | 131 +++++++++ .../sampleDispatchExternal/index.vue | 80 ++++++ .../sampleDispatchInternal/index.vue | 90 +++++++ pages/sampleWarehouse/sampleSearch/index.vue | 68 +++-- pages/sampleWarehouse/sampleTakeOff/index.vue | 169 ++++++++++++ static/images/menus/records.png | Bin 6476 -> 0 bytes static/images/menus/内部调拨.png | Bin 0 -> 10397 bytes .../menus/{analyse.png => 分析管理.png} | Bin static/images/menus/外部调拨.png | Bin 0 -> 9164 bytes .../menus/{balance.png => 天平查看.png} | Bin .../{execChangeLocation.png => 库位变更.png} | Bin static/images/menus/样品下架.png | Bin 0 -> 6979 bytes .../{sampleAnalysis.png => 样品分析.png} | Bin .../{sampleWarehouse.png => 样品库管理.png} | Bin .../menus/{returnToStock.png => 样品归库.png} | Bin static/images/menus/记录.png | Bin 0 -> 9192 bytes .../images/menus/{device.png => 设备管理.png} | Bin static/images/menus/调拨归还.png | Bin 0 -> 8556 bytes 32 files changed, 910 insertions(+), 235 deletions(-) create mode 100644 pages/sampleWarehouse/dispatchGiveBack/index.vue create mode 100644 pages/sampleWarehouse/sampleDispatchExternal/detail.vue create mode 100644 pages/sampleWarehouse/sampleDispatchExternal/index.vue create mode 100644 pages/sampleWarehouse/sampleDispatchInternal/index.vue create mode 100644 pages/sampleWarehouse/sampleTakeOff/index.vue delete mode 100644 static/images/menus/records.png create mode 100644 static/images/menus/内部调拨.png rename static/images/menus/{analyse.png => 分析管理.png} (100%) create mode 100644 static/images/menus/外部调拨.png rename static/images/menus/{balance.png => 天平查看.png} (100%) rename static/images/menus/{execChangeLocation.png => 库位变更.png} (100%) create mode 100644 static/images/menus/样品下架.png rename static/images/menus/{sampleAnalysis.png => 样品分析.png} (100%) rename static/images/menus/{sampleWarehouse.png => 样品库管理.png} (100%) rename static/images/menus/{returnToStock.png => 样品归库.png} (100%) create mode 100644 static/images/menus/记录.png rename static/images/menus/{device.png => 设备管理.png} (100%) create mode 100644 static/images/menus/调拨归还.png diff --git a/defaultBaseUrl.js b/defaultBaseUrl.js index c038aa6..8d4dde1 100644 --- a/defaultBaseUrl.js +++ b/defaultBaseUrl.js @@ -1,9 +1,9 @@ // 在此不用配置接口前缀 const isDev = process.env.NODE_ENV === 'development' -const BaseUrl = isDev ? 'http://192.168.26.116:888/admin-api' : 'http://192.168.26.116:888/admin-api' -// const BaseUrl = isDev ? 'http://192.168.26.190:48080/admin-api' : 'http://192.168.26.116:888/admin-api' +// const BaseUrl = isDev ? 'http://192.168.26.116:888/admin-api' : 'http://192.168.26.116:888/admin-api' +const BaseUrl = isDev ? 'http://192.168.26.190:48080/admin-api' : 'http://192.168.26.116:888/admin-api' -// const BaseUrl = isDev ? 'http://localhost:9999' : '' +// const BaseUrl = isDev ? 'http://localhost:9999' : '' const upgradeBaseUrl = 'http://192.168.26.116:888' const tenantId = '1' diff --git a/nx/api/sampleWarehouse.js b/nx/api/sampleWarehouse.js index 718f22c..f925768 100644 --- a/nx/api/sampleWarehouse.js +++ b/nx/api/sampleWarehouse.js @@ -1,9 +1,66 @@ import request from '@/nx/request' export default { + // 查询归库样品 + queryReturnToStockSample: params => + request({ + url: '/qms/business-sub-sample/page-stock', + method: 'GET', + params + }), + // 样品归库 execReturnToStock: data => request({ url: '/qms/business-sub-sample/execReturnToStock', method: 'GET', data + }), + // 库位变更 + execChangeLocation: data => + request({ + url: '/qms/business-sub-sample/execChangeLocation', + method: 'POST', + data + }), + // 样品调拨申请列表 + querySampleDispatchApply: params => + request({ + url: '/qms/business-sample-dispatch/page', + method: 'GET', + params + }), + // 调拨申请明细列表 + querySampleDispatchApplyDetail: params => + request({ + url: '/qms/business-sample-dispatch-detail/page', + method: 'GET', + params + }), + // 调拨执行 + execSampleDispatch: data => + request({ + url: '/qms/business-sample-dispatch/execDispatch', + method: 'POST', + data + }), + // 查询待归还样品 + searchBySampleCode: params => + request({ + url: 'qms/business-sample-dispatch-detail/searchBySampleCode', + method: 'GET', + params + }), + //调拨归还执行 + execGiveback: data => + request({ + url: '/qms/business-sample-dispatch/execGiveback', + method: 'POST', + data + }), + // 样品下架 + execTakeOff: data => + request({ + url: 'qms/business-sub-sample/execTakeOff', + method: 'POST', + data }) } diff --git a/nx/helper/calcAnalysisValue.js b/nx/helper/calcAnalysisValue.js index 287d5cc..9301f3c 100644 --- a/nx/helper/calcAnalysisValue.js +++ b/nx/helper/calcAnalysisValue.js @@ -8,50 +8,55 @@ export { math } /* * 计算当前样品分析值*/ export function calcAnalysisValue(group) { - try { - for (const g of group) { - for (const ele of g.fields) { - if (!ele.formula || ele.formula == '' || ele.formula.startsWith('From')) continue - let formula = ele.formula - let formulas = formula.split('|') - let formulaVal = '' - let hasNullVal = false - formulas.forEach(f => { - let value = '' - if (f.charAt(0) === 'p') { - let o = findFieldInGroup(f, group, 'p') - value = o.value - } else if (f.charAt(0) === 'e') { - let o = findFieldInGroup(f, group, 'e') - value = o.value - } else if (f.charAt(0) === '<' || f.charAt(0) === '>') { - value = "'" + f + "'" + const MAX_ITERATIONS = 5 // 防止无限循环 + let iterations = 0 + let changed = true + while (changed && iterations < MAX_ITERATIONS) { + changed = false + iterations++ + try { + for (const g of group) { + for (const ele of g.fields) { + if (!ele.formula || ele.formula == '' || ele.formula.startsWith('From')) continue + let formula = ele.formula + let formulas = formula.split('|') + let formulaVal = '' + console.log(formulas) + formulas.forEach(f => { + let value = '' + if (f.charAt(0) === 'p') { + let o = findFieldInGroup(f, group, 'p') + value = o.value || 0 + } else if (f.charAt(0) === 'e') { + let o = findFieldInGroup(f, group, 'e') + value = o.value || 0 + } else if (f.charAt(0) === '<' || f.charAt(0) === '>') { + value = "'" + f + "'" + } else { + value = f + } + + formulaVal += value + }) + console.log(formulaVal) + + let v + if (formulaVal.startsWith('Get')) { + //计算公式为Get开头的,都是执行方法 + v = eval(formulaVal) } else { - value = f + v = math.evaluate(formulaVal).toString() + v = isFinite(v) ? v.toString() : 0 } - if (typeof value == 'undefined' || value == null) { - hasNullVal = true - return true - } - formulaVal += value - }) - if (hasNullVal) { - ele.value = null - continue + console.log(v) + + ele.value = handleRoundFiveNumber(v, ele.decimalPosition) + changed = true } - let v - if (formulaVal.startsWith('Get')) { - //计算公式为Get开头的,都是执行方法 - v = eval(formulaVal) - } else { - v = math.evaluate(formulaVal).toString() - v = isFinite(v) ? v.toString() : 0 - } - ele.value = handleRoundFiveNumber(v, ele.decimalPosition) } + } catch (error) { + console.log(error) } - } catch (error) { - console.log(error) } } @@ -69,7 +74,7 @@ export function calcRowAnalysisValue(row, columnObj, dynamicsColumns) { let formulaVal = '' formulas.forEach(f => { if (f.charAt(0) === 'p') { - let o = dynamicsColumns.find(i => 'p' + i.paramNo === f) + let o = dynamicsColumns.find(i => 'p' + i.paramNo === f && i.type !== 'project') formulaVal += row[o.fieldIndex]?.value ? row[o.fieldIndex].value : 0 } else if (f.charAt(0) === 'e') { let o = dynamicsColumns.find(i => 'e' + i.paramNo === f) @@ -95,6 +100,7 @@ export function calcRowAnalysisValue(row, columnObj, dynamicsColumns) { const findFieldInGroup = function (paramNo, group, p) { for (const g of group) { for (const f of g.fields) { + if (p === 'p' && f.type == 'project') continue if (p + f.paramNo === paramNo) { return f } diff --git a/nx/helper/index.js b/nx/helper/index.js index 7d02a0b..3c43f83 100644 --- a/nx/helper/index.js +++ b/nx/helper/index.js @@ -731,6 +731,17 @@ function reviver(key, value) { return value } +function isJsonString(str) { + if (typeof str !== 'string') return false + + try { + const parsed = JSON.parse(str) + return typeof parsed === 'object' && parsed !== null + } catch (e) { + return false + } +} + export default { range, getPx, @@ -765,5 +776,6 @@ export default { showToast, uuid, replacer, - reviver + reviver, + isJsonString } diff --git a/nx/scss/index.scss b/nx/scss/index.scss index 2ea3575..409ee4a 100644 --- a/nx/scss/index.scss +++ b/nx/scss/index.scss @@ -110,6 +110,9 @@ page { .white{ color:#fff ; } + .black{ + color:#000 ; + } .bg-w{ background-color: #fff; } @@ -173,5 +176,5 @@ page { font-weight:bold } .border-b{ - border-bottom: 2px solid rgba(#707070,0.11); + border-bottom: 1px solid #dadbde; } \ No newline at end of file diff --git a/nx/store/biz.js b/nx/store/biz.js index e5730e1..f9ec201 100644 --- a/nx/store/biz.js +++ b/nx/store/biz.js @@ -6,12 +6,10 @@ const biz = defineStore({ state: () => ({ deviceInfo: {}, scanQRInfo: null, - + flagInfo: {} }), - actions: { - - } + actions: {} }) export default biz diff --git a/pages.json b/pages.json index c47ec38..c2b657e 100644 --- a/pages.json +++ b/pages.json @@ -260,6 +260,41 @@ "navigationStyle": "custom" } }, + { + "path": "pages/sampleWarehouse/sampleDispatchExternal/index", + "style": { + "navigationBarTitleText": "外部调拨", + "navigationStyle": "custom" + } + }, + { + "path": "pages/sampleWarehouse/sampleDispatchExternal/detail", + "style": { + "navigationBarTitleText": "调拨详情", + "navigationStyle": "custom" + } + }, + { + "path": "pages/sampleWarehouse/sampleDispatchInternal/index", + "style": { + "navigationBarTitleText": "内部调拨", + "navigationStyle": "custom" + } + }, + { + "path": "pages/sampleWarehouse/dispatchGiveBack/index", + "style": { + "navigationBarTitleText": "调拨归还", + "navigationStyle": "custom" + } + }, + { + "path": "pages/sampleWarehouse/sampleTakeOff/index", + "style": { + "navigationBarTitleText": "样品下架", + "navigationStyle": "custom" + } + }, { "path": "pages/setting/SelectBaseData", "style": { diff --git a/pages/analysis/index/index.vue b/pages/analysis/index/index.vue index 3caf760..b7847e6 100644 --- a/pages/analysis/index/index.vue +++ b/pages/analysis/index/index.vue @@ -33,17 +33,17 @@ const popupShow = ref(false) const menuItemList = ref([ { url: '/pages/analysis/sample/sample-work-list', - otherConf: { icon: '/static/images/menus/sampleAnalysis.png' }, + otherConf: { icon: '/static/images/menus/样品分析.png' }, name: '样品分析' }, { url: '/pages/analysis/sample/sample-report-search', - otherConf: { icon: '/static/images/menus/records.png' }, + otherConf: { icon: '/static/images/menus/记录.png' }, name: '分析记录' }, { url: '/pages/analysis/auncel/auncel-status', - otherConf: { icon: '/static/images/menus/balance.png' }, + otherConf: { icon: '/static/images/menus/天平查看.png' }, name: '天平查看' } ]) diff --git a/pages/analysis/sample/sample-work-detail.vue b/pages/analysis/sample/sample-work-detail.vue index 267188a..870a70b 100644 --- a/pages/analysis/sample/sample-work-detail.vue +++ b/pages/analysis/sample/sample-work-detail.vue @@ -366,6 +366,7 @@ const parameterClassifyChange = v => { const fieldClick = (field, key) => { if (!field.isEdit) return + currentFillingIndex.value = 0 if (currentFillingWay.value === 'input') { inputValue.value = field.value } diff --git a/pages/index/index.vue b/pages/index/index.vue index ab3b480..45e9fdf 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -13,9 +13,9 @@ import { reactive, ref, computed, onMounted } from 'vue' import nx from '@/nx' import { useGridCol } from '@/nx/hooks/useGridCol' let list = reactive([ - { url: '/pages/lims/index/index', name: '设备管理', icon: 'device' }, - { url: '/pages/analysis/index/index', name: '分析管理', icon: 'analyse' }, - { url: '/pages/sampleWarehouse/index/index', name: '样品库管理', icon: 'sampleWarehouse' } + { url: '/pages/lims/index/index', name: '设备管理', icon: '设备管理' }, + { url: '/pages/analysis/index/index', name: '分析管理', icon: '分析管理' }, + { url: '/pages/sampleWarehouse/index/index', name: '样品库管理', icon: '样品库管理' } ]) // const sysMenus = computed(() => nx.$store('user').sysMenus) diff --git a/pages/sampleWarehouse/dispatchGiveBack/index.vue b/pages/sampleWarehouse/dispatchGiveBack/index.vue new file mode 100644 index 0000000..266db9b --- /dev/null +++ b/pages/sampleWarehouse/dispatchGiveBack/index.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/pages/sampleWarehouse/execChangeLocation/index.vue b/pages/sampleWarehouse/execChangeLocation/index.vue index c38aec0..cd87811 100644 --- a/pages/sampleWarehouse/execChangeLocation/index.vue +++ b/pages/sampleWarehouse/execChangeLocation/index.vue @@ -1,19 +1,10 @@ @@ -61,87 +78,122 @@ const changeTypeOptions = reactive([ label: '按样品变更' }, { - name: 'location', + name: 'warehouseLocation', label: '按库位变更' } ]) -function isJsonString(str) { - if (typeof str !== 'string') return false +let targetLocation = ref('') +let changeCode = ref('') +let sampleList = ref([]) - try { - const parsed = JSON.parse(str) - return typeof parsed === 'object' && parsed !== null - } catch (e) { - return false - } -} - -const { scanQRInfo } = toRefs(nx.$store('biz')) -watch(scanQRInfo, newVal => { - if (newVal && nx.$router.getCurrentPage().route == 'pages/sampleWarehouse/returnToStock/index') { - try { - if (!isJsonString(newVal)) { - if (!locationCode.value) { - uni.showToast({ - title: '请先扫描库位码', - icon: 'none' - }) - scanQRInfo.value = '' - return - } else { - if (changeType.value == 'sample') { - sampleCode.value = newVal - } else { - } - // 执行 - // handleReturnToStock() - } - } else { - const codeObj = JSON.parse(newVal) - locationCode.value = codeObj.code - } - scanQRInfo.value = '' - } catch (error) { - scanQRInfo.value = '' - uni.showToast({ - title: '请扫描样品编码', - icon: 'none' - }) - } +watch(changeCode, newVal => { + if (newVal === '') { + sampleList.value = [] + targetLocation.value = '' + isFirstInput.value = true } }) +async function getSampleList() { + if (changeCode.value === '') return + let params = { pageSize: 999, pageNo: 1, returnStatus: 'completed' } + if (changeType.value === 'sample') { + params.sampleReturnCode = changeCode.value + } else { + params.warehouseLocationCode = changeCode.value + } + const { list } = await nx.$api.sampleWarehouse.queryReturnToStockSample(params) + sampleList.value = list + if (list.length === 0) { + uni.showToast({ title: '未查询到该样品信息', icon: 'none' }) + isFirstInput.value = true + } else { + isFirstInput.value = false + } +} +const btnLoading = ref(false) +async function handleSubmit() { + let params = { + actionWay: changeType.value, + targetLocation: targetLocation.value + } + if (changeType.value === 'sample') { + params.sampleReturnCode = changeCode.value + } else { + params.warehouseLocationCode = changeCode.value + } + btnLoading.value = true + await nx.$api.sampleWarehouse.execChangeLocation(params).finally(() => { + btnLoading.value = false + }) + uni.showToast({ title: '变更成功', icon: 'none' }) + handleReset() +} +function handleChangeType(e) { + handleReset() +} +let isFirstInput = ref(true) +const { scanQRInfo } = toRefs(nx.$store('biz')) +watch(scanQRInfo, newVal => { + if (!newVal) return + scanQRInfo.value = '' + if (nx.$router.getCurrentPage().route !== 'pages/sampleWarehouse/execChangeLocation/index') return + try { + console.log(newVal) + + const isJson = nx.$helper.isJsonString(newVal) + console.log(isJson) + + if (isFirstInput.value) { + handleFirstScan(newVal, isJson) + } else { + handleSecondScan(newVal, isJson) + } + } catch (error) { + uni.showToast({ title: '扫码内容解析失败', icon: 'none' }) + } +}) +function handleFirstScan(rawValue, isJson) { + if (changeType.value === 'sample') { + // 按样品变更:首扫应为纯字符串(样品编号) + if (isJson) { + isFirstInput.value = true + uni.showToast({ title: '请先扫描样品编号', icon: 'none' }) + return + } else { + changeCode.value = rawValue + } + } else { + // 按库位变更:首扫应为 JSON(原库位码) + if (!isJson) { + isFirstInput.value = true + uni.showToast({ title: '请先扫描(原)库位码', icon: 'none' }) + return + } else { + const codeObj = JSON.parse(rawValue) + changeCode.value = codeObj.code + } + } + getSampleList() +} +function handleSecondScan(rawValue, isJson) { + // 第二次扫描必须是 JSON(目标库位码) + if (!isJson) { + uni.showToast({ title: '请扫描变更后库位码', icon: 'none' }) + return + } + const codeObj = JSON.parse(rawValue) + targetLocation.value = codeObj.code +} onShow(() => { scanQRInfo.value = '' }) -let needPrint = ref(false) -let locationCode = ref('') -let sampleCode = ref('') - -function handleReturnToStock() { - nx.$api.sampleWarehouse - .execReturnToStock({ - warehouseLocationCode: locationCode.value, - sampleCode: sampleCode.value - }) - .then(res => { - successCount.value++ - if (res.print) { - uni.showToast({ - title: `归库成功,归库码为【${res.code}】`, - duration: 3000, - icon: 'none' - }) - // 执行打印 - } - }) -} - -const successCount = ref(2) function handleReset() { - locationCode.value = '' - sampleCode.value = '' - successCount.value = 0 + targetLocation.value = '' + changeCode.value = '' + sampleList.value = [] + btnLoading.value = false + isFirstInput.value = true } diff --git a/pages/sampleWarehouse/index/index.vue b/pages/sampleWarehouse/index/index.vue index e10aa16..1d7ad98 100644 --- a/pages/sampleWarehouse/index/index.vue +++ b/pages/sampleWarehouse/index/index.vue @@ -34,18 +34,38 @@ const popupShow = ref(false) const menuItemList = ref([ { url: '/pages/sampleWarehouse/sampleSearch/index', - otherConf: { icon: '/static/images/menus/records.png' }, + otherConf: { icon: '/static/images/menus/记录.png' }, name: '样品查询' }, { url: '/pages/sampleWarehouse/returnToStock/index', - otherConf: { icon: '/static/images/menus/returnToStock.png' }, + otherConf: { icon: '/static/images/menus/样品归库.png' }, name: '样品归库' }, { url: '/pages/sampleWarehouse/execChangeLocation/index', - otherConf: { icon: '/static/images/menus/execChangeLocation.png' }, + otherConf: { icon: '/static/images/menus/库位变更.png' }, name: '库位变更' + }, + { + url: '/pages/sampleWarehouse/sampleDispatchInternal/index', + otherConf: { icon: '/static/images/menus/内部调拨.png' }, + name: '内部调拨' + }, + { + url: '/pages/sampleWarehouse/sampleDispatchExternal/index', + otherConf: { icon: '/static/images/menus/外部调拨.png' }, + name: '外部调拨' + }, + { + url: '/pages/sampleWarehouse/dispatchGiveBack/index', + otherConf: { icon: '/static/images/menus/调拨归还.png' }, + name: '调拨归还' + }, + { + url: '/pages/sampleWarehouse/sampleTakeOff/index', + otherConf: { icon: '/static/images/menus/样品下架.png' }, + name: '样品下架' } ]) @@ -56,26 +76,26 @@ const userInfo = computed(() => nx.$store('user').userInfo) const goTo = url => { nx.$router.go(url) } -onShow(() => { - //连接打印服务 - let printList = uni.getStorageSync('KEY_PRINT_LIST') - if (printList && printList.length > 0) { - for (let print of printList) { - nx.$print.open(print.printIp, print.printPort) - } - } else { - uni.showModal({ - title: '提示', - showCancel: false, - content: '打印服务未配置,请在系统设置中配置打印服务', - success: function (res) { - uni.navigateTo({ - url: '/pages/setting/print' - }) - } - }) - } -}) +// onShow(() => { +// //连接打印服务 +// let printList = uni.getStorageSync('KEY_PRINT_LIST') +// if (printList && printList.length > 0) { +// for (let print of printList) { +// nx.$print.open(print.printIp, print.printPort) +// } +// } else { +// uni.showModal({ +// title: '提示', +// showCancel: false, +// content: '打印服务未配置,请在系统设置中配置打印服务', +// success: function (res) { +// uni.navigateTo({ +// url: '/pages/setting/print' +// }) +// } +// }) +// } +// }) // 生命周期 onMounted(() => {}) // 动态设置 grid 列数 diff --git a/pages/sampleWarehouse/returnToStock/index.vue b/pages/sampleWarehouse/returnToStock/index.vue index 2a7e6d7..8eeb156 100644 --- a/pages/sampleWarehouse/returnToStock/index.vue +++ b/pages/sampleWarehouse/returnToStock/index.vue @@ -1,7 +1,7 @@ @@ -49,18 +62,17 @@ import nx from '@/nx' const { scanQRInfo } = toRefs(nx.$store('biz')) watch(scanQRInfo, newVal => { - if (newVal && nx.$router.getCurrentPage().route == 'pages/sampleWarehouse/sampleSearch/index') { - try { - sampleCode.value = newVal - handleSearch() - scanQRInfo.value = '' - } catch (error) { - scanQRInfo.value = '' - uni.showToast({ - title: '请扫描样品编码', - icon: 'none' - }) - } + if (!newVal) return + scanQRInfo.value = '' + if (nx.$router.getCurrentPage().route !== 'pages/sampleWarehouse/sampleSearch/index') return + try { + sampleCode.value = newVal + handleSearch() + } catch (error) { + uni.showToast({ + title: '请扫描正确的样品编码', + icon: 'none' + }) } }) onShow(() => { @@ -73,7 +85,25 @@ function handleSearch() { let sampleData = ref({}) async function getSampleDetail() { - sampleData.value = await nx.$api.sample.getSampleDetail({ sampleReturnCode: sampleCode.value }) + sampleData.value = {} + const { list } = await nx.$api.sampleWarehouse.queryReturnToStockSample({ + sampleReturnCode: sampleCode.value, + pageSize: 10, + pageNo: 1 + }) + if (list.length == 0) { + uni.showToast({ + title: '未查询到该样品信息', + icon: 'none' + }) + } else if (list.length > 1) { + uni.showToast({ + title: '查询出重复的样品编号,请联系管理员', + icon: 'none' + }) + } else { + sampleData.value = list[0] + } } function handlePrint() {} diff --git a/pages/sampleWarehouse/sampleTakeOff/index.vue b/pages/sampleWarehouse/sampleTakeOff/index.vue new file mode 100644 index 0000000..6cf15ec --- /dev/null +++ b/pages/sampleWarehouse/sampleTakeOff/index.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/static/images/menus/records.png b/static/images/menus/records.png deleted file mode 100644 index bc050b8faa9c1bb2478edb7da467edb775124d58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6476 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 literal 0 HcmV?d00001 diff --git a/static/images/menus/analyse.png b/static/images/menus/分析管理.png similarity index 100% rename from static/images/menus/analyse.png rename to static/images/menus/分析管理.png diff --git a/static/images/menus/外部调拨.png b/static/images/menus/外部调拨.png new file mode 100644 index 0000000000000000000000000000000000000000..908921a6142659ae7a0fbcf66de6409e9b1aedf1 GIT binary patch literal 9164 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 R!0S06BR%sQ%{mC={{rQ;b07c! literal 0 HcmV?d00001 diff --git a/static/images/menus/balance.png b/static/images/menus/天平查看.png similarity index 100% rename from static/images/menus/balance.png rename to static/images/menus/天平查看.png diff --git a/static/images/menus/execChangeLocation.png b/static/images/menus/库位变更.png similarity index 100% rename from static/images/menus/execChangeLocation.png rename to static/images/menus/库位变更.png diff --git a/static/images/menus/样品下架.png b/static/images/menus/样品下架.png new file mode 100644 index 0000000000000000000000000000000000000000..18c63ded498085d97c8cc6ef6a7e093f4ce7f795 GIT binary patch literal 6979 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 J%)~SKe*suIeL?^L literal 0 HcmV?d00001