Преглед изворни кода

迁移 新安全准入 积分兑换 设备登记

dedsudiyu пре 1 месец
родитељ
комит
44fe52bd1e
33 измењених фајлова са 4118 додато и 214 уклоњено
  1. 5 0
      .idea/inspectionProfiles/profiles_settings.xml
  2. 6 0
      .idea/misc.xml
  3. 8 0
      .idea/modules.xml
  4. 12 0
      .idea/v3-H5.iml
  5. 6 0
      .idea/vcs.xml
  6. 125 0
      .idea/workspace.xml
  7. 2350 0
      api/apiDemo/index.js
  8. 2 2
      api/request/config.js
  9. 27 0
      pages.json
  10. 2 2
      pages/views/dataBoard/securityHidden.vue
  11. 4 0
      pages/views/login/login.vue
  12. 5 0
      pages/views/saoCode/saoCode.vue
  13. 82 26
      pages/views/teacherPage/teacherHome.vue
  14. 16 0
      pages_basics/api/index.js
  15. 24 0
      pages_basics/views/deviceCageSitePage.vue
  16. 233 0
      pages_basics/views/integralManage/codeSuccess.vue
  17. 33 0
      pages_equipmentUtilization/api/index.js
  18. 76 0
      pages_equipmentUtilization/views/equipmentInformation/index.vue
  19. 563 0
      pages_equipmentUtilization/views/equipmentInformation/infoPage.vue
  20. 228 0
      pages_equipmentUtilization/views/equipmentInformation/listPage.vue
  21. 1 1
      pages_manage/views/accessControl/empowerOpen.vue
  22. 1 1
      pages_manage/views/accessControl/remoteOpen.vue
  23. 53 4
      pages_manage/views/accessQualification/accessQualification.vue
  24. 55 28
      pages_manage/views/accessQualification/accessQualificationInfo.vue
  25. 23 6
      pages_manage/views/accessQualification/approve.vue
  26. 1 1
      pages_manage/views/laboratory/safetyCardScan.vue
  27. 2 2
      pages_student/views/accessApplication/accessApplication.vue
  28. 2 2
      pages_student/views/accessApplication/applicationDetails.vue
  29. 2 2
      pages_student/views/accessApplication/chooseALaboratory.vue
  30. 140 125
      pages_student/views/accessApplication/newApplication.vue
  31. 2 3
      pages_student/views/accessApplication/safeAccess.vue
  32. 19 8
      utils/index.js
  33. 10 1
      utils/scanTheCode.js

+ 5 - 0
.idea/inspectionProfiles/profiles_settings.xml

@@ -0,0 +1,5 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="PROJECT_PROFILE" />
+  </settings>
+</component>

+ 6 - 0
.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>

+ 8 - 0
.idea/modules.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/v3-H5.iml" filepath="$PROJECT_DIR$/.idea/v3-H5.iml" />
+    </modules>
+  </component>
+</project>

+ 12 - 0
.idea/v3-H5.iml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$">
+      <excludeFolder url="file://$MODULE_DIR$/.tmp" />
+      <excludeFolder url="file://$MODULE_DIR$/temp" />
+      <excludeFolder url="file://$MODULE_DIR$/tmp" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 125 - 0
.idea/workspace.xml

@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="5264e573-3c9e-4faf-aaf1-757af63c3042" name="Default Changelist" comment="" />
+    <ignored path="$PROJECT_DIR$/.tmp/" />
+    <ignored path="$PROJECT_DIR$/temp/" />
+    <ignored path="$PROJECT_DIR$/tmp/" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FUSProjectUsageTrigger">
+    <session id="672935100">
+      <usages-collector id="statistics.lifecycle.project">
+        <counts>
+          <entry key="project.closed" value="1" />
+          <entry key="project.open.time.1" value="1" />
+          <entry key="project.opened" value="1" />
+        </counts>
+      </usages-collector>
+    </session>
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+    <sorting>DEFINITION_ORDER</sorting>
+  </component>
+  <component name="NodePackageJsonFileManager">
+    <packageJsonPaths>
+      <path value="$PROJECT_DIR$/uni_modules/mmmm-image-tools/package.json" />
+      <path value="$PROJECT_DIR$/uni_modules/qiun-data-charts/package.json" />
+      <path value="$PROJECT_DIR$/uni_modules/uni-data-picker/package.json" />
+      <path value="$PROJECT_DIR$/uni_modules/uni-datetime-picker/package.json" />
+      <path value="$PROJECT_DIR$/uni_modules/uni-load-more/package.json" />
+      <path value="$PROJECT_DIR$/uni_modules/uni-popup/package.json" />
+      <path value="$PROJECT_DIR$/uni_modules/uni-section/package.json" />
+      <path value="$PROJECT_DIR$/uni_modules/uni-swipe-action/package.json" />
+      <path value="$PROJECT_DIR$/uni_modules/uni-transition/package.json" />
+      <path value="$PROJECT_DIR$/uni_modules/zb-table/package.json" />
+    </packageJsonPaths>
+  </component>
+  <component name="ProjectFrameBounds" extendedState="6">
+    <option name="x" value="-8" />
+    <option name="width" value="1935" />
+    <option name="height" value="1047" />
+  </component>
+  <component name="ProjectView">
+    <navigator proportions="" version="1">
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scope" />
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="v3-H5" type="b2602c69:ProjectViewProjectNode" />
+              <item name="v3-H5" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="WebServerToolWindowFactoryState" value="false" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../小程序视频依赖" />
+    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
+    <property name="nodejs_npm_path_reset_for_default_project" value="true" />
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="5264e573-3c9e-4faf-aaf1-757af63c3042" name="Default Changelist" comment="" />
+      <created>1757034652411</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1757034652411</updated>
+      <workItem from="1757034653583" duration="15000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="15000" />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
+    <layout>
+      <window_info id="Favorites" side_tool="true" />
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.24973656" />
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
+      <window_info anchor="bottom" id="Version Control" />
+      <window_info anchor="bottom" id="Terminal" />
+      <window_info anchor="bottom" id="Event Log" side_tool="true" />
+      <window_info anchor="bottom" id="Message" order="0" />
+      <window_info anchor="bottom" id="Find" order="1" />
+      <window_info anchor="bottom" id="Run" order="2" />
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
+    </layout>
+  </component>
+</project>

Разлика између датотеке није приказан због своје велике величине
+ 2350 - 0
api/apiDemo/index.js


+ 2 - 2
api/request/config.js

@@ -14,9 +14,9 @@ const config = {
 	// base_url: 'http://192.168.1.29:8080',//何成
 	// base_url: 'https://demo.zjznai.com/xzgd/',
 	// base_url: 'https://lab.zjznai.com/labNhSystem/',//43服务器高升测试
-	// base_url: 'https://lab.zjznai.com/labTest/',//1.8外网
+	base_url: 'https://lab.zjznai.com/labTest/',//1.8外网
 	// base_url: 'https://lab.zjznai.com/labapp/',//43服务器线上
-	base_url: 'http://lasfl.sxau.edu.cn/api',//88服务器线上
+	// base_url: 'http://lasfl.sxau.edu.cn/api',//88服务器线上
 	// base_url: 'https://lab.zjznai.com/labSystem/', //矿大地址
 	// base_url: 'https://lab.zjznai.com/jdlabSystem/', //交大地址
 	// base_url: 'https://lab.zjznai.com/jndxlabSystem/', //暨大地址

+ 27 - 0
pages.json

@@ -201,6 +201,13 @@
 						"navigationBarBackgroundColor": "#0183FA" //导航背景色
 					}
 				},
+				/* 设备管理和笼位管理页面 */
+				{
+					"path": "views/deviceCageSitePage",
+					"style": {
+						"navigationBarTitleText": ""
+					}
+				},
 				/* 修改头像 */
 				{
 					"path": "views/avatar",
@@ -295,6 +302,13 @@
 					"style": {
 						"navigationBarTitleText": "分级管控"
 					}
+				},
+				/* 积分管理 */
+				{
+					"path": "views/integralManage/codeSuccess", //扫码成功
+					"style": {
+						"navigationBarTitleText": "扫码成功"
+					}
 				}
 			]
 		},
@@ -449,6 +463,19 @@
 					}
 				}
 			]
