heyang преди 1 година
родител
ревизия
e8a6014c44
променени са 34 файла, в които са добавени 4448 реда и са изтрити 12 реда
  1. 14 4
      component/homeConfigurationSlot.vue
  2. BIN
      images/basicsModules/icon_06_1.png
  3. BIN
      images/basicsModules/icon_10.png
  4. BIN
      images/basicsModules/icon_11.png
  5. BIN
      images/basicsModules/icon_fjgk_sc.png
  6. BIN
      images/basicsModules/icon_jlfgz_gb.png
  7. BIN
      images/basicsModules/icon_jlfmx_bz.png
  8. BIN
      images/basicsModules/icon_jlfmx_xl.png
  9. BIN
      images/basicsModules/icon_pdf.png
  10. BIN
      images/basicsModules/icon_sy_wdzs.png
  11. BIN
      images/basicsModules/icon_word.png
  12. BIN
      images/basicsModules/icon_xx_tz.png
  13. BIN
      images/basicsModules/icon_xzwt_xz.png
  14. 58 1
      pages.json
  15. 2 2
      pages_basics/fingerprint.vue
  16. 1 1
      pages_basics/signature/signature.vue
  17. 333 0
      pages_manage/accessQualification/accessQualification.vue
  18. 440 0
      pages_manage/accessQualification/accessQualificationInfo.vue
  19. 152 0
      pages_manage/accessQualification/approve.vue
  20. 257 0
      pages_student/accessApplication/accessApplication.vue
  21. 305 0
      pages_student/accessApplication/applicationDetails.vue
  22. 251 0
      pages_student/accessApplication/chooseALaboratory.vue
  23. 1141 0
      pages_student/accessApplication/newApplication.vue
  24. 217 0
      pages_student/accessApplication/safeAccess.vue
  25. BIN
      pages_student/images/icon_08.png
  26. BIN
      pages_student/images/icon_dhli.png
  27. BIN
      pages_student/images/icon_dhlp_dhcg.png
  28. BIN
      pages_student/images/icon_wd_jlf.png
  29. BIN
      pages_student/images/img_zrsq_bg.png
  30. 215 0
      pages_student/integralManage/codeSuccess.vue
  31. 437 0
      pages_student/integralManage/creditPoints.vue
  32. 185 0
      pages_student/integralManage/pointsRecord.vue
  33. 436 0
      pages_student/integralManage/rewardPoints.vue
  34. 4 4
      utils/homeConfig.js

+ 14 - 4
component/homeConfigurationSlot.vue

@@ -141,13 +141,23 @@
 							url: item.routeUrl,
 						});
 					}
-					console.log(11)
 					if (item.route === 'gradingControl') {//分級管控
 						uni.navigateTo({
 							url: item.routeUrl,
 						});
 					}
-					
+					//学生端------------------------
+					if (item.route === 'integralExchange') {//积分兑换
+						uni.navigateTo({
+							url: item.routeUrl,
+						});
+						//this.saoCode(item.routeUrl)
+					}
+					if (item.route === 'accessApplication') {//准入申请
+						uni.navigateTo({
+							url: item.routeUrl,
+						});
+					}
 					
 					
 				}else if (item.buttonType === 'button') {
@@ -257,12 +267,12 @@
 				}
 			},
 			//调用摄像头
