ocr
This commit is contained in:
		
							parent
							
								
									75b6efe951
								
							
						
					
					
						commit
						f523b77bcb
					
				| 
						 | 
					@ -1,7 +1,84 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <view class="page-container">
 | 
					  <view class="page-container">
 | 
				
			||||||
 | 
					    <!-- 设备搜索页面 -->
 | 
				
			||||||
 | 
					    <view v-if="!showCamera">
 | 
				
			||||||
 | 
					      <view class="table-list-item">
 | 
				
			||||||
 | 
					        <view class="scan-btn" @click="openCamera">
 | 
				
			||||||
 | 
					          <text style="color: #FFF;">开始识别</text>
 | 
				
			||||||
 | 
					        </view>
 | 
				
			||||||
 | 
					      </view>
 | 
				
			||||||
 | 
					      <view class="table-list-item">
 | 
				
			||||||
 | 
					        <uni-row :gutter="24" style="display: flex; align-items: center">
 | 
				
			||||||
 | 
					          <uni-col :span="6">
 | 
				
			||||||
 | 
					            <text>设备编码</text>
 | 
				
			||||||
 | 
					          </uni-col>
 | 
				
			||||||
 | 
					          <uni-col :span="10">
 | 
				
			||||||
 | 
					            <view>
 | 
				
			||||||
 | 
					              <uni-easyinput v-model="queryCodeParams.maCode" placeholder="请输入内容" />
 | 
				
			||||||
 | 
					            </view>
 | 
				
			||||||
 | 
					          </uni-col>
 | 
				
			||||||
 | 
					          <uni-col :span="6">
 | 
				
			||||||
 | 
					            <view class="coding-btn" @click="getCode()">
 | 
				
			||||||
 | 
					              <text style="color: #fe9a09;text-align: center;">编码检索</text>
 | 
				
			||||||
 | 
					            </view>
 | 
				
			||||||
 | 
					          </uni-col>
 | 
				
			||||||
 | 
					        </uni-row>
 | 
				
			||||||
 | 
					        <div v-if="optionList.length > 1" class="select-container">
 | 
				
			||||||
 | 
					          <uni-data-select
 | 
				
			||||||
 | 
					              v-model="queryCodeParams.maId"
 | 
				
			||||||
 | 
					              :localdata="optionList"
 | 
				
			||||||
 | 
					              @change="changeTag"
 | 
				
			||||||
 | 
					              placeholder="请选择相关联编号"
 | 
				
			||||||
 | 
					              class="data-select"
 | 
				
			||||||
 | 
					              :searchable="false"
 | 
				
			||||||
 | 
					          ></uni-data-select>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </view>
 | 
				
			||||||
 | 
					      <view class="table-list-item">
 | 
				
			||||||
 | 
					        <uni-forms :model="codeData" label-width="100" :border="true">
 | 
				
			||||||
 | 
					          <uni-forms-item label="物资名称:" name="materialType">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.materialType }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="物资类型:" name="materialName">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.materialName }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="规格型号:" name="materialModel">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.materialModel }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="设备编码:" name="maCode">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.maCode }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="检验结论:" name="statusName">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.statusName }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="本次检修时间:" name="inspectionTime">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.inspectionTime }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="下次检修时间:" name="nextInspectionTime">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.nextInspectionTime }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="检修员:" name="inspectionPerson">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.inspectionPerson }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="检验员:" name="inspectionVerifier">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.inspectionVerifier }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="联系电话:" name="contactNumber">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.contactNumber }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="领料工程:" name="materialProject">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.materialProject }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					          <uni-forms-item label="领料单位:" name="materialUnit">
 | 
				
			||||||
 | 
					            <text style="height: 100%;display: flex;align-items: center;">{{ codeData.materialUnit }}</text>
 | 
				
			||||||
 | 
					          </uni-forms-item>
 | 
				
			||||||
 | 
					        </uni-forms>
 | 
				
			||||||
 | 
					      </view>
 | 
				
			||||||
 | 
					    </view>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- 相机预览页面 -->
 | 
					    <!-- 相机预览页面 -->
 | 
				
			||||||
    <view v-if="showCamera" class="camera-container">
 | 
					    <view v-if="showCamera" class="camera-container">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <!-- 底部控制区 -->
 | 
					      <!-- 底部控制区 -->
 | 
				
			||||||
      <view class="bottom-controls">
 | 
					      <view class="bottom-controls">
 | 
				
			||||||
        <view class="control-btn" @click="closeCamera">
 | 
					        <view class="control-btn" @click="closeCamera">
 | 
				
			||||||