+		},
+		{
+			/* 设备使用 */
+			"root": "pages_equipmentUtilization", //分包根路径
+			"name": "equipmentUtilization", //分包名字可写可不写
+			"pages": [
+				{
+					"path": "views/equipmentInformation/index",
+					"style": {
+						"navigationBarTitleText": "设备使用系统"
+					}
+				}
+			]
 		}
 	],
 	"globalStyle": {

+ 2 - 2
pages/views/dataBoard/securityHidden.vue

@@ -12,7 +12,7 @@
 			<!-- 图表选项卡 -->
 			<view class="chart-t">
 				<view class="chart-t-li" :class="chartIndex==index?'color-A':'color-B'" @click="chartClick(index)"
-					v-for="(item,index) in chartTitle">{{item}}</view>
+					v-for="(item,index) in chartTitle" :key="index">{{item}}</view>
 			</view>
 			<!-- 安全隐患排行-图表 -->
 			<view class="chart-b" v-if="chartIndex==0">
@@ -20,7 +20,7 @@
 			</view>
 			<!-- 一级指标排行-图表 -->
 			<view class="chart-b2" v-if="chartIndex==0">
-				<view class="chart-b2-li" v-for="(item,index) in hiddenChartBottom">
+				<view class="chart-b2-li" v-for="(item,index) in hiddenChartBottom" :key="index">
 					<view class="chart-b2-li-t">
 						<text>{{index+1}}</text>
 						<text>{{item.name}}</text>

+ 4 - 0
pages/views/login/login.vue

@@ -141,6 +141,10 @@
 								uni.redirectTo({
 									url: '/pages_basics/views/earlyWarningManage/earlyWarningDetail',
 								});
+							}else if(uni.getStorageSync('mid')){
+								uni.redirectTo({
+									url: '/pages_basics/views/integralManage/codeSuccess'
+								});
 							} else {
 								uni.redirectTo({
 									url: '/pages/views/home/home',

+ 5 - 0
pages/views/saoCode/saoCode.vue

@@ -87,6 +87,11 @@
 						uni.reLaunch({
 							url: '/pages/views/saoCode/chemicalsInstructionsVideo'
 						});
+					} else if (codeData.type == 15) {
+						//安科院设备信息
+						uni.reLaunch({
+							url: '/pages_equipmentUtilization/views/equipmentInformation/index?id=' + codeData.id,
+						});
 					} else if (codeData.type == 7) {
 						//培训课程
 						uni.reLaunch({

+ 82 - 26
pages/views/teacherPage/teacherHome.vue

@@ -17,13 +17,30 @@
 					<view>{{userData.userName}} {{userData.userType==1?'老师':(userData.userType==2?'学生':(userData.userType==3?'系统用户':''))}}</view>
 					<view>{{userData.deptName}}</view>
 				</view>
+				<view class="user-button-a" @click="saoCode()">
+					<img class="position-img" :src="imagesUrl('student/icon_dhli.png')">
+					积分兑换
+				</view>
 				<view class="user-button" @click="goMine()">设置</view>
 			</view>
-			<!-- <view class="button-one-box"> -->
-				<!-- <view class="button-min" @click="goPage('securityCheck')">
+			<view class="button-one-box">
+				<view class="button-min" @click="goPage('securityAdmittance')">
+					<img class="button-img" :src="imagesUrl('home/icon_sy_aqzr@1x.png')">
+					<view class="button-name">安全准入</view>
+					<view class="home-button-mark" v-if="admittanceHint"></view>
+				</view>
+				<view class="button-min" @click="goPage('securityCheck')">
 					<img class="button-img" :src="imagesUrl('home/icon_sy_aqjc@1x.png')">
 					<view class="button-name">安全检查</view>
-				</view> -->
+				</view>
+				<view class="button-min" @click="goPage('deviceManagement')">
+					<img class="button-img" :src="imagesUrl('home/icon_sy_sbgl@1x.png')">
+					<view class="button-name">设备管理</view>
+				</view>
+				<view class="button-min" @click="saoCode()">
+					<img class="button-img" :src="imagesUrl('home/icon_sy_aqks@1x.png')">
+					<view class="button-name">设备登记</view>
+				</view>
 				<!-- <view class="button-min" @click="goPage('securityExamination')">
 					<img class="button-img" :src="imagesUrl('home/icon_sy_aqks@1x.png')">
 					<view class="button-name">安全考试</view>
@@ -52,55 +69,55 @@
 					<img class="button-img" :src="imagesUrl('home/icon_sy_lwgl@1x.png')">
 					<view class="button-name">笼位管理</view>
 				</view> -->
-			<!-- </view> -->
+			</view>
 			<top-warn></top-warn>
-			<view class="home-button-box-1" style="background-color: #fff0dd;"
+			<!-- <view class="home-button-box-1" style="background-color: #fff0dd;"
 				@click="goPage('securityAdmittance')">
 				<img class="home-button-img" :src="imagesUrl('home/icon_sy_aqzr@1x.png')"/>
 				<view class="home-button-name" style="color: #ff8c00;">安全准入</view>
 				<view class="home-button-text">实验室安全准入审核</view>
 				<view class="home-button-mark" v-if="admittanceHint"></view>
-			</view>
+			</view> -->
 			<view class="home-button-box-1" style="background-color: #FFE4E1;"
 				@click="goPage('emergencyDisposal')">
 				<img class="home-button-img" :src="imagesUrl('home/icon_sy_yjcz@1x.png')"/>
-				<view class="home-button-name" style="color: #ff6762;">应急处置</view>
+				<view class="home-button-name" style="color: #ff6762;">应急预警</view>
 				<view class="home-button-text">实验室安全风险处置</view>
 				<!-- <view class="home-button-mark"></view> -->
 			</view>
 			<view class="home-button-box-2">
-				<view class="home-button-box-min" @click="goPage('remoteDoorOpening')"
+				<view class="home-button-box-min" @click="goPage('riskEarlyWarning')"
 					style="background-color: #DFF0FF;margin-right:20rpx;">
-					<img class="home-button-img" :src="imagesUrl('home/img_sy_yckm@1x.png')">
+					<img class="home-button-img" :src="imagesUrl('home/home_button_02.png')">
 					<view class="home-button-min">
-						<view class="home-button-min-name">远程开门</view>
-						<view class="home-button-min-text">打开门禁</view>
+						<view class="home-button-min-name">预警记录</view>
+						<view class="home-button-min-text">风险预警记录</view>
 					</view>
 				</view>
-				<view class="home-button-box-min" @click="goPage('accessControlAuthorization')"
+				<view class="home-button-box-min" @click="goPage('entryAndExitRecord')"
 					style="background-color: #DFF0FF;">
-					<img class="home-button-img" :src="imagesUrl('home/home_button_03.png')">
+					<img class="home-button-img" :src="imagesUrl('home/img_sy_lkjc@1x.png')">
 					<view class="home-button-min">
-						<view class="home-button-min-name">授权开门</view>
-						<view class="home-button-min-text">门禁权限</view>
+						<view class="home-button-min-name">进出记录</view>
+						<view class="home-button-min-text">实验室出入</view>
 					</view>
 				</view>
 			</view>
 			<view class="home-button-box-2">
-				<view class="home-button-box-min" @click="goPage('riskEarlyWarning')"
+				<view class="home-button-box-min" @click="goPage('remoteDoorOpening')"
 					style="background-color: #DFF0FF;margin-right:20rpx;">
-					<img class="home-button-img" :src="imagesUrl('home/home_button_02.png')">
+					<img class="home-button-img" :src="imagesUrl('home/img_sy_yckm@1x.png')">
 					<view class="home-button-min">
-						<view class="home-button-min-name">预警记录</view>
-						<view class="home-button-min-text">风险预警记录</view>
+						<view class="home-button-min-name">远程开门</view>
+						<view class="home-button-min-text">打开门禁</view>
 					</view>
 				</view>
-				<view class="home-button-box-min" @click="goPage('entryAndExitRecord')"
+				<view class="home-button-box-min" @click="goPage('accessControlAuthorization')"
 					style="background-color: #DFF0FF;">
-					<img class="home-button-img" :src="imagesUrl('home/img_sy_lkjc@1x.png')">
+					<img class="home-button-img" :src="imagesUrl('home/home_button_03.png')">
 					<view class="home-button-min">
-						<view class="home-button-min-name">进出记录</view>
-						<view class="home-button-min-text">实验室出入</view>
+						<view class="home-button-min-name">授权开门</view>
+						<view class="home-button-min-text">门禁权限</view>
 					</view>
 				</view>
 			</view>
@@ -277,6 +294,13 @@
 					this.pageType = 1;
 
 				} else if (type == 'securityCheck') {
+					uni.showToast({
+						title: '暂未开放',
+						icon: "none",
+						mask: true,
+						duration: 2000
+					});
+					return
 					//安全检查
 					uni.navigateTo({
 						url: "/pages_safetyCheck/views/safetyCheck",
@@ -527,15 +551,37 @@
 					}
 				}
 				.user-button{
+					padding:0 20rpx;
 					font-size:28rpx;
-					width:150rpx;
+					min-width:70rpx;
 					height:50rpx;
 					line-height:50rpx;
 					background-color: #0183fa;
 					color:#fff;
 					border-radius:60rpx;
 					text-align: center;
-					margin:50rpx 40rpx 0 0;
+					margin:50rpx 20rpx 0 0;
+					position: relative;
+				}
+				.user-button-a{
+					padding:0 20rpx;
+					font-size:28rpx;
+					min-width:70rpx;
+					height:50rpx;
+					line-height:50rpx;
+					// background-color: #0183fa;
+					color:#0183fa;
+					border-radius:60rpx;
+					text-align: center;
+					margin:50rpx 20rpx 0 0;
+					position: relative;
+					.position-img{
+						position: absolute;
+						top:10rpx;
+						left:-20rpx;
+						width:30rpx;
+						height:30rpx;
+					}
 				}
 			}
 			.home-button-box-1{
@@ -617,7 +663,8 @@
 				border-radius: 20rpx;
 				padding: 13px 0 20px;
 				overflow: hidden;
-				margin: 400rpx 30rpx 0;
+				// margin: 400rpx 30rpx 0;
+				margin: 20rpx 30rpx 0;
 
 				.button-min {
 					display: inline-block;
@@ -641,6 +688,15 @@
 						text-align: center;
 						color: #333;
 					}
+					.home-button-mark{
+						position: absolute;
+						top:48rpx;
+						left:112rpx;
+						width:14rpx;
+						height:14rpx;
+						border-radius:50%;
+						background-color: #FF3030;
+					}
 				}
 			}
 

+ 16 - 0
pages_basics/api/index.js

@@ -139,6 +139,14 @@ export const systemMineLinkGetEducationExamDetail = (data) => {
 		data: { ...data }
 	})
 };
+//设施预约
+export const systemMineLinkGetExamH5 = (data) => {
+	return apiResquest({
+		url: `/system/mine/link/getExamH5`,
+		method: 'get',
+		data: { ...data }
+	})
+};
 //设备资产管理/笼位管理获取跳转参数
 export const menuLinkPost  = (url,data) => {
     return apiResquestOutside({
@@ -242,3 +250,11 @@ export const chemicalAppletSelectStockRecord  = (data) => {
 				data: { ...data }
     })
 };
+//扫码兑换调用(新-对接学习考试后的)
+export const creditAppletExchangePoints  = (data) => {
+    return apiResquest({
+        url: `/credit/applet/exchangePoints`,
+        method: 'POST',
+        data: {...data}
+    })
+};

+ 24 - 0
pages_basics/views/deviceCageSitePage.vue

@@ -9,6 +9,8 @@
 		<web-view v-if="pageType==3&&openType" :src="'https://labcontrol.nwafu.edu.cn/studay/wx/#/zjznaiLogin?access_token='+access_token"></web-view>
 		<!-- 安全责任 -->
 		<web-view v-if="pageType==4&&openType" :src="'https://labcontrol.nwafu.edu.cn/duty/app/#/?userId='+userId"></web-view>
+		<!-- 设施预约 -->
+		<web-view v-if="pageType==5&&openType" :src="'https://labcontrol.nwafu.edu.cn/reserve/app/#/pages/login?token='+token"></web-view>
 		</view>
 </template>
 
@@ -55,6 +57,19 @@
 				this.userId=uni.getStorageSync('userId');
 				this.$set(this,'openType',true);
 				// this.systemMineLinkGetSafetyDetail();
+			}else if(this.pageType==5){
+				//设施预约
+				// let item = {
+				// 	reqApi:'labcontrol.nwafu.edu.cn/reserve/api/user/labLogin',
+				// };
+				// let obj = {
+				// 	appId:'1962714012644597761',
+				// 	secret:'c2789f8a360a4709a054a2e9f102d1b4',
+				// 	timeStamp:Date.parse(new Date()),
+				// 	userId:uni.getStorageSync('userId'),
+				// };
+				// this.menuLinkPost(item,obj);
+				this.systemMineLinkGetExamH5();
 			}
 			
 
@@ -89,6 +104,15 @@
 					this.getParams(data.data)
 				}
 			},