-			saoCode() {
+			saoCode(routeUrl) {
 				uni.scanCode({
 					onlyFromCamera: true,
 					success: function(res) {
 						uni.navigateTo({
-							url: '/pages_student/mine/codeSuccess?q=' + encodeURIComponent(JSON
+							url: routeUrl+'?q=' + encodeURIComponent(JSON
 								.stringify(res.result))
 						});
 					}

BIN
images/basicsModules/icon_06_1.png


BIN
images/basicsModules/icon_10.png


BIN
images/basicsModules/icon_11.png


BIN
images/basicsModules/icon_fjgk_sc.png


BIN
images/basicsModules/icon_jlfgz_gb.png


BIN
images/basicsModules/icon_jlfmx_bz.png


BIN
images/basicsModules/icon_jlfmx_xl.png


BIN
images/basicsModules/icon_pdf.png


BIN
images/basicsModules/icon_sy_wdzs.png


BIN
images/basicsModules/icon_word.png


BIN
images/basicsModules/icon_xx_tz.png


BIN
images/basicsModules/icon_xzwt_xz.png


+ 58 - 1
pages.json

@@ -112,7 +112,64 @@
 			"root": "pages_student",  //分包根路径
 			"name": "student", //分包名字可写可不写
 			"pages": [
-
+				/* 积分管理 */
+				{
+					"path": "integralManage/codeSuccess",//扫码成功
+					"style": {
+						"navigationBarTitleText": "扫码成功"
+					}
+				},
+				{
+					"path": "integralManage/creditPoints",//信用分记录
+					"style": {
+						"navigationBarTitleText": "信用分记录",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "integralManage/rewardPoints",//奖励分记录
+					"style": {
+						"navigationBarTitleText": "奖励分记录",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "integralManage/pointsRecord",//积分记录
+					"style": {
+						"navigationBarTitleText": "积分记录"
+					}
+				},
+				/*准入申请*/
+				{
+					"path": "accessApplication/accessApplication",//准入申请
+					"style": {
+						"navigationBarTitleText": "安全准入"
+					}
+				},
+				{
+					"path": "accessApplication/applicationDetails",//申请详情
+					"style": {
+						"navigationBarTitleText": ""
+					}
+				},
+				{
+					"path": "accessApplication/chooseALaboratory",//选择实验室
+					"style": {
+						"navigationBarTitleText": "安全准入"
+					}
+				},
+				{
+					"path": "accessApplication/newApplication",//选择实验室
+					"style": {
+						"navigationBarTitleText": "准入申请"
+					}
+				},
+				{
+					"path": "accessApplication/safeAccess",//安全准入
+					"style": {
+						"navigationBarTitleText": "我的准入"
+					}
+				}
 			]
 		},
 		{/* 管理端分包 */

+ 2 - 2
pages_basics/fingerprint.vue

@@ -28,8 +28,8 @@
 			<view class="null-box" @click="dialogClose()"></view>
 			<view class="shade-outfire-n">
 			  <view class="shade-outfire-n-t">门禁名称</view>
-			  <img  class="shade-outfire-n-t2" src="@/page_basics/images/icon_zw_bk.png" />
-			  <img class="shade-outfire-n-m" src="@/page_basics/images/icon_wd_zw.png" />
+			  <img  class="shade-outfire-n-t2" src="@/pages_basics/images/icon_zw_bk.png" />
+			  <img class="shade-outfire-n-m" src="@/pages_basics/images/icon_wd_zw.png" />
 			  <view class="shade-outfire-n-b">指纹采集中...</view>
 			</view>
 		  </view>

+ 1 - 1
pages_basics/signature/signature.vue

@@ -4,7 +4,7 @@
 		<view class="signature_li">
 			<view class="signature_li_t">示例:</view>
 			<view class="signature_li_b">
-				<img src="@/page_basics/images/img_dzqm_sl.png">
+				<img src="@/pages_basics/images/img_dzqm_sl.png">
 			</view>
 		</view>
 		<view class="tip">请上传白字黑子正楷签名</view>

+ 333 - 0
pages_manage/accessQualification/accessQualification.vue

@@ -0,0 +1,333 @@
+<!-- 准入资格证书 -->
+<template>
+    <view id="accessQualification">
+		<view class="top-picker-max-box">
+			<view class="top-picker-left-box">审核状态</view>
+			<picker class="top-picker-right-box" @change="buttonChange"
+			:range-key="'name'" :value="id" :range="buttonArray">
+				<view>{{buttonArray[buttonArrayIndex].name}}</view>
+			</picker>
+		</view>
+        <scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+			<view class="for-big-box" v-for="(item,index) in infoList" :key="index">
+			    <view class="for-time-p">{{item.creatTime}}</view>
+			    <img class="for-back-img" src="@/images/basicsModules/for_min_bg.png">
+			    <view class="for-list-box" @click="goPageInfo(minItem)"
+				v-for="(minItem,indexTwo) in item.applyList" :key="indexTwo">
+			        <view class="min-for-box-one">
+						<view :class="minItem.auditStatus==1?'titleType1':(minItem.auditStatus==0?'titleType2':(minItem.auditStatus==2?'titleType3':''))">{{minItem.auditStatus==1?'未通过':(minItem.auditStatus==0?'待审核':(minItem.auditStatus==2?'已通过':''))}}</view>
+						<view>{{minItem.subjectName}}</view>
+					</view>
+					<view class="min-for-box-two">
+						<view></view>
+						<view>申请人:{{minItem.userName}}</view>
+						<view>{{minItem.hi}}</view>
+					</view>
+			    </view>
+			</view>
+            <view class="get-null-box" v-if="getData.nullDataType">暂无更多数据</view>
+        </scroll-view>
+		<view class="tip">请联系管理员开通<text>白名单</text>来获取实验室准入资格</view>
+       <!-- <view class="bottom-button-box" @click="goSafeAccess">我的准入</view> -->
+    </view>
+</template>
+
+<script>
+    import { applyList } from '@/api/apiDemo/index.js'
+    export default {
+        data() {
+            return {
+				//选项
+				buttonArray:[
+					{name:"全部",id:""},
+					{name:"待审核",id:"0"},
+					{name:"已通过",id:"2"},
+					{name:"未通过",id:"1"},
+				],
+				buttonArrayIndex:0,
+				auditStatus:"",
+                //列表请求参数
+                getData:{
+                    page:1,
+                    pageSize:20,
+                    getType:true,
+                    nullDataType:true,
+                },
+                infoList:[],
+            }
+        },
+        onLoad() {
+
+        },
+        onShow(){
+            this.clearData();
+            this.getList();
+        },
+        methods: {
+			goSafeAccess(){
+				uni.navigateTo({
+					url: '/pages_student/workbench/safeAccess/safeAccess',
+				});
+			},
+            //清除
+            clearData(){
+                this.infoList = [];
+                this.getData.page = 1;
+                this.getData.getType = true;
+                this.getData.nullDataType = true;
+            },
+            //去详情页
+            goPageInfo(item){
+                // uni.navigateTo({
+                //     url:'/pages_manage/workbench/accessQualification/accessQualificationInfo?item='+encodeURIComponent(JSON.stringify(item))+'&type='+encodeURIComponent(JSON.stringify(this.tabIndex))
+                // })
+                uni.navigateTo({
+                    url:'/page_manage/accessQualification/accessQualificationInfo?item='+encodeURIComponent(JSON.stringify(item))
+                })
+            },
+            //滚动事件
+            scrollGet(){
+                if(this.getData.getType){
+                    this.getData.page += 1;
+                    this.getList();
+                }
+            },
+            //获取头部数量数据
+            async getTabData(){
+                console.log("123")
+                const {data} = await getApprovalCount()
+                if(data.code == 200){
+                    this.tabData = data.data;
+                }
+            },
+			//选择
+			buttonChange(e){
+				this.buttonArrayIndex = e.detail.value;
+                this.infoList = [];
+                this.getData.page = 1;
+                this.getData.getType = true;
+                this.getData.nullDataType = true;
+				this.$set(this,'auditStatus',this.buttonArray[this.buttonArrayIndex].id);
+				this.getList();
+			},
+            //获取列表数据
+            async getList(){
+                let self = this;
+                let obj = {
+                    pageNum:this.getData.page,
+                    pageSize:this.getData.pageSize,
+					auditStatus:this.auditStatus
+                }
+                const {data} = await applyList(obj)
+                if(data.code==200){
+                    if(self.page==1){
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = data.rows;
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = data.rows;
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }else{
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows)
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows);
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }
+                }
+
+            },
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #accessQualification{
+        height:100%;
+        display flex
+        flex-direction column
+		.top-picker-max-box{
+			height:100rpx;
+			display flex;
+			height:150rpx;
+			background #fff;
+			overflow hidden
+			margin-bottom:15rpx;
+			.top-picker-left-box{
+				margin-top:34rpx;
+				line-height:82rpx;
+				width:145rpx;
+				text-align center;
+			}
+			.top-picker-right-box{
+				margin-top:34rpx;
+				width:586rpx;
+				height:82rpx;
+				border:1rpx solid #A2A2A2;
+				line-height:82rpx;
+				border-radius:6rpx;
+				view{
+					padding:0 20rpx;
+					color:#999999;
+				}
+			}
+		}
+        .top-max-box{
+            height:100rpx;
+            display flex
+            background #fff
+            margin-bottom:20rpx;
+            .top-button-box{
+                width:200rpx;
+                padding-top:3rpx;
+                view:nth-child(1){
+                    font-size:30rpx;
+                    text-align center;
+                    color:#333;
+                    line-height:95rpx;
+                }
+                view:nth-child(2){
+                    width:100rpx;
+                    height:5rpx;
+                    margin:0 auto;
+                }
+                .colorA{
+                    color:#0183FA!important;
+                }
+                .backA{
+                    background:#0183FA;
+                }
+            }
+        }
+        .info-max-box{
+            flex:1;
+            overflow: scroll
+			.for-big-box:last-child{
+			    margin-bottom:180rpx;
+			}
+			.for-big-box{
+			    margin:0 20rpx 20rpx;
+			    overflow hidden
+				border-radius:20rpx;
+			    // border-bottom-left-radius :20rpx;
+			    // border-bottom-right-radius :20rpx;
+				background #fff;
+			    .for-time-p{
+			        background #fff
+			        line-height:57rpx;
+			        font-size:30rpx;
+			        padding:14rpx 22rpx 0;
+			        // border-top-left-radius:20rpx;
+			        // border-top-right-radius:20rpx;
+			    }
+			    .for-back-img{
+			        height:30rpx;
+			        width:710rpx;
+			    }
+				.for-list-box:nth-child(3){
+					border:none;
+				}
+			    .for-list-box{
+					border-top:1rpx solid #E0E0E0;
+					margin:0 24rpx;
+					padding:20rpx 0;
+					.min-for-box-one{
+						display:flex;
+						view{
+							height:36rpx;
+							line-height:36rpx;
+							margin:10rpx 0;
+						}
+						view:nth-child(1){
+							width:100rpx;
+							margin-right:20rpx;
+							line-height:36rpx;
+							text-align center;
+							font-size:20rpx;
+						}
+						view:nth-child(2){
+							flex:1;
+							font-size:28rpx;
+						}
+						.titleType1{
+							border-radius:6rpx;
+							color:#FF5555;
+							background rgba(255,85,85,0.2)
+						}
+						.titleType2{
+							border-radius:6rpx;
+							color:#F6A71D;
+							background rgba(246,167,29,0.2)
+						}
+						.titleType3{
+							border-radius:6rpx;
+							color:#30A23D;
+							background rgba(48,162,61,0.2)
+						}
+					}
+					.min-for-box-two{
+						display:flex;
+						view{
+							height:36rpx;
+							line-height:36rpx;
+							margin:10rpx 0;
+						}
+						view:nth-child(1){
+							width:100rpx;
+							margin-right:20rpx;
+							line-height:36rpx;
+							text-align center;
+							font-size:20rpx;
+						}
+						view:nth-child(2){
+							flex:1;
+							font-size:26rpx;
+						}
+						view:nth-child(3){
+							font-size:26rpx;
+						}
+					}
+			    }
+			}
+            .get-null-box{
+                height:100rpx;
+                line-height:100rpx;
+                color:#999;
+                text-align center
+            }
+        }
+        .bottom-button-box{
+			border-radius:20rpx;
+			margin:20rpx 50rpx;
+            width: 650rpx;
+            height: 100rpx;
+            line-height: 100rpx;
+            background: #0183FA;
+            font-size: 30rpx;
+            color: #FFFFFF;
+            text-align center;
+        }
+		.tip{
+			width: 750rpx;
+			height: 100rpx;
+			line-height :100rpx;
+			border-top: 1rpx solid #e0e0e0;
+			background: #fff;
+			font-size: 30rpx;
+			color: #333;
+			text-align center;
+			>text{
+				color:red;
+			}
+		}
+    }
+</style>

+ 440 - 0
pages_manage/accessQualification/accessQualificationInfo.vue

@@ -0,0 +1,440 @@
+<!-- 准入资格申请详情 -->
+<template>
+    <view id="accessQualificationInfo" v-if="pageType">
+		<view class="user-info-box">
+			<view class="user-info-box-min">
+				<view>实验室:</view>
+				<view>{{subjectData.labSecurityApply.subjectName}}</view>
+			</view>
+			<view class="user-info-box-min">
+				<view>申请人:</view>
+				<view>{{subjectData.labSecurityApply.userName}}</view>
+			</view>
+			<view class="user-info-box-min">
+				<view>申请时限:</view>
+				<view>{{subjectData.labSecurityApply.validBeginTime}}至{{subjectData.labSecurityApply.validEndTime}}</view>
+			</view>
+			<view class="user-info-box-min">
+				<view>申请备注:</view>
+				<view>{{subjectData.labSecurityApply.applyCause==null?'':subjectData.labSecurityApply.applyCause}}</view>
+			</view>
+		</view>
+		<view class="user-info-box">
+			<view class="user-info-box_title"><view style="color: red;">*</view>身份信息:(关联学生信息材料)</view>
+			<view class="user-info-box-min">
+				<view>申请人:</view>
+				<view>{{subjectData.sysUser.nickName}}</view>
+			</view>
+			<view class="user-info-box-min">
+				<view>联系电话:</view>
+				<view>{{subjectData.sysUser.phonenumber}}</view>
+			</view>
+			<view class="user-info-box-min" >
+				<view>学号:</view>
+				<view>{{subjectData.sysUser.userName}}</view>
+			</view>
+			<view class="user-info-box-min">
+				<view>物理卡号:</view>
+				<view>{{subjectData.sysUser.cardNum}}</view>
+			</view>
+			<view class="user-info-box-min" >
+				<view>班级:</view>
+				<view>{{subjectData.sysUser.grade}}</view>
+			</view>
+			<view class="user-info-box-min" >
+				<view>导师:</view>
+				<view>{{subjectData.sysUser.tutorUserName}}</view>
+			</view>
+		</view>
+		<view v-for="(item,index) in subjectData.listTemp" :key="index" style="overflow: hidden;">
+			<view class="img-box" v-if="item.materialType==2&&item.relationType==2">
+				<view class="img-title">安全考试证书</view>
+				<img v-if="subjectData.listcert[0]" class="item-img-box" :src="subjectData.listcert[0].cert_url">
+				<view v-if="!subjectData.listcert[0]" style="margin-left:40px;color:#999;font-size:14px;">暂无证书</view>
+			</view>
+			<view class="word-box" v-if="item.materialType==1">
+				<view class="word-box-title">{{item.materialName}}</view>
+				<view class="word-box-min" v-for="(minItem,minIndex) in item.upList" :key="minIndex" @click="lookItem(minItem)">
+					<img src="@/images/basicsModules/icon_pdf.png" v-if="minItem.type == 'pdf'">
+					<img src="@/images/basicsModules/icon_word.png" v-if="minItem.type == 'doc' || minItem.type == 'docx'">
+					<img :src="baseUrl+minItem.url" v-if="minItem.type == 'png' || minItem.type == 'jpg' || minItem.type == 'jpeg' || minItem.type == 'gif'">
+					<view>{{minItem.name}}</view>
+				</view>
+			</view>
+		</view>
+		<view class="bottom-button-box" v-if="subjectData.labSecurityApply.auditStatus == 0">
+			<view @click="goReviewFailed">审核未通过</view>
+			<view @click="accessButtonClick">审核通过</view>
+		</view>
+    </view>
+</template>
+
+<script>
+
+     import { config } from '@/api/request/config.js'
+    import { getDetails,laboratoryApply } from '@/api/apiDemo/index.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				pageType:false,
+				//获取数据
+				subjectData:{},
+				newData:{
+					text1:"甲烷监测实验室",
+					text2:"曹秀康",
+					text3:"学生",
+					text4:"2022-01-11  14:56",
+					text5:"曹秀康",
+					text6:"24141534553",
+					text7:"安全工程学院",
+					text8:"安全科学与工程专业",
+					textlist1:[
+						'https://img1.baidu.com/it/u=1349023829,1710986137&fm=253&fmt=auto&app=138&f=JPEG?w=786&h=500',
+						'https://img1.baidu.com/it/u=1349023829,1710986137&fm=253&fmt=auto&app=138&f=JPEG?w=786&h=500',
+						'https://img1.baidu.com/it/u=1349023829,1710986137&fm=253&fmt=auto&app=138&f=JPEG?w=786&h=500',
+					],
+					textlist2:[
+						{
+							type:1,
+							name:"信息照片副本.pdf",
+						},
+						{
+							type:2,
+							name:"信息照片副本.word",
+						},
+					],
+				},
+                itemData:{},
+                type:0,
+            }
+        },
+        onLoad(option) {
+            this.infoData = JSON.parse(decodeURIComponent(option.item));
+            //修改页面title
+            uni.setNavigationBarTitle({
+                title:this.infoData.auditStatus==0?'待审核':(this.infoData.auditStatus==1?'未通过':(this.infoData.auditStatus==2?'已通过':''))
+            });
+        },
+		onShow(){
+			this.getDetails()
+		},
+        methods: {
+			//审核按钮
+			accessButtonClick(){
+				let self = this;
+				uni.showModal({
+				    content: '确认审核吗?',
+				    cancelColor:"#999",
+				    confirmColor:"#0183FA",
+				    success: function (res) {
+				        if (res.confirm) {
+				            self.laboratoryApply();
+				        } else if (res.cancel) {
+				        }
+				    }
+				});
+			},
+			//审核接口
+			async laboratoryApply(){
+				let obj = {
+				  id:this.subjectData.labSecurityApply.id,
+				  auditStatus:2,
+				};
+				const {data} = await laboratoryApply(obj)
+				if(data.code == 200){
+					uni.showToast({
+						title: '审核成功',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					setTimeout(function(){
+						uni.navigateBack();
+					},2000);
+				}
+
+			},
+			lookItem(minItem){
+				let self = this;
+				if(minItem.type == 'png' || minItem.type == 'jpg' || minItem.type == 'jpeg' || minItem.type == 'gif'){
+					//查看图片
+					wx.previewImage({
+						urls: [self.baseUrl+minItem.url], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+						current: '', // 当前显示图片的http链接,默认是第一个
+						success: function(res) {},
+						fail: function(res) {},
+						complete: function(res) {},
+					})
+				}else if(minItem.type == 'pdf' || minItem.type == 'doc' || minItem.type == 'docx'){
+					uni.showLoading({
+					    title: '下载中'
+					});
+					//下载文档
+					wx.downloadFile({
+						url: minItem.url,
+						header: {
+							Authorization: uni.getStorageSync('token')
+						},
+						success: function (res) {
+							const fileManager = wx.getFileSystemManager()
+							const filePath = wx.env.USER_DATA_PATH + '/' + minItem.name + '.docx'
+							fileManager.saveFile({
+								tempFilePath: res.tempFilePath,
+								filePath,
+								success: () => {
+									uni.hideLoading();
+									wx.openDocument({
+									filePath: filePath,
+									showMenu: true,
+									fileType: minItem.type
+									})
+								},
+								fail: function (res){
+									uni.hideLoading();
+									uni.showToast({
+										title: '下载失败',
+										icon:"none",
+										mask:true,
+										duration: 2000
+									});
+								}
+							})
+						},
+						fail: function (res){
+							uni.hideLoading();
+							uni.showToast({
+								title: '下载失败',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+					})
+				}
+			},
+            //获取安全准入审批记录详细信息(用户端)
+            async getDetails() {
+                let self = this;
+                const {data} = await getDetails({id:this.infoData.id})
+                if(data.code==200){
+				  for(let i=0;i<data.data.listTemp.length;i++){
+					if(data.data.listTemp[i].materialType == 1){
+					  let maxList = [];
+					  for(let o=0;o<data.data.listTemp[i].listMr.length;o++){
+						let bigList = data.data.listTemp[i].listMr[o].dataUrl.split(',');
+						for(let x=0;x<bigList.length;x++){
+						  if(bigList[x]){
+							let minList = bigList[x].split(';');
+							let minListTwo = minList[0].split('.')
+							let obj = {
+							  name:minList[0],
+							  url:minList[1],
+							  type:minListTwo[1]
+							};
+							maxList.push(obj);
+						  }
+						}
+					  }
+					  data.data.listTemp[i].upList = maxList;
+					}
+				  }
+				  this.$set(this,"subjectData",data.data);
+				  this.pageType = true;
+                }
+            },
+			goReviewFailed(){
+				let obj = {
+				  id:this.subjectData.labSecurityApply.id,
+				  rejectCause:this.subjectData.listTemp,
+				}
+				uni.navigateTo({
+				    url:'/page_basics/accessQualification/approve?item='+encodeURIComponent(JSON.stringify(obj))
+				})
+			},
+			//查看图片
+			lockImg(list){
+				if(!list[0]){
+					return
+				}
+				wx.previewImage({
+					urls: list, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+            approveClick(){
+                let self = this;
+                uni.showModal({
+                    // title: '确认要退出吗?',
+                    content: '确认审核通过吗?',
+                    cancelColor:"#999",
+                    confirmColor:"#0183FA",
+                    success: function (res) {
+                        if (res.confirm) {
+                            self.appOperation();
+                        } else if (res.cancel) {
+                        }
+                    }
+                });
+            },
+            async appOperation(){
+                let self = this;
+                let obj = {
+                    id:this.itemData.id,
+                    recordContent:1,
+                };
+                const {data} = await appOperation(obj);
+                if(data.code == 200){
+                    uni.showToast({
+                        title: '提交成功',
+                        icon:"none",
+                        mask:true,
+                        duration: 2000
+                    });
+                    setTimeout(function(){
+                        uni.navigateBack();
+                    },2000);
+                }
+            },
+            async approvalDetailManage(){
+                let obj = {
+                    ids:this.itemData.id
+                }
+                const {data} = await approvalDetailManage(obj)
+                if(data.code == 200){
+                    this.newData = data.data;
+                }
+            },
+            //去不通过原因页面
+            goPageInfo(item){
+                uni.navigateTo({
+                    url:'/pages_manage/workbench/accessQualification/approve?item='+encodeURIComponent(JSON.stringify(this.itemData))
+                })
+            },
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #accessQualificationInfo{
+        height:100%;
+		overflow-y scroll;
+		.user-info-box{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			.user-info-box_title{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 30rpx;
+				margin-left: 24rpx
+				margin-bottom :10px;
+				>view{
+					display inline-block;
+				}
+			}
+			.user-info-box-min{
+				margin:0 26rpx;
+				display flex;
+				view{
+					line-height:66rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					width:140rpx;
+					color:#999;
+				}
+				view:nth-child(2){
+					flex:1;
+					text-align right;
+					color:#333;
+				}
+			}
+		}
+		.user-card-box{
+			background #fff;
+			border-radius:20rpx;
+			margin:0 20rpx 20rpx;
+			padding:20rpx 0;
+			.user-card-title{
+				padding-left:24rpx;
+				font-size:30rpx;
+				font-weight:700;
+				margin-bottom:20rpx;
+			}
+			.user-card-text{
+				line-height:66rpx;
+				font-size:28rpx;
+				color:#999;
+				padding:0 24rpx;
+			}
+		}
+		.img-box{
+			background #fff;
+			border-radius:20rpx;
+			margin:0 20rpx 20rpx;
+			padding:20rpx 0;
+			.img-title{
+				padding-left:24rpx;
+				font-size:30rpx;
+				font-weight:700;
+				margin-bottom:20rpx;
+			}
+			img{
+				display block;
+				width:640rpx;
+				margin:0 auto 10rpx;
+			}
+		}
+		.word-box{
+			background #fff;
+			border-radius:20rpx;
+			margin:0 20rpx 20rpx;
+			padding:20rpx 0;
+			.word-box-title{
+				padding-left:24rpx;
+				font-size:30rpx;
+				font-weight:700;
+				margin-bottom:20rpx;
+			}
+			.word-box-min{
+				display flex;
+				margin:0 20rpx 20rpx;
+				img{
+					height:60rpx;
+					width:60rpx;
+				}
+				view{
+					margin-left:20rpx;
+					line-height:60rpx;
+				}
+			}
+		}
+		.bottom-button-box{
+			display flex;
+			width:650rpx;
+			margin:40rpx auto;
+			view{
+				height:100rpx;
+				text-align center;
+				line-height:100rpx;
+				color:#fff;
+				width:325rpx;
+			}
+			view:nth-child(1){
+				background: linear-gradient(-45deg, #FA9901, #F28E26);
+				border-radius: 50rpx 0 0 50rpx;
+			}
+			view:nth-child(2){
+				background: linear-gradient(-35deg, #309CFF, #0183FA);
+				border-radius: 0 50rpx 50rpx 0;
+			}
+		}
+    }
+</style>

+ 152 - 0
pages_manage/accessQualification/approve.vue

@@ -0,0 +1,152 @@
+<!-- 不通过原因 -->
+<template>
+    <view id="approve">
+		<view class="approve-title">驳回原因</view>
+        <textarea v-model="rejectCause" placeholder="请输入未通过原因" maxlength="50"></textarea>
+        <view class="button-view" @click="accessButtonClick">提交</view>
+    </view>
+</template>
+
+<script>
+    import { laboratoryApply } from '@/api/apiDemo/index.js'
+    export default {
+        data() {
+            return {
+                itemData:{},
+				rejectCause:"",
+				checkList:[],
+            }
+        },
+        onLoad(option) {
+			let self = this;
+            this.itemData = JSON.parse(decodeURIComponent(option.item));
+			for(let i=0;i<self.itemData.rejectCause.length;i++){
+				self.itemData.rejectCause[i].type = false
+			}
+            // this.itemData = JSON.parse(decodeURIComponent(option.item));
+        },
+        methods: {
+			accessButtonClick(){
+				let self = this;
+				let num = 0;
+				this.$set(this,'checkList',[])
+				for(let i=0;i<self.itemData.rejectCause.length;i++){
+					if(self.itemData.rejectCause[i].type){
+						num++
+						this.checkList.push(self.itemData.rejectCause[i].id);
+					}
+				}
+				/* if(num == 0){
+					uni.showToast({
+						title: '请勾选未通过材料',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				} */
+				if(!self.rejectCause){
+					uni.showToast({
+						title: '请输入驳回原因',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				uni.showModal({
+				    content: '确认拒绝通过吗?',
+				    cancelColor:"#999",
+				    confirmColor:"#0183FA",
+				    success: function (res) {
+				        if (res.confirm) {
+				            self.laboratoryApply();
+				            console.log('用户点击确定');
+				        } else if (res.cancel) {
+				            console.log('用户点击取消');
+				        }
+				    }
+				});
+			},
+			//审核接口
+			async laboratoryApply(){
+				let obj = {
+				  id:this.itemData.id,
+				  auditStatus:1,
+				  rejectCause:this.rejectCause,
+				  rejectMaterial:this.checkList + '',
+				};
+				const {data} = await laboratoryApply(obj)
+				if(data.code == 200){
+					uni.showToast({
+						title: '审核成功',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					setTimeout(function(){
+						uni.navigateBack({
+						    delta: 2
+						});
+					},2000);
+				}
+
+			},
+			checkItem(item){
+				item.type = !item.type;
+				this.$forceUpdate();
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #approve{
+        height:100%;
+        background #fff
+        overflow hidden
+        textarea{
+            width:670rpx;
+            height:200rpx;
+            margin:20rpx 30rpx 0;
+            font-size:28rpx;
+            border: 1rpx solid #E0E0E0;
+            border-radius:10rpx;
+            padding:20rpx;
+        }
+		.approve-title{
+			font-weight:700;
+			color:#333;
+			font-size:30rpx;
+			font-weight:700;
+			margin:20rpx 30rpx ;
+
+		}
+		.approve-for-box{
+			display flex;
+			height:60rpx;
+			padding-left:40rpx;
+			img{
+				width:30rpx;
+				height:30rpx;
+				margin:15rpx;
+			}
+			view{
+				font-size:28rpx;
+				height:60rpx;
+				line-height:60rpx;
+			}
+		}
+        .button-view{
+            width: 600rpx;
+            height: 80rpx;
+            background: #0183FA;
+            border-radius: 20rpx;
+            font-size:30rpx;
+            line-height:80rpx;
+            text-align center;
+            color: #fff;
+            margin:90rpx auto;
+        }
+    }
+</style>

+ 257 - 0
pages_student/accessApplication/accessApplication.vue

@@ -0,0 +1,257 @@
+<!-- 准入申请 -->
+<template>
+    <view id="accessApplication">
+        <view class="button-max-box" @click="goFaceImage">
+            <img src="@/images/basicsModules/icon_001.png">
+            <view>身份验证</view>
+            <view :class="!identifyType?'colorA':'marginType'">{{!identifyType?'去认证':'已认证'}}</view>
+            <img v-if="!identifyType" src="@/images/basicsModules/icon_04.png">
+        </view>
+        <view class="for-box" v-for="(item,index) in dataList" :key="index">
+            <view class="button-view" @click="selectImage(index)" v-if="!item.url">+ 添加</view>
+            <img :src="item.url" @click="selectImage(index)" v-else>
+            <view class="for-title">{{item.materialName}}</view>
+        </view>
+        <view class="null-p"></view>
+        <view class="bottom-button-view" @click="accessReview">提交</view>
+    </view>
+</template>
+
+<script>
+    import { config } from '@/api/request/config.js'
+    import { studentinfoFacemy,subjectMaterialList,accessReview } from '@/api/apiDemo/index.js'
+    export default {
+        data() {
+            return {
+                identifyType:1,
+                itemData:{},
+                dataList:[]
+            }
+        },
+        onLoad(option) {
+            this.itemData = JSON.parse(decodeURIComponent(option.item));
+            this.dataList = JSON.parse(decodeURIComponent(option.list));
+            console.log("this.itemData",this.itemData)
+            console.log("this.dataList",this.dataList)
+            this.studentinfoFacemy();
+            // this.subjectMaterialList();
+        },
+        methods: {
+            //提交接口
+            async accessReview(){
+                let self = this;
+                if(!this.identifyType){
+                    uni.showToast({
+                        title: '请先认证身份验证',
+                        icon:"none",
+                        mask:true,
+                        duration: 2000
+                    });
+                    return
+                }
+                if(!this.dataList[0]){
+                    uni.showToast({
+                        title: '该实验室未配置准入资格,无法申请~',
+                        icon:"none",
+                        mask:true,
+                        duration: 2000
+                    });
+                    return
+                }
+                let obj = {
+                    subjectId:self.itemData.id,
+                    securityGroupId:self.dataList[0].configureId,
+                    buildId:self.itemData.buildId,
+                    deptId:self.itemData.deptId,
+                    approvalDetails:[],
+                };
+                for(let i=0;i<self.dataList.length;i++){
+                    if(!self.dataList[i].url){
+                        uni.showToast({
+                            title: '请上传'+self.dataList[i].materialName,
+                            icon:"none",
+                            mask:true,
+                            duration: 2000
+                        });
+                        return
+                    }
+                    let newObj = {
+                        materialName:self.dataList[i].materialName,
+                        materialUrl:self.dataList[i].url,
+
+                    }
+                    obj.approvalDetails.push(newObj);
+                }
+                const {data} = await accessReview(obj);
+                if(data.code == 200){
+                    uni.showToast({
+                        title: '提交成功',
+                        icon:"none",
+                        mask:true,
+                        duration: 2000
+                    });
+                    setTimeout(function(){
+                        uni.navigateBack();
+                    },2000);
+                }
+            },
+            //查询实验室下的安全准入资格材料表
+            async subjectMaterialList(){
+                let obj = {
+                    subjectId:this.itemData.id
+                }
+                const {data} = await subjectMaterialList(obj)
+                if(data.code == 200){
+                    this.dataList = data.data;
+                }
+            },
+            //获取当前身份人脸验证状态
+            async studentinfoFacemy(){
+                let obj = {
+                    studentsId:uni.getStorageSync('userId')
+                }
+                const {data} = await studentinfoFacemy(obj)
+                if(data.code == 200){
+                    this.ifFaceFeature = data.data.ifFaceFeature;
+                }
+            },
+            // 图片上传
+            selectImage(index) {
+                let self = this;
+                wx.chooseImage({
+                    count: 1,
+                    sizeType: ["original", "compressed"],
+                    sourceType: ["album", "camera"],
+                    success: function(res) {
+                        let tempFilePaths = res.tempFilePaths[0];
+                        self.uploadImg(tempFilePaths,index);
+                    }
+                });
+            },
+            async uploadImg(tempFilePaths,index){
+                var self = this;
+                uni.showLoading({
+                    title: '上传中',
+                    mask: true
+                });
+                uni.uploadFile({
+                    url: config.base_url+'/base/file/upload', //仅为示例,非真实的接口地址
+                    header:{'Authorization':uni.getStorageSync('token')},
+                    filePath: tempFilePaths,
+                    name: 'file',
+                    formData: {
+                        'user': 'test'
+                    },
+                    success: (uploadFileRes) => {
+                        let res = JSON.parse(uploadFileRes.data);
+						if(res.code == 200){
+							self.$set(self.dataList[index],'url',config.base_url+res.data.url);
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+                    },
+                    fail: err => {},
+                    complete: () => {
+                        uni.hideLoading()
+                    }
+                });
+            },
+            goFaceImage(){
+                if (!this.identifyType){
+                    uni.navigateTo({
+                        url: '/pages_basics/faceImage',
+                    });
+                }
+            },
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #accessApplication{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column
+        .button-max-box{
+            height:100rpx;
+            display flex
+            background #fff
+            margin-bottom:20rpx;
+            img:nth-child(1){
+                height:30rpx;
+                width:30rpx;
+                margin:37rpx 28rpx 33rpx 20rpx;
+            }
+            view{
+                line-height:100rpx;
+            }
+            view:nth-child(2){
+                flex:1;
+                color:#333333;
+                font-size: 28rpx;
+            }
+            view:nth-child(3){
+                width:120rpx;
+                text-align center;
+                color:#CCCCCC;
+                font-size: 28rpx;
+            }
+            img:nth-child(4){
+                height:24rpx;
+                width:12rpx;
+                margin:39rpx 20rpx 0 0;
+            }
+            .colorA{
+                color:#E45656!important;
+            }
+            .marginType{
+                margin-right:12rpx;
+            }
+        }
+        .for-box{
+            height:430rpx;
+            width:710rpx;
+            margin:20rpx 20rpx 0;
+            background: url("@/pages_student/images/icon_08.png")
+            background-size 100%
+            .button-view{
+                text-align center
+                line-height:348rpx;
+                color: #999999;
+                font-size:30rpx;
+            }
+            img{
+                width:706rpx;
+                height:344rpx;
+                margin:2rpx;
+                border-top-right-radius 20rpx
+                border-top-left-radius 20rpx
+            }
+            .for-title{
+                line-height:80rpx;
+                margin-left:28rpx;
+                color: #999999;
+                font-size:30rpx;
+            }
+        }
+        .bottom-button-view{
+            font-size:30rpx;
+            text-align center;
+            color: #FFFFFF;
+            width: 750rpx;
+            height: 100rpx;
+            line-height: 100rpx;
+            background: #0183FA;
+            margin-top:40rpx;
+        }
+        .null-p{
+            flex:1;
+        }
+    }
+</style>

+ 305 - 0
pages_student/accessApplication/applicationDetails.vue

@@ -0,0 +1,305 @@
+<!-- 申请详情 -->
+<template>
+    <view id="applicationDetails" v-if="pageType">
+		<view class="user-info-box">
+			<view class="user-info-box-min">
+				<view>实验室:</view>
+				<view>{{subjectData.labSecurityApply.subjectName}}</view>
+			</view>
+			<view class="user-info-box-min">
+				<view>申请时限:</view>
+				<view>{{subjectData.labSecurityApply.validBeginTime}}至{{subjectData.labSecurityApply.validEndTime}}</view>
+			</view>
+			<view class="user-info-box-min">
+				<view>申请备注:</view>
+				<view>{{subjectData.labSecurityApply.applyCause}}</view>
+			</view>
+		</view>
+		<view class="user-info-box">
+			<view class="user-info-box_title"><view style="color: red;">*</view>身份信息:(关联学生信息材料)</view>
+			<view class="user-info-box-min">
+				<view>申请人:</view>
+				<view>{{subjectData.sysUser.nickName}}</view>
+			</view>
+			<view class="user-info-box-min">
+				<view>联系电话:</view>
+				<view>{{subjectData.sysUser.phonenumber}}</view>
+			</view>
+			<view class="user-info-box-min" >
+				<view>学号:</view>
+				<view>{{subjectData.sysUser.userName}}</view>
+			</view>
+			<view class="user-info-box-min">
+				<view>物理卡号:</view>
+				<view>{{subjectData.sysUser.cardNum}}</view>
+			</view>
+			<view class="user-info-box-min" >
+				<view>班级:</view>
+				<view>{{subjectData.sysUser.grade}}</view>
+			</view>
+			<view class="user-info-box-min" >
+				<view>导师:</view>
+				<view>{{subjectData.sysUser.tutorUserName}}</view>
+			</view>
+
+		</view>
+		<view v-for="(item,index) in subjectData.listTemp" :key="index" style="overflow: hidden;">
+			<view class="img-box" v-if="item.materialType==2&&item.relationType==2">
+				<view class="img-title">安全考试证书</view>
+				<img v-if="subjectData.listcert[0]" class="item-img-box" :src="subjectData.listcert[0].cert_url">
+				<view v-if="!subjectData.listcert[0]" style="margin-left:40px;color:#999;font-size:14px;">暂无证书</view>
+			</view>
+			<view class="word-box" v-if="item.materialType==1">
+				<view class="word-box-title">{{item.materialName}}</view>
+				<view class="word-box-min" v-for="(minItem,minIndex) in item.upList" :key="minIndex" @click="lookItem(minItem)">
+					<img src="@/images/basicsModules/icon_pdf.png" v-if="minItem.type == 'pdf'">
+					<img src="@/images/basicsModules/icon_word.png" v-if="minItem.type == 'doc' || minItem.type == 'docx'">
+					<img :src="configUrl+minItem.url" v-if="minItem.type == 'png' || minItem.type == 'jpg' || minItem.type == 'jpeg' || minItem.type == 'gif'">
+					<view>{{minItem.name}}</view>
+				</view>
+			</view>
+		</view>
+		<view class="bottom-button-p" v-if="subjectData.labSecurityApply.auditStatus == 1" @click="bottomButtonClick">重新提交</view>
+    </view>
+</template>
+
+<script>
+    import { getDetails } from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				pageType:false,
+				//传参数据
+				infoData:{},
+				//获取数据
+				subjectData:{},
+				configUrl:config.base_url,
+            }
+        },
+        onLoad(option) {
+            this.infoData = JSON.parse(decodeURIComponent(option.item));
+            //修改页面title
+            uni.setNavigationBarTitle({
+                title:this.infoData.auditStatus==0?'待审核':(this.infoData.auditStatus==1?'未通过':(this.infoData.auditStatus==2?'已通过':''))
+            });
+        },
+        onShow(){
+            this.getDetails();
+        },
+        methods: {
+			lookItem(minItem){
+				console.log("minItem",minItem)
+				if(minItem.type == 'png' || minItem.type == 'jpg' || minItem.type == 'jpeg' || minItem.type == 'gif'){
+					//查看图片
+					wx.previewImage({
+						urls: [config.base_url+minItem.url], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+						current: '', // 当前显示图片的http链接,默认是第一个
+						success: function(res) {},
+						fail: function(res) {},
+						complete: function(res) {},
+					})
+				}else if(minItem.type == 'pdf' || minItem.type == 'doc' || minItem.type == 'docx'){
+					uni.showLoading({
+					    title: '下载中'
+					});
+					//下载文档
+					wx.downloadFile({
+						url: config.base_url+minItem.url,
+						header: {
+							Authorization: uni.getStorageSync('token')
+						},
+						success: function (res) {
+							console.log("resresresresresres",res)
+							const fileManager = wx.getFileSystemManager()
+							const filePath = wx.env.USER_DATA_PATH + '/' + minItem.name + '.docx'
+							fileManager.saveFile({
+								tempFilePath: res.tempFilePath,
+								filePath,
+								success: () => {
+									uni.hideLoading();
+									wx.openDocument({
+										filePath: filePath,
+										showMenu: true,
+										fileType: minItem.type
+									})
+								},
+								fail: function (res){
+									uni.hideLoading();
+									uni.showToast({
+										title: '下载失败',
+										icon:"none",
+										mask:true,
+										duration: 2000
+									});
+								}
+							})
+						},
+						fail: function (res){
+							uni.hideLoading();
+							uni.showToast({
+								title: '下载失败',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+					})
+				}
+			},
+			//重新提交
+			bottomButtonClick(){
+				uni.navigateTo({
+				    url:'/pages_student/accessApplication/newApplication?item='+encodeURIComponent(JSON.stringify(this.subjectData))
+				});
+			},
+            //获取安全准入审批记录详细信息(用户端)
+            async getDetails() {
+                let self = this;
+                const {data} = await getDetails({id:this.infoData.id})
+                if(data.code==200){
+				  for(let i=0;i<data.data.listTemp.length;i++){
+					  console.log(data.data.listTemp.length)
+					if(data.data.listTemp[i].materialType == 1){
+					  let maxList = [];
+					  for(let o=0;o<data.data.listTemp[i].listMr.length;o++){
+						   console.log(data.data.listTemp[i].listMr.length)
+						let bigList = data.data.listTemp[i].listMr[o].dataUrl.split(',');
+						for(let x=0;x<bigList.length;x++){
+							console.log(bigList.length)
+						  if(bigList[x]){
+							let minList = bigList[x].split(';');
+							let minListTwo = minList[0].split('.')
+							let obj = {
+							  name:minList[0],
+							  url:minList[1],
+							  type:minListTwo[1]
+							};
+							maxList.push(obj);
+						  }
+						}
+					  }
+					  data.data.listTemp[i].upList = maxList;
+					  console.log('maxList[0].url',maxList);
+					  // self.iframeSrc = window.location.href.split('://')[0]+'://' + process.env.VUE_APP_BASE_FILE_API + '/onlinePreview?url='+encodeURIComponent(btoa(unescape(encodeURIComponent(maxList[0].url))));
+					}
+				  }
+				  this.$set(this,"subjectData",data.data);
+				  this.pageType = true;
+                }
+            }
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #applicationDetails{
+        height:100%;
+        width:100%;
+        overflow-y scroll
+		.user-info-box{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx;
+			padding:20rpx 0;
+			.user-info-box_title{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 30rpx;
+				margin-left: 24rpx
+				margin-bottom :10px;
+				>view{
+					display inline-block;
+				}
+			}
+			.user-info-box-min{
+				margin:0 26rpx;
+				display flex;
+				view{
+					line-height:66rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					width:140rpx;
+					color:#999;
+				}
+				view:nth-child(2){
+					flex:1;
+					text-align right;
+					color:#333;
+				}
+			}
+		}
+		.user-card-box{
+			background #fff;
+			border-radius:20rpx;
+			margin:0 20rpx 20rpx;
+			padding:20rpx 0;
+			.user-card-title{
+				padding-left:24rpx;
+				font-size:30rpx;
+				font-weight:700;
+				margin-bottom:20rpx;
+			}
+			.user-card-text{
+				line-height:66rpx;
+				font-size:28rpx;
+				color:#999;
+				padding:0 24rpx;
+			}
+		}
+		.img-box{
+			background #fff;
+			border-radius:20rpx;
+			margin:0 20rpx 20rpx;
+			padding:20rpx 0;
+			.img-title{
+				padding-left:24rpx;
+				font-size:30rpx;
+				font-weight:700;
+				margin-bottom:20rpx;
+			}
+			img{
+				display block;
+				width:640rpx;
+				margin:0 auto 10rpx;
+			}
+		}
+		.word-box{
+			background #fff;
+			border-radius:20rpx;
+			margin:0 20rpx 20rpx;
+			padding:20rpx 0;
+			.word-box-title{
+				padding-left:24rpx;
+				font-size:30rpx;
+				font-weight:700;
+				margin-bottom:20rpx;
+			}
+			.word-box-min{
+				display flex;
+				margin:0 20rpx 20rpx;
+				img{
+					height:60rpx;
+					width:60rpx;
+				}
+				view{
+					margin-left:20rpx;
+					line-height:60rpx;
+				}
+			}
+		}
+		.bottom-button-p{
+			width:650rpx;
+			height:100rpx;
+			line-height:100rpx;
+			text-align center;
+			border-radius:20rpx;
+			margin:20rpx 50rpx;
+			background: #0183fa;
+			color:#fff;
+		}
+    }
+</style>

+ 251 - 0
pages_student/accessApplication/chooseALaboratory.vue

@@ -0,0 +1,251 @@
+<!-- 选择实验室 -->
+<template>
+    <view id="chooseALaboratory">
+        <view class="picker-box">
+            <picker @change="facultyChange" :value="facultyIndex" :range="faculty">
+                <view class="picker-min-box">
+                    <view class="left-box">请选择院系:</view>
+                    <view>{{faculty[facultyIndex]}}</view>
+                    <img src="@/images/basicsModules/icon_04.png">
+                </view>
+            </picker>
+        </view>
+        <view class="picker-box">
+            <picker @change="buildingChange" :value="buildingIndex" :range="building">
+                <view class="picker-min-box">
+                    <view class="left-box">请选择实验楼:</view>
+                    <view>{{building[buildingIndex]}}</view>
+                    <img src="@/images/basicsModules/icon_04.png">
+                </view>
+            </picker>
+        </view>
+        <view class="for-max-box">
+            <view class="for-box" v-for="(item,index) in dataList" :key="index" @click="goAccessApplication(item)">
+                <view class="left-box">
+                    <view>{{item.name}}</view>
+                    <view>{{item.deptName}}{{item.buildName}}{{item.room}}</view>
+                </view>
+                <view class="right-p" :class="{'colorA':!item.isApply}">{{item.isApply?'已申请':'立即申请'}}</view>
+                <img v-if="!item.isApply" src="@/images/basicsModules/icon_04.png">
+            </view>
+            <view class="bottom-null-view">暂无更多数据</view>
+        </view>
+    </view>
+</template>
+
+<script>
+    import { departmentsList,buildingList,mySecuritySubjectList,subjectMaterialList } from '@/api/apiDemo/index.js'
+    export default {
+        data() {
+            return {
+                //空数据展示
+                nullType:false,
+                faculty:['暂无院系数据'],
+                facultyList:[],
+                facultyIndex:0,
+                building:['暂无实验楼数据'],
+                buildingList:[],
+                buildingIndex:0,
+                dataList:[],
+            }
+        },
+        onLoad() {
+
+        },
+        onShow(){
+            this.getDepartmentsList();
+        },
+        methods: {
+
+            //查询院系
+            async getDepartmentsList() {
+                let self = this;
+                const {data} = await departmentsList()
+                if(data.code==200){
+                    if (data.data[0]){
+                        let list = [];
+                        for(let i=0;i<data.data.length;i++){
+                            list.push(data.data[i].deptName);
+                        }
+                        this.faculty = list;
+                        this.facultyIndex = 0;
+                        this.facultyList = data.data;
+                        this.getDuildingList(this.facultyList[0].deptId)
+                    }else{
+                        this.faculty = ['暂无院系数据'];
+                        this.facultyIndex = 0;
+                        this.facultyList = [];
+                        this.building = ['暂无实验楼数据'];
+                        this.buildingIndex = 0;
+                        this.buildingList = [];
+                        this.dataList=[];
+                    }
+                }
+            },
+            //查询楼栋
+            async getDuildingList(deptId) {
+                let self = this;
+                let obj = {deptId:deptId}
+                const {data} = await buildingList(obj);
+                if(data.code==200){
+                    if (data.data[0]){
+                        let list = [];
+                        for(let i=0;i<data.data.length;i++){
+                            list.push(data.data[i].deptName);
+                        }
+                        this.building = list;
+                        this.buildingIndex = 0;
+                        this.buildingList = data.data;
+                        this.mySecuritySubjectList(this.buildingList[0].deptId);
+                    }else{
+                        this.building = ['暂无实验楼数据'];
+                        this.buildingIndex = 0;
+                        this.buildingList = [];
+                        this.dataList=[];
+                    }
+                }
+            },
+            //查询列表
+            async mySecuritySubjectList(deptId) {
+                let self = this;
+                let obj = {deptId:deptId}
+                const {data} = await mySecuritySubjectList(obj);
+                if(data.code==200){
+                    if(data.data[0]){
+                        this.dataList = data.data;
+                    }else{
+                        this.dataList=[];
+                    }
+                }
+            },
+            facultyChange(e){
+                this.facultyIndex = e.target.value;
+                this.getDuildingList(this.facultyList[this.facultyIndex].deptId)
+            },
+            buildingChange(e){
+                this.buildingIndex = e.target.value;
+                this.mySecuritySubjectList(this.buildingList[this.buildingIndex].deptId)
+            },
+            goAccessApplication(item){
+                if(item.isApply){
+                    //已申请
+					return
+                    item.infoId = item.appId;
+                    uni.navigateTo({
+                        url:'/pages_student/accessApplication/applicationDetails?item='+encodeURIComponent(JSON.stringify(item))
+                    })
+                }else{
+                    //未申请
+					this.subjectMaterialList(item);
+                }
+            },
+			//查询实验室下的安全准入资格材料表
+			async subjectMaterialList(item){
+			    let obj = {
+			        subjectId:item.id
+			    }
+			    const {data} = await subjectMaterialList(obj)
+			    if(data.code == 200){
+					if(data.data[0]){
+						item.buildId = this.buildingList[this.buildingIndex].deptId;
+						item.deptId = this.facultyList[this.facultyIndex].deptId;
+						uni.navigateTo({
+						    url:'/pages_student/accessApplication/accessApplication?item='+encodeURIComponent(JSON.stringify(item))+'&list='+encodeURIComponent(JSON.stringify(data.data))
+						})
+					}else{
+						uni.showToast({
+							title: '该实验室未配置准入资格,无法申请~',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+					}
+			    }
+			},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #chooseALaboratory{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column
+        .picker-box:nth-child(1){
+            border-bottom:1rpx solid #e0e0e0;
+        }
+        .picker-box:nth-child(2){
+            margin-bottom:40rpx;
+        }
+        .picker-box{
+            height:80rpx;
+            background: #fff
+            .picker-min-box{
+                display flex;
+                view:nth-child(1){
+                    flex:1;
+                    line-height 80rpx
+                    color:#333
+                    margin-left:20rpx;
+                }
+                view:nth-child(2){
+                    line-height 80rpx
+                    color:#CCCCCC
+                }
+                img{
+                    width:12rpx;
+                    height:24rpx;
+                    margin:28rpx 20rpx 0 28rpx;
+                }
+            }
+        }
+        .for-max-box{
+            flex:1;
+            overflow-y scroll
+            .bottom-null-view{
+                font-size:26rpx;
+                color:#999;
+                text-align: center
+                line-height:80rpx;
+            }
+            .for-box{
+                background #fff
+                display flex
+                border-bottom:1rpx solid #e0e0e0;
+                .left-box{
+                    flex:1;
+                    margin-left:20rpx;
+                    view:nth-child(1){
+                        line-height: 28rpx;
+                        font-size: 28rpx;
+                        color: #333333;
+                        margin:20rpx 0 0 0;
+                    }
+                    view:nth-child(2){
+                        line-height: 24rpx;
+                        font-size: 24rpx;
+                        color: #999;
+                        margin:25rpx 0 0 0;
+                    }
+                }
+                .right-p{
+                    line-height:120rpx;
+                    font-size:24;
+                    color: #999999;
+					margin-right:52rpx;
+                }
+                img{
+                    width:12rpx;
+                    height:24rpx;
+                    margin:48rpx 20rpx 48rpx 20rpx;
+                }
+                .colorA{
+                    color: #0183FA;
+					margin-right:0;
+                }
+            }
+        }
+    }
+</style>

Файловите разлики са ограничени, защото са твърде много
+ 1141 - 0
pages_student/accessApplication/newApplication.vue


+ 217 - 0
pages_student/accessApplication/safeAccess.vue

@@ -0,0 +1,217 @@
+<!-- 安全准入 -->
+<template>
+    <view id="safeAccess">
+        <scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+			<view class="for-box" v-for="(item,index) in infoList" :key="index" @click="goInfoPage(item)">
+				<view class="name-box">
+					<view :class="item.auditStatus==0?'typeColor1':(item.auditStatus==1?'typeColor2':(item.auditStatus==2?'typeColor3':''))">{{item.auditStatus==0?'待审核':(item.auditStatus==1?'未通过':(item.auditStatus==2?'已通过':''))}}</view>
+					<view>{{item.subjectName}}准入申请</view>
+				</view>
+				<view class="time-box">
+					<view></view>
+					<view>{{item.auditStatus==0?'申请时间:' + item.creatTime:(item.auditStatus==1?'审核未通过时间:' + item.rejectTime:(item.auditStatus==2?'有效期:' + item.auditTime + ' 至 ' + item.validEndTime:''))}}</view>
+				</view>
+			</view>
+            <view class="get-null-box" v-if="getData.nullDataType">暂无更多数据</view>
+        </scroll-view>
+        <view class="bottom-button-box" @click="goChooseALaboratory">准入申请</view>
+    </view>
+</template>
+
+<script>
+    import { listapply } from '@/api/apiDemo/index.js'
+    export default {
+        data() {
+            return {
+                //数据列表
+                infoList:[],
+                //列表请求参数
+                getData:{
+                    page:1,
+                    pageSize:20,
+                    getType:true,
+                    nullDataType:true,
+                }
+            }
+        },
+        onLoad() {
+
+        },
+        onShow(){
+            this.clearData();
+            this.getList();
+        },
+        methods: {
+            //清除
+            clearData(){
+                this.infoList = [];
+                this.getData.page = 1;
+                this.getData.getType = true;
+                this.getData.nullDataType = true;
+            },
+            //去准入详情
+            goInfoPage(item){
+                item.infoId = item.id;
+                uni.navigateTo({
+                    url:'/pages_student/accessApplication/applicationDetails?item='+encodeURIComponent(JSON.stringify(item))
+                })
+            },
+            //去选择实验室
+            goChooseALaboratory(){
+				uni.navigateTo({
+				    url:'/pages_student/accessApplication/newApplication'
+				})
+                // uni.navigateTo({
+                //     url:'/pages_student/workbench/safeAccess/chooseALaboratory'
+                // })
+            },
+            //滚动事件
+            scrollGet(){
+                if(this.getData.getType){
+                    this.getData.page += 1;
+                    this.getList();
+                }
+            },
+            //获取列表数据
+            async getList(){
+                let self = this;
+                let obj = {
+                    pageNum:this.getData.page,
+                    pageSize:this.getData.pageSize,
+                    // recordContent:"-1",
+                    // userId:uni.getStorageSync('userId'),
+                }
+                const {data} = await listapply(obj)
+                if(data.code==200){
+					for(let i=0;i<data.rows.length;i++){
+						// item.auditTime + ' 至 ' + item.validEndTime
+						if(data.rows[i].auditTime){
+							let leftTiem = data.rows[i].auditTime.split(' ');
+							data.rows[i].auditTime = leftTiem[0];
+						}
+						if(data.rows[i].validEndTime){
+							let rightTuem = data.rows[i].validEndTime.split(' ');
+							data.rows[i].validEndTime = rightTuem[0];
+						}
+					}
+                    if(self.page==1){
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = data.rows;
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = data.rows;
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }else{
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows)
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows);
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }
+                }
+            },
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #safeAccess{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column
+        .info-max-box{
+            flex:1;
+            overflow: scroll
+            .for-box:nth-child(1){
+                border:none;
+            }
+            .for-box{
+                background #fff
+				border-radius:20rpx;
+				margin:20rpx;
+				overflow hidden
+				.name-box{
+					display flex;
+					margin:20rpx 0;
+					view:nth-child(1){
+						height:36rpx;
+						text-align center;
+						width:100rpx;
+						line-height:36rpx;
+						font-size:20rpx;
+						margin:0 18rpx 0 23rpx;
+					}
+					view:nth-child(2){
+						flex:1;
+						font-size:28rpx;
+						margin-right:20rpx;
+					}
+					.typeColor1{
+						border-radius:6rpx;
+						color:#F6A71D;
+						background rgba(246,167,29,0.2)
+					}
+					.typeColor2{
+						border-radius:6rpx;
+						color:#FF5555;
+						background rgba(255,85,85,0.2)
+					}
+					.typeColor3{
+						border-radius:6rpx;
+						color:#30A23D;
+						background rgba(48,162,61,0.2)
+
+					}
+					.typeColor4{
+						border-radius:6rpx;
+						color:#F6A71D;
+						background rgba(246,167,29,0.2)
+					}
+				}
+				.time-box{
+					display flex;
+					height:36rpx;
+					margin:20rpx 0;
+					view:nth-child(1){
+						width:100rpx;
+						line-height:36rpx;
+						font-size:20rpx;
+						margin:0 18rpx 0 23rpx;
+					}
+					view:nth-child(2){
+						flex:1;
+						font-size:28rpx;
+					}
+				}
+            }
+            .get-null-box{
+                height:100rpx;
+                line-height:100rpx;
+                color:#999;
+                text-align center
+            }
+        }
+        .bottom-button-box{
+			border-radius:20rpx;
+			margin:20rpx 50rpx;
+            width: 650rpx;
+            height: 100rpx;
+            line-height: 100rpx;
+            background: #0183FA;
+            font-size: 30rpx;
+            color: #FFFFFF;
+            text-align center;
+        }
+    }
+</style>

BIN
pages_student/images/icon_08.png


BIN
pages_student/images/icon_dhli.png


BIN
pages_student/images/icon_dhlp_dhcg.png


BIN
pages_student/images/icon_wd_jlf.png


BIN
pages_student/images/img_zrsq_bg.png


+ 215 - 0
pages_student/integralManage/codeSuccess.vue

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

+ 437 - 0
pages_student/integralManage/creditPoints.vue

@@ -0,0 +1,437 @@
+<!--信用分-->
+<template>
+    <view id="creditPoints">
+        <view class="top-title-box">
+            <picker @change="bindPickerChange" :value="pickerIndex" :range="pickerList" range-key="name">
+                <view class="top-title-button-box">
+                    <view>{{pickerList[pickerIndex].name}}</view>
+                    <img src="@/images/basicsModules/icon_jlfmx_xl.png">
+                </view>
+            </picker>
+            <view class="top-title-null-p"></view>
+            <view class="top-title-get" v-if="pickerIndex == 0 || pickerIndex == 1">总获得:<span>{{obtainPoints}}</span></view>
+            <view class="top-title-exchange" v-if="pickerIndex == 0 || pickerIndex == 2">总减扣:<span>{{deductPoints}}</span></view>
+            <view class="top-title-img" @click="shadeTypeButton">
+                <img src="@/images/basicsModules/icon_jlfmx_bz.png">
+            </view>
+        </view>
+        <scroll-view scroll-y @scrolltolower="scrollGet" class="for-max-box">
+            <view class="for-min-box" v-for="(item,index) in infoList" :key="index">
+                <view class="for-top-title">
+                    <view class="left-box">
+                        <picker mode="date" fields="month" @change="bindDateChange">
+                            <view class="for-top-title-time">{{item.yearMonth}}</view>
+                        </picker>
+                    </view>
+                    <view class="right-box" @click.stop="moonClick(item)">
+                        <img class="img-one" v-if="item.unfoldType" src="@/images/basicsModules/icon_06.png">
+                        <img class="img-two" v-if="!item.unfoldType" src="@/images/basicsModules/icon_04.png">
+                        <view class="for-top-title-null"></view>
+                        <view class="for-top-title-get" v-if="pickerIndex == 0 || pickerIndex == 1">获得:{{item.obtainPoints}}</view>
+                        <view class="for-top-title-border" v-if="pickerIndex == 0"></view>
+                        <view class="for-top-title-exchange" v-if="pickerIndex == 0 || pickerIndex == 2">减扣:{{item.deductPoints}}</view>
+                    </view>
+                </view>
+                <view class="for-list-min-box" v-for="(minItem,indexTwo) in item.elPointsLoginfoList" :key="indexTwo" v-if="item.unfoldType">
+                    <img src="@/pages_student/images/icon_wd_jlf.png">
+                    <view class="time-box">
+                        <view>{{minItem.messageContent}}</view>
+                        <view>{{minItem.createTime}}</view>
+                    </view>
+                    <view class="num-p" :class="minItem.points>0?'colorA':(minItem.points<0?'colorB':'')">{{minItem.points>0?'+'+minItem.points:minItem.points}}</view>
+                </view>
+                <view class="for-null-title" v-if="!item.elPointsLoginfoList[0]">暂无数据</view>
+            </view>
+            <img class="null-img" v-if="!infoList[0]" src="@/images/basicsModules/null-data-1.png">
+        </scroll-view>
+        <view class="shade-max-box" v-if="shadeType">
+            <view class="shade-big-box">
+                <view class="shade-title-box">
+                    <view class="img-box"></view>
+                    <view class="title-view">信用分规则</view>
+                    <view class="img-box" @click="shadeTypeButton">
+                        <img src="@/images/basicsModules/icon_jlfgz_gb.png">
+                    </view>
+                </view>
+                <view class="shade-text-max-box">
+                    <view class="shade-text-title title-colorA">获得</view>
+                    <view class="shade-text-p">满足信用合格分获取条件,获得信用合格分;完成违规处理恢复信用分。</view>
+                    <view class="shade-text-title title-colorB">减扣</view>
+                    <view class="shade-text-p">违规扣分;及时进行违规处理,通过在安全学习与考试一体机学习、考试、做题等方式恢复。</view>
+                </view>
+                <view class="shade-button" @click="shadeTypeButton">知道了</view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+    import { monthAllCount, monthCountPoints } from '@/api/apiDemo/index.js'
+    export default {
+        name: "creditPoints",
+        data() {
+            return {
+                //遮罩层开关状态
+                shadeType:false,
+                //选项数据
+                pickerList:[
+                    {
+                        name:"全部",
+                        value:"0",
+                    },
+                    {
+                        name:"获得",
+                        value:"1",
+                    },
+                    {
+                        name:"减扣",
+                        value:"2",
+                    },
+                ],
+                pickerIndex:0,
+                //用户数据
+                deductPoints:"",
+                obtainPoints:"",
+                //列表数据
+                infoList:[],
+                getData:{
+                    page:1,
+                    pageSize:20,
+                    getType:true,
+                    nullDataType:true,
+                },
+                //年月
+                yearMonth:"",
+            }
+        },
+        onPullDownRefresh(){
+            this.page = 1;
+            this.infoList = [];
+            this.yearMonth = "";
+            this.getList();
+        },
+        onLoad() {
+            this.getMonthAllCount();
+            this.getList();
+        },
+        methods: {
+            //遮罩层开关
+            shadeTypeButton(){
+                this.shadeType = !this.shadeType;
+            },
+            //分类选择触发
+            bindPickerChange(data){
+                this.page = 1;
+                this.infoList = [];
+                this.pickerIndex = data.detail.value;
+                this.getList();
+            },
+            //时间选择触发
+            bindDateChange(data){
+                this.page = 1;
+                this.infoList = [];
+                this.yearMonth = data.detail.value;
+                this.getList();
+            },
+            //月数据展开关闭
+            moonClick(item){
+                item.unfoldType = !item.unfoldType;
+            },
+            //滚动事件
+            scrollGet(){
+                if(this.getData.getType){
+                    this.getData.page += 1;
+                    this.getList();
+                }
+            },
+            //获取总值
+            async getMonthAllCount(){
+                let obj = {
+                    pointsType:"1"
+                };
+                const {data} = await monthAllCount(obj);
+                if(data.code==200){
+                    this.deductPoints = data.data.deductPoints;
+                    this.obtainPoints = data.data.obtainPoints;
+                }
+            },
+            //获取列表数据
+            async getList(){
+                let self = this;
+                let obj = {
+                    bonusType:this.pickerIndex,
+                    pointsType:"1",
+                    yearMonth:this.yearMonth,
+                    pageNum:this.getData.page,
+                    pageSize:this.getData.pageSize,
+                };
+                const {data} = await monthCountPoints(obj);
+                if(data.code==200){
+                    for(let i=0;i<data.rows.length;i++){
+                        data.rows[i].unfoldType = true
+                    }
+                    if(self.page==1){
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = data.rows;
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = data.rows;
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }else{
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows)
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows);
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }
+                    wx.stopPullDownRefresh();
+                }
+            },
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #creditPoints{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column
+        .top-title-box{
+            height:100rpx;
+            background #fff
+            border-bottom:20rpx solid #f5f5f5;
+            display flex
+            .top-title-button-box{
+                width:150rpx;
+                height:60rpx;
+                display flex
+                border-radius:30rpx;
+                background #0183fa
+                margin:20rpx;
+                view{
+                    flex:1;
+                    color:#fff;
+                    text-align center
+                    font-size:26rpx;
+                    line-height:60rpx;
+                }
+                img{
+                    width:24rpx;
+                    height:14rpx;
+                    margin:24rpx 25rpx 0 0;
+                }
+            }
+            .top-title-null-p{
+                flex:1;
+            }
+            .top-title-get{
+                line-height:100rpx;
+                font-size:26rpx;
+                margin-right:20rpx;
+            }
+            .top-title-exchange{
+                line-height:100rpx;
+                font-size:26rpx;
+            }
+            .top-title-img{
+                height:100rpx;
+                width:100rpx;
+                img{
+                    width:28rpx;
+                    height:28rpx;
+                    margin:38rpx 36rpx 0 36rpx;
+                }
+            }
+        }
+        .for-max-box{
+            flex:1;
+            overflow-y scroll
+            .for-min-box{
+                .for-top-title{
+                    background #e0e0e0
+                    line-height:80rpx;
+                    display: flex
+                    font-size:26rpx;
+                    color:#333;
+                    padding:0 20rpx;
+                    .left-box{
+                        .for-top-title-time{
+                            margin-right:20rpx;
+                        }
+                    }
+                    .right-box{
+                        display flex
+                        flex:1;
+                        .img-one{
+                            margin-top:36rpx;
+                            width:24rpx;
+                            height:12rpx;
+                        }
+                        .img-two{
+                            margin-top:28rpx;
+                            width:12rpx;
+                            height:24rpx;
+                        }
+                        .for-top-title-null{
+                            flex:1;
+                        }
+                        .for-top-title-get{
+
+                        }
+                        .for-top-title-border{
+                            height:26rpx;
+                            margin:28rpx 18rpx;
+                            width:1rpx;
+                            background #999
+                        }
+                        .for-top-title-exchange{
+
+                        }
+                    }
+                }
+                .for-list-min-box{
+                    // height:110rpx;
+                    display flex
+                    padding:0 20rpx;
+                    background #fff
+                    border-top:1rpx solid #e0e0e0;
+                    img{
+                        margin:42rpx 25rpx 0 0;
+                        height:26rpx;
+                        width:30rpx;
+                    }
+                    .time-box{
+                        flex:1;
+                        view:nth-child(1){
+							padding-top:6px;
+                            line-height:30rpx;
+                            margin-top:13rpx;
+                            font-size:24rpx;
+                            color:#333;
+							display: -webkit-box;
+							-webkit-box-orient: vertical;
+							-webkit-line-clamp: 3;
+							overflow: hidden;
+                        }
+                        view:nth-child(2){
+                            line-height:39rpx;
+                            font-size:24rpx;
+                            color:#999;
+							padding-bottom:6px;
+                        }
+                    }
+                    .num-p{
+						margin-left:20rpx;
+                        line-height:110rpx;
+                        font-size:24rpx;
+                        font-weight:700;
+                    }
+                    .colorA{
+                        color:#0b8d0e;
+                    }
+                    .colorB{
+                        color:#ff9300;
+                    }
+                }
+                .for-null-title{
+                    text-align:center;
+                    line-height:110rpx;
+                    color:#999;
+                    font-size:24rpx;
+                }
+            }
+            .null-img{
+                display block
+                width:276rpx;
+                height:321rpx;
+                position absolute
+                top:100rpx;
+                left:274rpx;
+            }
+        }
+        .shade-max-box{
+            width:100%;
+            height:100%;
+            position fixed
+            top:0;
+            left:0;
+            background rgba(0,0,0,0.4)
+            .shade-big-box{
+                width:528rpx;
+                height:560rpx;
+                border-radius:10rpx;
+                background #fff
+                position absolute
+                left:50%;
+                top:50%;
+                margin-left:-264rpx;
+                margin-top:-280rpx;
+                display flex
+                flex-direction column
+                .shade-title-box{
+                    height:88rpx;
+                    display flex
+                    .title-view{
+                        font-size:28rpx;
+                        color:#333;
+                        flex:1;
+                        text-align center;
+                        line-height:88rpx;
+                    }
+                    .img-box{
+                        width:68rpx;
+                        height:68rpx;
+                        img{
+                            height:28rpx;
+                            width:28rpx;
+                            margin:20rpx;
+                        }
+
+                    }
+                }
+                .shade-text-max-box{
+                    flex:1;
+                    margin:0 37rpx;
+                    .shade-text-title{
+                        line-height:28rpx;
+                        font-size:28rpx;
+                        margin-bottom:24rpx;
+                    }
+                    .shade-text-p{
+                        font-size:24rpx;
+                        margin-bottom:24rpx;
+						overflow :hidden;
+                    }
+                    .title-colorA{
+                        color:#0B8D0E;
+                    }
+                    .title-colorB{
+                        color:#FF9300;
+                    }
+                }
+                .shade-button{
+                    width:300rpx;
+                    height:60rpx;
+                    text-align center;
+                    line-height:60rpx;
+                    color:#fff;
+                    font-size:28rpx;
+                    background #0183FA
+                    border-radius:10rpx;
+                    margin:0 auto 40rpx;
+                }
+            }
+        }
+    }
+
+</style>

+ 185 - 0
pages_student/integralManage/pointsRecord.vue

@@ -0,0 +1,185 @@
+<!-- 积分记录 -->
+<template>
+    <view id="pointsRecord">
+        <view class="top-max-box">
+            <img src="@/pages_student/images/icon_wd_jlf.png">
+            <view>当前积分:</view>
+            <view>{{recordNum}}</view>
+        </view>
+        <scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
+            <view class="for-info-box" v-for="(item,index) in infoList" :key="index" @click="goInfoPage(item)">
+                <view class="left-box">
+                    <view>{{item.remark}}</view>
+                    <view>{{item.createTime}}</view>
+                </view>
+                <view class="right-box" :class="{'colorA':item.recordType.code == 1}">{{item.recordType.code==1?'+':'-'}}{{item.points}}</view>
+            </view>
+            <view class="get-null-box" v-if="getData.nullDataType">暂无更多数据</view>
+        </scroll-view>
+    </view>
+</template>
+
+<script>
+    import { listMyApp,countMyApp } from '@/api/apiDemo/index.js'
+    export default {
+        data() {
+            return {
+                recordNum:"",
+                infoList:[],
+                //列表请求参数
+                getData:{
+                    page:1,
+                    pageSize:20,
+                    getType:true,
+                    nullDataType:true,
+                }
+            }
+        },
+        onLoad() {
+            this.clearData();
+            this.countMyApp();
+            this.getList();
+        },
+        methods: {
+            //获取积分总数
+            async countMyApp() {
+                const {data} = await countMyApp()
+                if(data.code == 200){
+					if(data.data){
+						this.recordNum = data.data;
+					}else{
+						this.recordNum = 0;
+					}
+                }
+            },
+            //清除
+            clearData(){
+                this.recordNum = "";
+                this.infoList = [];
+                this.getData.page = 1;
+                this.getData.getType = true;
+                this.getData.nullDataType = true;
+            },
+            //滚动事件
+            scrollGet(){
+                if(this.getData.getType){
+                    this.getData.page += 1;
+                    this.getList();
+                }
+            },
+            //获取列表数据
+            async getList(){
+                let self = this;
+                let obj = {
+                    pageNum:this.getData.page,
+                    pageSize:this.getData.pageSize,
+                }
+                const {data} = await listMyApp(obj)
+                if(data.code==200){
+                    if(self.page==1){
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = data.rows;
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = data.rows;
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }else{
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows)
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows);
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }
+                }
+            },
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #pointsRecord{
+        height:100%;
+        width:100%;
+        display flex;
+        flex-direction column
+        .top-max-box{
+            height:100rpx;
+            display flex
+            background :#fff;
+            margin-bottom:20rpx;
+            img{
+                height:30rpx;
+                width:30rpx;
+                margin:35rpx 35rpx 35rpx 20rpx;
+            }
+            view:nth-child(2){
+                line-height:99rpx;
+                font-size:30rpx;
+                color: #999999;
+                width:150rpx;
+            }
+            view:nth-child(3){
+                flex:1;
+                line-height:99rpx;
+                font-size:30rpx;
+                color: #333333;
+            }
+        }
+        .info-max-box{
+            flex:1;
+            overflow: scroll
+            .for-info-box:nth-child(1){
+                border:none;
+            }
+            .for-info-box{
+                background #fff
+                // height:120rpx;
+                border-top:1rpx solid #F5F5F5;
+                display flex
+                .left-box{
+                    margin-left:20rpx;
+                    flex:1;
+                    view:nth-child(1){
+                        width:500rpx;
+                        line-height: 30rpx;
+                        font-size: 28rpx;
+                        color: #333333;
+                        margin-top:23rpx;
+                    }
+                    view:nth-child(2){
+                        line-height: 20rpx;
+                        font-size: 26rpx;
+                        color: #999999;
+                        margin:23rpx 0;
+
+                    }
+                }
+                .right-box{
+                    width:200rpx;
+                    line-height:120rpx;
+                    font-size: 28rpx;
+                    text-align right;
+                    margin-right:20rpx;
+                }
+                .colorA{
+                    color:#12AE2B;
+                }
+            }
+            .get-null-box{
+                height:100rpx;
+                line-height:100rpx;
+                color:#999;
+                text-align center
+            }
+        }
+    }
+</style>

+ 436 - 0
pages_student/integralManage/rewardPoints.vue

@@ -0,0 +1,436 @@
+<!--奖励分-->
+<template>
+    <view id="rewardPoints">
+        <view class="top-title-box">
+            <picker @change="bindPickerChange" :value="pickerIndex" :range="pickerList" range-key="name">
+                <view class="top-title-button-box">
+                    <view>{{pickerList[pickerIndex].name}}</view>
+                    <img src="@/images/basicsModules/icon_jlfmx_xl.png">
+                </view>
+            </picker>
+            <view class="top-title-null-p"></view>
+            <view class="top-title-get" v-if="pickerIndex == 0 || pickerIndex == 1">总获得:<span>{{obtainPoints}}</span></view>
+            <view class="top-title-exchange" v-if="pickerIndex == 0 || pickerIndex == 2">总兑换:<span>{{deductPoints}}</span></view>
+            <view class="top-title-img" @click="shadeTypeButton">
+                <img src="@/images/basicsModules/icon_jlfmx_bz.png">
+            </view>
+        </view>
+        <scroll-view scroll-y @scrolltolower="scrollGet" class="for-max-box">
+            <view class="for-min-box" v-for="(item,index) in infoList" :key="index">
+                <view class="for-top-title">
+                    <view class="left-box">
+                        <picker mode="date" fields="month" @change="bindDateChange">
+                            <view class="for-top-title-time">{{item.yearMonth}}</view>
+                        </picker>
+                    </view>
+                    <view class="right-box" @click.stop="moonClick(item)">
+                        <img class="img-one" v-if="item.unfoldType" src="@/images/basicsModules/icon_06.png">
+                        <img class="img-two" v-if="!item.unfoldType" src="@/images/basicsModules/icon_04.png">
+                        <view class="for-top-title-null"></view>
+                        <view class="for-top-title-get" v-if="pickerIndex == 0 || pickerIndex == 1">获得:{{item.obtainPoints}}</view>
+                        <view class="for-top-title-border" v-if="pickerIndex == 0"></view>
+                        <view class="for-top-title-exchange" v-if="pickerIndex == 0 || pickerIndex == 2">兑换:{{item.deductPoints}}</view>
+                    </view>
+                </view>
+                <view class="for-list-min-box" v-for="(minItem,indexTwo) in item.elPointsLoginfoList" :key="indexTwo" v-if="item.unfoldType">
+                    <img src="@/pages_student/images/icon_wd_jlf.png">
+                    <view class="time-box">
+                        <view>{{minItem.messageContent}}</view>
+                        <view>{{minItem.createTime}}</view>
+                    </view>
+                    <view class="num-p" :class="minItem.points>0?'colorA':(minItem.points<0?'colorB':'')">{{minItem.points>0?'+'+minItem.points:minItem.points}}</view>
+                </view>
+                <view class="for-null-title" v-if="!item.elPointsLoginfoList[0]">暂无数据</view>
+            </view>
+            <img class="null-img" v-if="!infoList[0]" src="@/images/basicsModules/null-data-1.png">
+        </scroll-view>
+        <view class="shade-max-box" v-if="shadeType">
+            <view class="shade-big-box">
+                <view class="shade-title-box">
+                    <view class="img-box"></view>
+                    <view class="title-view">奖励分规则</view>
+                    <view class="img-box" @click="shadeTypeButton">
+                        <img src="@/images/basicsModules/icon_jlfgz_gb.png">
+                    </view>
+                </view>
+                <view class="shade-text-max-box">
+                    <view class="shade-text-title title-colorA">获得</view>
+                    <view class="shade-text-p">成功签到、离开考勤,学习安全教育课程,通过模拟考试,模拟练习做题,遵守实验室规章制度不违规等,均可获得奖励分。</view>
+                    <view class="shade-text-title title-colorB">兑换</view>
+                    <view class="shade-text-p">奖励分可以在兑换机扫码兑换丰富礼品,累加到一定分值,还可以优先享受实验室资源。</view>
+                </view>
+                <view class="shade-button" @click="shadeTypeButton">知道了</view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script>
+    import { monthAllCount, monthCountPoints } from '@/api/apiDemo/index.js'
+    export default {
+        name: "rewardPoints",
+        data() {
+            return {
+                //遮罩层开关状态
+                shadeType:false,
+                //选项数据
+                pickerList:[
+                    {
+                        name:"全部",
+                        value:"0",
+                    },
+                    {
+                        name:"获得",
+                        value:"1",
+                    },
+                    {
+                        name:"减扣",
+                        value:"2",
+                    },
+                ],
+                pickerIndex:0,
+                //用户数据
+                deductPoints:"",
+                obtainPoints:"",
+                //列表数据
+                infoList:[],
+                getData:{
+                    page:1,
+                    pageSize:20,
+                    getType:true,
+                    nullDataType:true,
+                },
+                //年月
+                yearMonth:"",
+            }
+        },
+        onPullDownRefresh(){
+            this.page = 1;
+            this.infoList = [];
+            this.yearMonth = "";
+            this.getList();
+        },
+        onLoad() {
+            this.getMonthAllCount();
+            this.getList();
+        },
+        methods: {
+            //遮罩层开关
+            shadeTypeButton(){
+                this.shadeType = !this.shadeType;
+            },
+            //分类选择触发
+            bindPickerChange(data){
+                this.page = 1;
+                this.infoList = [];
+                this.pickerIndex = data.detail.value;
+                this.getList();
+            },
+            //时间选择触发
+            bindDateChange(data){
+                this.page = 1;
+                this.infoList = [];
+                this.yearMonth = data.detail.value;
+                this.getList();
+            },
+            //月数据展开关闭
+            moonClick(item){
+                item.unfoldType = !item.unfoldType;
+            },
+            //滚动事件
+            scrollGet(){
+                if(this.getData.getType){
+                    this.getData.page += 1;
+                    this.getList();
+                }
+            },
+            //获取总值
+            async getMonthAllCount(){
+                let obj = {
+                    pointsType:"2"
+                };
+                const {data} = await monthAllCount(obj);
+                if(data.code==200){
+                    this.deductPoints = data.data.deductPoints;
+                    this.obtainPoints = data.data.obtainPoints;
+                }
+            },
+            //获取列表数据
+            async getList(){
+                let self = this;
+                let obj = {
+                    bonusType:this.pickerIndex,
+                    pointsType:"2",
+                    yearMonth:this.yearMonth,
+                    pageNum:this.getData.page,
+                    pageSize:this.getData.pageSize,
+                };
+                const {data} = await monthCountPoints(obj);
+                if(data.code==200){
+                    for(let i=0;i<data.rows.length;i++){
+                        data.rows[i].unfoldType = true
+                    }
+                    if(self.page==1){
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = data.rows;
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = data.rows;
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }else{
+                        if(data.rows.length > 0 && data.rows.length == self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows)
+                        }else if(data.rows.length > 0 && data.rows.length != self.getData.pageSize){
+                            self.infoList = self.infoList.concat(data.rows);
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }else{
+                            self.getData.getType = false;
+                            self.getData.nullDataType = true;
+                        }
+                    }
+                    wx.stopPullDownRefresh();
+                }
+            },
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #rewardPoints{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column
+        .top-title-box{
+            height:100rpx;
+            background #fff
+            border-bottom:20rpx solid #f5f5f5;
+            display flex
+            .top-title-button-box{
+                width:150rpx;
+                height:60rpx;
+                display flex
+                border-radius:30rpx;
+                background #0183fa
+                margin:20rpx;
+                view{
+                    flex:1;
+                    color:#fff;
+                    text-align center
+                    font-size:26rpx;
+                    line-height:60rpx;
+                }
+                img{
+                    width:24rpx;
+                    height:14rpx;
+                    margin:24rpx 25rpx 0 0;
+                }
+            }
+            .top-title-null-p{
+                flex:1;
+            }
+            .top-title-get{
+                line-height:100rpx;
+                font-size:26rpx;
+                margin-right:20rpx;
+            }
+            .top-title-exchange{
+                line-height:100rpx;
+                font-size:26rpx;
+            }
+            .top-title-img{
+                height:100rpx;
+                width:100rpx;
+                img{
+                    width:28rpx;
+                    height:28rpx;
+                    margin:38rpx 36rpx 0 36rpx;
+                }
+            }
+        }
+        .for-max-box{
+            flex:1;
+            overflow-y scroll
+            .for-min-box{
+                .for-top-title{
+                    background #e0e0e0
+                    line-height:80rpx;
+                    display: flex
+                    font-size:26rpx;
+                    color:#333;
+                    padding:0 20rpx;
+                    .left-box{
+                        .for-top-title-time{
+                            margin-right:20rpx;
+                        }
+                    }
+                    .right-box{
+                        display flex
+                        flex:1;
+                        .img-one{
+                            margin-top:36rpx;
+                            width:24rpx;
+                            height:12rpx;
+                        }
+                        .img-two{
+                            margin-top:28rpx;
+                            width:12rpx;
+                            height:24rpx;
+                        }
+                        .for-top-title-null{
+                            flex:1;
+                        }
+                        .for-top-title-get{
+
+                        }
+                        .for-top-title-border{
+                            height:26rpx;
+                            margin:28rpx 18rpx;
+                            width:1rpx;
+                            background #999
+                        }
+                        .for-top-title-exchange{
+
+                        }
+                    }
+                }
+                .for-list-min-box{
+                    // height:110rpx;
+                    display flex
+                    padding:0 20rpx;
+                    background #fff
+                    border-top:1rpx solid #e0e0e0;
+                    img{
+                        margin:42rpx 25rpx 0 0;
+                        height:26rpx;
+                        width:30rpx;
+                    }
+                    .time-box{
+                        flex:1;
+                        view:nth-child(1){
+							padding-top:6px;
+                            line-height:30rpx;
+                            margin-top:13rpx;
+                            font-size:24rpx;
+                            color:#333;
+							display: -webkit-box;
+							-webkit-box-orient: vertical;
+							-webkit-line-clamp: 3;
+							overflow: hidden;
+                        }
+                        view:nth-child(2){
+                            line-height:39rpx;
+                            font-size:24rpx;
+                            color:#999;
+							padding-bottom:6px;
+                        }
+                    }
+                    .num-p{
+						margin-left:20rpx;
+                        line-height:110rpx;
+                        font-size:24rpx;
+                        font-weight:700;
+                    }
+                    .colorA{
+                        color:#0b8d0e;
+                    }
+                    .colorB{
+                        color:#ff9300;
+                    }
+                }
+                .for-null-title{
+                    text-align:center;
+                    line-height:110rpx;
+                    color:#999;
+                    font-size:24rpx;
+                }
+            }
+            .null-img{
+                display block
+                width:276rpx;
+                height:321rpx;
+                position absolute
+                top:100rpx;
+                left:274rpx;
+            }
+        }
+        .shade-max-box{
+            width:100%;
+            height:100%;
+            position fixed
+            top:0;
+            left:0;
+            background rgba(0,0,0,0.4)
+            .shade-big-box{
+                width:528rpx;
+                height:560rpx;
+                border-radius:10rpx;
+                background #fff
+                position absolute
+                left:50%;
+                top:50%;
+                margin-left:-264rpx;
+                margin-top:-280rpx;
+                display flex
+                flex-direction column
+                .shade-title-box{
+                    height:88rpx;
+                    display flex
+                    .title-view{
+                        font-size:28rpx;
+                        color:#333;
+                        flex:1;
+                        text-align center;
+                        line-height:88rpx;
+                    }
+                    .img-box{
+                        width:68rpx;
+                        height:68rpx;
+                        img{
+                            height:28rpx;
+                            width:28rpx;
+                            margin:20rpx;
+                        }
+
+                    }
+                }
+                .shade-text-max-box{
+                    flex:1;
+                    margin:0 37rpx;
+                    .shade-text-title{
+                        line-height:28rpx;
+                        font-size:28rpx;
+                        margin-bottom:24rpx;
+                    }
+                    .shade-text-p{
+                        font-size:24rpx;
+                        margin-bottom:24rpx;
+                    }
+                    .title-colorA{
+                        color:#0B8D0E;
+                    }
+                    .title-colorB{
+                        color:#FF9300;
+                    }
+                }
+                .shade-button{
+                    width:300rpx;
+                    height:60rpx;
+                    text-align center;
+                    line-height:60rpx;
+                    color:#fff;
+                    font-size:28rpx;
+                    background #0183FA
+                    border-radius:10rpx;
+                    margin:0 auto 40rpx;
+                }
+            }
+        }
+    }
+
+</style>

+ 4 - 4
utils/homeConfig.js

@@ -93,15 +93,15 @@ let routeDataList = [
 		name: "积分兑换",
 		limits:"",
 		route: "integralExchange",
-		routeUrl: "",
+		routeUrl: "/pages_student/integralManage/codeSuccess",
 		img: require('@/images/basicsModules/btn_wd_jfdh.png'),
-		buttonType:"button",
+		buttonType:"page",
 	},
 	{
 		name: "准入申请",
 		limits:"",
-		route: "safeAccess",
-		routeUrl: "/pages_student/workbench/safeAccess/safeAccess",
+		route: "accessApplication",
+		routeUrl: "/pages_student/accessApplication/safeAccess",
 		img: require('@/images/basicsModules/icon_sy_zrsq.png'),
 		buttonType:"page",
 	},