heyang 1 year ago
parent
commit
a143836ae2
93 changed files with 14803 additions and 140 deletions
  1. 18 1
      api/basicsModules/index.js
  2. 2 2
      api/request/config.js
  3. 7 0
      component/homeConfigurationSlot.vue
  4. 1 3
      component/mineConfigurationSlot.vue
  5. 1 1
      component/tabBar.vue
  6. 328 7
      pages.json
  7. 9 51
      pages/home/manageWorkbench.vue
  8. 12 12
      pages/home/supplierWorkbench.vue
  9. 5 47
      pages/login/login.vue
  10. 2 2
      pages/mine/mine.vue
  11. 88 0
      pages/supplier/forbidden.vue
  12. 96 0
      pages/supplier/hasten.vue
  13. 117 0
      pages/supplier/reject.vue
  14. 7 6
      pages_manage/laboratory/meLaboratory.vue
  15. 200 0
      pages_student/gasBottle/examination/examination.vue
  16. 743 0
      pages_student/gasBottle/examination/examinationAdd.vue
  17. 286 0
      pages_student/gasBottle/examination/examinationDetail.vue
  18. 412 0
      pages_student/gasBottle/examination/examinationSelect.vue
  19. 207 0
      pages_student/gasBottle/examination/examinationSucceed.vue
  20. 529 0
      pages_student/gasBottle/gasApply/awaitStorage.vue
  21. 205 0
      pages_student/gasBottle/gasApply/gasApply.vue
  22. 467 0
      pages_student/gasBottle/gasApply/gasApplyAdd.vue
  23. 311 0
      pages_student/gasBottle/gasApply/gasApplyList.vue
  24. 256 0
      pages_student/gasBottle/gasApply/gasApplyReject.vue
  25. 167 0
      pages_student/gasBottle/gasList/gasList.vue
  26. 202 0
      pages_student/gasBottle/gasList/gasListBinding.vue
  27. 351 0
      pages_student/gasBottle/gasList/gasListDetail.vue
  28. 242 0
      pages_student/gasBottle/gasList/gasUseDetail.vue
  29. 346 0
      pages_student/gasBottle/gasManage/gasManage.vue
  30. 211 0
      pages_student/gasBottle/leaveConfirm/amendAir.vue
  31. 357 0
      pages_student/gasBottle/leaveConfirm/leaveConfirm.vue
  32. 200 0
      pages_student/gasBottle/useGasApply/useGasApply.vue
  33. 612 0
      pages_student/gasBottle/useGasApply/useGasApplyAdd.vue
  34. 291 0
      pages_student/gasBottle/useGasApply/useGasApplyDetail.vue
  35. 171 0
      pages_student/gasBottle/useRecord/useRecord.vue
  36. 243 0
      pages_student/gasBottle/useRecord/useRecordDetail.vue
  37. 352 0
      pages_student/gasBottle/useRegister/giveRegister.vue
  38. 455 0
      pages_student/gasBottle/useRegister/useRegister.vue
  39. BIN
      pages_student/images/icon_qpgl_syl.png
  40. BIN
      pages_student/images/icon_sqqp_sqys.png
  41. BIN
      pages_student/images/icon_sqxq_jsyy.png
  42. BIN
      pages_student/images/icon_sydj_sqyqzg.png
  43. BIN
      pages_student/images/icon_sydj_yubz.png
  44. BIN
      pages_student/images/icon_xgzl_shz.png
  45. BIN
      pages_student/images/icon_yqsq_sys.png
  46. BIN
      pages_student/images/icon_ysclgl_cl.png
  47. BIN
      pages_student/images/icon_zgsh_sysmph.png
  48. BIN
      pages_student/images/icon_zgsq_dhh.png
  49. BIN
      pages_student/images/icon_zgsq_j.png
  50. BIN
      pages_student/images/icon_zgsq_jian.png
  51. BIN
      pages_student/images/icon_zgsq_sqr.png
  52. BIN
      pages_student/images/img_gysglpt_bg.png
  53. BIN
      pages_student/images/img_sydj_sltp.png
  54. BIN
      pages_student/images/img_ysrygl_zwsj.png
  55. 279 0
      pages_supplier/backlogManage/backlogManage.vue
  56. 284 0
      pages_supplier/backlogManage/backlogManageAirDetail.vue
  57. 239 0
      pages_supplier/backlogManage/backlogManageIssueDetail.vue
  58. 299 0
      pages_supplier/backlogManage/backlogManageRecycleDetail.vue
  59. 173 0
      pages_supplier/gasManage/gasManage.vue
  60. 321 0
      pages_supplier/gasManage/gasManageAdd.vue
  61. 255 0
      pages_supplier/gasManage/gasManageDetail.vue
  62. 330 0
      pages_supplier/gasRecycle/gasRecycle.vue
  63. 303 0
      pages_supplier/gasRecycle/gasRecycleAirDetail.vue
  64. 244 0
      pages_supplier/gasRecycle/gasRecycleIssueDetail.vue
  65. 312 0
      pages_supplier/gasRecycle/gasRecycleRecycleDetail.vue
  66. BIN
      pages_supplier/images/Version2.2/for_min_bg.png
  67. BIN
      pages_supplier/images/Version2.2/icon_wtzg_sj.png
  68. BIN
      pages_supplier/images/Version2.2/icon_wtzg_xx.png
  69. BIN
      pages_supplier/images/Version2.3/icon_pdf.png
  70. BIN
      pages_supplier/images/Version2.3/icon_sczl_sc.png
  71. BIN
      pages_supplier/images/Version2.3/icon_word.png
  72. BIN
      pages_supplier/images/Version2.3/img_zrsq_bg.png
  73. BIN
      pages_supplier/images/Version3.0/icon_gysqpgl_xzqp.png
  74. BIN
      pages_supplier/images/Version3.0/icon_qpgl_qp.png
  75. BIN
      pages_supplier/images/Version3.0/icon_ysry_ry.png
  76. BIN
      pages_supplier/images/Version3.0/icon_zc_sc.png
  77. BIN
      pages_supplier/images/Version3.0/icon_zc_scbg.png
  78. BIN
      pages_supplier/images/Version3.0/img_ysrygl_zwsj.png
  79. BIN
      pages_supplier/images/Version3.0/img_zc_zccg.png
  80. BIN
      pages_supplier/images/icon_04.png
  81. 208 0
      pages_supplier/mine/changePassword.vue
  82. 158 0
      pages_supplier/mine/mine.vue
  83. 113 0
      pages_supplier/register/forgotPassword.vue
  84. 317 0
      pages_supplier/register/register.vue
  85. 142 0
      pages_supplier/register/registerSuccess.vue
  86. 350 0
      pages_supplier/register/registerTow.vue
  87. 234 0
      pages_supplier/transportCar/transportCar.vue
  88. 475 0
      pages_supplier/transportCar/transportCarAdd.vue
  89. 257 0
      pages_supplier/transportCar/transportCarDetail.vue
  90. 234 0
      pages_supplier/transportPerson/transportPerson.vue
  91. 496 0
      pages_supplier/transportPerson/transportPersonAdd.vue
  92. 263 0
      pages_supplier/transportPerson/transportPersonDetail.vue
  93. 8 8
      utils/homeConfig.js

+ 18 - 1
api/basicsModules/index.js

@@ -13,7 +13,14 @@ export const login = (data) => {
 		data: { ...data }
 		data: { ...data }
 	})
 	})
 };
 };
-
+//退出登录
+export const logout  = (data) => {
+    return apiResquest({
+        url: `/auth/logout`,
+        method: 'GET',
+        data: data,
+    })
+};
 //查询公共配置
 //查询公共配置
 export const configInfo = (data) => {
 export const configInfo = (data) => {
 	return apiResquest({
 	return apiResquest({
@@ -23,6 +30,16 @@ export const configInfo = (data) => {
 	})
 	})
 };
 };
 
 
+//获取实验室列表
+export const systemAppletSubjectList = (data) => {
+	return apiResquest({
+		url: `/system/applet/subject/list`,
+		method: 'POST',
+		data: { ...data }
+	})
+};
+
+
 /*                分类获取公共配置
 /*                分类获取公共配置
 * category        1.系统参数 2.公共配置
 * category        1.系统参数 2.公共配置
 * configType      1.基础配置 2.管控一体机 3.化学品终端 4.小程序配置 5.开发配置 6.首页配置
 * configType      1.基础配置 2.管控一体机 3.化学品终端 4.小程序配置 5.开发配置 6.首页配置

+ 2 - 2
api/request/config.js

@@ -1,10 +1,10 @@
 const config = {
 const config = {
 	//base_url: 'http://192.168.1.8/api',//V3
 	//base_url: 'http://192.168.1.8/api',//V3
 	 //base_url: 'http://192.168.1.9:8080',//柴
 	 //base_url: 'http://192.168.1.9:8080',//柴
-	//base_url: 'http://192.168.1.24:8080',//林总
+	base_url: 'http://192.168.1.24:8080',//林总
 	// base_url: 'http://192.168.1.7:8080',//刘波
 	// base_url: 'http://192.168.1.7:8080',//刘波
 	// base_url: 'http://192.168.1.17:8080',//小飞
 	// base_url: 'http://192.168.1.17:8080',//小飞
-	 base_url: 'http://192.168.1.20:8080',//志伟
+	// base_url: 'http://192.168.1.20:8080',//志伟
     // base_url: 'http://192.168.1.8:8080',//高升
     // base_url: 'http://192.168.1.8:8080',//高升
 	// base_url: 'http://192.168.1.29:8080',//何成
 	// base_url: 'http://192.168.1.29:8080',//何成
     // base_url: 'http://192.168.1.43:9800',//43服务器
     // base_url: 'http://192.168.1.43:9800',//43服务器

+ 7 - 0
component/homeConfigurationSlot.vue

@@ -158,6 +158,13 @@
 							url: item.routeUrl,
 							url: item.routeUrl,
 						});
 						});
 					}
 					}
+					if (item.route === 'studentGasBottle') {//气瓶管理
+						uni.navigateTo({
+							url: item.routeUrl,
+						});
+					}
+					
+					
 					
 					
 					
 					
 				}else if (item.buttonType === 'button') {
 				}else if (item.buttonType === 'button') {

+ 1 - 3
component/mineConfigurationSlot.vue

@@ -120,9 +120,7 @@
 					
 					
 					
 					
 				} else if (item.buttonType === 'button') {
 				} else if (item.buttonType === 'button') {
-					if (item.route === 'fingerprint') {
-						this.fingerprintClick();
-					}
+					
 				} else if (item.buttonType === 'none') {
 				} else if (item.buttonType === 'none') {
 					uni.showToast({
 					uni.showToast({
 						title: '暂未开放',
 						title: '暂未开放',

+ 1 - 1
component/tabBar.vue

@@ -27,7 +27,7 @@
 </template>
 </template>
 
 
 <script>
 <script>
- import { infoTotalCount } from '@/api/basicsModules/index.js'
+ import { infoTotalCount } from '@/api/apiDemo/index.js'
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {

+ 328 - 7
pages.json

@@ -30,17 +30,29 @@
 				"navigationBarBackgroundColor": "#0183FA" ,//导航背景色
 				"navigationBarBackgroundColor": "#0183FA" ,//导航背景色
 				"navigationStyle": "custom"
 				"navigationStyle": "custom"
 			}
 			}
+		},
+		/*供应商*/
+		{
+			"path": "pages/supplier/forbidden",
+			"style": {
+				"navigationBarTitleText": "供应商管理平台"
+			}
+		},
+		{
+			"path": "pages/supplier/reject",
+			"style": {
+				"navigationBarTitleText": "驳回"
+			}
+		},
+		{
+			"path": "pages/supplier/hasten",
+			"style": {
+				"navigationBarTitleText": "立即催办"
+			}
 		}
 		}
 	],
 	],
 	"subPackages": [
 	"subPackages": [
-		{
-			/* 供应商端分包 */
-			"root": "pages_supplier",  //分包根路径
-			"name": "supplier", //分包名字可写可不写
-			"pages": [
 
 
-			]
-		},
 		{
 		{
 			/* 基础分包 */
 			/* 基础分包 */
 			"root": "pages_basics",  //分包根路径
 			"root": "pages_basics",  //分包根路径
@@ -107,6 +119,170 @@
 				}
 				}
 			]
 			]
 		},
 		},
+		{
+			/* 供应商端分包 */
+			"root": "pages_supplier",  //分包根路径
+			"name": "supplier", //分包名字可写可不写
+			"pages": [
+				/* 待办事项 */
+				{
+					"path": "backlogManage/backlogManage",
+					"style": {
+						"navigationBarTitleText": "待办清单"
+					}
+				},
+				{
+					"path": "backlogManage/backlogManageAirDetail",
+					"style": {
+						"navigationBarTitleText": "配送申请"
+					}
+				},
+				{
+					"path": "backlogManage/backlogManageRecycleDetail",
+					"style": {
+						"navigationBarTitleText": "回收申请"
+					}
+				},
+				{
+					"path": "backlogManage/backlogManageIssueDetail",
+					"style": {
+						"navigationBarTitleText": "货品问题"
+					}
+				},
+
+				/* 气瓶管理 */
+				{
+					"path": "gasManage/gasManageDetail",
+					"style": {
+						"navigationBarTitleText": "气瓶详情"
+					}
+				},
+				{
+					"path": "gasManage/gasManageAdd",
+					"style": {
+						"navigationBarTitleText": "新增气瓶"
+					}
+				},
+				{
+					"path": "gasManage/gasManage",
+					"style": {
+						"navigationBarTitleText": "气瓶管理"
+					}
+				},
+				/* 运输车辆 */
+				{
+					"path": "transportCar/transportCar",
+					"style": {
+						"navigationBarTitleText": "运输车辆管理"
+					}
+				},
+				{
+					"path": "transportCar/transportCarDetail",
+					"style": {
+						"navigationBarTitleText": "查看运输车辆"
+					}
+				},
+				{
+					"path": "transportCar/transportCarAdd",
+					"style": {
+						"navigationBarTitleText": "新增运输车辆"
+					}
+				},
+
+
+
+
+				/* 运输人员 */
+				{
+					"path": "transportPerson/transportPersonDetail",
+					"style": {
+						"navigationBarTitleText": "查看运输人员"
+					}
+				},
+				{
+					"path": "transportPerson/transportPersonAdd",
+					"style": {
+						"navigationBarTitleText": "新增运输人员"
+					}
+				},
+				{
+					"path": "transportPerson/transportPerson",
+					"style": {
+						"navigationBarTitleText": "运输人员管理"
+					}
+				},
+				/* 供气回收记录 */
+				{
+					"path": "gasRecycle/gasRecycleAirDetail",
+					"style": {
+						"navigationBarTitleText": "配送申请"
+					}
+				},
+				{
+					"path": "gasRecycle/gasRecycleRecycleDetail",
+					"style": {
+						"navigationBarTitleText": "回收申请"
+					}
+				},
+				{
+					"path": "gasRecycle/gasRecycleIssueDetail",
+					"style": {
+						"navigationBarTitleText": "货品问题"
+					}
+				},
+				{
+					"path": "gasRecycle/gasRecycle",
+					"style": {
+						"navigationBarTitleText": "供气回收记录"
+					}
+				},
+
+
+
+				/* 个人中心 */
+
+				{
+					"path": "mine/changePassword",
+					"style": {
+						"navigationBarTitleText": "修改密码"
+					}
+				},
+				{
+					"path": "mine/mine",
+					"style": {
+						"navigationBarTitleText": "资料信息"
+					}
+				},
+
+				/* 注册 */
+
+				{
+					"path": "register/forgotPassword",//忘记密码
+					"style": {
+						"navigationBarTitleText": "密码重置申请"
+					}
+				},
+				{
+					"path": "register/registerSuccess",//注册
+					"style": {
+						"navigationBarTitleText": "申请入驻"
+					}
+				},
+
+				{
+					"path": "register/register",//注册
+					"style": {
+						"navigationBarTitleText": "注册"
+					}
+				},
+				{
+					"path": "register/registerTow",//注册
+					"style": {
+						"navigationBarTitleText": "注册"
+					}
+				}
+			]
+		},
 		{
 		{
 			/* 学生端分包 */
 			/* 学生端分包 */
 			"root": "pages_student",  //分包根路径
 			"root": "pages_student",  //分包根路径
@@ -169,6 +345,151 @@
 					"style": {
 					"style": {
 						"navigationBarTitleText": "我的准入"
 						"navigationBarTitleText": "我的准入"
 					}
 					}
+				},
+				/* 气瓶管理 */
+				{
+					"path": "gasBottle/leaveConfirm/amendAir",
+					"style": {
+						"navigationBarTitleText": "修改气压"
+					}
+				},
+				{
+					"path": "gasBottle/leaveConfirm/leaveConfirm",
+					"style": {
+						"navigationBarTitleText": "出库确认"
+					}
+				},
+				{
+					"path": "gasBottle/useRegister/giveRegister",
+					"style": {
+						"navigationBarTitleText": "归还登记"
+					}
+				},
+				{
+					"path": "gasBottle/useRegister/useRegister",
+					"style": {
+						"navigationBarTitleText": "使用登记"
+					}
+				},
+				{
+					"path": "gasBottle/useRecord/useRecordDetail",
+					"style": {
+						"navigationBarTitleText": "使用详情"
+					}
+				},
+				{
+					"path": "gasBottle/useRecord/useRecord",
+					"style": {
+						"navigationBarTitleText": "使用记录"
+					}
+				},
+				{
+					"path": "gasBottle/gasList/gasListBinding",
+					"style": {
+						"navigationBarTitleText": "气瓶详情"
+					}
+				},
+				{
+					"path": "gasBottle/gasList/gasUseDetail",
+					"style": {
+						"navigationBarTitleText": "使用详情"
+					}
+				},
+				{
+					"path": "gasBottle/gasList/gasListDetail",
+					"style": {
+						"navigationBarTitleText": "气瓶详情"
+					}
+				},
+				{
+					"path": "gasBottle/gasList/gasList",
+					"style": {
+						"navigationBarTitleText": "气瓶列表"
+					}
+				},
+				{
+					"path": "gasBottle/gasApply/awaitStorage",
+					"style": {
+						"navigationBarTitleText": "待入库"
+					}
+				},
+				{
+					"path": "gasBottle/gasApply/gasApplyReject",
+					"style": {
+						"navigationBarTitleText": "拒收气瓶"
+					}
+				},
+				{
+					"path": "gasBottle/gasApply/gasApplyList",
+					"style": {
+						"navigationBarTitleText": "申请详情"
+					}
+				},
+				{
+					"path": "gasBottle/gasApply/gasApplyAdd",//添加
+					"style": {
+						"navigationBarTitleText": "申请气瓶"
+					}
+				},
+				{
+					"path": "gasBottle/gasApply/gasApply",
+					"style": {
+						"navigationBarTitleText": "气瓶申请"
+					}
+				},
+				{
+					"path": "gasBottle/examination/examinationSelect",//添加
+					"style": {
+						"navigationBarTitleText": "选择气瓶"
+					}
+				},
+				{
+					"path": "gasBottle/examination/examinationDetail",//详情
+					"style": {
+						"navigationBarTitleText": "资格申请"
+					}
+				},
+				{
+					"path": "gasBottle/examination/examinationAdd",//添加
+					"style": {
+						"navigationBarTitleText": "资格申请"
+					}
+				},
+				{
+					"path": "gasBottle/examination/examinationSucceed",
+					"style": {
+						"navigationBarTitleText": "资格申请"
+					}
+				},
+				{
+					"path": "gasBottle/examination/examination",
+					"style": {
+						"navigationBarTitleText": "资格申请"
+					}
+				},
+				{
+					"path": "gasBottle/gasManage/gasManage",
+					"style": {
+						"navigationBarTitleText": "用气管理"
+					}
+				},
+				{
+					"path": "gasBottle/useGasApply/useGasApply",
+					"style": {
+						"navigationBarTitleText": "用气申请"
+					}
+				},
+				{
+					"path": "gasBottle/useGasApply/useGasApplyAdd",
+					"style": {
+						"navigationBarTitleText": "申请用气"
+					}
+				},
+				{
+					"path": "gasBottle/useGasApply/useGasApplyDetail",
+					"style": {
+						"navigationBarTitleText": "申请详情"
+					}
 				}
 				}
 			]
 			]
 		},
 		},

+ 9 - 51
pages/home/manageWorkbench.vue

@@ -4,9 +4,9 @@
 	<nav-bar :title="title"></nav-bar>
 	<nav-bar :title="title"></nav-bar>
     <img class="top-big-img" :src="homepageBanner">
     <img class="top-big-img" :src="homepageBanner">
     <top-warn></top-warn>
     <top-warn></top-warn>
-	
+
 	<homeConfigurationSlot v-for="(item,index) in homeConfigData" :key="index" :homeConfig="item"></homeConfigurationSlot>
 	<homeConfigurationSlot v-for="(item,index) in homeConfigData" :key="index" :homeConfig="item"></homeConfigurationSlot>
-	
+
 	<view class="for-max-box-one" v-if="alarmList[0]">
 	<view class="for-max-box-one" v-if="alarmList[0]">
       <view class="for-box" v-for="(item,index) in alarmList" :key="index">
       <view class="for-box" v-for="(item,index) in alarmList" :key="index">
         <view class="title-box">
         <view class="title-box">
@@ -62,7 +62,7 @@
 	import $mqtt from '@/utils/mqtt.min.js';
 	import $mqtt from '@/utils/mqtt.min.js';
 	import { config } from '@/api/request/config.js'
 	import { config } from '@/api/request/config.js'
 	import { appReceivePhotoNote,getApprovalCount,subject_class,getSafeWarnList,
 	import { appReceivePhotoNote,getApprovalCount,subject_class,getSafeWarnList,
-			laboratoryInfo,laboratoryList,getLoginUserInfo,outSubjectPhoto,
+			laboratoryInfo,systemAppletSubjectList,getLoginUserInfo,outSubjectPhoto,
 			gradingControl,listData,getGentleIdentifier,systemAppletLayoutSelect} from '@/api/basicsModules/index.js'
 			gradingControl,listData,getGentleIdentifier,systemAppletLayoutSelect} from '@/api/basicsModules/index.js'
 	import { tabBar } from '@/component/tabBar.vue'
 	import { tabBar } from '@/component/tabBar.vue'
 	import { topWarn } from '@/component/topWarn.vue'
 	import { topWarn } from '@/component/topWarn.vue'
@@ -115,7 +115,7 @@ export default {
     this.appReceivePhotoNote();
     this.appReceivePhotoNote();
     this.getApprovalCount();
     this.getApprovalCount();
     this.subject_class();
     this.subject_class();
-    this.laboratoryList();
+    this.systemAppletSubjectList();
     this.getSafeWarnList();
     this.getSafeWarnList();
     this.getLoginUserInfo();
     this.getLoginUserInfo();
     this.getGrading();
     this.getGrading();
@@ -216,7 +216,7 @@ export default {
     },
     },
     //获取报警信息详情
     //获取报警信息详情
     async laboratoryInfo(item){
     async laboratoryInfo(item){
-		let self=this;
+	  let self=this;
       const {data} = await laboratoryInfo(item.subDiyVo.id);
       const {data} = await laboratoryInfo(item.subDiyVo.id);
       if(data.code == 200){
       if(data.code == 200){
         let obj = data.data[0];
         let obj = data.data[0];
@@ -286,55 +286,13 @@ export default {
       }
       }
     },
     },
     //获取实验室列表
     //获取实验室列表
-    async laboratoryList(){
+    async systemAppletSubjectList(){
       let self = this;
       let self = this;
-      let obj = {
-        deptId:this.facultyIndex?this.facultyList[this.facultyIndex].deptId:'',
-        subDept:this.subjectIndex?this.subjectList[this.subjectIndex].dictValue:'',
-        level:this.levelIndex?this.levelList[this.levelIndex].dictValue:'',
-      };
-      const {data} = await laboratoryList(obj);
+      const {data} = await systemAppletSubjectList();
       if(data.code == 200){
       if(data.code == 200){
-        for(let o=0;o<data.data.length;o++){
-          if(data.data[o].labHardwareVOList){
-            data.data[o].hardwareList = [];
-            for(let i=0;i<data.data[o].labHardwareVOList.length;i++){
-              if(data.data[o].labHardwareVOList[i].hardwareTypeEnum.code == 4 &&data.data[o].labHardwareVOList[i].hardwareNUM){
-                if(data.data[o].hardwareNUM){
-                  data.data[o].hardwareNUM = data.data[o].hardwareNUM + ',' + data.data[o].labHardwareVOList[i].hardwareNUM
-                }else{
-                  data.data[o].hardwareNUM = data.data[o].labHardwareVOList[i].hardwareNUM
-                }
-              }else{
-                let obj = {
-                  name:"",
-                  type:"",
-                };
-                obj.name = data.data[o].labHardwareVOList[i].hardwareTypeEnum.hardwareTypeName
-                obj.type = data.data[o].labHardwareVOList[i].state.code;
-                obj.id = data.data[o].labHardwareVOList[i].id;
-                data.data[o].hardwareList.push(obj);
-              }
-            }
-          }
-        }
-        this.dataList = data.data;
+        this.dataList = data.data.records;
+		console.log()
 		let list = [];
 		let list = [];
-		let obj = {
-			type:"lab/function/data",
-			idList:[],
-		}
-		for(let i=0;i<self.dataList.length;i++){
-			let num = 0;
-			for(let o=0;o<obj.idList.length;o++){
-				if(obj.idList[o] == self.dataList[i].id){
-					num++
-				}
-			}
-			if(num == 0){
-				obj.idList.push(self.dataList[i].id)
-			}
-		}
 		list.push({type:"lab/riskPlan/trigger/notice",});
 		list.push({type:"lab/riskPlan/trigger/notice",});
 		getApp().appMqttOn(1,list);
 		getApp().appMqttOn(1,list);
       }
       }

+ 12 - 12
pages/home/supplierWorkbench.vue

@@ -3,9 +3,9 @@
   <view class="supplier" style="display: flex;flex-direction: column;flex: 1;">
   <view class="supplier" style="display: flex;flex-direction: column;flex: 1;">
     <view v-if="pageType==0">
     <view v-if="pageType==0">
       <view class="supplier_h" @click="handleClick('mine')">
       <view class="supplier_h" @click="handleClick('mine')">
-        <img src="@/images/Version3.0/img_gysglpt_bg.png">
-        <img src="@/images/Version3.0/img_gysglpt_icom.png">
-        <img src="@/images/Version3.0/icon_gyspt_gd.png">
+        <img src="@/images/basicsModules/img_gysglpt_bg.png">
+        <img src="@/images/basicsModules/img_gysglpt_icom.png">
+        <img src="@/images/basicsModules/icon_04.png">
         <view>{{form.companyName}}</view>
         <view>{{form.companyName}}</view>
       </view>
       </view>
       <view class="supplier_tab">
       <view class="supplier_tab">
@@ -27,9 +27,9 @@
       <scroll-view scroll-y @scrolltolower="scrollGet" class="for-max-box">
       <scroll-view scroll-y @scrolltolower="scrollGet" class="for-max-box">
         <view class="for-big-box">
         <view class="for-big-box">
           <view class="backlog" @click="handleClick('backlog')">
           <view class="backlog" @click="handleClick('backlog')">
-            <img class="backlog_l" src="@/images/Version3.0/icon_glpt_dbqd.png">
+            <img class="backlog_l" src="@/images/basicsModules/icon_glpt_dbqd.png">
             <view class="backlog_c">待办清单</view>
             <view class="backlog_c">待办清单</view>
-            <img class="backlog_r"  src="@/images/icon_wdwg_gd.png">
+            <img class="backlog_r"  src="@/images/basicsModules/icon_wdwg_gd.png">
           </view>
           </view>
           <view class="for-box" @click="goInfo(item)" v-for="(item,index) in dataList" :key="index">
           <view class="for-box" @click="goInfo(item)" v-for="(item,index) in dataList" :key="index">
             <view class="for-title-box">
             <view class="for-title-box">
@@ -40,21 +40,21 @@
               <view  v-if="item.remark=='gq'" ><text v-for="(item2,index2) in item.detailListVO" :key="index2" v-if="index2<2">{{item2.airName}}-{{item2.configName}}*{{item2.bottleNumber}}<text>{{index2<1?' ':'...'}}</text></text></view>
               <view  v-if="item.remark=='gq'" ><text v-for="(item2,index2) in item.detailListVO" :key="index2" v-if="index2<2">{{item2.airName}}-{{item2.configName}}*{{item2.bottleNumber}}<text>{{index2<1?' ':'...'}}</text></text></view>
             </view>
             </view>
             <view class="for-address-box">
             <view class="for-address-box">
-              <img src="@/images/Version2.2/icon_wtzg_xx.png">
+              <img src="@/images/basicsModules/icon_wtzg_xx.png">
               <view >{{item.campus}}-{{item.building}}-{{item.room}}</view>
               <view >{{item.campus}}-{{item.building}}-{{item.room}}</view>
             </view>
             </view>
             <view class="for-time-box">
             <view class="for-time-box">
-              <img src="@/images/Version2.2/icon_wtzg_sj.png">
+              <img src="@/images/basicsModules/icon_wtzg_sj.png">
               <view>{{item.createTime}}</view>
               <view>{{item.createTime}}</view>
             </view>
             </view>
           </view>
           </view>
         </view>
         </view>
         <img class="null-img" v-if="!dataList[0]" src="@/images/basicsModules/null-data-1.png">
         <img class="null-img" v-if="!dataList[0]" src="@/images/basicsModules/null-data-1.png">
       </scroll-view>
       </scroll-view>
-      <img class="supernatant"  @click="handleClick('recycle')"  src="@/images/Version3.0/icon_glpt_gqhsjl.png">
+      <img class="supernatant"  @click="handleClick('recycle')"  src="@/images/basicsModules/icon_glpt_gqhsjl.png">
     </view>
     </view>
     <view class="empty" v-if="emptyList==4 && pageType==0">
     <view class="empty" v-if="emptyList==4 && pageType==0">
-      <img class="for-back-img" src="@/images/Version3.0/img_ysrygl_zwsj.png">
+      <img class="for-back-img" src="@/images/basicsModules/img_ysrygl_zwsj.png">
       <view>暂无数据</view>
       <view>暂无数据</view>
     </view>
     </view>
     <hasten-page v-if="pageType==1"></hasten-page>
     <hasten-page v-if="pageType==1"></hasten-page>
@@ -67,9 +67,9 @@
 <script>
 <script>
 import { config } from '@/api/request/config.js'
 import { config } from '@/api/request/config.js'
 import { supplierDetail,storageListTaskIndex} from '@/api/basicsModules/index.js'
 import { supplierDetail,storageListTaskIndex} from '@/api/basicsModules/index.js'
-import { hastenPage } from '@/pages/supplier/mine/hasten.vue'
-import { rejectPage } from '@/pages/supplier/mine/reject.vue'
-import { forbiddenPage } from '@/pages/supplier/mine/forbidden.vue'
+import { hastenPage } from '@/pages/supplier/hasten.vue'
+import { rejectPage } from '@/pages/supplier/reject.vue'
+import { forbiddenPage } from '@/pages/supplier/forbidden.vue'
 export default {
 export default {
   name: "rectifyList",
   name: "rectifyList",
   components: {
   components: {

+ 5 - 47
pages/login/login.vue

@@ -38,7 +38,7 @@
 <script>
 <script>
 import md5 from '@/utils/md5.js'
 import md5 from '@/utils/md5.js'
 import { config } from '@/api/request/config.js'
 import { config } from '@/api/request/config.js'
-import { login,configInfo,getConfigByType,getGentleIdentifier,systemAppletRolePermission} from '@/api/basicsModules/index.js'
+import { login,configInfo,getConfigByType,systemAppletRolePermission} from '@/api/basicsModules/index.js'
 import { Encrypt,Decrypt} from '@/utils/secret.js'
 import { Encrypt,Decrypt} from '@/utils/secret.js'
 export default {
 export default {
   data() {
   data() {
@@ -46,8 +46,8 @@ export default {
       identityStatus:1,
       identityStatus:1,
       // username:"superadmin",
       // username:"superadmin",
       // password:"zd123456",
       // password:"zd123456",
-      username:"heyang",
-      password:"123456",
+      username:"789654",
+      password:"zd123456",
       checkedType:false,
       checkedType:false,
       loginBanner:uni.getStorageSync('loginBanner'),
       loginBanner:uni.getStorageSync('loginBanner'),
       infoList:[],//模板消息Id
       infoList:[],//模板消息Id
@@ -91,7 +91,8 @@ export default {
 	    uni.setStorageSync('token',data.data.token);
 	    uni.setStorageSync('token',data.data.token);
 	    uni.setStorageSync('userId',data.data.userId);
 	    uni.setStorageSync('userId',data.data.userId);
 		// userType 0-系统 1-教职工 2-学生 3-大屏
 		// userType 0-系统 1-教职工 2-学生 3-大屏
-	    //uni.setStorageSync('userType',data.data.userType==0||data.data.userType==1?'1':
+		uni.setStorageSync('userType',data.data.userType==0||data.data.userType==1?'1':
+		(data.data.userType==2?'2':(data.data.userType==3?'3':'none')));
 	    uni.setStorageSync('userType','1');
 	    uni.setStorageSync('userType','1');
 	    if(this.checkedType){
 	    if(this.checkedType){
 	      uni.setStorageSync('userName',this.username)
 	      uni.setStorageSync('userName',this.username)
@@ -117,11 +118,6 @@ export default {
 				duration: 3000
 				duration: 3000
 			});
 			});
 		})
 		})
-		
-		
-		
-	    //获取身份标识
-	    // this.getGentleIdentifier();
 	  }
 	  }
 	},
 	},
 	//获取权限字段
 	//获取权限字段
@@ -132,44 +128,6 @@ export default {
 			uni.setStorageSync('permissions',data.data.data)
 			uni.setStorageSync('permissions',data.data.data)
 		}
 		}
 	},
 	},
-    //获取用户身份标识"adminGentle": false,   
-	//管理员身份 "rectifyGentle": false,   
-	//整改身份"applyGentle": false    检查者身份
-    async getGentleIdentifier(){
-      let self = this;
-      const {data} = await getGentleIdentifier();
-      if(data.code==200){
-        uni.setStorageSync('gentleIdentifierData',data.data)
-        let list=[];
-        if(data.data.adminGentle || data.data.collegeGentle){//校级管理员
-          list.push({name:'管理员',pageType:1})
-        }
-        if(data.data.applyGentle ||data.data.myApplyGentle){
-          list.push({name:'检查者',pageType:2})
-        }
-        if(data.data.rectifyGentle){
-          list.push({name:'整改者',pageType:3})
-        }
-        if(!data.data.adminGentle && !data.data.applyGentle && !data.data.myApplyGentle  && !data.data.applyGentle && !data.data.collegeGentle){
-          self.pageType='mine'
-          list.push({name:'暂无权限',pageType:'mine'})
-        }
-        uni.setStorageSync('gentleIdentifier',list)
-        if(uni.getStorageSync('saoCode')){
-          uni.redirectTo({
-            url: '/pages/saoCode/saoCode'
-          });
-        }else if(self.pageType=='mine'){
-          uni.redirectTo({
-            url: '/pages/mine/mine',
-          });
-        }else{
-          uni.redirectTo({
-            url: '/pages/home/home',
-          });
-        }
-      }
-    },
     switchClick(){
     switchClick(){
       if(this.identityStatus==1){
       if(this.identityStatus==1){
         this.identityStatus=2;
         this.identityStatus=2;

+ 2 - 2
pages/mine/mine.vue

@@ -162,7 +162,7 @@ export default {
           onlyFromCamera: true,
           onlyFromCamera: true,
           success: function (res) {
           success: function (res) {
             uni.navigateTo({
             uni.navigateTo({
-              url: '/pages_student/mine/codeSuccess?q='+encodeURIComponent(JSON.stringify(res.result))
+              url: '/pages_student/integralManage/codeSuccess?q='+encodeURIComponent(JSON.stringify(res.result))
             });
             });
           }
           }
         });
         });
@@ -288,7 +288,7 @@ export default {
         uni.removeStorageSync('userId');
         uni.removeStorageSync('userId');
         uni.removeStorageSync('userType');
         uni.removeStorageSync('userType');
         uni.redirectTo({
         uni.redirectTo({
-          url: '/pages/login',
+          url: '/pages/login/login',
         });
         });
       }
       }
     },
     },

+ 88 - 0
pages/supplier/forbidden.vue

@@ -0,0 +1,88 @@
+<!-- 停用 -->
+<template>
+    <view class="register">
+		<view class="register_li">
+			<img  class="register_li_t" src="@/images/basicsModules/img_xgzl_zgty.png">
+			<view class="register_li_m">
+				<text>您的供应商资格已被停用,详情请联系管理人员; </text>
+				<text>联系电话:13227872231</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					name:'',
+				},
+            }
+        },
+        onLoad(option) {
+
+        },
+        onShow(){
+
+
+
+        },
+
+        methods: {
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    .register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		//padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_t{
+				width:204rpx;
+				height:200rpx;
+				margin: 125rpx 0 0 258rpx;
+			}
+			.register_li_m{
+				margin-top: 92rpx;
+				margin-bottom: 60rpx;
+				text-align: left;
+				padding: 0 50rpx;
+				box-sizing: border-box;
+				>text{
+					display: block;
+				}
+				>text:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 28rpx;
+					margin-bottom: 24rpx;
+				}
+				>text:nth-child(2){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 28rpx;
+				}
+			}
+
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 96 - 0
pages/supplier/hasten.vue