+			//设施预约
+			async systemMineLinkGetExamH5() {
+				const {
+					data
+				} = await systemMineLinkGetExamH5();
+				if (data.code == 200) {
+					this.getParams(data.data)
+				}
+			},
 			getParams(item) {
 				let params = JSON.parse(item.params)
 				let obj = {};

+ 233 - 0
pages_basics/views/integralManage/codeSuccess.vue

@@ -0,0 +1,233 @@
+<!--扫码成功-->
+<template>
+	<view id="codeSuccess">
+		<view class="top-title-box" v-if="pageShow">
+			<img v-if="pageType" class="img-box-one" :src="imagesUrl('student/icon_dhli.png')">
+			<img v-else class="img-box-two" :src="imagesUrl('student/icon_dhlp_dhcg.png')">
+			<view class="text-p">{{pageType?'兑换礼品':'兑换成功'}}</view>
+		</view>
+		<view class="bottom-text-box" v-if="pageShow">
+			<view class="min-text">
+				<view>机器号</view>
+				<view>{{mid}}</view>
+			</view>
+			<view class="min-text">
+				<view>货道号</view>
+				<view>{{sid}}</view>
+			</view>
+			<view class="min-text">
+				<view>商品编号</view>
+				<view>{{pid}}</view>
+			</view>
+			<view class="min-text">
+				<view>积分</view>
+				<view>{{pri}}</view>
+			</view>
+		</view>
+		<view class="bottom-button-p" v-if="pageType&&pageShow"
+			:class="pageType?'bottom-button-p-one':'bottom-button-p-two'" @click="clickButton">兑换</view>
+	</view>
+</template>
+
+<script>
+	import {
+		creditAppletExchangePoints
+	} from '@/pages_basics/api/index.js'
+	export default {
+		name: "codeSuccess",
+		data() {
+			return {
+				mid: "",
+				sid: "",
+				pid: "",
+				pri: "",
+				pageType: true,
+				pageShow: false,
+			}
+		},
+		onLoad(option) {
+			let self = this;
+			if (option.q) {
+				let text = decodeURIComponent(option.q)
+				text = text.replace('"', '')
+				text = text.replace('"', '')
+				let list = text.split("?")[1].split("&");
+				for (let i = 0; i < list.length; i++) {
+					let newList = list[i].split("=");
+					if (newList[0] == 'mid') {
+						self.mid = newList[1];
+					} else if (newList[0] == 'sid') {
+						self.sid = newList[1];
+					} else if (newList[0] == 'pid') {
+						self.pid = newList[1];
+					} else if (newList[0] == 'pri') {
+						self.pri = newList[1];
+					}
+				}
+				if (!uni.getStorageSync('token')) {
+					uni.setStorageSync('mid', this.mid);
+					uni.setStorageSync('sid', this.sid);
+					uni.setStorageSync('pid', this.pid);
+					uni.setStorageSync('pri', this.pri);
+					uni.redirectTo({
+						url: '/pages/views/login/login',
+					});
+					return
+				}
+				this.pageShow = true;
+			} else {
+				if (!uni.getStorageSync('token')) {
+					uni.setStorageSync('mid', this.mid);
+					uni.setStorageSync('sid', this.sid);
+					uni.setStorageSync('pid', this.pid);
+					uni.setStorageSync('pri', this.pri);
+					uni.redirectTo({
+						url: '/pages/views/login/login',
+					});
+					return
+				}
+				if (!uni.getStorageSync('mid')) {
+					uni.redirectTo({
+						url: '/pages/views/home/home',
+					});
+					return
+				}
+				this.mid = uni.getStorageSync('mid');
+				this.sid = uni.getStorageSync('sid');
+				this.pid = uni.getStorageSync('pid');
+				this.pri = uni.getStorageSync('pri');
+				uni.removeStorageSync('mid');
+				uni.removeStorageSync('sid');
+				uni.removeStorageSync('pid');
+				uni.removeStorageSync('pri');
+				this.pageShow = true;
+			}
+
+		},
+		methods: {
+			clickButton() {
+				let self = this;
+				if (self.pageType) {
+					uni.showModal({
+						title: '提示',
+						content: '确认兑换吗?',
+						success: function(res) {
+							if (res.confirm) {
+								self.creditAppletExchangePoints();
+							}
+						}
+					});
+				}
+			},
+			async creditAppletExchangePoints() {
+				let self = this;
+				let obj = {
+					mid: this.mid,
+					sid: this.sid,
+					pid: this.pid,
+					pri: this.pri,
+				};
+				const {
+					data
+				} = await creditAppletExchangePoints(obj)
+				if (data.code == 200) {
+					uni.showToast({
+						title: '兑换成功',
+						mask: true,
+						duration: 2000
+					});
+					this.pageType = false;
+				} else {
+					uni.showToast({
+						title: data.msg,
+						icon: "error",
+						mask: true,
+						duration: 2000
+					});
+				}
+			}
+
+		}
+	}
+</script>
+
+<style lang="stylus" scoped>
+	#codeSuccess {
+		height: 100%;
+		width: 100%;
+
+		.top-title-box {
+			overflow hidden;
+			background #fff;
+			height: 290rpx;
+			border-bottom: 1rpx solid #dedede;
+
+			.img-box-one {
+				width: 150rpx;
+				height: 135rpx;
+				margin: 64rpx auto 0;
+			}
+
+			.img-box-two {
+				width: 120rpx;
+				height: 120rpx;
+				margin: 64rpx auto 0;
+			}
+
+			.text-p {
+				text-align center;
+				line-height: 86rpx;
+				font-size: 26rpx;
+			}
+
+			.num-p {
+				text-align center;
+				line-height: 64rpx;
+				font-size: 36rpx;
+				font-weigth: 700;
+			}
+		}
+
+		.bottom-text-box {
+			padding: 30rpx 100rpx;
+
+			background #fff;
+			.min-text {
+				display: flex;
+
+				view {
+					font-size: 26rpx;
+					line-height: 72rpx;
+				}
+
+				view:nth-child(1) {
+					width: 192rpx;
+					color: #999;
+				}
+
+				view:nth-child(2) {
+					flex: 1;
+				}
+			}
+		}
+
+		.bottom-button-p {
+			height: 70rpx;
+			line-height: 70rpx;
+			text-align center;
+			border-radius: 10rpx;
+			width: 300rpx;
+			margin: 40rpx auto;
+		}
+
+		.bottom-button-p-one {
+			color: #fff;
+			background #00B68A
+		}
+
+		.bottom-button-p-two {
+			color: #fff;
+			background #dedede
+		}
+	}
+</style>