| 
						 | 
					@ -362,93 +439,6 @@ export default {
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 处理点击聚焦
 | 
					 | 
				
			||||||
    async handleTapToFocus(event) {
 | 
					 | 
				
			||||||
      if (!this.cameraStarted || this.isFocusing) {
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      const CameraPreview = this.getCameraPlugin();
 | 
					 | 
				
			||||||
      if (!CameraPreview || typeof CameraPreview.tapToFocus !== 'function') {
 | 
					 | 
				
			||||||
        console.log('相机插件不支持点击聚焦功能');
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      try {
 | 
					 | 
				
			||||||
        // 获取点击位置
 | 
					 | 
				
			||||||
        const rect = event.currentTarget.getBoundingClientRect();
 | 
					 | 
				
			||||||
        const x = event.detail.x - rect.left;
 | 
					 | 
				
			||||||
        const y = event.detail.y - rect.top;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 转换为相对坐标 (0-1)
 | 
					 | 
				
			||||||
        const relativeX = x / rect.width;
 | 
					 | 
				
			||||||
        const relativeY = y / rect.height;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        console.log('点击聚焦位置:', { x: relativeX, y: relativeY });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 显示聚焦指示器
 | 
					 | 
				
			||||||
        this.showFocusIndicator = true;
 | 
					 | 
				
			||||||
        this.focusIndicatorStyle = {
 | 
					 | 
				
			||||||
          left: `${x - 30}rpx`,
 | 
					 | 
				
			||||||
          top: `${y - 30}rpx`
 | 
					 | 
				
			||||||
        };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.isFocusing = true;
 | 
					 | 
				
			||||||
        this.focusSuccess = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 清除之前的聚焦超时
 | 
					 | 
				
			||||||
        if (this.focusTimeout) {
 | 
					 | 
				
			||||||
          clearTimeout(this.focusTimeout);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        await new Promise((resolve, reject)=> {
 | 
					 | 
				
			||||||
              // 设置聚焦超时
 | 
					 | 
				
			||||||
              this.focusTimeout = setTimeout(() => {
 | 
					 | 
				
			||||||
                console.log('点击聚焦超时');
 | 
					 | 
				
			||||||
                this.isFocusing = false;
 | 
					 | 
				
			||||||
                this.showFocusIndicator = false;
 | 
					 | 
				
			||||||
                resolve();
 | 
					 | 
				
			||||||
              }, 3000);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
              CameraPreview.tapToFocus(
 | 
					 | 
				
			||||||
                  relativeX,
 | 
					 | 
				
			||||||
                  relativeY,
 | 
					 | 
				
			||||||
                  (result) => {
 | 
					 | 
				
			||||||
                    console.log('点击聚焦成功:', result);
 | 
					 | 
				
			||||||
                    if (this.focusTimeout) {
 | 
					 | 
				
			||||||
                      clearTimeout(this.focusTimeout);
 | 
					 | 
				
			||||||
                      this.focusTimeout = null;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    this.isFocusing = false;
 | 
					 | 
				
			||||||
                    this.focusSuccess = true;
 | 
					 | 
				
			||||||
                    // 显示聚焦成功状态
 | 
					 | 
				
			||||||
                    setTimeout(() => {
 | 
					 | 
				
			||||||
                      this.focusSuccess = false;
 | 
					 | 
				
			||||||
                      this.showFocusIndicator = false;
 | 
					 | 
				
			||||||
                    }, 1000);
 | 
					 | 
				
			||||||
                    resolve();
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                  (error) => {
 | 
					 | 
				
			||||||
                    console.error('点击聚焦失败:', error);
 | 
					 | 
				
			||||||
                    if (this.focusTimeout) {
 | 
					 | 
				
			||||||
                      clearTimeout(this.focusTimeout);
 | 
					 | 
				
			||||||
                      this.focusTimeout = null;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    this.isFocusing = false;
 | 
					 | 
				
			||||||
                    this.showFocusIndicator = false;
 | 
					 | 
				
			||||||
                    resolve(); // 即使聚焦失败也继续
 | 
					 | 
				
			||||||
                  }
 | 
					 | 
				
			||||||
              );
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        ;
 | 
					 | 
				
			||||||
      } catch (error) {
 | 
					 | 
				
			||||||
        console.error('点击聚焦过程出错:', error);
 | 
					 | 
				
			||||||
        this.isFocusing = false;
 | 
					 | 
				
			||||||
        this.showFocusIndicator = false;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // 关闭相机
 | 
					    // 关闭相机
 | 
				
			||||||
    async closeCamera() {
 | 
					    async closeCamera() {
 | 
				
			||||||
      console.log('关闭相机...');
 | 
					      console.log('关闭相机...');
 | 
				
			||||||
| 
						 | 
					@ -855,6 +845,37 @@ export default {
 | 
				
			||||||
  padding: 24rpx;
 | 
					  padding: 24rpx;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.table-list-item {
 | 
				
			||||||
 | 
					  background: #fff;
 | 
				
			||||||
 | 
					  padding: 32rpx;
 | 
				
			||||||
 | 
					  border-radius: 20rpx;
 | 
				
			||||||
 | 
					  box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
 | 
				
			||||||
 | 
					  margin-bottom: 24rpx;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.scan-btn {
 | 
				
			||||||
 | 
					  height: 88rpx;
 | 
				
			||||||
 | 
					  background: #4b8eff;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  border-radius: 12rpx;
 | 
				
			||||||
 | 
					  font-size: 32rpx;
 | 
				
			||||||
 | 
					  font-weight: 600;
 | 
				
			||||||
 | 
					  box-shadow: 0 6rpx 20rpx rgba(55, 132, 251, 0.2);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.coding-btn {
 | 
				
			||||||
 | 
					  padding: 10rpx 0;
 | 
				
			||||||
 | 
					  color: #fe9a09;
 | 
				
			||||||
 | 
					  background-color: #fff7eb;
 | 
				
			||||||
 | 
					  border: 1px solid #fe9a09;
 | 
				
			||||||
 | 
					  border-radius: 12rpx;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					  font-size: 28rpx;
 | 
				
			||||||
 | 
					  font-weight: 600;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* 相机预览样式 */
 | 
					/* 相机预览样式 */
 | 
				
			||||||
.camera-container {
 | 
					.camera-container {
 | 
				
			||||||
  position: fixed;
 | 
					  position: fixed;
 | 
				
			||||||
| 
						 | 
					@ -866,6 +887,166 @@ export default {
 | 
				
			||||||
  z-index: 1000; /* 降低层级,让UI元素显示在上方 */
 | 
					  z-index: 1000; /* 降低层级,让UI元素显示在上方 */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.top-tip {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  top: 120rpx;
 | 
				
			||||||
 | 
					  left: 50%;
 | 
				
			||||||
 | 
					  transform: translateX(-50%);
 | 
				
			||||||
 | 
					  z-index: 10001; /* 提高层级,确保显示在相机之上 */
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.tip-text {
 | 
				
			||||||
 | 
					  background-color: rgba(0, 0, 0, 0.5);
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					  font-size: 32rpx;
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  padding: 20rpx 30rpx;
 | 
				
			||||||
 | 
					  border-radius: 10rpx;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 聚焦状态提示 */
 | 
				
			||||||
 | 
					.focus-tip {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  top: 200rpx;
 | 
				
			||||||
 | 
					  left: 50%;
 | 
				
			||||||
 | 
					  transform: translateX(-50%);
 | 
				
			||||||
 | 
					  z-index: 10001; /* 提高层级 */
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.focus-text {
 | 
				
			||||||
 | 
					  background-color: rgba(75, 142, 255, 0.9);
 | 
				
			||||||
 | 
					  color: #fff;
 | 
				
			||||||
 | 
					  font-size: 28rpx;
 | 
				
			||||||
 | 
					  font-weight: bold;
 | 
				
			||||||
 | 
					  padding: 15rpx 25rpx;
 | 
				
			||||||
 | 
					  border-radius: 8rpx;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.viewfinder-container {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  top: 50%;
 | 
				
			||||||
 | 
					  left: 50%;
 | 
				
			||||||
 | 
					  transform: translate(-50%, -50%);
 | 
				
			||||||
 | 
					  z-index: 10001; /* 提高取景框层级 */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.viewfinder {
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  width: 500rpx;
 | 
				
			||||||
 | 
					  height: 600rpx;
 | 
				
			||||||
 | 
					  background-color: transparent;
 | 
				
			||||||
 | 
					  border: 2rpx solid rgba(255, 255, 255, 0.5);
 | 
				
			||||||
 | 
					  border-radius: 20rpx;
 | 
				
			||||||
 | 
					  box-shadow: 0 0 20rpx rgba(75, 142, 255, 0.5);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 扫描线动画 */
 | 
				
			||||||
 | 
					.scan-line {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  top: 0;
 | 
				
			||||||
 | 
					  left: 0;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 4rpx;
 | 
				
			||||||
 | 
					  background: linear-gradient(90deg, transparent, rgba(75, 142, 255, 0.8), transparent);
 | 
				
			||||||
 | 
					  animation: scan 2s linear infinite;
 | 
				
			||||||
 | 
					  border-radius: 2rpx;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@keyframes scan {
 | 
				
			||||||
 | 
					  0% {
 | 
				
			||||||
 | 
					    top: 0;
 | 
				
			||||||
 | 
					    opacity: 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  50% {
 | 
				
			||||||
 | 
					    opacity: 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  100% {
 | 
				
			||||||
 | 
					    top: calc(100% - 4rpx);
 | 
				
			||||||
 | 
					    opacity: 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.corner {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  width: 60rpx;
 | 
				
			||||||
 | 
					  height: 60rpx;
 | 
				
			||||||
 | 
					  border: 6rpx solid rgba(75, 142, 255, 0.8);
 | 
				
			||||||
 | 
					  background-color: transparent;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.corner-top-left {
 | 
				
			||||||
 | 
					  top: -6rpx;
 | 
				
			||||||
 | 
					  left: -6rpx;
 | 
				
			||||||
 | 
					  border-right: none;
 | 
				
			||||||
 | 
					  border-bottom: none;
 | 
				
			||||||
 | 
					  border-top-left-radius: 20rpx;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.corner-top-right {
 | 
				
			||||||
 | 
					  top: -6rpx;
 | 
				
			||||||
 | 
					  right: -6rpx;
 | 
				
			||||||
 | 
					  border-left: none;
 | 
				
			||||||
 | 
					  border-bottom: none;
 | 
				
			||||||
 | 
					  border-top-right-radius: 20rpx;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.corner-bottom-left {
 | 
				
			||||||
 | 
					  bottom: -6rpx;
 | 
				
			||||||
 | 
					  left: -6rpx;
 | 
				
			||||||
 | 
					  border-right: none;
 | 
				
			||||||
 | 
					  border-top: none;
 | 
				
			||||||
 | 
					  border-bottom-left-radius: 20rpx;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.corner-bottom-right {
 | 
				
			||||||
 | 
					  bottom: -6rpx;
 | 
				
			||||||
 | 
					  right: -6rpx;
 | 
				
			||||||
 | 
					  border-left: none;
 | 
				
			||||||
 | 
					  border-top: none;
 | 
				
			||||||
 | 
					  border-bottom-right-radius: 20rpx;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 聚焦指示器 */
 | 
				
			||||||
 | 
					.focus-indicator {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  width: 60rpx;
 | 
				
			||||||
 | 
					  height: 60rpx;
 | 
				
			||||||
 | 
					  z-index: 10002; /* 聚焦指示器最高层级 */
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.focus-ring {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					  border: 3rpx solid #4b8eff;
 | 
				
			||||||
 | 
					  border-radius: 50%;
 | 
				
			||||||
 | 
					  background-color: transparent;
 | 
				
			||||||
 | 
					  transition: all 0.3s ease;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.focus-ring.focusing {
 | 
				
			||||||
 | 
					  border-color: #ff9500;
 | 
				
			||||||
 | 
					  animation: focusPulse 1s ease-in-out infinite;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.focus-ring.focused {
 | 
				
			||||||
 | 
					  border-color: #00ff00;
 | 
				
			||||||
 | 
					  transform: scale(1.2);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@keyframes focusPulse {
 | 
				
			||||||
 | 
					  0%, 100% {
 | 
				
			||||||
 | 
					    transform: scale(1);
 | 
				
			||||||
 | 
					    opacity: 1;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  50% {
 | 
				
			||||||
 | 
					    transform: scale(1.3);
 | 
				
			||||||
 | 
					    opacity: 0.7;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.bottom-controls {
 | 
					.bottom-controls {
 | 
				
			||||||
  position: absolute;
 | 
					  position: absolute;
 | 
				
			||||||
  bottom: 100rpx;
 | 
					  bottom: 100rpx;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -117,26 +117,26 @@ const newInfoList = ref([
 | 
				
			||||||
        url: '/pages/devicesSearch/ocrSearch',
 | 
					        url: '/pages/devicesSearch/ocrSearch',
 | 
				
			||||||
        iconSrc: '../../static/searchModel/qrCode.png',
 | 
					        iconSrc: '../../static/searchModel/qrCode.png',
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  {
 | 
					  // {
 | 
				
			||||||
    title: 'OCR查询2',
 | 
					  //   title: 'OCR查询2',
 | 
				
			||||||
    url: '/pages/devicesSearch/ocrSearch2',
 | 
					  //   url: '/pages/devicesSearch/ocrSearch2',
 | 
				
			||||||
    iconSrc: '../../static/searchModel/qrCode.png',
 | 
					  //   iconSrc: '../../static/searchModel/qrCode.png',
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  {
 | 
					  // {
 | 
				
			||||||
    title: 'OCR查询3',
 | 
					  //   title: 'OCR查询3',
 | 
				
			||||||
    url: '/pages/devicesSearch/ocrSearch3',
 | 
					  //   url: '/pages/devicesSearch/ocrSearch3',
 | 
				
			||||||
    iconSrc: '../../static/searchModel/qrCode.png',
 | 
					  //   iconSrc: '../../static/searchModel/qrCode.png',
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  {
 | 
					  // {
 | 
				
			||||||
    title: 'OCR查询4',
 | 
					  //   title: 'OCR查询4',
 | 
				
			||||||
    url: '/pages/devicesSearch/ocrSearch4',
 | 
					  //   url: '/pages/devicesSearch/ocrSearch4',
 | 
				
			||||||
    iconSrc: '../../static/searchModel/qrCode.png',
 | 
					  //   iconSrc: '../../static/searchModel/qrCode.png',
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
  {
 | 
					  // {
 | 
				
			||||||
    title: 'OCR查询5',
 | 
					  //   title: 'OCR查询5',
 | 
				
			||||||
    url: '/pages/devicesSearch/ocrSearch5',
 | 
					  //   url: '/pages/devicesSearch/ocrSearch5',
 | 
				
			||||||
    iconSrc: '../../static/searchModel/qrCode.png',
 | 
					  //   iconSrc: '../../static/searchModel/qrCode.png',
 | 
				
			||||||
  },
 | 
					  // },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        title: '设备编码查询',
 | 
					        title: '设备编码查询',
 | 
				
			||||||
        url: '/pages/devicesSearch/codeSearch',
 | 
					        url: '/pages/devicesSearch/codeSearch',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue