From 23db8ee6063226480f964ed1de3ece9310e221a2 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期三, 21 八月 2024 09:37:43 +0800
Subject: [PATCH] 提交

---
 pages/tabBar/firstPage/firstPage.vue |  805 +++++++++++++-----------
 pages.json                           |   66 -
 static/sell.png                      |    0 
 common/constant.js                   |    8 
 static/companyLogo.png               |    0 
 /dev/null                            |    0 
 pages/tabBar/count/count.vue         |  108 +-
 pages/tabBar/current/current.vue     |  335 +++++-----
 pages/tabBar/count/productDetail.vue |  270 ++++++++
 static/my-bg.jpg                     |    0 
 static/delete.png                    |    0 
 manifest.json                        |    8 
 static/return.png                    |    0 
 static/check.png                     |    0 
 pages/tabBar/tabBarIndex.vue         |    9 
 static/take.png                      |    0 
 api/index.js                         |   77 ++
 pages/tabBar/count/countDetail.vue   |  207 +++---
 static/loginTop1.png                 |    0 
 pages/index/index.vue                |   12 
 pages/tabBar/utils/tabBar.js         |   26 
 21 files changed, 1,151 insertions(+), 780 deletions(-)

diff --git a/api/examine.js b/api/examine.js
deleted file mode 100644
index ec11ff6..0000000
--- a/api/examine.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import {service} from '../common/request.js';
- 
-export function getExamine(data) {
-  return service({
-		url: '/app/warninfo/review/Page',
-		method: 'POST',
-		data
-	})
-}
-
-export function submit(data) {
-  return service({
-		url: '/app/warninfo/review/submit',
-		method: 'POST',
-		data
-	})
-}
\ No newline at end of file
diff --git a/api/index.js b/api/index.js
index 7789e7f..0a1a5a0 100644
--- a/api/index.js
+++ b/api/index.js
@@ -31,26 +31,91 @@
 	})
 }
 
-export function getSwiperList(data) {
+export function getHazmatByCode(data) {
 	return service({
-		url: '/api/app/carousel/list',
+		url: '/api/app/hazmat/getHazmatByCode',
 		method: 'GET',
 		data
 	})
 }
 
-export function getClassList(data) {
+export function getHazmatFlowByUser(data) {
 	return service({
-		url: '/api/app/phase-student/list',
+		url: '/api/app/hazmat-flow/getHazmatFlowByUser',
 		method: 'GET',
 		data
 	})
 }
 
-export function getExamList(data) {
+export function getProductFlowByUser(data) {
 	return service({
-		url: '/api/app/paper-student/list',
+		url: '/api/app/product-flow/getProductFlowByUser',
 		method: 'GET',
 		data
 	})
+}
+
+export function getHazmatFlowByCode(data) {
+	return service({
+		url: '/api/app/hazmat-flow/getHazmatFlowByCode',
+		method: 'GET',
+		data
+	})
+}
+
+// 领用
+export function postHazmatUse(hazmatId) {
+	return service({
+		url: `/api/app/hazmat/hazmatUse/${hazmatId}`,
+		method: 'POST',
+	})
+}
+
+// 归还
+export function postHazmatReturn(data) {
+	return service({
+		url: '/api/app/hazmat/hazmatReturn',
+		method: 'POST',
+		data
+	})
+}
+
+// 用尽登记
+export function postHazmatUsed(hazmatId) {
+	return service({
+		url: `/api/app/hazmat/hazmatUsed/${hazmatId}`,
+		method: 'POST',
+	})
+}
+
+// 原材料二维码作废
+export function postHazmatDiscard(hazmatId) {
+	return service({
+		url: `/api/app/hazmat/hazmatDiscard/${hazmatId}`,
+		method: 'POST',
+	})
+}
+
+export function getProductByCode(data) {
+	return service({
+		url: '/api/app/product/getProductByCode',
+		method: 'GET',
+		data
+	})
+}
+
+// 成品销售
+export function postProductDiscard(productId) {
+	return service({
+		url: `/api/app/product/productDiscard/${productId}`,
+		method: 'POST',
+	})
+}
+
+// 成品二维码作废
+export function postProductSold(productId) {
+	return service({
+		url: `/api/app/product/productSold/${productId}`,
+		method: 'POST',
+	})
 }
\ No newline at end of file
diff --git a/api/information.js b/api/information.js
deleted file mode 100644
index 1ab35b3..0000000
--- a/api/information.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import {service} from '../common/request.js';
- 
-export function getInfo(data) {
-  return service({
-		url: '/app/warninfo/waitForPublish/Page',
-		method: 'POST',
-		data
-	})
-}
-
-export function publishInfo(data) {
-  return service({
-		url: '/app/warninfo/publishById',
-		method: 'GET',
-		data
-	})
-}
\ No newline at end of file
diff --git a/api/notice.js b/api/notice.js
deleted file mode 100644
index 3bcdf38..0000000
--- a/api/notice.js
+++ /dev/null
@@ -1,64 +0,0 @@
-import {service} from '../common/request.js';
- 
-export function getNotice(data) {
-  return service({
-		url: '/app/warninfo/receive/Page',
-		method: 'POST',
-		data
-	})
-}
-export function confirm(data) {
-  return service({
-		url: '/app/warninfo/responseById',
-		method: 'GET',
-		data
-	})
-}
-
-export function update(data) {
-  return service({
-		url: '/app/warninfo/readById',
-		method: 'GET',
-		data
-	})
-}
-
-export function measureList(data) {
-  return service({
-		url: '/response/measure/page',
-		method: 'POST',
-		data
-	})
-}
-
-export function submitMeasures(data) {
-  return service({
-		url: '/app/warninfo/responseMeasure/submit',
-		method: 'POST',
-		data
-	})
-}
-
-export function getPublished(data) {
-  return service({
-		url: '/app/warninfo/published/Page',
-		method: 'POST',
-		data
-	})
-}
-
-export function getMeasureDetail(data) {
-  return service({
-		url: '/app/warninfo/responseMeasure/get',
-		method: 'POST',
-		data
-	})
-}
-
-export function getResponseDetail(data) {
-  return service({
-		url: '/app/warninfo/responses/page',
-		method: 'POST',
-		data
-	})
-}
\ No newline at end of file
diff --git a/api/response.js b/api/response.js
deleted file mode 100644
index 8b7d57a..0000000
--- a/api/response.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import {service} from '../common/request.js';
- 
-export function getResponse(data) {
-  return service({
-		url: '/app/warninfo/person/response',
-		method: 'POST',
-		data
-	})
-}
-
-export function getDetail(data) {
-  return service({
-		url: '/app/warninfo/detailsByWarnLogId',
-		method: 'GET',
-		data
-	})
-}
\ No newline at end of file
diff --git a/common/constant.js b/common/constant.js
index aeb496f..dc30993 100644
--- a/common/constant.js
+++ b/common/constant.js
@@ -1,15 +1,11 @@
 
 	let VUE_APP_BASE_URL= null;
 	if (process.env.NODE_ENV == 'development') {
-		VUE_APP_BASE_URL = 'http://192.168.2.15:8082'
-		// VUE_APP_BASE_URL = 'http://117.190.40.54:6622/edu'
+		VUE_APP_BASE_URL = 'http://192.168.2.15:8083'
 		// VUE_APP_BASE_URL = 'http://47.108.222.15:8000'
 	}else {
-		// VUE_APP_BASE_URL = 'http://192.168.2.15:8082'
-		// 正式环境
+		VUE_APP_BASE_URL = 'http://192.168.2.15:8083'
 		// VUE_APP_BASE_URL = 'http://47.108.222.15:8000'
-		// 国泰
-		VUE_APP_BASE_URL = 'http://117.190.40.54:6622/edu'
 	}
 
 export default VUE_APP_BASE_URL
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index a9bfff9..d1b8287 100644
--- a/manifest.json
+++ b/manifest.json
@@ -1,6 +1,6 @@
 {
-    "name" : "安全教育平台",
-    "appid" : "__UNI__9D7DB5D",
+    "name" : "危化品全生命周期管理平台",
+    "appid" : "__UNI__3D059D7",
     "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : 1,
@@ -21,7 +21,9 @@
         },
         "modules" : {
             "Push" : {},
-            "VideoPlayer" : {}
+            "VideoPlayer" : {},
+            "Barcode" : {},
+            "Camera" : {}
         },
         /* 模块配置 */
         "distribute" : {
diff --git a/pages.json b/pages.json
index bd37345..009bebd 100644
--- a/pages.json
+++ b/pages.json
@@ -25,18 +25,6 @@
 			}
 		},
 		{
-			"path" : "pages/tabBar/firstPage/exam",
-			"style" :
-			{
-				"navigationStyle": "custom",
-				"navigationBarTitleText": "",
-				"enablePullDownRefresh": false,
-				"app-plus": {
-					"scrollIndicator": "none"
-				}
-			}
-		},
-		{
 		    "path" : "pages/tabBar/count/count",
 		    "style" :                                                                                    
 		    {
@@ -66,6 +54,18 @@
 			}
 		},
 		{
+			"path" : "pages/tabBar/count/productDetail",
+			"style" :
+			{
+				"navigationStyle": "custom",
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": false,
+				"app-plus": {
+					"scrollIndicator": "none"
+				}
+			}
+		},
+		{
 		    "path" : "pages/tabBar/current/current",
 			"style" :
 			{
@@ -79,42 +79,6 @@
 						"color": "#000000",
 						"style": "circle"
 					}
-				}
-			}
-		},
-		{
-			"path" : "pages/tabBar/current/detail",
-			"style" :
-			{
-				"navigationStyle": "custom",
-				"navigationBarTitleText": "",
-				"enablePullDownRefresh": false,
-				"app-plus": {
-					"scrollIndicator": "none"
-				}
-			}
-		},
-		{
-		    "path" : "pages/tabBar/wearhouse/wearhouse",
-		    "style" :                                                                                    
-		    {
-				"navigationStyle": "custom",
-			    "navigationBarTitleText": "",
-			    "enablePullDownRefresh": false,
-				"app-plus": {
-					"scrollIndicator": "none"
-				}
-		    }
-		},
-		{
-			"path" : "pages/tabBar/wearhouse/questions",
-			"style" :
-			{
-				"navigationStyle": "custom",
-				"navigationBarTitleText": "",
-				"enablePullDownRefresh": false,
-				"app-plus": {
-					"scrollIndicator": "none"
 				}
 			}
 		}
@@ -142,13 +106,7 @@
 			},
 			{
 				"pagePath": "pages/tabBar/current/current"
-			},
-			{
-				"pagePath": "pages/tabBar/wearhouse/wearhouse"
 			}
-
-			
-
 		]
 	}
 }
diff --git a/pages/index/index.vue b/pages/index/index.vue
index b2c3f32..5414e97 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -4,7 +4,7 @@
     <view class="main">
       <view class="header">
         <view class="titleFirst">
-          你好~<br/>欢迎来到安全教育平台</view>
+          你好~<br/>欢迎来到危化品全生命周期管理平台</view>
       </view>
       <view>
         <u-form :model="form" ref="uForm" class="form" >
@@ -233,7 +233,7 @@
 
 .titleFirst{
   width: 80%;
-	font-size: 44rpx;
+	font-size: 34rpx;
   line-height: 1.5;
   font-weight: bold;
   letter-spacing: 2px;
@@ -259,7 +259,7 @@
   border-radius: 99px;
   background: #f5f5f5;
   padding: 15px 20px !important;
-  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1) !important;
+  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1)!important;
   transition: box-shadow .1s ease !important;
 
   &:active{
@@ -269,8 +269,8 @@
 
 .isFocused{
   background: #fff;
-  border-width: 1.5px !important;
-  border-color: #e6e6e6 !important;
+  border-width: 2px !important;
+  border-color: #fff !important;
   box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1),0px 3px 6px rgba(0, 0, 0, 0.1) inset !important;
 }
 
@@ -281,7 +281,7 @@
 }
 
 .loginBtn{
-  border: 1px solid rgba(255,255,255,.4);
+  border: 2px solid rgba(255,255,255,.8);
   letter-spacing: 10px;
   box-shadow: 0 2px 4px rgba(0,0,0,.2);
   background-image: linear-gradient(#41a2ff,#0f7ff9);
diff --git a/pages/tabBar/count/count.vue b/pages/tabBar/count/count.vue
index 731455e..56fb158 100644
--- a/pages/tabBar/count/count.vue
+++ b/pages/tabBar/count/count.vue
@@ -15,18 +15,18 @@
     <view class="m-p-15">
       <view class="userInfo">
         <view class="info-l">
-          <image src="../../../static/avator.png" mode="widthFix"></image>
-          <view class="info-icons">
-            <u-icon v-if="user.sex==0" name="man" color="#0f7ff9" bold size="24"></u-icon>
-            <u-icon v-else-if="user.sex==1" name="woman" color="#ff69bf" bold size="24"></u-icon>
-            <u-icon v-else name="question" color="#ff69bf" bold size="24"></u-icon>
-          </view>
+          <image src="../../../static/companyLogo.png" mode="widthFix"></image>
+<!--          <view class="info-icons">-->
+<!--            <u-icon v-if="user.sex==0" name="man" color="#0f7ff9" bold size="24"></u-icon>-->
+<!--            <u-icon v-else-if="user.sex==1" name="woman" color="#ff69bf" bold size="24"></u-icon>-->
+<!--            <u-icon v-else name="question" color="#ff69bf" bold size="24"></u-icon>-->
+<!--          </view>-->
         </view>
 
         <view class="info-r">
           <view class="info-n">
 <!--            用户:-->
-            <span>{{user.name}}</span>
+            <span>{{username}}</span>
 
           </view>
 <!--          <view class="info-id">-->
@@ -36,20 +36,17 @@
       </view>
       <view class="card-list">
         <view class="paper-card">
-          <view class="company-info">
-            <view class="company-i">
-              <view>电话:</view>
-              <span>{{getPhoneNumber(user.phone)}}</span>
-            </view>
-            <view class="company-i">
-              <view>公司:</view>
-              <span v-if="user.company && user.company.name">{{user.company.name?user.company.name:'暂无'}}</span>
-            </view>
-          </view>
-          <view class="menu-i" @click="toMyScore">
+          <view class="menu-i" @click="toHazmat">
             <view class="menu-l">
-              <u-icon name="info-circle-fill" color="#0f7ff9" size="20"></u-icon>
-              <view>我的成绩</view>
+              <u-icon name="warning" color="#0f7ff9" size="32"></u-icon>
+              <view><span style="color: #ed6464">危化品</span>操作记录</view>
+            </view>
+            <u-icon name="arrow-right" color="#ccc" size="20"></u-icon>
+          </view>
+          <view class="menu-i" @click="toProduct">
+            <view class="menu-l">
+              <u-icon name="bag" color="#0f7ff9" size="32"></u-icon>
+              <view><span style="color: #5fb734">成品</span>操作记录</view>
             </view>
             <u-icon name="arrow-right" color="#ccc" size="20"></u-icon>
           </view>
@@ -76,7 +73,7 @@
 			return {
 				page: 'pages/tabBar/count/count',
 				statusBarHeight: '',
-        user: {},
+        username: '',
         examParams: {
           pageNum: 1,
           pageSize: 10,
@@ -92,8 +89,9 @@
     },
 		onLoad() {
 			this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
+      this.username = uni.getStorageSync('name')
 			// uni.hideTabBar();
-      this.getUserInfo()
+      // this.getUserInfo()
 		},
 
 		methods: {
@@ -119,10 +117,17 @@
           url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type))
         })
       },
-      toMyScore(){
+      toHazmat(){
         uni.setStorageSync("prevPage", '/pages/tabBar/count/count');
         uni.navigateTo({
           url: '/pages/tabBar/count/countDetail'
+        })
+      },
+
+      toProduct(){
+        uni.setStorageSync("prevPage", '/pages/tabBar/count/count');
+        uni.navigateTo({
+          url: '/pages/tabBar/count/productDetail'
         })
       },
 
@@ -170,8 +175,6 @@
 	flex-direction: column; 
 	width: 100%; 
 	height: 100%;
-  background: url("../../../static/my-bg.png") no-repeat top fixed;
-  background-size: 100% auto;
 }
 .u-icon{
   margin: 0 !important;
@@ -211,21 +214,22 @@
 
 .m-p-15{
   width: 100%;
-  margin-top: 50rpx;
+  padding-top: 50rpx;
+  background: url("../../../static/my-bg.jpg") no-repeat top;
+  background-size: 100% auto;
 
   .userInfo{
     display: flex;
     align-items: center;
-    justify-content: left;
     width: calc(100% - 60px);
-    margin: 0 auto;
+    margin: 20rpx auto;
 
     .info-l{
       width: 150rpx;
       height: 150rpx;
       border-radius: 50%;
-      margin-right: 40rpx;
       position: relative;
+      margin-right: 20px;
       image{
         width: 150rpx;
         height: 150rpx;
@@ -267,47 +271,39 @@
     margin: 20px 0;
 
     .paper-card{
-      width: calc(100% - 60px);
-      background: #fff;
-      border-radius: 20px;
-      padding: 15px 15px 5px;
+      width: calc(100% - 40px);
       margin: 0 auto 15px;
-      box-sizing: border-box;
-      box-shadow: 0 3px 8px rgba(150,150,150,.1);
-      .company-info{
-        border-bottom: 1px solid #e6e6e6;
-        .company-i{
-          display: flex;
-          align-items: center;
-          font-size: 28rpx;
-          color: #999;
-          margin-bottom: 15px;
-          view{
-            margin-left: 4px;
-          }
-          span{
-            color: #333;
-          }
-          &:first-of-type{
-            margin-bottom: 5px;
-          }
-        }
-      }
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
 
       .menu-i{
+        width: calc(50% - 5px);
+        background: rgba(255,255,255,1);
+        border-radius: 12px;
         display: flex;
         align-items: center;
+        box-shadow: 0 3px 8px rgba(150,150,150,.1);
         justify-content: space-between;
-        padding: 15px 0;
+        padding: 18px 15px;
         box-sizing: border-box;
         cursor: pointer;
 
         .menu-l{
           display: flex;
           align-items: center;
-          font-size: 28rpx;
+          font-size: 22rpx;
+          color: #999;
           view{
             margin-left: 6px;
+            display: flex;
+            flex-direction: column;
+            align-items: flex-start;
+            span{
+              font-size: 32rpx;
+              font-weight: bold;
+              color: #333;
+            }
           }
         }
       }
diff --git a/pages/tabBar/count/countDetail.vue b/pages/tabBar/count/countDetail.vue
index 7eb97b4..ef721e2 100644
--- a/pages/tabBar/count/countDetail.vue
+++ b/pages/tabBar/count/countDetail.vue
@@ -8,32 +8,39 @@
       <view style="display: flex; flex-direction: column;">
         <view class="navBar">
           <u-icon name="arrow-left" color="black" size="17" style="margin-left: 8px;" @click="goBack" />
-          <view class="barText">我的成绩</view>
+          <view class="barText">我的操作</view>
         </view>
       </view>
     </view>
     <view class="m-p-15">
       <view class="card-list">
           <scroll-view v-if="examList && examList.length>0" scroll-y="true" class="scroll-Y" @scrolltoupper="upper" @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:100%">
-            <view class="paper-card" v-for="(item,index) in examList" :key="index" @click="toDetail(item,2)">
+            <view class="paper-card" v-for="(item,index) in examList" :key="index">
               <view class="paper-card-l">
-                <view class="paper-card-t">{{item.examPaper.name}}</view>
-                <view style="color: #999;margin-bottom: 15px;font-size: 12px">{{item.examPaper.code}}</view>
-                <view style="display: flex;align-items: center">
-                  <u-tag style="margin-right: 20rpx" :text="item.examPaper.categoryName" size="mini"></u-tag>
-                  <u-tag :text="item.createName" plain plainFill size="mini"></u-tag>
-                </view>
+                <view class="dot"></view>
+                <view class="line"></view>
               </view>
-              <view class="paper-card-r">
-                <view :class="item.passed == 0?'red':'green'">
-                  <view>{{item.score}}</view>
-                  <view class="divide"></view>
-                  <view>{{item.passed == 0?'不合格':'合格'}}</view>
+              <view class="paper-card-box">
+                <view class="paper-card-r">
+                  <view class="paper-card-t"><u-icon name="clock-fill" color="#2979ff" size="18" style="margin-right: 4px"></u-icon>{{item.updateTime}}</view>
+                  <view class="paper-card-c">
+                    <span style="margin-right: 4px">对</span>
+                    <span style="font-weight: bold" v-if="item.hazmatBasic">{{item.hazmatBasic.companyName?item.hazmatBasic.companyName + '的':''}}{{item.hazmatBasic.name}}({{item.hazmatBasic.productSn}})</span>
+                    <span style="font-weight: bold" v-if="item.productBasic">{{item.productBasic.companyName?item.productBasic.companyName + '的':''}}{{item.productBasic.name}}({{item.productBasic.productSn}})</span>
+                    进行
+                    <span :class="item.num>=0?'green':'red'" style="font-weight: bold;margin: 0 4px">{{item.state==0?'入库 ':item.state==1?'取用 ':item.state==2?'归还 ':item.state==3?'标签作废 ':item.state==4?'用尽登记 ':item.state==5?'销售 ':'-- '}}</span>
+                  </view>
+                  <view v-if="item.hazmatBasic" :class="item.num>=0?'green':'red'" style="font-size: 28rpx">
+                    <span v-if="item.num  > 0">+</span>{{item.num + item.hazmatBasic.unit}}
+                  </view>
+                  <view v-if="item.productBasic" :class="item.num>=0?'green':'red'" style="font-size: 28rpx">
+                    <span v-if="item.num  > 0">+</span>{{item.num + item.productBasic.unit}}
+                  </view>
                 </view>
               </view>
             </view>
           </scroll-view>
-          <u-empty v-else text="暂无已完成的考试记录" mode="list"></u-empty>
+          <u-empty v-else text="暂无记录" mode="list"></u-empty>
       </view>
 <!--      <view>-->
 <!--        <u-button @click="loginOut" type="primary" text="退出登录" style="width: 80%" shape="circle"></u-button>-->
@@ -45,7 +52,7 @@
 
 <script>
 	import tabBar from '../tabBarIndex.vue'
-  import {getExamList, loginOut} from "../../../api";
+  import {getHazmatFlowByUser,loginOut} from "../../../api";
   import {getCleanRecord} from "../../../api/wearhouse";
 	export default {
 		components:{
@@ -58,7 +65,6 @@
         examParams: {
           pageNum: 1,
           pageSize: 10,
-          state: 2
         },
         examList: [],
         totalPage: 0
@@ -69,7 +75,7 @@
       console.log('跳转完成')
 			this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
 			// uni.hideTabBar();
-      this.getExamList()
+      this.getList()
 		},
 		methods: {
 			goBack() {
@@ -84,8 +90,8 @@
           })
         }
 			},
-      getExamList(){
-        getExamList(this.examParams).then(res => {
+      getList(){
+        getHazmatFlowByUser(this.examParams).then(res => {
           if(res.code == 200) {
             let list = res.data.list?res.data.list: [];
             if (res.data.pageNum != 1) {
@@ -96,41 +102,6 @@
             this.totalPage = res.data.totalPage
           }else{
             uni.$u.toast(res.message)
-          }
-        })
-      },
-
-      toDetail(item,type){
-        uni.setStorageSync("prevPage", '/pages/tabBar/count/count');
-        uni.navigateTo({
-          url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type))
-        })
-      },
-
-      loginOut(){
-        uni.showModal({
-          title: '提示',
-          content: '是否确认退出该账号?',
-          success: async function (res) {
-            if (res.confirm) {
-              loginOut().then(res=>{
-                if(res.code == 200){
-                  uni.showToast({
-                    title: '账户已退出',
-                    duration: 1000
-                  })
-                  setTimeout(()=>{
-                    uni.clearStorageSync();
-                    uni.clearStorage();
-                    uni.navigateTo({
-                      url: '/pages/index/index'
-                    })
-                  },1000)
-                }
-              })
-            } else if (res.cancel) {
-              console.log('用户点击取消');
-            }
           }
         })
       },
@@ -146,7 +117,7 @@
           uni.$u.toast('已加载全部数据')
           return
         }
-        this.getExamList()
+        this.getList()
       },
       scrollView(e) {
         // console.log(e)
@@ -205,64 +176,92 @@
 
     .paper-card{
       width: calc(100% - 30px);
-      background: #fff;
-      border-radius: 20px;
-      padding: 15px;
-      margin: 0 auto 15px;
-      box-sizing: border-box;
-      box-shadow: 0 3px 8px rgba(150,150,150,.1);
+      margin: 0 auto;
       display: flex;
-      align-items: center;
       justify-content: space-between;
 
       .paper-card-l{
-        width: 75%;
-
-        .paper-card-t{
-          font-size: 32rpx;
-          margin-bottom: 10rpx;
-          font-family: "PingFang SC";
-          font-weight: 800;
-          overflow: hidden;
-          text-overflow: ellipsis;
-          display: -webkit-box;
-          -webkit-line-clamp: 2;
-          -webkit-box-orient: vertical;
+        width: 5%;
+        position: relative;
+        .dot{
+          width: 32rpx;
+          height: 32rpx;
+          border-radius: 50%;
+          background: #5fb734;
+          position: absolute;
+          left: 50%;
+          top: 28rpx;
+          transform: translateX(-16rpx);
+          z-index: 9;
+          box-shadow: 0 3px 8px rgba(95,183,52,.4);
+          border: 1px solid #fff;
+        }
+        .line{
+          position: absolute;
+          left: 50%;
+          top: 0;
+          width: 1px;
+          height: 100%;
+          border-left: 1px dashed #ccc;
         }
       }
-
-      .paper-card-r{
-        width: 25%;
-        &>view{
-          width: 140rpx;
-          height: 140rpx;
-          border-radius: 50%;
-          color: #fff;
-          display: flex;
-          flex-direction: column;
-          align-items: center;
-          justify-content: center;
-          font-size: 20rpx;
-          line-height: 1;
-
-          view:first-of-type{
-            font-size: 44rpx;
-            font-weight: 600;
+      &:first-of-type{
+        .paper-card-l{
+          .line{
+            position: absolute;
+            left: 50%;
+            top: 44rpx;
+            width: 1px;
+            height: calc(100% - 44rpx);
+            border-left: 1px dashed #ccc;
           }
-
-          .divide{
-            width: 60%;
-            height: 1rpx;
-            background: #fff;
+        }
+      }
+      &:last-of-type{
+        .paper-card-l{
+          .line{
+            position: absolute;
+            left: 50%;
+            top: 0;
+            width: 1px;
+            height: 56rpx;
+            border-left: 1px dashed #ccc;
+          }
+        }
+      }
+      .paper-card-box{
+        width: calc(95% - 15px);
+        padding-bottom: 15px;
+        .paper-card-r{
+          width: 100%;
+          background: #fff;
+          border-radius: 20px;
+          padding: 15px;
+          box-sizing: border-box;
+          box-shadow: 0 3px 8px rgba(150,150,150,.1);
+          .paper-card-t{
+            font-size: 32rpx;
+            font-family: "PingFang SC";
+            font-weight: 800;
+            display: flex;
+          }
+          .paper-card-c{
+            font-size: 28rpx;
             margin: 10rpx 0;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            display: -webkit-box;
+            -webkit-line-clamp: 2;
+            -webkit-box-orient: vertical;
           }
-        }
-
-        .green{
-          background: #5fb734;
-        }
-        .red{
-          background: #ed6464
+          .green{
+            margin-bottom: 5px;
+            color: #5fb734;
+          }
+          .red{
+            margin-bottom: 5px;
+            color: #ed6464
+          }
         }
       }
     }
diff --git a/pages/tabBar/count/productDetail.vue b/pages/tabBar/count/productDetail.vue
new file mode 100644
index 0000000..023173e
--- /dev/null
+++ b/pages/tabBar/count/productDetail.vue
@@ -0,0 +1,270 @@
+<template>
+	<view class="box">
+		<!-- 自定义导航栏 -->
+    <view class="navBarBox">
+      <!-- 状态栏占位 -->
+      <view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
+      <!-- 真正的导航栏内容 -->
+      <view style="display: flex; flex-direction: column;">
+        <view class="navBar">
+          <u-icon name="arrow-left" color="black" size="17" style="margin-left: 8px;" @click="goBack" />
+          <view class="barText">我的操作</view>
+        </view>
+      </view>
+    </view>
+    <view class="m-p-15">
+      <view class="card-list">
+          <scroll-view v-if="examList && examList.length>0" scroll-y="true" class="scroll-Y" @scrolltoupper="upper" @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:100%">
+            <view class="paper-card" v-for="(item,index) in examList" :key="index">
+              <view class="paper-card-l">
+                <view class="dot"></view>
+                <view class="line"></view>
+              </view>
+              <view class="paper-card-box">
+                <view class="paper-card-r">
+                  <view class="paper-card-t"><u-icon name="clock-fill" color="#2979ff" size="18" style="margin-right: 4px"></u-icon>{{item.updateTime}}</view>
+                  <view class="paper-card-c">
+                    <span style="margin-right: 4px">对</span>
+                    <span style="font-weight: bold" v-if="item.hazmatBasic">{{item.hazmatBasic.companyName?item.hazmatBasic.companyName + '的':''}}{{item.hazmatBasic.name}}({{item.hazmatBasic.productSn}})</span>
+                    <span style="font-weight: bold" v-if="item.productBasic">{{item.productBasic.companyName?item.productBasic.companyName + '的':''}}{{item.productBasic.name}}({{item.productBasic.productSn}})</span>
+                    进行
+                    <span :class="item.num>=0?'green':'red'" style="font-weight: bold;margin: 0 4px">{{item.state==0?'入库 ':item.state==1?'取用 ':item.state==2?'归还 ':item.state==3?'标签作废 ':item.state==4?'用尽登记 ':item.state==5?'销售 ':'-- '}}</span>
+                  </view>
+                  <view v-if="item.hazmatBasic" :class="item.num>=0?'green':'red'" style="font-size: 28rpx">
+                    <span v-if="item.num  > 0">+</span>{{item.num + item.hazmatBasic.unit}}
+                  </view>
+                  <view v-if="item.productBasic" :class="item.num>=0?'green':'red'" style="font-size: 28rpx">
+                    <span v-if="item.num  > 0">+</span>{{item.num + item.productBasic.unit}}
+                  </view>
+                </view>
+              </view>
+            </view>
+          </scroll-view>
+          <u-empty v-else text="暂无记录" mode="list"></u-empty>
+      </view>
+<!--      <view>-->
+<!--        <u-button @click="loginOut" type="primary" text="退出登录" style="width: 80%" shape="circle"></u-button>-->
+<!--      </view>-->
+    </view>
+<!--		<tabBar :currentPagePath="page"></tabBar>-->
+	</view>
+</template>
+
+<script>
+	import tabBar from '../tabBarIndex.vue'
+  import {getHazmatFlowByUser, getProductFlowByUser, loginOut} from "../../../api";
+  import {getCleanRecord} from "../../../api/wearhouse";
+	export default {
+		components:{
+			tabBar
+		},
+		data() {
+			return {
+				page: 'pages/tabBar/count/productDetail',
+				statusBarHeight: '',
+        examParams: {
+          pageNum: 1,
+          pageSize: 10,
+        },
+        examList: [],
+        totalPage: 0
+			}
+			
+		},
+		onLoad() {
+      console.log('跳转完成')
+			this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
+			// uni.hideTabBar();
+      this.getList()
+		},
+		methods: {
+			goBack() {
+        const url = uni.getStorageSync("prevPage");
+        if(url){
+          uni.reLaunch({
+            url: url
+          });
+        } else{
+          uni.reLaunch({
+            url: '/pages/tabBar/count/count'
+          })
+        }
+			},
+      getList(){
+        getProductFlowByUser(this.examParams).then(res => {
+          if(res.code == 200) {
+            let list = res.data.list?res.data.list: [];
+            if (res.data.pageNum != 1) {
+              this.examList = this.examList.concat(list)
+            } else {
+              this.examList = res.data.list
+            }
+            this.totalPage = res.data.totalPage
+          }else{
+            uni.$u.toast(res.message)
+          }
+        })
+      },
+
+      upper(e) {
+        // console.log(e)
+      },
+      lower(e) {
+        //并且让页码+1,调用获取数据的方法获取第二页数据
+        this.examParams.pageNum++
+        //此处调用自己获取数据列表的方法
+        if (this.examParams.pageNum > this.totalPage){
+          uni.$u.toast('已加载全部数据')
+          return
+        }
+        this.getList()
+      },
+      scrollView(e) {
+        // console.log(e)
+      },
+		}
+	}
+
+</script>
+
+<style lang='scss' scoped>
+.box {
+	display: flex; 
+	flex-direction: column; 
+	width: 100%; 
+	height: 100%;
+}
+.fix{
+	position: sticky;
+	top: 0;
+	left: 0;
+	right: 0;
+	width: 100%;
+	z-index: 1;
+}
+.navBarBox .navBar {
+  background-color:#fff;
+  height: 50px;
+  display: flex;
+  flex-direction: row;
+  justify-content: space-around;
+  align-items: center;
+  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
+}
+.barText{
+  margin-left: -20px;
+  flex: 1;
+  /* margin-left: 20px; */
+  text-align: center;
+  width: 85%;
+  font-size: 16px;
+  /* text-align: center; */
+  font-weight: 600;
+}
+.navBarBox .navBar .logo {
+  width: 82rpx;
+  height: 82rpx;
+  margin-right: 10rpx;
+}
+.m-p-15{
+  width: 100%;
+
+  .card-list{
+    width: 100%;
+    height: calc(100vh - 85px);
+    margin: 20px 0 15px;
+
+    .paper-card{
+      width: calc(100% - 30px);
+      margin: 0 auto;
+      display: flex;
+      justify-content: space-between;
+
+      .paper-card-l{
+        width: 5%;
+        position: relative;
+        .dot{
+          width: 32rpx;
+          height: 32rpx;
+          border-radius: 50%;
+          background: #5fb734;
+          position: absolute;
+          left: 50%;
+          top: 28rpx;
+          transform: translateX(-16rpx);
+          z-index: 9;
+          box-shadow: 0 3px 8px rgba(95,183,52,.4);
+          border: 1px solid #fff;
+        }
+        .line{
+          position: absolute;
+          left: 50%;
+          top: 0;
+          width: 1px;
+          height: 100%;
+          border-left: 1px dashed #ccc;
+        }
+      }
+      &:first-of-type{
+        .paper-card-l{
+          .line{
+            position: absolute;
+            left: 50%;
+            top: 44rpx;
+            width: 1px;
+            height: calc(100% - 44rpx);
+            border-left: 1px dashed #ccc;
+          }
+        }
+      }
+      &:last-of-type{
+        .paper-card-l{
+          .line{
+            position: absolute;
+            left: 50%;
+            top: 0;
+            width: 1px;
+            height: 56rpx;
+            border-left: 1px dashed #ccc;
+          }
+        }
+      }
+      .paper-card-box{
+        width: calc(95% - 15px);
+        padding-bottom: 15px;
+        .paper-card-r{
+          width: 100%;
+          background: #fff;
+          border-radius: 20px;
+          padding: 15px;
+          box-sizing: border-box;
+          box-shadow: 0 3px 8px rgba(150,150,150,.1);
+          .paper-card-t{
+            font-size: 32rpx;
+            font-family: "PingFang SC";
+            font-weight: 800;
+            display: flex;
+          }
+          .paper-card-c{
+            font-size: 28rpx;
+            margin: 10rpx 0;
+            overflow: hidden;
+            text-overflow: ellipsis;
+            display: -webkit-box;
+            -webkit-line-clamp: 2;
+            -webkit-box-orient: vertical;
+          }
+          .green{
+            margin-bottom: 5px;
+            color: #5fb734;
+          }
+          .red{
+            margin-bottom: 5px;
+            color: #ed6464
+          }
+        }
+      }
+    }
+  }
+}
+</style>
\ No newline at end of file
diff --git a/pages/tabBar/current/current.vue b/pages/tabBar/current/current.vue
index 44bedb3..febe4c3 100644
--- a/pages/tabBar/current/current.vue
+++ b/pages/tabBar/current/current.vue
@@ -6,36 +6,53 @@
 			<view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
 			<!-- 真正的导航栏内容 -->
 			<view class="navBar">
-<!--				<u-icon style=" margin-left: 13px;" name="arrow-left" color="black" size="17" @click="goBack"/>-->
-				<view class="barText">课程</view>
-<!--				<view >-->
-<!--					<u-button type="text" @click="loginOut" style="color: #1890ff;margin-right: 5px;width: 65px;">退出</u-button>-->
-<!--				</view>-->
+				<view class="barText">记录查询</view>
 			</view>
 		</view>
 		<!-- 页面内容 -->
     <view class="m-p-15">
-      <view class="cardList">
-        <scroll-view scroll-y="true" class="scroll-Y" @scrolltoupper="upper"
-                     @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:100%">
-          <view style="padding: 20px 0 20px">
-          <view class="card-i" v-for="(item,index) in classList" :key="index">
-            <u-image radius="16px" width="200rpx" height="200rpx" :show-loading="true" :src="getImageUrl(item.course.logo)" mode="aspectFill">
-            </u-image>
-            <!--            <view class="card-i-t">目前已学:{{item.totalProgress}}分钟</view>-->
-            <view class="card-i-r">
-              <view class="card-i-r-t">
-                <view>{{item.phaseName + '-' + item.course.name}}</view>
-                <span style="color: #999;font-size: 12px;display: flex;align-items: center"><u-icon name="account" color="#999" size="18" style="margin-bottom: 0;margin-right: 2px"></u-icon>{{item.createName +'('+ item.createTime +')'}}</span>
-              </view>
-              <view class="card-i-r-b">
-                <u-tag icon="clock" :text="secondsToHms(item.course.period)" type="success" size="mini" shape="circle" plain plainFill></u-tag>
-                <u-button class="study-button" type="primary" text="开始学习" shape="circle" size="small" @click="toStudy(item)"></u-button>
-              </view>
+      <u-sticky>
+        <u-input placeholder="请输入或扫描二维码编号进行搜索" v-model="searchContent">
+          <template slot="prefix">
+            <u-icon name="scan" color="#2979ff" size="28" @click="scanCode()"></u-icon>
+          </template>
+          <template slot="suffix">
+            <u-button type="primary" class="searchBtn" size="small" text="溯源查询" shape="circle" @click="getList()"></u-button>
+          </template>
+        </u-input>
+      </u-sticky>
+      <view class="productCard" v-if="dataList && dataList.length>0">
+        <view v-if="dataList[0].hazmatBasic">
+          <view>名称:<span>{{dataList[0].hazmatBasic?dataList[0].hazmatBasic.name:''}}({{dataList[0].hazmatBasic?dataList[0].hazmatBasic.productSn :''}})</span></view>
+          <view>条码:<span>{{dataList[0].code}}</span></view>
+        </view>
+        <view v-if="dataList[0].productBasic">
+          <view>名称:{{dataList[0].productBasic?dataList[0].productBasic.name:''}}({{dataList[0].productBasic?dataList[0].productBasic.productSn :''}})</view>
+          <view>条码:{{dataList[0].code}}</view>
+        </view>
+      </view>
+      <view class="cardList" v-if="dataList && dataList.length>0">
+        <view class="card-i" v-for="(item,index) in dataList" :key="index">
+          <view class="card-i-l">
+            <span><u-icon name="clock-fill" color="#2979ff" size="18" style="margin-right: 4px"></u-icon>{{item.updateTime}}</span>
+            <view v-if="item.user">
+              <span></span>{{item.user.departName}}部门的<span style="font-weight: bold">{{item.user.name }}</span>进行了<span :class="item.num>=0?'green':'red'">{{item.state==0?'入库':item.state==1?'取用':item.state==2?'归还':item.state==3?'标签作废':item.state==4?'用尽登记':item.state==5?'销售':'--'}}</span>
             </view>
           </view>
+          <view v-if="item.hazmatBasic" class="card-i-r" :class="item.num>=0?'green':'red'">
+            <span v-if="item.num  > 0">+</span>{{item.num + item.hazmatBasic.unit}}
           </view>
-        </scroll-view>
+          <view v-if="item.productBasic" class="card-i-r" :class="item.num>=0?'green':'red'">
+            <span v-if="item.num  > 0">+</span>{{item.num + item.productBasic.unit}}
+          </view>
+        </view>
+      </view>
+      <view v-else style="margin-top: 200rpx">
+        <u-empty
+            mode="list"
+            text="通过条码搜索记录"
+        >
+        </u-empty>
       </view>
     </view>
 		<tabBar :currentPagePath="page"></tabBar>
@@ -44,7 +61,7 @@
 
 <script>
 	import tabBar from '../tabBarIndex.vue'
-  import {getClassList} from '../../../api/index.js'
+  import {getHazmatFlowByCode} from '../../../api/index.js'
 	import tebBar from '../tabBarIndex.vue'
   import VUE_APP_BASE_URL from "../../../common/constant";
 	export default {
@@ -55,20 +72,12 @@
 			return {
 				page: 'pages/tabBar/current/current',
 				statusBarHeight: 0,
-        classParams: {
-          pageNum: 1,
-          pageSize: 10,
-        },
-        classList: [],
-        totalPage: 0
+        searchContent: '',
+        dataList: []
 			}
 		},
 		onLoad() {
-			// this.unitType = uni.getStorageSync('unittype') + 1;
-			//获取手机状态栏高度
 			this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
-      this.classParams.pageNum = 1
-      this.getClass();
 		},
 		onShow() {
 			// this.role = uni.getStorageSync('roleName');
@@ -77,36 +86,43 @@
       uni.hideTabBar()
     },
 		methods: {
-			loginOut() {
-				uni.clearStorageSync();
-				uni.clearStorage();
-				uni.navigateTo({
-					url: '/pages/index/index'
-				})
-			},
-			goBack() {
-				uni.switchTab({
-				    url:'/pages/tabBar/firstPage/firstPage'
-				});
-			},
-      getClass(){
-        getClassList(this.classParams).then(res => {
-          if(res.code == 200) {
-            let list = res.data.list?res.data.list: [];
-            if (res.data.pageNum != 1) {
-              this.classList = this.classList.concat(list)
-            } else {
-              this.classList = res.data.list
+      scanCode(){
+        const t = this
+        uni.scanCode({
+          autoZoom: false,
+          success: function (res) {
+            if(res && res.result){
+              t.searchContent = res.result
+              getHazmatFlowByCode({code: res.result}).then(re => {
+                if(re.code == 200) {
+                  t.dataList = re.data?re.data: []
+                }else{
+                  uni.$u.toast(re.message)
+                }
+              })
+            }else{
+              uni.showToast({
+                title: '该二维码已失效或不包含条码信息',
+                duration: 2000
+              })
             }
-            this.totalPage = res.data.totalPage
-          }else{
-            uni.$u.toast(res.message)
           }
         })
       },
 
-      getImageUrl(logo) {
-        return logo ? VUE_APP_BASE_URL  + '/api/' + logo : '/static/defaultCover.jpg';
+      getList(){
+        const t = this
+        if(t.searchContent == ''){
+          uni.$u.toast('请输入二维码编号')
+        }else{
+          getHazmatFlowByCode({code: t.searchContent}).then(re => {
+            if(re.code == 200) {
+              t.dataList = re.data?re.data: []
+            }else{
+              uni.$u.toast(re.message)
+            }
+          })
+        }
       },
 
       toStudy(item) {
@@ -115,35 +131,6 @@
 				  url: `/pages/tabBar/current/detail?bank=` + encodeURIComponent(JSON.stringify(item))
 				})
 			},
-
-      secondsToHms(seconds) {
-        seconds = Number(seconds);
-        const h = Math.floor(seconds / 3600);
-        const m = Math.floor(seconds % 3600 / 60);
-        const s = Math.floor(seconds % 3600 % 60);
-
-        const hDisplay = h > 0 ? String(h).padStart(2, '0') : '00';
-        const mDisplay = m > 0 ? String(m).padStart(2, '0') : '00';
-        const sDisplay = s > 0 ? String(s).padStart(2, '0') : '00';
-        return `${hDisplay}:${mDisplay}:${sDisplay}`;
-      },
-
-      upper(e) {
-        // console.log(e)
-      },
-      lower(e) {
-        //并且让页码+1,调用获取数据的方法获取第二页数据
-        this.classParams.pageNum++
-        if (this.classParams.pageNum > this.totalPage){
-          uni.$u.toast('已加载全部数据')
-          return
-        }
-        //此处调用自己获取数据列表的方法
-        this.getClass()
-      },
-      scrollView(e) {
-        // console.log(e)
-      }
 		}
 	}
 
@@ -176,110 +163,122 @@
   font-size: 16px;
   font-weight: 600;
   flex: 2;
-  margin-left: 45%;
-}
-.examineList{
-  margin-top: 12px;
-  height: calc(100vh - 246px);
-  overflow: hidden;
-  overflow-y: scroll;
+  text-align: center;
 }
 
-.content{
-  .tit{
-    width: 100%;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    white-space: nowrap;
-  }
-  .cont{
-    width: 100%;
-    font-size: 14px;
-    color: #666;
-    display: block;
-    text-overflow: ellipsis;
-    overflow: hidden;
-    white-space: nowrap;
-    margin-bottom: 6px;
-  }
-  .btnGroup{
-    width: 100%;
-    display: flex;
-    justify-content: space-between;
-  }
+.u-input{
+  border-color: #f5f5f5 !important;
+  border-radius: 99px;
+  background: #f5f5f5;
+
+  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1),0px 3px 6px rgba(0, 0, 0, 0.1) inset !important;
+  transition: box-shadow .1s ease !important;
 }
-.buttonCo{
-	margin-top: 5px;
-	margin-bottom: 10px;
+.searchBtn{
+  border: 1px solid #fff;
+  padding: 0 30rpx;
+  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.15)!important;
 }
 .m-p-15{
   width: 100%;
-}
-.cardList{
-  width: 100%;
-  height: calc(100vh - 130px);
+  padding: 0 15px;
+  margin-top: 20px;
   box-sizing: border-box;
 
-  .card-i{
-    width: calc(100% - 30px);
+  .productCard{
+    width: 100%;
     background: #fff;
     border-radius: 20px;
     padding: 15px;
-    margin: 0 auto 15px;
-    position: relative;
-    display: flex;
-    align-items: flex-start;
+    margin: 15px auto;
     box-sizing: border-box;
     box-shadow: 4px 4px 12px rgba(150,150,150,.05);
 
-    &:last-of-type{
-      margin-bottom: 0;
-    }
-    .card-i-t{
-      position: absolute;
-      width: 250rpx;
-      height: 30px;
-      border-radius: 20px;
-      line-height: 30px;
-      color: #fff;
-      padding: 0 10rpx;
-      box-sizing: border-box;
-      left: 0;
-      bottom: 0;
-      background: rgba(0,0,0,.4);
-    }
-    .card-i-r{
+    &>view>view{
       width: 100%;
-      height: 200rpx;
-      margin-left: 20rpx;
+      font-size: 28rpx;
+      font-weight: bold;
+      margin-bottom: 10rpx;
+
+      span{
+        color: #2979ff;
+      }
+
+      &:last-of-type{
+        margin-bottom: 0;
+      }
+    }
+  }
+
+  .cardList{
+    width: 100%;
+    box-sizing: border-box;
+    margin-top: 15px;
+    box-shadow: 4px 4px 12px rgba(150,150,150,.05);
+
+    .card-i{
+      width: 100%;
+      background: #fff;
+      border-radius: 12px;
+      padding: 20px 15px;
+      margin: 0 auto;
+      box-sizing: border-box;
       display: flex;
-      flex-direction: column;
       justify-content: space-between;
-      .card-i-r-t{
-        view{
-          font-size: 32rpx;
-          margin-bottom: 20rpx;
-          font-family: "PingFang SC";
-          font-weight: 800;
+      align-items: center;
+      border-bottom: 1px dashed #ccc;
+
+      &:first-of-type{
+        border-radius: 20px 20px 12px 12px;
+      }
+
+      &:last-of-type{
+        margin-bottom: 0;
+        border-bottom: none;
+        border-radius: 12px 12px 20px 20px;
+      }
+
+      .card-i-l{
+        height: 100%;
+        width: 75%;
+        flex-direction: column;
+        align-items: flex-end;
+        justify-content: space-between;
+        &>span{
+          display: flex;
+          align-items: center;
+          font-size: 30rpx;
+          font-weight: bold;
+          margin-bottom: 15rpx;
+        }
+
+        &>view{
+          width: 100%;
           overflow: hidden;
           text-overflow: ellipsis;
           display: -webkit-box;
           -webkit-line-clamp: 2;
           -webkit-box-orient: vertical;
+          span{
+            &:first-of-type{
+              display: inline-block;
+              width: 22px;
+            }
+          }
         }
       }
-      .card-i-r-b{
-        width: 100%;
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-
-        .study-button{
-          width: 220rpx;
-          margin: 0;
-          box-shadow: 3px 3px 12px rgba(51,133,217,.3), -2px -2px 6px #fff;
-          border: 1px solid rgba(255,255,255,.8);
-        }
+      .card-i-r{
+        height: 100%;
+        width: 25%;
+        text-align: right;
+        font-size: 32rpx;
+        font-weight: bolder;
+      }
+      .green{
+        color: #5fb734;
+      }
+      .red{
+        color: #ed6464
       }
     }
   }
diff --git a/pages/tabBar/current/detail.vue b/pages/tabBar/current/detail.vue
deleted file mode 100644
index 3ffd3eb..0000000
--- a/pages/tabBar/current/detail.vue
+++ /dev/null
@@ -1,475 +0,0 @@
-<template>
-  <view style="display: flex;flex-direction: column;height: 100%;">
-    <!-- 自定义导航栏 -->
-    <view class="navBarBox">
-      <!-- 状态栏占位 -->
-      <view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
-      <!-- 真正的导航栏内容 -->
-      <view style="display: flex; flex-direction: column;">
-        <view class="navBar">
-          <u-icon name="arrow-left" color="black" size="17" style="margin-left: 8px;" @click="goBack" />
-          <view class="barText">信息详情</view>
-          <!-- 					<view >
-                      <u-button type="text" @click="loginOut" style="color: blue;margin-right: 5px;">退出</u-button>
-                    </view> -->
-        </view>
-      </view>
-    </view>
-<!--		 <video-player ref="playerRef" @update-time="handleUpdateTime"></video-player>-->
-		<view class="videoWrap" v-if="courseList && courseList.length>0 && detail.resourceType == 1">
-      <video ref="videoRef" :key="moduleKey" id="myVideo" :poster="videoUrl+'?x-oss-process=video/snapshot,t_0,f_jpg'" style="width: 100%" :src="videoUrl" @timeupdate="handleTimeChange" :initial-time="initTime" :play-strategy="2" @play="handlePlay" @pause="handlePause" @ended="handlePause" controls></video>
-<!--			<view class="videoBox">-->
-<!--				<template v-if="!videoPause">-->
-<!--					<view class="masterPic">-->
-<!--						<image class="img" :src="videoCover" mode="scaleToFill"></image>-->
-<!--					</view>-->
-<!--					<image class="startIcon" src="/static/image/bofang.png" mode="scaleToFill"  @click="startFirstVideo"></image>-->
-<!--				</template>-->
-<!--				<template v-else>-->
-<!--              <view class="video-js" ref="video" style="width: 100%;height: 100%;"></view>-->
-<!--				</template>-->
-<!--			</view>-->
-      <view class="viden-info" v-if="showDetail">
-        <view class="viden-info-t">{{detail.name}}</view>
-        <view class="viden-info-i">创建时间:{{detail.createTime}}</view>
-      </view>
-		</view>
-    <view class="m-p-15" v-if="courseList && courseList.length>0">
-      <view class="chapterList">
-        <view class="chapterItem" v-for="(item,index) in courseList" :key="index">
-          <view class="chapterName">{{item.chapterName }}</view>
-          <view class="courseList">
-            <view class="courseItem" :class="{ selected: i.periodId === selectedPeriodId }" v-for="(i,idx) in item.studentStudyPeriodVOList" :key="idx" @click="getLesson(item.chapterId,item.courseId,i.periodId,i.resourceId,true)">
-              <view class="c-i-l">
-                <u-icon :name="i.resourceType == 1 ?'play-circle':'order'" :color="i.periodId == selectedPeriodId?'#fff':'#007aff'" size="24" style="margin-left: 0"></u-icon>
-                <view>{{i.periodName}}</view>
-              </view>
-              <view class="c-i-r" v-if="i.resourceType == 1">
-                <u-line-progress style="width: 45px" height="10" :percentage="i.progress" activeColor="#19be6b"></u-line-progress>
-                <span>{{secondsToHms(i.period)}}</span>
-              </view>
-            </view>
-          </view>
-        </view>
-      </view>
-    </view>
-    <view v-else>
-      <u-empty
-          mode="list"
-          icon="http://cdn.uviewui.com/uview/empty/list.png"
-      >
-      </u-empty>
-    </view>
-	</view>
-</template>
-
-<script>
-import cover from '../../../static/defaultCover.jpg'
-import {getClassList} from "../../../api";
-import {getCourseDetail, getLessonDetail, postNewStudy, postUpdateStudy} from "../../../api/current";
-export default {
-	components: {
-
-	},
-	data() {
-		return {
-			videoCover: cover,
-      showDetail: false,
-      bank: {},
-      id: null,
-      phaseId: null,
-      currentTime: null,
-      selectedChapterId: null,
-      selectedCourseId: null,
-      selectedPeriodId: null,
-      selectedResourceId: null,
-      initTime: 0,
-      courseList: [],
-			course: {},
-			detail: {},
-      videoBaseUrl: 'http://192.168.2.16:9000/trainexam/',
-      videoUrl: '',
-			status: false,
-			beforeAudio: true,
-			duration: 0,
-			progress: 0,
-			xpjAudio: null,
-			videoPause: false,
-			removeArea:{
-				x: 0,
-				y: 0,
-			},
-      statusBarHeight: 0,
-      moduleKey: 0,
-      updateInterval: null,
-		};
-	},
-  onReady(){
-    this.videoContext = uni.createVideoContext('myVideo')
-  },
-	onLoad(e) {
-    this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
-    this.bank = e.bank && JSON.parse(decodeURIComponent(e.bank));
-    this.phaseId = this.bank.phaseId
-    this.id = this.bank.id
-    this.updateInterval = null
-	},
-	onShow(){
-
-	},
-  onHide(){
-    this.clearUpdateInterval()
-  },
-  onUnload(){
-    this.clearUpdateInterval()
-  },
-	mounted() {
-    this.getData();
-	},
-  computed: {
-
-  },
-	beforeUnmount() {
-    this.clearUpdateInterval()
-  },
-
-  beforeDestroy() {
-    this.clearUpdateInterval()
-  },
-
-  methods: {
-    videoErrorCallback: function(e) {
-      uni.showModal({
-        content: e.target.errMsg,
-        showCancel: false
-      })
-    },
-    handleTimeChange(e){
-      this.currentTime = e.target.currentTime
-    },
-    handlePlay(){
-      // this.clearUpdateInterval()
-      const data = {
-        chapterId: this.selectedChapterId,
-        courseId: this.selectedCourseId,
-        periodId: this.selectedPeriodId,
-        phaseId: this.phaseId,
-        studentId: uni.getStorageSync('uid')
-      }
-      postNewStudy(data).then(re=>{
-        if(re.code == 200){
-          this.studyId = re.data
-          if (!this.updateInterval) { // 避免重复设置定时器
-            this.updateInterval = setInterval(() => {
-              this.handleUpdate(1);
-            }, 5000);
-          }
-        }else{
-          uni.$u.toast(res.message)
-        }
-      })
-    },
-    handlePause(){
-      // this.handleUpdate().then(()=>{
-        this.clearUpdateInterval()
-      // })
-    },
-    handleUpdate(type){
-      let data = {}
-      if(type == 1){
-        data = {
-          id: this.studyId,
-          periodId: this.selectedPeriodId,
-          phaseId: this.phaseId,
-          resourceId: this.selectedResourceId,
-          chapterId: this.selectedChapterId,
-          courseId: this.selectedCourseId,
-          studentId: uni.getStorageSync('uid'),
-          currentDuration: this.currentTime
-        }
-      }else{
-        data = {
-          id: this.studyId,
-          periodId: this.selectedPeriodId,
-          phaseId: this.phaseId,
-          resourceId: this.selectedResourceId,
-          chapterId: this.selectedChapterId,
-          courseId: this.selectedCourseId,
-          studentId: uni.getStorageSync('uid'),
-          currentDuration: null
-        }
-      }
-      return postUpdateStudy(data).then(res=>{
-        if(res.code == 200){
-          console.log('上报成功')
-        }else{
-          uni.$u.toast(res.message)
-          this.clearUpdateInterval()
-        }
-      })
-    },
-    clearUpdateInterval() {
-      if(this.updateInterval){
-        clearInterval(this.updateInterval)
-        this.updateInterval = null
-        console.log('清除计时')
-      }
-      console.log('无计时')
-    },
-    getData(){
-      getCourseDetail({phaseStudentId: this.id}).then(res => {
-        if(res.code == 200) {
-          if(res.data && res.data.length > 0){
-            this.courseList = res.data
-            let chapterId = this.courseList[0].chapterId
-            let courseId = this.courseList[0].courseId
-            let id = this.courseList[0].studentStudyPeriodVOList[0].periodId
-            let resourceId = this.courseList[0].studentStudyPeriodVOList[0].resourceId
-            if(id && this.courseList[0].studentStudyPeriodVOList[0].resourceType == 1){
-              this.getLesson(chapterId,courseId,id,resourceId,false)
-            }
-          }else {
-            this.courseList = []
-            uni.showToast({
-              title: '本课程暂无可学习内容',
-              duration: 1000
-            });
-          }
-        }else{
-          uni.$u.toast(res.message)
-        }
-      })
-    },
-
-    getLesson(chapterId,courseId,id,resourceId,isClick){
-      this.clearUpdateInterval()
-      this.selectedChapterId = chapterId
-      this.selectedCourseId = courseId
-      this.selectedPeriodId = id;
-      this.selectedResourceId = resourceId
-      getLessonDetail({periodId: id}).then(res => {
-        if(res.code == 200) {
-          if(res.data){
-            this.detail = res.data
-            this.showDetail = true
-            if(this.detail.resourceType == 1){
-              this.$nextTick(() => {
-                // this.videoUrl = this.videoBaseUrl + this.detail.resourcePath
-                this.videoUrl = this.detail.resourcePath
-                this.moduleKey++
-                this.$nextTick(() => {
-                  if(isClick == true){
-                    uni.createVideoContext('myVideo', this).play();
-                  }
-                })
-              })
-            }else{
-              const t = this
-              uni.downloadFile({
-                url: this.detail.resourcePath,
-                success: function (res) {
-                  const data = {
-                    chapterId: chapterId,
-                    courseId: courseId,
-                    periodId: id,
-                    phaseId: t.phaseId,
-                    studentId: uni.getStorageSync('uid')
-                  }
-                  postNewStudy(data).then(re=>{
-                    if(re.code == 200){
-                      this.studyId = re.data
-                      this.handleUpdate(3)
-                    }else{
-                      uni.$u.toast(res.message)
-                    }
-                  })
-                  var filePath = res.tempFilePath
-                  uni.openDocument({
-                    filePath: filePath,
-                    showMenu: true,
-                    success: function (res) {
-                      console.log('打开文档成功');
-                    }
-                  })
-                }
-              })
-            }
-          }
-        }else{
-          uni.$u.toast(res.message)
-        }
-      })
-
-    },
-
-    goBack(){
-      // uni.navigateBack({
-      //   delta: 1
-      // });
-      this.clearUpdateInterval()
-      uni.reLaunch({
-        url: uni.getStorageSync("prevPage") || '/pages/tabBar/firstPage/firstPage'
-      });
-    },
-
-    handleUpdateTime(time) {
-      console.log("当前播放时间:", time);
-
-      // 你可以在这里处理传递过来的播放时间
-    },
-
-    secondsToHms(seconds) {
-      seconds = Number(seconds);
-      const h = Math.floor(seconds / 3600);
-      const m = Math.floor(seconds % 3600 / 60);
-      const s = Math.floor(seconds % 3600 % 60);
-
-      const hDisplay = h > 0 ? String(h).padStart(2, '0') : '00';
-      const mDisplay = m > 0 ? String(m).padStart(2, '0') : '00';
-      const sDisplay = s > 0 ? String(s).padStart(2, '0') : '00';
-      return `${hDisplay}:${mDisplay}:${sDisplay}`;
-    },
-
-		changeSwiper() {
-			this.isVideoPlay = false;
-		},
-		formatTime(num) {
-			num = Math.floor(num)
-			let second = num % 60;
-			if (second < 10) second = '0' + second;
-			let min = Math.floor(num / 60);
-			if (min < 10) min = '0' + min;
-			return min + ":" + second;
-		},
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.navBarBox .navBar {
-  background-color:#fff;
-  height: 50px;
-  display: flex;
-  flex-direction: row;
-  justify-content: space-around;
-  align-items: center;
-  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
-}
-.barText{
-  margin-left: -20px;
-  flex: 1;
-  /* margin-left: 20px; */
-  text-align: center;
-  width: 85%;
-  font-size: 16px;
-  /* text-align: center; */
-  font-weight: 600;
-}
-.navBarBox .navBar .logo {
-  width: 82rpx;
-  height: 82rpx;
-  margin-right: 10rpx;
-}
-.videoWrap {
-	background: #fff;
-  border-radius: 0 0 20px 20px;
-  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05);
-
-	.videoBox {
-		width: 100%;
-    height: 260px;
-		position: relative;
-	}
-
-  .viden-info{
-    padding: 15px;
-    box-sizing: border-box;
-
-    .viden-info-t{
-      font-size: 32rpx;
-      font-weight: bold;
-      color: #007aff;
-      margin-bottom: 10px;
-    }
-
-    .viden-info-i{
-      color: #999;
-    }
-  }
-}
-.m-p-15{
-  width: 100%;
-  padding: 0 15px;
-  box-sizing: border-box;
-}
-.chapterList{
-  width: 100%;
-  background: #fff;
-  border-radius: 16px;
-  margin: 20px 0;
-  padding: 15px;
-  box-sizing: border-box;
-  box-shadow: 0 5px 10px rgba(150,150,150,.05);
-
-  .chapterItem{
-    padding-bottom: 15px;
-    margin-bottom: 15px;
-    border-bottom: 1px solid #f0f0f0;
-    box-sizing: border-box;
-
-    &:last-of-type{
-      margin-bottom: 0;
-      padding-bottom: 0;
-      border-bottom: none;
-    }
-
-    .chapterName{
-      font-size: 32rpx;
-      font-weight: bolder;
-      margin-bottom: 30rpx;
-    }
-
-    .courseList{
-
-      .courseItem{
-        height: 44rpx;
-        padding: 10px;
-        background: #f5f5f5;
-        border-radius: 4px;
-        margin-bottom: 10px;
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        transition: .6s;
-
-        .c-i-l{
-          display: flex;
-          align-items: center;
-          view{
-            font-size: 28rpx;
-            line-height: 44rpx;
-            margin-left: 10px;
-          }
-        }
-        .c-i-r{
-          height: 100%;
-          display: flex;
-          justify-content: right;
-          align-items: center;
-          span{
-            font-size: 13px;
-            margin-left: 10px;
-          }
-        }
-      }
-      .selected{
-        background: #007aff;
-        color: #fff;
-        border-radius: 99rpx !important;
-        box-shadow: 3px 3px 12px rgba(51,133,217,.3), -2px -2px 6px #fff,inset 3px 3px 9px rgba(0,0,0,.1);
-        border: 1px solid #fff;
-      }
-    }
-  }
-}
-</style>
diff --git a/pages/tabBar/current/video.vue b/pages/tabBar/current/video.vue
deleted file mode 100644
index 546e65d..0000000
--- a/pages/tabBar/current/video.vue
+++ /dev/null
@@ -1,43 +0,0 @@
-<template>
-  <view class="content">
-    <video id="myVideo" style="width: 100%" preload=“auto” :src="videoUrl" @timeupdate="handleTimeChange" controls></video>
-  </view>
-</template>
-<script>
-
-export default {
-  data() {
-    return {
-      player: null,
-      videoUrl: '',
-      info: {},
-      baseUrl: 'http://192.168.2.16:9000/trainexam/',
-      videoContext: null
-    }
-  },
-  onReady(){
-
-  },
-  mounted() {
-
-  },
-  created() {
-
-  },
-  methods: {
-    handleTimeChange(e){
-      this.$emit('update-time', e.target.currentTime);
-    },
-    reloadVideo(detail){
-      if (this.videoContext) {
-        this.videoContext.stop();
-        this.videoContext = null;
-      }
-      this.videoContext = uni.createVideoContext('myVideo')
-      this.videoUrl = this.baseUrl + detail.resourcePath
-      this.videoContext.src = this.baseUrl + detail.resourcePath
-      this.videoContext.play()
-    }
-  }
-}
-</script>
\ No newline at end of file
diff --git a/pages/tabBar/firstPage/exam.vue b/pages/tabBar/firstPage/exam.vue
deleted file mode 100644
index 2171269..0000000
--- a/pages/tabBar/firstPage/exam.vue
+++ /dev/null
@@ -1,771 +0,0 @@
-<template>
-  <view style="display: flex;flex-direction: column;height: 100%;">
-    <!-- 自定义导航栏 -->
-    <view class="navBarBox">
-      <!-- 状态栏占位 -->
-      <view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
-      <!-- 真正的导航栏内容 -->
-      <view style="display: flex; flex-direction: column;">
-        <view class="navBar">
-          <u-icon name="arrow-left" color="black" size="17" style="margin-left: 8px;" @click="goBack"/>
-          <view class="barText">题目内容</view>
-          <!-- 					<view >
-                      <u-button type="text" @click="loginOut" style="color: blue;margin-right: 5px;">退出</u-button>
-                    </view> -->
-        </view>
-      </view>
-    </view>
-    <view class="m-p-15">
-      <view class="timer" v-if="viewType == 1 && bank.examPaper.limited == 1">
-        <u--image :showLoading="true" :src="sandPic" width="18px" height="18px"></u--image>
-        <view class="timer-b">
-          <span>剩余时间:</span>
-          <span>{{ formattedTime }}</span>
-        </view>
-      </view>
-      <view class="top">
-        <view class="ind">{{'第 ' + (curTotalIndex+1) + ' 题'}}</view>
-        <view class="panelBtn" @click="openPanel">答题卡</view>
-      </view>
-      <view class="questions">
-        <view class="title">
-          <span>【{{currentQ.questionType == 1?'单选题':currentQ.questionType == 2?'多选题':'判断题'}}】</span>
-          {{currentQ.title}}
-        </view>
-        <view class="content">
-          <u-checkbox-group
-              v-if="viewType == 1 && currentQ.questionType==2"
-              v-model="currentB"
-              placement="column"
-              class="myRadio"
-              iconPlacement="right"
-              @change="checkboxChange"
-          >
-            <u-checkbox
-                :customStyle="{marginBottom: '15px'}"
-                v-for="(item, index) in currentQ.content.items"
-                :key="index"
-                :label="item.prefix +':'+ item.content"
-                :name="item.prefix"
-                :class="{'picked': currentB.includes(item.prefix)}"
-            >
-            </u-checkbox>
-          </u-checkbox-group>
-
-          <u-checkbox-group
-              v-if="viewType == 2 && currentQ.questionType==2"
-              v-model="currentB"
-              placement="column"
-              class="myRadio"
-              iconPlacement="right"
-              disabled
-              @change="checkboxChange"
-          >
-            <u-checkbox
-                :customStyle="{marginBottom: '15px'}"
-                v-for="(item, index) in currentQ.content.items"
-                :key="index"
-                :label="item.prefix +':'+ item.content"
-                :name="item.prefix"
-                :class="{'picked': currentQ.answer.includes(item.prefix),'wronged': currentB.includes(item.prefix) && !currentQ.answer.includes(item.prefix)}"
-            >
-            </u-checkbox>
-          </u-checkbox-group>
-
-          <u-radio-group v-model="currentA" class="myRadio" iconPlacement="right" placement="column" @change="groupChange" v-if="viewType == 1 && (currentQ.questionType==1||currentQ.questionType==3)">
-            <u-radio
-                :customStyle="{marginBottom: '15px'}"
-                v-for="(item, index) in currentQ.content.items"
-                :key="index"
-                shape="square"
-                :label="item.prefix +':'+ item.content"
-                :name="item.prefix"
-                @change="radioChange"
-                :class="{'picked': currentA == item.prefix}"
-            >
-            </u-radio>
-          </u-radio-group>
-
-          <u-radio-group v-model="currentA" class="myRadio" iconPlacement="right" placement="column" @change="groupChange" v-if="viewType == 2 && (currentQ.questionType==1||currentQ.questionType==3)" disabled>
-            <u-radio
-                :customStyle="{marginBottom: '15px'}"
-                v-for="(item, index) in currentQ.content.items"
-                :key="index"
-                shape="square"
-                :label="item.prefix +':'+ item.content"
-                :name="item.prefix"
-                @change="radioChange"
-                :class="{'picked': currentQ.answer == item.prefix, 'wronged': currentA == item.prefix && currentA != currentQ.answer}"
-            >
-            </u-radio>
-          </u-radio-group>
-
-          <u--textarea v-model="currentA" v-if="viewType == 1 &&(currentQ.questionType==4)" style="margin-bottom: 15px" :maxlength="-1" placeholder="请输入答案" autoHeight @focus="openAnswer"></u--textarea>
-          <u--textarea v-model="currentA" v-if="viewType == 2 &&(currentQ.questionType==4)" :class="currentQ.answer == currentA?'pickedText':'wrongText'" style="margin-bottom: 15px" :maxlength="-1" placeholder="请输入答案" autoHeight disabled></u--textarea>
-
-          <u-button style="width: 80%;margin: 5px auto 15px"
-                    v-if="currentQ.questionType==2 && currentB.length>0 && viewType ==1"
-                    type="primary" shape="circle" text="确认答案" @click="confirmAnswer(2)"></u-button>
-          <view class="answers" v-if="viewType == 2">
-            <view>你的答案:
-              <span :class="(currentQ.studentAnswer && currentQ.studentAnswer.answer) && (currentQ.answer == currentQ.studentAnswer.answer)?'right':'wrong'">{{(currentQ.studentAnswer && currentQ.studentAnswer.answer)?currentQ.studentAnswer.answer:'暂未作答'}}</span>
-<!--              <span v-else :class="currentQ.answer == currentQ.studentAnswer.answer?'right':'wrong'">{{currentQ.studentAnswer.answer}}</span>-->
-            </view>
-            <view>正确答案:<span class="right">{{currentQ.answer}}</span></view>
-          </view>
-        </view>
-      </view>
-    </view>
-    <view class="btns">
-      <u-button style="width: 30%" type="error" shape="circle" size="small" text="上一题" @click="prevQ"></u-button>
-      <u-button v-if="viewType == 1" style="width: 30%" type="primary" shape="circle" size="small" text="交卷" @click="endExam"></u-button>
-      <u-button v-if="curTotalIndex < idList.length - 1" style="width: 30%" type="error" shape="circle" size="small" text="下一题" @click="nextQ"></u-button>
-      <u-button v-if="curTotalIndex == idList.length - 1 && viewType == 2" style="width: 30%" type="primary" shape="circle" size="small" text="退出" @click="goBack"></u-button>
-    </view>
-    <u-popup :show="showPanel" :round="40" mode="bottom" @close="close" @open="open">
-      <view class="panel" v-if="viewType == 1">
-        <view :class="item.state==1?'right-a':''" v-for="(item,index) in idList" @click="toQuestion(item,index)">
-          {{index + 1}}
-        </view>
-      </view>
-      <view class="panel" v-else>
-        <view :class="item.passed==1?'right-a':item.passed==0?'wrong-a':''" v-for="(item,index) in idList" @click="toQuestion(item,index)">
-          {{index + 1}}
-        </view>
-      </view>
-    </u-popup>
-    <u-popup :show="showInput" :round="40" mode="bottom" @close="closeInput" @open="openInput">
-      <view class="panelTwo">
-        <u--textarea v-model="currentA" :maxlength="-1" placeholder="请输入答案"></u--textarea>
-        <u-button shape="circle" type="primary" style="width: 80%;margin-top: 20px" text="确认答案" @click="confirmAnswer(1)"></u-button>
-      </view>
-    </u-popup>
-	</view>
-</template>
-
-<script>
-import {
-  getExamIdIdList,
-  getExamListByIds,
-  postExamAnswer,
-  postEndExam,
-  getQuestionIdList,
-  getErrorsIdList,
-  getQuestionByIds,
-  postExerciseAnswer
-} from '../../../api/wearhouse.js'
-import Vue from 'vue'
-import {loginOut} from "../../../api";
-import sand from '../../../static/sand.gif'
-
-export default {
-	components: {
-
-	},
-	data() {
-		return {
-      statusBarHeight: 0,
-      sandPic: sand,
-      bank: {},
-      idList: [],
-      questionList: [],
-      curTotalIndex: 0,
-      currentQ: {},
-      currentA: '',
-      currentB: [],
-      viewType: null,
-      startTime: null,
-      elapsedTime: 0,
-      timerInterval: null,
-      showPanel: false,
-      showInput: false,
-      limitTime: 0
-		}
-	},
-  onReady(){
-  },
-	onLoad(e) {
-    this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight']
-    this.bank = e.bank && JSON.parse(decodeURIComponent(e.bank))
-    this.viewType = e.type && JSON.parse(decodeURIComponent(e.type))
-    this.startTime = this.bank.startTime?this.bank.startTime:0
-    this.getQuestionIds(this.bank.paperId)
-    this.limitTime = this.bank.examPaper.limited == 1?this.bank.examPaper.limitTime:0
-    if(this.viewType == 1){
-      this.startTimer()
-    }
-	},
-	onShow(){
-
-	},
-	mounted() {
-
-	},
-  computed: {
-    formattedTime() {
-      const totalSeconds = Math.floor((this.limitTime * 60) - this.elapsedTime / 1000);
-      const hours = Math.floor(totalSeconds / 3600);
-      const minutes = Math.floor((totalSeconds % 3600) / 60);
-      const seconds = totalSeconds % 60;
-      return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
-    }
-  },
-
-	beforeUnmount() {
-
-  },
-
-  beforeDestroy() {
-    clearInterval(this.timerInterval)
-  },
-  methods: {
-    async openPanel(){
-      const t = this
-      t.showPanel = true
-      const res = await getExamIdIdList({paperId: this.bank.paperId,viewType: this.viewType})
-      if(res.code == 200){
-        let list = res.data || []
-        if(list.length>0){
-          // t.idList = list.sort((a, b) => a.id - b.id)
-          this.idList = list
-        }else{
-          t.idList = []
-          uni.showToast({
-            title: '本题库暂无题目',
-            duration: 1000
-          });
-        }
-      }else{
-        uni.$u.toast(res.message)
-      }
-    },
-    openAnswer(){
-      const t = this
-      t.showInput = true
-    },
-    async toQuestion(item,index){
-      this.curTotalIndex = index
-      const curIdList = this.idList.slice(this.curTotalIndex,this.curTotalIndex + 20)
-      this.currentId = this.idList[this.curTotalIndex].id
-      await this.getQuestionsByIds(curIdList)
-      this.currentQ = this.questionList.find(i=>i.id == this.currentId)
-      this.showAnswer()
-      this.showPanel = false
-    },
-
-    open() {
-      // console.log('open');
-    },
-    close() {
-      this.showPanel = false
-      // console.log('close');
-    },
-
-    openInput() {
-      // console.log('open');
-    },
-    closeInput(){
-      this.showInput = false
-    },
-
-    updateTimer() {
-      const currentTime = Date.now();
-      this.elapsedTime = currentTime - this.startTimestamp;
-    },
-    startTimer() {
-      this.startTimestamp = this.startTime ? this.startTime : Date.now();
-      this.timerInterval = setInterval(this.updateTimer, 1000);
-    },
-
-    async getQuestionIds(id){
-      const res = await getExamIdIdList({paperId: id,viewType: this.viewType})
-      if(res.code == 200){
-        let list = res.data || []
-        if(list.length>0){
-          // this.idList = list.sort((a, b) => a.id - b.id)
-          this.idList = list
-          this.curTotalIndex = this.bank.questionId ? this.idList.findIndex(i=>i.id == this.bank.questionId):0
-          const curIdList = this.idList.slice(this.curTotalIndex,this.curTotalIndex + 20)
-          this.currentId = this.idList[this.curTotalIndex].id
-          await this.getQuestionsByIds(curIdList)
-          this.currentQ = this.questionList.find(i=>i.id == this.currentId)
-          this.showAnswer()
-        }else{
-          this.idList = []
-          uni.showToast({
-            title: '本题库暂无题目',
-            duration: 1000
-          });
-        }
-      }else{
-        uni.$u.toast(res.message)
-      }
-    },
-
-    async getErrorIds(id){
-      const res = await getErrorsIdList({bankId: id})
-      if(res.code == 200){
-        let list = res.data || []
-        if(list.length>0){
-          // this.idList = list.sort((a, b) => a - b)
-          this.idList = list
-          this.curTotalIndex = 0
-          const curIdList = this.idList.slice(0,20)
-          this.currentId = this.idList[0].id
-          await this.getQuestionsByIds(curIdList)
-          this.currentQ = this.questionList.find(i=>i.id == this.currentId)
-          this.showAnswer()
-        }else{
-          this.idList = []
-          uni.showToast({
-            title: '本题库暂无错题',
-            duration: 1000
-          });
-        }
-      }else{
-        uni.$u.toast(res.message)
-      }
-    },
-
-    async getQuestionsByIds(idList){
-      const res = await getExamListByIds({paperId: this.bank.paperId,questionIds: idList.map(i=>i.id)})
-      if(res.code == 200){
-        this.questionList = res.data.map(i=>{
-          i.content = JSON.parse(i.content)
-          return i
-        })
-      }else{
-        uni.$u.toast(res.message)
-      }
-    },
-
-    checkboxChange(n) {
-      console.log('change', n);
-    },
-    groupChange(n) {
-      if(this.currentA !== ''){
-        this.confirmAnswer(1)
-      }
-    },
-    radioChange(n) {
-      console.log('radioChange', n);
-    },
-
-    confirmAnswer(type){
-      if(type == 1 && this.currentA == ''){
-        uni.$u.toast('答案为空,请先作答')
-        return
-      }
-      const data = {
-        answer: this.currentQ.questionType==2?this.currentB.join(','):this.currentA,
-        paperId: this.bank.paperId,
-        questionId: this.currentQ.id,
-        studentId: uni.getStorageSync('uid')
-      }
-      postExamAnswer(data).then(res=>{
-        if(res.code == 200){
-          this.currentQ.passed = res.data
-          if (!this.currentQ.studentAnswer) {
-            Vue.set(this.currentQ, 'studentAnswer', {});
-          }
-          Vue.set(this.currentQ.studentAnswer, 'answer', data.answer);
-          if(type == 2){
-            this.nextQ()
-          }
-          if(this.showInput == true){
-            this.showInput = false
-          }
-          // uni.$u.toast('答案已提交')
-        }else{
-          uni.$u.toast(res.message)
-        }
-      })
-    },
-
-    prevQ(){
-      if(this.curTotalIndex - 1>=0){
-        this.curTotalIndex--
-        // if(this.curTotalIndex == 0){
-        //   this.getQuestionsByIds([this.idList[0]]).then(()=>{
-        //     // this.currentQ = this.questionList[this.questionList.length-1]
-        //     this.$set(this, 'currentQ', this.questionList[this.questionList.length-1])
-        //     this.showAnswer()
-        //   })
-        // }else{
-          this.currentId = this.idList[this.curTotalIndex].id
-          if(this.questionList.find(i=>i.id == this.currentId)){
-            this.$set(this, 'currentQ', this.questionList.find(i=>i.id == this.currentId))
-            this.showAnswer()
-          }else{
-            const startIndex = Math.max(0, this.curTotalIndex - 19);
-            const curIdList = this.idList.slice(startIndex, this.curTotalIndex+1);
-            this.getQuestionsByIds(curIdList).then(()=>{
-              // this.currentQ = this.questionList[this.questionList.length-1]
-              this.$set(this, 'currentQ', this.questionList.find(i=>i.id == this.currentId))
-              this.showAnswer()
-            })
-          }
-        // }
-      }else{
-        uni.showToast({
-          title: '已经是第一题了',
-          duration: 1000
-        });
-      }
-    },
-
-    nextQ(){
-      if(this.curTotalIndex + 1<this.idList.length){
-        this.curTotalIndex++
-        this.currentId = this.idList[this.curTotalIndex].id
-        if(this.questionList.find(i=>i.id == this.currentId)){
-          this.$set(this, 'currentQ', this.questionList.find(i=>i.id == this.currentId))
-          this.showAnswer()
-        }else{
-          const curIdList = this.idList.slice(this.curTotalIndex,this.curTotalIndex + 20)
-          this.getQuestionsByIds(curIdList).then(()=>{
-            this.$set(this, 'currentQ', this.questionList.find(i=>i.id == this.currentId))
-            // this.$set(this, 'currentQ', this.questionList[0])
-            this.showAnswer()
-          })
-        }
-      }else{
-        uni.showToast({
-          title: '已经是最后一题了',
-          duration: 1000
-        });
-      }
-    },
-
-    showAnswer(){
-      if(this.currentQ.studentAnswer && this.currentQ.studentAnswer.answer){
-        if(this.currentQ.questionType == 2){
-          this.currentB = this.currentQ.studentAnswer.answer.split(',')
-        }else{
-          this.currentA = this.currentQ.studentAnswer.answer
-        }
-      }else{
-        this.currentB = []
-        this.currentA = ''
-      }
-    },
-
-
-
-    goBack(){
-      clearInterval(this.timerInterval);
-      const url = uni.getStorageSync("prevPage");
-      if(url){
-        uni.reLaunch({
-          url: url
-        });
-      } else{
-        uni.reLaunch({
-          url: '/pages/tabBar/firstPage/firstPage'
-        })
-      }
-    },
-
-    endExam(){
-      const t = this
-      uni.showModal({
-        title: '提示',
-        content: '交卷后将无法再次做题,是否继续?',
-        success: async function (res) {
-          if (res.confirm) {
-            const data = {
-              id: t.bank.id,
-            }
-            postEndExam(data).then(res=>{
-              if(res.code == 200){
-                uni.showToast({
-                  title: '本次考试结束',
-                  duration: 1500
-                })
-                clearInterval(this.timerInterval)
-                setTimeout(()=>{
-                  const url = uni.getStorageSync("prevPage");
-                  if(url){
-                    if(url == '/pages/tabBar/firstPage/firstPage'){
-                      uni.reLaunch({
-                        url:'/pages/tabBar/firstPage/firstPage'
-                      });
-                    }else{
-                      uni.navigateTo({
-                        url: url
-                      })
-                    }
-                  } else{
-                    uni.reLaunch({
-                      url: '/pages/tabBar/firstPage/firstPage'
-                    })
-                  }
-                },1500)
-              }else{
-                uni.$u.toast(res.message)
-              }
-            })
-          } else if (res.cancel) {
-            console.log('用户点击取消');
-          }
-        }
-      })
-    }
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.navBarBox .navBar {
-  background-color:#fff;
-  height: 50px;
-  display: flex;
-  flex-direction: row;
-  justify-content: space-around;
-  align-items: center;
-  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
-}
-.barText{
-  margin-left: -20px;
-  flex: 1;
-  /* margin-left: 20px; */
-  text-align: center;
-  width: 85%;
-  font-size: 16px;
-  /* text-align: center; */
-  font-weight: 600;
-}
-.navBarBox .navBar .logo {
-  width: 82rpx;
-  height: 82rpx;
-  margin-right: 10rpx;
-}
-
-.panel{
-  height: 60vh;
-  background: #f2f2f2;
-  overflow-y: auto;
-  padding: 15px;
-  box-sizing: border-box;
-  display: grid;
-  grid-template-columns: repeat(5, 1fr);
-  gap: 15px;
-  grid-auto-rows: min-content;
-
-  &>view{
-    padding: 5px;
-    box-sizing: border-box;
-    min-width: 33px;
-    border-radius: 4px;
-    text-align: center;
-    background: rgba(41,121,255,0);
-    border: 1px solid #fff;
-    color: #333;
-    background: #f2f2f2;
-    transition: all 100ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
-    box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1);
-    cursor: pointer;
-
-    &:active {
-      box-shadow: 0 15px 20px rgba(0, 0, 0, 0.02);
-      &:after {
-        box-shadow: inset 0px -2px 5px rgb(255, 255, 255),
-        inset 0px 2px 5px rgba(0, 0, 0, 0.15);
-      }
-    }
-
-  }
-
-  .right-a{
-    background: rgba(41,121,255,.1);
-    border: 1px solid #2979ff;
-    color: #2979ff;
-  }
-
-  .wrong-a{
-    background: rgba(237,100,100,.1);
-    border: 1px solid #ed6464;
-    color: #ed6464;
-  }
-}
-
-.panelTwo{
-  height: 60vh;
-  background: #f2f2f2;
-  padding: 15px;
-  box-sizing: border-box;
-
-  /deep/ .u-textarea__field{
-    height: calc(60vh - 110px) !important;
-  }
-}
-
-.m-p-15{
-  width: 100%;
-  padding: 0 15px;
-  box-sizing: border-box;
-
-  .timer{
-    background: #fff;
-    width: auto;
-    margin: 10px auto;
-    padding: 10px;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    border-radius: 99px;
-
-    .timer-b{
-      margin-left: 5px;
-      display: flex;
-      align-items: center;
-      span:last-of-type{
-        font-size: 16px;
-        font-weight: bold;
-        color: #0f7ff9;
-      }
-    }
-
-  }
-
-  .top{
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    margin: 20px 0;
-
-    .ind{
-      font-size: 16px;
-      font-weight: bold;
-      color: #2979ff
-    }
-    .panelBtn{
-      width: 25%;
-      margin: 0;
-      text-align: center;
-      padding: 4px 0;
-      border-radius: 4px;
-      color: #2979ff;
-      background: #f5f7fa;
-      border: 1px solid rgba(41,121,255,.2);
-      box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1);
-      transition: box-shadow .25s ease !important;
-    }
-    .panelBtn:active{
-      background: #f5f7fa;
-      border: 1px solid rgba(41,121,255,1);
-      box-shadow: 0 15px 20px rgba(0, 0, 0, 0.02);
-    }
-  }
-
-  .questions{
-    width: 100%;
-    margin-top: 40rpx;
-    .title{
-      font-size: 16px;
-      margin-bottom: 20px;
-    }
-    .content{
-      padding-left: 10rpx;
-
-      .pickedText{
-        border: 1.5px solid #2979ff !important;
-      }
-      .wrongText{
-        border: 1.5px solid #ed6464 !important;
-      }
-
-      /deep/ .u-textarea__field{
-        min-height: 80px;
-      }
-
-      .answers{
-        background: #ecf5ff;
-        padding: 10px;
-        &>view{
-          margin-bottom: 5px;
-        }
-
-        span{
-          width: 100%;
-          display: block;
-          white-space: pre-wrap;
-          font-weight: bolder;
-          word-break: break-word;
-        }
-        .right{
-          color: #3c9cff
-        }
-        .wrong{
-          color: #e45656
-        }
-      }
-    }
-  }
-}
-.btns{
-  width: 100%;
-  position: fixed;
-  display: flex;
-  align-items: center;
-  justify-content: space-around;
-  z-index: 99;
-  bottom: 20px;
-  left: 0;
-}
-
-/deep/ .u-checkbox{
-  background: #fff;
-  padding: 10px;
-  box-sizing: border-box;
-  border-radius: 8px;
-}
-
-/deep/ .u-radio,.u-checkbox{
-  padding: 12px 10px;
-  box-sizing: border-box;
-  border-radius: 8px;
-  background: #f5f7fa;
-  border: 1.5px solid #fff;
-  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1);
-  transition: box-shadow .25s ease !important;
-}
-
-.myRadio{
-  /deep/ .picked{
-    border: 1.5px solid #2979ff;
-
-    .u-radio__icon-wrap,.u-checkbox__icon-wrap{
-      border-color: #fff !important;
-      span{
-        color: #fff !important;
-      }
-    }
-    span{
-      color: #2979ff
-    }
-  }
-  /deep/ .wronged{
-    border: 1.5px solid #ed6464;
-
-    .u-radio__icon-wrap,.u-checkbox__icon-wrap{
-      border-color: #fff !important;
-      span{
-        color: #fff !important;
-      }
-    }
-    span{
-      color: #ed6464
-    }
-  }
-}
-
-/deep/ .u-checkbox:active {
-  box-shadow: 0 15px 20px rgba(0, 0, 0, 0.02);
-}
-
-/deep/ .u-radio:active {
-  box-shadow: 0 15px 20px rgba(0, 0, 0, 0.02);
-}
-
-</style>
diff --git a/pages/tabBar/firstPage/firstPage.vue b/pages/tabBar/firstPage/firstPage.vue
index 12619cf..039b813 100644
--- a/pages/tabBar/firstPage/firstPage.vue
+++ b/pages/tabBar/firstPage/firstPage.vue
@@ -12,82 +12,102 @@
 <!--				</view>-->
 			</view>
 		</view>
-    <view style="width: 100%;padding: 0 15px;box-sizing: border-box;margin: 20px 0">
-      <u-swiper :list="swiperList" indicatorMode="dot" circular height="160" indicator previousMargin="30" nextMargin="30"></u-swiper>
-    </view>
-
-    <scroll-view scroll-y="true" class="scroll-Y" @scrolltoupper="upper"
-                 @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:calc(100vh - 335px)">
-    <view class="m-p-15">
-      <view class="card" style="width:100%">
-        <view class="card-t">
-          <span class="card-t-l">我的线上课程</span>
-          <span class="card-t-r" @click="toCourses">查看全部</span>
-        </view>
-        <view class="card-c">
-          <view class="card-i" v-for="(item,index) in classList" :key="index">
-            <u-image radius="16px" width="200rpx" height="200rpx" :show-loading="true" :src="getImageUrl(item.course.logo)" mode="aspectFill">
-            </u-image>
-            <!--            <view class="card-i-t">目前已学:{{item.totalProgress}}分钟</view>-->
-            <view class="card-i-r">
-              <view class="card-i-r-t">
-                <view>{{item.phaseName + '-' + item.course.name}}</view>
-                <span style="color: #999;font-size: 12px;display: flex;align-items: center"><u-icon name="account" color="#999" size="18" style="margin-bottom: 0;margin-right: 2px"></u-icon>{{item.createName +'('+ item.createTime +')'}}</span>
-              </view>
-              <view class="card-i-r-b">
-                <u-tag icon="clock" :text="secondsToHms(item.course.period)" type="success" size="mini" shape="circle" plain plainFill></u-tag>
-                <u-button class="study-button" type="primary" text="开始学习" shape="circle" size="small" @click="toStudy(item)"></u-button>
-              </view>
-            </view>
+    <u-toast ref="uToast"></u-toast>
+    <view class="cardList">
+      <view class="switchPanel">
+        <view class="switchBtns">
+          <view class="btnItem" @click="changeTab(1)">
+            危化品
+          </view>
+          <view class="btnItem" @click="changeTab(2)">
+            成品
           </view>
         </view>
-      </view>
-    </view>
-    <view class="m-p-15">
-      <view class="card" style="width:100%">
-        <view class="card-t">
-          <span class="card-t-l">我的考试</span>
-          <uni-data-select
-              v-model="examParams.state"
-              placeholder="完成状态"
-              :localdata="examSelect"
-              :clear="true"
-              @change="changeExam"
-          ></uni-data-select>
-        </view>
-        <view class="card-c card-d" v-if="examList && examList.length>0">
-            <view class="paper-card" v-for="(item,index) in examList" :key="index">
-              <view class="paper-card-t"><span :class="item.state == 0?'blue':item.state == 1?'red':'green'">[{{item.state == 0?'待考试':item.state == 1?'待批阅':'批阅完成'}}]</span>{{item.examPaper.name}}</view>
-              <u-tag style="margin-right: 20rpx;display: inline-block" :text="item.examPaper.categoryName" size="mini"></u-tag>
-              <u-tag style="display: inline-block" :text="item.examPaper.limited == 1?'时长:' + item.examPaper.limitTime + '分钟':'不限时'" plain plainFill size="mini"></u-tag>
-              <view class="paper-card-b">
-                <view style="font-size: 12px;margin-top: 10px;color: #999">
-                  <view>创建人:{{item.createName}}</view>
-                  <view>截止日期:{{item.examPaper.deadline.substring(0,10)}}</view>
-                </view>
-                <view>
-                  <u-button v-if="item.state == 0" @click="toExam(item,1)" class="exam-button" type="primary" text="开始考试" shape="circle" size="small"></u-button>
-                  <u-button v-if="item.state == 2" @click="toExam(item,2)" class="exam-button" type="primary" text="查看" shape="circle" size="small"></u-button>
-                </view>
-              </view>
-            </view>
-        </view>
-        <view class="card-c card-d" v-else>
-          <u-empty text="该状态暂无记录" mode="data"></u-empty>
+        <view class="colBlock" :style="blockStyle">
+          {{blockText}}
         </view>
       </view>
     </view>
-
-    </scroll-view>
+    <view class="cardList" v-show="tabNum == 1">
+      <view class="cardItem" v-for="(item,index) in cardList1" :key="index" @click="scanCode(item.title)">
+        <u-image radius="16px" width="140rpx" height="140rpx" :show-loading="true" :src="item.icon" mode="aspectFill">
+        </u-image>
+        <view class="cardTit">
+          {{item.title}}
+        </view>
+      </view>
+    </view>
+    <view class="cardList" v-show="tabNum == 2">
+      <view class="cardItem" v-for="(item,index) in cardList2" :key="index" @click="scanCode(item.title)">
+        <u-image radius="16px" width="140rpx" height="140rpx" :show-loading="true" :src="item.icon" mode="aspectFill">
+        </u-image>
+        <view class="cardTit">
+          {{item.title}}
+        </view>
+      </view>
+    </view>
+    <u-modal :show="showModal" :title="modalTitle" :showConfirmButton="false" :closeOnClickOverlay="true" ref="uModal" :asyncClose="true" @close="closeModal()">
+      <view v-if="tabNum == 1" style="font-size: 32rpx;font-weight: bold;margin-bottom: 10px">
+        {{hazmat.hazmatBasic?hazmat.hazmatBasic.name:'--'}}({{hazmat.hazmatBasic?hazmat.hazmatBasic.productSn:'--'}})
+      </view>
+      <view v-if="tabNum == 2" style="font-size: 32rpx;font-weight: bold;margin-bottom: 10px">
+        {{product.productBasic?product.productBasic.name:'--'}}({{product.productBasic?product.productBasic.productSn:'--'}})
+      </view>
+      <view>
+        二维码识别号:{{tabNum == 1?hazmat.code:product.code}}
+      </view>
+      <view>
+        入库时间:{{tabNum == 1?hazmat.createTime:product.createTime}}
+      </view>
+      <view v-if="modalTitle == '取用' || modalTitle == '扫码作废'">
+        <span v-if="tabNum == 1">当前包装存量:{{hazmat.remaining}}{{hazmat.hazmatBasic?hazmat.hazmatBasic.unit:''}}</span>
+        <span v-else>当前包装存量:{{product.remaining}}{{product.productBasic?product.productBasic.unit:''}}</span>
+      </view>
+      <view v-if="modalTitle == '归还' || modalTitle == '用尽登记'">
+        取用时存量:{{hazmat.remaining}}{{hazmat.hazmatBasic?hazmat.hazmatBasic.unit:''}}
+      </view>
+      <br>
+      <view v-if="modalTitle == '归还'">
+        请输入归还剩余量:
+        <u--form labelPosition="left" :model="hazmatBack" :rules="rules" ref="uForm">
+          <u-form-item
+              prop="remaining"
+              ref="remaining"
+          >
+            <u--input
+                v-model="hazmatBack.remaining"
+                :placeholder="'必填(单位:' + (hazmat.hazmatBasic?hazmat.hazmatBasic.unit:'') + ')'"
+                type="number"
+            ></u--input>
+          </u-form-item>
+        </u--form>
+      </view>
+      <u-button v-if="modalTitle == '取用'" type="primary" style="margin-top: 20px" text="确认取用" @click="confirmTake()"></u-button>
+      <u-button v-if="modalTitle == '归还'" type="primary" style="margin-top: 20px" text="确认归还" @click="confirmBack()"></u-button>
+      <u-button v-if="modalTitle == '用尽登记'" type="warning" style="margin-top: 20px" text="确认用尽登记" @click="confirmCheck()"></u-button>
+      <u-button v-if="modalTitle == '销售'" type="primary" style="margin-top: 20px" text="确认销售" @click="confirmSell()"></u-button>
+      <u-button v-if="modalTitle == '扫码作废'" type="error" style="margin-top: 20px" text="确认作废该二维码" @click="confirmCancle()"></u-button>
+    </u-modal>
     <tabBar :currentPagePath="page"></tabBar>
 	</view>
 </template>
 
 <script>
 	import tabBar from '../tabBarIndex.vue'
-	import {getClassList, getExamList, getSwiperList} from '../../../api/index.js'
+  import {
+    getHazmatByCode,
+    postHazmatReturn,
+    postHazmatUse,
+    postHazmatUsed,
+    postHazmatDiscard,
+    postProductDiscard, getProductByCode, postProductSold
+  } from '../../../api/index.js'
   import VUE_APP_BASE_URL from 'common/constant.js'
-import { Value } from 'sass';
+  import take from '../../../static/take.png'
+  import takeBack from '../../../static/return.png'
+  import check from '../../../static/check.png'
+  import del from '../../../static/delete.png'
+  import sell from '../../../static/sell.png'
   import {postEndExam} from "../../../api/wearhouse";
 	export default {
 		components:{
@@ -95,36 +115,63 @@
 		},
 		data() {
 			return {
-        swiperList: [
-          '/static/home/swiperPic.png','/static/home/swiperPic.png','/static/home/swiperPic.png'
-        ],
-				titleList:[
-					{
-						label: '默认排序',
-						value: 1,
-					}
-				],
-        classList: [],
-        examList: [],
-        totalPage: 0,
 				page: 'pages/tabBar/firstPage/firstPage',
 				statusBarHeight: '',
-        classParams:{
-          pageNum: 1,
-          pageSize: 3,
-        },
-        examParams: {
-          pageNum: 1,
-          pageSize: 10,
-          state: 0
-        },
-        examSelect: [
-          { value: 0, text: "待考试" },
-          { value: 1, text: "待批阅" },
-          { value: 2, text: "批阅完成" },
+        cardList1: [
+          {
+            icon: take,
+            title: '取用',
+            type: 1
+          },
+          {
+            icon: takeBack,
+            title: '归还',
+            type: 2
+          },
+          {
+            icon: check,
+            title: '用尽登记',
+            type: 3
+          },
+          {
+            icon: del,
+            title: '扫码作废',
+            type: 4
+          }
         ],
-				role: '',
-				realname:''
+        cardList2: [
+          {
+            icon: sell,
+            title: '销售',
+            type: 1
+          },
+          {
+            icon: del,
+            title: '扫码作废',
+            type: 4
+          }
+        ],
+        showModal: false,
+        modalTitle: '取用',
+        hazmat: {},
+        product: {},
+        hazmatBack: {
+          id: null,
+          remaining: ''
+        },
+        rules: {
+          remaining: {
+            type: 'string',
+            required: true,
+            message: '归还剩余量不可为空',
+            trigger: ['blur', 'change']
+          }
+        },
+        tabNum: 1,
+        blockText: '原材料',
+        blockStyle: {
+          transform: 'translateX(0px)'
+        }
 			}
 			
 		},
@@ -132,12 +179,6 @@
 			//获取手机状态栏高度
 			this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
 			// uni.hideTabBar();
-      this.examList = []
-      this.classParams.pageNum = 1
-      this.examParams.pageNum = 1
-      this.getSwiper()
-      this.getClass()
-      this.getExamList()
 		},
 		onShow(){
 			// this.role = uni.getStorageSync('roleName');
@@ -148,63 +189,225 @@
     created(){
       uni.hideTabBar()
     },
+    mounted() {
+
+    },
 		methods: {
-			loginOut() {
-				uni.clearStorageSync();
-				uni.clearStorage();
-				uni.navigateTo({
-					url: '/pages/index/index'
-				})
-			},
-
-      changeExam(e) {
-        this.examParams.pageNum = 1
-        this.getExamList()
-      },
-
-      async getSwiper(){
-        const res = await getSwiperList()
-        if(res.code == 200){
-          let list = res.data.list || []
-          if(list.length>0){
-            this.swiperList = list.map(i=>VUE_APP_BASE_URL + '/api/' + i.imgUrl)
-          }
-        }else{
-          uni.$u.toast(res.message)
-        }
-      },
-
-      getClass(){
-        getClassList(this.classParams).then(res => {
-					if(res.code == 200) {
-						if(res.data && res.data.list.length > 0){
-							this.classList = res.data.list
-						}else {
-              this.classList = []
-						}
-					}else{
-						uni.$u.toast(res.message)
-					}
-				})
-			},
-      getExamList(){
-        getExamList(this.examParams).then(res => {
-          if(res.code == 200) {
-            let list = res.data.list?res.data.list: [];
-            if (res.data.pageNum != 1) {
-              this.examList = this.examList.concat(list)
-            } else {
-              this.examList = res.data.list
+      scanCode(title){
+        const t = this
+        t.modalTitle = title
+        uni.scanCode({
+          autoZoom: false,
+          success: function (res) {
+            if(res && res.result){
+              if(t.tabNum == 1){
+                getHazmatByCode({code: res.result}).then((re)=>{
+                  if(re.code == 200){
+                    t.hazmat = re.data
+                    t.showModal = true
+                  }else{
+                    t.$refs.uToast.show({
+                      type: 'default',
+                      message: re.message
+                    })
+                  }
+                }).catch((err) => {
+                  uni.showToast({
+                    title: err,
+                    duration: 2000
+                  })
+                })
+              }else{
+                getProductByCode({code: res.result}).then((re)=>{
+                  if(re.code == 200){
+                    t.product = re.data
+                    t.showModal = true
+                  }else{
+                    t.$refs.uToast.show({
+                      type: 'default',
+                      message: re.message
+                    })
+                  }
+                }).catch((err) => {
+                  uni.showToast({
+                    title: err,
+                    duration: 2000
+                  })
+                })
+              }
+            }else{
+              t.$refs.uToast.show({
+                type: 'default',
+                message: '该二维码已失效或不包含条码信息',
+              })
             }
-            this.totalPage = res.data.totalPage
-          }else{
-            uni.$u.toast(res.message)
           }
         })
       },
 
-      getImageUrl(logo) {
-        return logo ? VUE_APP_BASE_URL  + '/api/' + logo : '/static/defaultCover.jpg';
+      confirmTake(){
+        const t = this
+        postHazmatUse(t.hazmat.id).then((r)=>{
+          if(r.code == 200){
+            t.$refs.uToast.show({
+              type: 'default',
+              message: r.message
+            })
+          }else{
+            t.$refs.uToast.show({
+              type: 'default',
+              message: r.message
+            })
+          }
+        }).catch((err) => {
+          uni.showToast({
+            title: err,
+            duration: 2000
+          })
+        })
+        t.showModal = false
+      },
+
+      confirmBack() {
+        const t = this
+        t.$refs.uForm.validate().then(res => {
+          t.hazmatBack.id = t.hazmat.id
+          t.hazmatBack.remaining = Number(t.hazmatBack.remaining)
+          postHazmatReturn(t.hazmatBack).then((r)=>{
+            if(r.code == 200){
+              t.$refs.uToast.show({
+                type: 'default',
+                message: r.message
+              })
+            }else{
+              t.$refs.uToast.show({
+                type: 'default',
+                message: r.message
+              })
+            }
+          }).catch((err) => {
+            uni.showToast({
+              title: err,
+              duration: 2000
+            })
+          })
+          t.showModal = false
+          t.hazmatBack.remaining = ''
+        }).catch(errors => {
+          uni.$u.toast('请完善必填信息')
+        })
+      },
+
+      confirmCheck(){
+        const t = this
+        postHazmatUsed(t.hazmat.id).then((r)=>{
+          if(r.code == 200){
+            t.$refs.uToast.show({
+              type: 'default',
+              message: r.message
+            })
+          }else{
+            t.$refs.uToast.show({
+              type: 'default',
+              message: r.message
+            })
+          }
+        }).catch((err) => {
+          uni.showToast({
+            title: err,
+            duration: 2000
+          })
+        })
+        t.showModal = false
+      },
+
+      confirmSell(){
+        const t = this
+        postProductSold(t.product.id).then((r)=>{
+          if(r.code == 200){
+            t.$refs.uToast.show({
+              type: 'default',
+              message: r.message
+            })
+          }else{
+            t.$refs.uToast.show({
+              type: 'default',
+              message: r.message
+            })
+          }
+        }).catch((err) => {
+          uni.showToast({
+            title: err,
+            duration: 2000
+          })
+        })
+        t.showModal = false
+      },
+
+      confirmCancle(){
+        const t = this
+        if(t.tabNum == 1){
+          postHazmatDiscard(t.hazmat.id).then((r)=>{
+            if(r.code == 200){
+              t.$refs.uToast.show({
+                type: 'default',
+                message: r.message
+              })
+            }else{
+              t.$refs.uToast.show({
+                type: 'default',
+                message: r.message
+              })
+            }
+          }).catch((err) => {
+            uni.showToast({
+              title: err,
+              duration: 2000
+            })
+          })
+        }else{
+          postProductDiscard(t.product.id).then((r)=>{
+            if(r.code == 200){
+              t.$refs.uToast.show({
+                type: 'default',
+                message: r.message
+              })
+            }else{
+              t.$refs.uToast.show({
+                type: 'default',
+                message: r.message
+              })
+            }
+          }).catch((err) => {
+            uni.showToast({
+              title: err,
+              duration: 2000
+            })
+          })
+        }
+        t.showModal = false
+      },
+
+      closeModal(){
+        this.hazmat = {}
+        this.product = {}
+        this.hazmatBack={
+          id: null,
+          remaining: ''
+        }
+        this.showModal = false
+      },
+
+      changeTab(num){
+        this.tabNum = num
+        if(num == 1){
+          this.blockStyle.transform = 'translateX(0px)'
+          this.blockText = '危化品'
+        }else{
+          this.blockStyle.transform = 'translateX(calc(100% - 2px))'
+          this.blockText = '成品'
+        }
+        console.log(this.tabNum,'num')
       },
 
       toStudy(item) {
@@ -212,59 +415,6 @@
         uni.navigateTo({
           url: `/pages/tabBar/current/detail?bank=` + encodeURIComponent(JSON.stringify(item))
         })
-      },
-
-      toExam(item,type){
-        if(type == 1 && !item.startTime && item.examPaper.limited == 1){
-          uni.showModal({
-            title: '提示',
-            content: '该考试限制时长为:' + item.examPaper.limitTime + '分钟,进入后开始计时,计时结束自动交卷,是否继续?',
-            success: function (res) {
-              if (res.confirm) {
-                uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
-                uni.navigateTo({
-                  url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type))
-                })
-              } else if (res.cancel) {
-                console.log('用户点击取消');
-              }
-            }
-          })
-        }else{
-          uni.setStorageSync("prevPage", '/pages/tabBar/firstPage/firstPage');
-          uni.navigateTo({
-            url: `/pages/tabBar/firstPage/exam?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type))
-          })
-        }
-      },
-
-      secondsToHms(seconds) {
-        seconds = Number(seconds);
-        const h = Math.floor(seconds / 3600);
-        const m = Math.floor(seconds % 3600 / 60);
-        const s = Math.floor(seconds % 3600 % 60);
-
-        const hDisplay = h > 0 ? String(h).padStart(2, '0') : '00';
-        const mDisplay = m > 0 ? String(m).padStart(2, '0') : '00';
-        const sDisplay = s > 0 ? String(s).padStart(2, '0') : '00';
-        return `${hDisplay}:${mDisplay}:${sDisplay}`;
-      },
-
-      upper(e) {
-        // console.log(e)
-      },
-      lower(e) {
-        //并且让页码+1,调用获取数据的方法获取第二页数据
-        this.examParams.pageNum++
-        //此处调用自己获取数据列表的方法
-        if (this.examParams.pageNum > this.totalPage){
-          uni.$u.toast('已加载全部数据')
-          return
-        }
-        this.getExamList()
-      },
-      scrollView(e) {
-        // console.log(e)
       },
 
       toCourses(){
@@ -278,7 +428,7 @@
 
 </script>
 
-<style lang="scss">
+<style lang="scss" scoped>
 .navBarBox .navBar {
 	background-color:#fff;
 	  height: 50px;
@@ -286,8 +436,7 @@
 	  flex-direction: row;
 	  justify-content: center;
 	  align-items: center;
-  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
-	
+    box-shadow: 0 3px 12px rgba(0,0,0,0.05);
 }
 .fix{
 	position: sticky;
@@ -302,187 +451,107 @@
   font-size: 16px;
   font-weight: 600;
   flex: 2;
-  margin-left: 45%;
+  text-align: center;
 }
 .statusBar{
 	background-color:lightgrey;
 }
-.m-p-15{
-  width: 100%;
-  box-sizing: border-box;
-  padding: 0 15px;
+/deep/ .u-toast__content{
+  white-space: pre-wrap !important;
+  word-break: break-all !important;
+  word-wrap: break-word !important;
 }
-.card{
-  width: 100%;
-  margin-bottom: 40rpx;
+/deep/ .u-modal__content{
+  display: flex;
+  flex-direction: column !important;
+  align-items: center;
+  text-align: left;
 
-  .card-t{
+  &>view{
     width: 100%;
-    padding: 0 6rpx;
-    box-sizing: border-box;
+  }
+}
+.switchPanel{
+  width: 100%;
+  height: 84rpx;
+  position: relative;
+  border: 2px solid #fff;
+  box-sizing: border-box;
+  border-radius: 8px;
+  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1),0px 3px 6px rgba(0, 0, 0, 0.05) inset !important;
+
+  .switchBtns{
+    width: 100%;
+    height: 80rpx;
+    position: absolute;
+    top: 0;
+    left: 0;
     display: flex;
     align-items: center;
     justify-content: space-between;
-    margin-bottom: 20rpx;
+    z-index: 99;
 
-    .card-t-l{
-      font-size: 32rpx;
-      font-weight: bold;
-    }
-    .card-t-r{
-      color: #999;
-      cursor: pointer;
-    }
-    /deep/ .uni-stat__select{
-      display: flex;
-      flex: 0;
-      justify-content: right;
-      .uni-stat-box{
-        display: flex;
-
-        flex: 0;
-        justify-content: right;
-        .uni-select{
-          width: 320rpx;
-          border-radius: 99px;
-          padding: 0 10px;
-          background: #fff;
-
-          .uni-select__input-placeholder{
-            color: #999;
-          }
-        }
-      }
-
+    .btnItem{
+      width: 50%;
+      height: 100%;
+      box-sizing: border-box;
+      text-align: center;
+      line-height: 80rpx;
     }
   }
 
-  .card-c{
-    background: #fff;
-    border-radius: 20px;
-    padding: 15px;
-
-    .card-i{
-      padding-bottom: 15px;
-      margin-bottom: 15px;
-      border-bottom: 1px solid #f0f0f0;
-      position: relative;
-      display: flex;
-      align-items: flex-start;
-      box-sizing: border-box;
-
-      &:last-of-type{
-        margin-bottom: 0;
-        padding-bottom: 0;
-        border-bottom: none;
-      }
-      .card-i-t{
-        position: absolute;
-        width: 250rpx;
-        height: 30px;
-        border-radius: 8rpx;
-        line-height: 30px;
-        color: #fff;
-        padding: 0 10rpx;
-        box-sizing: border-box;
-        left: 0;
-        bottom: 0;
-        background: rgba(0,0,0,.4);
-      }
-      .card-i-r{
-        width: 100%;
-        height: 200rpx;
-        margin-left: 20rpx;
-        display: flex;
-        flex-direction: column;
-        justify-content: space-between;
-        .card-i-r-t{
-          view{
-            font-size: 32rpx;
-            margin-bottom: 10rpx;
-            font-family: "PingFang SC";
-            font-weight: 800;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            display: -webkit-box;
-            -webkit-line-clamp: 2;
-            -webkit-box-orient: vertical;
-          }
-        }
-        .card-i-r-b{
-          width: 100%;
-          display: flex;
-          align-items: center;
-          justify-content: space-between;
-
-          .study-button{
-            width: 220rpx;
-            margin: 0;
-            box-shadow: 3px 3px 12px rgba(51,133,217,.3), -2px -2px 6px #fff;
-            border: 1px solid rgba(255,255,255,.8);
-          }
-        }
-      }
-    }
-  }
-  .card-d{
-    background: none;
-    padding: 0 0 15px;
-    .paper-card{
-      background: #fff;
-      margin-bottom: 15px;
-      padding: 15px;
-      box-sizing: border-box;
-      position: relative;
-      border-radius: 20px;
-
-      &:last-of-type{
-        margin-bottom: 0;
-      }
-
-      .paper-card-t{
-        font-size: 32rpx;
-        margin-bottom: 10rpx;
-        font-family: "PingFang SC";
-        font-weight: 800;
-        white-space: nowrap;
-        overflow: hidden;
-        text-overflow: ellipsis;
-
-        .blue{
-          font-size: 28rpx;
-          color: #0f7ff9
-        }
-
-        .green{
-          font-size: 28rpx;
-          color: #5ac725
-        }
-        .red{
-          font-size: 28rpx;
-          color: #f56c6c
-        }
-      }
-
-      .paper-card-b{
-        display: flex;
-        align-items: flex-end;
-        justify-content: space-between;
-
-        .exam-button{
-          width: 220rpx;
-          margin: 0;
-          box-shadow: 3px 3px 12px rgba(51,133,217,.3), -2px -2px 6px #fff;
-          border: 1px solid rgba(255,255,255,.8);
-        }
-      }
-    }
+  .colBlock{
+    position: absolute;
+    top: 5rpx;
+    left: 0;
+    z-index: 999;
+    width: 50%;
+    height: 70rpx;
+    border-radius: 8px;
+    background: rgb(0,172,238);
+    background: linear-gradient(0deg, rgba(0,172,238,1) 0%, rgba(2,126,251,1) 100%);
+    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2) !important;
+    transition: .4s;
+    text-align: center;
+    line-height: 70rpx;
+    color: #fff;
+    font-weight: bold;
+    letter-spacing: 2px;
+    border: 2rpx solid #fff;
   }
 }
+.cardList{
+  width: 100%;
+  box-sizing: border-box;
+  padding: 0 15px;
+  margin-top: 20px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  flex-wrap: wrap;
 
-.badge span{
-	text-align: center;
-	width: 100%;
+  .cardItem{
+    width: 100%;
+    padding: 15px 30px;
+    box-sizing: border-box;
+    margin-bottom: 15px;
+    background: #fff;
+    border-radius: 40rpx;
+    display: flex;
+    align-items: center;
+    box-shadow: 0 10rpx 20rpx rgba(0,0,0,.05);
+    transition: box-shadow .15s ease !important;
+
+    &:active{
+      box-shadow: none;
+    }
+
+    .cardTit{
+      font-size: 36rpx;
+      font-weight: bold;
+      margin-left: 30px;
+    }
+  }
 }
 
 </style>
\ No newline at end of file
diff --git a/pages/tabBar/tabBarIndex.vue b/pages/tabBar/tabBarIndex.vue
index fba257b..ea10807 100644
--- a/pages/tabBar/tabBarIndex.vue
+++ b/pages/tabBar/tabBarIndex.vue
@@ -65,8 +65,13 @@
   border-radius: 99px;
   overflow: hidden;
   box-shadow: 0 -6px 10px rgba(150, 150, 150, 0.1), 0 6px 10px rgba(150, 150, 150, 0.1);
-  backdrop-filter: blur(10px);
-  -webkit-backdrop-filter: blur(10px);
+
+  /deep/ .u-tabbar__content{
+    background-color: rgba(255,255,255,.4);
+    backdrop-filter: blur(5px);
+    -webkit-backdrop-filter: blur(5px);
+    border: 1px solid rgba(255,255,255,.8);
+  }
 
   /deep/ .u-tabbar .u-border-top{
     border-color: rgba(0,0,0,0) !important;
diff --git a/pages/tabBar/utils/tabBar.js b/pages/tabBar/utils/tabBar.js
index 194fc09..8e81cca 100644
--- a/pages/tabBar/utils/tabBar.js
+++ b/pages/tabBar/utils/tabBar.js
@@ -9,13 +9,7 @@
 				"pagePath": "pages/tabBar/current/current",
 				"iconPath": "/static/notice.png",
 				"selectedIconPath": "/static/notice-sel.png",
-				"text": "课程"
-			},
-			{
-				"pagePath": "pages/tabBar/wearhouse/wearhouse",
-				"iconPath": "/static/wearhouse.png",
-				"selectedIconPath": "/static/wearhouse_sel.png",
-				"text": "刷题"
+				"text": "记录查询"
 			},
 			{
 				"pagePath": "pages/tabBar/count/count",
@@ -27,10 +21,28 @@
 
 const user_other = [
 	{
+		"pagePath": "pages/tabBar/notice/notice",
+		"iconPath": "/static/notice.png",
+		"selectedIconPath": "/static/notice-sel.png",
+		"text": "工作通知"
+	},
+	{
+		"pagePath": "pages/tabBar/response/response",
+		"iconPath": "/static/mine1.png",
+		"selectedIconPath": "/static/mine1-selected.png",
+		"text": "我的叫应"
+	},
+	{
 		"pagePath": "pages/tabBar/current/current",
 		"iconPath": "/static/send.png",
 		"selectedIconPath": "/static/send_selected.png",
 		"text": "我发布的"
+	},
+	{
+		"pagePath": "pages/tabBar/information/information",
+		"iconPath": "/static/send.png",
+		"selectedIconPath": "/static/send_selected.png",
+		"text": "信息发布"
 	}
 ]
 
diff --git a/pages/tabBar/wearhouse/questions.vue b/pages/tabBar/wearhouse/questions.vue
deleted file mode 100644
index c2be645..0000000
--- a/pages/tabBar/wearhouse/questions.vue
+++ /dev/null
@@ -1,689 +0,0 @@
-<template>
-  <view style="display: flex;flex-direction: column;height: 100%;">
-    <!-- 自定义导航栏 -->
-    <view class="navBarBox">
-      <!-- 状态栏占位 -->
-      <view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
-      <!-- 真正的导航栏内容 -->
-      <view style="display: flex; flex-direction: column;">
-        <view class="navBar">
-          <u-icon name="arrow-left" color="black" size="17" style="margin-left: 8px;" @click="goBack"/>
-          <view class="barText">题目内容</view>
-          <!-- 					<view >
-                      <u-button type="text" @click="loginOut" style="color: blue;margin-right: 5px;">退出</u-button>
-                    </view> -->
-        </view>
-      </view>
-    </view>
-    <view class="m-p-15" v-if="idList && idList.length>0">
-      <view class="top">
-        <view class="ind">{{'第 ' + (curTotalIndex+1) + ' 题'}}</view>
-        <view v-if="type == 1 || type == 2" class="panelBtn" @click="openPanel">答题卡</view>
-      </view>
-      <view class="questions">
-        <view class="title">
-          <span>【{{currentQ.questionType == 1?'单选题':currentQ.questionType == 2?'多选题':currentQ.questionType == 3?'判断题':'简答题'}}】</span>
-          {{currentQ.title}}
-        </view>
-        <view class="content">
-          <u-checkbox-group
-              v-if="(type == 1 || type == 2)&& currentQ.questionType==2"
-              v-model="currentB"
-              placement="column"
-              iconPlacement="right"
-              @change="checkboxChange"
-              class="myRadio"
-          >
-            <u-checkbox
-                :customStyle="{marginBottom: '15px'}"
-                v-for="(item, index) in currentQ.content.items"
-                :key="index"
-                :label="item.prefix +':'+ item.content"
-                :name="item.prefix"
-                :class="{'picked': currentB.includes(item.prefix)}"
-            >
-            </u-checkbox>
-          </u-checkbox-group>
-
-          <u-checkbox-group
-              v-if="type == 3 && currentQ.questionType==2"
-              v-model="currentB"
-              placement="column"
-              iconPlacement="right"
-              @change="checkboxChange"
-              disabled
-              class="myRadio"
-          >
-            <u-checkbox
-                :customStyle="{marginBottom: '15px'}"
-                v-for="(item, index) in currentQ.content.items"
-                :key="index"
-                :label="item.prefix +':'+ item.content"
-                :name="item.prefix"
-                :class="{'picked': currentQ.answer.includes(item.prefix),'wronged': currentB.includes(item.prefix) && !currentQ.answer.includes(item.prefix)}"
-            >
-            </u-checkbox>
-          </u-checkbox-group>
-
-          <u-radio-group v-model="currentA" class="myRadio" iconPlacement="right" placement="column" @change="groupChange" v-if="(type == 1 || type == 2)&&(currentQ.questionType==1||currentQ.questionType==3)">
-            <u-radio
-                :customStyle="{marginBottom: '15px'}"
-                v-for="(item, index) in currentQ.content.items"
-                :key="index"
-                shape="square"
-                :label="item.prefix +':'+ item.content"
-                :name="item.prefix"
-                @change="radioChange"
-                :class="{'picked': currentA == item.prefix}"
-            >
-            </u-radio>
-          </u-radio-group>
-
-          <u-radio-group v-model="currentA" class="myRadio" iconPlacement="right" placement="column" @change="groupChange" v-if="type == 3 && (currentQ.questionType==1||currentQ.questionType==3)" disabled>
-            <u-radio
-                :customStyle="{marginBottom: '15px'}"
-                v-for="(item, index) in currentQ.content.items"
-                :key="index"
-                shape="square"
-                :label="item.prefix +':'+ item.content"
-                :name="item.prefix"
-                @change="radioChange"
-                :class="{'picked': currentQ.answer == item.prefix, 'wronged': currentA == item.prefix && currentA != currentQ.answer}"
-            >
-            </u-radio>
-          </u-radio-group>
-
-          <u--textarea v-model="currentA" v-if="(type == 1 || type == 2)&&(currentQ.questionType==4)" style="margin-bottom: 15px" :maxlength="-1" placeholder="请输入答案" autoHeight @focus="openAnswer"></u--textarea>
-          <u--textarea v-model="currentA" v-if="type == 3&&(currentQ.questionType==4)" :class="currentQ.answer == currentA?'pickedText':'wrongText'" style="margin-bottom: 15px" :maxlength="-1" placeholder="请输入答案" autoHeight disabled></u--textarea>
-
-          <u-button style="width: 80%;margin: 5px auto 15px"
-                    v-if="currentQ.questionType==2 && currentB.length>0 && type !== 3"
-                    type="primary" shape="circle" text="确认答案" @click="confirmAnswer(2)"></u-button>
-          <view class="answers" v-if="currentA !==''||currentB.length>0">
-            <view>你的答案:
-              <span v-if="currentQ.questionType==2" :class="currentQ.answer == currentB.join(',')?'right':'wrong'">{{currentB.join(',')}}</span>
-              <span v-else :class="currentQ.answer == currentA?'right':'wrong'">{{currentA}}</span>
-            </view>
-            <view>正确答案:<span class="right">{{currentQ.answer}}</span></view>
-          </view>
-        </view>
-      </view>
-    </view>
-    <view class="btns" v-if="idList && idList.length>0">
-      <u-button style="width: 30%" type="error" shape="circle" size="small" text="上一题" @click="prevQ"></u-button>
-<!--      <u-button style="width: 30%" type="error" shape="circle" plain size="small" text="查看答案" @click="showA"></u-button>-->
-      <u-button v-if="curTotalIndex < idList.length - 1" style="width: 30%" type="error" shape="circle" size="small" text="下一题" @click="nextQ"></u-button>
-      <u-button v-if="curTotalIndex == idList.length - 1" style="width: 30%" type="primary" shape="circle" size="small" text="退出" @click="goBack"></u-button>
-    </view>
-    <view v-else>
-      <u-empty
-          mode="list"
-          icon="http://cdn.uviewui.com/uview/empty/list.png"
-      >
-      </u-empty>
-    </view>
-    <u-popup :show="showPanel" :round="40" mode="bottom" @close="close" @open="open">
-      <view class="panel">
-        <view :class="item.passed==1?'right-a':item.passed==0?'wrong-a':''" v-for="(item,index) in idList" @click="toQuestion(item,index)">
-          {{index + 1}}
-        </view>
-      </view>
-    </u-popup>
-    <u-popup :show="showInput" :round="40" mode="bottom" @close="closeInput" @open="openInput">
-      <view class="panelTwo">
-        <u--textarea v-model="currentA" :maxlength="-1" placeholder="请输入答案"></u--textarea>
-        <u-button shape="circle" type="primary" style="width: 80%;margin-top: 20px" text="确认答案" @click="confirmAnswer(1)"></u-button>
-      </view>
-    </u-popup>
-	</view>
-</template>
-
-<script>
-import {getQuestionIdList,getQuestionByIds,postExerciseAnswer,getErrorsIdList} from '../../../api/wearhouse.js'
-
-export default {
-	components: {
-
-	},
-	data() {
-		return {
-      statusBarHeight: 0,
-      bank: {},
-      idList: [],
-      questionList: [],
-      curTotalIndex: 0,
-      currentId: null,
-      currentQ: {},
-      currentA: '',
-      currentB: [],
-      type: '',
-      showPanel: false,
-      showInput: false
-		}
-	},
-  onReady(){
-  },
-	onLoad(e) {
-    this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight']
-    this.bank = e.bank && JSON.parse(decodeURIComponent(e.bank))
-    this.type = e.type && JSON.parse(decodeURIComponent(e.type))
-    if(this.type == '1' || this.type == '2'){
-      this.getQuestionIds(this.bank.id)
-    }else{
-      this.getErrorIds(this.bank.id)
-    }
-	},
-	onShow(){
-
-	},
-	mounted() {
-
-	},
-  computed: {
-
-  },
-	beforeUnmount() {
-
-  },
-
-  beforeDestroy() {
-
-  },
-
-  methods: {
-    async openPanel(){
-      const t = this
-      t.showPanel = true
-      const res = await getQuestionIdList({bankId: t.bank.id})
-      if(res.code == 200){
-        let list = res.data || []
-        if(list.length>0){
-          // t.idList = list.sort((a, b) => a.id - b.id)
-          this.idList = list
-        }else{
-          t.idList = []
-          uni.showToast({
-            title: '本题库暂无题目',
-            duration: 1000
-          });
-        }
-      }else{
-        uni.$u.toast(res.message)
-      }
-    },
-    openAnswer(){
-      const t = this
-      t.showInput = true
-    },
-    async toQuestion(item,index){
-      this.curTotalIndex = index
-      const curIdList = this.idList.slice(this.curTotalIndex,this.curTotalIndex + 20)
-      this.currentId = this.idList[this.curTotalIndex].id
-      await this.getQuestionsByIds(curIdList)
-      this.currentQ = this.questionList.find(i=>i.id == this.currentId)
-      this.showAnswer()
-      this.showPanel = false
-    },
-
-    open() {
-      // console.log('open');
-    },
-    close() {
-      this.showPanel = false
-      // console.log('close');
-    },
-    openInput() {
-      // console.log('open');
-    },
-    closeInput(){
-      this.showInput = false
-    },
-    async getQuestionIds(id){
-      const res = await getQuestionIdList({bankId: id})
-      if(res.code == 200){
-        let list = res.data || []
-        if(list.length>0){
-          // this.idList = list.sort((a, b) => a.id - b.id)
-          this.idList = list
-          this.curTotalIndex = this.bank.questionId ? this.idList.findIndex(i=>i.id == this.bank.questionId):0
-          const curIdList = this.idList.slice(this.curTotalIndex,this.curTotalIndex + 20)
-          this.currentId = this.idList[this.curTotalIndex].id
-          await this.getQuestionsByIds(curIdList)
-          this.currentQ = this.questionList.find(i=>i.id == this.currentId)
-          this.showAnswer()
-        }else{
-          this.idList = []
-          uni.showToast({
-            title: '本题库暂无题目',
-            duration: 1000
-          });
-        }
-      }else{
-        uni.$u.toast(res.message)
-      }
-    },
-
-    async getErrorIds(id){
-      const res = await getErrorsIdList({bankId: id})
-      if(res.code == 200){
-        let list = res.data || []
-        if(list.length>0){
-          // this.idList = list.sort((a, b) => a - b)
-          this.idList = list
-          this.curTotalIndex = 0
-          const curIdList = this.idList.slice(0,20)
-          this.currentId = this.idList[0]
-          await this.getQuestionsByIds(curIdList)
-          this.currentQ = this.questionList.find(i=>i.id == this.currentId)
-          this.showAnswer()
-        }else{
-          this.idList = []
-          uni.showToast({
-            title: '本题库暂无错题',
-            duration: 1000
-          });
-        }
-      }else{
-        uni.$u.toast(res.message)
-      }
-    },
-
-    async getQuestionsByIds(idList){
-      let list = []
-      if(this.type == 3){
-        list = idList
-      }else{
-        list = idList.map(i=>i.id)
-      }
-      const res = await getQuestionByIds({questionIds: list})
-      if(res.code == 200){
-        this.questionList = res.data.map(i=>{
-          i.content = JSON.parse(i.content)
-          return i
-        })
-      }else{
-        uni.$u.toast(res.message)
-      }
-    },
-
-    checkboxChange(n) {
-      console.log('change', n);
-    },
-    groupChange(n) {
-      if(this.currentA !== ''){
-        this.confirmAnswer(1)
-      }
-    },
-    radioChange(n) {
-      console.log('radioChange', n);
-    },
-
-    confirmAnswer(type){
-      if(type == 1 && this.currentA == ''){
-        uni.$u.toast('答案为空,请先作答')
-        return
-      }
-      const data = {
-        answer: this.currentQ.questionType==2?this.currentB.join(','):this.currentA,
-        bankId: this.bank.id,
-        questionId: this.currentQ.id
-      }
-      postExerciseAnswer(data).then(res=>{
-        if(res.code == 200){
-          this.currentQ.exExerciseAnswer.passed = res.data.passed
-          this.currentQ.exExerciseAnswer.answer = res.data.answer
-          if(type == 2){
-            this.nextQ()
-          }
-          if(this.showInput == true){
-            this.showInput = false
-          }
-          // uni.$u.toast('答案已提交')
-        }else{
-          uni.$u.toast(res.message)
-        }
-      })
-    },
-
-    prevQ(){
-      if(this.curTotalIndex - 1>=0){
-        this.curTotalIndex--
-        // if(this.curTotalIndex == 0){
-        //   this.getQuestionsByIds([this.idList[0]]).then(()=>{
-        //     this.currentQ = this.questionList[this.questionList.length-1]
-        //     // this.$set(this, 'currentQ', this.questionList.find(i=>i.id == this.currentId))
-        //     this.showAnswer()
-        //   })
-        // }else{
-          if(this.type == 3){
-            this.currentId = this.idList[this.curTotalIndex]
-          }else{
-            this.currentId = this.idList[this.curTotalIndex].id
-          }
-          if(this.questionList.find(i=>i.id == this.currentId)){
-            this.$set(this, 'currentQ', this.questionList.find(i=>i.id == this.currentId))
-            this.showAnswer()
-          }else{
-            const startIndex = Math.max(0, this.curTotalIndex - 19);
-            const curIdList = this.idList.slice(startIndex, this.curTotalIndex+1);
-            this.getQuestionsByIds(curIdList).then(()=>{
-              // this.currentQ = this.questionList[this.questionList.length-1]
-              this.$set(this, 'currentQ', this.questionList.find(i=>i.id == this.currentId))
-              this.showAnswer()
-            })
-          }
-        // }
-      }else{
-        uni.showToast({
-          title: '已经是第一题了',
-          duration: 1000
-        });
-      }
-    },
-
-    nextQ(){
-      if(this.curTotalIndex + 1<this.idList.length){
-        this.curTotalIndex++
-        if(this.type == 3){
-          this.currentId = this.idList[this.curTotalIndex]
-        }else{
-          this.currentId = this.idList[this.curTotalIndex].id
-        }
-        if(this.questionList.find(i=>i.id == this.currentId)){
-          this.$set(this, 'currentQ', this.questionList.find(i=>i.id == this.currentId))
-          this.showAnswer()
-        }else{
-          const curIdList = this.idList.slice(this.curTotalIndex,this.curTotalIndex + 20)
-          this.getQuestionsByIds(curIdList).then(()=>{
-            this.$set(this, 'currentQ', this.questionList.find(i=>i.id == this.currentId))
-            // this.currentQ = this.questionList[0]
-            this.showAnswer()
-          })
-        }
-      }else{
-        uni.showToast({
-          title: '已经是最后一题了',
-          duration: 1000
-        });
-      }
-    },
-
-    showAnswer(){
-      if(this.currentQ.exExerciseAnswer && this.currentQ.exExerciseAnswer.answer){
-        if(this.currentQ.questionType == 2){
-          this.currentB = this.currentQ.exExerciseAnswer.answer.split(',')
-        }else{
-          this.currentA = this.currentQ.exExerciseAnswer.answer
-        }
-      }else{
-        this.currentB = []
-        this.currentA = ''
-      }
-    },
-
-    showA(){
-      uni.showModal({
-        title: '正确答案',
-        content: this.currentQ.answer,
-        showCancel: false,
-        success: function (res) {
-          if (res.confirm) {
-            console.log('用户点击确定');
-          }
-        }
-      });
-    },
-
-    goBack(){
-      const url = uni.getStorageSync("prevPage");
-      if(url){
-        if(url == '/pages/tabBar/wearhouse/wearhouse'){
-          uni.reLaunch({
-            url:'/pages/tabBar/wearhouse/wearhouse'
-          });
-        }else{
-          uni.navigateTo({
-            url: url
-          })
-        }
-      } else{
-        uni.reLaunch({
-          url: '/pages/tabBar/wearhouse/wearhouse'
-        })
-      }
-    }
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.navBarBox .navBar {
-  background-color:#fff;
-  height: 50px;
-  display: flex;
-  flex-direction: row;
-  justify-content: space-around;
-  align-items: center;
-  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
-}
-.barText{
-  margin-left: -20px;
-  flex: 1;
-  /* margin-left: 20px; */
-  text-align: center;
-  width: 85%;
-  font-size: 16px;
-  /* text-align: center; */
-  font-weight: 600;
-}
-.navBarBox .navBar .logo {
-  width: 82rpx;
-  height: 82rpx;
-  margin-right: 10rpx;
-}
-
-.panel{
-  height: 60vh;
-  background: #f2f2f2;
-  overflow-y: auto;
-  padding: 15px;
-  box-sizing: border-box;
-  display: grid;
-  grid-template-columns: repeat(5, 1fr);
-  gap: 15px;
-  grid-auto-rows: min-content;
-
-  &>view{
-    padding: 5px;
-    box-sizing: border-box;
-    min-width: 33px;
-    border-radius: 4px;
-    text-align: center;
-    background: rgba(41,121,255,0);
-    border: 1px solid #fff;
-    color: #333;
-    background: #f2f2f2;
-    transition: all 100ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
-    box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1);
-    cursor: pointer;
-
-    &:active {
-      box-shadow: 0 15px 20px rgba(0, 0, 0, 0.02);
-      &:after {
-        box-shadow: inset 0px -2px 5px rgb(255, 255, 255),
-        inset 0px 2px 5px rgba(0, 0, 0, 0.15);
-      }
-    }
-
-  }
-
-  .right-a{
-    background: rgba(41,121,255,.1);
-    border: 1px solid #2979ff;
-    color: #2979ff;
-  }
-
-  .wrong-a{
-    background: rgba(237,100,100,.1);
-    border: 1px solid #ed6464;
-    color: #ed6464;
-  }
-}
-
-.panelTwo{
-  height: 60vh;
-  background: #f2f2f2;
-  padding: 15px;
-  box-sizing: border-box;
-
-  /deep/ .u-textarea__field{
-    height: calc(60vh - 110px) !important;
-  }
-}
-
-.m-p-15{
-  width: 100%;
-  padding: 0 15px;
-  box-sizing: border-box;
-
-  .top{
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    margin: 20px 0;
-
-    .ind{
-      font-size: 18px;
-      font-weight: bold;
-      color: #2979ff;
-    }
-
-    .panelBtn{
-      width: 25%;
-      margin: 0;
-      text-align: center;
-      padding: 4px 0;
-      border-radius: 4px;
-      color: #2979ff;
-      background: #f5f7fa;
-      border: 1px solid rgba(41,121,255,.2);
-      box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1);
-      transition: box-shadow .25s ease !important;
-    }
-    .panelBtn:active{
-      background: #f5f7fa;
-      border: 1px solid rgba(41,121,255,1);
-      box-shadow: 0 15px 20px rgba(0, 0, 0, 0.02);
-    }
-  }
-  .questions{
-    width: 100%;
-    margin-top: 40px;
-    .title{
-      font-size: 16px;
-      margin-bottom: 20px;
-    }
-    .content{
-      padding-left: 10rpx;
-
-      .pickedText{
-        border: 1.5px solid #2979ff !important;
-      }
-      .wrongText{
-        border: 1.5px solid #ed6464 !important;
-      }
-
-      /deep/ .u-textarea__field{
-        min-height: 80px;
-      }
-
-      .answers{
-        background: #ecf5ff;
-        padding: 10px;
-
-        &>view{
-          margin-bottom: 5px;
-        }
-
-        span{
-          width: 100%;
-          display: block;
-          white-space: pre-wrap;
-          font-weight: bolder;
-          word-break: break-word;
-        }
-        .right{
-          color: #3c9cff
-        }
-        .wrong{
-          color: #e45656
-        }
-      }
-    }
-  }
-}
-.btns{
-  width: 100%;
-  position: fixed;
-  display: flex;
-  align-items: center;
-  justify-content: space-around;
-  z-index: 99;
-  bottom: 20px;
-  left: 0;
-}
-
-/deep/ .u-checkbox{
-  background: #fff;
-  padding: 10px;
-  box-sizing: border-box;
-  border-radius: 8px;
-}
-
-/deep/ .u-radio,.u-checkbox{
-  padding: 12px 10px;
-  box-sizing: border-box;
-  border-radius: 8px;
-  background: #f5f7fa;
-  border: 1.5px solid #fff;
-  box-shadow: 0px -6px 10px rgba(255, 255, 255, 1), 0px 4px 15px rgba(0, 0, 0, 0.1);
-  transition: box-shadow .25s ease,box-width .25s ease !important;
-}
-
-.myRadio{
-  /deep/ .picked{
-    border: 1.5px solid #2979ff;
-
-    .u-radio__icon-wrap,.u-checkbox__icon-wrap{
-      border-color: #fff !important;
-      span{
-        color: #fff !important;
-      }
-    }
-    span{
-      color: #2979ff
-    }
-  }
-  /deep/ .wronged{
-    border: 1.5px solid #ed6464;
-
-    .u-radio__icon-wrap,.u-checkbox__icon-wrap{
-      border-color: #fff !important;
-      span{
-        color: #fff !important;
-      }
-    }
-    span{
-      color: #ed6464
-    }
-  }
-}
-
-/deep/ .u-checkbox:active {
-  box-shadow: 0 15px 20px rgba(0, 0, 0, 0.02);
-}
-
-/deep/ .u-radio:active {
-  box-shadow: 0 15px 20px rgba(0, 0, 0, 0.02);
-}
-</style>
\ No newline at end of file
diff --git a/pages/tabBar/wearhouse/wearhouse.vue b/pages/tabBar/wearhouse/wearhouse.vue
deleted file mode 100644
index 1606c59..0000000
--- a/pages/tabBar/wearhouse/wearhouse.vue
+++ /dev/null
@@ -1,270 +0,0 @@
-<template>
-	<view class="box">
-		<!-- 自定义导航栏 -->
-		<view class="navBarBox fix">
-			<!-- 状态栏占位 -->
-			<view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
-			<!-- 真正的导航栏内容 -->
-			<view class="navBar">
-<!--				<u-icon style=" margin-left: 13px;" name="arrow-left" color="black" size="17" @click="goBack"/>-->
-				<view class="barText">刷题</view>
-<!--				<view >-->
-<!--					<u-button type="text" @click="loginOut" style="color: #1890ff;margin-right: 5px;width: 65px;">退出</u-button>-->
-<!--				</view>-->
-			</view>
-		</view>
-		<!-- 页面内容 -->
-    <view class="m-p-15">
-      <view class="cardList">
-        <scroll-view scroll-y="true" class="scroll-Y" @scrolltoupper="upper"
-                     @scrolltolower="lower" lower-threshold="150" @scroll="scrollView" style="height:100%">
-          <view style="padding: 20px 0 20px">
-          <view class="card-i" v-for="(item,index) in quizList" :key="index">
-              <view class="card-i-l">
-              <view>{{item.name}}</view>
-                <span style="display:block;color: #999;font-size: 12px;margin-bottom: 20px;">已刷{{item.exerciseCount}}/{{item.totalCount}}</span>
-                <span style="display:flex;align-items: center;color: #999;font-size: 12px;"><u-icon name="clock" color="#999" size="18" style="margin-bottom: 0;margin-right: 2px"></u-icon>{{item.createTime}}</span>
-              </view>
-              <view class="card-i-r">
-			          <u-button v-if="item.exerciseCount == 0" class="study-button" type="success" text="开始刷题" shape="circle" size="small" @click="getQuestionIds(item,1)"></u-button>
-                <u-button v-if="item.exerciseCount > 0" class="study-button" type="success" text="继续刷题" shape="circle" size="small" @click="getQuestionIds(item,2)"></u-button>
-                <u-button class="study-button" type="error" text="查看错题" shape="circle" size="small" @click="getQuestionIds(item,3)"></u-button>
-                <u-button class="study-button" text="重置" shape="circle" size="small" @click="reSet(item.id)"></u-button>
-              </view>
-          </view>
-          </view>
-        </scroll-view>
-      </view>
-    </view>
-		<tabBar :currentPagePath="page"></tabBar>
-	</view>
-</template>
-
-<script>
-	import tabBar from '../tabBarIndex.vue'
-  import {getQuizHouse,getCleanRecord} from '../../../api/wearhouse.js'
-	import tebBar from '../tabBarIndex.vue'
-  import VUE_APP_BASE_URL from "../../../common/constant";
-	export default {
-		components:{
-			tabBar
-		},
-		data() {
-			return {
-				page: 'pages/tabBar/wearhouse/wearhouse',
-				statusBarHeight: 0,
-        classParams: {
-          pageNum: 1,
-          pageSize: 10,
-        },
-        quizList: [],
-        totalPage: 0,
-			}
-		},
-		onLoad() {
-			// this.unitType = uni.getStorageSync('unittype') + 1;
-			//获取手机状态栏高度
-			this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
-      this.classParams.pageNum = 1
-      this.getQuizList()
-		},
-		onShow() {
-			// this.role = uni.getStorageSync('roleName');
-		},
-    created(){
-      uni.hideTabBar()
-    },
-    mounted(){
-
-    },
-		methods: {
-			loginOut() {
-				uni.clearStorageSync();
-				uni.clearStorage();
-				uni.navigateTo({
-					url: '/pages/index/index'
-				})
-			},
-			goBack() {
-				uni.switchTab({
-				    url:'/pages/tabBar/firstPage/firstPage'
-				});
-			},
-
-      getQuizList(){
-        const t = this
-        getQuizHouse(t.classParams).then(res => {
-          if(res.code == 200) {
-            let list = res.data.list?res.data.list: [];
-            if (res.data.pageNum != 1) {
-              t.quizList = t.quizList.concat(list)
-            } else {
-              t.quizList = list
-            }
-            t.totalPage = res.data.totalPage
-          }else{
-            uni.$u.toast(res.message)
-          }
-        })
-      },
-
-      async getQuestionIds(item,type){
-        if(item.totalCount == 0){
-          uni.showToast({
-            title: '该题库暂无题目',
-            duration: 1000
-          });
-          return
-        }
-        // if(type == 2 && item.totalCount == item.exerciseCount){
-        //   uni.showToast({
-        //     title: '该题库所有题目已刷完',
-        //     duration: 1000
-        //   });
-        //   return
-        // }
-        uni.setStorageSync("prevPage", '/pages/tabBar/wearhouse/wearhouse');
-        uni.navigateTo({
-          url: `/pages/tabBar/wearhouse/questions?bank=` + encodeURIComponent(JSON.stringify(item)) + `&type=` + encodeURIComponent(JSON.stringify(type))
-        })
-      },
-
-      reSet(id){
-        const t = this
-        uni.showModal({
-          title: '提示',
-          content: '是否重置所选题库的刷题记录?',
-          success: async function (res) {
-            if (res.confirm) {
-              const res = await getCleanRecord({bankId: id})
-              if(res.code == 200){
-                uni.showToast({
-                  title: '刷题记录已重置',
-                  duration: 1000
-                });
-                // t.classParams.pageNum = 1
-                // t.getQuizList()
-                uni.reLaunch({
-                  url: '/pages/tabBar/wearhouse/wearhouse'
-                })
-              }else{
-                uni.showToast({
-                  title: '记录重置失败,请稍后再试',
-                  duration: 1000
-                });
-              }
-            } else if (res.cancel) {
-              console.log('用户点击取消');
-            }
-          }
-        })
-      },
-      upper(e) {
-        // console.log(e)
-      },
-      lower(e) {
-        //并且让页码+1,调用获取数据的方法获取第二页数据
-        this.classParams.pageNum++
-        //此处调用自己获取数据列表的方法
-        if (this.classParams.pageNum > this.totalPage){
-          uni.$u.toast('已加载全部数据')
-          return
-        }
-        this.getQuizList()
-      },
-      scrollView(e) {
-        // console.log(e)
-      }
-		}
-	}
-
-</script>
-
-<style lang="scss" scoped>
-.navBarBox .navBar {
-  background-color:#fff;
-  height: 50px;
-  display: flex;
-  flex-direction: row;
-  justify-content: center;
-  align-items: center;
-  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
-
-}
-.fix{
-  position: sticky;
-  top: 0;
-  left: 0;
-  right: 0;
-  width: 100%;
-  z-index: 1;
-}
-.barText{
-  /* text-align: center; */
-  font-size: 16px;
-  font-weight: 600;
-  flex: 2;
-  margin-left: 45%;
-}
-.statusBar{
-  background-color:lightgrey;
-}
-
-.m-p-15{
-  width: 100%;
-}
-.cardList{
-  width: 100%;
-  height: calc(100vh - 130px);
-  box-sizing: border-box;
-
-  .card-i{
-    width: calc(100% - 30px);
-    background: #fff;
-    border-radius: 20px;
-    padding: 15px;
-    margin: 0 auto 15px;
-    position: relative;
-    display: flex;
-    align-items: flex-start;
-    box-sizing: border-box;
-    box-shadow: 4px 4px 12px rgba(150,150,150,.05);
-
-    &:last-of-type{
-      margin-bottom: 0;
-    }
-    
-  .card-i-l{
-    width: 75%;
-    &>view{
-      width: 100%;
-      font-size: 32rpx;
-      font-family: "PingFang SC";
-      font-weight: 800;
-      margin-bottom: 10rpx;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      display: -webkit-box;
-      -webkit-line-clamp: 2;
-      -webkit-box-orient: vertical;
-    }
-  }
-  .card-i-r{
-	width: 25%;
-	height: 100%;
-	display: flex;
-	flex-direction: column;
-    justify-content: space-between;
-	.study-button{
-	  width: 100%;
-	  margin-bottom: 10rpx;
-	  
-	  &:last-of-type{
-		  margin-bottom: 0;
-	  }
-	}
-  }
-  }
-}
-
-</style>
\ No newline at end of file
diff --git a/static/bg.jpeg b/static/bg.jpeg
deleted file mode 100644
index 2d698e6..0000000
--- a/static/bg.jpeg
+++ /dev/null
Binary files differ
diff --git a/static/check.png b/static/check.png
new file mode 100644
index 0000000..d7ca7ea
--- /dev/null
+++ b/static/check.png
Binary files differ
diff --git a/static/companyLogo.png b/static/companyLogo.png
new file mode 100644
index 0000000..b01a93a
--- /dev/null
+++ b/static/companyLogo.png
Binary files differ
diff --git a/static/defaultCover.jpg b/static/defaultCover.jpg
deleted file mode 100644
index a0d2154..0000000
--- a/static/defaultCover.jpg
+++ /dev/null
Binary files differ
diff --git a/static/delete.png b/static/delete.png
new file mode 100644
index 0000000..3787959
--- /dev/null
+++ b/static/delete.png
Binary files differ
diff --git a/static/examine.png b/static/examine.png
deleted file mode 100644
index 6f45ca5..0000000
--- a/static/examine.png
+++ /dev/null
Binary files differ
diff --git a/static/info.png b/static/info.png
deleted file mode 100644
index 1809549..0000000
--- a/static/info.png
+++ /dev/null
Binary files differ
diff --git a/static/loginTop1.png b/static/loginTop1.png
index 73cc538..6ccff42 100644
--- a/static/loginTop1.png
+++ b/static/loginTop1.png
Binary files differ
diff --git a/static/mine1-selected.png b/static/mine1-selected.png
deleted file mode 100644
index 9926047..0000000
--- a/static/mine1-selected.png
+++ /dev/null
Binary files differ
diff --git a/static/mine1.png b/static/mine1.png
deleted file mode 100644
index c35f7dc..0000000
--- a/static/mine1.png
+++ /dev/null
Binary files differ
diff --git a/static/my-bg.jpg b/static/my-bg.jpg
new file mode 100644
index 0000000..6eba343
--- /dev/null
+++ b/static/my-bg.jpg
Binary files differ
diff --git a/static/my-bg.png b/static/my-bg.png
deleted file mode 100644
index 1861734..0000000
--- a/static/my-bg.png
+++ /dev/null
Binary files differ
diff --git a/static/pic.png b/static/pic.png
deleted file mode 100644
index e1d2c34..0000000
--- a/static/pic.png
+++ /dev/null
Binary files differ
diff --git a/static/return.png b/static/return.png
new file mode 100644
index 0000000..c9bf4b6
--- /dev/null
+++ b/static/return.png
Binary files differ
diff --git a/static/sell.png b/static/sell.png
new file mode 100644
index 0000000..923c0e6
--- /dev/null
+++ b/static/sell.png
Binary files differ
diff --git a/static/send.png b/static/send.png
deleted file mode 100644
index a825cd9..0000000
--- a/static/send.png
+++ /dev/null
Binary files differ
diff --git a/static/send_selected.png b/static/send_selected.png
deleted file mode 100644
index b46d9c3..0000000
--- a/static/send_selected.png
+++ /dev/null
Binary files differ
diff --git a/static/take.png b/static/take.png
new file mode 100644
index 0000000..92a9f3e
--- /dev/null
+++ b/static/take.png
Binary files differ
diff --git a/static/wearhouse.png b/static/wearhouse.png
deleted file mode 100644
index f9473ed..0000000
--- a/static/wearhouse.png
+++ /dev/null
Binary files differ
diff --git a/static/wearhouse_sel.png b/static/wearhouse_sel.png
deleted file mode 100644
index db1c8a8..0000000
--- a/static/wearhouse_sel.png
+++ /dev/null
Binary files differ

--
Gitblit v1.9.2