+ 33 - 0
pages_equipmentUtilization/api/index.js

@@ -0,0 +1,33 @@
+import { apiResquest,apiResquestForm,apiResquestJsonList,apiResquestFormVideo,apiResquestTimer } from '@/api/request/request.js'
+
+//登记使用
+export const mpDeviceUsageStart = (data) => {
+	return apiResquest({
+		url: `/device/mp/device/usage/start`,
+		method: 'POST',
+		data: { ...data }
+	})
+};
+//结束使用
+export const mpDeviceUsageEnd = (data) => {
+	return apiResquest({
+		url: `/device/mp/device/usage/end/`+data.deviceId,
+		method: 'POST',
+	})
+};
+//我的使用记录
+export const mpDeviceUsageList = (data) => {
+	return apiResquest({
+		url: `/device/mp/device/usage/my-list/`,
+		method: 'POST',
+		data: { ...data }
+	})
+};
+//设备详情
+export const mpDeviceDetail = (data) => {
+	return apiResquest({
+		url: `/device/mp/device/detail`,
+		method: 'GET',
+		data: data,
+	})
+};

+ 76 - 0
pages_equipmentUtilization/views/equipmentInformation/index.vue

@@ -0,0 +1,76 @@
+<template>
+	<view id="equipmentInformation">
+		<view class="top-table-button-box">
+			<view :class="checkType == 1?'checkButton':''" @click="checkButton(1)">设备信息</view>
+			<view :class="checkType == 2?'checkButton':''" @click="checkButton(2)">使用记录</view>
+		</view>
+		<view class="bottom-flex">
+			<infoPage :equipmentId="equipmentId" v-if="checkType == 1"></infoPage>
+			<listPage :equipmentId="equipmentId" v-if="checkType == 2"></listPage>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		demo1,
+	} from '@/pages_equipmentUtilization/api/index.js'
+	import infoPage from './infoPage'
+	import listPage from './listPage'
+	export default {
+		components: {
+			infoPage,
+			listPage
+		},
+		data() {
+			return {
+				checkType:1,
+				equipmentId:'',
+			}
+		},
+		onLoad(option) {
+			this.$set(this,'equipmentId',option.id);
+		},
+		onShow() {
+			
+		},
+		mounted() {
+			
+		},
+		methods: {
+			checkButton(type){
+				if(this.checkType != type){
+					this.$set(this,'checkType',type);
+				}
+			},
+		},
+	}
+</script>
+
+<style lang="stylus" scoped>
+	#equipmentInformation {
+		height: 100%;
+		flex:1;
+		display:flex;
+		overflow: hidden;
+		flex-direction:column;
+		.top-table-button-box{
+			display: flex;
+			border-bottom: 1rpx solid #0183FA;
+			background-color: #fff;
+			view{
+				font-weigth:700;
+				flex: 1;
+				text-align: center;
+				line-height:80rpx;
+			}
+			.checkButton{
+				color:#0183FA;
+			}
+		}
+		.bottom-flex{
+			flex: 1;
+			overflow: hidden;
+		}
+	}
+</style>

+ 563 - 0
pages_equipmentUtilization/views/equipmentInformation/infoPage.vue