@@ -0,0 +1,96 @@
+<!-- 催办 -->
+<template>
+    <view class="register">
+		<view class="register_li">
+			<img  class="register_li_t" src="@/images/basicsModules/icon_xgzl_shz.png">
+			<view class="register_li_m">您提交的信息正在审核中,请耐心等待</view>
+		</view>
+		<view class="sub_btn" @click="hasten()">立即催办</view>
+	</view>
+</template>
+
+<script>
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					name:'',
+				},
+            }
+        },
+        onLoad(option) {
+
+        },
+        onShow(){
+
+
+
+        },
+
+        methods: {
+			hasten(){
+				uni.showToast({
+					title: '催办成功!',
+					icon:"none",
+					mask:true,
+					duration: 2000
+				});
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    .register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		//padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_t{
+				width:156rpx;
+				height:200rpx;
+				margin: 128rpx 0 0 276rpx;
+			}
+			.register_li_m{
+				margin-top: 80rpx;
+				margin-bottom: 116rpx;
+				text-align: center;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 28rpx;
+
+			}
+
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #FFAE00;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 117 - 0
pages/supplier/reject.vue

@@ -0,0 +1,117 @@
+<!-- 驳回 -->
+<template>
+    <view class="register">
+		<view class="register_li">
+			<img  class="register_li_t" src="@/images/basicsModules/img_xgzl_zgty.png">
+			<view class="register_li_m">
+				<text>您提交申请被驳回</text>
+				<text>驳回原因为:{{infoData}}</text>
+			</view>
+		</view>
+		<view class="sub_btn" @click="againSubmit()">重新申请</view>
+	</view>
+
+</template>
+
+<script>
+	import { config } from '@/api/request/config.js'
+    export default {
+		props:{
+			infoData:{}
+		},
+        data() {
+            return {
+				form:{
+					name:'',
+				},
+            }
+        },
+        onLoad(option) {
+
+        },
+        onShow(){
+
+        },
+        methods:{
+			//重新提交
+			againSubmit(){
+				uni.redirectTo({
+				   url: '/pages_supplier/register/register?pageStatus=1',
+				});
+			},
+        },
+		mounted(){
+
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    .register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		//padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_t{
+				width:204rpx;
+				height:200rpx;
+				margin: 125rpx 0 0 258rpx;
+			}
+			.register_li_m{
+				margin-bottom: 60rpx;
+				text-align: left;
+				padding: 0 50rpx;
+				box-sizing: border-box;
+				>text{
+					display: block;
+				}
+				>text:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 28rpx;
+					margin-bottom: 24rpx;
+					text-align: center;
+					margin-top: 42rpx;
+				}
+				>text:nth-child(2){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 48rpx;
+					margin-top: 48rpx;
+				}
+			}
+
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 7 - 6
pages_manage/laboratory/meLaboratory.vue

@@ -57,6 +57,7 @@
     import $mqtt from '@/utils/mqtt.min.js';
     import $mqtt from '@/utils/mqtt.min.js';
     import { config } from '@/api/request/config.js'
     import { config } from '@/api/request/config.js'
     import { laboratoryList,subject_class,listDepartments,mangerControl,laboratoryInfo } from '@/api/apiDemo/index.js'
     import { laboratoryList,subject_class,listDepartments,mangerControl,laboratoryInfo } from '@/api/apiDemo/index.js'
+    import { systemAppletSubjectList } from '@/api/basicsModules/index.js'
     export default {
     export default {
         data() {
         data() {
             return {
             return {
@@ -127,19 +128,19 @@
             facultyChange: function(e) {
             facultyChange: function(e) {
                 if(this.facultyArray[0]){
                 if(this.facultyArray[0]){
                     this.facultyIndex = parseInt(e.target.value);
                     this.facultyIndex = parseInt(e.target.value);
-                    this.laboratoryList();
+                    this.systemAppletSubjectList();
                 }
                 }
             },
             },
             subjectChange: function(e) {
             subjectChange: function(e) {
                 if(this.subjectArray[0]){
                 if(this.subjectArray[0]){
                     this.subjectIndex = parseInt(e.target.value);
                     this.subjectIndex = parseInt(e.target.value);
-                    this.laboratoryList();
+                    this.systemAppletSubjectList();
                 }
                 }
             },
             },
             levelChange: function(e) {
             levelChange: function(e) {
                 if(this.levelArray[0]){
                 if(this.levelArray[0]){
                     this.levelIndex = parseInt(e.target.value);
                     this.levelIndex = parseInt(e.target.value);
-                    this.laboratoryList();
+                    this.systemAppletSubjectList();
                 }
                 }
             },
             },
             //设备开关按钮
             //设备开关按钮
@@ -213,18 +214,18 @@
                     list.unshift('全部分类');
                     list.unshift('全部分类');
                     this.subjectList = data.data;
                     this.subjectList = data.data;
                     this.subjectList.unshift({dictLabel:"全部分类", dictValue:""})
                     this.subjectList.unshift({dictLabel:"全部分类", dictValue:""})
-                    this.laboratoryList()
+                    this.systemAppletSubjectList()
                 }
                 }
             },
             },
             //获取实验室列表
             //获取实验室列表
-            async laboratoryList(){
+            async systemAppletSubjectList(){
                 let self = this;
                 let self = this;
                 let obj = {
                 let obj = {
                     deptId:this.facultyIndex?this.facultyList[this.facultyIndex].deptId:'',
                     deptId:this.facultyIndex?this.facultyList[this.facultyIndex].deptId:'',
                     subDept:this.subjectIndex?this.subjectList[this.subjectIndex].dictValue:'',
                     subDept:this.subjectIndex?this.subjectList[this.subjectIndex].dictValue:'',
                     level:this.levelIndex?this.levelList[this.levelIndex].dictValue:'',
                     level:this.levelIndex?this.levelList[this.levelIndex].dictValue:'',
                 };
                 };
-                const {data} = await laboratoryList(obj);
+                const {data} = await systemAppletSubjectList(obj);
                 if(data.code == 200){
                 if(data.code == 200){
                     for(let o=0;o<data.data.length;o++){
                     for(let o=0;o<data.data.length;o++){
                         if(data.data[o].labHardwareVOList){
                         if(data.data[o].labHardwareVOList){

+ 200 - 0
pages_student/gasBottle/examination/examination.vue

@@ -0,0 +1,200 @@
+<!--资格申请-->
+<template>
+    <view id="transportPerson">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="list">
+				<view class="list_li" v-for="(item,index) in  dataList" @click="goInfo(item)">
+					<img class="for-back-img" src="@/pages_student/images/icon_yqsq_sys.png">
+					<text class="list_li_text">{{item.room}}</text>
+					<text  :class="item.remark=='1'?'list_li_text2':(item.remark=='0'?'colorA':(item.remark=='2'?'colorB':''))">{{item.remark=='1'?'有效期:'+item.startTime+'至'+item.endTime+'':(item.remark=='0'?'审核中':(item.remark=='2'?'审核驳回':''))}}</text>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==4">
+			<img class="for-back-img" src="@/pages_student/images/img_ysrygl_zwsj.png">
+			<view>暂无数据</view>
+		</view>
+		<view class="sub_btn" @click="subBtn()">申请资格</view>
+	</view>
+</template>
+
+<script>
+	import { qualificationList } from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "transportPerson",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+				},
+                dataList:[],
+				status:0,
+            }
+        },
+        onLoad() {
+
+        },
+        onShow() {
+			//今天页面返回,清除存储气瓶信息
+			uni.removeStorageSync('listDetail');
+        },
+
+        methods: {
+			subBtn(){
+				uni.redirectTo({
+				    url:'/pages_student/examination/examinationAdd?status=0'
+				});
+			},
+			goInfo(d){
+				uni.redirectTo({
+				    url:'/pages_student/examination/examinationDetail?item='+encodeURIComponent(JSON.stringify(d))
+				});
+			},
+			//滚动加载事件
+			scrollGet(){
+			    this.getData.pageNum += 1;
+			    this.getList();
+			},
+			//查询实验室
+			async getList(){
+				const {data} = await qualificationList(this.getData)
+				if(data.code == 200){
+					let _this=this;
+					let res=data.rows
+					if(_this.getData.pageNum==1){
+						_this.dataList=res;
+						if(res.length>0){
+							_this.pageType=0;
+						}else{
+							_this.pageType=4;
+						}
+					}else{
+						_this.dataList=_this.dataList.concat(res);
+					}
+
+				}
+			},
+
+        },
+		mounted(){
+			this.getList();
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #transportPerson {
+        height: auto;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		padding-bottom: 220rpx;
+        .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 .list{
+			 background: #FFFFFF;
+			 border-radius: 20rpx;
+			 margin: 20rpx 20rpx 0;
+			 padding: 0 20rpx;
+			 box-sizing: border-box;
+			 .list_li{
+				 height: 110rpx;
+				 display: flex;
+				 align-items: center;
+				 border-bottom:1px solid #f5f5f5;
+				 >img{
+					 width: 60rpx;
+					 height: 60rpx;
+				 }
+				 >text{
+					 font-size: 28rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #333333;
+					 line-height: 28rpx;
+					 display: inline-block;
+
+				 }
+				 .list_li_text{
+					 margin-left: 30rpx;
+					 width: 150rpx;
+					 font-size: 28rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #333333;
+					 line-height: 28rpx;
+				 }
+				 .list_li_text2{
+					 flex: 1;
+					 text-align: right;
+					 font-size: 24rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #999999;
+					 line-height: 24rpx;
+				 }
+				 .colorA{
+					 flex: 1;
+					 text-align: right;
+					 font-size: 24rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #FF8A00;
+					 line-height: 24rpx;
+				 }
+				 .colorB{
+					 flex: 1;
+					 text-align: right;
+					 font-size: 24rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #FF6F6F;
+					 line-height: 24rpx;
+				 }
+
+			 }
+		 }
+     }
+		.empty{
+			text-align: center;
+			margin-top: 316rpx;
+			>img{
+				width: 336rpx;
+				height: 222rpx;
+				margin-left: 208rpx;
+			}
+			>view{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #E0E0E0;
+				line-height: 30rpx;
+				margin-top: 48rpx;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+		}
+	}
+</style>

+ 743 - 0
pages_student/gasBottle/examination/examinationAdd.vue

@@ -0,0 +1,743 @@
+<!-- 资质申请/填写资料-->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_sqr.png">
+				<view>申请人:</view>
+				<input v-model="form.applyUser" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_dhh.png">
+				<view>联系方式:</view>
+				<input v-model="form.phone"   type="text" >
+			</view style="border: none;">
+		</view>
+		<view class="add_gas">
+			<view class="add_gas_list">
+				<view class="add_gas_list_li" v-for="(item,index) in listDetailArr">
+					<text>{{item.airName}}-{{item.configName}}</text>
+					<text>X{{item.bottleNumber}}</text>
+					<view @click="deleteGas(item)"  class="icon_img"><img src="@/images/basicsModules/icon_sczl_sc.png"></view>
+					<text></text>
+					<text @click="addGas()">重新选择</text>
+				</view>
+			</view>
+			<view class="add_gas_btn" @click="addGas()">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_j.png">
+				添加气瓶
+			</view>
+		</view>
+		<view class="register_li2">
+			<picker @change="bindPickerChange" :value="pickerIndex" :range="pickerArray">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>实验地点:</view>
+					<input v-model="form.location" disabled type="text" placeholder="请选择实验地点" placeholder-style="color:#999;">
+				</view>
+			</picker>
+			<!-- 使用期限 -->
+			<view class="register_li_min2">
+				<view><text  style="color: #f00;margin-right: 10rpx;">*</text>使用期限:</view>
+				<picker mode="date" @change="startChange($event)">
+					<input class="picker-text" v-model="form.startTime" disabled  type="text"  placeholder="开始时间" placeholder-style="color:#999;">
+				</picker>
+				<view>-</view>
+				<picker mode="date" @change="endChange($event)">
+					<input class="picker-text2" v-model="form.endTime" disabled  type="text"  placeholder="结束时间" placeholder-style="color:#999;">
+				</picker>
+			</view>
+			<view class="register_li_min">
+			    <view>*</view>
+				<view>气体用途:</view>
+				<input v-model="form.gasUse"   type="text"  placeholder="请输入气体用途" placeholder-style="color:#999;">
+			</view>
+			<view class="register_li_min">
+			    <view>*</view>
+				<view>安全措施:</view>
+				<input v-model="form.safetyPrecautions"   type="text"  placeholder="请输入主要安全管理措施" placeholder-style="color:#999;">
+			</view>
+			<view  class="issue_li" style="border-bottom:0;">
+				<view>*</view>
+				<view>用气申请表:</view>
+				<view @click="selectImage">
+					<img :src="baseUrl+form.applyCertificate">
+					<text>+上传图片</text>
+				</view>
+			</view>
+		</view>
+
+		<view v-if="listType==0" class="sub_btn" @click="submitVerify()">提交</view>
+		<view v-if="listType==2" class="sub_btn">重新申请</view>
+	</view>
+</template>
+
+<script>
+    import {labList,getLoginUser,qualificationApplyManageAdd,qualificationDetail,qualificationApplyAmend,qualificationVerify,gasApplyVerify} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				listType:0,
+				form:{
+					applyUser:'',//申请人
+					applyUserid:'',//申请人id
+					phone:'',//	联系方式
+					location:'',//实验地点
+					subjectId:'',//实验地点Id
+					startTime:'',//期限开始
+					endTime:'',//期限结束
+					gasUse:'',//气体用途
+					safetyPrecautions:'',//安全措施
+					applyCertificate:'',//用气申请表
+					listDetail:[],
+				},
+				listDetailArr:[],
+				checkStatus:0,
+				pickerArray:[],
+				pickerArrayList:[],
+				status:null,//0添加1编辑
+				id:null,
+				amount:0,
+            }
+        },
+        onLoad(option) {
+			this.status=option.status;
+			this.id=option.id;
+			if(option.form){
+				this.form=JSON.parse(decodeURIComponent(option.form));
+			}
+			//气瓶数据
+			if(uni.getStorageSync('listDetail')){
+				this.listDetailArr=JSON.parse(decodeURIComponent(uni.getStorageSync('listDetail')));
+			}
+        },
+        onShow(){
+
+        },
+        methods: {
+			//添加气瓶按钮
+			addGas(){
+				uni.redirectTo({
+				    url:'/pages_student/examination/examinationSelect?status='+this.status+'&id='+this.id+'&form='+encodeURIComponent(JSON.stringify(this.form))
+				});
+			},
+			//删除气瓶
+			deleteGas(d){
+				let _this=this;
+				_this.listDetailArr.forEach(function(item){
+					if(d.id==item.id){
+						_this.listDetailArr.splice(item,1);
+						uni.setStorageSync('listDetail',encodeURIComponent(JSON.stringify(_this.listDetailArr)))
+					}
+				})
+			},
+			//查询实验室
+			async labList(){
+				const {data} = await labList()
+				if(data.code == 200){
+					let _this=this;
+					let res=data.data
+					_this.pickerArrayList=res;
+					res.forEach(function(item){
+						_this.pickerArray.push(item.name);
+					})
+
+				}
+			},
+			//查询用户信息
+			async getLoginUser(){
+				const {data} = await getLoginUser()
+				if(data.code == 200){
+					let _this=this;
+					let res=data.data;
+					_this.form.applyUser=res.nickName;
+					_this.form.applyUserid=res.id;
+					_this.form.phone=res.phonenumber;
+				}
+			},
+			//选择实验室
+			async bindPickerChange(e){
+				let _this=this;
+				let index=e.target.value
+				//获取实验室名称
+				_this.form.location=_this.pickerArray[index]
+				//循环获取实验室id
+				_this.pickerArrayList.forEach(function(item){
+					if(_this.pickerArray[index]==item.name){
+						_this.form.subjectId=item.id;
+					}
+				})
+				//校验当前用户有乜有当前实验室使用 权限
+				const {data} = await qualificationVerify({subjectId:_this.form.subjectId})
+				if(data.code==200){
+					let res=data.data
+					if(res.count>0){//有资格
+
+					}else{//没资格
+						uni.showToast({
+							title:'在申请资格前需要先申请对应实验地点的安全准人资格!',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						_this.form.location='';
+						_this.form.subjectId='';
+					}
+				}
+
+			},
+			//时间选中
+			startChange(e){
+				if(new Date(e.target.value).getTime()>=new Date(this.form.endTime).getTime()){
+					 uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}else{
+					this.form.startTime = e.target.value
+				}
+			},
+			endChange(e){
+				if(new Date(this.form.startTime).getTime()>=new Date(e.target.value).getTime()){
+					 uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}else{
+					this.form.endTime = e.target.value
+				}
+			},
+
+
+
+
+			// 图片上传
+			selectImage() {
+
+			    let self = this;
+			    wx.chooseImage({
+			        count: 1,
+			        sizeType: ["original", "compressed"],
+			        sourceType: ["album", "camera"],
+			        success: function(res) {
+			            let tempFilePaths = res.tempFilePaths[0];
+			            self.uploadImg(tempFilePaths);
+			        }
+			    });
+			},
+			async uploadImg(tempFilePaths){
+			    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.form.applyCertificate=res.data.url
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+			        },
+			        fail: err => {},
+			        complete: () => {
+			            uni.hideLoading()
+			        }
+			    });
+			},
+			//删除图片
+			delImg(index){
+			    this.newData.imgList.splice(index,1);
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await qualificationDetail({id:this.id})
+			    if(data.code==200){
+					let res=data.data
+					_this.form=res.apply;
+					//编辑的时候判断气瓶状态,是选择首次进入列表数据还是修改后的数据
+					if(uni.getStorageSync('listDetail')){
+
+					}else{
+						_this.listDetailArr=res.airBottlelist
+						uni.setStorageSync('listDetail',encodeURIComponent(JSON.stringify(_this.listDetailArr)))
+					}
+				}
+			},
+			//校验气瓶数量
+			async submitVerify(){
+				let _this=this;
+				if(_this.form.location==''){
+					uni.showToast({
+					    title: '请先选择实验室!',
+					    icon:"none",
+					    mask:true,
+					    duration: 2000
+					});
+					return;
+				}
+				_this.amount=0;
+				this.listDetailArr.forEach(function(item){
+					_this.amount+=item.bottleNumber;
+				})
+				const {data} = await gasApplyVerify({subjectId:_this.form.subjectId});
+				if(data.code == 200){
+					let res=data.data
+					if(!res.flgSubject){
+						uni.showToast({
+							title: '请先配置实验室气瓶总量数',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						return
+					}
+					if(!res.flgUser){
+						uni.showToast({
+							title: '请先配置实验室个人气瓶总量数',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						return
+					}
+					if(_this.amount>res.subjectNum){
+						uni.showToast({
+							title: '当前申请气瓶个数大于当前实验室气瓶存量!',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						return
+					}
+					if(_this.amount>res.userNum){
+						uni.showToast({
+							title: '当前申请气瓶个数大于个人气瓶存量!',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						return
+					}
+					_this.submitForm();
+				}else{
+					return
+				}
+			},
+			//提交
+			async submitForm(){
+				let _this = this;
+				if(!this.form.location){
+					uni.showToast({
+						title: '请选择实验地点',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.startTime || !this.form.endTime){
+					uni.showToast({
+						title: '请选择使用期限',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.gasUse){
+					uni.showToast({
+						title: '请输入气体有用途',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.safetyPrecautions){
+					uni.showToast({
+						title: '请输入安全措施',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.applyCertificate){
+					uni.showToast({
+						title: '请上传用气申请表',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(_this.listDetailArr.length<=0){
+					uni.showToast({
+						title: '请选择气瓶',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				// _this.listDetailArr.forEach(function(item){
+				// 	item.gasLevel=item.parent
+				// 	item.gasNorms=item.specValue
+				// })
+				_this.form.listDetailVo=_this.listDetailArr
+				if(_this.status==0){//添加
+					const {data} = await qualificationApplyManageAdd(_this.form);
+					if(data.code == 200){
+					    uni.showToast({
+					        title: '提交成功',
+					        icon:"none",
+					        mask:true,
+					        duration: 2000
+					    });
+						uni.removeStorageSync('listDetail');
+					    setTimeout(function(){
+					       uni.redirectTo({
+					            url: '/pages_student/examination/examination'
+					        });
+					    },2000);
+					}
+				}else if(_this.status==1){//编辑
+					const {data} = await qualificationApplyAmend(_this.form);
+					if(data.code == 200){
+					    uni.showToast({
+					        title: '提交成功',
+					        icon:"none",
+					        mask:true,
+					        duration: 2000
+					    });
+						uni.removeStorageSync('listDetail');
+					    setTimeout(function(){
+					       uni.redirectTo({
+					            url: '/pages_student/examination/examination'
+					        });
+					    },2000);
+					}
+				}
+
+			},
+
+        },
+		mounted(){
+		   this.labList()
+		   this.getLoginUser()
+		   if(this.status==1){
+		   	this.getInfo();
+		   }
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		/* 添加气瓶按钮 */
+		.add_gas{
+			width: 710rpx;
+			background: #FFFFFF;
+			border-radius: 20rpx;
+			margin: 20rpx;
+			padding: 0 20rpx;
+			box-sizing: border-box;
+			.add_gas_list{
+				.add_gas_list_li{
+					height: 100rpx;
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					border-bottom: 1px dotted #f5f5f5;
+					>text{
+						font-size: 28rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #333333;
+						line-height: 28rpx;
+					}
+
+					>text:nth-of-type(1){
+						width: 260rpx;
+					}
+					>text:nth-of-type(2){
+
+					}
+					>text:nth-of-type(3){
+						width: 2rpx;
+						height: 30rpx;
+						background: #E0E0E0;
+						margin: 0 24rpx 0;
+					}
+					>text:nth-of-type(4){
+						color: #0183FA;
+					}
+					.icon_img{
+						width: 30rpx;
+						height: 30rpx;
+						margin-right: 12rpx;
+						>img{
+							width: 30rpx;
+							height: 30rpx;
+						}
+					}
+					>img{
+						width: 28rpx;
+						height: 30rpx;
+						margin-left: 128rpx;
+
+					}
+				}
+			}
+			.add_gas_btn{
+				height: 100rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #0183FA;
+				line-height: 28rpx;
+
+				>img{
+					width: 30rpx;
+					height: 30rpx;
+						margin-right: 14rpx;
+
+				}
+			}
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+
+		}
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			/* 时间 */
+			.register_li_min2{
+				margin:0 26rpx;
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333;
+					line-height: 100rpx;
+					margin-right: 120rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 188rpx;
+
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+
+			.issue_li{
+				margin:34rpx 26rpx 0;
+
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+					display: inline-block;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333;
+					display: inline-block;
+				}
+				view:nth-child(3){
+					width: 668rpx;
+					height: 270rpx;
+					border: 1px solid #E0E0E0;
+					border-radius: 10rpx;
+					text-align: center;
+					margin-top: 34rpx;
+					position: relative;
+					>img{
+						width: 668rpx;
+						height: 270rpx;
+						position: absolute;
+						z-index: 10;
+					}
+					>text{
+						font-size: 24rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #999999;
+						line-height: 270rpx;
+						position: absolute;
+						left: 278rpx;
+						z-index: 20;
+
+					}
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 286 - 0
pages_student/gasBottle/examination/examinationDetail.vue

@@ -0,0 +1,286 @@
+<!-- 资质审核-->
+<template>
+    <view id="register">
+		<viwe v-if="status==0" class="tip">信息正在审核中,请耐心等待...</viwe>
+		<viwe v-if="status==2" class="reject">{{form.centerAuditStatus==2?'您提交的审核被驳回,驳回原因为:'+form.centerAuditCause:'您提交的审核被驳回,驳回原因为:'+form.leadAuditCause}}</viwe>
+
+		<view class="register_li">
+			<view class="register_li_min">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_sqr.png">
+				<view>申请人:</view>
+				<input v-model="form.applyUser" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_dhh.png">
+				<view>联系方式:</view>
+				<input v-model="form.phone" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min" v-for="(item,index) in form.airBottlelist" style="border-bottom:0;" >
+				<view></view>
+				<view>{{item.airName}}-{{item.configName}}:</view>
+				<input v-model="'数量:'+item.bottleNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>实验地点:</view>
+				<input v-model="form.location" disabled type="text" >
+			</view>
+			<!-- 使用期限 -->
+			<view class="register_li_min2">
+				<view><text  style="color: #f00;margin-right: 10rpx;"></text>使用期限:</view>
+				<picker mode="date" disabled @change="startChange($event)">
+					<input class="picker-text" v-model="form.startTime" disabled  type="text"  placeholder="开始时间">
+				</picker>
+				<view>-</view>
+				<picker mode="date" disabled @change="endChange($event)">
+					<input class="picker-text2" v-model="form.endTime" disabled  type="text"  placeholder="结束时间">
+				</picker>
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>气体用途:</view>
+				<input v-model="form.gasUse" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>安全措施:</view>
+				<input v-model="form.safetyPrecautions" disabled  type="text" >
+			</view>
+			<view  class="issue_li" style="border-bottom:0;"  @click="lookItem(form.applyCertificate)">
+				<view></view>
+				<view>用气申请表:</view>
+				<img class="issue_img" :src="baseUrl+form.applyCertificate">
+			</view>
+		</view>
+
+		<view  class="sub_btn" v-if="status=='2'" @click="submitForm()">重新申请</view>
+	</view>
+</template>
+
+<script>
+    import {qualificationDetail} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				form:{},
+				id:'',
+				status:null,
+            }
+        },
+        onLoad(option) {
+			if(decodeURIComponent(option.item)){
+				this.id=JSON.parse(decodeURIComponent(option.item)).id;
+				this.status=JSON.parse(decodeURIComponent(option.item)).remark;
+			}
+
+        },
+        onShow(){
+
+
+
+        },
+
+        methods: {
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await qualificationDetail({id:this.id})
+			    if(data.code==200){
+					let res=data.data
+					_this.form=res.apply;
+					_this.form.airBottlelist=res.airBottlelist
+			    }
+			},
+			lookItem(item){
+				//查看图片
+				wx.previewImage({
+					urls: [config.base_url+item], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+			//重新提交
+			async submitForm(){
+				uni.navigateTo({
+				    url:'/pages_student/examination/examinationAdd?status=1&id='+this.id
+				});
+			},
+        },
+		mounted() {
+			this.getInfo();
+		}
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		/* 审核中 */
+		.tip{
+			width: 750rpx;
+			background: rgba(255,144,0,0.2);
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FF9000;
+			line-height: 28rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+		/* 驳回 */
+		.reject{
+			width: 750rpx;
+			background: #F3DCDC;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #DC0000;
+			line-height: 36rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			/* 时间 */
+			.register_li_min2{
+				margin:0 26rpx;
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+					margin-right: 140rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 188rpx;
+
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 412 - 0
pages_student/gasBottle/examination/examinationSelect.vue

@@ -0,0 +1,412 @@
+<!--资质申请-->
+<template>
+    <view id="transportPerson">
+		<view class="search">
+			<view class="search_t">
+				<view class="search_n">
+					<input v-model="params.searchValue" @blur="search()"   type="text" placeholder="请输入气体名称或供应商的关键字">
+					<img  class="icon_img" src="@/images/basicsModules/icon_aqjc_ss.png"/>
+				</view>
+			</view>
+			<!-- <view class="search_b">
+				<text>气体名称</text>
+				<text>气体级别</text>
+				<text>气体规格</text>
+			</view> -->
+		</view>
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="list">
+				<view class="list_li" v-for="(item,index) in listDetail">
+					<view class="list_li_l">
+						<view class="list_li_l_t">{{item.airName}}-{{item.configName}}</view>
+						<view class="list_li_l_b">
+							<img  src="@/images/basicsModules/icon_14.png">
+							<text>{{item.companyName}}</text>
+						</view>
+					</view>
+					<view class="list_li_r">
+						<view class="minus"  @click="minus(item)"><img  src="@/pages_student/images/icon_zgsq_jian.png"></view>
+						<input v-model="item.bottleNumber"  disabled  type="text" >
+						<view class="add"  @click="add(item)"><img  src="@/pages_student/images/icon_zgsq_j.png"></view>
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==4">
+			<img class="for-back-img" src="@/pages_student/images/img_ysrygl_zwsj.png">
+			<view>暂无数据</view>
+		</view>
+		<view v-if="amount>0" class="sub_btn">
+			<view class="sub_btn_l">已选择{{amount}}个气瓶</view>
+			<view class="sub_btn_r" @click="submitForm()">提交</view>
+		</view>
+		<view v-if="amount==0" class="sub_btn2">
+			<view class="sub_btn_l">暂未选择气瓶</view>
+			<view class="sub_btn_r">提交</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { taskListGood } from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "transportPerson",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				params:{
+					searchValue:'',
+				},
+                listDetail:[],
+				form:{
+
+				},
+				amount:0,
+				status:null,//0添加1编辑
+				id:null,
+            }
+        },
+        onLoad(option) {
+			this.status=option.status;
+			this.id=option.id;
+
+			if(option.form){
+				this.form=JSON.parse(decodeURIComponent(option.form));
+			}
+        },
+        onShow() {
+
+        },
+        methods: {
+			search(){
+				 this.getList();
+			},
+			minus(d) {
+				let _this=this;
+				 if(d.bottleNumber>0){
+					 _this.amount=0;
+					d.bottleNumber--;
+					this.listDetail.forEach(function(item){
+						_this.amount+=item.bottleNumber;
+					})
+				 }
+
+			},
+			add(d) {
+				let _this=this;
+				_this.amount=0;
+				d.bottleNumber++;
+				this.listDetail.forEach(function(item){
+					_this.amount+=item.bottleNumber;
+				})
+
+			},
+			//滚动加载事件
+			scrollGet(){
+
+			},
+			//获取列表数据
+			async getList(){
+				    let _this = this;
+				    const {data} = await taskListGood(this.params);
+				    if(data.code==200){
+						let res=data.rows;
+						if(res){
+							let arr=[];
+							res.forEach(function(item){
+								item.bottleNumber=0;
+							})
+							_this.listDetail=res;
+							if(_this.status==0){//新增
+								//如果有值回显
+								if(uni.getStorageSync('listDetail')){
+									arr=JSON.parse(decodeURIComponent(uni.getStorageSync('listDetail')));
+
+									_this.listDetail.forEach(function(item){
+										arr.forEach(function(item2){
+											if(item.id==item2.id){
+												item.bottleNumber=item2.bottleNumber;
+												_this.amount+=item.bottleNumber
+											}
+										})
+									})
+								}
+							}else if(_this.status==1){//编辑
+								//如果有值回显
+								if(uni.getStorageSync('listDetail')){
+									arr=JSON.parse(decodeURIComponent(uni.getStorageSync('listDetail')));
+
+									_this.listDetail.forEach(function(item){
+										arr.forEach(function(item2){
+											if(item.id==item2.airBottleConfigId){
+												item.bottleNumber=item2.bottleNumber;
+												_this.amount+=item.bottleNumber
+											}
+										})
+									})
+								}
+							}
+						}
+
+				    }
+				},
+			//注册提交
+			async submitForm(){
+				let _this = this;
+				if(_this.listDetail){
+					let arr=[];
+					_this.listDetail.forEach(function(item){
+						if(item.bottleNumber>0){
+							arr.push(item)
+						}
+					})
+					uni.setStorageSync('listDetail',encodeURIComponent(JSON.stringify(arr)))
+				}
+				uni.redirectTo({
+					url: '/pages_student/examination/examinationAdd?status='+this.status+'&id='+this.id+'&form='+encodeURIComponent(JSON.stringify(this.form)),
+				});
+			},
+
+        },
+		mounted(){
+		   this.getList()
+
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #transportPerson {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+
+		/* 搜索 */
+		.search{
+			.search_t{
+				background: #FFFFFF;
+				padding: 20rpx;
+				box-sizing: border-box;
+				.search_n{
+					width: 710rpx;
+					height: 80rpx;
+					border: 1px solid #E0E0E0;
+					border-radius: 40rpx;
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					padding:0 40rpx;
+					box-sizing: border-box;
+					>input{
+						width: 640rpx;
+						font-size: 24rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #CCCCCC;
+						line-height: 30rpx;
+					}
+					>img{
+						width: 30rpx;
+						height: 30rpx;
+					}
+				}
+
+			}
+			.search_b{
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				margin: 20rpx 0;
+				>text{
+					display: inline-block;
+					width: 200rpx;
+					height: 60rpx;
+					background: #FFFFFF;
+					border-radius: 30rpx;
+					font-size: 26rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 60rpx;
+					text-align: center;
+					margin-right: 20rpx;
+				}
+			}
+		}
+        .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 padding-top: 30rpx;
+		 padding-bottom: 180rpx;
+		 .list{
+			 background: #FFFFFF;
+			 border-radius: 20rpx;
+			 margin: 0 20rpx;
+			 padding: 0 20rpx;
+			 box-sizing: border-box;
+			 .list_li{
+				 height: 180rpx;
+				 display: flex;
+				 justify-content: space-between;
+				 padding: 0 20rpx;
+				 box-sizing: border-box;
+				 border-bottom:1px solid #f5f5f5;
+				 .list_li_l{
+					 flex: 1;
+					 .list_li_l_t{
+						 font-size: 28rpx;
+						 font-family: PingFang SC;
+						 font-weight: 500;
+						 color: #333333;
+						 line-height: 28rpx;
+						 margin-top: 44rpx;
+					 }
+					 .list_li_l_b{
+						 display: flex;
+						 justify-content: flex-start;
+						 margin: 42rpx 0 34rpx 0;
+						 >img{
+							 width: 28rpx;
+							 height: 30rpx;
+							 margin-right: 18rpx;
+						 }
+						 >text{
+							font-size: 24rpx;
+							font-family: PingFang SC;
+							font-weight: 400;
+							color: #666666;
+							line-height: 24rpx;
+						 }
+					 }
+				 }
+				.list_li_r{
+					 width: 222rpx;
+					 display: flex;
+					 justify-content: space-between;
+					 align-items: center;
+					 .minus{
+						 width: 96rpx;
+						 height: 96rpx;
+						 >img{
+							width: 36rpx;
+							height: 36rpx;
+							margin-top: 30rpx;
+							margin-left: 30rpx;
+						 }
+					 }
+					 .add{
+						 width: 96rpx;
+						 height: 96rpx;
+						>img{
+							width: 36rpx;
+							height: 36rpx;
+							margin-top: 30rpx;
+							margin-left: 30rpx;
+						}
+					 }
+					 >input{
+						 text-align: center;
+						 width: 90rpx;
+						 font-size: 28rpx;
+						 font-family: PingFang SC;
+						 font-weight: 500;
+						 color: #333333;
+						 line-height: 36rpx;
+					 }
+				}
+
+			 }
+		 }
+     }
+		.empty{
+			text-align: center;
+			margin-top: 316rpx;
+			>img{
+				width: 336rpx;
+				height: 222rpx;
+				margin-left: 208rpx;
+			}
+			>view{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #E0E0E0;
+				line-height: 30rpx;
+				margin-top: 48rpx;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 750rpx;
+			height: 120rpx;
+			background: #FFFFFF;
+			position: fixed;
+			bottom: 0;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			padding: 0 20rpx 0 40rpx;
+			box-sizing: border-box;
+			z-index: 1000;
+			.sub_btn_l{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 120rpx;
+				flex: 1;
+			}
+			.sub_btn_r{
+				width: 200rpx;
+				height: 70rpx;
+				background: #0183FA;
+				border-radius: 35rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 70rpx;
+				text-align: center;
+			}
+		}
+		.sub_btn2{
+			width: 750rpx;
+			height: 120rpx;
+			background: #FFFFFF;
+			position: fixed;
+			bottom: 0;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			padding: 0 20rpx 0 40rpx;
+			box-sizing: border-box;
+			z-index: 1000;
+			.sub_btn_l{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #CCCCCC;
+				line-height: 120rpx;
+				flex: 1;
+			}
+			.sub_btn_r{
+				width: 200rpx;
+				height: 70rpx;
+				background: #E0E0E0;
+				border-radius: 35rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+				line-height: 70rpx;
+				text-align: center;
+			}
+		}
+	}
+</style>

+ 207 - 0
pages_student/gasBottle/examination/examinationSucceed.vue

@@ -0,0 +1,207 @@
+<!-- 资质审核-->
+<template>
+    <view id="register">
+		<viwe :class="checkStatus==0?'tip':'reject'">信息正在审核中,请耐心等待...</viwe>
+		<view class="register_li">
+			<view class="register_li_min">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_sqr.png">
+				<view>申请人:</view>
+				<input v-model="form.name" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_dhh.png">
+				<view>联系方式:</view>
+				<input v-model="form.name" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min" style="border-bottom:0;">
+				<view></view>
+				<view>氧气-工业级(10L):</view>
+				<input v-model="form.name" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>实验地点:</view>
+				<input v-model="form.name" disabled type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>使用期限:</view>
+				<input v-model="form.name" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>气体用途:</view>
+				<input v-model="form.name" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>安全措施:</view>
+				<input v-model="form.name" disabled  type="text" >
+			</view>
+			<view  class="issue_li" style="border-bottom:0;">
+				<view></view>
+				<view>用气申请表:</view>
+				<img class="issue_img" src="@/pages_student/images/img_gysglpt_bg.png">
+			</view>
+		</view>
+
+		<view v-if="listType==0" class="sub_btn">重新提交</view>
+		<view v-if="listType==2" class="sub_btn">重新申请</view>
+	</view>
+</template>
+
+<script>
+    import {} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				listType:0,//0回收申请 1配送申请 2货品问题
+				form:{
+					name:'',
+				},
+				checkStatus:0,
+				pickerArray:['1号车']
+            }
+        },
+        onLoad(option) {
+
+        },
+        onShow(){
+
+
+
+        },
+
+        methods: {
+			bindPickerChange(e){
+				let index=e.target.value
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:100%;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		/* 审核中 */
+		.tip{
+			width: 750rpx;
+			background: rgba(255,144,0,0.2);
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FF9000;
+			line-height: 28rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+		/* 驳回 */
+		.reject{
+			width: 750rpx;
+			background: #F3DCDC;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #DC0000;
+			line-height: 36rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 529 - 0
pages_student/gasBottle/gasApply/awaitStorage.vue

@@ -0,0 +1,529 @@
+<!-- 待入库 -->
+<template>
+    <view id="register">
+		<view class="title">{{item.airName}}-{{item.configName}}</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>司机姓名:</view>
+				<input v-model="infoForm.user.userName"   type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>司机号牌:</view>
+				<input v-model="infoForm.car.carCode"   type="text" >
+			</view>
+			<view class="register_li_min" style="border-bottom:0;">
+				<view></view>
+				<view>联系方式:</view>
+				<input v-model="infoForm.user.phone"   type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min" v-for="(item,index) in list">
+				<view></view>
+				<view>{{item.name}}</view>
+				<view class="radio_group">
+					<view class="radio" v-for="(item2,index2) in item.radioList" @click="radioClick(item,item2)">
+						<img v-if="!item2.checked" src="@/images/basicsModules/icon_5.png">
+						<img v-if="item2.checked" src="@/images/basicsModules/icon_6.png">
+						<text>{{item2.name}}</text>
+					</view>
+				</view>
+			</view>
+			<view class="register_li_min">
+				<view>*</view>
+				<view>气表压力:</view>
+				<input v-model="form.gasPressure" maxlength="4"  type="text" placeholder-style="color:#999;" placeholder="请输入气表压力">
+			</view>
+			<!-- 检验有效期 -->
+			<view class="register_li_min2">
+				<view><text  style="color: #f00;margin-right: 10rpx;">*</text>检验有效期:</view>
+				<picker  mode="date" @change="startChange($event)">
+					<input class="picker-text" v-model="form.validateStartTime" disabled  type="text" placeholder-style="color:#999;"  placeholder="开始时间">
+				</picker>
+				<view>-</view>
+				<picker  mode="date" @change="endChange($event)">
+					<input class="picker-text2" v-model="form.validateEndTime" disabled  type="text"  placeholder-style="color:#999;" placeholder="结束时间">
+				</picker>
+			</view>
+			<view class="register_li_min" >
+				<view>*</view>
+				<view>电子标签:</view>
+				<input v-model="form.electronicTag"   type="text" placeholder-style="color:#999;" placeholder="请输入电子标签ID">
+				<img @click.stop="saoCode"  class="code_img" src="@/images/basicsModules/icon_aqjc_sm.png">
+			</view>
+			<view class="register_li_min" style="border: none;">
+			    <view>*</view>
+				<view>验收备注:</view>
+				<input v-model="form.validateRemark"   type="text" placeholder-style="color:#999;" placeholder="请输入验收备注">
+			</view>
+		</view>
+		<view class="sub_btn">
+			<view class="sub_btn_l" @click="rejection()">拒收</view>
+			<view class="sub_btn_r" @click="submitForm()">确认信息并入库</view>
+		</view>
+	</view>
+</template>
+
+<script>
+    import {gasApplyDetailDrkDetail,gasApplyStorageAdd} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					gasPressure:'',
+					validateStartTime:'',
+					validateEndTime:'',
+					electronicTag:'',
+					validateRemark:'',
+				},
+				infoForm:{},
+				item:{},
+				id:{},
+				list:[
+					{
+						id:'0',
+						name:'瓶身颜色:',
+						lab:'color',
+						radioList:[
+							{
+								id:1,
+								name:'灰',
+								checked:true,
+							},
+							{
+								id:2,
+								name:'白',
+								checked:false,
+							},
+							{
+								id:3,
+								name:'蓝',
+								checked:false,
+							},
+						]
+
+					},
+					{
+						id:'0',
+						name:'有无手轮:',
+						lab:'isHandwheel',
+						radioList:[
+							{
+								id:1,
+								name:'有',
+								checked:true,
+							},
+							{
+								id:0,
+								name:'无',
+								checked:false,
+							},
+						]
+
+					},
+					{
+						id:'0',
+						name:'是否固定:',
+						lab:'isFixed',
+						radioList:[
+							{
+								id:1,
+								name:'是',
+								checked:true,
+							},
+							{
+								id:0,
+								name:'否',
+								checked:false,
+							},
+						]
+
+					},
+					{
+						id:'0',
+						name:'电子标签:',
+						lab:'isElectronicTag',
+						radioList:[
+							{
+								id:1,
+								name:'有',
+								checked:true,
+							},
+							{
+								id:0,
+								name:'无',
+								checked:false,
+							},
+						]
+
+					},
+					{
+						id:'0',
+						name:'气瓶状态标牌:',
+						lab:'isStatusSign',
+						radioList:[
+							{
+								id:1,
+								name:'有',
+								checked:true,
+							},
+							{
+								id:0,
+								name:'无',
+								checked:false,
+							},
+						]
+
+					},
+					{
+						id:'0',
+						name:'标牌已拍照:',
+						lab:'isPhoto',
+						radioList:[
+							{
+								id:1,
+								name:'有',
+								checked:true,
+							},
+							{
+								id:0,
+								name:'无',
+								checked:false,
+							},
+						]
+
+					},
+				]
+            }
+        },
+        onLoad(option) {
+        	this.item=JSON.parse(decodeURIComponent(option.item));
+        },
+        onShow(){
+
+        },
+		mounted(){
+		  this.getInfo()
+
+		},
+        methods: {
+			//开始时间选中事件
+			startChange(e){
+				this.form.validateStartTime=e.target.value
+			},
+			//结束时间选中事件
+			endChange(e){
+				this.form.validateEndTime=e.target.value
+			},
+			//单选按钮
+			radioClick(p,d){
+				d.checked=!d.checked
+				if(d.checked){
+					//如果有选中的,循环把其他选中的取消
+					p.radioList.forEach(function(item){
+						if(item.id==d.id){
+
+						}else{
+							item.checked=false;
+						}
+					})
+				}else{
+
+				}
+
+			},
+			//调用摄像头
+			saoCode(){
+				let _this = this;
+			    uni.scanCode({
+			        onlyFromCamera: true,
+			        success: function (res) {
+						_this.form.electronicTag=res.result
+			        }
+			    });
+			},
+			//获取列表数据
+			async getInfo(){
+				let _this = this;
+				const {data} = await gasApplyDetailDrkDetail({id:_this.item.id});
+				if(data.code==200){
+					if(data.code==200){
+						let res = data.data;
+						_this.infoForm=res
+					}
+
+				}
+			},
+			//拒收
+			async rejection(){
+				uni.navigateTo({
+				     url: '/pages_student/gasApply/gasApplyReject?item='+encodeURIComponent(JSON.stringify(this.item))+'&item2='+encodeURIComponent(JSON.stringify(this.infoForm))
+				 });
+			},
+			//提交
+			async submitForm(){
+				let _this = this;
+				if(!this.form.gasPressure){
+					uni.showToast({
+						title: '请输入气表压力',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.validateStartTime || !this.form.validateEndTime){
+					uni.showToast({
+						title: '请选择检验有效期',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.electronicTag){
+					uni.showToast({
+						title: '请输入电子标签',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.validateRemark){
+					uni.showToast({
+						title: '请输入验收备注',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+
+				_this.list.forEach(function(item){
+					item.radioList.forEach(function(item2){
+						if(item.lab=='color' && item2.checked){
+							_this.form.color=item2.id;
+						}else if(item.lab=='isHandwheel' && item2.checked){
+							_this.form.isHandwheel=item2.id;
+						}else if(item.lab=='isFixed' && item2.checked){
+							_this.form.isFixed=item2.id;
+						}else if(item.lab=='isElectronicTag' && item2.checked){
+							_this.form.isElectronicTag=item2.id;
+						}else if(item.lab=='isStatusSign' && item2.checked){
+							_this.form.isStatusSign=item2.id;
+						}else if(item.lab=='isPhoto' && item2.checked){
+							_this.form.isPhoto=item2.id;
+						}
+					})
+				})
+
+				_this.form.currentPressure=_this.form.gasPressure
+				_this.form.driverName=_this.infoForm.user.userName
+				_this.form.driverId=_this.infoForm.user.id
+				_this.form.carCode=_this.infoForm.car.carCode
+				_this.form.carCodeId =_this.infoForm.car.id
+				_this.form.phone=_this.infoForm.user.phone
+				_this.form.airStatus=0;
+				_this.form.taskId=_this.item.taskId;
+				_this.form.taskDetailId=_this.item.id;
+				_this.form.airName=_this.item.airName;
+				_this.form.parent=_this.item.parent;
+				_this.form.configName=_this.item.configName;
+				_this.form.companyName=_this.item.companyName;
+				_this.form.airConstituents=_this.item.airConstituents;
+				_this.form.airBottleConfigId=_this.item.airBottleConfigId;
+				_this.form.airBottleId =_this.item.airBottleId;
+				const {data} = await gasApplyStorageAdd(_this.form);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				    setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_student/gasApply/gasApply'
+				        });
+				    },2000);
+				}
+			},
+
+
+		}
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			line-height: 100rpx;
+			padding-left: 40rpx;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					flex: 1;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+				.picker-text{
+					text-align: right;
+					font-size: 28rpx;
+				}
+
+				>input{
+					width 400rpx;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+				.code_img{
+					width: 30rpx;
+					height: 28rpx;
+					margin-left: 26rpx;
+				}
+				/* 单选按钮 */
+				.radio_group{
+					display: flex;
+					.radio{
+						display: flex;
+						margin-left: 80rpx;
+						margin-right: 0;
+						>img{
+							width: 30rpx;
+							height: 30rpx;
+						}
+						>text{
+							margin-left: 34rpx;
+							font-size: 28rpx;
+							font-family: PingFang SC;
+							font-weight: 500;
+							color: #333333;
+							line-height: 28rpx;
+						}
+					}
+				}
+			}
+			/* 时间 */
+			.register_li_min2{
+				margin:0 26rpx;
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					margin-right: 96rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+					width: 188rpx;
+
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			display: flex;
+			position: fixed;
+			bottom: 30rpx;
+			left: 50rpx;
+			z-index: 1000;
+			.sub_btn_l{
+				width: 325rpx;
+				height: 100rpx;
+				background: linear-gradient(-45deg, #FA9901, #F28E26);
+				border-radius: 50rpx 0px 0px 50rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 100rpx;
+				text-align: center;
+			}
+			.sub_btn_r{
+				width: 325rpx;
+				height: 100rpx;
+			    background: linear-gradient(-35deg, #309CFF, #0183FA);
+			    border-radius: 0px 50rpx 50rpx 0px;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 100rpx;
+				text-align: center;
+			}
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 205 - 0
pages_student/gasBottle/gasApply/gasApply.vue

@@ -0,0 +1,205 @@
+<!--气瓶申请-->
+<template>
+    <view id="transportPerson">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="list">
+				<view class="list_li" v-for="(item,index) in dataList" @click="goInfo(item)">
+					<view class="list_li_t">
+						<img class="for-back-img" src="@/pages_student/images/icon_ysclgl_cl.png">
+						<text>申请时间:{{item.createTime}}</text>
+						<text v-if="item.applyNum==item.storageNum">已全部入库</text>
+					</view>
+					<view class="list_li_b">
+						<view>申请:<text>{{item.applyNum}}</text></view>
+						<view>入库:<text>{{item.storageNum}}</text></view>
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==4">
+			<img class="for-back-img" src="@/pages_student/images/img_ysrygl_zwsj.png">
+			<view>暂无数据</view>
+		</view>
+		<view class="sub_btn" @click="subBtn()">提交申请</view>
+	</view>
+</template>
+
+<script>
+	import { gasApplyList } from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "transportPerson",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+				},
+				pageType:0,
+                dataList:[],
+            }
+        },
+        onLoad() {
+
+        },
+        onShow() {
+
+        },
+
+        methods: {
+
+			//滚动加载事件
+			scrollGet(){
+			   this.getData.pageNum += 1;
+			   this.getList();
+			},
+			subBtn(){
+				uni.redirectTo({
+				    url:'/pages_student/gasApply/gasApplyAdd?status=0'
+				});
+			},
+			goInfo(d){
+				uni.redirectTo({
+				    url:'/pages_student/gasApply/gasApplyList?item='+encodeURIComponent(JSON.stringify(d))
+				});
+			},
+			//获取列表数据
+				async getList(){
+				   let _this=this;
+				    const {data} = await gasApplyList(this.getData);
+				    if(data.code==200){
+						let res=data.rows;
+						if(_this.getData.pageNum==1){
+							_this.dataList=res;
+							if(res.length>0){
+								_this.pageType=0;
+							}else{
+								_this.pageType=4;
+							}
+						}else{
+							_this.dataList=_this.dataList.concat(res);
+						}
+				    }
+				},
+
+        },
+		mounted(){
+			this.getList()
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #transportPerson {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		margin-top: 20rpx;
+
+        .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 padding-bottom: 220rpx;
+		 .list{
+			 background: #FFFFFF;
+			 border-radius: 20rpx;
+			 margin: 0 20rpx;
+			 padding: 0 20rpx;
+			 box-sizing: border-box;
+			 .list_li{
+				 border-bottom:1px solid #f5f5f5;
+				 padding: 30rpx 0 20rpx 0;
+				 box-sizing: border-box;
+				.list_li_t{
+					display: flex;
+					align-items: center;
+					>img{
+						width: 30rpx;
+						height: 30rpx;
+						margin-right: 16rpx;
+					}
+					>text:nth-of-type(1){
+						font-size: 28rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #333333;
+						line-height: 28rpx;
+					}
+					>text:nth-of-type(2){
+						width: 220rpx;
+						display: inline-block;
+						font-size: 24rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #00CC26;
+						line-height: 24rpx;
+						text-align: right;
+
+					}
+				}
+				.list_li_b{
+					display: flex;
+					margin-top: 42rpx;
+					>view{
+						width: 150rpx;
+						font-size: 26rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #333333;
+						line-height: 26rpx;
+						>text{
+							font-size: 26rpx;
+							color: #0183FA;
+						}
+					}
+					>view:nth-of-type(2){
+						>text{
+							font-size: 26rpx;
+							color: #00CC26;
+						}
+					}
+				}
+			 }
+		 }
+     }
+		.empty{
+			text-align: center;
+			margin-top: 316rpx;
+			>img{
+				width: 336rpx;
+				height: 222rpx;
+				margin-left: 208rpx;
+			}
+			>view{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #E0E0E0;
+				line-height: 30rpx;
+				margin-top: 48rpx;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+		}
+	}
+</style>

+ 467 - 0
pages_student/gasBottle/gasApply/gasApplyAdd.vue

@@ -0,0 +1,467 @@
+<!--申请气瓶-->
+<template>
+    <view id="transportPerson">
+		<picker @change="bindPickerChange" :value="pickerIndex" :range="pickerArray">
+			<view class="title">
+				<viwe class="title_l">实验地点:</viwe>
+				<input class="title_r" v-model="form.location" disabled type="text" placeholder="请选择实验地点">
+			</view>
+		</picker>
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="list">
+				<view class="list_li" v-for="(item,index) in listDetail">
+					<view class="list_li_l">
+						<view class="list_li_l_t">{{item.airName}}-{{item.configName}}</view>
+						<view class="list_li_l_b">
+							<img  src="@/images/basicsModules/icon_14.png">
+							<text>{{item.companyName}}</text>
+						</view>
+					</view>
+					<view class="list_li_r">
+						<view class="minus"  @click="minus(item)"><img  src="@/pages_student/images/icon_zgsq_jian.png"></view>
+						<input v-model="item.bottleNumber"  disabled  type="text" >
+						<view class="add"  @click="add(item)"><img  src="@/pages_student/images/icon_zgsq_j.png"></view>
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==4">
+			<img class="for-back-img" src="@/pages_student/images/icon_sqqp_sqys.png">
+			<view>
+				<text>气瓶已全部向供应商申请运输</text>
+				<text>如需更多气瓶请重新提交资格申请</text>
+			</view>
+		</view>
+		<view v-if="amount>0" class="sub_btn">
+			<view class="sub_btn_l">已选择{{amount}}个气瓶</view>
+			<view class="sub_btn_r" @click="submitVerify()">提交</view>
+		</view>
+		<view v-if="amount==0" class="sub_btn2">
+			<view class="sub_btn_l">暂未选择气瓶</view>
+			<view class="sub_btn_r">提交</view>
+		</view>
+		<view class="sub_btn2" v-if="pageType==4">提交申请</view>
+	</view>
+</template>
+<script>
+	import { taskListGood,labList,gasApplyAdd,gasApplyVerify} from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "transportPerson",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				params:{
+					pageNum:1,
+					pageSize:20,
+					searchValue:'',
+				},
+                listDetail:[],
+				form:{
+					location:'',
+				},
+				pickerArray:[],
+				pickerArrayList:[],
+				amount:0,
+				status:null,//0添加1编辑
+            }
+        },
+        onLoad(option) {
+			this.status=option.status;
+        },
+        onShow() {
+
+        },
+        methods: {
+			search(){
+				 this.getList();
+			},
+			minus(d) {
+				let _this=this;
+				 if(d.bottleNumber>0){
+					 _this.amount=0;
+					d.bottleNumber--;
+					this.listDetail.forEach(function(item){
+						_this.amount+=item.bottleNumber;
+					})
+				 }
+
+			},
+			add(d) {
+				let _this=this;
+				_this.amount=0;
+				d.bottleNumber++;
+				this.listDetail.forEach(function(item){
+					_this.amount+=item.bottleNumber;
+				})
+
+			},
+			//滚动加载事件
+			scrollGet(){
+			   this.params.pageNum += 1;
+			   this.getList();
+			},
+			//选择实验室
+			bindPickerChange(e){
+				let _this=this;
+				let index=e.target.value
+				//获取实验室名称
+				_this.form.location=_this.pickerArray[index]
+				//循环获取实验室id
+				_this.pickerArrayList.forEach(function(item){
+					if(_this.pickerArray[index]==item.name){
+						_this.form.locationId=item.id;
+					}
+				})
+
+			},
+			//查询实验室
+			async labList(){
+				const {data} = await labList()
+				if(data.code == 200){
+					let _this=this;
+					let res=data.data
+					_this.pickerArrayList=res;
+					res.forEach(function(item){
+						_this.pickerArray.push(item.name);
+					})
+
+				}
+			},
+			//获取列表数据
+				async getList(){
+				    let _this = this;
+
+				    const {data} = await taskListGood(this.params);
+				    if(data.code==200){
+						let res=data.rows;
+						if(res){
+
+							if(_this.params.pageNum==1){
+								res.forEach(function(item){
+									item.bottleNumber=0;
+								})
+								_this.listDetail=res;
+							}else{
+								res.forEach(function(item){
+									item.bottleNumber=0;
+								})
+								_this.listDetail=_this.listDetail.concat(res);
+
+							}
+
+						}
+
+				    }
+				},
+				async submitVerify(){
+					let _this=this;
+					if(_this.form.location==''){
+						uni.showToast({
+						    title: '请先选择实验室!',
+						    icon:"none",
+						    mask:true,
+						    duration: 2000
+						});
+						return;
+					}
+					const {data} = await gasApplyVerify({subjectId:_this.form.locationId});
+					if(data.code == 200){
+						let res=data.data
+						if(!res.flgSubject){
+							uni.showToast({
+								title: '请先配置实验室气瓶总量数',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+							return
+						}
+						if(!res.flgUser){
+							uni.showToast({
+								title: '请先配置实验室个人气瓶总量数',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+							return
+						}
+						if(_this.amount>res.subjectNum){
+							uni.showToast({
+								title: '当前申请气瓶个数大于当前实验室气瓶存量!',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+							return
+						}
+						if(_this.amount>res.userNum){
+							uni.showToast({
+								title: '当前申请气瓶个数大于个人气瓶存量!',
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+							return
+						}
+						_this.submitForm();
+					}else{
+						return
+					}
+				},
+			//注册提交
+			async submitForm(){
+				let _this = this;
+
+				if(_this.listDetail){
+					let arr=[];
+					let supplierId='';
+					_this.listDetail.forEach(function(item){
+						item.supplierId=item.companyId
+						supplierId=item.companyId
+						if(item.bottleNumber>0){
+							arr.push(item)
+						}
+					})
+					_this.form.detailListVO=arr;
+				}
+				const {data} = await gasApplyAdd(_this.form);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				    setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_student/gasApply/gasApply'
+				        });
+				    },2000);
+				}
+			},
+
+        },
+		mounted(){
+		   this.getList()
+		   this.labList()
+
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #transportPerson {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		.title{
+			width: 750rpx;
+			height: 118rpx;
+			background: #FFFFFF;
+			padding: 0 40rpx;
+			box-sizing: border-box;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			margin-bottom: 20rpx;
+			.title_l{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+				line-height: 118rpx;
+			}
+			.title_r{
+				flex: 1;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				text-align: right;
+			}
+		}
+        .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 padding-top: 30rpx;
+		 padding-bottom: 180rpx;
+		 .list{
+			 background: #FFFFFF;
+			 border-radius: 20rpx;
+			 margin: 0 20rpx;
+			 padding: 0 20rpx;
+			 box-sizing: border-box;
+			 .list_li{
+				 height: 180rpx;
+				 display: flex;
+				 justify-content: space-between;
+				 padding: 0 20rpx;
+				 box-sizing: border-box;
+				 border-bottom:1px solid #f5f5f5;
+				 .list_li_l{
+					 flex: 1;
+					 .list_li_l_t{
+						 font-size: 28rpx;
+						 font-family: PingFang SC;
+						 font-weight: 500;
+						 color: #333333;
+						 line-height: 28rpx;
+						 margin-top: 44rpx;
+					 }
+					 .list_li_l_b{
+						 display: flex;
+						 justify-content: flex-start;
+						 margin: 42rpx 0 34rpx 0;
+						 >img{
+							 width: 28rpx;
+							 height: 30rpx;
+							 margin-right: 18rpx;
+						 }
+						 >text{
+							font-size: 24rpx;
+							font-family: PingFang SC;
+							font-weight: 400;
+							color: #666666;
+							line-height: 24rpx;
+						 }
+					 }
+				 }
+				.list_li_r{
+					 width: 222rpx;
+					 display: flex;
+					 justify-content: space-between;
+					 align-items: center;
+					 .minus{
+						 width: 96rpx;
+						 height: 96rpx;
+						 >img{
+							width: 36rpx;
+							height: 36rpx;
+							margin-top: 30rpx;
+							margin-left: 30rpx;
+						 }
+					 }
+					 .add{
+						 width: 96rpx;
+						 height: 96rpx;
+						>img{
+							width: 36rpx;
+							height: 36rpx;
+							margin-top: 30rpx;
+							margin-left: 30rpx;
+						}
+					 }
+					 >input{
+						 text-align: center;
+						 width: 90rpx;
+						 font-size: 28rpx;
+						 font-family: PingFang SC;
+						 font-weight: 500;
+						 color: #333333;
+						 line-height: 36rpx;
+					 }
+				}
+
+			 }
+		 }
+     }
+		.empty{
+			width: 710rpx;
+			height: 700rpx;
+			background: #FFFFFF;
+			border-radius: 20px;
+			text-align: center;
+			margin:20rpx;
+			>img{
+				width: 430rpx;
+				height: 280rpx;
+				margin-left: 142rpx;
+				margin-top: 72rpx;
+			}
+			>view{
+				margin-top: 48rpx;
+				>text{
+					display: block;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 44rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 750rpx;
+			height: 120rpx;
+			background: #FFFFFF;
+			position: fixed;
+			bottom: 0;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			padding: 0 20rpx 0 40rpx;
+			box-sizing: border-box;
+			z-index: 1000;
+			.sub_btn_l{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 120rpx;
+				flex: 1;
+			}
+			.sub_btn_r{
+				width: 200rpx;
+				height: 70rpx;
+				background: #0183FA;
+				border-radius: 35rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 70rpx;
+				text-align: center;
+			}
+		}
+		.sub_btn2{
+			width: 750rpx;
+			height: 120rpx;
+			background: #FFFFFF;
+			position: fixed;
+			bottom: 0;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			padding: 0 20rpx 0 40rpx;
+			box-sizing: border-box;
+			z-index: 1000;
+			.sub_btn_l{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #CCCCCC;
+				line-height: 120rpx;
+				flex: 1;
+			}
+			.sub_btn_r{
+				width: 200rpx;
+				height: 70rpx;
+				background: #E0E0E0;
+				border-radius: 35rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+				line-height: 70rpx;
+				text-align: center;
+			}
+		}
+	}
+</style>

+ 311 - 0
pages_student/gasBottle/gasApply/gasApplyList.vue

@@ -0,0 +1,311 @@
+<!--申请详情-->
+<template>
+    <view id="transportPerson">
+		<view class="title">
+			<viwe class="title_l">申请时间:</viwe>
+			<viwe class="title_r">{{createTime}}</viwe>
+		</view>
+		<view class="tabTitle">
+			<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
+				<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
+			    <view :class="{on:curTab==index}" class="tabTitle_across"></view>
+			</view>
+		</view>
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="list">
+				<view class="list_li" v-for="(item,index) in dataList">
+					<view class="list_li_l" >
+						<view class="list_li_l_t">{{item.airName}}-{{item.configName}}</view>
+						<view class="list_li_l_b">
+							<img  src="@/images/basicsModules/icon_14.png">
+							<text>{{item.companyName}}</text>
+						</view>
+						<view v-if="pageType==2 || pageType==3" class="list_li_l_b">
+							<img  src="@/images/basicsModules/icon_aqbj_sj.png">
+							<text v-if="pageType==2">入库时间:{{item.createTime}}</text>
+							<text v-if="pageType==3">拒收时间:{{item.rejectionApplyTime}}</text>
+						</view>
+						<view  v-if="pageType==3" class="list_li_l_b">
+							<img  src="@/pages_student/images/icon_sqxq_jsyy.png">
+							<view class="cause"><text>拒收原因:</text><text>{{item.rejectionApplyRemark}}</text></view>
+						</view>
+					</view>
+					<view v-if="pageType==0" class="list_li_r" @click="enterStockFun(item)">入库</view>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==4">
+			<img class="for-back-img" src="@/pages_student/images/img_ysrygl_zwsj.png">
+			<view>暂无数据</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { gasApplyDetailDrk,gasApplyDetailWps,gasApplyDetailYrk,gasApplyDetailYjs} from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "transportPerson",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+				},
+				userType:uni.getStorageSync('userType'),
+				pageType:0,
+				curTab:0,
+				tabText:['待入库','未派送','已入库','已拒收'],
+                dataList:[],
+				status:null,//0添加1编辑
+				id:null,
+				createTime:'',
+            }
+        },
+        onLoad(option) {
+			let item=JSON.parse(decodeURIComponent(option.item));
+			this.createTime=item.createTime;
+			this.id=item.id;
+        },
+        onShow() {
+
+        },
+		mounted(){
+		  this.getList()
+		},
+        methods: {
+			//顶部tab点击
+			tabClick(index) {
+				this.curTab = index;
+				this.pageType=index;
+				this.dataList=[];
+				if(this.pageType==0){
+					this.getList()
+				}else if(this.pageType==1){
+					this.getList2()
+				}else if(this.pageType==2){
+					this.getList3()
+				}else if(this.pageType==3){
+					this.getList4()
+
+				}
+
+			},
+			//待审核入库按钮
+			enterStockFun(d){
+				uni.redirectTo({
+				    url:'/pages_student/gasApply/awaitStorage?item='+encodeURIComponent(JSON.stringify(d))
+				});
+			},
+			//滚动加载事件
+			scrollGet(){
+
+			},
+			//待入库
+			async getList(){
+				let _this = this;
+				const {data} = await gasApplyDetailDrk({id:_this.id});
+				if(data.code==200){
+					if(data.code==200){
+						let res = data.data.list;
+						_this.dataList=res
+					}
+				}
+			},
+			//未派送
+			async getList2(){
+				let _this = this;
+				const {data} = await gasApplyDetailWps({id:_this.id});
+				if(data.code==200){
+					if(data.code==200){
+						let res = data.data.list;
+						_this.dataList=res
+					}
+				}
+			},
+			//已入库
+			async getList3(){
+				let _this = this;
+				const {data} = await gasApplyDetailYrk({id:_this.id});
+				if(data.code==200){
+					if(data.code==200){
+						let res = data.rows;
+						_this.dataList=res
+					}
+				}
+			},
+			//已拒收
+			async getList4(){
+				let _this = this;
+				const {data} = await gasApplyDetailYjs({id:_this.id});
+				if(data.code==200){
+					if(data.code==200){
+						let res = data.rows;
+						_this.dataList=res
+					}
+				}
+			},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #transportPerson {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		.title{
+			width: 750rpx;
+			height: 118rpx;
+			background: #FFFFFF;
+			padding: 0 40rpx;
+			box-sizing: border-box;
+			display: flex;
+			justify-content: space-between;
+			.title_l{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+				line-height: 118rpx;
+			}
+			.title_r{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 118rpx;
+			}
+		}
+		.tabTitle{
+			display flex;
+			width:100%;
+			height: 100rpx;
+			.tabTitle_li{
+				width:146rpx;
+				text-align center;
+				.tabTitle_text{
+					display: inline-block;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 70rpx;
+					&.on{
+						color:#0183FA;
+					}
+				}
+				.tabTitle_across{
+					width: 50rpx;
+					height: 6rpx;
+					background: #0183FA;
+					border-radius: 3rpx;
+					margin-left 50rpx;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+
+			}
+
+
+		}
+        .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 .list{
+			 background: #FFFFFF;
+			 border-radius: 20rpx;
+			 margin: 0 20rpx;
+			 padding: 0 20rpx;
+			 box-sizing: border-box;
+			 .list_li{
+					 display: flex;
+					 justify-content: space-between;
+					 padding: 44rpx 0 28rpx 0;
+					 box-sizing: border-box;
+					 border-bottom:1px solid #f5f5f5;
+					 .list_li_l{
+						 flex: 1;
+						 .list_li_l_t{
+							 font-size: 28rpx;
+							 font-family: PingFang SC;
+							 font-weight: 500;
+							 color: #333333;
+							 line-height: 28rpx;
+
+						 }
+						 .list_li_l_b{
+							 display: flex;
+							 justify-content: flex-start;
+							 margin-top:38rpx;
+							 >img{
+								 width: 28rpx;
+								 height: 30rpx;
+								 margin-right: 18rpx;
+							 }
+							 >text{
+								font-size: 24rpx;
+								font-family: PingFang SC;
+								font-weight: 400;
+								color: #666666;
+								line-height: 30rpx;
+							 }
+							 .cause{
+								 display: flex;
+								 flex: 1;
+								 >text{
+									font-size: 24rpx;
+									font-family: PingFang SC;
+									font-weight: 400;
+									color: #666666;
+									line-height: 30rpx;
+								 }
+								 >text:nth-of-type(1){
+								   width: 200rpx;
+								 }
+								 >text:nth-of-type(2){
+									display: block;
+								 }
+							 }
+						 }
+					 }
+					 .list_li_r{
+						 font-size: 28rpx;
+						 font-family: PingFang SC;
+						 font-weight: 500;
+						 color: #0183FA;
+						 line-height: 28rpx;
+						 margin-top: 26rpx;
+					 }
+				 }
+			 }
+     }
+		.empty{
+			text-align: center;
+			margin-top: 316rpx;
+			>img{
+				width: 336rpx;
+				height: 222rpx;
+				margin-left: 208rpx;
+			}
+			>view{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #E0E0E0;
+				line-height: 30rpx;
+				margin-top: 48rpx;
+			}
+		}
+
+	}
+</style>

+ 256 - 0
pages_student/gasBottle/gasApply/gasApplyReject.vue

@@ -0,0 +1,256 @@
+<!-- 拒收气瓶 -->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>*</view>
+				<view>拒收原因:</view>
+				<input v-model="form.rejectionApplyRemark"   type="text" placeholder="请输入拒收原因">
+			</view>
+			<view class="up-img-box">
+			    <view class="title-view">问题照片:</view>
+			    <view class="img-max-box">
+			        <view class="img-box" v-for="(item,index) in imgList" :key="index">
+			            <img class="img-data" :src="baseUrl+item">
+			            <img class="position-img" src="@/images/basicsModules/icon_ssp_closure.png" @click="delImg(index)">
+			        </view>
+			        <img class="add-button" src="@/images/basicsModules/icon_07.png" @click="selectImage" v-if="imgList.length<5">
+			    </view>
+			</view>
+		</view>
+
+		<view class="sub_btn" @click="submitForm()">提交</view>
+	</view>
+</template>
+
+<script>
+    import {gasApplyYjsAdd } from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				form:{
+					rejectionApplyRemark:'',
+					rejectionApplyImg:'',
+
+				},
+				imgList:[],
+				item:{},//从列表传过来的值
+				item2:{},//从列表传过来的值
+            }
+        },
+        onLoad(option) {
+			this.item=JSON.parse(decodeURIComponent(option.item));
+			this.item2=JSON.parse(decodeURIComponent(option.item2));
+        },
+        onShow(){
+        },
+
+        methods: {
+			// 图片上传
+			selectImage(index) {
+			    let self = this;
+			    if(self.imgList.length>4){
+			        uni.showToast({
+			            title: '最多上传5张图片',
+			            icon:"none",
+			            mask:true,
+			            duration: 2000
+			        });
+			        return
+			    }
+			    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.imgList.push(res.data.url);
+
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+			        },
+			        fail: err => {},
+			        complete: () => {
+			            uni.hideLoading()
+			        }
+			    });
+			},
+			//删除图片
+			delImg(index){
+			    this.imgList.splice(index,1);
+			},
+			//提交
+			async submitForm(){
+				let _this = this;
+				if(!_this.form.rejectionApplyRemark){
+					uni.showToast({
+						title: '请输入拒收原因',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				_this.form.carCode=_this.item2.car.carCode
+				_this.form.carCodeId =_this.item2.car.id
+				_this.form.phone=_this.item2.user.phone
+				_this.form.driverName=_this.item2.user.userName
+				_this.form.driverId=_this.item2.user.id
+
+				_this.form.airStatus=1;
+				_this.form.taskId=_this.item.taskId;
+				_this.form.taskDetailId=_this.item.id;
+
+				_this.form.rejectionApplyImg=_this.imgList.join(',')
+
+				const {data} = await gasApplyYjsAdd(_this.form);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				    setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_student/gasApply/gasApply'
+				        });
+				    },2000);
+				}
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+				>input{
+					width 490rpx;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+				}
+			}
+			.up-img-box{
+			    display flex
+			    margin:34rpx 26rpx;
+			    .title-view{
+			        width:160rpx;
+			        line-height:80rpx;
+			        font-size: 30rpx;
+			        color:#333;
+			    }
+			    .img-max-box{
+			        width:510rpx;
+			        .img-box{
+			            display inline-block
+			            height:146rpx;
+			            width:146rpx;
+			            position relative
+			            margin:0 20rpx 20rpx 0;
+			            .img-data{
+			                height:146rpx;
+			                width:146rpx;
+			            }
+			            .position-img{
+			                position absolute
+			                right:0;
+			                top:0;
+			                width:36rpx;
+			                height:36rpx;
+			            }
+			        }
+			        .add-button{
+			            display inline-block
+			            height:150rpx;
+			            width:150rpx;
+			        }
+			    }
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 167 - 0
pages_student/gasBottle/gasList/gasList.vue

@@ -0,0 +1,167 @@
+<!--气瓶列表-->
+<template>
+    <view id="gasRecycle">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="for-big-box" v-for="(item,index) in dataList" :key="index">
+		        <view class="for-time-p">{{item.location}}</view>
+		        <img class="for-back-img" src="@/images/basicsModules/for_min_bg.png">
+		        <view class="for-box" @click="goInfo(item2)" v-for="(item2,index2) in item.airGoodsConfigRelationVo" :key="index2">
+		        	<view class="for-box_t">{{item2.airName}}-{{item2.configName}}</view>
+		        	<view class="for-box_b">
+						<img class="for-back-img" src="@/pages_student/images/icon_qpgl_syl.png">
+						<text>余量: {{item2.pressure==null?'':item2.pressure}}Mpa</text>
+						<img class="for-back-img" src="@/images/basicsModules/icon_wtzg_sj.png">
+						<text>最近使用时间: {{item2.useTimeApp==null?'':item2.useTimeApp}}</text>
+					</view>
+		        </view>
+		    </view>
+			<view class="get-null-box" v-if="noData">暂无更多数据</view>
+		</scroll-view>
+
+	</view>
+</template>
+
+<script>
+	import { gasList  } from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+					remark:'login',
+				},
+				userType:uni.getStorageSync('userType'),
+
+                dataList:[],
+				noData:false,
+            }
+        },
+        onLoad() {
+			 this.getList();
+        },
+        onShow() {
+
+        },
+		mounted(){
+
+
+		},
+        methods: {
+			goInfo(d){
+				uni.navigateTo({
+				    url:'/pages_student/gasList/gasListDetail?item='+encodeURIComponent(JSON.stringify(d))
+				});
+			},
+			//滚动加载事件
+			scrollGet(){
+			    this.getData.pageNum += 1;
+			    this.getList();
+			},
+			//获取列表数据
+				async getList(){
+				   let _this = this;
+
+				    const {data} = await gasList(_this.getData);
+				    if(data.code==200){
+						let res = data.rows;
+						if(res && res.length>0){
+							if(_this.getData.pageNum==1){
+								_this.dataList=res;
+							}else{
+								_this.dataList=_this.dataList.concat(res);
+							}
+						}else{
+							_this.noData=true;
+						}
+				    }
+				},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+     .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 margin-top: 20rpx;
+
+         .for-big-box:last-child{
+             margin-bottom:180rpx;
+         }
+         .for-big-box{
+             margin:0 20rpx 20rpx;
+             overflow hidden
+             border-bottom-left-radius :20rpx;
+             border-bottom-right-radius :20rpx;
+             .for-time-p{
+                 background #fff
+                 line-height:87rpx;
+                 font-size:30rpx;
+                 padding:0 22rpx;
+                 border-top-left-radius:20rpx;
+                 border-top-right-radius:20rpx;
+             }
+             .for-back-img{
+                 height:30rpx;
+                 width:710rpx;
+             }
+			.for-box{
+				overflow hidden;
+				background: #fff;
+
+				padding: 0 20rpx;
+				box-sizing: border-box;
+				.for-box_t{
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 28rpx;
+					margin: 28rpx 0 40rpx 0;
+				}
+				.for-box_b{
+					border-bottom: 1px solid #E0E0E0;
+					display: flex;
+					>img{
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 10rpx;
+					}
+					>text{
+						font-size: 22rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+						line-height: 26rpx;
+						margin-bottom: 20rpx;
+					}
+					>text:nth-of-type(1){
+						width: 190rpx;
+					}
+				}
+			}
+		 }
+		 /*暂无数据*/
+		 .get-null-box{
+			 height:100rpx;
+			 line-height:100rpx;
+			 color:#999;
+			 text-align center
+		 }
+     }
+	}
+</style>

+ 202 - 0
pages_student/gasBottle/gasList/gasListBinding.vue

@@ -0,0 +1,202 @@
+<!--气瓶列表-->
+<template>
+    <view id="gasRecycle">
+		<view class="title">{{item.airName}}-{{item.configName}}</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>*</view>
+				<view>电子标签:</view>
+				<input v-model="form.newTag"   type="text" placeholder="请输入电子标签ID">
+				<img @click.stop="saoCode"  class="code_img" src="@/images/basicsModules/icon_aqjc_sm.png">
+			</view>
+		</view>
+		<view  class="sub_btn" @click="getBinding()">确认绑定</view>
+	</view>
+</template>
+
+<script>
+	import { gasTagBinding } from '@/api/apiDemo/index.js'
+    export default {
+        name: "gasRecycle",
+        data() {
+            return {
+				pageType:0,
+				form:{
+					id:'',
+					newTag:'',
+				},
+				item:{},
+            }
+        },
+        onLoad(option) {
+			this.item=JSON.parse(decodeURIComponent(option.item));
+			this.form.id=this.item.bottleStorageId;
+        },
+        onShow() {
+
+        },
+		mounted(){
+
+
+		},
+        methods: {
+			async getBinding(){
+				let _this=this;
+				const {data} = await gasTagBinding(this.form);
+				if(data.code==200){
+					let res = data.data;
+					if(data.code==200){
+						uni.showToast({
+							title: '绑定成功!',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						uni.redirectTo({
+						     url: '/pages_student/gasList/gasListDetail?item='+encodeURIComponent(JSON.stringify(this.item))
+						 });
+					}else{
+						_this.form.newTag='';
+						uni.showModal({
+									showCancel:false,
+									confirmColor:'#0183FA',
+							content: '该RFID已被绑定,请重新选择 RFID标签',
+							success: function (res) {
+								if (res.confirm) {
+									console.log('用户点击确定');
+								}
+							}
+						});
+					}
+				}
+			},
+			//调用摄像头
+			saoCode(){
+				let _this = this;
+			    uni.scanCode({
+			        onlyFromCamera: true,
+			        success: function (res) {
+						_this.form.newTag=res.result;
+						_this.getBinding();
+			        }
+			    });
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		.title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			line-height: 100rpx;
+			padding-left: 40rpx;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				height: 100rpx;
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				/* border-bottom: 1px solid #F5F5F5; */
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				.code_img{
+					width: 30rpx;
+					height: 28rpx;
+					margin-left: 26rpx;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+				.binding{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #0183FA;
+					line-height: 24rpx;
+					margin-left: 24rpx;
+				}
+
+
+			}
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+
+	 /* 按钮 */
+	 .sub_btn{
+	 	width: 650rpx;
+	 	height: 100rpx;
+	 	background: #0183FA;
+	 	border-radius: 20rpx;
+	 	font-size: 28rpx;
+	 	font-family: PingFang SC;
+	 	font-weight: 500;
+	 	color: #FFFFFF;
+	 	line-height: 100rpx;
+	 	text-align: center;
+	 	margin-left: 50rpx;
+	 	position: fixed;
+	 	bottom:30rpx;
+	 }
+	}
+</style>

+ 351 - 0
pages_student/gasBottle/gasList/gasListDetail.vue

@@ -0,0 +1,351 @@
+<!--气瓶列表-->
+<template>
+    <view id="gasRecycle">
+		<view class="title">{{specificationName.airName}}-{{specificationName.gasLevel}}</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>实验地点:</view>
+				<input v-model="form.location" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+				<view>编号:</view>
+				<input v-model="form.airNumber" disabled  type="text" >
+			</view>
+			<view class="register_li_min" v-if="form.electronicTag" style="border: none;">
+				<view>电子标签:</view>
+				<input v-model="form.electronicTag" disabled  type="text" >
+				<view class="binding" @click="binding()">更换</view>
+			</view>
+			<view class="register_li_min" v-if="!form.electronicTag" style="border: none;">
+				<view>电子标签:</view>
+				<input v-model="form.electronicTag" disabled  type="text" placeholder="暂未绑定电子标签">
+				<view class="binding" @click="binding()">去绑定</view>
+			</view>
+		</view>
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+			<view class="small_title" @click="handleClick('useRecord')">使用记录</view>
+		    <view class="register_li2" >
+		    	<viwe class="register_li2_min" @tap="useRecordInfo(item)" v-for="(item,index) in dataList">
+		    		<view class="register_li2_t">{{item.contacts}}</view>
+		    		<view class="register_li2_b">
+		    			<img src="@/pages_student/images/icon_qpgl_syl.png">
+		    			<view>使用量: {{item.amount}}Mpa</view>
+		    		</view>
+					<view class="register_li2_b2">
+						<img src="@/images/basicsModules/icon_wtzg_sj.png">
+						<view>使用时间: {{item.useTimeApp==null?'':item.useTimeApp}}-{{item.backTimeApp==null?'':item.backTimeApp}}</view>
+					</view>
+		    	</viwe>
+		    </view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==4">
+			<img class="for-back-img" src="@/pages_student/images/img_ysrygl_zwsj.png">
+			<view>暂无数据</view>
+		</view>
+		<view  class="sub_btn" @click="outStock()"> 申请出库</view>
+	</view>
+</template>
+
+<script>
+	import {gasDetail,gasDetailRecord } from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:10,
+					storageId:'',
+				},
+				form:{
+				},
+                dataList:[],
+				id:'',
+				item:{},
+				specificationName:{},
+            }
+        },
+        onLoad(option) {
+			this.item=JSON.parse(decodeURIComponent(option.item));
+			this.id=this.item.bottleStorageId;
+			this.getData.storageId=this.item.bottleStorageId;
+
+        },
+        onShow() {
+
+        },
+		mounted(){
+		  this.getInfo();
+		  this.getList();
+		},
+        methods: {
+
+			//滚动加载事件
+			scrollGet(){
+			    if(this.getData.getType){
+			        this.getData.pageNum += 1;
+			        this.getList();
+			    }
+			},
+			//使用记录详情
+			useRecordInfo(d){
+				uni.navigateTo({
+				    url:'/pages_student/gasList/gasUseDetail?item='+encodeURIComponent(JSON.stringify(d))
+				});
+			},
+			//标签绑定
+			binding(){
+				uni.navigateTo({
+				    url:'/pages_student/gasList/gasListBinding?item='+encodeURIComponent(JSON.stringify(this.item))
+				});
+			},
+			//出库申请
+			outStock(){
+				uni.navigateTo({
+				    url:'/pages_student/leaveConfirm/leaveConfirm?item='+encodeURIComponent(JSON.stringify(this.item))
+				});
+			},
+			async getInfo(){
+				let _this=this;
+				const {data} = await gasDetail({id:_this.id});
+				if(data.code==200){
+					let res = data.data;
+					_this.form=res;
+					_this.specificationName=JSON.parse(res.specificationName)
+				}
+			},
+
+			//获取列表数据
+			async getList(){
+				let _this = this;
+				const {data} = await gasDetailRecord(this.getData);
+				if(data.code==200){
+					let res=data.rows
+					_this.dataList=res
+					if(_this.dataList.length<=0){
+						_this.pageType=4
+					}
+				}
+			},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: auto;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		padding-bottom: 220rpx;
+		.empty{
+			text-align: center;
+			margin-top: 46rpx;
+			>img{
+				width: 336rpx;
+				height: 222rpx;
+				margin-left: 208rpx;
+			}
+			>view{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #E0E0E0;
+				line-height: 30rpx;
+				margin-top: 48rpx;
+			}
+		}
+		.title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			line-height: 100rpx;
+			padding-left: 40rpx;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				height: 100rpx;
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+				.binding{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #0183FA;
+					line-height: 24rpx;
+					margin-left: 24rpx;
+				}
+
+
+			}
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+     .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 margin-top: 20rpx;
+		 .small_title{
+		 	font-size: 30rpx;
+		 	font-family: PingFang SC;
+		 	font-weight: 500;
+		 	color: #333333;
+		 	line-height: 80rpx;
+		 	margin: 0 40rpx;
+		 	display: flex;
+		 	justify-content: space-between;
+		 	align-items: center;
+		 	>img{
+		 		width: 24rpx;
+		 		height: 24rpx;
+		 	}
+		 }
+     	.register_li2{
+			overflow: hidden
+     		background #fff;
+     		border-radius:20rpx;
+     		margin:0 20rpx 0;
+     		padding:0 20rpx;
+     		box-sizing: border-box;
+
+     		.register_li2_min{
+
+     			.register_li2_t{
+     				font-size: 28rpx;
+     				font-family: PingFang SC;
+     				font-weight: 500;
+     				color: #333333;
+     				line-height: 28rpx;
+     				margin-top: 28rpx;
+     			}
+     			.register_li2_b{
+     				display: flex;
+     				justify-content: flex-start;
+     				align-items: center;
+     				margin-top: 42rpx;
+     				padding-bottom: 28rpx;
+     				>img{
+     					width: 28rpx;
+     					height: 28rpx;
+     					margin-right: 10rpx;
+     				}
+     				>view{
+     					font-size: 26rpx;
+     					font-family: PingFang SC;
+     					font-weight: 500;
+     					color: #666666;
+     					line-height: 26rpx;
+     				}
+     				>view:nth-child(1){
+     					width: 200rpx;
+     				}
+     				>view:nth-child(2){
+     					flex: 1;
+     				}
+     			}
+				.register_li2_b2{
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					padding-bottom: 28rpx;
+					border-bottom: 1rpx solid #f5f5f5;
+					>img{
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 10rpx;
+					}
+					>view{
+						font-size: 26rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+						line-height: 26rpx;
+					}
+					>view:nth-child(1){
+						width: 200rpx;
+					}
+					>view:nth-child(2){
+						flex: 1;
+					}
+				}
+     		}
+
+     	}
+     }
+	 /* 按钮 */
+	 .sub_btn{
+	 	width: 650rpx;
+	 	height: 100rpx;
+	 	background: #0183FA;
+	 	border-radius: 20rpx;
+	 	font-size: 28rpx;
+	 	font-family: PingFang SC;
+	 	font-weight: 500;
+	 	color: #FFFFFF;
+	 	line-height: 100rpx;
+	 	text-align: center;
+	 	margin-left: 50rpx;
+	 	position: fixed;
+	 	bottom:30rpx;
+	 }
+	}
+</style>

+ 242 - 0
pages_student/gasBottle/gasList/gasUseDetail.vue

@@ -0,0 +1,242 @@
+<!--气瓶列表-->
+<template>
+    <view id="gasRecycle">
+		<view class="title">{{specificationName.airName}}-{{specificationName.gasLevel}}</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>实验地点:</view>
+				<input v-model="form.location" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<view>编号:</view>
+				<input v-model="form.storageVo.airNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>使用人:</view>
+				<input v-model="form.contacts" disabled  type="text" >
+			</view>
+			<!-- 使用时间 -->
+			<view class="register_li_min2">
+				<view>使用时间:</view>
+				<picker mode="date" disabled @change="startChange($event)">
+					<input class="picker-text" v-model="form.useTimeApp" disabled  type="text"  placeholder="开始时间">
+				</picker>
+				<view>-</view>
+				<picker mode="date" disabled @change="endChange($event)">
+					<input class="picker-text2" v-model="form.backTimeApp" disabled  type="text"  placeholder="结束时间">
+				</picker>
+			</view>
+			<view class="register_li_min">
+				<view>使用量:</view>
+				<view>{{form.amount+'Mpa'}}</view>
+			</view>
+			<view v-if="form.beforeUse" class="register_li_min">
+				<view>使用前气压:</view>
+				<view>{{form.beforeUse+'Mpa'}}</view>
+			</view>
+			<view v-if="form.beforeUsePic" class="meter_img" @click="lookItem(form.beforeUsePic)">
+				<view>气表照片:</view>
+				<img :src="baseUrl+form.beforeUsePic" >
+			</view>
+			<view v-if="form.afterUse" class="register_li_min">
+				<view>使用后气压:</view>
+				<view>{{form.afterUse+'Mpa'}}</view>
+			</view>
+			<view v-if="form.afterUsePic" class="meter_img" style="border:0;" @click="lookItem(form.afterUsePic)">
+				<view>气表照片:</view>
+				<img :src="baseUrl+form.afterUsePic" >
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { gasDetailRecordDetail } from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+				baseUrl:config.base_url,
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+				},
+				userType:uni.getStorageSync('userType'),
+				form:{
+					name:'C123(第一实验室)',
+				},
+                dataList:[],
+				item:{},
+				specificationName:{},
+            }
+        },
+        onLoad(option) {
+			this.item=JSON.parse(decodeURIComponent(option.item));
+
+        },
+        onShow() {
+
+        },
+		mounted(){
+		   this.getInfo();
+		},
+        methods: {
+			lookItem(item){
+				//查看图片
+				wx.previewImage({
+					urls: [config.base_url+item], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+			async getInfo(){
+				let _this=this;
+				const {data} = await gasDetailRecordDetail(_this.item.id);
+				if(data.code==200){
+					let res = data.data;
+					_this.form=res;
+					_this.specificationName=JSON.parse(res.storageVo.specificationName)
+				}
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: auto;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		padding-bottom: 220rpx;
+		.title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			line-height: 100rpx;
+			padding-left: 40rpx;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				>view:nth-child(2){
+					flex: 1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+
+			}
+			/* 时间 */
+			.register_li_min2{
+				margin:0 26rpx;
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+					margin-right: 46rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 240rpx;
+
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 240rpx;
+					text-align: right;
+				}
+			}
+
+			.meter_img{
+				margin:0 26rpx;
+				display flex;
+				justify-content: space-between;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				>img{
+					width: 150rpx;
+					height: 150rpx;
+					border-radius: 10rpx;
+					margin:42rpx 0 20rpx 0;
+				}
+			}
+		}
+	}
+</style>

+ 346 - 0
pages_student/gasBottle/gasManage/gasManage.vue

@@ -0,0 +1,346 @@
+<!-- 回收申请 -->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min" @click="handleClick('examination')">
+				<view>资格申请</view>
+				<view>{{zgCount}}</view>
+				<img src="@/images/basicsModules/icon_04.png">
+			</view>
+			<view class="register_li_min" @click="handleClick('gas')" style="border: none;">
+				<view>用气申请</view>
+				<view>{{yqCount}}</view>
+				<img src="@/images/basicsModules/icon_04.png">
+			</view>
+		</view>
+		<view v-if="dataList2.length>0" class="small_title" @click="handleClick('gasList')">气瓶信息<img src="@/images/basicsModules/icon_wdwg_gd.png"></view>
+		<view v-if="dataList2.length>0" class="register_li2" >
+			<viwe class="register_li2_min" @tap="goInfo2(item2)" v-for="(item2,index2) in dataList2" :key="index2">
+				<view class="register_li2_t">{{item2.airName}}-{{item2.configName}}</view>
+				<view class="register_li2_b">
+					<img src="@/pages_student/images/icon_qpgl_syl.png">
+					<view>余量: {{item2.pressure==null?'-':item2.pressure}}Mpa</view>
+					<img src="@/images/basicsModules/icon_wtzg_sj.png">
+					<view>最近使用时间: {{item2.useTimeApp==null?'-':item2.useTimeApp}}</view>
+				</view>
+			</viwe>
+		</view>
+		<view v-if="dataList.length>0" class="small_title" @click="handleClick('useRecord')">使用记录<img src="@/images/basicsModules/icon_wdwg_gd.png"></view>
+		<view v-if="dataList.length>0" class="register_li2">
+			<viwe class="register_li2_min" @tap="goInfo(item)" v-for="(item,index) in dataList" :key="index">
+				<view class="register_li2_t">{{item.airName}}-{{item.configName}}</view>
+				<view class="register_li2_b" style="border:none">
+					<img src="@/pages_student/images/icon_qpgl_syl.png">
+					<view>使用量: {{item.pressure==null?'-':item.pressure}}Mpa</view>
+				</view>
+				<view class="register_li2_b2" style="border-bottom: 1rpx solid #f5f5f5;">
+					<img src="@/images/basicsModules/icon_wtzg_sj.png">
+					<view>使用时间: {{item.useTimeApp==null?'-':item.useTimeApp}} - {{item.backTimeApp==null?'-':item.backTimeApp}}</view>
+				</view>
+			</viwe>
+		</view>
+		<view class="btn" v-if="userApplyNumberYq || userApplyNumberZg">
+			<view class="btn_l" @click="handleClick('gasApply')">气瓶申请</view>
+			<view class="btn_r" @click="handleClick('QRcode')">使用/归还</view>
+		</view>
+	</view>
+</template>
+
+<script>
+    import {useRecordList,listuseRecordByUserId,getUserApplyCount,useRegisterDetail } from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					name:'',
+				},
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:3,
+				},
+				dataList:[],
+				dataList2:[],
+				yqCount:0,
+				zgCount:0,
+				userApplyNumberYq:null,//大于0显示使用人,等于零显示规格
+				userApplyNumberZg:null,//大于0显示使用人,等于零显示规格
+				electronicTag:'',
+
+            }
+        },
+        onLoad(option) {
+			this.getCount();
+        },
+        onShow(){
+
+        },
+
+        methods: {
+			handleClick(doType) {
+				let _this=this;
+				if(doType=='examination'){//资格申请
+					uni.navigateTo({
+					    url:'/pages_student/examination/examination'
+					});
+				}else if(doType=='gas'){//用气申请
+					uni.navigateTo({
+					    url:'/pages_student/useGasApply/useGasApply'
+					});
+				}else if(doType=='audit'){//资格审核
+					uni.navigateTo({
+					    url:'/pages_student/aptitudeAudit/aptitudeAudit'
+					});
+				}else if(doType=='useRecord'){//使用记录
+					uni.navigateTo({
+					    url:'/pages_student/useRecord/useRecord'
+					});
+				}else if(doType=='gasApply'){//气瓶申请
+					uni.navigateTo({
+					    url:'/pages_student/gasApply/gasApply'
+					});
+				}else if(doType=='gasList'){//气瓶列表
+					uni.navigateTo({
+					    url:'/pages_student/gasList/gasList'
+					});
+				}else if(doType=='QRcode'){//
+					uni.scanCode({
+						onlyFromCamera: true,
+						success: function (res) {
+							_this.electronicTag=res.result
+							_this.getInfo()
+						}
+					});
+
+				}
+
+
+			},
+			//使用记录跳转详情
+			goInfo(d){
+				uni.navigateTo({
+				    url:'/pages_student/useRecord/useRecordDetail?item='+encodeURIComponent(JSON.stringify(d))
+				});
+			},
+			//气瓶信息跳转详情
+			goInfo2(d){
+				uni.navigateTo({
+				    url:'/pages_student/gasList/gasListDetail?item='+encodeURIComponent(JSON.stringify(d))
+				});
+			},
+			async getInfo(){
+				let _this=this;
+				const {data} = await useRegisterDetail({electronicTag:_this.electronicTag});
+				if(data.code==200){
+					let res = data.data;
+					let userId=uni.getStorageSync('userId');
+
+					if(res.currentStatus==4 && res.currentUserId==userId){
+						uni.navigateTo({
+						    url:'/pages_student/useRegister/giveRegister?code='+_this.electronicTag
+						});
+					}else{
+						uni.navigateTo({
+						    url:'/pages_student/useRegister/useRegister?code='+_this.electronicTag
+						});
+					}
+				}
+			},
+
+			//获取使用记录列表
+			async getList(){
+				let _this = this;
+				const {data} = await useRecordList(_this.getData)
+				if(data.code==200){
+					let res=data.rows
+					_this.dataList=res
+				}
+			},
+			//获取气瓶信息列表
+			async getList2(){
+				let _this = this;
+				const {data} = await listuseRecordByUserId(_this.getData)
+				if(data.code==200){
+					let res=data.rows
+					_this.dataList2=res
+				}
+			},
+			//获取数量
+			async getCount(){
+				let _this = this;
+				const {data} = await getUserApplyCount()
+				if(data.code==200){
+					let res=data.data
+					_this.yqCount=res.yqCount;
+					_this.zgCount=res.zgCount;
+					_this.userApplyNumberYq=res.userApplyNumberYq;
+					_this.userApplyNumberZg=res.userApplyNumberZg;
+				}
+			},
+
+        },
+		mounted() {
+			this.getList();
+			this.getList2();
+
+		}
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+				}
+				view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height:100rpx;
+				}
+				view:nth-child(2){
+					flex:1;
+					color: #0183FA;
+					text-align: right;
+					margin-right: 38rpx;
+				}
+				>img{
+					width: 12rpx;
+					height: 24rpx;
+				}
+			}
+		}
+		.small_title{
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #999999;
+			line-height: 100rpx;
+			margin: 0 40rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			>img{
+				width: 24rpx;
+				height: 24rpx;
+			}
+		}
+
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:0 20rpx 0;
+			padding:0 20rpx;
+			box-sizing: border-box;
+			.register_li2_min{
+
+				.register_li2_t{
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 28rpx;
+					margin-top: 28rpx;
+				}
+				.register_li2_b{
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					margin-top: 42rpx;
+					padding-bottom: 28rpx;
+					border-bottom: 1rpx solid #f5f5f5;
+					>img{
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 10rpx;
+					}
+					>view{
+						font-size: 24rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+						line-height: 24rpx;
+					}
+					>view:nth-of-type(1){
+						width: 230rpx;
+					}
+					>view:nth-child(2){
+					}
+				}
+				.register_li2_b2{
+					display: flex;
+					justify-content: flex-start;
+					align-items: center;
+					padding-bottom: 28rpx;
+
+					>img{
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 10rpx;
+					}
+					>view{
+						font-size: 24rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+						line-height: 26rpx;
+					}
+					>view:nth-child(1){
+						width: 200rpx;
+					}
+					>view:nth-child(2){
+						flex: 1;
+					}
+				}
+			}
+
+		}
+		/* 按钮 */
+		.btn{
+			display: flex;
+			position: fixed;
+			bottom: 0;
+			.btn_l{
+				width: 250rpx;
+				background: #F28E26;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 100rpx;
+				text-align: center;
+			}
+			.btn_r{
+				width: 500rpx;
+				background: #0183FA;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 100rpx;
+				text-align: center;
+			}
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 211 - 0
pages_student/gasBottle/leaveConfirm/amendAir.vue

@@ -0,0 +1,211 @@
+<!--修改气压-->
+<template>
+    <view id="gasRecycle">
+		<view class="title">{{specificationName.airName}}-{{specificationName.gasLevel}}</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>实验地点:</view>
+				<input v-model="item.location" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<view>编号:</view>
+				<input v-model="item.airNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li2">
+			<view class="register_li_min">
+				<view></view>
+				<view>实际气压:</view>
+				<input v-model="form.afterEdit"   type="text" placeholder="请输入实际气压">
+			</view>
+		</view>
+		<view  class="sub_btn" @click="submitForm()">提交</view>
+	</view>
+</template>
+
+<script>
+	import { gasBottleError } from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+				baseUrl:config.base_url,
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+				},
+				userType:uni.getStorageSync('userType'),
+				form:{
+
+				},
+                dataList:[],
+				imgList:[],
+				item:{},
+				item2:{},
+				specificationName:{},
+            }
+        },
+        onLoad(option) {
+			this.item=JSON.parse(decodeURIComponent(option.item));
+			this.item2=JSON.parse(decodeURIComponent(option.item2));
+			this.specificationName=JSON.parse(this.item.specificationName)
+        },
+        onShow() {
+
+        },
+		mounted(){
+
+
+		},
+        methods: {
+			//提交
+			async submitForm(){
+				let _this = this;
+				_this.form.storageId=_this.item.id
+				_this.form.location=_this.item.location
+				_this.form.locationId=_this.item.locationId
+				_this.form.beforeEdit=_this.item2.beforeUse
+				const {data} = await gasBottleError(_this.form);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '修改气压成功!',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				    setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_student/gasManage/gasManage'
+				        });
+				    },2000);
+				}
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: auto;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column;
+        overflow hidden;
+		padding-bottom: 400rpx;
+		.title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			line-height: 100rpx;
+			padding-left: 40rpx;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+			}
+
+		}
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin:36rpx 0 20rpx 280rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+
+
+	}
+</style>

+ 357 - 0
pages_student/gasBottle/leaveConfirm/leaveConfirm.vue

@@ -0,0 +1,357 @@
+<!--出库确认-->
+<template>
+    <view id="gasRecycle">
+		<view class="title">{{specificationName.airName}}-{{specificationName.gasLevel}}</view>
+		<view class="register_li" v-if="form3.isShow">
+			<view class="register_li_min">
+				<view>实际气压值:</view>
+				<view>{{form3.afterEdit+'Mpa'}}</view>
+			</view>
+			<view class="register_li_min">
+				<view>修改人:</view>
+				<input v-model="form3.createBy" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<view>修改时间:</view>
+				<input v-model="form3.opTime" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>实验地点:</view>
+				<input v-model="form.location" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<view>编号:</view>
+				<input v-model="form.airNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li" v-if="form2.contacts">
+			<view class="register_li_min">
+				<view>使用人:</view>
+				<input v-model="form2.contacts" disabled  type="text" >
+			</view>
+			<!-- 使用时间 -->
+			<view class="register_li_min2">
+				<view>使用时间:</view>
+				<picker mode="date" disabled @change="startChange($event)">
+					<input class="picker-text" v-model="form2.useTimeApp" disabled  type="text"  placeholder="开始时间">
+				</picker>
+				<view>-</view>
+				<picker mode="date" disabled @change="endChange($event)">
+					<input class="picker-text2" v-model="form2.backTimeApp" disabled  type="text"  placeholder="结束时间">
+				</picker>
+			</view>
+			<view class="register_li_min">
+				<view>使用量:</view>
+				<view>{{form2.amount+'Mpa'}}</view>
+			</view>
+			<view v-if="form2.beforeUse" class="register_li_min">
+				<view>使用前气压:</view>
+				<view>{{form2.beforeUse+'Mpa'}}</view>
+			</view>
+			<view v-if="form2.beforeUsePic" class="meter_img" :style="!form2.afterUse?'border:none;':''" @click="lookItem(form2.beforeUsePic)">
+				<view>气表照片:</view>
+				<img :src="baseUrl+form2.beforeUsePic" >
+			</view>
+			<view v-if="form2.afterUse" class="register_li_min">
+				<view>使用后气压:</view>
+				<view>{{form2.afterUse+'Mpa'}}</view>
+			</view>
+			<view v-if="form2.afterUsePic" class="meter_img" style="border:0;" @click="lookItem(form2.afterUsePic)">
+				<view>气表照片:</view>
+				<img :src="baseUrl+form2.afterUsePic" >
+			</view>
+		</view>
+		<view  class="sub_btn2" @click="barometer()">气压有误</view>
+		<view  class="sub_btn" @click="submitForm()">确认出库</view>
+	</view>
+</template>
+<script>
+	import { gasDetail,gasDetailRecord,gasBottleErrorList,gasStorageOut } from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+				baseUrl:config.base_url,
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:1,
+					storageId:'',
+				},
+				form:{},
+				form2:{},
+				form3:{
+					opTime:'',
+				},
+                dataList:[],
+				imgList:[],
+				item:{},
+				specificationName:null,
+            }
+        },
+        onLoad(option) {
+        	this.item=JSON.parse(decodeURIComponent(option.item));
+			this.getData.storageId=this.item.id
+        },
+        onShow() {
+
+        },
+		mounted(){
+		  this.getInfo();
+		  this.getList();
+		  this.getList2();
+		},
+        methods: {
+			lookItem(item){
+				//查看图片
+				wx.previewImage({
+					urls: [config.base_url+item], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+			 //判断两个日期的大小
+			compareDate (d1, d2) {
+				let reg = new RegExp('-', 'g')
+				if(((new Date(d1.replace(reg, '/'))) > (new Date(d2.replace(reg, '/'))))){
+					return true;
+				}else{
+					return false;
+				}
+			},
+			//气压有误
+			barometer(){
+				uni.navigateTo({
+				    url:'/pages_student/leaveConfirm/amendAir?item='+encodeURIComponent(JSON.stringify(this.form))+'&item2='+encodeURIComponent(JSON.stringify(this.form2))
+				});
+			},
+			async getInfo(){
+				let _this=this;
+				const {data} = await gasDetail({id:_this.item.id});
+				if(data.code==200){
+					let res = data.data;
+					_this.form=res;
+					_this.specificationName=JSON.parse(res.specificationName)
+				}
+			},
+			//获取列表数据
+			async getList(){
+				let _this = this;
+				const {data} = await gasDetailRecord(this.getData);
+				if(data.code==200){
+					let res=data.rows
+					if(res){
+						_this.form2=res[0]
+					}
+				}
+			},
+			//获取气压修改列表数据
+			async getList2(){
+				let _this = this;
+				const {data} = await gasBottleErrorList(this.getData);
+				if(data.code==200){
+					let res=data.rows
+					if(res){
+						_this.form3=res[0]
+
+						_this.form3.isShow=_this.compareDate(_this.form3.opTime,_this.form2.createTime)
+
+					}
+				}
+			},
+			//提交
+			async submitForm(){
+				let _this = this;
+				let obj={
+					storageId:_this.item.id,
+				}
+				const {data} = await gasStorageOut(obj);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '出库成功!',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				    setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_student/gasManage/gasManage'
+				        });
+				    },2000);
+				}
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: auto;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		padding-bottom: 300rpx;
+		.title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			line-height: 100rpx;
+			padding-left: 40rpx;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				>view:nth-child(2){
+					flex: 1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+
+			}
+			/* 时间 */
+			.register_li_min2{
+				margin:0 26rpx;
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+					margin-right: 46rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 240rpx;
+
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 240rpx;
+					text-align: right;
+				}
+			}
+
+			.meter_img{
+				margin:0 26rpx;
+				display flex;
+				justify-content: space-between;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				>img{
+					width: 150rpx;
+					height: 150rpx;
+					border-radius: 10rpx;
+					margin:42rpx 0 20rpx 0;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+		.sub_btn2{
+			width: 650rpx;
+			height: 100rpx;
+			border: 2rpx solid #0072DB;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #0183FA;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:158rpx;
+			z-index: 1000;
+		}
+
+	}
+</style>

+ 200 - 0
pages_student/gasBottle/useGasApply/useGasApply.vue

@@ -0,0 +1,200 @@
+<!--用气申请-->
+<template>
+    <view id="transportPerson">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="list">
+				<view class="list_li" v-for="(item,index) in  dataList" @click="goInfo(item)">
+					<img class="for-back-img" src="@/pages_student/images/icon_yqsq_sys.png">
+					<text class="list_li_text">{{item.room}}</text>
+					<text  :class="item.remark=='1'?'list_li_text2':(item.remark=='0'?'colorA':(item.remark=='2'?'colorB':''))">{{item.remark=='1'?'有效期:'+item.startTime+'至'+item.endTime+'':(item.remark=='0'?'审核中':(item.remark=='2'?'审核驳回':''))}}</text>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==4">
+			<img class="for-back-img" src="@/pages_student/images/img_ysrygl_zwsj.png">
+			<view>暂无数据</view>
+		</view>
+		<view class="sub_btn" @click="subBtn()">申请用气</view>
+	</view>
+</template>
+
+<script>
+	import { useAgsApplyList } from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "transportPerson",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+				},
+                dataList:[],
+				status:0,
+            }
+        },
+        onLoad() {
+
+        },
+        onShow() {
+			//今天页面返回,清除存储气瓶信息
+			uni.removeStorageSync('listDetail');
+        },
+
+        methods: {
+			subBtn(){
+				uni.redirectTo({
+				    url:'/pages_student/useGasApply/useGasApplyAdd?status=0'
+				});
+			},
+			goInfo(d){
+				uni.redirectTo({
+				    url:'/pages_student/useGasApply/useGasApplyDetail?item='+encodeURIComponent(JSON.stringify(d))
+				});
+			},
+			//滚动加载事件
+			scrollGet(){
+			   this.getData.pageNum += 1;
+			   this.getList();
+			},
+			//查询实验室
+			async getList(){
+				const {data} = await useAgsApplyList(this.getData)
+				if(data.code == 200){
+					let _this=this;
+					let res=data.rows
+					if(_this.getData.pageNum==1){
+						_this.dataList=res;
+						if(res.length>0){
+							_this.pageType=0;
+						}else{
+							_this.pageType=4;
+						}
+					}else{
+						_this.dataList=_this.dataList.concat(res);
+					}
+				}
+			},
+
+        },
+		mounted(){
+			this.getList();
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #transportPerson {
+        height: auto;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		padding-bottom: 220rpx;
+        .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 .list{
+			 background: #FFFFFF;
+			 border-radius: 20rpx;
+			 margin: 20rpx 20rpx 0;
+			 padding: 0 20rpx;
+			 box-sizing: border-box;
+			 .list_li{
+				 height: 110rpx;
+				 display: flex;
+				 align-items: center;
+				 border-bottom:1px solid #f5f5f5;
+				 >img{
+					 width: 60rpx;
+					 height: 60rpx;
+				 }
+				 >text{
+					 font-size: 28rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #333333;
+					 line-height: 28rpx;
+					 display: inline-block;
+
+				 }
+				 .list_li_text{
+					 margin-left: 30rpx;
+					 width: 150rpx;
+					 font-size: 28rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #333333;
+					 line-height: 28rpx;
+				 }
+				 .list_li_text2{
+					 flex: 1;
+					 text-align: right;
+					 font-size: 24rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #999999;
+					 line-height: 24rpx;
+				 }
+				 .colorA{
+					 flex: 1;
+					 text-align: right;
+					 font-size: 24rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #FF8A00;
+					 line-height: 24rpx;
+				 }
+				 .colorB{
+					 flex: 1;
+					 text-align: right;
+					 font-size: 24rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #FF6F6F;
+					 line-height: 24rpx;
+				 }
+
+			 }
+		 }
+     }
+		.empty{
+			text-align: center;
+			margin-top: 316rpx;
+			>img{
+				width: 336rpx;
+				height: 222rpx;
+				margin-left: 208rpx;
+			}
+			>view{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #E0E0E0;
+				line-height: 30rpx;
+				margin-top: 48rpx;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+</style>

+ 612 - 0
pages_student/gasBottle/useGasApply/useGasApplyAdd.vue

@@ -0,0 +1,612 @@
+<!-- 用气申请-->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_sqr.png">
+				<view>申请人:</view>
+				<input v-model="form.applyUser" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_dhh.png">
+				<view>联系方式:</view>
+				<input v-model="form.phone"   type="text" >
+			</view>
+		</view>
+		<view class="register_li2">
+			<picker @change="bindPickerChange" :value="pickerIndex" :range="pickerArray">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>实验地点:</view>
+					<input v-model="form.location" disabled type="text" placeholder="请选择实验地点" placeholder-style="color:#999;">
+				</view>
+			</picker>
+			<picker @change="bindPickerChange2" :value="pickerIndex2" :range="pickerArray2">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>使用气体:</view>
+					<input v-model="form.useGasName" disabled type="text" placeholder="请选择使用气体" placeholder-style="color:#999;">
+				</view>
+			</picker>
+			<!-- 使用期限 -->
+			<view class="register_li_min2">
+				<view><text  style="color: #f00;margin-right: 10rpx;">*</text>使用期限:</view>
+				<picker mode="date" @change="startChange($event)">
+					<input class="picker-text" v-model="form.startTime" disabled  type="text"  placeholder="开始时间" placeholder-style="color:#999;">
+				</picker>
+				<view>-</view>
+				<picker mode="date" @change="endChange($event)">
+					<input class="picker-text2" v-model="form.endTime" disabled  type="text"  placeholder="结束时间" placeholder-style="color:#999;">
+				</picker>
+			</view>
+			<view class="register_li_min">
+			    <view>*</view>
+				<view>气体用途:</view>
+				<input v-model="form.gasUse"   type="text"  placeholder="请输入气体用途" placeholder-style="color:#999;">
+			</view>
+			<view class="register_li_min">
+			    <view>*</view>
+				<view>安全措施:</view>
+				<input v-model="form.safetyPrecautions"   type="text"  placeholder="请输入主要安全管理措施" placeholder-style="color:#999;">
+			</view>
+			<view  class="issue_li" style="border-bottom:0;">
+				<view>*</view>
+				<view>用气申请表:</view>
+				<view @click="selectImage">
+					<img :src="baseUrl+form.applyCertificate">
+					<text>+上传图片</text>
+				</view>
+			</view>
+		</view>
+
+		<view v-if="listType==0" class="sub_btn" @click="submitForm()">提交</view>
+		<view v-if="listType==2" class="sub_btn">重新申请</view>
+	</view>
+</template>
+
+<script>
+    import {labList,getLoginUser,useAgsApplyAdd,useAgsApplyDetail,useAgsApplyAmend,qualificationVerify,googsList} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				listType:0,
+				form:{
+					applyUser:'',//申请人
+					applyUserid:'',//申请人id
+					phone:'',//	联系方式
+					location:'',//实验地点
+					useGasName:'',//气体名称
+					useGasId:'',//气体名称Id
+					subjectId:'',//实验地点Id
+					startTime:'',//期限开始
+					endTime:'',//期限结束
+					gasUse:'',//气体用途
+					safetyPrecautions:'',//安全措施
+					applyCertificate:'',//用气申请表
+				},
+				checkStatus:0,
+				pickerArray:[],
+				pickerArrayList:[],
+				pickerArray2:[],//气体名称
+				pickerArrayList2:[],//气体名称
+				status:null,//0添加1编辑
+				id:null,
+            }
+        },
+        onLoad(option) {
+			this.status=option.status;
+			this.id=option.id;
+
+        },
+        onShow(){
+
+        },
+        methods: {
+
+			//查询实验室
+			async labList(){
+				const {data} = await labList()
+				if(data.code == 200){
+					let _this=this;
+					let res=data.data
+					_this.pickerArrayList=res;
+					res.forEach(function(item){
+						_this.pickerArray.push(item.name);
+					})
+
+				}
+			},
+			//获取气体名称列表
+			async googsList(){
+			    let _this = this;
+			    const {data} = await googsList({id:this.id})
+			    if(data.code==200){
+					let _this=this;
+					let res=data.rows
+					_this.pickerArrayList2=res;
+					res.forEach(function(item){
+						_this.pickerArray2.push(item.goodsName);
+					})
+				}
+			},
+			//查询用户信息
+			async getLoginUser(){
+				const {data} = await getLoginUser()
+				if(data.code == 200){
+					let _this=this;
+					let res=data.data;
+					_this.form.applyUser=res.nickName;
+					_this.form.applyUserid=res.id;
+					_this.form.phone=res.phonenumber;
+				}
+			},
+			//选择气体名称
+			async bindPickerChange2(e){
+				let _this=this;
+				let index=e.target.value
+				//获取实验室名称
+				_this.form.useGasName=_this.pickerArray2[index]
+				//循环获取实验室id
+				_this.pickerArrayList2.forEach(function(item){
+					if(_this.pickerArray2[index]==item.goodsName){
+						_this.form.useGasId=item.id;
+					}
+				})
+			},
+			//选择实验室
+			async bindPickerChange(e){
+				let _this=this;
+				let index=e.target.value
+				//获取实验室名称
+				_this.form.location=_this.pickerArray[index]
+				//循环获取实验室id
+				_this.pickerArrayList.forEach(function(item){
+					if(_this.pickerArray[index]==item.name){
+						_this.form.subjectId=item.id;
+					}
+				})
+
+				//校验当前用户有乜有当前实验室使用 权限
+				const {data} = await qualificationVerify({subjectId:_this.form.subjectId})
+				if(data.code==200){
+					let res=data.data
+					if(res.count>0){//有资格
+
+					}else{//没资格
+						uni.showToast({
+							title:'申请用气资格前需要先申请对应实验地点的安全准人资格!',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						_this.form.location='';
+						_this.form.subjectId='';
+					}
+				}
+
+			},
+			//时间选中
+			startChange(e){
+				if(new Date(e.target.value).getTime()>=new Date(this.form.endTime).getTime()){
+					 uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}else{
+					this.form.startTime = e.target.value
+				}
+			},
+			endChange(e){
+				if(new Date(this.form.startTime).getTime()>=new Date(e.target.value).getTime()){
+					 uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}else{
+					this.form.endTime = e.target.value
+				}
+			},
+			// 图片上传
+			selectImage() {
+
+			    let self = this;
+			    wx.chooseImage({
+			        count: 1,
+			        sizeType: ["original", "compressed"],
+			        sourceType: ["album", "camera"],
+			        success: function(res) {
+			            let tempFilePaths = res.tempFilePaths[0];
+			            self.uploadImg(tempFilePaths);
+			        }
+			    });
+			},
+			async uploadImg(tempFilePaths){
+			    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.form.applyCertificate=res.data.url
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+			        },
+			        fail: err => {},
+			        complete: () => {
+			            uni.hideLoading()
+			        }
+			    });
+			},
+			//删除图片
+			delImg(index){
+			    this.newData.imgList.splice(index,1);
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await useAgsApplyDetail({id:this.id})
+			    if(data.code==200){
+					let res=data.data
+					_this.form=res.apply;
+
+
+				}
+			},
+
+			//提交
+			async submitForm(){
+				let _this = this;
+				if(!this.form.applyUser){
+					uni.showToast({
+						title: '请输入申请人',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.phone){
+					uni.showToast({
+						title: '请输入联系方式',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.location){
+					uni.showToast({
+						title: '请输入实验地点',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.startTime){
+					uni.showToast({
+						title: '请输入期限开始',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.endTime){
+					uni.showToast({
+						title: '请输入期限结束',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.gasUse){
+					uni.showToast({
+						title: '请输入气体用途',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.safetyPrecautions){
+					uni.showToast({
+						title: '请输入安全措施',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.applyCertificate){
+					uni.showToast({
+						title: '请输入用气申请表',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				_this.form.listDetail=_this.listDetailArr;
+				if(_this.status==0){//添加
+					const {data} = await useAgsApplyAdd(_this.form);
+					if(data.code == 200){
+					    uni.showToast({
+					        title: '提交成功',
+					        icon:"none",
+					        mask:true,
+					        duration: 2000
+					    });
+					    setTimeout(function(){
+					       uni.redirectTo({
+					            url: '/pages_student/useGasApply/useGasApply'
+					        });
+					    },2000);
+					}
+				}else if(_this.status==1){//编辑
+					const {data} = await useAgsApplyAmend(_this.form);
+					if(data.code == 200){
+					    uni.showToast({
+					        title: '提交成功',
+					        icon:"none",
+					        mask:true,
+					        duration: 2000
+					    });
+					    setTimeout(function(){
+					       uni.redirectTo({
+					            url: '/pages_student/useGasApply/useGasApply'
+					        });
+					    },2000);
+					}
+				}
+
+			},
+
+        },
+		mounted(){
+		   this.googsList()
+		   this.labList()
+		   this.getLoginUser()
+		   if(this.status==1){
+		   	this.getInfo();
+		   }
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+
+		}
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			/* 时间 */
+			.register_li_min2{
+				margin:0 26rpx;
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333;
+					line-height: 100rpx;
+					margin-right: 110rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 188rpx;
+
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+
+			.issue_li{
+				margin:34rpx 26rpx 0;
+
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+					display: inline-block;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333;
+					display: inline-block;
+				}
+				view:nth-child(3){
+					width: 668rpx;
+					height: 270rpx;
+					border: 1px solid #E0E0E0;
+					border-radius: 10rpx;
+					text-align: center;
+					margin-top: 34rpx;
+					position: relative;
+					>img{
+						width: 668rpx;
+						height: 270rpx;
+						position: absolute;
+						z-index: 10;
+					}
+					>text{
+						font-size: 24rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #999999;
+						line-height: 270rpx;
+						position: absolute;
+						left: 278rpx;
+						z-index: 20;
+
+					}
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 291 - 0
pages_student/gasBottle/useGasApply/useGasApplyDetail.vue

@@ -0,0 +1,291 @@
+<!-- 资质审核-->
+<template>
+    <view id="register">
+		<viwe v-if="status==0" class="tip">信息正在审核中,请耐心等待...</viwe>
+		<viwe v-if="status==2" class="reject">{{form.centerAuditStatus==2?'您提交的审核被驳回,驳回原因为:'+form.centerAuditCause:'您提交的审核被驳回,驳回原因为:'+form.leadAuditCause}}</viwe>
+
+		<view class="register_li">
+			<view class="register_li_min">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_sqr.png">
+				<view>申请人:</view>
+				<input v-model="form.applyUser" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<img class="icon_img" src="@/pages_student/images/icon_zgsq_dhh.png">
+				<view>联系方式:</view>
+				<input v-model="form.phone" disabled  type="text" >
+			</view>
+		</view>
+		<!-- <view class="register_li">
+			<view class="register_li_min" v-for="(item,index) in form.airBottlelist" style="border-bottom:0;" >
+				<view></view>
+				<view>{{item.airConstituents}}-{{item.parent}}({{item.specValue}}):</view>
+				<input v-model="item.bottleNumber" disabled  type="text" >
+			</view>
+		</view> -->
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>实验地点:</view>
+				<input v-model="form.location" disabled type="text" >
+			</view>
+			<view class="register_li_min">
+				<view></view>
+				<view>使用气体:</view>
+				<input v-model="form.useGasName" disabled type="text" >
+			</view>
+			<!-- 使用期限 -->
+			<view class="register_li_min2">
+				<view><text  style="color: #f00;margin-right: 10rpx;"></text>使用期限:</view>
+				<picker mode="date" disabled @change="startChange($event)">
+					<input class="picker-text" v-model="form.startTime" disabled  type="text"  placeholder="开始时间">
+				</picker>
+				<view>-</view>
+				<picker mode="date" disabled @change="endChange($event)">
+					<input class="picker-text2" v-model="form.endTime" disabled  type="text"  placeholder="结束时间">
+				</picker>
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>气体用途:</view>
+				<input v-model="form.gasUse" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>安全措施:</view>
+				<input v-model="form.safetyPrecautions" disabled  type="text" >
+			</view>
+			<view  class="issue_li" style="border-bottom:0;"  @click="lookItem(form.applyCertificate)">
+				<view></view>
+				<view>用气申请表:</view>
+				<img class="issue_img" :src="baseUrl+form.applyCertificate">
+			</view>
+		</view>
+
+		<view  class="sub_btn" v-if="status=='2'" @click="submitForm()">重新申请</view>
+	</view>
+</template>
+
+<script>
+    import {useAgsApplyDetail} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				form:{},
+				id:'',
+				status:null,
+            }
+        },
+        onLoad(option) {
+			if(decodeURIComponent(option.item)){
+				this.id=JSON.parse(decodeURIComponent(option.item)).id;
+				this.status=JSON.parse(decodeURIComponent(option.item)).remark;
+			}
+
+        },
+        onShow(){
+
+
+
+        },
+
+        methods: {
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await useAgsApplyDetail({id:this.id})
+			    if(data.code==200){
+					let res=data.data
+					_this.form=res.apply;
+					_this.form.airBottlelist=res.airBottlelist
+			    }
+			},
+			lookItem(item){
+				//查看图片
+				wx.previewImage({
+					urls: [config.base_url+item], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+			//重新提交
+			async submitForm(){
+				uni.navigateTo({
+				    url:'/pages_manage/useGasApply/useGasApplyAdd?status=1&id='+this.id
+				});
+			},
+        },
+		mounted() {
+			this.getInfo();
+		}
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		/* 审核中 */
+		.tip{
+			width: 750rpx;
+			background: rgba(255,144,0,0.2);
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FF9000;
+			line-height: 28rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+		/* 驳回 */
+		.reject{
+			width: 750rpx;
+			background: #F3DCDC;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #DC0000;
+			line-height: 36rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			/* 时间 */
+			.register_li_min2{
+				margin:0 26rpx;
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+					margin-right: 140rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 188rpx;
+
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 171 - 0
pages_student/gasBottle/useRecord/useRecord.vue

@@ -0,0 +1,171 @@
+<!--气瓶列表-->
+<template>
+    <view id="gasRecycle">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="for-big-box" >
+		        <view class="for-box" @click="goInfo(item)" v-for="(item,index) in dataList" :key="index">
+		        	<view class="for-box_t">{{item.airName}}-{{item.configName}}</view>
+		        	<view class="for-box_b">
+						<img class="for-back-img" src="@/pages_student/images/icon_qpgl_syl.png">
+						<text>使用量: {{item.pressure==null?'':item.pressure}}Mpa</text>
+					</view>
+					<view class="for-box_b2">
+						<img class="for-back-img" src="@/images/basicsModules/icon_wtzg_sj.png">
+						<view>使用时间: {{item.useTimeApp==null?'':item.useTimeApp}}-{{item.backTimeApp==null?'':item.backTimeApp}}</view>
+					</view>
+		        </view>
+		    </view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	import { useRecordList } from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+					isCg:0,
+					zgStatus:"",
+				    getType:true,
+				    nullDataType:true,
+				},
+				userType:uni.getStorageSync('userType'),
+
+                dataList:[],
+            }
+        },
+        onLoad() {
+			 this.getList();
+        },
+        onShow() {
+
+        },
+		mounted(){
+
+
+		},
+        methods: {
+
+			//滚动加载事件
+			scrollGet(){
+			    if(this.getData.getType){
+			        this.getData.pageNum += 1;
+			        this.getList();
+			    }
+			},
+			goInfo(d){
+				uni.navigateTo({
+				    url:'/pages_student/useRecord/useRecordDetail?item='+encodeURIComponent(JSON.stringify(d))
+				});
+			},
+			//获取列表
+			async getList(){
+				let _this = this;
+				const {data} = await useRecordList({id:this.id})
+				if(data.code==200){
+					let res=data.rows
+					_this.dataList=res
+				}
+			},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+     .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 margin-top: 20rpx;
+
+         .for-big-box:last-child{
+             margin-bottom:180rpx;
+         }
+         .for-big-box{
+             margin:0 20rpx 20rpx;
+             overflow hidden
+             border-bottom-left-radius :20rpx;
+             border-bottom-right-radius :20rpx;
+             .for-time-p{
+                 background #fff
+                 line-height:87rpx;
+                 font-size:30rpx;
+                 padding:0 22rpx;
+                 border-radius:20rpx;
+             }
+             .for-back-img{
+                 height:30rpx;
+                 width:710rpx;
+             }
+			.for-box{
+				overflow hidden;
+				background: #fff;
+				padding: 0 20rpx;
+				box-sizing: border-box;
+				.for-box_t{
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 28rpx;
+					margin: 28rpx 0 40rpx 0;
+				}
+				.for-box_b{
+					display: flex;
+					>img{
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 10rpx;
+					}
+					>text{
+						font-size: 26rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+						line-height: 26rpx;
+						margin-bottom: 20rpx;
+					}
+					>text:nth-of-type(1){
+						width: 190rpx;
+					}
+				}
+				.for-box_b2{
+					border-bottom: 1px solid #E0E0E0;
+					display: flex;
+					>img{
+						width: 28rpx;
+						height: 28rpx;
+						margin-right: 10rpx;
+					}
+					>view{
+						font-size: 26rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+						line-height: 26rpx;
+						margin-bottom: 20rpx;
+					}
+					>text:nth-of-type(1){
+						width: 190rpx;
+					}
+				}
+			}
+		 }
+     }
+	}
+</style>

+ 243 - 0
pages_student/gasBottle/useRecord/useRecordDetail.vue

@@ -0,0 +1,243 @@
+<!--使用详情-->
+<template>
+    <view id="gasRecycle">
+		<view class="title">{{form.storageVo.airName}}-{{form.storageVo.configName}}</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>实验地点:</view>
+				<input v-model="form.location" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<view>编号:</view>
+				<input v-model="form.storageVo.airNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>使用人:</view>
+				<input v-model="form.contacts" disabled  type="text" >
+			</view>
+			<!-- 使用时间 -->
+			<view class="register_li_min2">
+				<view>使用时间:</view>
+				<picker mode="date" disabled @change="startChange($event)">
+					<input class="picker-text" v-model="form.useTimeApp" disabled  type="text"  placeholder="开始时间">
+				</picker>
+				<view>-</view>
+				<picker mode="date" disabled @change="endChange($event)">
+					<input class="picker-text2" v-model="form.backTimeApp" disabled  type="text"  placeholder="结束时间">
+				</picker>
+			</view>
+			<view class="register_li_min">
+				<view>使用量:</view>
+				<view>{{form.amount+'Mpa'}}</view>
+			</view>
+			<view v-if="form.beforeUse" class="register_li_min">
+				<view>使用前气压:</view>
+				<view>{{form.beforeUse+'Mpa'}}</view>
+			</view>
+			<view v-if="form.beforeUsePic" class="meter_img" :style="!form.afterUse?'border:none;':''" @click="lookItem(form.beforeUsePic)">
+				<view>气表照片:</view>
+				<img :src="baseUrl+form.beforeUsePic" >
+			</view>
+			<view v-if="form.afterUse" class="register_li_min">
+				<view>使用后气压:</view>
+				<view>{{form.afterUse+'Mpa'}}</view>
+			</view>
+			<view v-if="form.afterUsePic" class="meter_img" style="border:0;" @click="lookItem(form.afterUsePic)">
+				<view>气表照片:</view>
+				<img :src="baseUrl+form.afterUsePic" >
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { useRecordDetail } from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+				baseUrl:config.base_url,
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+
+				},
+				form:{
+				},
+                dataList:[],
+				id:'',
+				status:null,
+            }
+        },
+        onLoad(option) {
+			if(decodeURIComponent(option.item)){
+				this.id=JSON.parse(decodeURIComponent(option.item)).id;
+				this.status=JSON.parse(decodeURIComponent(option.item)).remark;
+			}
+        },
+        onShow() {
+
+        },
+
+        methods: {
+			lookItem(item){
+				//查看图片
+				wx.previewImage({
+					urls: [config.base_url+item], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await useRecordDetail(this.id)
+			    if(data.code==200){
+					let res=data.data
+					_this.form=res;
+			    }
+			},
+        },
+		mounted(){
+			this.getInfo();
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: auto;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden;
+		.title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			line-height: 100rpx;
+			padding-left: 40rpx;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				>view:nth-child(2){
+					flex: 1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+
+			}
+			/* 时间 */
+			.register_li_min2{
+				margin:0 26rpx;
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+					margin-right: 46rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 240rpx;
+
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					width: 240rpx;
+					text-align: right;
+				}
+			}
+
+			.meter_img{
+				margin:0 26rpx;
+				display flex;
+				justify-content: space-between;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				>img{
+					width: 150rpx;
+					height: 150rpx;
+					border-radius: 10rpx;
+					margin:42rpx 0 20rpx 0;
+				}
+			}
+		}
+	}
+</style>

+ 352 - 0
pages_student/gasBottle/useRegister/giveRegister.vue

@@ -0,0 +1,352 @@
+<!--归还登记-->
+<template>
+    <view id="gasRecycle">
+		<view class="title">{{form.airName}}-{{form.configName}}</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>实验地点:</view>
+				<input v-model="form.location" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<view>编号:</view>
+				<input v-model="form.airNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li2" v-if="pageType==0 || pageType==1">
+			<view class="register_li_min">
+				<view>*</view>
+				<view>当前气压:</view>
+				<input v-model="form.afterUse"   type="text" >
+			</view>
+			<view class="up-img-box">
+				<view class="asterisk">*</view>
+			    <view class="title-view">气表图片:</view>
+			    <view class="img-max-box">
+			        <view class="img-box" v-for="(item,index) in imgList" :key="index">
+			            <img class="img-data" :src="baseUrl+item">
+			            <img class="position-img" src="@/images/basicsModules/icon_ssp_closure.png" @click="delImg(index)">
+			        </view>
+			        <img class="add-button" src="@/images/basicsModules/icon_07.png" @click="selectImage" v-if="imgList.length<1">
+			        <img class="add-button" src="@/pages_student/images/img_sydj_sltp.png" >
+			    </view>
+			</view>
+		</view>
+		<view  class="sub_btn" @click="submitForm()">确认归还</view>
+
+	</view>
+</template>
+
+<script>
+	import { useRegisterDetail,giveRegisterAdd } from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+				baseUrl:config.base_url,
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+					isCg:0,
+					zgStatus:"",
+				    getType:true,
+				    nullDataType:true,
+				},
+				form:{
+					afterUse:null,
+					afterUsePic:'',
+					storageId:'',
+				},
+                dataList:[],
+				imgList:[],
+				electronicTag:'',
+				specificationName:{},
+            }
+        },
+       onLoad(option) {
+       	this.electronicTag=option.code;
+       },
+        onShow() {
+
+        },
+		mounted(){
+			this.getInfo()
+		},
+        methods: {
+			// 图片上传
+			selectImage(index) {
+			    let self = this;
+			    if(self.imgList.length>1){
+			        uni.showToast({
+			            title: '最多上传1张图片',
+			            icon:"none",
+			            mask:true,
+			            duration: 2000
+			        });
+			        return
+			    }
+			    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.imgList.push(res.data.url);
+
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+			        },
+			        fail: err => {},
+			        complete: () => {
+			            uni.hideLoading()
+			        }
+			    });
+			},
+			//删除图片
+			delImg(index){
+			    this.imgList.splice(index,1);
+			},
+			async getInfo(){
+				let _this=this;
+				const {data} = await useRegisterDetail({electronicTag:_this.electronicTag});
+				if(data.code==200){
+					let res = data.data;
+					_this.form=res;
+					_this.specificationName=JSON.parse(res.specificationName)
+				}
+			},
+			//提交
+			async submitForm(){
+				let _this = this;
+				if(!_this.form.afterUse){
+					uni.showToast({
+						title: '请输入当前气压!',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(_this.imgList.length<=0){
+					uni.showToast({
+						title: '请选择气表图片!',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				_this.form.afterUse=Number( _this.form.afterUse)
+				_this.form.storageId=_this.form.id
+				_this.form.afterUsePic=_this.imgList.join(',')
+				const {data} = await giveRegisterAdd(_this.form);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				    setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_student/gasManage/gasManage'
+				        });
+				    },2000);
+				}
+
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: auto;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column;
+        overflow hidden;
+		padding-bottom: 220rpx;
+		.title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			line-height: 100rpx;
+			padding-left: 40rpx;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+			}
+
+		}
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+			}
+			/* 照片 */
+			.up-img-box{
+			    display flex
+			    margin:34rpx 26rpx;
+				.asterisk{
+					padding-top:30rpx;
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+			    .title-view{
+			        width:150rpx;
+			        line-height:80rpx;
+			        font-size: 30rpx;
+			        color:#333;
+			    }
+			    .img-max-box{
+			        width:480rpx;
+					display: flex;
+			        .img-box{
+			            display inline-block
+			            height:150rpx;
+			            width:150rpx;
+			            position relative
+			            margin:0 20rpx 20rpx 0;
+			            .img-data{
+			                height:150rpx;
+			                width:150rpx;
+			            }
+			            .position-img{
+			                position absolute
+			                right:0;
+			                top:0;
+			                width:36rpx;
+			                height:36rpx;
+			            }
+			        }
+			        .add-button{
+			            display inline-block
+			            height:150rpx;
+			            width:150rpx;
+						margin-right: 20rpx;
+			        }
+			    }
+			}
+
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+
+	}
+</style>

+ 455 - 0
pages_student/gasBottle/useRegister/useRegister.vue

@@ -0,0 +1,455 @@
+<!--使用登记-->
+<template>
+    <view id="gasRecycle">
+		<view class="title">{{form.airName}}-{{form.configName}}</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>实验地点:</view>
+				<input v-model="form.location" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<view>编号:</view>
+				<input v-model="form.airNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li2" v-if="pageType==0 || pageType==1">
+			<view class="register_li_min" v-if="pageType==0">
+				<view>*</view>
+				<view>当前压力:</view>
+				<input v-model="form.currentPressure" disabled  type="text" >
+			</view>
+			<view class="register_li_min" v-if="pageType==1">
+				<view>*</view>
+				<view>实际气压:</view>
+				<input v-model="form.beforeUse"  type="text" >
+			</view>
+			<view class="up-img-box">
+				<view class="asterisk">*</view>
+			    <view class="title-view">气表照片:</view>
+			    <view class="img-max-box">
+			        <view class="img-box" v-for="(item,index) in imgList" :key="index">
+			            <img class="img-data" :src="baseUrl+item">
+			            <img class="position-img" src="@/images/basicsModules/icon_ssp_closure.png" @click="delImg(index)">
+			        </view>
+			        <img class="add-button" src="@/images/basicsModules/icon_07.png" @click="selectImage" v-if="imgList.length<1">
+			        <img class="add-button" src="@/pages_student/images/img_sydj_sltp.png" >
+			    </view>
+			</view>
+		</view>
+		<view class="empty" v-if="pageType==2">
+			<img class="add-button" src="@/pages_student/images/icon_sydj_sqyqzg.png" >
+			<view>请您在申请用气资格后再使用气瓶</view>
+		</view>
+		<view class="empty" v-if="pageType==3">
+			<img class="add-button" src="@/pages_student/images/icon_xgzl_shz.png" >
+			<view>该气瓶正在使用中,请重新选择气瓶</view>
+		</view>
+		<view class="empty" v-if="pageType==4">
+			<img class="add-button" src="@/pages_student/images/icon_sydj_yubz.png" >
+			<view>气压余量不足,请使用其他气瓶</view>
+		</view>
+		<view v-if="pageType==0" class="sub_btn2" @click="handleClick('inconformity')">余量不符</view>
+		<view v-if="pageType==0" class="sub_btn" @click="submitForm(1)">确认使用</view>
+		<view v-if="pageType==1" class="sub_btn" @click="submitForm(2)">提交余量不符并使用</view>
+		<view v-if="pageType==2" class="sub_btn" @click="handleClick('useGasApply')">申请用气资格</view>
+		<view v-if="pageType==3" class="sub_btn" @click="handleClick('QRcode')">重新扫描</view>
+
+	</view>
+</template>
+
+<script>
+	import { useRegisterDetail,useRegisterAdd } from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+				baseUrl:config.base_url,
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+					isCg:0,
+					zgStatus:"",
+				    getType:true,
+				    nullDataType:true,
+				},
+				userType:uni.getStorageSync('userType'),
+				form:{
+
+				},
+                dataList:[],
+				imgList:[],
+				specificationName:{},
+				currentStatus:null,
+				electronicTag:'333',
+            }
+        },
+        onLoad(option) {
+               	this.electronicTag=option.code;
+               },
+        onShow() {
+
+        },
+		mounted(){
+		  this.getInfo()
+			/* uni.showModal({
+				showCancel:false,
+				confirmColor:'#0183FA',
+				content: '该气瓶最低安全气压值为1mPA,当前气压值即将达到安全值,请您使用气瓶中随时观察气压,避免发生风险。',
+				success: function (res) {
+					if (res.confirm) {
+						console.log('用户点击确定');
+					}
+				}
+			}); */
+		},
+        methods: {
+			//点击事件
+			handleClick(doType) {
+				let _this=this;
+			   if(doType=='inconformity'){//余量不符
+				 _this.pageType=1;
+			   }else if(doType=='QRcode'){//重新扫描
+				   uni.scanCode({
+				   	onlyFromCamera: true,
+				   	success: function (res) {
+				   		_this.electronicTag=res.result
+				   	}
+				   });
+
+			   }else if(doType=='useGasApply'){//申请用气资格
+				   uni.redirectTo({
+				   	 url:'/pages_student/useGasApply/useGasApplyAdd?status=0'
+				   })
+			   }
+			},
+
+			// 图片上传
+			selectImage(index) {
+			    let self = this;
+			    if(self.imgList.length>1){
+			        uni.showToast({
+			            title: '最多上传1张图片',
+			            icon:"none",
+			            mask:true,
+			            duration: 2000
+			        });
+			        return
+			    }
+			    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.imgList.push(res.data.url);
+
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+			        },
+			        fail: err => {},
+			        complete: () => {
+			            uni.hideLoading()
+			        }
+			    });
+			},
+			//删除图片
+			delImg(index){
+			    this.imgList.splice(index,1);
+			},
+			async getInfo(){
+				let _this=this;
+				const {data} = await useRegisterDetail({electronicTag:_this.electronicTag});
+				if(data.code==200){
+					let res = data.data;
+					_this.form=res;
+					_this.specificationName=JSON.parse(res.specificationName)
+					if(res.currentStatus==1){//正常状态
+						_this.pageType=0
+					}else if(res.currentStatus==2){//余量不足
+						_this.pageType=4
+					}else if(res.currentStatus==3){//用户没有用气资格
+						_this.pageType=2
+					}else if(res.currentStatus==4){//气瓶正在使用中
+						_this.pageType=3
+					}
+				}
+			},
+			//提交
+			async submitForm(type){
+				let _this = this;
+				if(_this.imgList.length<=0){
+					uni.showToast({
+						title: '请选择气表图片!',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				let obj={
+					bottleName:_this.form.airName,
+					beforeUse:_this.form.currentPressure,
+					beforeUsePic:_this.imgList.join(','),
+					isSurplus:0,
+					location:_this.form.location,
+					storageId:_this.form.id,
+				}
+				if(type==1){//确认使用
+					obj.isSurplus=0
+				}else if(type==2){//余量不符
+					obj.isSurplus=1
+					obj.beforeUse=_this.form.beforeUse
+				}
+
+				const {data} = await useRegisterAdd(obj);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				    setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_student/gasManage/gasManage'
+				        });
+				    },2000);
+				}
+
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: auto;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column;
+        overflow hidden;
+		padding-bottom: 220rpx;
+		.title{
+			width: 750rpx;
+			height: 100rpx;
+			background: #FFFFFF;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			line-height: 100rpx;
+			padding-left: 40rpx;
+		}
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+			}
+
+		}
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				.icon_img{
+					width: 30rpx;
+					height: 30rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+			}
+			/* 照片 */
+			.up-img-box{
+			    display flex
+			    margin:34rpx 26rpx;
+				.asterisk{
+					padding-top:30rpx;
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+			    .title-view{
+			        width:150rpx;
+			        line-height:80rpx;
+			        font-size: 30rpx;
+			        color:#333;
+			    }
+			    .img-max-box{
+			        width:480rpx;
+					display: flex;
+			        .img-box{
+			            display inline-block
+			            height:150rpx;
+			            width:150rpx;
+			            position relative
+			            margin:0 20rpx 20rpx 0;
+			            .img-data{
+			                height:150rpx;
+			                width:150rpx;
+			            }
+			            .position-img{
+			                position absolute
+			                right:0;
+			                top:0;
+			                width:36rpx;
+			                height:36rpx;
+			            }
+			        }
+			        .add-button{
+			            display inline-block
+			            height:150rpx;
+			            width:150rpx;
+						margin-right: 20rpx;
+			        }
+			    }
+			}
+
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+		.sub_btn2{
+			width: 650rpx;
+			height: 100rpx;
+			border: 2rpx solid #0072DB;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #0183FA;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:158rpx;
+			z-index: 1000;
+		}
+		/* 空 */
+		.empty{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+
+			>img{
+				width: 100rpx;
+				height: 100rpx;
+				margin-top: 124rpx;
+				margin-left: 300rpx;
+			}
+			>view{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 30rpx;
+				text-align: center;
+				margin-top: 42rpx;
+				padding-bottom: 106rpx;
+			}
+		}
+	}
+</style>

