duy 10 달 전
부모
커밋
282632298a
1개의 변경된 파일354개의 추가작업 그리고 314개의 파일을 삭제
  1. 354 314
      pages/putStorage/putStorage.vue

+ 354 - 314
pages/putStorage/putStorage.vue

@@ -1,360 +1,400 @@
 <template>
-	<view class="container">
-                <scroll-view scroll-y="true" class="scroll-list"
-				>
-					<uni-list>
-								<uni-list-item border v-for="(item, index) in listArr">
-									<template v-slot:header>
-										<view class="slot-box">
-											<image class="slot-image" src="/static/girder.png" mode="widthFix" style="width: 50px; height: 50px;"></image>
-										</view>
-									</template>
-									<template v-slot:body>
-										<view class="ml-6" style="font-size: 14px;">
-										    <view class="name">
-										      {{item.materialName}}
-										    </view>
-										    <view>
-										        {{item.specificationNumber}}
-										    </view>
-										    <view>
-										        {{item.proposedPosition}}
-										    </view>
-										</view>
-									</template>
-									<template v-slot:footer>
-										<uni-icons type="close" color="#999" size="20" style="position: absolute; right: 20px;" @click="clearItem(item,index)"></uni-icons>
-									</template>
-								</uni-list-item>
-							</uni-list>
-				</scroll-view>
-              <view class="button-container" v-if="type==1">
-
-                   <button class="btn"  type="default" @click='startScan(1)' v-if="isShowStartBtn" :loading="scanLoad">
-                       <uni-icons type="scan"></uni-icons>
+    <view class="container">
+        <scroll-view scroll-y="true" class="scroll-list">
+            <uni-list>
+                <uni-list-item border v-for="(item, index) in listArr">
+                    <template v-slot:header>
+                        <view class="slot-box">
+                            <image class="slot-image" src="/static/girder.png" mode="widthFix"
+                                style="width: 50px; height: 50px;"></image>
+                        </view>
+                    </template>
+                    <template v-slot:body>
+                        <view class="ml-6" style="font-size: 14px;">
+                            <view class="name">
+                                {{item.materialName}}
+                            </view>
+                            <view>
+                                {{item.specificationNumber}}
+                            </view>
+                            <view>
+                                {{item.proposedPosition}}
+                            </view>
+                        </view>
+                    </template>
+                    <template v-slot:footer>
+                        <uni-icons type="close" color="#999" size="20" style="position: absolute; right: 20px;"
+                            @click="clearItem(item,index)"></uni-icons>
+                    </template>
+                </uni-list-item>
+            </uni-list>
+        </scroll-view>
+        <view class="button-container" v-if="type==1">
+
+            <button class="btn" type="default" @click='startScan(1)' v-if="isShowStartBtn" :loading="scanLoad">
+                <uni-icons type="scan"></uni-icons>
+
+                开始扫描
+
+            </button>
+            <button class="btn" type="default" @click='stopScan' v-if="!isShowStartBtn">
+                <uni-icons type="circle-filled"></uni-icons>
+
+                停止扫描</button>
+            <button class="btn" type="default" @click="toStorageClick" :loading="manualStorageLoading">
+                <uni-icons type="upload-filled"></uni-icons>
+                一键入库</button>
+        </view>
+        <view class="button-container" v-if="type==2">
+            <button class="btn" type="default" @click='startScan(2)' v-if="isShowStartBtn" :loading="scanLoad">
+                <uni-icons type="scan"></uni-icons>
+                开始扫描</button>
+            <button class="btn" type="default" @click='stopScan' v-if="!isShowStartBtn">
+                <uni-icons type="circle-filled"></uni-icons>
+                停止扫描</button>
+            <button class="btn" type="default" @click="toReport" :loading="reportLoad">
+                <uni-icons type="upload"></uni-icons>
+                一键生成报告</button>
+        </view>
+
+    </view>
+</template>
 