@@ -0,0 +1,563 @@
+<template>
+	<view class="equipmentInformationInfoPage">
+		<view class="info-max-box">
+			<img class="left-img" v-if="newData.imageUrls[0]" :src="baseUrl+newData.imageUrls[0]">
+			<img class="left-img" v-if="!newData.imageUrls[0]" :src="imagesUrl('commonality/chemicalsInfoNull.png')">
+			<view class="right-box">
+				<view>设备分类:{{newData.categoryName}}</view>
+				<view>设备名称:{{newData.deviceName}}</view>
+				<view>设备编号:{{newData.deviceCode}}</view>
+				<view>设备状态:{{newData.deviceStatusName}}</view>
+			</view>
+		</view>
+		<view class="text-max-box">
+			<view>类型</view>
+			<view>{{newData.deviceType?newData.deviceType:'-'}}</view>
+		</view>
+		<view class="text-max-box">
+			<view>品牌</view>
+			<view>{{newData.brand?newData.brand:'-'}}</view>
+		</view>
+		<view class="text-max-box">
+			<view>设备原值(元)</view>
+			<view>{{newData.price?newData.price:'-'}}</view>
+		</view>
+		<view class="text-title-box">参数用途</view>
+		<view class="text-max-box">
+			<view>设备用途</view>
+			<view class="colorA" @click="lookText(1)">查看</view>
+		</view>
+		<view class="text-max-box">
+			<view>技术参数</view>
+			<view class="colorA" @click="lookText(2)">查看</view>
+		</view>
+		<view class="text-max-box">
+			<view>备注</view>
+			<view class="colorA" @click="lookText(3)">查看</view>
+		</view>
+		<view class="text-title-box">设备归属</view>
+		<view class="text-max-box">
+			<view>设备管理员</view>
+			<view>{{newData.adminDisplay?newData.adminDisplay:'-'}}</view>
+		</view>
+		<view class="text-max-box">
+			<view>管理部门</view>
+			<view>{{newData.manageDeptName?newData.manageDeptName:'-'}}</view>
+		</view>
+		<view class="text-max-box">
+			<view>存放位置</view>
+			<view>{{newData.location?newData.location:'-'}}</view>
+		</view>
+		<view class="text-title-box">厂家产地</view>
+		<view class="text-max-box">
+			<view>单位</view>
+			<view>{{newData.unit?newData.unit:'-'}}</view>
+		</view>
+		<view class="text-max-box">
+			<view>生产厂家</view>
+			<view>{{newData.manufacturer?newData.manufacturer:'-'}}</view>
+		</view>
+		<view class="text-max-box">
+			<view>产地</view>
+			<view>{{newData.originPlace?newData.originPlace:'-'}}</view>
+		</view>
+		<view class="bottom-button" @click="onShade()">登记使用信息</view>
+		<view class="shade-max-big-box" v-if="shadeType == 1||shadeType == 2||shadeType == 3||shadeType == 4">
+			<view class="shade-top-flex" @click="offShade()"></view>
+			<view class="shade-big-box">
+				<view class="shade-title-box" v-if="shadeType == 1||shadeType == 2||shadeType == 3">登记使用信息</view>
+				<view class="shade-title-box" v-if="shadeType == 4">{{shadeDataD.data1}}</view>
+				<!-- 登记 -->
+				<view class="shade-box" v-if="shadeType == 1">
+					<view class="shade-text-box">
+						<view>使用人</view>
+						<view>{{shadeDataA.data1}}</view>
+					</view>
+					<view class="shade-text-box">
+						<view>使用类型</view>
+						<!-- <view>{{shadeDataA.data2}}</view> -->
+						<picker @change="pickerChange" :value="pickerIndex" :range="pickerList">
+							<view style="width:400rpx;text-align:right;">{{pickerList[pickerIndex]}}</view>
+						</picker>
+					</view>
+					<view class="shade-text-box">
+						<view>开机时间</view>
+						<view>{{timestampToStr(shadeDataA.data3)}}</view>
+					</view>
+					<view class="shade-text-box">
+						<view>关机时间</view>
+						<view>
+							<uni-datetime-picker 
+							:hide-second="true"
+							:start="timeApplication" @change="timePickerChange()" 
+							return-type="timestamp" v-model="shadeDataA.data4">{{timestampToStr(shadeDataA.data4)}}</uni-datetime-picker>
+						</view>
+					</view>
+					
+					<view class="shade-text-box">
+						<view>使用总时长</view>
+						<view>{{shadeDataA.data5}}</view>
+					</view>
+					<view class="shade-button" @click="submitButton(1)">登记使用</view>
+				</view>
+				<!-- 结束 -->
+				<view class="shade-box" v-if="shadeType == 2">
+					<view class="shade-text-box">
+						<view>使用人</view>
+						<view>{{shadeDataB.data1}}</view>
+					</view>
+					<view class="shade-text-box">
+						<view>使用类型</view>
+						<view>{{shadeDataB.data2}}</view>
+					</view>
+					<view class="shade-text-box">
+						<view>开机时间</view>
+						<view>{{timestampToStr(shadeDataB.data3)}}</view>
+					</view>
+					<view class="shade-text-box">
+						<view>关机时间</view>
+						<view>{{timestampToStr(shadeDataB.data4)}}</view>
+					</view>
+					<view class="shade-text-box">
+						<view>使用总时长</view>
+						<view>{{shadeDataB.data5}}</view>
+					</view>
+					<view class="shade-button" @click="submitButton(2)">结束使用</view>
+				</view>
+				<!-- 查看 -->
+				<view class="shade-box-c" v-if="shadeType == 3">
+					<view class="shade-text-title">当前设备已被【{{shadeDataC.data1}}】登记使用,</view>
+					<view class="shade-text-title">开机时间:{{shadeDataC.data2}}</view>
+					<!-- <view class="shade-text-title">如有疑问请联系:{{shadeDataC.data3}}</view> -->
+				</view>
+				<view class="shade-box" v-if="shadeType == 4">
+					<view class="text-box" style="max-height: 500rpx;overflow-y: scroll;">
+						{{shadeDataD.data2}}
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		mpDeviceDetail,mpDeviceUsageStart,mpDeviceUsageEnd
+	} from '@/pages_equipmentUtilization/api/index.js'
+	import { config } from '@/api/request/config.js'
+	export default {
+		props: {
+			equipmentId: {},
+		},
+		data() {
+			return {
+				shadeType:0,
+				baseUrl:config.base_url,
+				userId: uni.getStorageSync('userId'),
+				newData:{
+					imageUrls:[],
+					categoryName:'',
+					deviceCode:'',
+					deviceName:'',
+					deviceStatusName:'',
+					deviceType:'',
+					brand:'',
+					price:'',
+					adminDisplay:'',
+					manageDeptName:'',
+					location:'',
+					unit:'',
+					manufacturer:'',
+					originPlace:'',
+					purpose:'',
+					techParams:'',
+					remark:'',
+				},
+				shadeDataA:{},
+				shadeDataB:{
+					data1:'',
+					data2:'',
+					data3:'',
+					data4:'',
+					data5:'',
+				},
+				shadeDataC:{
+					data1:'',
+					data2:'',
+					data3:'',
+				},
+				shadeDataD:{
+					data1:'',
+					data2:'',
+				},
+				pickerList:['自用','对外服务'],
+				pickerIndex:0,
+				timeApplication:null,
+			}
+		},
+		mounted() {
+			this.mpDeviceDetail();
+		},
+		methods: {
+			pickerChange(val){
+				console.log('val',val.mp.detail.value);
+				this.$set(this,'pickerIndex',val.mp.detail.value);
+			},
+			//获取设备信息
+			async mpDeviceDetail() {
+				let self = this;
+				const {
+					data
+				} = await mpDeviceDetail({id:this.equipmentId});
+				if (data.code == 200) {
+					if(!data.data.imageUrls){
+						data.data.imageUrls = [];
+					}
+					this.$set(this,'newData',data.data);
+				}
+			},
+			lookText(type){
+				if(type == 1){
+					this.$set(this,'shadeDataD',{
+						data1:'设备用途',
+						data2:this.newData.purpose?this.newData.purpose:'未配置设备用途',
+					});
+				}else if(type == 2){
+					this.$set(this,'shadeDataD',{
+						data1:'技术参数',
+						data2:this.newData.techParams?this.newData.techParams:'未配置技术参数',
+					});
+				}else if(type == 3){
+					this.$set(this,'shadeDataD',{
+						data1:'备注',
+						data2:this.newData.remark?this.newData.remark:'未配置备注',
+					});
+				}
+				this.$set(this,'shadeType',4);
+			},
+			onShade(){
+				//判断 登记时1 退订2 已占用3
+				if(this.newData.deviceStatus == 1){
+					//维护
+					uni.showToast({
+						title: '设备维护中,如有疑问请联系管理员.',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}else if(this.newData.deviceStatus == 2){
+					//报废
+					uni.showToast({
+						title: '设备已报废,如有疑问请联系管理员.',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(this.newData.runStatus == 0){
+					//无人使用
+					const now = new Date();
+					now.setSeconds(0, 0);  // 将秒和毫秒都设为0
+					const timestamp = now.getTime()
+					this.$set(this,'timeApplication',timestamp);
+					this.$set(this,'pickerIndex',0);
+					this.$set(this,'shadeDataA',{
+						data1:uni.getStorageSync('user-name'),
+						data2:null,
+						data3:this.timeApplication,
+						data4:this.timeApplication,
+						data5:'0天0小时0分',
+					});
+					this.$set(this,'shadeType',1);
+				}else if(this.newData.runStatus == 1 && this.newData.currentUserId != this.userId){
+					//别人使用中
+					this.$set(this,'shadeDataC',{
+						data1:this.newData.currentUserName,
+						data2:this.newData.currentStartTime,
+						// data3:this.toTimestamp(this.newData.currentStartTime),
+					});
+					this.$set(this,'shadeType',3);
+				}else if(this.newData.runStatus == 1 && this.newData.currentUserId == this.userId){
+					//自己使用中
+					const now = new Date();
+					now.setSeconds(0, 0);  // 将秒和毫秒都设为0
+					const timestamp = now.getTime()
+					this.$set(this,'timeApplication',timestamp);
+					this.$set(this,'shadeDataB',{
+						data1:this.newData.currentUserName,
+						data2:this.newData.usageType == 0?'自用':'对外服务',
+						data3:this.toTimestamp(this.newData.currentStartTime),
+						data4:this.timeApplication,
+						data5:this.formatTimeDiff(this.toTimestamp(this.newData.currentStartTime),this.timeApplication),
+					});
+					this.$set(this,'shadeType',2);
+				}
+			},
+			offShade(){
+				this.$set(this,'shadeType',0);
+			},
+			//时间戳格式化
+			timestampToStr(timestamp) {
+			  const date = new Date(timestamp); // 传入毫秒级时间戳
+			  const year = date.getFullYear();
+			  const month = String(date.getMonth() + 1).padStart(2, '0');  // 月份从0开始,需+1
+			  const day = String(date.getDate()).padStart(2, '0');
+			  const hours = String(date.getHours()).padStart(2, '0');
+			  const minutes = String(date.getMinutes()).padStart(2, '0');
+			  // 注意:这里没有拼接秒
+			  return `${year}-${month}-${day} ${hours}:${minutes}`;
+			},
+			//时间格式转时间戳
+			toTimestamp(dateStr, isUTC = false) {
+				// 假设 dateStr 格式为 "YYYY-MM-DD HH:mm:ss"
+				const [datePart, timePart] = dateStr.split(' ');
+				const [year, month, day] = datePart.split('-').map(Number);
+				const [hour, minute, second] = timePart.split(':').map(Number);
+				if (isUTC) {
+						// 返回 UTC 时间戳
+						return Date.UTC(year, month - 1, day, hour, minute, second);
+				} else {
+						// 返回本地时间戳
+						return new Date(year, month - 1, day, hour, minute, second).getTime();
+				}
+			},
+			//开始时间-结束时间-相差时间
+			formatTimeDiff(timestamp1, timestamp2) {
+			  // 计算绝对差值(毫秒)
+			  const diffMs = Math.abs(timestamp1 - timestamp2);
+			  // 转换为总分钟数(向下取整)
+			  const totalMinutes = Math.floor(diffMs / (1000 * 60));
+			  // 计算天、小时、分钟
+			  const days = Math.floor(totalMinutes / (60 * 24));
+			  const remainingMinutes = totalMinutes % (60 * 24);
+			  const hours = Math.floor(remainingMinutes / 60);
+			  const minutes = remainingMinutes % 60;
+			  // 构建输出字符串
+			  const parts = [];
+			  if (days > 0) parts.push(days + '天');
+			  if (hours > 0) parts.push(hours + '小时');
+			  if (minutes > 0 || parts.length === 0) parts.push(minutes + '分'); // 确保至少显示“0分”
+			  return parts.join('');
+			},
+			//登记-结束时间选择
+			timePickerChange(){
+				if(this.shadeDataA.data4>this.shadeDataA.data3){
+					this.$set(this.shadeDataA,'data5',this.formatTimeDiff(this.shadeDataA.data3,this.shadeDataA.data4));
+				}else{
+					uni.showToast({
+						title: '请检查关机时间',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}
+				
+			},
+			//确定按钮
+			submitButton(type){
+				let self = this;
+				if(type == 1){
+					if(this.shadeDataA.data4>this.shadeDataA.data3){
+						uni.showModal({
+							content: '确认提交?',
+							cancelColor: "#999",
+							confirmColor: "#0183FA",
+							success: function(res) {
+								if (res.confirm) {
+									self.mpDeviceUsageStart()
+								} else if (res.cancel) {}
+							}
+						});
+					}else{
+						uni.showToast({
+							title: '请检查关机时间',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+					}
+				}else if(type == 2){
+					uni.showModal({
+						content: '确认提交?',
+						cancelColor: "#999",
+						confirmColor: "#0183FA",
+						success: function(res) {
+							if (res.confirm) {
+								self.mpDeviceUsageEnd()
+							} else if (res.cancel) {}
+						}
+					});
+				}
+			},
+			//登记使用
+			async mpDeviceUsageStart() {
+				let self = this;
+				let obj = {
+					deviceId:this.equipmentId,
+					usageType:this.pickerList[this.pickerIndex]=='自用'?0:1,
+					startTime:this.timestampToStr(this.shadeDataA.data3)+':00',
+					expectedEndTime:this.timestampToStr(this.shadeDataA.data4)+':00',
+				}
+				const {
+					data
+				} = await mpDeviceUsageStart(obj);
+				if (data.code == 200) {
+					this.$set(this,'shadeType',0);
+					this.mpDeviceDetail();
+					uni.showToast({
+						mask: true,
+						icon: "none",
+						position: "center",
+						title: data.message,
+						duration: 2000
+					});
+				}
+			},
+			//结束使用
+			async mpDeviceUsageEnd() {
+				let self = this;
+				let obj = {
+					deviceId:this.newData.currentUsageId,
+				}
+				const {
+					data
+				} = await mpDeviceUsageEnd(obj);
+				if (data.code == 200) {
+					this.$set(this,'shadeType',0);
+					this.mpDeviceDetail();
+					uni.showToast({
+						mask: true,
+						icon: "none",
+						position: "center",
+						title: data.message,
+						duration: 2000
+					});
+				}
+			},
+		},
+	}
+</script>
+
+<style lang="stylus" scoped>
+	.equipmentInformationInfoPage {
+		height: 100%;
+		flex:1;
+		display:flex;
+		flex-direction:column;
+		background-color: #fff;
+		overflow: scroll;
+		.info-max-box{
+			display: flex;
+			.left-img{
+				width:200rpx;
+				height:200rpx;
+				display: inline-block;
+				border:1rpx solid #dedede;
+				margin:40rpx 20rpx 20rpx 20rpx;
+			}
+			.right-box{
+				flex:1;
+				margin:40rpx 20rpx 20rpx 0;
+				view{
+					width: 480rpx;
+					display:block;
+					overflow:hidden;
+					text-overflow:ellipsis;
+					white-space:nowrap;
+					margin-bottom:14rpx;
+				}
+			}
+		}
+		.text-max-box{
+			display: flex;
+			border-bottom: 1rpx solid #f2f2f2;
+			line-height:80rpx;
+			padding: 0 40rpx;
+			view:nth-child(1){
+				flex:1;
+			}
+			view:nth-child(2){
+				
+			}
+			.colorA{
+				color:#0183FA;
+			}
+		}
+		.text-title-box{
+			line-height:80rpx;
+			background-color: #f2f2f2;
+			padding: 0 30rpx;
+		}
+		.bottom-button{
+			width:300rpx;
+			line-height:80rpx;
+			text-align: center;
+			margin:60rpx auto;
+			color:#fff;
+			background-color: #0183FA;
+			border-radius:6rpx;
+		}
+		.shade-max-big-box{
+			position: absolute;
+			top:0;
+			left:0;
+			width:100%;
+			height:100%;
+			background-color: rgba(0,0,0,0.3)
+			display: flex;
+			flex-direction: column;
+			.shade-top-flex{
+				flex:1;
+			}
+			.shade-big-box{
+				background-color: #fff;
+				.shade-title-box{
+					font-weight:900;
+					padding-right:20rpx;
+					width:300rpx;
+					border-bottom-right-radius: 40rpx
+					background-color: #0183FA;
+					color:#fff;
+					text-align: center;
+					line-height:60rpx;
+				}
+				.shade-box{
+					padding:20rpx 0 100rpx;
+					.shade-text-box{
+						display: flex;
+						border-bottom:1rpx solid #f2f2f2;
+						line-height:80rpx;
+						padding:0 30rpx;
+						view:nth-child(1){
+							flex:1;
+						}
+						view:nth-child(1){
+							flex:3;
+						}
+					}
+					.shade-button{
+						width:300rpx;
+						line-height:80rpx;
+						text-align: center;
+						background-color: #0183FA;
+						border-radius:8rpx;
+						color:#fff;
+						margin:40rpx auto 0;
+					}
+					.text-box{
+						padding:60rpx 40rpx 200rpx;
+					}
+				}
+				.shade-box-c{
+					padding:120rpx 0 200rpx;
+					.shade-text-title{
+						text-align-last: center;
+						line-height: 60rpx;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 228 - 0
pages_equipmentUtilization/views/equipmentInformation/listPage.vue

@@ -0,0 +1,228 @@
+<template>
+	<view class="equipmentInformationListPage">
+		<view class="top-bix-box">
+			<view class="top-box">
+				<view class="left-time-box">
+					<uni-datetime-picker v-model="range" type="daterange"  :clearIcon="false"/>
+				</view>
+				<view class="right-button-box" @click="queryButton()">查询</view>
+			</view>
+			<view class="top-box" style="margin-top:10rpx;">
+				<view class="left-time-box">
+					<input class="input-text" type="text" v-model="text" placeholder="设备名称">
+				</view>
+				<view class="right-button-box-2" @click="resetButton()">重置</view>
+			</view>
+		</view>
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="list-max-big-box">
+			<img class="null-img" v-if="!dataList[0]" :src="imagesUrl('commonality/null-data-1.png')">
+			<view class="list-for-max-big-box" v-for="(item,index) in dataList" :key="index">
+				<view class="top-title-box">
+					<view>{{item.deviceName}}</view>
+					<view>{{item.usageTypeName}}</view>
+				</view>
+				<view class="text-p">{{item.location}}</view>
+				<view class="text-p">使用时间:{{item.startTime}} 至 {{item.actualEndTime?item.actualEndTime:'未结束'}}</view>
+				<view class="bottom-title-box">
+					<view>设备编号:{{item.deviceCode}}</view>
+					<view>使用人:{{item.userName}}</view>
+				</view>
+			</view>
+			<view class="get-data-null-p" v-if="getDataType">- 没有更多数据 -</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	import {
+		mpDeviceUsageList,
+	} from '@/pages_equipmentUtilization/api/index.js'
+	export default {
+		data() {
+			return {
+				getDataType:false,
+				range:[],
+				text:'',
+				// 查询参数
+				queryParams: {
+					page: 1,
+					pageSize: 10,
+				},
+				dataList:[],
+				total:0,
+			}
+		},
+		onLoad(option) {
+			
+		},
+		onShow() {
+			
+		},
+		mounted() {
+			this.getList()
+		},
+		methods: {
+			queryButton(){
+				this.getList()
+			},
+			resetButton(){
+				this.$set(this,'range',[]);
+				this.$set(this,'text','');
+				this.$set(this,'queryParams',{
+					page: 1,
+					pageSize: 10,
+				});
+				this.$set(this,'dataList',[]);
+				this.$set(this,'total',0);
+				this.getList()
+			},
+			//滚动加载事件
+			scrollGet() {
+				let self = this;
+				if (self.total / self.queryParams.pageSize <= self.queryParams.page) {
+					this.$set(this, 'getDataType', true);
+				} else {
+					this.queryParams.page += 1;
+					this.$nextTick(() => {
+						this.getList();
+					})
+				}
+			},
+			//获取数据列表
+			async getList() {
+				let self = this;
+				let obj = JSON.parse(JSON.stringify(this.queryParams));
+				obj.startTime = this.range[0] ? this.range[0] +'T00:00:00' : '';
+				obj.endTime = this.range[0] ? this.range[1] +'T23:59:59' : '';
+				obj.deviceName = this.text ? this.text : '';
+				const {
+					data
+				} = await mpDeviceUsageList(obj);
+				if (data.code == 200) {
+					if(self.queryParams.page == 1){
+						this.dataList = data.data.records;
+						this.total = data.data.total;
+						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+							this.$set(this, 'getDataType', true);
+						}
+					}else{
+						this.dataList = [...this.dataList, ...data.data.records]
+						this.total = data.data.total;
+						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+							this.$set(this, 'getDataType', true);
+						}
+					}
+				}
+			},
+		},
+	}
+</script>
+
+<style lang="stylus" scoped>
+	.equipmentInformationListPage {
+		height: 100%;
+		flex:1;
+		display:flex;
+		flex-direction:column;
+		.top-bix-box{
+			height:160rpx;
+			padding:20rpx 20rpx;
+			background-color: #fff;
+			.top-box{
+				display: flex;
+				.left-time-box{
+					width:600rpx;
+					.input-text{
+						padding-left:30rpx;
+						height:70rpx;
+						line-height:70rpx;
+						border-radius:6rpx;
+						color:#333;
+						border:1px solid #e5e5e5;
+					}
+				}
+				.right-button-box{
+					margin-left:20rpx;
+					width:140rpx;
+					height:70rpx;
+					line-height:70rpx;
+					text-align: center;
+					border-radius:6rpx;
+					color:#fff;
+					background-color: #0183FA;
+					border:1px solid #0183FA;
+				}
+				.right-button-box-2{
+					margin-left:20rpx;
+					width:140rpx;
+					height:70rpx;
+					line-height:70rpx;
+					text-align: center;
+					border-radius:6rpx;
+					color:#999;
+					border:1px solid #e5e5e5;
+				}
+			}
+		}
+		.list-max-big-box{
+			flex:1;
+			display:flex;
+			flex-direction:column;
+			overflow: scroll;
+			padding-bottom:80rpx;
+			
+			.null-img {
+				display block;
+				width: 276rpx;
+				height: 321rpx;
+				position absolute;
+				top: 200rpx;
+				left: 274rpx;
+			}
+			.get-data-null-p {
+				margin-top:20rpx;
+				text-align: center;
+				line-height: 40rpx;
+				padding-bottom: 40px;
+				color: #999;
+			}
+			.list-for-max-big-box{
+				margin:20rpx 0 0;
+				padding:20rpx;
+				background-color: #fff;
+				.top-title-box{
+					display:flex;
+					line-height:60rpx;
+					view{
+						flex:1;
+					}
+					view:nth-child(1){
+						color:#333;
+					}
+					view:nth-child(2){
+						text-align: right;
+						color:#888;
+					}
+				}
+				.text-p{
+					color:#888;
+					line-height:60rpx;
+				}
+				.bottom-title-box{
+					display:flex;
+					line-height:60rpx;
+					view{
+						flex:1;
+					}
+					view:nth-child(1){
+						color:#888;
+					}
+					view:nth-child(2){
+						text-align: right;
+						color:#888;
+					}
+				}
+			}
+		}
+	}
+</style>

+ 1 - 1
pages_manage/views/accessControl/empowerOpen.vue

@@ -12,7 +12,7 @@
 				</view>
 			</view>
 			<scroll-view scroll-y @scrolltolower="scrollGet" class="list">
-				<view class="list-li" v-for="(item,index) in dataList">
+				<view class="list-li" v-for="(item,index) in dataList" :key="index">
 					<view class="list-li-l">{{item.subName}}{{item.roomNum?'('+item.roomNum+')':''}}</view>
 					<view class="list-li-r" @click="authorizedClick(item)">
 						<view class="null-p"></view>

+ 1 - 1
pages_manage/views/accessControl/remoteOpen.vue

@@ -10,7 +10,7 @@
 			</view>
 		</view>
 		<scroll-view scroll-y @scrolltolower="scrollGet" class="list">
-			<view class="list-li" v-for="(item,index) in dataList">
+			<view class="list-li" v-for="(item,index) in dataList" :key="index">
 				<view class="list-li-l">{{item.subName}}{{item.roomNum?'('+item.roomNum+')':''}}</view>
 				<view class="list-li-r" @click="openButton(item)">
 					<view class="null-p"></view>

+ 53 - 4
pages_manage/views/accessQualification/accessQualification.vue

@@ -36,7 +36,10 @@
 			</view>
 			<view class="get-null-box" v-if="getDataType">暂无更多数据</view>
 		</scroll-view>
-		<view class="tip">请联系管理员开通<text>白名单</text>来获取实验室准入资格</view>
+		<view class="bottom-button-max-box">
+			<view @click="goPage(1)">我的准入</view>
+			<view @click="goPage(2)">准入申请</view>
+		</view>
 	</view>
 </template>
 <script>
@@ -77,7 +80,7 @@
 				},
 				total: 0,
 				dataList: [],
-				getDataType: false,
+				getDataType: null,
 
 			}
 		},
@@ -104,6 +107,18 @@
 				this.dataList = [];
 				this.queryParams.page = 1;
 			},
+			//去准入列表/申请
+			goPage(type){
+				if(type == 1){
+					uni.navigateTo({
+						url: '/pages_student/views/accessApplication/safeAccess'
+					})
+				}else if(type == 2){
+					uni.navigateTo({
+						url: '/pages_student/views/accessApplication/newApplication'
+					})
+				}
+			},
 			//去详情页
 			goPageInfo(item) {
 				uni.navigateTo({
@@ -165,8 +180,19 @@
 							}
 						})
 					}
-					this.dataList = [...this.dataList, ...newArr]
-					this.total = data.data.total;
+					if (self.queryParams.page == 1) {
+						this.dataList = newArr;
+						this.total = data.data.total;
+						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+							this.$set(this, 'getDataType', true);
+						}
+					} else {
+						this.dataList = [...this.dataList, ...newArr]
+						this.total = data.data.total;
+						if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
+							this.$set(this, 'getDataType', true);
+						}
+					}
 				}
 			},
 
@@ -425,5 +451,28 @@
 				color: red;
 			}
 		}
+		.bottom-button-max-box{
+			padding-top: 30rpx;
+			display: flex;
+			view{
+				text-align: center;
+				line-height:80rpx;
+			}
+			view:nth-child(1){
+				width:220rpx;
+				margin:0 40rpx 40rpx 80rpx;
+				border:1rpx solid #0183fa;
+				color:#0183fa;
+				border-radius:10rpx;
+			}
+			view:nth-child(2){
+				flex:1;
+				margin:0 80rpx 40rpx 0;
+				border:1rpx solid #0183fa;
+				background-color: #0183fa;
+				color:#fff;
+				border-radius:16rpx;
+			}
+		}
 	}
 </style>