BIN
pages_student/images/icon_qpgl_syl.png


BIN
pages_student/images/icon_sqqp_sqys.png


BIN
pages_student/images/icon_sqxq_jsyy.png


BIN
pages_student/images/icon_sydj_sqyqzg.png


BIN
pages_student/images/icon_sydj_yubz.png


BIN
pages_student/images/icon_xgzl_shz.png


BIN
pages_student/images/icon_yqsq_sys.png


BIN
pages_student/images/icon_ysclgl_cl.png


BIN
pages_student/images/icon_zgsh_sysmph.png


BIN
pages_student/images/icon_zgsq_dhh.png


BIN
pages_student/images/icon_zgsq_j.png


BIN
pages_student/images/icon_zgsq_jian.png


BIN
pages_student/images/icon_zgsq_sqr.png


BIN
pages_student/images/img_gysglpt_bg.png


BIN
pages_student/images/img_sydj_sltp.png


BIN
pages_student/images/img_ysrygl_zwsj.png


+ 279 - 0
pages_supplier/backlogManage/backlogManage.vue

@@ -0,0 +1,279 @@
+<!--待办清单-->
+<template>
+    <view id="gasRecycle">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="for-big-box" v-for="(item,index) in dataList" :key="index">
+		        <view class="for-time-p">{{item.createTimeApp}}</view>
+		        <img class="for-back-img" src="@/pages_supplier/images/Version2.2/for_min_bg.png">
+				<!-- 供气 -->
+		        <view class="for-box" @click="goInfo(item2)" v-for="(item2,index2) in item.taskVOList" :key="index2">
+		        	<view class="for-title-box">
+		        		<view class="viewColor1">供气</view>
+						<view><text v-for="(item3,index3) in item2.detailListVO" :key="index3" v-if="index3<2">{{item3.airName}}-{{item3.configName}}*{{item3.bottleNumber}}<text>{{index3<1?' ':'...'}}</text></text></view>
+
+		        	</view>
+		        	<view class="for-address-box">
+		        		<img src="@/pages_supplier/images/Version2.2/icon_wtzg_sj.png">
+		        		<view>{{item2.createTime}}</view>
+		        	</view>
+		        	<view class="for-time-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_xx.png">
+		        		<view>{{item2.campus}}-{{item2.building}}-{{item2.room}}</view>
+		        	</view>
+		        </view>
+				<!-- 回收 -->
+				<view class="for-box" @click="goInfo(item4)" v-for="(item4,index4) in item.bottleStorageOutVOList" :key="index4">
+					<view class="for-title-box">
+						<view class="viewColor3">回收</view>
+						<view><text v-for="(item5,index5) in item4.detailListVO" :key="index5" v-if="index5<2">{{item5.airName}}-{{item5.configName}}<text>{{index5<1?' ':'...'}}</text></text></view>
+
+					</view>
+					<view class="for-address-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_sj.png">
+						<view>{{item4.createTime}}</view>
+					</view>
+					<view class="for-time-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_xx.png">
+						<view>{{item4.campus}}-{{item4.building}}-{{item4.room}}</view>
+					</view>
+				</view>
+				<!-- 问题 -->
+				<view class="for-box" @click="goInfo(item6)" v-for="(item6,index6) in item.bottleStorageVOList" :key="index6">
+					<view class="for-title-box">
+						<view class="viewColor2">问题</view>
+						<view><text v-for="(item7,index7) in item6.detailListVO" :key="index7" v-if="index7<2">{{item7.airName}}-{{item7.configName}}<text>{{index7<1?' ':'...'}}</text></text></view>
+
+					</view>
+					<view class="for-address-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_sj.png">
+						<view>{{item6.createTime}}</view>
+					</view>
+					<view class="for-time-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_xx.png">
+
+						<view>{{item6.campus}}-{{item6.building}}-{{item6.room}}</view>
+					</view>
+				</view>
+		    </view>
+			<view class="get-null-box" v-if="noData">暂无更多数据</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	import { supplierBacklogList } from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+				},
+				userType:uni.getStorageSync('userType'),
+				pageType:0,
+				curTab:0,
+				tabText:['待处理','已处理',],
+                dataList:[],
+				noData:false,
+            }
+        },
+        onLoad() {
+        },
+        onShow() {
+
+        },
+		mounted(){
+			this.getList()
+		},
+        methods: {
+			goInfo(d){
+				if(d.remark=='gq'){
+					uni.redirectTo({
+					    url:'/pages_supplier/backlogManage/backlogManageAirDetail?item='+encodeURIComponent(JSON.stringify(d))
+					});
+				}else if(d.remark=='hs'){
+					uni.redirectTo({
+					    url:'/pages_supplier/backlogManage/backlogManageRecycleDetail?item='+encodeURIComponent(JSON.stringify(d))
+					});
+				}else if(d.remark=='wt'){
+					uni.redirectTo({
+					    url:'/pages_supplier/backlogManage/backlogManageIssueDetail?item='+encodeURIComponent(JSON.stringify(d))
+					});
+				}
+
+			},
+			//滚动加载事件
+			scrollGet(){
+			   this.getData.pageNum += 1;
+			   this.getList();
+			},
+			//获取列表数据
+			async getList(){
+				let _this = this;
+				const {data} = await supplierBacklogList(_this.getData);
+				if(data.code==200){
+					let _this = this;
+					let res=data.rows
+					if(res && res.length>0){
+						if(_this.getData.pageNum==1){
+							_this.dataList=res;
+						}else{
+							_this.dataList=_this.dataList.concat(res);
+						}
+					}else{
+						_this.noData=true;
+					}
+
+				}
+			},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column;
+        overflow hidden;
+
+     .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+
+         .for-big-box:last-child{
+             margin-bottom:180rpx;
+         }
+         .for-big-box{
+             margin:20rpx;
+             overflow hidden
+             border-bottom-left-radius :20rpx;
+             border-bottom-right-radius :20rpx;
+             .for-time-p{
+                 background #fff
+                 line-height:87rpx;
+                 font-size:30rpx;
+                 padding:0 22rpx;
+                 border-top-left-radius:20rpx;
+                 border-top-right-radius:20rpx;
+             }
+             .for-back-img{
+                 height:30rpx;
+                 width:710rpx;
+             }
+             .for-list-box:nth-child(3){
+                 .min-for-title-box{
+                     border:none;
+                 }
+             }
+
+            	.for-box{
+            		overflow hidden;
+					background: #fff;
+            		.for-title-box{
+            			display:flex;
+            			margin:0 26rpx 0;
+            			border-top:1rpx solid #dedede;
+            			padding-top:45rpx;
+            			view:nth-child(1){
+            				width:98rpx;
+            				line-height:38rpx;
+            				height:38rpx;
+            				border-radius:6rpx;
+            				font-size:20rpx;
+            				text-align center;
+            				margin-right:10rpx;
+            			}
+            			view:nth-child(2){
+            				flex:1;
+            				font-size:30rpx;
+            				color:#333;
+            				height:36rpx;
+            				lin-height:36rpx;
+            				margin-right:10rpx;
+            				display:block;
+            				overflow:hidden;
+            				text-overflow:ellipsis;
+            				white-space:nowrap;
+            			}
+            			view:nth-child(3){
+            				font-size:30rpx;
+            				color:#333;
+            				height:36rpx;
+            				lin-height:36rpx;
+            				color:#D80000;
+            			}
+            			.viewColor1{
+            			    background #ffe6e6;
+            			    color:#ff5555;
+            			}
+            			.viewColor2{
+            			    background #fef2dd;
+            			    color:#f6a71d;
+            			}
+            			.viewColor3{
+            			    background #e0f1e2;
+            			    color:#30a23d;
+            			}
+            			.viewColor4{
+            			    background #f2dddd;
+            			    color:#a51919;
+            			}
+            			.viewColor5{
+            			    background #e2f6f8;
+            			    color:#3ac3d3;
+            			}
+            			.viewColor6{
+            			    background #d9edfe;
+            			    color:#0183fa;
+            			}
+            		}
+            		.for-address-box{
+            			display:flex;
+            			margin:33rpx 26rpx 0;
+            			img{
+            				width:28rpx;
+            				height:28rpx;
+            				margin-right:20rpx;
+            			}
+            			view{
+            				font-size:28rpx;
+            				line-height:28rpx;
+            				color:#666;
+            			}
+            		}
+            		.for-time-box{
+            			display:flex;
+            			margin:26rpx 26rpx 0;
+            			padding-bottom:32rpx;
+            			img{
+            				width:28rpx;
+            				height:28rpx;
+            				margin-right:20rpx;
+            			}
+            			view{
+            				font-size:28rpx;
+            				line-height:28rpx;
+            				color:#666;
+            			}
+            		}
+            	}
+		 }
+		 /*暂无数据*/
+		 .get-null-box{
+		     height:100rpx;
+		     line-height:100rpx;
+		     color:#999;
+		     text-align center
+		 }
+     }
+	}
+</style>

+ 284 - 0
pages_supplier/backlogManage/backlogManageAirDetail.vue

@@ -0,0 +1,284 @@
+<!-- 回收申请-->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>实验地点:</view>
+				<input v-model="form.qpTask.location" disabled type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系人:</view>
+				<input v-model="form.qpTask.userName" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+			    <view></view>
+				<view>联系方式:</view>
+				<input v-model="form.qpTask.phone" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li" >
+			<view class="register_li_min" v-for="(item,index) in form.detailList">
+				<view></view>
+				<view>{{item.airName}}-{{item.configName}}:</view>
+				<input v-model="'数量:'+item.bottleNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<picker  @change="bindPickerPerson" :value="pickerIndex" :range="personList">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>运输人员:</view>
+					<input v-model="form.userName" disabled type="text" placeholder="请选择运输人员">
+				</view>
+			</picker>
+			<picker  @change="bindPickerCar" :value="pickerIndex" :range="carList">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>运输车辆:</view>
+					<input v-model="form.carCode" disabled type="text" placeholder="请选择运输车辆">
+				</view>
+			</picker>
+		</view>
+		<view  class="sub_btn" @click="submitForm()">配送</view>
+	</view>
+</template>
+
+<script>
+    import {supplierBacklogDetail,
+			supplierBacklogRecycleDetail,
+			supplierBacklogIssueDetail,
+			supplierBacklogPersonCar,
+			supplierBacklogDistribution,
+			} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				listType:0,//0回收申请 1供气配送申请 2货品问题  3回收
+				form:{},
+				id:'',//查询详情的id
+				distributionId:'',//配送的id
+				status:'',//gq hs wt
+				personList:[],
+				personListArr:[],
+				carList:[],
+				carListArr:[],
+				editForm:{
+					id:'',
+					remark:'1',
+					transportUser:{
+						id:'',
+						userName:'',
+					},
+					transportCar:{
+						id:'',
+						carCode:'',
+					},
+				},//配送
+            }
+        },
+       onLoad(option) {
+			this.id=JSON.parse(decodeURIComponent(option.item)).detailListVO[0].id;
+			this.distributionId=JSON.parse(decodeURIComponent(option.item)).id;
+			this.status=JSON.parse(decodeURIComponent(option.item)).remark;
+       },
+        onShow(){
+        },
+		mounted() {
+			this.getInfo();
+			this.getPersonCarList();
+		},
+        methods: {
+			//供气人员点击
+			bindPickerPerson(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.userName=this.personList[index]
+				_this.personListArr.forEach(function(item){
+					if(item.userName==_this.personList[index]){
+						_this.editForm.transportUser.id=item.id
+						_this.editForm.transportUser.userName=item.userName
+					}
+				})
+			},
+			//供气车辆点击
+			bindPickerCar(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.carCode=this.carList[index]
+				_this.carListArr.forEach(function(item){
+					if(item.carCode==_this.carList[index]){
+						_this.editForm.transportCar.id=item.id
+						_this.editForm.transportCar.carCode=item.carCode
+					}
+				})
+
+			},
+
+			async getPersonCarList(){
+			    let _this = this;
+				const {data} = await supplierBacklogPersonCar()
+				if(data.code==200){
+					let res=data.data
+					//车辆
+					_this.carListArr=res.carlist;
+					if(res.carlist){
+						res.carlist.forEach(function(item){
+							_this.carList.push(item.carCode)
+						})
+					}
+					//人员
+					_this.personListArr=res.userlist;
+					if(res.userlist){
+						res.userlist.forEach(function(item){
+							_this.personList.push(item.userName)
+						})
+					}
+				}
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+				const {data} = await supplierBacklogDetail({id:this.id})
+				if(data.code==200){
+					let res=data.data
+					_this.form=res;
+				}
+			},
+			//配送
+			async submitForm(){
+				let _this = this;
+				if(!this.form.userName){
+					uni.showToast({
+						title: '请选择运输人员',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.carCode){
+					uni.showToast({
+						title: '请选择运输车辆',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				_this.editForm.id=_this.distributionId;
+
+				const {data} = await supplierBacklogDistribution(_this.editForm);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				   setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_supplier/backlogManage/backlogManage'
+				        });
+				    },2000);
+				}
+
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 239 - 0
pages_supplier/backlogManage/backlogManageIssueDetail.vue

@@ -0,0 +1,239 @@
+<!-- 回收申请-->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>实验地点:</view>
+				<input v-model="form.bottleStorage.location" disabled type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系人:</view>
+				<input v-model="form.bottleStorage.refuseName" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系方式:</view>
+				<input v-model="form.bottleStorage.refusePhonen" disabled  type="text" >
+			</view>
+			<view  class="register_li_min">
+				<view></view>
+				<view>运输人员:</view>
+				<input v-model="form.bottleStorage.driverName" disabled  type="text" >
+			</view>
+			<view  class="register_li_min">
+				<view></view>
+				<view>拒收发起时间:</view>
+				<input v-model="form.bottleStorage.rejectionApplyTime" disabled  type="text" >
+			</view>
+			<view  class="register_li_min">
+				<view></view>
+				<view>问题描述:</view>
+				<input v-model="form.bottleStorage.rejectionApplyRemark" disabled  type="text" >
+			</view>
+			<view  class="issue_li" style="border-bottom:0;" @click="lookItem(form.bottleStorage.rejectionApplyImg)">
+				<view></view>
+				<view>问题照片:</view>
+				<view class="issue_img">
+					<img v-for="(item,index) in form.bottleStorage.rejectionApplyImg.split(',')"  :src="baseUrl+item">
+				</view>
+			</view>
+		</view>
+		<view class="register_li" v-if="listType==0">
+			<view class="register_li_min">
+				<view></view>
+				<view>{{specificationName.airName}}-{{specificationName.gasLevel}}:</view>
+				<input v-model="'数量:'+form.detailList.bottleNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view class="sub_btn" @click="submitForm()">同意拒收</view>
+	</view>
+</template>
+
+<script>
+    import {supplierBacklogDetail,
+			supplierBacklogRecycleDetail,
+			supplierBacklogIssueDetail,
+			supplierBacklogPersonCar,
+			supplierBacklogRejection,
+			} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				listType:0,//0回收申请 1供气配送申请 2货品问题  3回收
+				form:{
+
+				},
+				id:'',
+				status:'',//gq hs wt
+				personList:[],
+				personListArr:[],
+				carList:[],
+				carListArr:[],
+				editForm:{
+					id:'',
+					remark:'2',
+				},//配送
+				specificationName:{},//回收
+            }
+        },
+       onLoad(option) {
+			this.id=JSON.parse(decodeURIComponent(option.item)).id;
+			this.status=JSON.parse(decodeURIComponent(option.item)).remark;
+       },
+        onShow(){
+        },
+		mounted() {
+			this.getInfo();
+		},
+        methods: {
+			lookItem(item){
+				let arr=item.split(',')
+				let arr2=[]
+				arr.forEach(function(item2){
+					arr2.push(config.base_url+item2)
+				})
+				//查看图片
+				wx.previewImage({
+					urls: arr2, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+				const {data} = await supplierBacklogIssueDetail({id:this.id})
+				if(data.code==200){
+					let res=data.data
+					_this.form=res;
+					_this.specificationName=JSON.parse(res.detailList.applyDescribe)
+				}
+			},
+			//同意拒收
+			async submitForm(){
+				let _this = this;
+				_this.editForm.id=_this.id;
+				const {data} = await supplierBacklogRejection(_this.editForm);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				   setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_supplier/backlogManage/backlogManage'
+				        });
+				    },2000);
+				}
+
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			.issue_li{
+					margin:34rpx 26rpx 0;
+					display flex;
+					border-bottom: 1px solid #F5F5F5;
+					view:nth-child(1){
+						color:red;
+						line-height:28rpx;
+						margin-right: 12rpx;
+					}
+					view:nth-child(2){
+						width:220rpx;
+						font-size: 28rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #999999;
+					}
+					.issue_img{
+						display flex;
+						justify-content: flex-start;
+						flex-wrap: wrap;
+						>img{
+							width: 150rpx;
+							height: 150rpx;
+							border-radius: 10rpx;
+							margin-right: 20rpx;
+							margin-bottom: 20rpx
+						}
+					}
+				}
+			}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 299 - 0
pages_supplier/backlogManage/backlogManageRecycleDetail.vue

@@ -0,0 +1,299 @@
+<!-- 回收申请-->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>实验地点:</view>
+				<input v-model="form.qpTask.location" disabled type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系人:</view>
+				<input v-model="form.qpTask.userName" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系方式:</view>
+				<input v-model="form.qpTask.phone" disabled  type="text" >
+			</view>
+			<view class="register_li_min" style="border: none;">
+				<view></view>
+				<view>申请回收时间:</view>
+				<input v-model="form.bottleStorageOut.createTime" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>{{specificationName.airName}}-{{specificationName.gasLevel}}:</view>
+				<input v-model="'数量:'+form.taskDetail.bottleNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view  v-if="form.bottleStorageOut.outStatus==0" class="register_li">
+			<picker @change="bindPickerPerson" :value="pickerIndex" :range="personList">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>运输人员:</view>
+					<input v-model="form.userName" disabled type="text" placeholder="请选择运输人员">
+				</view>
+			</picker>
+			<picker   @change="bindPickerCar" :value="pickerIndex" :range="carList">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>运输车辆:</view>
+					<input v-model="form.carCode" disabled type="text" placeholder="请选择运输车辆">
+				</view>
+			</picker>
+		</view>
+		<view  v-if="form.bottleStorageOut.outStatus==0" class="sub_btn" @click="submitForm(1)">确认回收</view>
+		<view  v-if="form.bottleStorageOut.outStatus==1" class="sub_btn" @click="submitForm(2)">已回收</view>
+	</view>
+</template>
+
+<script>
+    import {supplierBacklogDetail,
+			supplierBacklogRecycleDetail,
+			supplierBacklogIssueDetail,
+			supplierBacklogPersonCar,
+			supplierBacklogStorageOut,
+			} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				listType:0,//0回收申请 1供气配送申请 2货品问题  3回收
+				form:{},
+				id:'',
+				status:'',//gq hs wt
+				personList:[],
+				personListArr:[],
+				carList:[],
+				carListArr:[],
+				editForm:{
+					id:'',
+					transportId:'',
+					transportName:'',
+					carId:'',
+					carNumber:'',
+					remark:'1',//确认回收1,已回收2
+					outStatus:'1',//确认回收1,已回收2
+				},//配送
+				specificationName:{},//回收
+            }
+        },
+       onLoad(option) {
+			this.id=JSON.parse(decodeURIComponent(option.item)).id;
+			this.status=JSON.parse(decodeURIComponent(option.item)).remark;
+       },
+        onShow(){
+        },
+		mounted() {
+			this.getInfo();
+			this.getPersonCarList();
+		},
+        methods: {
+			//供气人员点击
+			bindPickerPerson(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.userName=this.personList[index]
+				_this.editForm.transportName=this.personList[index]
+				_this.personListArr.forEach(function(item){
+					if(item.userName==_this.personList[index]){
+						_this.editForm.transportId=item.id
+					}
+				})
+			},
+			//供气车辆点击
+			bindPickerCar(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.carCode=this.carList[index]
+				_this.editForm.carNumber=this.carList[index]
+				_this.carListArr.forEach(function(item){
+					if(item.carCode==_this.carList[index]){
+						_this.editForm.carId=item.id
+					}
+				})
+
+			},
+
+			async getPersonCarList(){
+			    let _this = this;
+				const {data} = await supplierBacklogPersonCar()
+				if(data.code==200){
+					let res=data.data
+					//车辆
+					_this.carListArr=res.carlist;
+					if(res.carlist){
+						res.carlist.forEach(function(item){
+							_this.carList.push(item.carCode)
+						})
+					}
+					//人员
+					_this.personListArr=res.userlist;
+					if(res.userlist){
+						res.userlist.forEach(function(item){
+							_this.personList.push(item.userName)
+						})
+					}
+				}
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+				const {data} = await supplierBacklogRecycleDetail({id:this.id})
+				if(data.code==200){
+					let res=data.data
+					_this.form=res;
+					_this.specificationName=JSON.parse(res.taskDetail.applyDescribe)
+				}
+			},
+			//确认回收
+			async submitForm(type){
+				let _this = this;
+
+				if(type==1){
+					if(!this.form.userName){
+						uni.showToast({
+							title: '请选择运输人员',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						return
+					}
+					if(!this.form.carCode){
+						uni.showToast({
+							title: '请选择运输车辆',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						return
+					}
+					this.editForm.remark=1
+					this.editForm.outStatus=1
+				}else{
+					this.editForm.remark=2
+					this.editForm.outStatus=2
+					this.editForm.carId=null
+					this.editForm.carNumber=null
+					this.editForm.transportId=null
+					this.editForm.transportName=null
+
+				}
+				_this.editForm.id=_this.id;
+				const {data} = await supplierBacklogStorageOut(_this.editForm);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				   setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_supplier/backlogManage/backlogManage'
+				        });
+				    },2000);
+				}
+
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:310rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 173 - 0
pages_supplier/gasManage/gasManage.vue

@@ -0,0 +1,173 @@
+<!-- 气瓶管理 -->
+<template>
+    <view id="register">
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="register_li"  @click="goPage(item)" v-for="(item,index) in dataList" >
+		    	<view class="register_li_min" :style="index2===item.configVos.length-1?'border:none':''" v-for="(item2,index2) in item.configVos">
+		    		<view class="register_li_min_t">
+		    			<img class="right-img" src="@/pages_supplier/images/Version3.0/icon_qpgl_qp.png">
+		    			<text>{{item.airName}}</text>
+		    		</view>
+		    		<view class="register_li_min_b" >
+		    			<text >{{item2.configName}}</text>
+		    		</view>
+		    	</view>
+		    </view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==4">
+			<img class="for-back-img" src="@/pages_supplier/images/Version3.0/img_ysrygl_zwsj.png">
+			<view>暂无数据</view>
+		</view>
+
+		<view class="sub_btn" @click="subBtn()"><img class="right-img" src="@/pages_supplier/images/Version3.0/icon_gysqpgl_xzqp.png">新增气瓶</view>
+	</view>
+</template>
+
+<script>
+    import {bottleList} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				pageType:0,
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+				},
+				dataList:[],
+            }
+        },
+        onLoad(option) {
+
+        },
+        onShow(){
+
+
+
+        },
+
+        methods: {
+			//滚动加载事件
+			scrollGet(){
+			    this.getData.pageNum += 1;
+			    this.getList();
+			},
+			subBtn(){
+				uni.redirectTo({
+				    url:'/pages_supplier/gasManage/gasManageAdd?status=0'
+				});
+			},
+			goPage(d){
+				uni.redirectTo({
+				    url:'/pages_supplier/gasManage/gasManageDetail?status=1&id='+d.id
+				});
+			},
+			//获取列表数据
+			async getList(){
+			    let _this = this;
+			    const {data} = await bottleList(this.getData)
+			    if(data.code==200){
+					let res =data.rows
+					if(_this.getData.pageNum==1){
+						_this.dataList=res;
+						if(res.length>0){
+							_this.pageType=0;
+						}else{
+							_this.pageType=4;
+						}
+					}else{
+						_this.dataList=_this.dataList.concat(res);
+					}
+			    }
+			},
+        },
+		mounted() {
+			this.getList()
+		}
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:100%;
+        width:100%;
+        display flex;
+        flex-direction column;
+
+		.scroll-box{
+		// flex:1;
+		 overflow-y scroll;
+		 padding-top: 30rpx;
+		 padding-bottom: 180rpx;
+		 .register_li{
+			 overflow: hidden;
+		 	background #fff;
+		 	margin: 20rpx;
+		 	border-radius: 20rpx;
+		 	.register_li_min{
+		 		height: auto;
+		 		margin:20rpx;
+		 		border-bottom: 1px solid #F5F5F5;
+		 		.register_li_min_t{
+		 			display flex;
+		 			align-items center;
+		 			>img{
+		 				width: 34rpx;
+		 				height: 34rpx;
+		 			}
+		 			>text{
+		 				font-size: 28rpx;
+		 				font-family: PingFang SC;
+		 				font-weight: 500;
+		 				color: #333333;
+		 				line-height: 28rpx;
+		 				margin-left: 14rpx;
+		 			}
+		 		}
+		 		.register_li_min_b{
+		 			margin-top: 24rpx;
+		 			display: flex;
+		 			justify-content: flex-start;
+					flex-wrap: wrap;
+		 			margin-bottom: 20rpx;
+		 			>text{
+		 				font-size: 26rpx;
+		 				font-family: PingFang SC;
+		 				font-weight: 500;
+		 				color: #999999;
+		 				line-height: 26rpx;
+		 			}
+		 		}
+		 	}
+		 }
+		 }
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			z-index: 1000;
+			>img{
+				width: 28rpx;
+				height: 28rpx;
+				margin-right: 12rpx;
+			}
+		}
+
+	}
+
+</style>