-                       开始扫描
+<script setup>
+    import {
+        onMounted,
+        ref,
+        watch
+    } from "vue";
+    import {
+        onLoad,
+        onReady,
+        onUnload
+    } from '@dcloudio/uni-app'
+    import {
+        getArrValue,
+        arrToId,
+        arrToKey
+    } from "js-fast-way";
+    import mainApi from '~api/storage.js';
+
+
+    // 获取 module
+    const rfidModule = uni.requireNativePlugin("DeviceModule_RFID");
+
+    //渲染完成
+    onReady(() => {
+        // #ifdef APP-PLUS
+        rfidModuleInit()
+        // #endif
+    })
 
-                   </button>
-                    <button class="btn"  type="default" @click='stopScan' v-if="!isShowStartBtn">
-                        <uni-icons type="circle-filled"></uni-icons>
+    onLoad((options) => {
+        type.value = options.type
+        codeIds.value = ''
+        storageIds.value = ''
+        if (options.type == 1) {
+            title.value = '样品入库'
+        } else {
+            title.value = '样品检测'
+        }
+        uni.setNavigationBarTitle({
+            title: title.value
+        })
+    })
+    const title = ref('')
+    const type = ref('1')
+    // //按键操作
+    const isRfidInit = ref(true)
+    const rfidModuleInit = () => {
+        isRfidInit.value = true
+        uni.showLoading({
+            title: 'RFID模块加载中...',
+            mask: true,
+        });
+        /**
+            手机按键监听事件,可在此编写一些逻辑,如使用按键触发扫描,更多详细信息请查阅uni官方文档
+            需要注意:退出界面必须移除监听,否则再进入页面重复注册监听会出现多次触发、回调失效的问题
+        */
+        plus.key.addEventListener('keydown', keyListener);
+        //初始化
+        setTimeout(() => {
+            // 使用模块前必须先初始化RDIF模块
+            let {
+                code
+            } = rfidModule.init();
+            if (code === 0) {
+                uni.hideLoading();
+            } else if (code === -1) {
+                uni.hideLoading();
+                uni.showToast({
+                    title: 'RFID模块加载失败',
+                    icon: 'error',
+                    duration: 3000
+                })
+            } else {
+                uni.hideLoading();
+            }
+            isRfidInit.value = false
+        }, 400);
+    }
 
-                        停止扫描</button>
-                    <button class="btn"  type="default" @click="toStorageClick" :loading="manualStorageLoading">
-                          <uni-icons type="upload-filled"></uni-icons>
-                        一键入库</button>
-              </view>
-              <view class="button-container"  v-if="type==2">
-                   <button class="btn"  type="default" @click='startScan(2)' v-if="isShowStartBtn" :loading="scanLoad">
-                        <uni-icons type="scan"></uni-icons>
-                       开始扫描</button>
-                    <button class="btn"  type="default" @click='stopScan' v-if="!isShowStartBtn">
-                         <uni-icons type="circle-filled"></uni-icons>
-                        停止扫描</button>
-                    <button class="btn"  type="default" @click="toReport" :loading="reportLoad">
-                         <uni-icons type="upload"></uni-icons>
-                        一键生成报告</button>
-             </view>
+    //按键操作
+    const keyListener = ({
+        keyCode
+    }) => {
+        if (keyCode === 293 || keyCode === 312) {
+            if (isScan.value) {
+                stopScan()
+            } else {
+                startScan(type.value)
+            }
+        }
+    }
 
-	</view>
-</template>
 
-<script setup>
+    //开始扫描
+    const isShowStartBtn = ref(true)
+    const scanLoad = ref(false)
+    const isScan = ref(false)
+    const startScan = (type) => {
+        isShowStartBtn.value = false
+        if (isRfidInit.value) return
+        isScan.value = true
+        rfidModule.startScan((res) => {
+            if (res.code === 0) {
+                uni.showToast({
+                    icon: "success",
+                    title: '开启扫描成功'
+                })
+            } else if (res.code === 1) {
+                startScanData(res.data, type)
+            }
+        })
+    }
 