+ 55 - 28
pages_manage/views/accessQualification/accessQualificationInfo.vue

@@ -1,6 +1,6 @@
 <!-- 准入资格申请详情 -->
 <template>
-	<view id="accessQualificationInfo">
+	<view id="accessQualificationInfo" v-show="showType">
 		<view class="user-info-box">
 			<view class="user-info-box-min">
 				<view>实验室:</view>
@@ -21,7 +21,7 @@
 		</view>
 		<view class="user-info-box" style="margin-bottom:20rpx;">
 			<view class="user-info-box_title">
-				<view style="color: red;">*</view>身份信息:(关联学生信息材料)
+				<view style="color: red;">*</view>身份信息:
 			</view>
 			<view class="user-info-box-min">
 				<view>申请人:</view>
@@ -49,11 +49,6 @@
 			</view>
 		</view>
 		<view v-for="(item,index) in newData.listTemp" :key="index" style="overflow: hidden;">
-			<!-- <view class="img-box" v-if="item.materialType==2&&item.relationType==2">
-				<view class="img-title">安全考试证书</view>
-				<img v-if="newData.listcert[0]" class="item-img-box" :src="newData.listcert[0].cert_url">
-				<view v-if="!newData.listcert[0]" style="margin-left:40px;color:#999;font-size:14px;">暂无证书</view>
-			</view> -->
 			<view class="word-box" v-if="item.materialType==1">
 				<view class="word-box-title">{{item.materialName}}</view>
 				<view class="word-box-min" v-for="(minItem,minIndex) in item.upList" :key="minIndex"