+ 321 - 0
pages_supplier/gasManage/gasManageAdd.vue

@@ -0,0 +1,321 @@
+<!-- 回收申请 -->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<picker @change="bindPickerChange" :value="pickerIndex" :range="pickerArray">
+				<view class="register_li_min">
+					<view>*</view>
+					<view style="color: #333333;">气体名称:</view>
+					<input v-model="form.airName" disabled   type="text" placeholder="请选择气体名称">
+				</view>
+			</picker>
+			<view class="register_li_min" style="border: none;">
+			    <view style="margin-left: 12rpx;"></view>
+				<view style="color: #333333;">气体组分:</view>
+				<input v-model="form.airConstituents" maxlength="20"  type="text" placeholder="请输入气体组分">
+			</view>
+		</view>
+		<view class="small_title" v-if="specsList.length>0">气瓶规格</view>
+		<view class="register_li2" v-if="specsList.length>0">
+			<view v-for="(item,index) in specsList"  :class="item.checked==false?'register_li2_btn':'colorB'"  @tap="tabClickSpecs(item)" >{{item.configName}}</view>
+		</view>
+		<view  class="sub_btn" @click="submitForm()">提交</view>
+	</view>
+</template>
+
+<script>
+    import {googsList,googsInfoList,bottleAdd,bottleAmend,bottleDetail} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					id:'',
+					airName:'',
+					airConstituents:'',
+					configId:'',
+					configDtos:[],
+				},
+				pickerArray:[],
+				googsArray:[],
+				listType:0,//0回收申请 1配送申请 2货品问题
+				specsList:[],
+				status:null,//0添加1编辑
+				id:null,
+            }
+        },
+        onLoad(option) {
+			this.status=option.status;
+			this.id=option.id;
+        },
+        onShow(){
+
+        },
+        methods: {
+
+			//气瓶规格选中事件
+			tabClickSpecs(data){
+				this.specsList.forEach(function(item){
+					if(data.configId==item.configId){
+						item.checked=item.checked==true?false:true;
+					}
+				})
+			},
+			//气体选中事件
+			bindPickerChange(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.airName=this.pickerArray[index]
+				_this.googsArray.forEach(function(item){
+					if(_this.pickerArray[index]==item.goodsName){
+						_this.getGoogsInfoList(item.id)
+						_this.form.configId=item.id
+					}
+				})
+			},
+			//获取气体列表数据
+			async getGoogsList(){
+			    let _this = this;
+			    const {data} = await googsList()
+			    if(data.code==200){
+					let res=data.rows;
+					_this.googsArray=res;
+					if(res){
+						res.forEach(function(item){
+							_this.pickerArray.push(item.goodsName)
+						})
+					}
+			    }
+			},
+			//获取气体列表数据
+			async getGoogsInfoList(id){
+			    let _this = this;
+			    const {data} = await googsInfoList(id)
+			    if(data.code==200){
+					let res=data.data;
+					if(res){
+
+						if(_this.status==0){//添加
+							res.forEach(function(item){
+								_this.specsList.push({'configName':item.name,'configId':item.id,'checked':false,})
+							})
+						}else if(_this.status==1){//编辑
+							let arr=[];
+							//重新组装
+
+							res.forEach(function(item){
+								arr.push({'configName':item.name,'configId':item.id,'checked':false,})
+							})
+							//循环对比
+							arr.forEach(function(item){
+								_this.specsList.forEach(function(item2){
+									if(item.configId==item2.configId){
+										item.checked=true;
+										item.id=item2.id;
+									}
+								})
+							})
+							_this.specsList=arr;
+						}
+					}
+			    }
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await bottleDetail(this.id)
+			    if(data.code==200){
+					let res=data.data
+					this.form.id=res.id;
+					this.form.airName=res.airName;
+					this.form.airConstituents=res.airConstituents;
+					this.form.configId=res.configId;
+
+					if(res.configVos){
+						this.specsList=res.configVos;
+					}
+					_this.getGoogsInfoList(res.configId)
+			    }
+			},
+			//注册提交
+			async submitForm(){
+				let _this = this;
+				if(!this.form.airName){
+					uni.showToast({
+						title: '请选择气体名称!',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+
+
+				//提交的时候过滤空数据
+				let arr=[];
+
+				_this.specsList.forEach(function(item){
+					if(item.checked==true){
+						arr.push(item)
+					}
+				})
+				_this.form.configDtos=arr;
+				if(this.status==0){//新增
+					const {data} = await bottleAdd(_this.form);
+					if(data.code == 200){
+					    uni.showToast({
+					        title: '提交成功',
+					        icon:"none",
+					        mask:true,
+					        duration: 2000
+					    });
+					    setTimeout(function(){
+					       uni.redirectTo({
+					       	url: '/pages/supplierWorkbench',
+					       });
+					    },2000);
+					}
+				}else if(this.status==1){//编辑
+					const {data} = await bottleAmend(_this.form);
+					if(data.code == 200){
+					    uni.showToast({
+					        title: '提交成功',
+					        icon:"none",
+					        mask:true,
+					        duration: 2000
+					    });
+					    setTimeout(function(){
+					       uni.redirectTo({
+					       	url: '/pages/supplierWorkbench',
+					       });
+					    },2000);
+					}
+				}
+
+			},
+
+
+        },
+		mounted() {
+			this.getGoogsList()
+			if(this.status==1 || this.status==2){
+				this.getInfo();
+			}
+		}
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+			}
+		}
+		.small_title{
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #999999;
+			line-height: 100rpx;
+			margin: 0 40rpx;
+		}
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:0 20rpx 0;
+			padding:44rpx 0 20rpx 20rpx;
+			box-sizing: border-box;
+			display: flex;
+			flex-wrap: wrap;
+
+			.register_li2_btn{
+				width: 200rpx;
+				height: 60rpx;
+				background: #F5F5F5;
+				border-radius: 10rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+				line-height: 60rpx;
+				text-align: center;
+				margin-right: 22rpx;
+				margin-bottom: 24rpx;
+			}
+			.colorB{
+				width: 200rpx;
+				height: 60rpx;
+				background: #0183FA;
+				border-radius: 10rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 60rpx;
+				text-align: center;
+				margin-right: 22rpx;
+				margin-bottom: 24rpx;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 255 - 0
pages_supplier/gasManage/gasManageDetail.vue

@@ -0,0 +1,255 @@
+<!-- 气瓶详情-->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<picker @change="bindPickerChange" disabled :value="pickerIndex" :range="pickerArray">
+				<view class="register_li_min">
+					<view>*</view>
+					<view style="color: #333333;">气体名称:</view>
+					<input v-model="form.airName" disabled   type="text" placeholder="请选择气体名称">
+				</view>
+			</picker>
+			<view class="register_li_min" style="border: none;">
+			    <view></view>
+				<view style="color: #333333;">气体组分:</view>
+				<input v-model="form.airConstituents"  disabled maxlength="20" type="text" placeholder="请输入气体组分">
+			</view>
+		</view>
+		<view class="small_title" v-if="specsList.length>0">气瓶规格</view>
+		<view class="register_li2" v-if="specsList.length>0">
+			<view v-for="(item,index) in specsList"  :class="item.checked==false?'register_li2_btn':'colorB'"  >{{item.configName}}</view>
+		</view>
+		<view v-if="status==1" class="sub_btn" @click="submitForm()">编辑</view>
+	</view>
+</template>
+
+<script>
+    import {googsList,googsInfoList,bottleAdd,bottleAmend,bottleDetail} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					airName:'',
+					airConstituents:'',
+					configDtos:[],
+				},
+				pickerArray:[],
+				googsArray:[],
+				listType:0,//0回收申请 1配送申请 2货品问题
+				specsList:[],
+				status:null,//0添加1编辑2查看
+				id:null,
+            }
+        },
+        onLoad(option) {
+			this.status=option.status;
+			this.id=option.id;
+        },
+        onShow(){
+
+        },
+        methods: {
+
+			//气瓶规格选中事件
+			tabClickSpecs(data){
+				this.specsList.forEach(function(item){
+					if(data.configId==item.configId){
+						item.checked=item.checked==true?false:true;
+					}
+				})
+			},
+			//气体选中事件
+			bindPickerChange(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.airName=this.pickerArray[index]
+				_this.googsArray.forEach(function(item){
+					if(_this.pickerArray[index]==item.goodsName){
+						_this.getGoogsInfoList(item.id)
+					}
+				})
+			},
+			//获取气体列表数据
+			async getGoogsList(){
+			    let _this = this;
+			    const {data} = await googsList()
+			    if(data.code==200){
+					let res=data.rows;
+					_this.googsArray=res;
+					if(res){
+						res.forEach(function(item){
+							_this.pickerArray.push(item.goodsName)
+						})
+					}
+			    }
+			},
+			//获取气体列表数据
+			async getGoogsInfoList(id){
+			    let _this = this;
+			    const {data} = await googsInfoList(id)
+			    if(data.code==200){
+					let res=data.data;
+					if(res){
+						let arr=[];
+						//重新组装
+						res.forEach(function(item){
+							arr.push({'configName':item.name,'configId':item.id,'checked':false,})
+						})
+						//循环对比
+						arr.forEach(function(item){
+							_this.specsList.forEach(function(item2){
+								if(item.configId==item2.configId){
+									item.checked=true;
+								}
+							})
+						})
+						_this.specsList=arr;
+					}
+			    }
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await bottleDetail(this.id)
+			    if(data.code==200){
+					let res=data.data
+					this.form=res;
+					if(res.configVos){
+						this.specsList=res.configVos
+					}
+					_this.getGoogsInfoList(res.configId)
+			    }
+			},
+			//提交
+			async submitForm(){
+				uni.redirectTo({
+				    url:'/pages_supplier/gasManage/gasManageAdd?status=1&id='+this.id
+				});
+			},
+
+
+        },
+		mounted() {
+			this.getGoogsList()
+			if(this.status==1 || this.status==2){
+				this.getInfo();
+			}
+		}
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+			}
+		}
+		.small_title{
+			font-size: 30rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #999999;
+			line-height: 100rpx;
+			margin: 0 40rpx;
+		}
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:0 20rpx 0;
+			padding:44rpx 0 20rpx 20rpx;
+			box-sizing: border-box;
+			display: flex;
+			flex-wrap: wrap;
+
+			.register_li2_btn{
+				width: 200rpx;
+				height: 60rpx;
+				background: #F5F5F5;
+				border-radius: 10rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+				line-height: 60rpx;
+				text-align: center;
+				margin-right: 22rpx;
+				margin-bottom: 24rpx;
+			}
+			.colorB{
+				width: 200rpx;
+				height: 60rpx;
+				background: #0183FA;
+				border-radius: 10rpx;
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #FFFFFF;
+				line-height: 60rpx;
+				text-align: center;
+				margin-right: 22rpx;
+				margin-bottom: 24rpx;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 330 - 0
pages_supplier/gasRecycle/gasRecycle.vue

@@ -0,0 +1,330 @@
+<!--供气回收记录-->
+<template>
+    <view id="gasRecycle">
+		<view class="tabTitle">
+			<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
+				<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
+			    <view :class="{on:curTab==index}" class="tabTitle_across"></view>
+			</view>
+		</view>
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="for-big-box" v-for="(item,index) in dataList" :key="index">
+		        <view class="for-time-p">{{item.createTimeApp}}</view>
+		        <img class="for-back-img" src="@/pages_supplier/images/Version2.2/for_min_bg.png">
+				<!-- 供气 -->
+		        <view class="for-box" @click="goInfo(item2)" v-for="(item2,index2) in item.taskVOList" :key="index2">
+		        	<view class="for-title-box">
+		        		<view class="viewColor1">供气</view>
+						<view><text v-for="(item3,index3) in item2.detailListVO" :key="index3" v-if="index3<2">{{item3.airName}}-{{item3.configName}}*{{item3.bottleNumber}}<text>{{index3<1?' ':'...'}}</text></text></view>
+
+					</view>
+		        	<view class="for-address-box">
+		        		<img src="@/pages_supplier/images/Version2.2/icon_wtzg_sj.png">
+		        		<view>{{item2.createTime}}</view>
+		        	</view>
+		        	<view class="for-time-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_xx.png">
+
+		        		<view>{{item2.campus}}-{{item2.building}}-{{item2.room}}</view>
+		        	</view>
+		        </view>
+				<!-- 回收 -->
+				<view class="for-box" @click="goInfo(item4)" v-for="(item4,index4) in item.bottleStorageOutVOList" :key="index4">
+					<view class="for-title-box">
+						<view class="viewColor3">回收</view>
+						<view><text v-for="(item5,index5) in item4.detailListVO" :key="index5" v-if="index5<2">{{item5.airName}}-{{item5.configName}}<text>{{index5<1?' ':'...'}}</text></text></view>
+
+					</view>
+					<view class="for-address-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_sj.png">
+						<view>{{item4.createTime}}</view>
+					</view>
+					<view class="for-time-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_xx.png">
+
+						<view>{{item4.campus}}-{{item4.building}}-{{item4.room}}</view>
+					</view>
+				</view>
+				<!-- 问题 -->
+				<view class="for-box" @click="goInfo(item6)" v-for="(item6,index6) in item.bottleStorageVOList" :key="index6">
+					<view class="for-title-box">
+						<view class="viewColor2">问题</view>
+						<view><text v-for="(item7,index7) in item6.detailListVO" :key="index7" v-if="index7<2">{{item7.airName}}-{{item7.configName}}<text>{{index7<1?' ':'...'}}</text></text></view>
+
+					</view>
+					<view class="for-address-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_sj.png">
+						<view>{{item6.createTime}}</view>
+					</view>
+					<view class="for-time-box">
+						<img src="@/pages_supplier/images/Version2.2/icon_wtzg_xx.png">
+
+						<view>{{item6.campus}}-{{item6.building}}-{{item6.room}}</view>
+					</view>
+				</view>
+		    </view>
+			<view class="get-null-box" v-if="noData">暂无更多数据</view>
+		</scroll-view>
+	</view>
+</template>
+
+<script>
+	import { gasRecycleList } from '@/api/apiDemo/index.js'
+    export default {
+
+        name: "gasRecycle",
+        data() {
+            return {
+				//列表请求参数
+				getData:{
+				    pageNum:1,
+					pageSize:20,
+					remarkStatus:0,//0 未处理, 1 已处理
+				},
+				userType:uni.getStorageSync('userType'),
+				curTab:0,
+				tabText:['待处理','已处理',],
+                dataList:[],
+				noData:false,
+            }
+        },
+        onLoad() {
+        },
+        onShow() {
+
+        },
+		mounted(){
+			this.getList()
+		},
+        methods: {
+			//顶部tab点击
+			tabClick(index) {
+				this.curTab = index;
+				this.getData.pageNum=1;
+				this.getData.remarkStatus=index;
+				this.dataList=[];
+				this.getList();
+			},
+			goInfo(d){
+				if(d.remark=='gq'){
+					uni.redirectTo({
+					    url:'/pages_supplier/gasRecycle/gasRecycleAirDetail?item='+encodeURIComponent(JSON.stringify(d))+'&status='+this.curTab
+					});
+				}else if(d.remark=='hs'){
+					uni.redirectTo({
+					    url:'/pages_supplier/gasRecycle/gasRecycleRecycleDetail?item='+encodeURIComponent(JSON.stringify(d))+'&status='+this.curTab
+					});
+				}else if(d.remark=='wt'){
+					uni.redirectTo({
+					    url:'/pages_supplier/gasRecycle/gasRecycleIssueDetail?item='+encodeURIComponent(JSON.stringify(d))+'&status='+this.curTab
+					});
+				}
+
+			},
+			//滚动加载事件
+			scrollGet(){
+			   this.getData.pageNum += 1;
+			   this.getList();
+			},
+			//获取列表数据
+			async getList(){
+				let _this = this;
+				const {data} = await gasRecycleList(_this.getData);
+				if(data.code==200){
+					let _this = this;
+					let res=data.rows
+					if(res && res.length>0){
+						if(_this.getData.pageNum==1){
+							_this.dataList=res;
+						}else{
+							_this.dataList=_this.dataList.concat(res);
+						}
+					}else{
+						_this.noData=true;
+					}
+
+				}
+			},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #gasRecycle {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden
+		.tabTitle{
+			display flex;
+			width:100%;
+			height: 100rpx;
+			background: #fff;
+			margin-bottom 16rpx;
+
+			.tabTitle_li{
+				width:146rpx;
+				text-align center;
+				margin-top: 16rpx;
+				.tabTitle_text{
+					display: inline-block;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 64rpx;
+					&.on{
+						color:#0183FA;
+					}
+				}
+				.tabTitle_across{
+					width: 50rpx;
+					height: 6rpx;
+					background: #0183FA;
+					border-radius: 3rpx;
+					margin-left 50rpx;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+
+			}
+
+
+		}
+     .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+
+         .for-big-box:last-child{
+             margin-bottom:180rpx;
+         }
+         .for-big-box{
+             margin:0 20rpx 20rpx;
+             overflow hidden
+             border-bottom-left-radius :20rpx;
+             border-bottom-right-radius :20rpx;
+             .for-time-p{
+                 background #fff
+                 line-height:87rpx;
+                 font-size:30rpx;
+                 padding:0 22rpx;
+                 border-top-left-radius:20rpx;
+                 border-top-right-radius:20rpx;
+             }
+             .for-back-img{
+                 height:30rpx;
+                 width:710rpx;
+             }
+             .for-list-box:nth-child(3){
+                 .min-for-title-box{
+                     border:none;
+                 }
+             }
+
+            	.for-box{
+            		overflow hidden;
+					background: #fff;
+            		.for-title-box{
+            			display:flex;
+            			margin:0 26rpx 0;
+            			border-top:1rpx solid #dedede;
+            			padding-top:45rpx;
+            			view:nth-child(1){
+            				width:98rpx;
+            				line-height:38rpx;
+            				height:38rpx;
+            				border-radius:6rpx;
+            				font-size:20rpx;
+            				text-align center;
+            				margin-right:10rpx;
+            			}
+            			view:nth-child(2){
+            				flex:1;
+            				font-size:30rpx;
+            				color:#333;
+            				height:36rpx;
+            				lin-height:36rpx;
+            				margin-right:10rpx;
+            				display:block;
+            				overflow:hidden;
+            				text-overflow:ellipsis;
+            				white-space:nowrap;
+            			}
+            			view:nth-child(3){
+            				font-size:30rpx;
+            				color:#333;
+            				height:36rpx;
+            				lin-height:36rpx;
+            				color:#D80000;
+            			}
+            			.viewColor1{
+            			    background #ffe6e6;
+            			    color:#ff5555;
+            			}
+            			.viewColor2{
+            			    background #fef2dd;
+            			    color:#f6a71d;
+            			}
+            			.viewColor3{
+            			    background #e0f1e2;
+            			    color:#30a23d;
+            			}
+            			.viewColor4{
+            			    background #f2dddd;
+            			    color:#a51919;
+            			}
+            			.viewColor5{
+            			    background #e2f6f8;
+            			    color:#3ac3d3;
+            			}
+            			.viewColor6{
+            			    background #d9edfe;
+            			    color:#0183fa;
+            			}
+            		}
+            		.for-address-box{
+            			display:flex;
+            			margin:33rpx 26rpx 0;
+            			img{
+            				width:28rpx;
+            				height:28rpx;
+            				margin-right:20rpx;
+            			}
+            			view{
+            				font-size:28rpx;
+            				line-height:28rpx;
+            				color:#666;
+            			}
+            		}
+            		.for-time-box{
+            			display:flex;
+            			margin:26rpx 26rpx 0;
+            			padding-bottom:32rpx;
+            			img{
+            				width:28rpx;
+            				height:28rpx;
+            				margin-right:20rpx;
+            			}
+            			view{
+            				font-size:28rpx;
+            				line-height:28rpx;
+            				color:#666;
+            			}
+            		}
+            	}
+		 }
+		 /*暂无数据*/
+		 .get-null-box{
+		     height:100rpx;
+		     line-height:100rpx;
+		     color:#999;
+		     text-align center
+		 }
+     }
+	}
+</style>

+ 303 - 0
pages_supplier/gasRecycle/gasRecycleAirDetail.vue

@@ -0,0 +1,303 @@
+<!-- 回收申请-->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>实验地点:</view>
+				<input v-model="form.qpTask.location" disabled type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系人:</view>
+				<input v-model="form.qpTask.userName" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系方式:</view>
+				<input v-model="form.qpTask.phone" disabled  type="text" >
+			</view>
+			<view v-if="pageType==1" class="register_li_min">
+			    <view></view>
+				<view>运输人员:</view>
+				<input v-model="form.user.userName" disabled  type="text" >
+			</view>
+			<view v-if="pageType==1" class="register_li_min">
+			    <view></view>
+				<view>运输车辆:</view>
+				<input v-model="form.car.carCode" disabled  type="text" >
+			</view>
+			<view v-if="pageType==1" class="register_li_min">
+			    <view></view>
+				<view>配送时间:</view>
+				<input v-model="form.taskDetail.disposeTime2" disabled  type="text" >
+			</view>
+			<view v-if="pageType==1" class="register_li_min" style="border: none;">
+			    <view></view>
+				<view>接收时间:</view>
+				<input v-model="form.taskDetail.createTime" disabled  type="text" >
+			</view>
+		</view>
+		<view class="register_li" >
+			<view class="register_li_min" v-for="(item,index) in form.detailList">
+				<view></view>
+				<view>{{item.airName}}-{{item.configName}}:</view>
+				<input v-model="'数量:'+item.bottleNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view v-if="pageType==0" class="register_li">
+			<picker  @change="bindPickerPerson" :value="pickerIndex" :range="personList">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>运输人员:</view>
+					<input v-model="form.userName" disabled type="text" placeholder="请选择运输人员">
+				</view>
+			</picker>
+			<picker  @change="bindPickerCar" :value="pickerIndex" :range="carList">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>运输车辆:</view>
+					<input v-model="form.carCode" disabled type="text" placeholder="请选择运输车辆">
+				</view>
+			</picker>
+		</view>
+		<view v-if="pageType==0"  class="sub_btn" @click="submitForm()">配送</view>
+	</view>
+</template>
+
+<script>
+    import {supplierBacklogDetail,
+			supplierBacklogRecycleDetail,
+			supplierBacklogIssueDetail,
+			supplierBacklogPersonCar,
+			supplierBacklogDistribution,
+			} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				pageType:0,//0待处理1已处理
+				form:{},
+				id:'',//查询详情的id
+				distributionId:'',//配送的id
+				status:'',//gq hs wt
+				personList:[],
+				personListArr:[],
+				carList:[],
+				carListArr:[],
+				editForm:{
+					id:'',
+					remark:'1',
+					transportUser:{
+						id:'',
+						userName:'',
+					},
+					transportCar:{
+						id:'',
+						carCode:'',
+					},
+				},//配送
+            }
+        },
+       onLoad(option) {
+			this.id=JSON.parse(decodeURIComponent(option.item)).detailListVO[0].id;
+			this.distributionId=JSON.parse(decodeURIComponent(option.item)).id;
+			this.pageType=option.status;
+       },
+        onShow(){
+        },
+		mounted() {
+			this.getInfo();
+			this.getPersonCarList();
+		},
+        methods: {
+			//供气人员点击
+			bindPickerPerson(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.userName=this.personList[index]
+				_this.personListArr.forEach(function(item){
+					if(item.userName==_this.personList[index]){
+						_this.editForm.transportUser.id=item.id
+						_this.editForm.transportUser.userName=item.userName
+					}
+				})
+			},
+			//供气车辆点击
+			bindPickerCar(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.carCode=this.carList[index]
+				_this.carListArr.forEach(function(item){
+					if(item.carCode==_this.carList[index]){
+						_this.editForm.transportCar.id=item.id
+						_this.editForm.transportCar.carCode=item.carCode
+					}
+				})
+
+			},
+
+			async getPersonCarList(){
+			    let _this = this;
+				const {data} = await supplierBacklogPersonCar()
+				if(data.code==200){
+					let res=data.data
+					//车辆
+					_this.carListArr=res.carlist;
+					if(res.carlist){
+						res.carlist.forEach(function(item){
+							_this.carList.push(item.carCode)
+						})
+					}
+					//人员
+					_this.personListArr=res.userlist;
+					if(res.userlist){
+						res.userlist.forEach(function(item){
+							_this.personList.push(item.userName)
+						})
+					}
+				}
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+				const {data} = await supplierBacklogDetail({id:this.id})
+				if(data.code==200){
+					let res=data.data
+					_this.form=res;
+				}
+			},
+			//配送
+			async submitForm(){
+				let _this = this;
+				if(!this.form.userName){
+					uni.showToast({
+						title: '请选择运输人员',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.carCode){
+					uni.showToast({
+						title: '请选择运输车辆',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				_this.editForm.id=_this.distributionId;
+				const {data} = await supplierBacklogDistribution(_this.editForm);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				   setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_supplier/gasRecycle/gasRecycle'
+				        });
+				    },2000);
+				}
+
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 244 - 0
pages_supplier/gasRecycle/gasRecycleIssueDetail.vue

@@ -0,0 +1,244 @@
+<!-- 回收申请-->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>实验地点:</view>
+				<input v-model="form.bottleStorage.location" disabled type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系人:</view>
+				<input v-model="form.bottleStorage.refuseName" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系方式:</view>
+				<input v-model="form.bottleStorage.refusePhonen" disabled  type="text" >
+			</view>
+			<view  class="register_li_min">
+				<view></view>
+				<view>运输人员:</view>
+				<input v-model="form.bottleStorage.driverName" disabled  type="text" >
+			</view>
+			<view  class="register_li_min">
+				<view></view>
+				<view>拒收发起时间:</view>
+				<input v-model="form.bottleStorage.rejectionApplyTime" disabled  type="text" >
+			</view>
+			<view v-if="pageType==1" class="register_li_min">
+				<view></view>
+				<view>同意拒收时间:</view>
+				<input v-model="form.bottleStorage.rejectionApplyTime" disabled  type="text" >
+			</view>
+			<view  class="register_li_min">
+				<view></view>
+				<view>问题描述:</view>
+				<input v-model="form.bottleStorage.rejectionApplyRemark" disabled  type="text" >
+			</view>
+			<view  class="issue_li" style="border-bottom:0;" @click="lookItem(form.bottleStorage.rejectionApplyImg)">
+				<view></view>
+				<view>问题照片:</view>
+				<view class="issue_img">
+					<img v-for="(item,index) in form.bottleStorage.rejectionApplyImg.split(',')"  :src="baseUrl+item">
+				</view>
+			</view>
+		</view>
+		<view class="register_li" v-if="listType==0">
+			<view class="register_li_min">
+				<view></view>
+				<view>{{specificationName.airName}}-{{specificationName.configName}}:</view>
+				<input v-model="'数量:'+form.detailList.bottleNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view v-if="pageType==0" class="sub_btn" @click="submitForm()">同意拒收</view>
+	</view>
+</template>
+
+<script>
+    import {supplierBacklogDetail,
+			supplierBacklogRecycleDetail,
+			supplierBacklogIssueDetail,
+			supplierBacklogPersonCar,
+			supplierBacklogRejection,
+			} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				pageType:0,//0待处理1已处理
+				form:{
+
+				},
+				id:'',
+				status:'',//gq hs wt
+				personList:[],
+				personListArr:[],
+				carList:[],
+				carListArr:[],
+				editForm:{
+					id:'',
+					remark:'2',
+				},//配送
+				specificationName:{},//回收
+            }
+        },
+       onLoad(option) {
+			this.id=JSON.parse(decodeURIComponent(option.item)).id;
+			this.pageType=option.status;
+       },
+        onShow(){
+        },
+		mounted() {
+			this.getInfo();
+		},
+        methods: {
+			lookItem(item){
+				let arr=item.split(',')
+				let arr2=[]
+				arr.forEach(function(item2){
+					arr2.push(config.base_url+item2)
+				})
+				//查看图片
+				wx.previewImage({
+					urls: arr2, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+				const {data} = await supplierBacklogIssueDetail({id:this.id})
+				if(data.code==200){
+					let res=data.data
+					_this.form=res;
+					_this.specificationName=JSON.parse(res.detailList.applyDescribe)
+				}
+			},
+			//同意拒收
+			async submitForm(){
+				let _this = this;
+				_this.editForm.id=_this.id;
+				const {data} = await supplierBacklogRejection(_this.editForm);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				   setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_supplier/gasRecycle/gasRecycle'
+				        });
+				    },2000);
+				}
+
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					width:220rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					display flex;
+					justify-content: flex-start;
+					flex-wrap: wrap;
+					>img{
+						width: 150rpx;
+						height: 150rpx;
+						border-radius: 10rpx;
+						margin-right: 20rpx;
+						margin-bottom: 20rpx
+					}
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 312 - 0
pages_supplier/gasRecycle/gasRecycleRecycleDetail.vue

