From 904d1c4ea471802f8dff57eb9f2aecca89512e61 Mon Sep 17 00:00:00 2001 From: houjunxiang Date: Fri, 20 Mar 2026 17:56:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=AE=BE=E5=A4=87=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/n-upload/n-upload.vue | 2 +- manifest.json | 261 +++++++------- pages.json | 4 +- .../analysis/sample/sample-work-edit-task.vue | 13 +- pages/device/deviceBusDailyCheck/detail.vue | 294 ++++++++-------- pages/device/deviceBusDailyCheck/index.vue | 4 + pages/device/deviceBusMaintain/detail.vue | 320 ++++++++++-------- pages/device/deviceBusMaintain/index.vue | 4 + .../deviceBusUseRecord/SampleSelectPopup.vue | 55 +-- pages/device/deviceBusUseRecord/index.vue | 25 +- pages/material/index/index.vue | 2 +- pages/material/openMark/index.vue | 5 +- pages/material/outbound/index.vue | 37 +- pages/material/useRecord/useForm.vue | 3 +- pages/material/useUpMark/index.vue | 3 +- 15 files changed, 564 insertions(+), 468 deletions(-) diff --git a/components/n-upload/n-upload.vue b/components/n-upload/n-upload.vue index 2b56151..0ddb0ad 100644 --- a/components/n-upload/n-upload.vue +++ b/components/n-upload/n-upload.vue @@ -50,7 +50,7 @@ watch( newVal => { if (!newVal) return (fileList.value = []) const urls = Array.isArray(newVal) ? newVal : newVal.split(',') - imgs.value = urls.map(url => url.previewUrl) + imgs.value = urls.map(url => url.url) fileList.value = urls.map(url => ({ url: url.url, status: 'success', diff --git a/manifest.json b/manifest.json index 0bc9b69..23bfa3c 100644 --- a/manifest.json +++ b/manifest.json @@ -1,31 +1,31 @@ { - "name": "实验室管理系统", - "appid": "__UNI__4B3B4B0", - "description": "实验室管理系统", - "versionName": "1.1.6", - "versionCode": 116, - "transformPx": false, - "app-plus": { - "usingComponents": true, - "nvueCompiler": "uni-app", - "compilerVersion": 3, - "splashscreen": { - "alwaysShowBeforeRender": true, - "waiting": true, - "autoclose": true, - "delay": 0 + "name" : "实验室管理系统", + "appid" : "__UNI__4B3B4B0", + "description" : "实验室管理系统", + "versionName" : "1.1.7", + "versionCode" : 117, + "transformPx" : false, + "app-plus" : { + "usingComponents" : true, + "nvueCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 }, - "modules": { - "LivePusher": {}, - "Camera": {} + "modules" : { + "LivePusher" : {}, + "Camera" : {} }, - "distribute": { - "android": { - "packagename": "tech.zzjc.mas.zgtylims", - "keystore": "zzjc_android.jks", - "password": "zzjc@20190226", - "aliasname": "app", - "permissions": [ + "distribute" : { + "android" : { + "packagename" : "tech.zzjc.mas.zgtylims", + "keystore" : "zzjc_android.jks", + "password" : "zzjc@20190226", + "aliasname" : "app", + "permissions" : [ "", "", "", @@ -50,158 +50,155 @@ "" ] }, - "ios": { - "dSYMs": false + "ios" : { + "dSYMs" : false }, - "harmony": { - "permissions": [ - "ohos.permission.INTERNET", - "ohos.permission.GET_NETWORK_INFO" - ], - "package": "zzjc.test.app", - "compatibleSdkVersion": 5 + "harmony" : { + "permissions" : [ "ohos.permission.INTERNET", "ohos.permission.GET_NETWORK_INFO" ], + "package" : "zzjc.test.app", + "compatibleSdkVersion" : 5 }, - "sdkConfigs": {}, - "icons": { - "android": { - "hdpi": "unpackage/res/icons/72x72.png", - "xhdpi": "unpackage/res/icons/96x96.png", - "xxhdpi": "unpackage/res/icons/144x144.png", - "xxxhdpi": "unpackage/res/icons/192x192.png" + "sdkConfigs" : {}, + "icons" : { + "android" : { + "hdpi" : "unpackage/res/icons/72x72.png", + "xhdpi" : "unpackage/res/icons/96x96.png", + "xxhdpi" : "unpackage/res/icons/144x144.png", + "xxxhdpi" : "unpackage/res/icons/192x192.png" }, - "ios": { - "appstore": "unpackage/res/icons/1024x1024.png", - "ipad": { - "app": "unpackage/res/icons/76x76.png", - "app@2x": "unpackage/res/icons/152x152.png", - "notification": "unpackage/res/icons/20x20.png", - "notification@2x": "unpackage/res/icons/40x40.png", - "proapp@2x": "unpackage/res/icons/167x167.png", - "settings": "unpackage/res/icons/29x29.png", - "settings@2x": "unpackage/res/icons/58x58.png", - "spotlight": "unpackage/res/icons/40x40.png", - "spotlight@2x": "unpackage/res/icons/80x80.png" + "ios" : { + "appstore" : "unpackage/res/icons/1024x1024.png", + "ipad" : { + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png" }, - "iphone": { - "app@2x": "unpackage/res/icons/120x120.png", - "app@3x": "unpackage/res/icons/180x180.png", - "notification@2x": "unpackage/res/icons/40x40.png", - "notification@3x": "unpackage/res/icons/60x60.png", - "settings@2x": "unpackage/res/icons/58x58.png", - "settings@3x": "unpackage/res/icons/87x87.png", - "spotlight@2x": "unpackage/res/icons/80x80.png", - "spotlight@3x": "unpackage/res/icons/120x120.png" + "iphone" : { + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png" } } } }, /* 可选,JSON对象,应用UserAgent相关配置 **/ - "useragent": { + "useragent" : { /* 可选,字符串类型,设置的默认userAgent值 */ - "value": "LIMS-PDA/1.1.6", + "value" : "LIMS-PDA/1.1.7", /* 可选,Boolean类型,是否将value值作为追加值连接到系统默认userAgent值之后 */ - "concatenate": true + "concatenate" : true }, /* 可选,JSON对象,Android平台应用UserAgent相关配置,优先级高于useragent配置 */ - "useragent_android": { + "useragent_android" : { /* 可选,字符串类型,设置的默认userAgent值 */ - "value": "LIMS-PDA/1.1.6", + "value" : "LIMS-PDA/1.1.7", /* 可选,Boolean类型,是否将value值作为追加值连接到系统默认userAgent值之后 */ - "concatenate": true + "concatenate" : true }, /* 可选,JSON对象,iOS平台应用UserAgent相关配置,优先级高于useragent配置 */ - "useragent_ios": { + "useragent_ios" : { /* 可选,字符串类型,设置的默认userAgent值 */ - "value": "LIMS-PDA/1.1.6", + "value" : "LIMS-PDA/1.1.7", /* 可选,Boolean类型,是否将value值作为追加值连接到系统默认userAgent值之后 */ - "concatenate": true + "concatenate" : true } }, - "quickapp": {}, - "mp-weixin": { - "appid": "", - "setting": { - "urlCheck": false, - "minified": false + "quickapp" : {}, + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false, + "minified" : false }, - "optimization": { - "subPackages": true + "optimization" : { + "subPackages" : true }, - "usingComponents": true, - "mergeVirtualHostAttributes": true + "usingComponents" : true, + "mergeVirtualHostAttributes" : true }, - "mp-alipay": { - "usingComponents": true + "mp-alipay" : { + "usingComponents" : true }, - "mp-baidu": { - "usingComponents": true + "mp-baidu" : { + "usingComponents" : true }, - "mp-toutiao": { - "usingComponents": true + "mp-toutiao" : { + "usingComponents" : true }, - "uniStatistics": { - "enable": false + "uniStatistics" : { + "enable" : false }, - "vueVersion": "3", - "h5": { - "devServer": { - "port": 33888, - "https": false, - "proxy": { - "/api": { + "vueVersion" : "3", + "h5" : { + "devServer" : { + "port" : 33888, + "https" : false, + "proxy" : { + "/api" : { // "target" : "http://mas.new.will-way.cn/api/", //"target" : "http://192.168.31.180:9090/", - "target": "http://127.0.0.1:9999/", - "changeOrigin": true, - "ws": true, - "pathRewrite": { - "^/api": "" + "target" : "http://127.0.0.1:9999/", + "changeOrigin" : true, + "ws" : true, + "pathRewrite" : { + "^/api" : "" } }, - "/sys": { + "/sys" : { // "target" : "http://mas.new.will-way.cn/api/", //"target" : "http://192.168.31.180:9090/", - "target": "http://127.0.0.1:9999/sys", - "changeOrigin": true, - "ws": true, - "pathRewrite": { - "^/api": "" + "target" : "http://127.0.0.1:9999/sys", + "changeOrigin" : true, + "ws" : true, + "pathRewrite" : { + "^/api" : "" } }, - "/report": { - "target": "http://127.0.0.1:9999/report/", - "changeOrigin": true, - "ws": true, - "pathRewrite": { - "^/api": "" + "/report" : { + "target" : "http://127.0.0.1:9999/report/", + "changeOrigin" : true, + "ws" : true, + "pathRewrite" : { + "^/api" : "" } } } }, - "optimization": { - "treeShaking": { - "enable": true + "optimization" : { + "treeShaking" : { + "enable" : true } }, - "router": { - "base": "./" + "router" : { + "base" : "./" }, - "template": "template.h5.html" + "template" : "template.h5.html" }, - "app-harmony": { - "distribute": { - "bundleName": "zzjc.test.app", - "signingConfigs": { - "default": { - "certpath": "certs\\DebugCert.cer", - "keyAlias": "zzjc-test", - "keyPassword": "0000001A62465932FE19E037517BC61FE03A8F9D69CB7892019EEC82A5A07691ECAE824A92BAD8FAEB34", - "profile": "certs\\DebugProfileDebug.p7b", - "signAlg": "SHA256withECDSA", - "storeFile": "certs\\.p12", - "storePassword": "0000001ACE8F050DA6F2E36A4D0EC332ECF3A78E16F485E7C0B9DA5919649626428710609023E1DD99FD" + "app-harmony" : { + "distribute" : { + "bundleName" : "zzjc.test.app", + "signingConfigs" : { + "default" : { + "certpath" : "certs\\DebugCert.cer", + "keyAlias" : "zzjc-test", + "keyPassword" : "0000001A62465932FE19E037517BC61FE03A8F9D69CB7892019EEC82A5A07691ECAE824A92BAD8FAEB34", + "profile" : "certs\\DebugProfileDebug.p7b", + "signAlg" : "SHA256withECDSA", + "storeFile" : "certs\\.p12", + "storePassword" : "0000001ACE8F050DA6F2E36A4D0EC332ECF3A78E16F485E7C0B9DA5919649626428710609023E1DD99FD" } } } } -} \ No newline at end of file +} diff --git a/pages.json b/pages.json index df485ae..92bbea9 100644 --- a/pages.json +++ b/pages.json @@ -305,7 +305,7 @@ { "path": "pages/material/outbound/index", "style": { - "navigationBarTitleText": "出库", + "navigationBarTitleText": "物料领用", "navigationStyle": "custom" } }, @@ -347,7 +347,7 @@ { "path": "pages/material/openMark/index", "style": { - "navigationBarTitleText": "试剂开封", + "navigationBarTitleText": "开封", "navigationStyle": "custom" } }, diff --git a/pages/analysis/sample/sample-work-edit-task.vue b/pages/analysis/sample/sample-work-edit-task.vue index 13ae59a..6bd88a7 100644 --- a/pages/analysis/sample/sample-work-edit-task.vue +++ b/pages/analysis/sample/sample-work-edit-task.vue @@ -10,7 +10,7 @@ {{ field.label }}*{{ field.label }} @@ -34,7 +34,7 @@ :placeholder="field.placeholder" :disabled="field.disabled || field.fillingWay == 'calculate'" /> - - - - - - - - {{ item.label }}:{{ deviceInfo[item.value] }} - - + + + + + + + {{ item.label }}:{{ deviceInfo[item.value] }} + + - - 备注: - - {{ detailInfo.content }} - - - - - 点检人: - - {{ detailInfo.checkUserName }} - - - 点检日期: - - {{ nx.$helper.formateToDateTime(detailInfo.checkDate) }} - - - - - - - - - - - 点检项目 - 检查标准 - 频次 - 是否正常 - - - - - - - {{ item.itemName }} - - - + + 备注: + + {{ detailInfo.content }} + + + + + 点检人: + + {{ detailInfo.checkUserName }} + + + 点检日期: + + {{ nx.$helper.formateToDateTime(detailInfo.checkDate) }} + + + + + + + + + + + 点检项目 + 检查标准 + 频次 + 是否正常 + + + + + + + {{ item.itemName }} + + + - {{ item.standard }} - {{ item.frequencyRemark }} - - - - - - - - - - - + {{ item.standard }} + {{ item.frequencyRemark }} + + + + + + + + + + + + .content { + background-color: #fff; + height: 100%; + padding: 16px; + padding-top: 10px; + font-size: 16px; + } + + :deep(.uicon-close) { + font-size: 22px !important; + } + + :deep(.u-popup__content__close--top-right) { + top: 30px; + } + \ No newline at end of file diff --git a/pages/device/deviceBusDailyCheck/index.vue b/pages/device/deviceBusDailyCheck/index.vue index a37dc17..01728d8 100644 --- a/pages/device/deviceBusDailyCheck/index.vue +++ b/pages/device/deviceBusDailyCheck/index.vue @@ -165,6 +165,10 @@ async function getDailyCheckRecord(id) { res.checkUserName = nx.$store('user').userInfo.nickname } detailInfo.value = res + let files = res.businessFileRet.data.map((item) => { + return { id: item.fileId, name: item.fileName, url: item.fileUrl ,status: 'success',} + }) + detailInfo.value.files = files modalType.value = res.submitFlag lockOrientation('landscape') diff --git a/pages/device/deviceBusMaintain/detail.vue b/pages/device/deviceBusMaintain/detail.vue index 4b3edd9..a2f08a0 100644 --- a/pages/device/deviceBusMaintain/detail.vue +++ b/pages/device/deviceBusMaintain/detail.vue @@ -1,152 +1,182 @@ + .content { + background-color: #fff; + height: 100%; + padding: 10px; + font-size: 16px; + + .fill-content { + font-size: 14px; + border-radius: 3px; + box-shadow: 2px 2px 8px 2px rgba(0, 0, 0, 0.2); + background-color: #fdf6ec; + padding: 10px; + } + } + + :deep(.uicon-close) { + font-size: 22px !important; + } + + :deep(.u-popup__content__close--top-right) { + top: 30px; + } + \ No newline at end of file diff --git a/pages/device/deviceBusMaintain/index.vue b/pages/device/deviceBusMaintain/index.vue index acd1370..b8187ce 100644 --- a/pages/device/deviceBusMaintain/index.vue +++ b/pages/device/deviceBusMaintain/index.vue @@ -150,6 +150,10 @@ async function getDetailInfo(id) { res.checkUserName = nx.$store('user').userInfo.nickname } detailInfo.value = res + let files = res.businessFileRet.data.map((item) => { + return { id: item.fileId, name: item.fileName, url: item.fileUrl ,status: 'success',} + }) + detailInfo.value.files = files modalType.value = res.submitFlag lockOrientation('landscape') } diff --git a/pages/device/deviceBusUseRecord/SampleSelectPopup.vue b/pages/device/deviceBusUseRecord/SampleSelectPopup.vue index 8c48b70..851dc54 100644 --- a/pages/device/deviceBusUseRecord/SampleSelectPopup.vue +++ b/pages/device/deviceBusUseRecord/SampleSelectPopup.vue @@ -8,26 +8,22 @@ @@ -44,7 +40,7 @@ let emits = defineEmits(['confirm']) const addConfigShow = ref(false) function show() { addConfigShow.value = true - selectRowId.value = undefined + selectRows.value = [] current.value = undefined getAssayTaskList() } @@ -63,21 +59,40 @@ const getAssayTaskList = async () => { function handleCancel() { addConfigShow.value = false } -const selectRowId = ref(undefined) -function handleAdd() { - if (!selectRowId.value) { +const selectRows = ref([]) + +async function handleAdd() { + // 1. 校验是否选择了数据 + if (!selectRows.value || !selectRows.value.length) { return uni.showToast({ title: '请选择任务单', icon: 'none' }) } - let sampleList = [] - nx.$api.assayTask.getAssayTaskDetailList({ businessAssayTaskId: selectRowId.value }).then(res => { - const list = res || [] - sampleList = list + try { + const requestPromises = selectRows.value.map(businessAssayTaskId => { + return nx.$api.assayTask.getAssayTaskDetailList({ + businessAssayTaskId + }) + }) + const results = await Promise.all(requestPromises) + + let sampleList = [] + results.forEach(res => { + const list = res || [] + sampleList = sampleList.concat(list) + }) + + // 5. 执行回调和关闭弹窗 emits('confirm', sampleList) addConfigShow.value = false - }) + } catch (error) { + console.error('批量获取详情失败:', error) + uni.showToast({ + title: '数据加载失败', + icon: 'none' + }) + } } defineExpose({ @@ -86,7 +101,7 @@ defineExpose({