@@ -89,25 +84,11 @@
 				pageType: false,
 				//获取数据
 				subjectData: {},
-				newData: {
-					labSecurityApply:{
-						subName:'',
-						userName:'',
-						validBeginTime:'',
-						applyCause:'',
-					},
-					sysUser:{
-						userName:'',
-						mobile:'',
-						account:'',
-						gradeName:'',
-						tutorUserName:'',
-					},
-					listTemp:[],
-				},
+				newData: {},
 				itemData: {},
 				type: 0,
 				applyId: '',
+				showType:false,
 			}
 		},
 		onLoad(option) {
@@ -132,7 +113,7 @@
 			}
 		},
 		onShow() {
-
+			
 		},
 		methods: {
 			//审核按钮
@@ -165,9 +146,27 @@
 						mask: true,
 						duration: 2000
 					});
-					setTimeout(function() {
-						uni.navigateBack();
-					}, 2000);
+					let homeType = false;
+					let list = getCurrentPages();
+					if(list[1]){
+						homeType = true;
+					}
+					// for(let i=0;i<list.length;i++){
+					// 	if(list[i].route.indexOf('home') != -1){
+					// 		homeType = true;
+					// 	}
+					// }
+					if(homeType){
+						setTimeout(function() {
+							uni.navigateBack();
+						}, 2000);
+					}else{
+						setTimeout(function() {
+							uni.reLaunch({
+								url: '/pages_manage/views/accessQualification/accessQualification',
+							});
+						}, 2000);
+					}
 				}
 
 			},