@@ -0,0 +1,312 @@
+<!-- 回收申请-->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>实验地点:</view>
+				<input v-model="form.qpTask.location" disabled type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系人:</view>
+				<input v-model="form.qpTask.userName" disabled  type="text" >
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系方式:</view>
+				<input v-model="form.qpTask.phone" disabled  type="text" >
+			</view>
+			<view v-if="pageType==1 || form.bottleStorageOut.outStatus==1" class="register_li_min">
+			    <view></view>
+				<view>运输人员:</view>
+				<input v-model="form.bottleStorageOut.transportName" disabled  type="text" >
+			</view>
+			<view v-if="pageType==1 || form.bottleStorageOut.outStatus==1" class="register_li_min">
+			    <view></view>
+				<view>运输车辆:</view>
+				<input v-model="form.bottleStorageOut.carNumber" disabled  type="text" >
+			</view>
+			<view  class="register_li_min">
+				<view></view>
+				<view>申请回收时间:</view>
+				<input v-model="form.bottleStorageOut.createTime" disabled  type="text" >
+			</view>
+			<view v-if="pageType==1 || form.bottleStorageOut.outStatus==1" class="register_li_min" style="border: none;">
+			    <view></view>
+				<view>确认回收时间:</view>
+				<input v-model="form.bottleStorageOut.disposeTime" disabled  type="text" >
+			</view>
+		</view>
+		<view  class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>{{specificationName.airName}}-{{specificationName.gasLevel}}:</view>
+				<input v-model="'数量:'+form.taskDetail.bottleNumber" disabled  type="text" >
+			</view>
+		</view>
+		<view v-if="pageType==0 || form.bottleStorageOut.outStatus==0" class="register_li">
+			<picker  @change="bindPickerPerson" :value="pickerIndex" :range="personList">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>运输人员:</view>
+					<input v-model="form.userName" disabled type="text" placeholder="请选择运输人员">
+				</view>
+			</picker>
+			<picker   @change="bindPickerCar" :value="pickerIndex" :range="carList">
+				<view class="register_li_min">
+					<view>*</view>
+					<view>运输车辆:</view>
+					<input v-model="form.carCode" disabled type="text" placeholder="请选择运输车辆">
+				</view>
+			</picker>
+		</view>
+		<view  v-if="form.bottleStorageOut.outStatus==0" class="sub_btn" @click="submitForm(1)">确认回收</view>
+		<view  v-if="form.bottleStorageOut.outStatus==1" class="sub_btn" @click="submitForm(2)">已回收</view>
+	</view>
+</template>
+
+<script>
+    import {supplierBacklogDetail,
+			supplierBacklogRecycleDetail,
+			supplierBacklogIssueDetail,
+			supplierBacklogPersonCar,
+			supplierBacklogStorageOut,
+			} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				pageType:0,//0待处理1已处理
+				form:{},
+				id:'',
+				status:'',//gq hs wt
+				personList:[],
+				personListArr:[],
+				carList:[],
+				carListArr:[],
+				editForm:{
+					id:'',
+					transportId:'',
+					transportName:'',
+					carId:'',
+					carNumber:'',
+					remark:'1',//确认回收1,已回收2
+					outStatus:'1',//确认回收1,已回收2
+				},//配送
+				specificationName:{},//回收
+            }
+        },
+       onLoad(option) {
+			this.id=JSON.parse(decodeURIComponent(option.item)).id;
+			this.pageType=option.status;
+       },
+        onShow(){
+        },
+		mounted() {
+			this.getInfo();
+			this.getPersonCarList();
+		},
+        methods: {
+			//供气人员点击
+			bindPickerPerson(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.userName=this.personList[index]
+				_this.editForm.transportName=this.personList[index]
+				_this.personListArr.forEach(function(item){
+					if(item.userName==_this.personList[index]){
+						_this.editForm.transportId=item.id
+					}
+				})
+			},
+			//供气车辆点击
+			bindPickerCar(e){
+				let _this=this;
+				let index=e.target.value
+				_this.form.carCode=this.carList[index]
+				_this.editForm.carNumber=this.carList[index]
+				_this.carListArr.forEach(function(item){
+					if(item.carCode==_this.carList[index]){
+						_this.editForm.carId=item.id
+					}
+				})
+
+			},
+
+			async getPersonCarList(){
+			    let _this = this;
+				const {data} = await supplierBacklogPersonCar()
+				if(data.code==200){
+					let res=data.data
+					//车辆
+					_this.carListArr=res.carlist;
+					if(res.carlist){
+						res.carlist.forEach(function(item){
+							_this.carList.push(item.carCode)
+						})
+					}
+					//人员
+					_this.personListArr=res.userlist;
+					if(res.userlist){
+						res.userlist.forEach(function(item){
+							_this.personList.push(item.userName)
+						})
+					}
+				}
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+				const {data} = await supplierBacklogRecycleDetail({id:this.id})
+				if(data.code==200){
+					let res=data.data
+					_this.form=res;
+					_this.specificationName=JSON.parse(res.taskDetail.applyDescribe)
+				}
+			},
+			//确认回收
+			async submitForm(type){
+				let _this = this;
+				if(type==1){
+					if(!this.form.userName){
+						uni.showToast({
+							title: '请选择运输人员',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						return
+					}
+					if(!this.form.carCode){
+						uni.showToast({
+							title: '请选择运输车辆',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						return
+					}
+					this.editForm.remark=1
+					this.editForm.outStatus=1
+				}else{
+					this.editForm.remark=2
+					this.editForm.outStatus=2
+					this.editForm.carId=null
+					this.editForm.carNumber=null
+					this.editForm.transportId=null
+					this.editForm.transportName=null
+				}
+				_this.editForm.id=_this.id;
+				const {data} = await supplierBacklogStorageOut(_this.editForm);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '提交成功',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				   setTimeout(function(){
+				       uni.redirectTo({
+				            url: '/pages_supplier/gasRecycle/gasRecycle'
+				        });
+				    },2000);
+				}
+
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex;
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+
+			}
+			.issue_li{
+				margin:34rpx 26rpx 0;
+				display flex;
+				border-bottom: 1px solid #F5F5F5;
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

BIN
pages_supplier/images/Version2.2/for_min_bg.png


BIN
pages_supplier/images/Version2.2/icon_wtzg_sj.png


BIN
pages_supplier/images/Version2.2/icon_wtzg_xx.png


BIN
pages_supplier/images/Version2.3/icon_pdf.png


BIN
pages_supplier/images/Version2.3/icon_sczl_sc.png


BIN
pages_supplier/images/Version2.3/icon_word.png


BIN
pages_supplier/images/Version2.3/img_zrsq_bg.png


BIN
pages_supplier/images/Version3.0/icon_gysqpgl_xzqp.png


BIN
pages_supplier/images/Version3.0/icon_qpgl_qp.png


BIN
pages_supplier/images/Version3.0/icon_ysry_ry.png


BIN
pages_supplier/images/Version3.0/icon_zc_sc.png


BIN
pages_supplier/images/Version3.0/icon_zc_scbg.png


BIN
pages_supplier/images/Version3.0/img_ysrygl_zwsj.png


BIN
pages_supplier/images/Version3.0/img_zc_zccg.png


BIN
pages_supplier/images/icon_04.png


+ 208 - 0
pages_supplier/mine/changePassword.vue

@@ -0,0 +1,208 @@
+<!-- 修改密码 -->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>原密码:</view>
+				<input v-model="form.oldPassword" @blur="verifyOldPassword()"  type="text" placeholder="请输入原密码">
+			</view>
+			<view class="register_li_min">
+				<view>新密码:</view>
+				<input v-model="form.newPassword" @blur="verify()"    type="text" placeholder="请输入原密码">
+			</view>
+			<view class="register_li_min" style="border-bottom:0;">
+				<view>确认密码:</view>
+				<input  @blur="affirm()" v-model="repassword"   type="text" placeholder="请再次确认密码">
+			</view>
+		</view>
+		<view class="sub_btn" @click="submitForm()">提交</view>
+	</view>
+</template>
+
+<script>
+    import {updatePwd} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					oldPassword:'',
+					newPassword:'',
+				},
+				repassword:'',
+            }
+        },
+        onLoad(option) {
+
+        },
+        onShow(){
+
+
+
+        },
+
+        methods: {
+			//校验特殊字符
+			verify(){
+				if(!this.form.oldPassword){
+					uni.showToast({
+						title: '请先输入原密码',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					this.form.newPassword='';
+					return
+				}
+				if(this.form.newPassword.length<6 || this.form.newPassword.length>16){
+					uni.showToast({
+						title: '原密码不能超出16位、不能低于6位',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					this.form.newPassword='';
+					return
+				}
+				let reg=/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]|[`~!#$%^&*()_\+=<>?:"{}|~!#¥%……&*()={}|《》?:“”【】、;‘’,。、\s+]/;
+				let aa= reg.test(this.form.newPassword)
+				if(reg.test(this.form.newPassword)){
+					uni.showToast({
+						title: '密码中有中文,空格或特殊字符,请重新输入',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					this.form.newPassword='';
+				}
+
+			},
+			affirm(){
+				if(this.form.newPassword===this.repassword){
+
+				}else{
+					uni.showToast({
+						title: '两次密码不一样,请重新输入',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					this.repassword='';
+					return
+				}
+			},
+			//校验老的密码
+			async verifyOldPassword(){
+				if(!this.form.oldPassword){
+					uni.showToast({
+						title: '请输入原密码',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+
+			},
+			async submitForm(){
+				if(!this.form.oldPassword){
+					uni.showToast({
+						title: '请输入原密码',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.newPassword){
+					uni.showToast({
+						title: '请输入新密码',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.repassword){
+					uni.showToast({
+						title: '请输入确认密码',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+
+				const {data} = await updatePwd(this.form);
+				if(data.code == 200){
+				    uni.showToast({
+				        title: '修改成功!',
+				        icon:"none",
+				        mask:true,
+				        duration: 2000
+				    });
+				    setTimeout(function(){
+				       uni.redirectTo({
+				       	url: '/pages/login',
+				       });
+				    },2000);
+				}
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		.register_li{
+			background #fff;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+				>input{
+					flex:1;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 158 - 0
pages_supplier/mine/mine.vue

@@ -0,0 +1,158 @@
+<!-- 个人中心 -->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min" @click="goPage('datum')">
+				<view>修改资料</view>
+			    <view class="view-three-type" :class="state==0?'colorA':'colorB'">{{state==0?'审核未通过':'审核已通过'}}</view>
+				<img class="right-img" src="@/pages_supplier/images/icon_04.png">
+			</view>
+			<view class="register_li_min" @click="goPage('password')" style="border: none;">
+				<view>修改密码</view>
+				<view></view>
+				<img class="right-img" src="@/pages_supplier/images/icon_04.png">
+			</view>
+		</view>
+		<view class="sub_btn" @click="clickOut()">退出登录</view>
+	</view>
+</template>
+
+<script>
+    import {logout} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					name:'',
+				},
+				state:null,
+            }
+        },
+        onLoad(option) {//审核状态(0:未审核,1:审核通过,2:审核未通过)
+			this.state=option.state
+        },
+        onShow(){
+
+        },
+
+        methods: {
+			//页面跳转
+			goPage(type){
+			    if(type == 'datum'){//修改资料
+					uni.redirectTo({
+					    url: '/pages_supplier/register/register?pageStatus=1',//注册页面
+					});
+				}else if(type == 'password'){//修改密码
+			        uni.redirectTo({
+			            url: '/pages_supplier/mine/changePassword',
+			        });
+				}
+			},
+			//退出按钮
+			clickOut(){
+			    let self = this;
+			    uni.showModal({
+			        // title: '确认要退出吗?',
+			        content: '确认要退出吗',
+			        cancelColor:"#999",
+			        confirmColor:"#0183FA",
+			        success: function (res) {
+			            if (res.confirm) {
+			                self.logout();
+			                console.log('用户点击确定');
+			            } else if (res.cancel) {
+			                console.log('用户点击取消');
+			            }
+			        }
+			    });
+			},
+			//退出登录
+			async logout() {
+			    let self = this;
+			    const {data} = await logout();
+			    if(data.code == 200){
+			        uni.removeStorageSync('token');
+			        uni.removeStorageSync('userId');
+			        uni.removeStorageSync('userType');
+			        uni.redirectTo({
+			            url: '/pages/login',
+			        });
+			    }
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			padding:20rpx 0;
+			box-sizing: border-box;
+
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				display flex;
+				view{
+					line-height:110rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					font-size: 30rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 110rpx;
+
+				}
+				view:nth-child(2){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					line-height: 110rpx;
+					flex:1;
+					text-align: right;
+				}
+				.colorA{
+					color:#FF3131!important;
+				}
+				.colorB{
+					color:#999999!important;
+				}
+				>img{
+					width: 12rpx;
+					height: 24rpx;
+					margin-left: 26rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+
+	}
+
+</style>

+ 113 - 0
pages_supplier/register/forgotPassword.vue

@@ -0,0 +1,113 @@
+<!-- 注册 -->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>*</view>
+				<view>登录账号:</view>
+				<input v-model="form.name"   type="text" placeholder="请输入账号">
+			</view>
+			<view class="register_li_min" style="border: none;">
+			    <view>*</view>
+				<view>手机号:</view>
+				<input v-model="form.name"   type="text" placeholder="请输入注册时填写的手机号码">
+			</view>
+		</view>
+
+		<view class="sub_btn">提交</view>
+	</view>
+</template>
+
+<script>
+    import {} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					name:'',
+				},
+            }
+        },
+        onLoad(option) {
+
+        },
+        onShow(){
+
+
+
+        },
+
+        methods: {
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+				>input{
+					width 500rpx;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 317 - 0
pages_supplier/register/register.vue

@@ -0,0 +1,317 @@
+<!-- 注册 -->
+<template>
+    <view id="register">
+		<view class="register_li" v-if="pageStatus==0">
+			<view class="register_li_min">
+				<view>*</view>
+				<view>登录账号:</view>
+				<input v-model="form.sysUserDto.userName"  type="text" placeholder-style="color:#999;" placeholder="请输入登录账号">
+			</view>
+			<view class="register_li_min">
+			    <view>*</view>
+				<view>登录密码:</view>
+				<input v-model="form.sysUserDto.password" type="text" placeholder-style="color:#999;" placeholder="请输入登录密码">
+			</view>
+			<view class="register_li_min" style="border-bottom:0;">
+				<view>*</view>
+				<view>确认密码:</view>
+				<input  v-model="form.sysUserDto.repassword"  type="text" placeholder-style="color:#999;" placeholder="请再次确认密码">
+			</view>
+		</view>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>*</view>
+				<view>企业名称:</view>
+				<input v-model="form.companyName" @blur="nameCheck()"  maxlength="20"type="text" placeholder-style="color:#999;" placeholder="请输入供应商名称">
+			</view>
+			<view class="register_li_min">
+			    <view style="margin-left: 12rpx;"></view>
+				<view>企业简称:</view>
+				<input v-model="form.companyShort" maxlength="10" type="text" placeholder-style="color:#999;" placeholder="请输入供应商简称">
+			</view>
+			<view class="register_li_min" >
+				<view>*</view>
+				<view>联系人:</view>
+				<input v-model="form.contacts" maxlength="10"  type="text" placeholder-style="color:#999;" placeholder="请输入联系人姓名">
+			</view>
+			<view class="register_li_min" >
+				<view>*</view>
+				<view>联系方式:</view>
+				<input  v-model="form.phone"  type="text" placeholder-style="color:#999;" placeholder="请输入联系方式">
+			</view>
+			<view class="register_li_min" style="border-bottom:0;">
+				 <view style="margin-left: 12rpx;"></view>
+				<view>经营地址:</view>
+				<input v-model="form.businessAddress" maxlength="30" type="text" placeholder-style="color:#999;" placeholder="请输入经营地址">
+			</view>
+		</view>
+		<view class="sub_btn" @click="nextStep()">下一步</view>
+	</view>
+</template>
+
+<script>
+    import {supplierCheck,supplierDetail} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+					sysUserDto:{
+						userName:'',
+						password:'',
+						repassword:'',
+					},
+					companyName:'',
+					companyShort:'',
+					contacts:'',
+					phone:'',
+					businessAddress:'',
+					id:'',
+				},
+				pageStatus:null,//判断是从那个页面进入 0登录页,1驳回页面
+				license:null,//证件数据
+            }
+        },
+        onLoad(option) {
+			this.pageStatus=option.pageStatus;
+        },
+        onShow(){
+
+        },
+        methods: {
+			//校验企业名称是否重复
+			async nameCheck(){
+				const {data} = await supplierCheck({name:this.form.companyName,})
+				let res=data.data
+				if(data.code==200){
+
+				}
+			},
+
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await supplierDetail()
+				let res=data.data
+			    if(data.code==200){
+					this.form.id=res.id
+					this.form.companyName=res.companyName
+					this.form.companyShort=res.companyShort
+					this.form.contacts=res.contacts
+					this.form.phone=res.phone
+					this.form.businessAddress=res.businessAddress
+					this.license=res.qpSupplierCredentialsVos
+			    }
+			},
+			nextStep(){
+				let _this = this;
+				if(!this.form.sysUserDto.userName && this.pageStatus==0){
+					uni.showToast({
+						title: '请输入登陆账号',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(this.form.sysUserDto.userName){
+					if(_this.form.sysUserDto.userName.length<6 || _this.form.sysUserDto.userName.length>16){
+						uni.showToast({
+							title: '登录账号不能超出16位、不能低于6位',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						form.sysUserDto.userName='';
+						return
+					}
+					let reg=/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]|[`~@!#$%^&*()_\+=<>?:"{}|~!#¥%……&*()={}|《》?:“”【】、;‘’,。、\s+]/;
+					let aa= reg.test(_this.form.sysUserDto.userName)
+					if(reg.test(_this.form.sysUserDto.userName)){
+						uni.showToast({
+							title: '登录密码中有中文,空格或特殊字符,请重新输入!',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						_this.form.sysUserDto.userName='';
+						return
+					}
+
+				}
+				if(!this.form.sysUserDto.password && this.pageStatus==0){
+					uni.showToast({
+						title: '请输入登陆密码',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(_this.form.sysUserDto.password){
+					if(_this.form.sysUserDto.password.length<6 || _this.form.sysUserDto.password.length>16){
+						uni.showToast({
+							title: '登录密码不能超出16位、不能低于6位',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						_this.form.sysUserDto.password='';
+						return
+					}
+					let reg=/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]|[`~@!#$%^&*()_\+=<>?:"{}|~!#¥%……&*()={}|《》?:“”【】、;‘’,。、\s+]/;
+					let aa= reg.test(this.form.sysUserDto.password)
+					if(reg.test(this.form.sysUserDto.password)){
+						uni.showToast({
+							title: '登录密码中有中文,空格或特殊字符,请重新输入!',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						this.form.sysUserDto.password='';
+						return
+					}
+
+				}
+				if(!this.form.sysUserDto.repassword && this.pageStatus==0){
+					uni.showToast({
+						title: '请输入确认密码',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(this.form.sysUserDto.password!==this.form.sysUserDto.repassword){
+					uni.showToast({
+						title: '密码输入不一致,请重新输入!',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.companyName){
+					uni.showToast({
+						title: '请输入企业名称',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.contacts){
+					uni.showToast({
+						title: '请输入联系人',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.phone){
+					uni.showToast({
+						title: '请输入手机号码',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(this.form.phone){
+					let reg=/^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[0-9])|(17[0,3,5-8])|(18[0-9])|(147))+\d{8}$/;
+					let aa= reg.test(this.form.phone)
+					if(!reg.test(this.form.phone)){
+						uni.showToast({
+							title: '请输入正确的手机号!',
+							icon:"none",
+							mask:true,
+							duration: 2000
+						});
+						this.form.phone='';
+						return
+					}
+
+				}
+
+				uni.navigateTo({
+				    url: '/pages_supplier/register/registerTow?form='+encodeURIComponent(JSON.stringify(this.form))+'&license='+encodeURIComponent(JSON.stringify(this.license)),//安全检查
+				});
+			},
+        },
+		mounted(){
+			if(this.pageStatus==1){
+				this.getInfo();
+			}
+			//
+		},
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					width:160rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+				>input{
+					width 460rpx;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 142 - 0
pages_supplier/register/registerSuccess.vue

@@ -0,0 +1,142 @@
+<!-- 申请成功 -->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<img  class="register_li_t" src="@/pages_supplier/images/Version3.0/img_zc_zccg.png">
+			<view class="register_li_m">
+				<text>申请提交成功,请牢记您的账号密码,</text>
+				<text>为避免丢失和遗忘,建议您截图保存。</text>
+			</view>
+			<view class="register_li_b">
+				<view>
+					<text>登陆账号</text>
+					<text>{{form.sysUserDto.userName}}</text>
+				</view>
+				<view>
+					<text>登陆密码</text>
+					<text>{{form.sysUserDto.password}}</text>
+				</view>
+			</view>
+
+		</view>
+		<view class="sub_btn" @click="back()">返回</view>
+	</view>
+</template>
+
+<script>
+    import {} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				form:{
+				},
+
+            }
+        },
+        onLoad(option) {
+			this.form=JSON.parse(decodeURIComponent(option.form));
+        },
+        onShow(){
+
+
+        },
+
+        methods: {
+			back(){
+				uni.redirectTo({
+					url: '/pages/login?status=3',
+				});
+			},
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:100%;
+        width:100%;
+        display flex
+        flex-direction column;
+		//padding-bottom: 220rpx;
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_t{
+				width:336rpx;
+				height:190rpx;
+				margin: 60rpx 0 0 186rpx;
+			}
+			.register_li_m{
+				margin-top: 64rpx;
+				text-align: center;
+				>text{
+					display: block;
+				}
+				>text:nth-child(1){
+
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 28rpx;
+					margin-bottom: 24rpx;
+				}
+				>text:nth-child(2){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 28rpx;
+				}
+			}
+			.register_li_b{
+				margin-top: 60rpx;
+				width: 668rpx;
+				height: 180rpx;
+				background: #F5F5F5;
+				border-radius: 10rpx;
+				margin-left: 22rpx;
+				padding: 44rpx 34rpx;
+				box-sizing: border-box;
+				>view{
+					display: flex;
+					justify-content: space-between;
+					>text{
+						font-size: 28rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #666666;
+						line-height: 28rpx;
+					}
+				}
+				>view:nth-child(2){
+					margin-top: 30rpx;
+				}
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 350 - 0
pages_supplier/register/registerTow.vue

@@ -0,0 +1,350 @@
+<!-- 注册2 -->
+<template>
+    <view class="register">
+		<view class="register_li" v-for="(item,index) in qpSupplierCredentialsDtos">
+			<view class="register_li_t"><text v-if="item.required==1" style="color: #f00;margin-right: 10rpx;">*</text>{{item.naturalName}}</view>
+			<view class="register_li_b">
+				<img  src="@/pages_supplier/images/Version3.0/icon_zc_scbg.png">
+				<img v-if="item.naturalName" :src="baseUrl+item.naturalUrl">
+				<img src="@/pages_supplier/images/Version3.0/icon_zc_sc.png" @click="selectImage(item)">
+			</view>
+			<view class="register_li_b2">
+				<view><text v-if="item.required==1" style="color: #f00;margin-right: 10rpx;">*</text>有效期</view>
+				<picker mode="date" @change="startChange(item,$event)">
+					<input class="picker-text"  disabled type="text" v-model="item.startTime" placeholder="开始时间">
+				</picker>
+				<view>-</view>
+				<picker mode="date"  @change="endChange(item,$event)">
+					<input class="picker-text2" disabled type="text" v-model="item.endTime" placeholder="结束时间">
+				</picker>
+			</view>
+			<view class="register_li_b3">{{item.remark}}</view>
+		</view>
+		<view class="sub_btn" @click="submitForm()">提交</view>
+	</view>
+</template>
+
+<script>
+    import {supplierRegister,certificateList,supplierAmend} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				qpSupplierDto:null,
+				qpSupplierCredentialsDtos:[],
+				license:null,
+            }
+        },
+        onLoad(option) {
+			let form=JSON.parse(decodeURIComponent(option.form));
+			if(JSON.parse(decodeURIComponent(option.license))){
+				this.license=JSON.parse(decodeURIComponent(option.license));
+			}
+			this.qpSupplierDto=form;
+			this.getList()
+        },
+        onShow(){
+
+        },
+
+        methods: {
+			// 图片上传
+			selectImage(item) {
+			    let self = this;
+			    wx.chooseImage({
+			        count: 1,
+			        sizeType: ["original", "compressed"],
+			        sourceType: ["album", "camera"],
+			        success: function(res) {
+			            let tempFilePaths = res.tempFilePaths[0];
+			            self.uploadImg(item,tempFilePaths);
+			        }
+			    });
+			},
+			async uploadImg(item,tempFilePaths){
+			    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){
+							item.naturalUrl=res.data.url;
+						}else{
+							uni.showToast({
+								title: res.msg,
+								icon:"none",
+								mask:true,
+								duration: 2000
+							});
+						}
+			        },
+			        fail: err => {},
+			        complete: () => {
+			            uni.hideLoading()
+			        }
+			    });
+			},
+			//删除图片
+			delImg(index){
+			    this.newData.imgList.splice(index,1);
+			},
+			//开始时间选中事件
+			startChange(item,e){
+				if(new Date(e.target.value).getTime()>=new Date(item.endTime).getTime()){
+					 uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}else{
+					item.startTime=e.target.value
+				}
+			},
+			//结束时间选中事件
+			endChange(item,e){
+				if(new Date(item.startTime).getTime()>=new Date(e.target.value).getTime()){
+					 uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}else{
+					item.endTime=e.target.value
+				}
+			},
+			//获取列表数据
+			async getList(){
+			    let _this = this;
+			    const {data} = await certificateList({type:1})
+			    if(data.code==200){
+					//重新渲染后台返回数据
+					data.data.forEach(function(item){
+						_this.qpSupplierCredentialsDtos.push({'required':item.required,'naturalName':item.name,'naturalUrl':'','startTime':'','endTime':'','remark':item.remark,'certificateId':item.id})
+					})
+					//循环对比把详情的值渲染到资料模板上
+					if(_this.license){
+						_this.qpSupplierCredentialsDtos.forEach(function(item){
+							_this.license.forEach(function(item2){
+								if(item.certificateId==item2.certificateId){
+									item.naturalUrl=item2.naturalUrl
+									item.startTime=item2.startTime
+									item.endTime=item2.endTime
+								}
+							})
+						})
+					}
+
+			    }
+			},
+			//注册提交
+			async submitForm(){
+				let _this = this;
+				let isPass=true;
+				//提交的时候过滤空数据
+				let arr=[];
+				for(let i=0;i<_this.qpSupplierCredentialsDtos.length;i++){
+
+					if(_this.qpSupplierCredentialsDtos[i].required==1){
+
+						if(!_this.qpSupplierCredentialsDtos[i].naturalUrl){
+							isPass=false;
+							uni.showToast({
+							    title: '未上传'+_this.qpSupplierCredentialsDtos[i].naturalName+',请上传'+_this.qpSupplierCredentialsDtos[i].naturalName,
+							    icon:"none",
+							    mask:true,
+							    duration: 2000
+							});
+							return
+						}
+						if(!_this.qpSupplierCredentialsDtos[i].startTime || !_this.qpSupplierCredentialsDtos[i].endTime){
+							isPass=false;
+							uni.showToast({
+							    title: '请选择'+_this.qpSupplierCredentialsDtos[i].naturalName+'有效期',
+							    icon:"none",
+							    mask:true,
+							    duration: 2000
+							});
+							return
+						}
+						arr.push(_this.qpSupplierCredentialsDtos[i])
+					}else{
+						arr.push(_this.qpSupplierCredentialsDtos[i])
+					}
+				}
+
+				if(isPass){
+					_this.qpSupplierDto.qpSupplierCredentialsDtos=arr;
+					//修改
+					if(_this.qpSupplierDto.id){
+						const {data} = await supplierAmend(_this.qpSupplierDto);
+						if(data.code == 200){
+						    uni.showToast({
+						        title: '提交成功',
+						        icon:"none",
+						        mask:true,
+						        duration: 2000
+						    });
+						    setTimeout(function(){
+						       uni.redirectTo({
+						       	url: '/pages/login',
+						       });
+						    },2000);
+						}
+					}else{//注册
+						const {data} = await supplierRegister(_this.qpSupplierDto);
+						if(data.code == 200){
+						    uni.showToast({
+						        title: '提交成功',
+						        icon:"none",
+						        mask:true,
+						        duration: 2000
+						    });
+						    setTimeout(function(){
+						        uni.redirectTo({
+						            url: '/pages_supplier/register/registerSuccess?form='+encodeURIComponent(JSON.stringify(_this.qpSupplierDto)),//注册
+						        });
+						    },2000);
+						}
+					}
+				}
+
+			},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    .register{
+        height:auto;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+
+		.register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:0 20rpx;
+			box-sizing: border-box;
+			.register_li_t{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 28rpx;
+				margin: 36rpx 0;
+			}
+			.register_li_b{
+				width: 450rpx;
+				height: 270rpx;
+				margin-left: 106rpx;
+				position: relative;
+				>img:nth-child(1){
+					width: 450rpx;
+					height: 270rpx;
+					position: absolute;
+					left: 0;
+					top: 0;
+				}
+				>img:nth-child(2){
+					width: 450rpx;
+					height: 270rpx;
+					position: absolute;
+					left: 0;
+					top: 0;
+				}
+				>img:nth-child(3){
+					width: 100rpx;
+					height: 100rpx;
+					position: absolute;
+					left: 187rpx;
+					top: 86rpx;
+
+				}
+			}
+			.register_li_b2{
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+					margin-right: 150rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+			.register_li_b3{
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+				line-height: 36rpx;
+				margin: 34rpx 0;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 234 - 0
pages_supplier/transportCar/transportCar.vue

@@ -0,0 +1,234 @@
+<!--运输车辆管理-->
+<template>
+    <view id="transportPerson">
+		<view class="tabTitle">
+			<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
+				<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
+			    <view :class="{on:curTab==index}" class="tabTitle_across"></view>
+			</view>
+		</view>
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="list" >
+				<view class="list_li" @click="detailClick(item)" v-for="(item,index) in dataList">
+					<!-- <img class="for-back-img" src="@/images/Version3.0/icon_ysry_ry.png"> -->
+					<text class="list_li_text">{{item.carCode}}</text>
+					<text class="list_li_text2"></text>
+					<text class="list_li_text3" v-if="item.pastDue==1">证照过期</text>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==2">
+			<img class="for-back-img" src="@/pages_supplier/images/Version3.0/img_ysrygl_zwsj.png">
+			<view>暂无数据</view>
+		</view>
+		<view class="sub_btn" @click="addBtn()">新增运输车辆</view>
+	</view>
+</template>
+
+<script>
+	import { transportCarList } from '@/api/apiDemo/index.js'
+    export default {
+        name: "transportPerson",
+        data() {
+            return {
+
+				pageType:1,
+				//列表请求参数
+				params:{
+				   isAudit:1,//是否已经审核(0=未审核,1=已经审核,2=审核未通过
+				},
+				userType:uni.getStorageSync('userType'),
+				curTab:0,
+				tabText:['已通过','待审核','未通过'],
+                dataList:[],
+            }
+        },
+        onLoad() {
+
+        },
+        onShow() {
+
+        },
+		mounted(){
+			 this.getList();
+		},
+        methods: {
+			//顶部tab点击
+			tabClick(index) {
+				this.curTab = index;
+				if(index==0){
+					this.params.isAudit=1
+				}else if(index==1){
+					this.params.isAudit=0
+				}else if(index==2){
+					this.params.isAudit=2
+				}
+
+			    this.getList();
+			},
+			//滚动加载事件
+			scrollGet(){
+			    if(this.getData.getType){
+			        this.getData.pageNum += 1;
+			        this.getList();
+			    }
+			},
+			addBtn(){
+				uni.redirectTo({
+				    url:'/pages_supplier/transportCar/transportCarAdd?status=0'
+				});
+			},
+			detailClick(d){
+				let id=d.id;
+				uni.redirectTo({
+				    url:'/pages_supplier/transportCar/transportCarDetail?id='+id
+				});
+			},
+			//获取列表数据
+			async getList(){
+			    let _this = this;
+				_this.dataList=[];
+			    const {data} = await transportCarList(_this.params)
+			    if(data.code==200){
+					let res=data.data;
+					if(res.length>0){
+						this.dataList=res
+						this.pageType=1
+					}else{
+						this.pageType=2
+					}
+
+			    }
+			},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #transportPerson {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden
+		.tabTitle{
+			display flex;
+			width:100%;
+			height: 100rpx;
+			background: #fff;
+			margin-bottom 16rpx;
+
+			.tabTitle_li{
+				width:146rpx;
+				text-align center;
+				margin-top: 16rpx;
+				.tabTitle_text{
+					display: inline-block;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 64rpx;
+					&.on{
+						color:#0183FA;
+					}
+				}
+				.tabTitle_across{
+					width: 50rpx;
+					height: 6rpx;
+					background: #0183FA;
+					border-radius: 3rpx;
+					margin-left 50rpx;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+
+			}
+
+
+		}
+        .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 .list{
+			 background: #FFFFFF;
+			 border-radius: 20rpx;
+			 margin: 0 20rpx;
+			 padding: 0 20rpx;
+			 box-sizing: border-box;
+			 .list_li{
+				 height: 110rpx;
+				 display: flex;
+				 align-items: center;
+				 border-bottom:1px solid #f5f5f5;
+				 >img{
+					 width: 60rpx;
+					 height: 60rpx;
+				 }
+				 >text{
+					 font-size: 28rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #333333;
+					 line-height: 28rpx;
+					 display: inline-block;
+
+				 }
+				 .list_li_text{
+					 margin-left: 30rpx;
+					 width: 146rpx;
+				 }
+				 .list_li_text2{
+					 margin-left: 30rpx;
+					 width: 322rpx;
+				 }
+				 .list_li_text3{
+					 font-size: 24rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #FF3131;
+					 line-height: 24rpx;
+				 }
+			 }
+		 }
+     }
+		.empty{
+			text-align: center;
+			margin-top: 316rpx;
+			>img{
+				width: 336rpx;
+				height: 222rpx;
+				margin-left: 208rpx;
+			}
+			>view{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #E0E0E0;
+				line-height: 30rpx;
+				margin-top: 48rpx;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+</style>

+ 475 - 0
pages_supplier/transportCar/transportCarAdd.vue

@@ -0,0 +1,475 @@
+<!-- 运输车辆新增 -->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>*</view>
+				<view>车辆号牌:</view>
+				<input v-model="form.carCode" maxlength="10" type="text" placeholder-style="color:#999;" placeholder="请输入车辆号牌">
+			</view>
+		</view>
+		<view>
+
+		</view>
+		<view class="register_li2" v-for="(item,index) in carCredentialsDtos">
+			<view class="register_li_t"><text v-if="item.required==1" style="color: #f00;margin-right: 10rpx;">*</text>{{item.naturalName}}</view>
+			<view class="register_li_b">
+				<img class="register_li_b_img1" src="@/pages_supplier/images/Version3.0/icon_zc_scbg.png">
+				<img class="register_li_b_img2" v-if="item.naturalName" :src="baseUrl+item.naturalUrl">
+				<img class="register_li_b_img3" src="@/pages_supplier/images/Version3.0/icon_zc_sc.png" @click="selectImage(item)">
+			</view>
+			<view class="register_li_b2">
+				<view><text v-if="item.required==1" style="color: #f00;margin-right: 10rpx;">*</text>有效期</view>
+				<picker mode="date" @change="startChange(item,$event)">
+					<input class="picker-text"  disabled type="text" v-model="item.startTime" placeholder="开始时间">
+				</picker>
+				<view>-</view>
+				<picker mode="date" @change="endChange(item,$event)">
+					<input class="picker-text2"  disabled type="text" v-model="item.endTime" placeholder="结束时间">
+				</picker>
+			</view>
+			<view class="register_li_b3">{{item.remark}}</view>
+		</view>
+
+		<view class="sub_btn" @click="submitForm()">提交</view>
+	</view>
+</template>
+
+
+<script>
+    import {certificateList,transportCarAdd,transportCarDetail,transportCarAmend} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				form:{
+					carCode:'',
+				},
+				carCredentialsDtos:[],
+				status:null,//0添加1编辑
+				id:null,
+            }
+        },
+        onLoad(option) {
+			this.status=option.status;
+			this.id=option.id;
+        },
+        onShow(){
+
+        },
+
+       methods: {
+       		// 图片上传
+       		selectImage(item) {
+       		    let self = this;
+       		    wx.chooseImage({
+       		        count: 1,
+       		        sizeType: ["original", "compressed"],
+       		        sourceType: ["album", "camera"],
+       		        success: function(res) {
+       		            let tempFilePaths = res.tempFilePaths[0];
+       		            self.uploadImg(item,tempFilePaths);
+       		        }
+       		    });
+       		},
+       		async uploadImg(item,tempFilePaths){
+       		    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){
+       						item.naturalUrl=res.data.url;
+       					}else{
+       						uni.showToast({
+       							title: res.msg,
+       							icon:"none",
+       							mask:true,
+       							duration: 2000
+       						});
+       					}
+       		        },
+       		        fail: err => {},
+       		        complete: () => {
+       		            uni.hideLoading()
+       		        }
+       		    });
+       		},
+       		//删除图片
+       		delImg(index){
+       		    this.newData.imgList.splice(index,1);
+       		},
+       		//开始时间选中事件
+       		startChange(item,e){
+				if(new Date(e.target.value).getTime()>=new Date(item.endTime).getTime()){
+					 uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}else{
+					item.startTime=e.target.value
+				}
+       		},
+       		//结束时间选中事件
+       		endChange(item,e){
+				if(new Date(item.startTime).getTime()>=new Date(e.target.value).getTime()){
+					 uni.showToast({
+						title: '结束时间不能小于开始时间',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+				}else{
+					item.endTime=e.target.value
+				}
+       		},
+
+			//校验特殊字符
+			verify(){
+				if(!(/^1[3456789]\d{9}$/.test(this.form.phone))){
+				       uni.showToast({
+				       	title: '请输入正确的手机号',
+				       	icon:"none",
+				       	mask:true,
+				       	duration: 2000
+				       });
+				       this.form.phone='';
+				    }
+
+			},
+			//获取列表数据
+			async getList(){
+			    let _this = this;
+			    const {data} = await certificateList({type:3})
+			    if(data.code==200){
+					//重新渲染后台返回数据
+					data.data.forEach(function(item){
+						_this.carCredentialsDtos.push({'required':item.required,'naturalName':item.name,'naturalUrl':'','startTime':'','endTime':'','remark':item.remark,'certificateId':item.id})
+					})
+			    }
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await transportCarDetail(this.id)
+			    if(data.code==200){
+					let res=data.data
+					this.isAudit=res.isAudit;
+					this.form=res;
+
+					_this.carCredentialsDtos.forEach(function(item){
+						res.carCredentialsVos.forEach(function(item2){
+							if(item.certificateId==item2.certificateId){
+								item.naturalUrl=item2.naturalUrl
+								item.startTime=item2.startTime
+								item.endTime=item2.endTime
+							}
+						})
+					})
+			    }
+			},
+
+       		//注册提交
+       		async submitForm(){
+       			let _this = this;
+				let isPass=true;//判断是否为空
+				if(!this.form.carCode){
+					uni.showToast({
+						title: '请输入车辆号牌',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+       			//提交的时候过滤空数据
+				let arr=[];
+				for(let i=0;i<_this.carCredentialsDtos.length;i++){
+
+					if(_this.carCredentialsDtos[i].required==1){
+
+						if(!_this.carCredentialsDtos[i].naturalUrl){
+							isPass=false;
+							uni.showToast({
+							    title: '未上传'+_this.carCredentialsDtos[i].naturalName+',请上传'+_this.carCredentialsDtos[i].naturalName,
+							    icon:"none",
+							    mask:true,
+							    duration: 2000
+							});
+							return
+						}
+						if(!_this.carCredentialsDtos[i].startTime || !_this.carCredentialsDtos[i].endTime){
+							isPass=false;
+							uni.showToast({
+							    title: '请选择'+_this.carCredentialsDtos[i].naturalName+'有效期',
+							    icon:"none",
+							    mask:true,
+							    duration: 2000
+							});
+							return
+						}
+						arr.push(_this.carCredentialsDtos[i])
+					}else{
+						arr.push(_this.carCredentialsDtos[i])
+					}
+				}
+				// _this.carCredentialsDtos.forEach(function(item){
+				// 	if(item.required==1){
+
+				// 		if(!item.naturalUrl){
+				// 			isPass=false;
+				// 			uni.showToast({
+				// 			    title: '未上传'+item.naturalName+',请上传'+item.naturalName,
+				// 			    icon:"none",
+				// 			    mask:true,
+				// 			    duration: 2000
+				// 			});
+				// 			return
+				// 		}
+				// 		if(!item.startTime || !item.endTime){
+				// 			isPass=false;
+				// 			uni.showToast({
+				// 			    title: '请选择'+item.naturalName+'有效期',
+				// 			    icon:"none",
+				// 			    mask:true,
+				// 			    duration: 2000
+				// 			});
+				// 			return
+				// 		}
+				// 		arr.push(item)
+				// 	}else{
+				// 		arr.push(item)
+				// 	}
+				// })
+
+				if(isPass){
+					_this.form.carCredentialsDtos=arr;
+					if(this.status==0){//新增
+						const {data} = await transportCarAdd(_this.form);
+						if(data.code == 200){
+						    uni.showToast({
+						        title: '提交成功',
+						        icon:"none",
+						        mask:true,
+						        duration: 2000
+						    });
+						    setTimeout(function(){
+						       uni.redirectTo({
+						       	url: '/pages/supplierWorkbench',
+						       });
+						    },2000);
+						}
+					}else if(this.status==1){//编辑
+						_this.form.userCredentialsVos=null;
+						const {data} = await transportCarAmend(_this.form);
+						if(data.code == 200){
+						    uni.showToast({
+						        title: '提交成功',
+						        icon:"none",
+						        mask:true,
+						        duration: 2000
+						    });
+						    setTimeout(function(){
+						       uni.redirectTo({
+						       	url: '/pages/supplierWorkbench',
+						       });
+						    },2000);
+						}
+					}
+				}
+
+
+       		},
+
+           },
+		mounted(){
+			this.getList();
+			if(this.status==1){
+				this.getInfo();
+			}
+
+		},
+	}
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+        .register_li{
+			background #fff;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+				>input{
+					width 500rpx;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+			}
+		}
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:0 20rpx;
+			box-sizing: border-box;
+			.register_li_t{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 28rpx;
+				margin: 36rpx 0;
+			}
+			.register_li_b{
+				width: 450rpx;
+				height: 270rpx;
+				margin-left: 106rpx;
+				position: relative;
+				// >img:nth-child(1){
+				// 	width: 450rpx;
+				// 	height: 270rpx;
+				// 	position: absolute;
+				// 	left: 0;
+				// 	top: 0;
+				// }
+				// >img:nth-child(2){
+				// 	width: 100rpx;
+				// 	height: 100rpx;
+				// 	position: absolute;
+				// 	left: 187rpx;
+				// 	top: 86rpx;
+
+				// }
+				.register_li_b_img1{
+					width: 450rpx;
+					height: 270rpx;
+					position: absolute;
+					left: 0;
+					top: 0;
+				}
+				.register_li_b_img2{
+					width: 450rpx;
+					height: 270rpx;
+					position: absolute;
+					left: 0;
+					top: 0;
+				}
+				.register_li_b_img3{
+					width: 100rpx;
+					height: 100rpx;
+					position: absolute;
+					left: 187rpx;
+					top: 86rpx;
+				}
+			}
+			.register_li_b2{
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+					margin-right: 120rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+			.register_li_b3{
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+				line-height: 36rpx;
+				margin: 34rpx 0;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 257 - 0
pages_supplier/transportCar/transportCarDetail.vue

@@ -0,0 +1,257 @@
+<!-- 运输人员新增 -->
+<template>
+    <view id="register">
+		<viwe v-if="isAudit!=1" :class="isAudit==0?'tip':'reject'">{{isAudit==0?'信息正在审核中,请耐心等待...':'您提交的审核被驳回,驳回原因为:'+auditContent}}</viwe>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>车牌号:</view>
+				<input v-model="form.carCode"  type="text" placeholder-style="color:#999;" >
+			</view>
+			<view v-for="(item,index) in form.carCredentialsVos">
+				<view class="driving_img" @click="lookItem(item)">
+					<view>{{item.naturalName}}:</view>
+					<img class="issue_img" :src="baseUrl+item.naturalUrl">
+				</view>
+				<view class="register_li_b2">
+					<view>有效期</view>
+					<picker mode="date"  disabled @change="dateChange">
+						<input class="picker-text"  disabled type="text" v-model="item.startTime" placeholder="开始时间">
+					</picker>
+					<view>-</view>
+					<picker mode="date"  disabled @change="dateChange">
+						<input class="picker-text2"  disabled type="text" v-model="item.endTime" placeholder="结束时间">
+					</picker>
+				</view>
+			</view>
+		</view>
+		<view class="sub_btn" v-if="isAudit==1" @click="subBnt()">编辑</view>
+		<view class="sub_btn" v-if="isAudit==2" @click="subBnt()">重新提交</view>
+	</view>
+</template>
+
+<script>
+    import {transportCarDetail} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				form:{
+					carCode:'',
+				},
+				id:'',
+				isAudit:1,//是否已经审核(0=未审核,1=已经审核,2=审核未通过
+				auditContent:'',//驳回时审核内容
+            }
+        },
+        onLoad(option) {
+			this.id=option.id;
+        },
+        onShow(){
+
+
+        },
+
+        methods: {
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await transportCarDetail(this.id)
+			    if(data.code==200){
+					let res=data.data
+					this.isAudit=res.isAudit;
+					this.form=res;
+					 let arr=[];
+					  _this.form.carCredentialsVos.forEach(function(item,idnex) {
+						if(item.naturalUrl && item.startTime && item.endTime){
+						  arr.push(item)
+						}
+					  })
+					  _this.form.carCredentialsVos=arr
+					//驳回
+					if(res.syntheticalAudit){
+						this.auditContent=res.syntheticalAudit.auditContent
+					}
+			    }
+			},
+			subBnt(){
+				uni.redirectTo({
+				    url:'/pages_supplier/transportCar/transportCarAdd?status=1&id='+this.id
+				});
+			},
+			lookItem(item){
+				//查看图片
+				wx.previewImage({
+					urls: [config.base_url+item.naturalUrl], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+
+
+        },
+		mounted() {
+			this.getInfo();
+		}
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+		/* 审核中 */
+		.tip{
+			width: 750rpx;
+			background: rgba(255,144,0,0.2);
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FF9000;
+			line-height: 28rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+		/* 驳回 */
+		.reject{
+			width: 750rpx;
+			background: #F3DCDC;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #DC0000;
+			line-height: 36rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+        .register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					width 500rpx;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333;
+				}
+			}
+			/* 驾驶证 */
+			.driving_img{
+				margin:34rpx 20rpx 0;
+				display flex;
+				justify-content: space-between;
+				border-bottom: 1px solid #F5F5F5;
+				padding-bottom: 28rpx;
+				box-sizing: border-box;
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:270rpx;
+				}
+			}
+			/* 有效期 */
+			.register_li_b2{
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				margin:0 20rpx 0;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+					margin-left: 158rpx;
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 234 - 0
pages_supplier/transportPerson/transportPerson.vue

@@ -0,0 +1,234 @@
+<!--运输人员管理-->
+<template>
+    <view id="transportPerson">
+		<view class="tabTitle">
+			<view class="tabTitle_li" @tap="tabClick(index)"  :key="index" v-for="(item,index) in tabText">
+				<view :class="{on:curTab==index}" class="tabTitle_text">{{item}}</view>
+			    <view :class="{on:curTab==index}" class="tabTitle_across"></view>
+			</view>
+		</view>
+		<scroll-view scroll-y @scrolltolower="scrollGet" class="scroll-box">
+		    <view class="list" >
+				<view class="list_li" @click="detailClick(item)" v-for="(item,index) in dataList">
+					<img class="for-back-img" src="@/pages_supplier/images/Version3.0/icon_ysry_ry.png">
+					<text class="list_li_text">{{item.userName}}</text>
+					<text class="list_li_text2">{{item.phone}}</text>
+					<text class="list_li_text3" v-if="item.pastDue==1">证照过期</text>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="empty" v-if="pageType==2">
+			<img class="for-back-img" src="@/pages_supplier/images/Version3.0/img_ysrygl_zwsj.png">
+			<view>暂无数据</view>
+		</view>
+		<view class="sub_btn" @click="addBtn()">新增运输人员</view>
+	</view>
+</template>
+
+<script>
+	import { transportUserList } from '@/api/apiDemo/index.js'
+    export default {
+        name: "transportPerson",
+        data() {
+            return {
+
+				pageType:1,
+				//列表请求参数
+				params:{
+				   isAudit:1,//是否已经审核(0=未审核,1=已经审核,2=审核未通过
+				},
+				userType:uni.getStorageSync('userType'),
+				curTab:0,
+				tabText:['已通过','待审核','未通过'],
+                dataList:[],
+            }
+        },
+        onLoad() {
+
+        },
+        onShow() {
+
+        },
+		mounted(){
+			 this.getList();
+		},
+        methods: {
+			//顶部tab点击
+			tabClick(index) {
+				this.curTab = index;
+				if(index==0){
+					this.params.isAudit=1
+				}else if(index==1){
+					this.params.isAudit=0
+				}else if(index==2){
+					this.params.isAudit=2
+				}
+
+			    this.getList();
+			},
+			//滚动加载事件
+			scrollGet(){
+			    if(this.getData.getType){
+			        this.getData.pageNum += 1;
+			        this.getList();
+			    }
+			},
+			addBtn(){
+				uni.redirectTo({
+				    url:'/pages_supplier/transportPerson/transportPersonAdd?status=0'
+				});
+			},
+			detailClick(d){
+				let id=d.id;
+				uni.redirectTo({
+				    url:'/pages_supplier/transportPerson/transportPersonDetail?id='+id
+				});
+			},
+			//获取列表数据
+			async getList(){
+			    let _this = this;
+				_this.dataList=[];
+			    const {data} = await transportUserList(_this.params)
+			    if(data.code==200){
+					let res=data.data;
+					if(res.length>0){
+						this.dataList=res
+						this.pageType=1
+					}else{
+						this.pageType=2
+					}
+
+			    }
+			},
+
+        }
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #transportPerson {
+        height: 100%;
+        width: 100%;
+		flex :1;
+        display flex;
+        flex-direction column
+        overflow hidden
+		.tabTitle{
+			display flex;
+			width:100%;
+			height: 100rpx;
+			background: #fff;
+			margin-bottom 16rpx;
+
+			.tabTitle_li{
+				width:146rpx;
+				text-align center;
+				margin-top: 16rpx;
+				.tabTitle_text{
+					display: inline-block;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 64rpx;
+					&.on{
+						color:#0183FA;
+					}
+				}
+				.tabTitle_across{
+					width: 50rpx;
+					height: 6rpx;
+					background: #0183FA;
+					border-radius: 3rpx;
+					margin-left 50rpx;
+					display none;
+					&.on{
+						display block;
+					}
+				}
+
+			}
+
+
+		}
+        .scroll-box{
+        // flex:1;
+         overflow-y scroll;
+		 .list{
+			 background: #FFFFFF;
+			 border-radius: 20rpx;
+			 margin: 0 20rpx;
+			 padding: 0 20rpx;
+			 box-sizing: border-box;
+			 .list_li{
+				 height: 110rpx;
+				 display: flex;
+				 align-items: center;
+				 border-bottom:1px solid #f5f5f5;
+				 >img{
+					 width: 60rpx;
+					 height: 60rpx;
+				 }
+				 >text{
+					 font-size: 28rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #333333;
+					 line-height: 28rpx;
+					 display: inline-block;
+
+				 }
+				 .list_li_text{
+					 margin-left: 30rpx;
+					 width: 126rpx;
+				 }
+				 .list_li_text2{
+					 margin-left: 30rpx;
+					 width: 322rpx;
+				 }
+				 .list_li_text3{
+					 font-size: 24rpx;
+					 font-family: PingFang SC;
+					 font-weight: 500;
+					 color: #FF3131;
+					 line-height: 24rpx;
+				 }
+			 }
+		 }
+     }
+		.empty{
+			text-align: center;
+			margin-top: 316rpx;
+			>img{
+				width: 336rpx;
+				height: 222rpx;
+				margin-left: 208rpx;
+			}
+			>view{
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #E0E0E0;
+				line-height: 30rpx;
+				margin-top: 48rpx;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+</style>

+ 496 - 0
pages_supplier/transportPerson/transportPersonAdd.vue

@@ -0,0 +1,496 @@
+<!-- 运输人员新增 -->
+<template>
+    <view id="register">
+		<view class="register_li">
+			<view class="register_li_min">
+				<view>*</view>
+				<view>姓名:</view>
+				<input v-model="form.userName"  maxlength="10"  type="text" placeholder-style="color:#999;" placeholder="请输入姓名">
+			</view>
+			<view class="register_li_min" style="border: none;">
+			    <view>*</view>
+				<view>联系方式:</view>
+				<input v-model="form.phone"   type="text" placeholder-style="color:#999;" placeholder="请输入联系方式">
+			</view>
+		</view>
+		<view class="register_li2"  v-for="(item,index) in userCredentialsDtos">
+			<view class="register_li_t"><text v-if="item.required==1" style="color: #f00;margin-right: 10rpx;">*</text>{{item.naturalName}}</view>
+			<view class="register_li_b">
+				<img class="register_li_b_img1" src="@/pages_supplier/images/Version3.0/icon_zc_scbg.png">
+				<img class="register_li_b_img2" v-if="item.naturalName" :src="baseUrl+item.naturalUrl">
+				<img class="register_li_b_img3" src="@/pages_supplier/images/Version3.0/icon_zc_sc.png" @click="selectImage(item)">
+			</view>
+			<view class="register_li_b2">
+				<view><text v-if="item.required==1" style="color: #f00;margin-right: 10rpx;">*</text>有效期</view>
+				<picker mode="date" @change="startChange(item,$event)">
+					<input class="picker-text"  disabled type="text" v-model="item.startTime" placeholder="开始时间">
+				</picker>
+				<view>-</view>
+				<picker mode="date" @change="endChange(item,$event)">
+					<input class="picker-text2"  disabled type="text" v-model="item.endTime"  placeholder="结束时间">
+				</picker>
+			</view>
+			<view class="register_li_b3">{{item.remark}}</view>
+		</view>
+
+		<view class="sub_btn" @click="submitForm()">提交</view>
+	</view>
+</template>
+
+<script>
+    import {certificateList,transportUser,transportUserDetail,transportUserAmend} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				form:{
+					userName:'',
+					phone:'',
+
+				},
+				userCredentialsDtos:[],
+				status:null,//0添加1编辑
+				id:null,
+            }
+        },
+        onLoad(option) {
+			this.status=option.status;
+			this.id=option.id;
+        },
+        onShow(){
+
+        },
+
+       methods: {
+       		// 图片上传
+       		selectImage(item) {
+       		    let self = this;
+       		    wx.chooseImage({
+       		        count: 1,
+       		        sizeType: ["original", "compressed"],
+       		        sourceType: ["album", "camera"],
+       		        success: function(res) {
+       		            let tempFilePaths = res.tempFilePaths[0];
+       		            self.uploadImg(item,tempFilePaths);
+       		        }
+       		    });
+       		},
+       		async uploadImg(item,tempFilePaths){
+       		    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){
+       						item.naturalUrl=res.data.url;
+       					}else{
+       						uni.showToast({
+       							title: res.msg,
+       							icon:"none",
+       							mask:true,
+       							duration: 2000
+       						});
+       					}
+       		        },
+       		        fail: err => {},
+       		        complete: () => {
+       		            uni.hideLoading()
+       		        }
+       		    });
+       		},
+       		//删除图片
+       		delImg(index){
+       		    this.newData.imgList.splice(index,1);
+       		},
+       		//开始时间选中事件
+       		startChange(item,e){
+       			if(new Date(e.target.value).getTime()>=new Date(item.endTime).getTime()){
+       				 uni.showToast({
+       					title: '结束时间不能小于开始时间',
+       					icon:"none",
+       					mask:true,
+       					duration: 2000
+       				});
+       			}else{
+       				item.startTime=e.target.value
+       			}
+       		},
+       		//结束时间选中事件
+       		endChange(item,e){
+       			if(new Date(item.startTime).getTime()>=new Date(e.target.value).getTime()){
+       				 uni.showToast({
+       					title: '结束时间不能小于开始时间',
+       					icon:"none",
+       					mask:true,
+       					duration: 2000
+       				});
+       			}else{
+       				item.endTime=e.target.value
+       			}
+       		},
+
+			//校验特殊字符
+			verify(){
+				if(!(/^1[3456789]\d{9}$/.test(this.form.phone))){
+				       uni.showToast({
+				       	title: '请输入正确的手机号',
+				       	icon:"none",
+				       	mask:true,
+				       	duration: 2000
+				       });
+				       this.form.phone='';
+				    }
+
+			},
+			//获取列表数据
+			async getList(){
+			    let _this = this;
+			    const {data} = await certificateList({type:2})
+			    if(data.code==200){
+					//重新渲染后台返回数据
+					data.data.forEach(function(item){
+						_this.userCredentialsDtos.push({'required':item.required,'naturalName':item.name,'naturalUrl':'','startTime':'','endTime':'','remark':item.remark,'certificateId':item.id})
+					})
+			    }
+			},
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await transportUserDetail(this.id)
+			    if(data.code==200){
+					let res=data.data
+					this.isAudit=res.isAudit;
+					this.form=res;
+
+					_this.userCredentialsDtos.forEach(function(item){
+						res.userCredentialsVos.forEach(function(item2){
+							if(item.certificateId==item2.certificateId){
+								item.naturalUrl=item2.naturalUrl
+								item.startTime=item2.startTime
+								item.endTime=item2.endTime
+							}
+						})
+					})
+			    }
+			},
+
+       		//注册提交
+       		async submitForm(){
+       			let _this = this;
+				let isPass=true;
+				if(!this.form.userName){
+					uni.showToast({
+						title: '请输入联系人姓名',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!this.form.phone){
+					uni.showToast({
+						title: '请输入手机号!',
+						icon:"none",
+						mask:true,
+						duration: 2000
+					});
+					return
+				}
+				if(!(/^1[3456789]\d{9}$/.test(this.form.phone))){
+				   uni.showToast({
+					title: '请输入正确的手机号!',
+					icon:"none",
+					mask:true,
+					duration: 2000
+				   });
+				   return
+				}
+       			//提交的时候过滤空数据
+				let arr=[];
+				for(let i=0;i<_this.userCredentialsDtos.length;i++){
+
+					if(_this.userCredentialsDtos[i].required==1){
+
+						if(!_this.userCredentialsDtos[i].naturalUrl){
+							isPass=false;
+							uni.showToast({
+							    title: '未上传'+_this.userCredentialsDtos[i].naturalName+',请上传'+_this.userCredentialsDtos[i].naturalName,
+							    icon:"none",
+							    mask:true,
+							    duration: 2000
+							});
+							return
+						}
+						if(!_this.userCredentialsDtos[i].startTime || !_this.userCredentialsDtos[i].endTime){
+							isPass=false;
+							uni.showToast({
+							    title: '请选择'+_this.userCredentialsDtos[i].naturalName+'有效期',
+							    icon:"none",
+							    mask:true,
+							    duration: 2000
+							});
+							return
+						}
+						arr.push(_this.userCredentialsDtos[i])
+					}else{
+						arr.push(_this.userCredentialsDtos[i])
+					}
+				}
+				// let arr=[];
+				// _this.userCredentialsDtos.forEach(function(item){
+				// 	if(item.required==1){
+				// 		if(!item.naturalUrl){
+				// 			isPass=false;
+				// 			uni.showToast({
+				// 			    title: '未上传'+item.naturalName+',请上传'+item.naturalName,
+				// 			    icon:"none",
+				// 			    mask:true,
+				// 			    duration: 2000
+				// 			});
+				// 			return
+				// 		}
+				// 		if(!item.startTime || !item.endTime){
+				// 			isPass=false;
+				// 			uni.showToast({
+				// 			    title: '请选择'+item.naturalName+'有效期',
+				// 			    icon:"none",
+				// 			    mask:true,
+				// 			    duration: 2000
+				// 			});
+				// 			return
+				// 		}
+				// 		arr.push(item)
+				// 	}else{
+				// 		arr.push(item)
+				// 	}
+				// })
+				if(isPass){
+					_this.form.userCredentialsDtos=arr;
+					if(this.status==0){//新增
+						const {data} = await transportUser(_this.form);
+						if(data.code == 200){
+						    uni.showToast({
+						        title: '提交成功',
+						        icon:"none",
+						        mask:true,
+						        duration: 2000
+						    });
+						    setTimeout(function(){
+						       uni.redirectTo({
+						       	url: '/pages/supplierWorkbench',
+						       });
+						    },2000);
+						}
+					}else if(this.status==1){//编辑
+						_this.form.userCredentialsVos=null;
+						const {data} = await transportUserAmend(_this.form);
+						if(data.code == 200){
+						    uni.showToast({
+						        title: '提交成功',
+						        icon:"none",
+						        mask:true,
+						        duration: 2000
+						    });
+						    setTimeout(function(){
+						       uni.redirectTo({
+						       	url: '/pages/supplierWorkbench',
+						       });
+						    },2000);
+						}
+					}
+				}
+       		},
+
+           },
+		mounted(){
+			this.getList();
+			if(this.status==1){
+				this.getInfo();
+			}
+
+		},
+	}
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+       .register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+
+				>input{
+					width 490rpx;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+			}
+		}
+		.register_li2{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:0 20rpx;
+			box-sizing: border-box;
+			.register_li_t{
+				font-size: 28rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333333;
+				line-height: 28rpx;
+				margin: 36rpx 0;
+			}
+			.register_li_b{
+				width: 450rpx;
+				height: 270rpx;
+				margin-left: 106rpx;
+				position: relative;
+				// >img:nth-child(1){
+				// 	width: 450rpx;
+				// 	height: 270rpx;
+				// 	position: absolute;
+				// 	left: 0;
+				// 	top: 0;
+				// }
+				// >img:nth-child(2){
+				// 	width: 100rpx;
+				// 	height: 100rpx;
+				// 	position: absolute;
+				// 	left: 187rpx;
+				// 	top: 86rpx;
+
+				// }
+				.register_li_b_img1{
+					width: 450rpx;
+					height: 270rpx;
+					position: absolute;
+					left: 0;
+					top: 0;
+				}
+				.register_li_b_img2{
+					width: 450rpx;
+					height: 270rpx;
+					position: absolute;
+					left: 0;
+					top: 0;
+				}
+				.register_li_b_img3{
+					width: 100rpx;
+					height: 100rpx;
+					position: absolute;
+					left: 187rpx;
+					top: 86rpx;
+				}
+			}
+			.register_li_b2{
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+					line-height: 100rpx;
+					margin-right: 120rpx;
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+			.register_li_b3{
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #999999;
+				line-height: 36rpx;
+				margin: 34rpx 0;
+			}
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 263 - 0
pages_supplier/transportPerson/transportPersonDetail.vue

@@ -0,0 +1,263 @@
+<!-- 运输人员-详情-->
+<template>
+    <view id="register">
+		<viwe v-if="isAudit!=1" :class="isAudit==0?'tip':'reject'">{{isAudit==0?'信息正在审核中,请耐心等待...':'您提交的审核被驳回,驳回原因为:'+auditContent}}</viwe>
+		<view class="register_li">
+			<view class="register_li_min">
+				<view></view>
+				<view>姓名:</view>
+				<input v-model="form.userName" disabled type="text" placeholder="请输入姓名">
+			</view>
+			<view class="register_li_min">
+			    <view></view>
+				<view>联系方式:</view>
+				<input v-model="form.phone" disabled  type="text" placeholder="请输入联系方式">
+			</view>
+			<view v-for="(item,index) in form.userCredentialsVos">
+				<view class="driving_img" @click="lookItem(item)">
+					<view>{{item.naturalName}}:</view>
+					<img  class="issue_img"  :src="baseUrl+item.naturalUrl">
+				</view>
+				<view class="register_li_b2">
+					<view>有效期</view>
+					<picker mode="date" disabled @change="dateChange">
+						<input class="picker-text"  disabled type="text" v-model="item.startTime" placeholder="开始时间">
+					</picker>
+					<view>-</view>
+					<picker mode="date"  disabled @change="dateChange">
+						<input class="picker-text2"  disabled type="text" v-model="item.endTime" placeholder="结束时间">
+					</picker>
+				</view>
+			</view>
+		</view>
+		<view class="sub_btn" v-if="isAudit==1" @click="subBnt()">编辑</view>
+		<view class="sub_btn" v-if="isAudit==2" @click="subBnt()">重新提交</view>
+	</view>
+</template>
+
+<script>
+    import {transportUserDetail} from '@/api/apiDemo/index.js'
+	import { config } from '@/api/request/config.js'
+    export default {
+        data() {
+            return {
+				baseUrl:config.base_url,
+				form:{
+					userName:'',
+					phone:'',
+				},
+				id:'',
+				isAudit:1,//是否已经审核(0=未审核,1=已经审核,2=审核未通过
+				auditContent:'',//驳回时审核内容
+            }
+        },
+        onLoad(option) {
+			this.id=option.id;
+        },
+        onShow(){
+
+
+        },
+
+        methods: {
+			//获取详情
+			async getInfo(){
+			    let _this = this;
+			    const {data} = await transportUserDetail(this.id)
+			    if(data.code==200){
+					let res=data.data
+					this.isAudit=res.isAudit;
+					this.form=res;
+					let arr=[];
+					 _this.form.userCredentialsVos.forEach(function(item,idnex) {
+						if(item.naturalUrl && item.startTime && item.endTime){
+						  arr.push(item)
+						}
+					 })
+					 _this.form.userCredentialsVos=arr
+					//驳回
+					if(res.syntheticalAudit){
+						this.auditContent=res.syntheticalAudit.auditContent
+					}
+			    }
+			},
+			subBnt(){
+				uni.redirectTo({
+				    url:'/pages_supplier/transportPerson/transportPersonAdd?status=1&id='+this.id
+				});
+			},
+			lookItem(item){
+				//查看图片
+				wx.previewImage({
+					urls: [config.base_url+item.naturalUrl], //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
+					current: '', // 当前显示图片的http链接,默认是第一个
+					success: function(res) {},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+
+
+        },
+		mounted() {
+			this.getInfo();
+		}
+    }
+</script>
+
+<style lang="stylus" scoped>
+    #register{
+        height:auto;
+        width:100%;
+        display flex
+        flex-direction column;
+		padding-bottom: 220rpx;
+		/* 审核中 */
+		.tip{
+			width: 750rpx;
+			background: rgba(255,144,0,0.2);
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FF9000;
+			line-height: 28rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+		/* 驳回 */
+		.reject{
+			width: 750rpx;
+			background: #F3DCDC;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #DC0000;
+			line-height: 36rpx;
+			padding: 36rpx 20rpx;
+			box-sizing: border-box;
+		}
+        .register_li{
+			background #fff;
+			border-radius:20rpx;
+			margin:20rpx 20rpx 0;
+			padding:20rpx 0;
+			box-sizing: border-box;
+			.register_li_min{
+				margin:0 26rpx;
+				display flex;
+				align-items center;
+				border-bottom: 1px solid #F5F5F5;
+				view{
+					line-height:100rpx;
+					font-size:28rpx;
+				}
+				view:nth-child(1){
+					color:red;
+					line-height:28rpx;
+					margin-right: 12rpx;
+				}
+				view:nth-child(2){
+					width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+
+				>input{
+					width 500rpx;
+					text-align: right;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333;
+				}
+			}
+			/* 驾驶证 */
+			.driving_img{
+				margin:34rpx 20rpx 0;
+				display flex;
+				justify-content: space-between;
+				border-bottom: 1px solid #F5F5F5;
+				padding-bottom: 28rpx;
+				box-sizing: border-box;
+				view{
+					//width:140rpx;
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #999999;
+				}
+				.issue_img{
+					width: 210rpx;
+					height: 210rpx;
+					border-radius: 10rpx;
+					margin-left:250rpx;
+				}
+			}
+			/* 有效期 */
+			.register_li_b2{
+				border-bottom: 1px solid #f5f5f5;
+				height: 100rpx;
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				margin:0 20rpx 0;
+				>view:nth-child(1){
+					font-size: 28rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+					line-height: 100rpx;
+
+				}
+				.picker-text{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+					margin-left: 158rpx;
+				}
+				>view:nth-child(2){
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+				}
+				.picker-text2{
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #CCCCCC;
+					line-height: 100rpx;
+					width: 188rpx;
+					text-align: right;
+				}
+			}
+
+		}
+		/* 按钮 */
+		.sub_btn{
+			width: 650rpx;
+			height: 100rpx;
+			background: #0183FA;
+			border-radius: 20rpx;
+			font-size: 28rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 100rpx;
+			text-align: center;
+			margin-left: 50rpx;
+			position: fixed;
+			bottom:30rpx;
+			z-index: 1000;
+		}
+	}
+	/deep/.input-value-border{
+		display :none !important;
+	}
+</style>

+ 8 - 8
utils/homeConfig.js

@@ -106,19 +106,19 @@ let routeDataList = [
 		buttonType:"page",
 		buttonType:"page",
 	},
 	},
 	{
 	{
-		name: "安全检查",
+		name: "气瓶管理",
 		limits:"",
 		limits:"",
-		route: "studentSafetyInspect",
-		routeUrl: "/pages_manage/workbench/problemRectification/rectifyList",
-		img: require('@/images/basicsModules/icon_sy_aqjc.png'),
+		route: "studentGasBottle",
+		routeUrl: "/pages_student/gasBottle/gasManage/gasManage",
+		img: require('@/images/basicsModules/icon_sy_qpgl.png'),
 		buttonType:"page",
 		buttonType:"page",
 	},
 	},
 	{
 	{
-		name: "气瓶管理",
+		name: "安全检查",
 		limits:"",
 		limits:"",
-		route: "studentGas",
-		routeUrl: "/pages_student/gasManage/gasManage",
-		img: require('@/images/basicsModules/icon_sy_qpgl.png'),
+		route: "studentSafetyInspect",
+		routeUrl: "/pages_manage/workbench/problemRectification/rectifyList",
+		img: require('@/images/basicsModules/icon_sy_aqjc.png'),
 		buttonType:"page",
 		buttonType:"page",
 	},
 	},
 	{
 	{