-import {
-    onMounted,
-    ref,
-    watch
-} from "vue";
-import {onLoad, onReady, onUnload} from '@dcloudio/uni-app'
-import {getArrValue,arrToId,arrToKey} from "js-fast-way";
-import mainApi from '~api/storage.js';
+    //扫描结果处理
+    const codeIds = ref('')
+    const scanDatas = ref([])
+    const startScanData = async (data, type) => {
+        const arr = getArrValue(data)
+        let epcs = scanDatas.value
+        for (let i = 0; i < arr.length; i++) {
+            const epc = arr[i].epc
+            if (epcs.indexOf(epc) === -1) {
+                epcs.push(epc)
+            }
+        }
+        scanDatas.value = epcs
+        if (epcs.length === 1) {
 
+            codeIds.value = epcs[0]
+            console.log(codeIds.value, 'codeIds.value');
+        } else {
+            codeIds.value = epcs.join(',')
+        }
 
-// 获取 module
-const rfidModule = uni.requireNativePlugin("DeviceModule_RFID");
+        getResult(type)
 
-//渲染完成
-onReady(() => {
-    // #ifdef APP-PLUS
-    rfidModuleInit()
-    // #endif
-})
+    }
+    const storageIds = ref('')
+    //获取扫描结果
+    const getResult = async (type) => {
+        console.log('发请求', type);
+        console.log(codeIds.value, 'codeIds.value');
+        const {
+            response,
+            error,
+            code,
+            data
+        } = await mainApi.getSelectRfidListById({
+            rids: codeIds.value,
+            state: type
+        });
+        //处理数据
+        if (!error && code === 200) {
+            console.log(listArr.value, ' listArr.value');
+            listArr.value = getArrValue(data);
+            storageIds.value = arrToId(listArr.value)
+        } else {
+            listArr.value = [];
+            storageIds.value = ''
 
-onLoad((options)=>{
-    type.value=options.type
-    codeIds.value=''
-    storageIds.value=''
-    if(options.type==1){
-        title.value='样品入库'
-    }else{
-        title.value='样品检测'
+        }
     }
-    uni.setNavigationBarTitle({
-        title:title.value
-    })
-})
-const title=ref('')
-const type=ref('1')
-// //按键操作
-const isRfidInit = ref(true)
-const rfidModuleInit = () => {
-    isRfidInit.value = true
-    uni.showLoading({
-    	title: 'RFID模块加载中...',
-        mask: true,
-    });
-    /**
-        手机按键监听事件,可在此编写一些逻辑,如使用按键触发扫描,更多详细信息请查阅uni官方文档
-        需要注意:退出界面必须移除监听,否则再进入页面重复注册监听会出现多次触发、回调失效的问题
-    */
-    plus.key.addEventListener('keydown', keyListener);
-    //初始化
-    setTimeout(() => {
-        // 使用模块前必须先初始化RDIF模块
-        let { code } = rfidModule.init();
+    //停止扫描
+    const stopScan = () => {
+        const {
+            code
+        } = rfidModule.stopScan()
         if (code === 0) {
-            uni.hideLoading();
-        } else if (code === -1) {
-            uni.hideLoading();
+            isScan.value = false
             uni.showToast({
-                title: 'RFID模块加载失败',
-                icon: 'error',
-                duration: 3000
+                icon: "success",
+                title: '关闭扫描成功'
             })
+            isShowStartBtn.value = true
         } else {
-            uni.hideLoading();
-        }
-        isRfidInit.value = false
-    }, 400);
-}
-
-//按键操作
-const keyListener = ({keyCode}) => {
-    if (keyCode === 293 || keyCode === 312) {
-        if (isScan.value) {
-            stopScan()
-        } else {
-            startScan(type.value)
+            uni.showToast({
+                icon: "error",
+                title: res.message
+            })
         }
     }
-}
 
+    //页面卸载
+    onUnload(() => {
+        // #ifdef APP-PLUS
+        plus.key.removeEventListener('keydown', keyListener)
+        // 使用完毕必须释放RDIF模块
+        rfidModule.free();
+        // #endif
+    })
+    const listArr = ref([])
 
-//开始扫描
-const isShowStartBtn=ref(true)
-const scanLoad=ref(false)
-const isScan = ref(false)
-const startScan = (type) => {
- isShowStartBtn.value=false
-    if (isRfidInit.value) return
-    isScan.value = true
-    rfidModule.startScan((res) => {
-        if (res.code === 0) {
+    //一键入库
+    const manualStorageLoading = ref(false)
+    const toStorageClick = async () => {
+        if (!isShowStartBtn.value) {
             uni.showToast({
-                icon: "success",
-                title: '开启扫描成功'
+                title: '请先停止扫描',
+                icon: 'none',
+                duration: 3000
             })
-        } else if (res.code === 1) {
-            startScanData(res.data,type)
+            return;
         }
-    })
-}
-
-//扫描结果处理
-const codeIds=ref('')
-const scanDatas = ref([])
-const startScanData = async (data,type) => {
-    const arr = getArrValue(data)
-    let epcs = scanDatas.value
-    for (let i = 0; i < arr.length; i++) {
-        const epc = arr[i].epc
-        if (epcs.indexOf(epc) === -1) {
-            epcs.push(epc)
+        manualStorageLoading.value = true;
+        console.log(storageIds.value, 'storageIds.value');
+        if (storageIds.value.length < 1) {
+            return;
         }
-    }
-    scanDatas.value = epcs
-    if(epcs.length===1){
-
-        codeIds.value=epcs[0]
-        console.log(codeIds.value,'codeIds.value');
-    }else{
-         codeIds.value=epcs.join(',')
-    }
-
-    getResult(type)
-
-}
-const storageIds=ref('')
-//获取扫描结果
-const getResult=async(type)=>{
-    console.log('发请求',type);
-    console.log(codeIds.value,'codeIds.value');
-      const { response,error, code, data } = await mainApi.getSelectRfidListById({
-         rids:codeIds.value,
-         state:type
-      });
-      //处理数据
-      if (!error && code === 200) {
-          console.log( listArr.value,' listArr.value');
-         listArr.value = getArrValue(data);
-         storageIds.value=arrToId( listArr.value)
-      } else {
-          listArr.value = [];
-           storageIds.value=''
-
-      }
-}
-//停止扫描
-const stopScan = () => {
-
-    const { code } = rfidModule.stopScan()
-    if (code === 0) {
-        isScan.value = false
-        uni.showToast({
-            icon: "success",
-            title: '关闭扫描成功'
-        })
-         isShowStartBtn.value=true
-    } else {
-        uni.showToast({
-            icon: "error",
-            title: res.message
-        })
-    }
-}
-
-//页面卸载
-onUnload(()=>{
-    // #ifdef APP-PLUS
-    plus.key.removeEventListener('keydown', keyListener)
-    // 使用完毕必须释放RDIF模块
-    rfidModule.free();
-    // #endif
-})
-const listArr=ref([])
-
-//一键入库
-const manualStorageLoading=ref(false)
-const toStorageClick=async()=>{
-    if(!isShowStartBtn.value){
-        uni.showToast({
-           title: '请先停止扫描',
-           icon: 'none',
-           duration: 3000
-        })
-        return;
-    }
-       manualStorageLoading.value = true;
-       console.log(storageIds.value,'storageIds.value');
-       if(storageIds.value.length<1){
-           return;
-       }
-        const { error, code, msg,response } = await mainApi.update({
+        const {
+            error,
+            code,
+            msg,
+            response
+        } = await mainApi.update({
             id: storageIds.value,
             sampleStatus: 2,
         });
-        console.log(response,'response');
+        console.log(response, 'response');
         manualStorageLoading.value = false;
         if (!error && code === 200) {
-         uni.showToast({
-             title:'操作成功',
-             duration: 2000,
-             mask: true
-         });
-             getResult().then();
+            uni.showToast({
+                title: '操作成功',
+                duration: 2000,
+                mask: true
+            });
+            getResult().then();
         } else {
-           uni.showToast({
-               title:'操作失败',
-               duration: 2000,
-               mask: true
-           });
+            uni.showToast({
+                title: '操作失败',
+                duration: 2000,
+                mask: true
+            });
         }
-}
-const clearItem=(item,index)=>{
-    listArr.value.splice(index,1)
-}
+    }
+    const clearItem = (item, index) => {
+        listArr.value.splice(index, 1)
+    }
 
 
-//一键生成报告
+    //一键生成报告
 
-const reportLoad=ref(false)
-const toReport=async()=>{
-    if(!isShowStartBtn.value){
-        uni.showToast({
-           title: '请先停止扫描',
-           icon: 'none',
-           duration: 3000
-        })
-           return;
-    }
-    reportLoad.value = true;
-    console.log(listArr.value[0].id,'listArr.value[0].id');
-    if(storageIds.value.length<1){
-        return;
-    }
-     const { error, code, msg,response } = await mainApi.update({
-         id: listArr.value[0].id,
-         sampleStatus: 4,
-         expCount:0
-     });
-     console.log(response,'response');
-     reportLoad.value = false;
-     if (!error && code === 200) {
-      uni.showToast({
-          title:'操作成功',
-          duration: 2000,
-          mask: true
-      });
-          getResult().then();
-     } else {
-        uni.showToast({
-            title:'操作失败',
-            duration: 2000,
-            mask: true
+    const reportLoad = ref(false)
+    const toReport = async () => {
+        if (!isShowStartBtn.value) {
+            uni.showToast({
+                title: '请先停止扫描',
+                icon: 'none',
+                duration: 3000
+            })
+            return;
+        }
+        reportLoad.value = true;
+        console.log(listArr.value[0].id, 'listArr.value[0].id');
+        if (storageIds.value.length < 1) {
+            return;
+        }
+        const {
+            error,
+            code,
+            msg,
+            response
+        } = await mainApi.update({
+            id: listArr.value[0].id,
+            sampleStatus: 4,
+            expCount: 0
         });
-     }
-}
+        console.log(response, 'response');
+        reportLoad.value = false;
+        if (!error && code === 200) {
+            uni.showToast({
+                title: '操作成功',
+                duration: 2000,
+                mask: true
+            });
+            getResult().then();
+        } else {
+            uni.showToast({
+                title: '操作失败',
+                duration: 2000,
+                mask: true
+            });
+        }
+    }
 </script>
 
 <style lang="scss" scoped>
+    .name {
+        font-weight: bold;
+    }
 
-.name{
-    font-weight: bold;
-}
+    .container {
+        display: flex;
+        flex-direction: column;
+        height: 100vh;
+        /* 使容器高度为视口高度 */
+    }
 
-.container {
-  display: flex;
-  flex-direction: column;
-  height: 100vh; /* 使容器高度为视口高度 */
-}
+    .scroll-list {
+        flex: 1;
+        /* 占据剩余空间 */
+        overflow-y: auto;
+        /* 纵向滚动 */
 
-.scroll-list {
-  flex: 1; /* 占据剩余空间 */
-  overflow-y: auto; /* 纵向滚动 */
 
+    }
 
-}
-.button-container {
-    display: flex;
-    justify-content: space-around; /* 两个按钮均匀分布 */
-    padding: 10px;
-    background-color: #fff; /* 背景色 */
-    box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1); /* 阴影效果 */
-    position: fixed; /* 固定在底部 */
-    bottom: 0; /* 靠近底部 */
-    left: 0; /* 左对齐 */
-    right: 0; /* 右对齐 */
-    z-index: 100;
-}
+    .button-container {
+        display: flex;
+        justify-content: space-around;
+        /* 两个按钮均匀分布 */
+        padding: 10px;
+        background-color: #fff;
+        /* 背景色 */
+        box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.1);
+        /* 阴影效果 */
+        position: fixed;
+        /* 固定在底部 */
+        bottom: 0;
+        /* 靠近底部 */
+        left: 0;
+        /* 左对齐 */
+        right: 0;
+        /* 右对齐 */
+        z-index: 100;
+    }
 
-.btn {
-  flex: 1; /* 每个按钮占据相同的空间 */
-  margin: 0 5px; /* 按钮之间的间距 */
-  border: none;
-  border-radius: 5px;
-  cursor: pointer;
-  color: black;
+    .btn {
+        flex: 1;
+        /* 每个按钮占据相同的空间 */
+        margin: 0 5px;
+        /* 按钮之间的间距 */
+        border: none;
+        border-radius: 5px;
+        cursor: pointer;
+        color: black;
 
-}
+    }
 </style>