@@ -266,6 +265,34 @@
 				})
 				if (data.code == 200) {
 					let self = this;
+					
+					//判断链接跳转逻辑
+					let homeType = false;
+					let list = getCurrentPages();
+					if(list[1]){
+						homeType = true;
+					}
+					// for(let i=0;i<list.length;i++){
+					// 	if(list[i].route.indexOf('home') != -1){
+					// 		homeType = true;
+					// 	}
+					// }
+					if(!homeType){
+						if(data.data.labSecurityApply.auditStatus != 0){
+							uni.showToast({
+								title: '该申请已审核!',
+								icon: "none",
+								mask: true,
+								duration: 2000
+							});
+							setTimeout(function() {
+								uni.reLaunch({
+									url: '/pages_manage/views/accessQualification/accessQualification',
+								});
+							}, 2000);
+							return
+						}
+					}
 					let dataList = [];
 					for (let i = 0; i < data.data.listTemp.length; i++) {
 						if (data.data.listTemp[i].materialType == 2 && data.data.listTemp[i].materialType == 2) {
@@ -320,7 +347,7 @@
 						}
 					}
 					this.$set(this, 'newData', data.data)
-					console.log(this.newData)
+					this.$set(this, 'showType', true)
 				}
 
 			},

+ 23 - 6
pages_manage/views/accessQualification/approve.vue

@@ -9,6 +9,9 @@
 
 <script>
 	import {
+		laboratoryApply
+	} from '@/api/apiDemo/index.js'
+	import {
 		laboratoryAppletEditApp
 	} from '@/pages_manage/api/index.js'
 	export default {
@@ -80,13 +83,27 @@
 						mask: true,
 						duration: 2000
 					});
-					setTimeout(function() {
-						uni.navigateBack({
-							delta: 2
-						});
-					}, 2000);
+					let homeType = false;
+					let list = getCurrentPages();
+					for(let i=0;i<list.length;i++){
+						if(list[i].route.indexOf('home') != -1){
+							homeType = true;
+						}
+					}
+					if(homeType){
+						setTimeout(function() {
+							uni.navigateBack({
+								delta: 2
+							});
+						}, 2000);
+					}else{
+						setTimeout(function() {
+							uni.reLaunch({
+								url: '/pages_manage/views/accessQualification/accessQualification',
+							});
+						}, 2000);
+					}
 				}
-
 			},
 			checkItem(item) {
 				item.type = !item.type;

+ 1 - 1
pages_manage/views/laboratory/safetyCardScan.vue

@@ -113,7 +113,7 @@
 					<view>请选择实验室</view>
 				</view>
 				<view class="batch">
-					<view class="batch-li" @click="batchClickTow(item)" v-for="(item,index) in securityCheckList">
+					<view class="batch-li" @click="batchClickTow(item)" v-for="(item,index) in securityCheckList" :key="index">
 						<view class="batch-li-l">
 							<text>{{item.planTitle}}-{{item.checkName}}</text>
 							<text>{{item.subName}}{{item.roomNum?'('+item.roomNum+')':''}}</text>

+ 2 - 2
pages_student/views/accessApplication/accessApplication.vue

@@ -24,8 +24,8 @@
 	import {
 		studentinfoFacemy,
 		subjectMaterialList,
-		accessReview,
-	} from '@/pages_student/api/demoIndex.js'
+		accessReview
+	} from '@/api/apiDemo/index.js'
 	export default {
 		data() {
 			return {

+ 2 - 2
pages_student/views/accessApplication/applicationDetails.vue

@@ -18,7 +18,7 @@
 		</view>
 		<view class="user-info-box">
 			<view class="user-info-box_title">
-				<view style="color: red;">*</view>身份信息:(关联学生信息材料)
+				<view style="color: red;">*</view>身份信息:
 			</view>
 			<view class="user-info-box-min">
 				<view>申请人:</view>
@@ -73,7 +73,7 @@
 <script>
 	import {
 		getDetails
-	} from '@/pages_student/api/demoIndex.js'
+	} from '@/api/apiDemo/index.js'
 	import {
 		config
 	} from '@/api/request/config.js'

+ 2 - 2
pages_student/views/accessApplication/chooseALaboratory.vue

@@ -38,8 +38,8 @@
 		departmentsList,
 		buildingList,
 		mySecuritySubjectList,
-		subjectMaterialList,
-	} from '@/pages_student/api/demoIndex.js'
+		subjectMaterialList
+	} from '@/api/apiDemo/index.js'
 	export default {
 		data() {
 			return {

Разлика између датотеке није приказан због своје велике величине
+ 140 - 125
pages_student/views/accessApplication/newApplication.vue


+ 2 - 3
pages_student/views/accessApplication/safeAccess.vue

@@ -19,9 +19,8 @@
 			</view>
 			<img v-if="!dataList[0]" :src="imagesUrl('commonality/chemicalsInfoNull.png')" style="width:300rpx;height:300rpx;margin:200rpx auto 0rpx;display: block;">
 			<view v-if="!dataList[0]" class="get-null-box">暂无数据</view>
-			<view class="get-null-box" v-if="getData.nullDataType">暂无更多数据</view>
 		</scroll-view>
-		<view class="bottom-button-box" @click="goChooseALaboratory">准入申请</view>
+		<view class="bottom-button-box" @click="goChooseALaboratory" v-if="userType == 2">准入申请</view>
 	</view>
 </template>
 
@@ -42,7 +41,7 @@
 				},
 				total: 0,
 				dataList: [],
-				getData:{},
+				userType:uni.getStorageSync('userType'),
 			}
 		},
 		onLoad() {

+ 19 - 8
utils/index.js

@@ -35,17 +35,28 @@ export function itoOrVideoLimits(subAdminId) {
   let userInfo = uni.getStorageSync('user');
   let schoolId = config.schoolId;
   let collegeId = config.collegeId;
-  if(userInfo.position == null){
-    //如果是管理员(系统用户)
+  // if(userInfo.position == null){
+  //   //如果是管理员(系统用户)
+  //   return true
+  // }else if(userInfo.position == schoolId || userInfo.position == collegeId){
+  //   //如果是校级管理员/院级管理员
+  //   return true
+  // }else if(userInfo.userId == subAdminId){
+  //   //如果当前用户userId 与 管理员ID相等
+  //   return true
+  // }else{
+  //   return false
+  // }
+	if(userInfo.position == null){
+		//如果是管理员(系统用户)
     return true
-  }else if(userInfo.position == schoolId || userInfo.position == collegeId){
-    //如果是校级管理员/院级管理员
+	}else if(userInfo.position == schoolId || userInfo.position == collegeId){
+		//如果是校级管理员/院级管理员
     return true
-  }else if(userInfo.userId == subAdminId){
-    //如果当前用户userId 与 管理员ID相等
+  }else if(uni.getStorageSync('subAdmin') == 1){
     return true
-  }else{
+	}else{
     return false
-  }
+	}
 }
 

+ 10 - 1
utils/scanTheCode.js

@@ -44,7 +44,7 @@ function scanTheCodeDataTreating(path,result){
 		})
 		if (codeData.type == 1 || codeData.type == 2 || codeData.type == 3 || codeData.type == 7 ||
 			codeData.type == 8 || codeData.type == 10 ||
-			codeData.type == 11 || codeData.type == 12 || codeData.type == 13 || codeData.type == 14) {
+			codeData.type == 11 || codeData.type == 12 || codeData.type == 13 || codeData.type == 14 || codeData.type == 15) {
 			// 基础扫码逻辑
 			goCodePage(path,result);
 		}else if(codeData.type == 5){
@@ -56,9 +56,18 @@ function scanTheCodeDataTreating(path,result){
 		}else if(codeData.type == 9){
 			chemicalAppletSelectStockInfoF(path,codeData.code);
 		}
+	}else if (result.indexOf('mid') != -1 &&
+		result.indexOf('sid') != -1 &&
+		result.indexOf('pid') != -1 &&
+		result.indexOf('pri') != -1) {
+		uni.navigateTo({
+			url: '/pages_basics/views/integralManage/codeSuccess?q=' +
+				encodeURIComponent(JSON.stringify(result))
+		});
 	}else{
 		chemicalAppletSelectStockInfoF(path,result);
 	}
+	
 }
 
 //通用二维码页面