heyang hai 5 meses
pai
achega
4fbad2ef55

+ 2 - 2
api/request/config.js

@@ -4,7 +4,7 @@ const config = {
 	//base_url: 'http://192.168.1.9:8080',//柴
 	// base_url: 'http://192.168.1.24: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.43/api',//小飞
 	// base_url: 'http://192.168.1.20:8080',//志伟
 	// base_url: 'http://192.168.1.39:8080',//高升
@@ -20,7 +20,7 @@ const config = {
 	// base_url: 'https://lab.zjznai.com/api/', //暨大化材
 	// base_url: 'https://lab.zjznai.com/kdwclabSystem/', //矿大文昌地址
 	// base_url: 'https://znyj.zjznai.suda.edu.cn/labSystem/', //苏大临时地址
-	 base_url: 'https://labcontrol.nwafu.edu.cn/api/', //西北农林
+	// base_url: 'https://labcontrol.nwafu.edu.cn/api/', //西北农林
 	// base_url: 'https://lab.zjznai.com/labapp/', //43测试
 }
 export {

+ 57 - 1
pages/api/index.js

@@ -171,8 +171,64 @@ export const systemAppletRolePermission = (data) => {
 		data: data,
 	})
 };
+/* 数据看板 */
+//人数统计
+export const reportAppStatisticsCountStatistics = (data) => {
+	return apiResquest({
+    url: '/report/app/statistics/countStatistics',
+		method: 'GET',
+		data: data,
+	})
+};
+//学院人员设备列表
+export const reportAppStatisticsPersonDeviceSafety = (data) => {
+	return apiResquest({
+    url: '/report/app/statistics/personDeviceSafety',
+		method: 'GET',
+		data: data,
+	})
+};
+//危险源
+export const reportAppStatisticsHazardTotalSort = (data) => {
+	return apiResquest({
+    url: '/report/app/statistics/hazardTotalSort',
+		method: 'GET',
+		data: data,
+	})
+};
+//危化品
+export const reportAppStatisticsChemicalStockSort = (data) => {
+	return apiResquest({
+    url: '/report/app/statistics/chemicalStockSort',
+		method: 'GET',
+		data: data,
+	})
+};
+//安全隐患-查询计划标题
+export const securityCheckPlanPlantList  = (data) => {
+    return apiResquest({
+        url: `/security/checkPlan/plantList`,
+        method: 'POST',
+        data: {...data}
+    })
+};
+//安全隐患-安全隐患排行
 
-
+export const reportAppStatisticsDangerSort = (data) => {
+	return apiResquest({
+    url: '/report/app/statistics/dangerSort',
+		method: 'GET',
+		data: data,
+	})
+};
+//安全隐患-暂无法整改
+export const securityCheckDangerNotHazardOneCollect = (data) => {
+	return apiResquest({
+    url: '/security/checkDanger/notHazardOneCollect',
+		method: 'GET',
+		data: data,
+	})
+};
 
 /************************扫码相关************************/
 

+ 71 - 56
pages/views/dataBoard/dataBoard.vue

@@ -11,22 +11,22 @@
 			</view>
 			<view class="header-b">
 				<view class="header-b-li">
-					<view class="header-b-li-t color-A">786</view>
+					<view class="header-b-li-t color-A">{{visitorCount}}</view>
 					<view class="header-b-li-b">今日访问人数</view>
 				</view>
 				<view class="line"></view>
 				<view class="header-b-li">
-					<view class="header-b-li-t color-B">165</view>
+					<view class="header-b-li-t color-B">{{labOccupancyCount}}</view>
 					<view class="header-b-li-b">今日实验人数</view>
 				</view>
 				<view class="line"></view>
 				<view class="header-b-li">
-					<view class="header-b-li-t color-C">39</view>
+					<view class="header-b-li-t color-C">{{dutyCount}}</view>
 					<view class="header-b-li-b">今日值日人数</view>
 				</view>
 				<view class="line"></view>
 				<view class="header-b-li">
-					<view class="header-b-li-t color-D">562</view>
+					<view class="header-b-li-t color-D">{{checkCount}}</view>
 					<view class="header-b-li-b">今日检查次数</view>
 				</view>
 			</view>
@@ -58,21 +58,39 @@
 	import {
 		navBar
 	} from '@/pages/component/navbar.vue'
-	import {labPage} from '@/pages/views/dataBoard/labPage.vue'
-	import {hazardSources} from '@/pages/views/dataBoard/hazardSources.vue'
-	import {hazardousChemicals} from '@/pages/views/dataBoard/hazardousChemicals.vue'
-	import {securityHidden} from '@/pages/views/dataBoard/securityHidden.vue'
-	import {warningDispose} from '@/pages/views/dataBoard/warningDispose.vue'
-	import {equipmentControl} from '@/pages/views/dataBoard/equipmentControl.vue'
-	import {daYiReservation} from '@/pages/views/dataBoard/daYiReservation.vue'
-	import {cagePosition} from '@/pages/views/dataBoard/cagePosition.vue'
-	import {resourceReservation} from '@/pages/views/dataBoard/resourceReservation.vue'
+	import {
+		labPage
+	} from '@/pages/views/dataBoard/labPage.vue'
+	import {
+		hazardSources
+	} from '@/pages/views/dataBoard/hazardSources.vue'
+	import {
+		hazardousChemicals
+	} from '@/pages/views/dataBoard/hazardousChemicals.vue'
+	import {
+		securityHidden
+	} from '@/pages/views/dataBoard/securityHidden.vue'
+	import {
+		warningDispose
+	} from '@/pages/views/dataBoard/warningDispose.vue'
+	import {
+		equipmentControl
+	} from '@/pages/views/dataBoard/equipmentControl.vue'
+	import {
+		daYiReservation
+	} from '@/pages/views/dataBoard/daYiReservation.vue'
+	import {
+		cagePosition
+	} from '@/pages/views/dataBoard/cagePosition.vue'
+	import {
+		resourceReservation
+	} from '@/pages/views/dataBoard/resourceReservation.vue'
 	import {
 		config
 	} from '@/api/request/config.js'
 	import {
-
-	} from '@/pages_basics/api/index.js'
+		reportAppStatisticsCountStatistics
+	} from '@/pages/api/index.js'
 	export default {
 		name: "dataBoard",
 		components: {
@@ -89,7 +107,7 @@
 		},
 		data() {
 			return {
-				pageType:1,
+				pageType: 1,
 				rectangleLogo: uni.getStorageSync('rectangleLogo'),
 				navHeight: uni.getStorageSync('navHeight'),
 				title: '实验室安全智慧化管控系统',
@@ -102,9 +120,17 @@
 				},
 				dataList: [],
 				total: 0,
-				tabTextTow: ['实验室','危险源','危化品','安全隐患','预警处置','设备管控','大仪预约','笼位预约','资源预约'],
+				tabTextTow: ['实验室', '危险源', '危化品', '安全隐患', '预警处置', '设备管控', '大仪预约', '笼位预约', '资源预约'],
 				curTabTow: 0,
 				getDataType: false,
+				
+				visitorCount:0,
+				labOccupancyCount:0,
+				dutyCount:0,
+				checkCount:0,
+				
+				dataList:null,
+				
 			}
 		},
 		created() {
@@ -113,62 +139,47 @@
 		beforeMount() {
 
 		},
-		mounted() {},
+		mounted() {
+			this.reportAppStatisticsCountStatistics();
+		},
 		methods: {
 			//返回按钮
-			outButton(){
+			outButton() {
 				this.$parent.goHome();
 			},
 			//滚动加载事件
 			scrollGet() {
-				if (this.total / this.queryParams.pageSize <= this.queryParams.page) {
-					this.$set(this, 'getDataType', true);
-				} else {
-					this.queryParams.page += 1;
-					this.$nextTick(() => {
-						this.getList();
-					})
-				}
+
 			},
 			//顶部tab点击
 			tabClickTow(item, index) {
 				this.curTabTow = index;
-				this.pageType=index+1
+				this.pageType = index + 1
+			},
+			//人员统计
+			async reportAppStatisticsCountStatistics() {
+				let self = this;
+				const {
+					data
+				} = await reportAppStatisticsCountStatistics();
+				if (data.code == 200) {
+					this.$set(self, 'visitorCount', data.data.visitorCount);
+					this.$set(self, 'labOccupancyCount', data.data.labOccupancyCount);
+					this.$set(self, 'dutyCount', data.data.dutyCount);
+					this.$set(self, 'checkCount', data.data.checkCount);
+				}
 			},
-
 			async getList() {
 				let self = this;
-				let obj = JSON.parse(JSON.stringify(this.queryParams));
 				const {
 					data
-				} = await laboratoryAppletPassOutList(obj);
+				} = await reportAppStatisticsPersonDeviceSafety();
 				if (data.code == 200) {
-					let list = [];
-					if (this.queryParams.page != 1) {
-						list = JSON.parse(JSON.stringify(this.dataList));
-					}
-					data.data.records.forEach((item) => {
-						let num = 0;
-						list.forEach((minItem) => {
-							if (item.showInTime == minItem.showInTime) {
-								num++
-								minItem.list.push(item)
-							}
-						})
-						if (num == 0) {
-							list.push({
-								showInTime: item.showInTime,
-								list: [item]
-							})
-						}
-					})
-					this.$set(this, 'dataList', list);
-					this.$set(this, 'total', data.data.total);
-					if (data.data.total / this.queryParams.pageSize <= this.queryParams.page) {
-						this.$set(this, 'getDataType', true);
-					}
+					this.dataList = data.data;
 				}
 			},
+
+
 		},
 	}
 </script>
@@ -179,9 +190,11 @@
 		height: 100%;
 		width: 100%;
 		background: #363744;
-		.pageFlex{
+
+		.pageFlex {
 			display: flex;
 		}
+
 		.header {
 			width: 750rpx;
 			height: 476rpx;
@@ -289,11 +302,13 @@
 				}
 			}
 		}
+
 		.tabTitle_tow {
 			height: 80rpx;
 			white-space: nowrap;
 			display: inline-flex;
 			background: #3E414F;
+
 			.tabTitle_tow_li {
 				position: relative;
 				width: 152rpx;

+ 61 - 70
pages/views/dataBoard/hazardSources.vue

@@ -4,21 +4,21 @@
 		<view class="statistics">
 			<view class="statistics-t">
 				<view class="statistics-t-l">危险源总数:</view>
-				<view class="statistics-t-r">240</view>
+				<view class="statistics-t-r">{{hazardTotal}}</view>
 			</view>
 			<view class="statistics-b">
 				<view class="statistics-b-li">
-					<view class="statistics-b-li-t color-A">10</view>
+					<view class="statistics-b-li-t color-A">{{newHazard}}</view>
 					<view class="statistics-b-li-b">今日新增数</view>
 				</view>
 				<view class="line"></view>
 				<view class="statistics-b-li">
-					<view class="statistics-b-li-t color-B">30</view>
+					<view class="statistics-b-li-t color-B">{{hazardChemicals}}</view>
 					<view class="statistics-b-li-b">危险品数</view>
 				</view>
 				<view class="line"></view>
 				<view class="statistics-b-li">
-					<view class="statistics-b-li-t color-C">200</view>
+					<view class="statistics-b-li-t color-C">{{deviceNum}}</view>
 					<view class="statistics-b-li-b">冷热设备数</view>
 				</view>
 			</view>
@@ -35,8 +35,7 @@
 		<view class="table">
 			<uni-card>
 				<view style="height: 200px">
-					<zb-table :columns="column"  :stripe="false" :border="false"
-						:data="dataList"></zb-table>
+					<zb-table :columns="column" :stripe="false" :border="false" :data="dataList"></zb-table>
 				</view>
 			</uni-card>
 
@@ -49,8 +48,8 @@
 		config
 	} from '@/api/request/config.js'
 	import {
-
-	} from '@/pages_basics/api/index.js'
+		reportAppStatisticsHazardTotalSort
+	} from '@/pages/api/index.js'
 	export default {
 		name: "hazardSources",
 		components: {
@@ -100,6 +99,10 @@
 					page: 1,
 					pageSize: 10,
 				},
+				hazardTotal:0,
+				newHazard:0,
+				hazardChemicals:0,
+				deviceNum:0,
 				column: [{
 						type: 'index',
 						label: '排行',
@@ -108,64 +111,29 @@
 						align: 'center',
 					},
 					{
-						name: 'data1',
+						name: 'deptSortName',
 						label: '学院单位',
 						fixed: true,
 						width: 80,
 						align: 'center',
 					},
 					{
-						name: 'data2',
+						name: 'totalNumber',
 						label: '总数',
 						align: 'center',
 					},
 					{
-						name: 'data3',
+						name: 'newTotal',
 						label: '危化品数',
 						align: 'center',
 					},
 					{
-						name: 'data4',
+						name: 'todayAdded',
 						label: '冷热设备数',
 						align: 'center',
 					},
 				],
-				dataList: [{
-						data1: '植物保护',
-						data2: '42',
-						data3: '47',
-						data4: '22',
-						data5: '13',
-					},
-					{
-						data1: '资源环境',
-						data2: '33',
-						data3: '8',
-						data4: '32',
-						data5: '28',
-					},
-					{
-						data1: '生命科学',
-						data2: '30',
-						data3: '28',
-						data4: '10',
-						data5: '38',
-					},
-					{
-						data1: '园林艺术',
-						data2: '26',
-						data3: '23',
-						data4: '17',
-						data5: '54',
-					},
-					{
-						data1: '化学与药物',
-						data2: '19',
-						data3: '12',
-						data4: '11',
-						data5: '25',
-					},
-				],
+				dataList: [],
 				total: 0,
 			}
 		},
@@ -176,34 +144,57 @@
 
 		},
 		mounted() {
-			this.getServerData();
+			this.reportAppStatisticsHazardTotalSort();
 		},
 		methods: {
 			dateClick(index) {
 				this.dateIndex = index;
 			},
-
-			getServerData() {
-				//模拟从服务器获取数据时的延时
-				setTimeout(() => {
-					//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
-					let res = {
-						categories: ["化学与药物", "植物保护", "资源环境", "理学院", "园林艺术"],
-						series: [{
-								name: "危险品",
-								textColor: "#FFFFFF",
-								data: [54, 41, 36, 23, 21]
-							},
-							{
-								name: "冷热设备与特种设备",
-								textColor: "#FFFFFF",
-								data: [43, 36, 26, 11, 6]
+			//危化品
+			async reportAppStatisticsHazardTotalSort() {
+				let self = this;
+				const {
+					data
+				} = await reportAppStatisticsHazardTotalSort();
+				if (data.code == 200) {
+					this.$set(self, 'hazardTotal', data.data.hazardTotal);
+					this.$set(self, 'newHazard', data.data.newHazard);
+					this.$set(self, 'hazardChemicals', data.data.hazardChemicals);
+					this.$set(self, 'deviceNum', data.data.deviceNum);
+					//列表
+					this.dataList=data.data.hazardTotalSortSubs;
+					//图表
+					if(data.data.hazardTotalSortSubs[0]){
+						let name=[];
+						let list=[];
+						let list2=[];
+						data.data.hazardTotalSortSubs.forEach(function(item,index){
+							if(index<5){
+								name.push(item.deptSortName)
+								list.push(item.chemical)
+								list2.push(item.coolHotdevice)
 							}
-						]
-					};
-					this.chartData = JSON.parse(JSON.stringify(res));
-				}, 500);
-			},
+						})
+						let res = {
+							categories: name,
+							series: [{
+									name: "危险品",
+									textColor: "#FFFFFF",
+									data: list
+								},
+								{
+									name: "冷热设备与特种设备",
+									textColor: "#FFFFFF",
+									data: list2
+								}
+							]
+						};
+						this.chartData = JSON.parse(JSON.stringify(res));
+					}
+					
+				}
+			},	
+			
 		},
 	}
 </script>

+ 53 - 85
pages/views/dataBoard/hazardousChemicals.vue

@@ -4,21 +4,21 @@
 		<view class="statistics">
 			<view class="statistics-t">
 				<view class="statistics-t-l">危化品总数:</view>
-				<view class="statistics-t-r">1455 </view>
+				<view class="statistics-t-r">{{totalNumber}} </view>
 			</view>
 			<view class="statistics-b">
 				<view class="statistics-b-li">
-					<view class="statistics-b-li-t color-A">1769 kg</view>
+					<view class="statistics-b-li-t color-A">{{totalAmount}} kg</view>
 					<view class="statistics-b-li-b">总量</view>
 				</view>
 				<view class="line"></view>
 				<view class="statistics-b-li">
-					<view class="statistics-b-li-t color-B">14 </view>
+					<view class="statistics-b-li-t color-B">{{newTotal}} </view>
 					<view class="statistics-b-li-b">今日新增数</view>
 				</view>
 				<view class="line"></view>
 				<view class="statistics-b-li">
-					<view class="statistics-b-li-t color-C">115.3 kg</view>
+					<view class="statistics-b-li-t color-C">{{todayAdded}} kg</view>
 					<view class="statistics-b-li-b">今日新增量</view>
 				</view>
 			</view>
@@ -35,10 +35,10 @@
 				<view :class="index==0?'chartOne':(index==1?'chartTow':(index==2?'chartThree':'chartFive'))">
 					{{index+1}}
 				</view>
-				<view>{{item.data1}}</view>
-				<view>总数{{item.data2}}</view>
+				<view>{{item.deptSortName}}</view>
+				<view>总数{{item.totalNumber}}</view>
 				<view>|</view>
-				<view>今日新增{{item.data3}}</view>
+				<view>今日新增{{item.newTotal}}</view>
 				<img src="@/pages/images/dataBoard/dataBoard-icon2.png">
 			</view>
 		</view>
@@ -57,8 +57,8 @@
 		config
 	} from '@/api/request/config.js'
 	import {
-
-	} from '@/pages_basics/api/index.js'
+		reportAppStatisticsChemicalStockSort
+	} from '@/pages/api/index.js'
 	export default {
 		name: "hazardSources",
 		components: {
@@ -87,6 +87,10 @@
 					}
 				},
 				chartData: {},
+				totalNumber:0,
+				totalAmount:0,
+				newTotal:0,
+				todayAdded:0,
 				// 查询参数
 				queryParams: {
 					page: 1,
@@ -100,64 +104,29 @@
 						align: 'center',
 					},
 					{
-						name: 'data1',
+						name: 'deptSortName',
 						label: '学院单位',
 						fixed: true,
 						width: 80,
 						align: 'center',
 					},
 					{
-						name: 'data2',
+						name: 'totalNumber',
 						label: '总数',
 						align: 'center',
 					},
 					{
-						name: 'data3',
+						name: 'newTotal',
 						label: '总量',
 						align: 'center',
 					},
 					{
-						name: 'data4',
+						name: 'todayAdded',
 						label: '今日新增',
 						align: 'center',
 					},
 				],
-				dataList: [{
-						data1: '植物保护',
-						data2: '102',
-						data3: '47',
-						data4: '22',
-						data5: '13',
-					},
-					{
-						data1: '资源环境',
-						data2: '74',
-						data3: '8',
-						data4: '32',
-						data5: '18',
-					},
-					{
-						data1: '生命科学',
-						data2: '66',
-						data3: '28',
-						data4: '10',
-						data5: '8',
-					},
-					{
-						data1: '园林艺术',
-						data2: '56',
-						data3: '23',
-						data4: '17',
-						data5: '5',
-					},
-					{
-						data1: '化学与药物',
-						data2: '34',
-						data3: '12',
-						data4: '11',
-						data5: '21',
-					},
-				],
+				dataList: [],
 				total: 0,
 			}
 		},
@@ -168,49 +137,48 @@
 
 		},
 		mounted() {
-			this.getServerData();
+			this.reportAppStatisticsChemicalStockSort();
 		},
 		methods: {
 			dateClick(index) {
 				this.dateIndex = index;
 			},
-			getServerData() {
-				//模拟从服务器获取数据时的延时
-				setTimeout(() => {
-					//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
-					let res = {
-						series: [{
-							data: [{
-								"name": "植物保护",
-								"value": 50,
-								"labelText": "总量36.65kg",
-								"textColor": "#fff",
-							}, {
-								"name": "园林艺术",
-								"value": 30,
-								"labelText": "总量39.12kg",
-								"textColor": "#fff",
-							}, {
-								"name": "生命科学",
-								"value": 20,
-								"labelText": "总量42.56kg",
-								"textColor": "#fff",
-							}, {
-								"name": "理学院",
-								"value": 18,
-								"labelText": "总量56.00kg",
-								"textColor": "#fff",
-							}, {
-								"name": "农学院",
-								"value": 8,
-								"labelText": "总量88.88kg",
+			async reportAppStatisticsChemicalStockSort() {
+				let self = this;
+				const {
+					data
+				} = await reportAppStatisticsChemicalStockSort();
+				if (data.code == 200) {
+					this.$set(self, 'totalNumber', data.data.totalNumber);
+					this.$set(self, 'totalAmount', data.data.totalAmount);
+					this.$set(self, 'newTotal', data.data.newTotal);
+					this.$set(self, 'todayAdded', data.data.todayAdded);
+					//列表
+					this.dataList=data.data.chemicalStockSubs;
+					//图表
+					if(data.data.chemicalStockSubs[0]){
+						let list=[];
+						data.data.chemicalStockSubs.forEach(function(item,index){
+							if(index<5){
+								list.push({
+								"name": item.deptSortName,
+								"value": item.totalNumber,
+								"labelText": "总量"+item.totalNumber+'kg',
 								"textColor": "#fff",
+							})
+							}
+						})
+						let res = {
+							series: [{
+								data:list
 							}]
-						}]
-					};
-					this.chartData = JSON.parse(JSON.stringify(res));
-				}, 500);
-			},
+						};
+						this.chartData = JSON.parse(JSON.stringify(res));
+					}
+					
+				}
+			},	
+			
 		},
 	}
 </script>

+ 22 - 46
pages/views/dataBoard/labPage.vue

@@ -50,8 +50,8 @@
 		config
 	} from '@/api/request/config.js'
 	import {
-
-	} from '@/pages_basics/api/index.js'
+		reportAppStatisticsPersonDeviceSafety
+	} from '@/pages/api/index.js'
 	export default {
 		name: "labPage",
 		components: {
@@ -105,9 +105,9 @@
 					legend: {
 						show: true,
 						fontColor: '#fff',
-						position:'top',
-						fontSize:8,
-						margin:10,
+						position: 'top',
+						fontSize: 8,
+						margin: 10,
 					},
 					extra: {
 						tooltip: {
@@ -129,71 +129,36 @@
 				},
 				chartData: {},
 				column: [{
-						name: 'data1',
+						name: 'deptSortName',
 						label: '学院单位',
 						fixed: true,
 						width: 80,
 						align: 'center',
 					},
 					{
-						name: 'data2',
+						name: 'labCount',
 						label: '实验人数',
 						fixed: true,
 						width: 80,
 						align: 'center',
 					},
 					{
-						name: 'data3',
+						name: 'dutyCount',
 						label: '值班人数',
 						align: 'center',
 					},
 					{
-						name: 'data4',
+						name: 'checkCount',
 						label: '检查次数',
 						align: 'center',
 					},
 					{
-						name: 'data5',
+						name: 'overdueDevice',
 						label: '超期设备',
 						align: 'center',
 					},
 				],
-				dataList: [{
-						data1: '植物保护',
-						data2: '32',
-						data3: '47',
-						data4: '22',
-						data5: '13',
-					},
-					{
-						data1: '资源环境',
-						data2: '17',
-						data3: '8',
-						data4: '32',
-						data5: '28',
-					},
-					{
-						data1: '生命科学',
-						data2: '20',
-						data3: '28',
-						data4: '10',
-						data5: '38',
-					},
-					{
-						data1: '园林艺术',
-						data2: '19',
-						data3: '23',
-						data4: '17',
-						data5: '54',
-					},
-					{
-						data1: '化学与药物',
-						data2: '16',
-						data3: '12',
-						data4: '11',
-						data5: '25',
-					},
-				],
+				dataList: [],
 				total: 0,
 			}
 		},
@@ -206,6 +171,7 @@
 		},
 		mounted() {
 			this.getServerData();
+			this.getList();
 		},
 		methods: {
 
@@ -239,6 +205,16 @@
 					this.chartData = JSON.parse(JSON.stringify(res));
 				}, 500);
 			},
+
+			async getList() {
+				let self = this;
+				const {
+					data
+				} = await reportAppStatisticsPersonDeviceSafety();
+				if (data.code == 200) {
+					this.dataList = data.data;
+				}
+			},
 		},
 	}
 </script>

+ 130 - 121
pages/views/dataBoard/securityHidden.vue

@@ -1,10 +1,12 @@
 <!-- 数据看板-安全隐患 -->
 <template>
 	<view class="hazardSources">
-		<view class="small-title">
-			<view class="small-title-l">安全检查校级巡查计划标题标题标题标题标题</view>
-			<img class="small-title-r" src="@/pages/images/dataBoard/icon_06.png">
-		</view>
+		<picker @change="bindPickerChange" :value="pickerIndex" :range="pickerList" range-key="planTitle">
+			<view class="small-title">
+				<view class="small-title-l">{{pickerList[pickerIndex].planTitle}}</view>
+				<img class="small-title-r" src="@/pages/images/dataBoard/icon_06.png">
+			</view>
+		</picker>
 		<view class="chart">
 			<view class="chart-t">
 				<view class="chart-t-li" :class="chartIndex==index?'color-A':'color-B'" @click="chartClick(index)"
@@ -14,26 +16,12 @@
 				<qiun-data-charts type="column" :opts="opts" :echartsH5="true" :chartData="chartData" />
 			</view>
 			<view class="chart-b2" v-if="chartIndex==0">
-				<view class="chart-b2-li">
-					<view class="chart-b2-li-t">
-						<text>1</text>
-						<text>农学院</text>
-					</view>
-					<view class="chart-b2-li-b">70</view>
-				</view>
-				<view class="chart-b2-li">
+				<view class="chart-b2-li" v-for="(item,index) in hiddenChartBottom">
 					<view class="chart-b2-li-t">
-						<text>2</text>
-						<text>理学院</text>
+						<text>{{index+1}}</text>
+						<text>{{item.name}}</text>
 					</view>
-					<view class="chart-b2-li-b">61</view>
-				</view>
-				<view class="chart-b2-li">
-					<view class="chart-b2-li-t">
-						<text>3</text>
-						<text>生命科学</text>
-					</view>
-					<view class="chart-b2-li-b">54</view>
+					<view class="chart-b2-li-b">{{item.total}}</view>
 				</view>
 			</view>
 			<view class="chart-b-tow" v-if="chartIndex==1 || chartIndex==2">
@@ -61,7 +49,7 @@
 		<view class="table-tow" v-if="chartIndex!=0 && curTabTow==0">
 			<uni-card>
 				<view style="height: 200px">
-					<zb-table :columns="column2" :stripe="false" :border="false" :data="dataList"></zb-table>
+					<zb-table :columns="column2" :stripe="false" :border="false" :data="dataListTow"></zb-table>
 				</view>
 			</uni-card>
 		</view>
@@ -69,7 +57,7 @@
 		<view class="table-three" v-if="chartIndex!=0 && curTabTow==1">
 			<uni-card>
 				<view style="height: 200px">
-					<zb-table :columns="column3" :stripe="false" :border="false" :data="dataList"></zb-table>
+					<zb-table :columns="column3" :stripe="false" :border="false" :data="dataListThree"></zb-table>
 				</view>
 			</uni-card>
 		</view>
@@ -81,8 +69,10 @@
 		config
 	} from '@/api/request/config.js'
 	import {
-
-	} from '@/pages_basics/api/index.js'
+		securityCheckPlanPlantList,
+		reportAppStatisticsDangerSort,
+		securityCheckDangerNotHazardOneCollect,
+	} from '@/pages/api/index.js'
 	export default {
 		name: "hazardSources",
 		components: {
@@ -159,29 +149,29 @@
 						align: 'center',
 					},
 					{
-						name: 'data1',
+						name: 'deptSortName',
 						label: '学院单位',
 						fixed: true,
 						width: 80,
 						align: 'center',
 					},
 					{
-						name: 'data2',
+						name: 'totalNum',
 						label: '总隐患',
 						align: 'center',
 					},
 					{
-						name: 'data3',
+						name: 'rectifyNum',
 						label: '已整改',
 						align: 'center',
 					},
 					{
-						name: 'data4',
+						name: 'notRectifyNum',
 						label: '未整改',
 						align: 'center',
 					},
 					{
-						name: 'data5',
+						name: 'tempNum',
 						label: '暂无法整改',
 						align: 'center',
 					},
@@ -195,14 +185,14 @@
 						align: 'center',
 					},
 					{
-						name: 'data1',
+						name: 'name',
 						label: '一级指标',
 						fixed: true,
 						width: 80,
 						align: 'center',
 					},
 					{
-						name: 'data2',
+						name: 'num',
 						label: '隐患数',
 						align: 'center',
 					},
@@ -264,65 +254,16 @@
 					},
 
 				],
-				dataList: [{
-						data1: '植物保护',
-						data2: '102',
-						data3: '47',
-						data4: '22',
-						data5: '13',
-						data6: '4',
-						data7: '12',
-						data8: '23',
-						data9: '21',
-					},
-					{
-						data1: '资源环境',
-						data2: '74',
-						data3: '8',
-						data4: '32',
-						data5: '18',
-						data6: '2',
-						data7: '3',
-						data8: '23',
-						data9: '12',
-					},
-					{
-						data1: '生命科学',
-						data2: '66',
-						data3: '28',
-						data4: '10',
-						data5: '8',
-						data6: '56',
-						data7: '22',
-						data8: '13',
-						data9: '12',
-					},
-					{
-						data1: '园林艺术',
-						data2: '56',
-						data3: '23',
-						data4: '17',
-						data5: '5',
-						data6: '12',
-						data7: '24',
-						data8: '53',
-						data9: '14',
-					},
-					{
-						data1: '化学与药物',
-						data2: '34',
-						data3: '12',
-						data4: '11',
-						data5: '21',
-						data6: '54',
-						data7: '11',
-						data8: '23',
-						data9: '12',
-					},
-				],
+				dataList: [],
+				dataListTow: [],
+				dataListThree: [],
 				total: 0,
 				tabTextTow: ['一级指标', '学院单位'],
 				curTabTow: 0,
+				pickerList: [],
+				pickerIndex:0,
+				hiddenChartBottom:[],
+
 			}
 		},
 		created() {
@@ -332,49 +273,118 @@
 
 		},
 		mounted() {
-			this.getServerData();
+			this.securityCheckPlanPlantList();
 
 		},
 		methods: {
 			scrollGet() {
 
+			},
+			bindPickerChange(data) {
+				console.log(data)
+				this.pickerIndex = data.detail.value;
+				if(this.chartIndex==0){
+					//安全隐患排行
+					this.reportAppStatisticsDangerSort(this.pickerList[this.pickerIndex].planId)
+				}else if(this.chartIndex==1){
+					//一级指标排行
+					
+				}else if(this.chartIndex==2){
+					//暂无法整改
+					this.securityCheckDangerNotHazardOneCollect(this.pickerList[this.pickerIndex].planId)
+				}
 			},
 			chartClick(index) {
 				this.chartIndex = index;
-				this.getServerDataTow();
+				if(this.chartIndex==0){
+					//安全隐患排行
+					this.reportAppStatisticsDangerSort(this.pickerList[0].planId)
+				}else if(this.chartIndex==1){
+					//一级指标排行
+					
+				}else if(this.chartIndex==2){
+					//暂无法整改
+					this.securityCheckDangerNotHazardOneCollect(this.pickerList[0].planId)
+				}
 			},
 			//顶部tab点击
 			tabClickTow(item, index) {
 				this.curTabTow = index;
-
+				
 			},
-			getServerData() {
-				//模拟从服务器获取数据时的延时
-				setTimeout(() => {
-					//模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
-					let res = {
-						categories: ["化学与药品学院", "化学与药品学院", "化学与药品学院"],
-						series: [{
-								name: "已整改",
-								textColor: '#fff',
-								data: [18, 27, 21, ]
-
-							},
-							{
-								name: "未整改",
-								textColor: '#fff',
-								data: [35, 36, 31, ]
-							},
-							{
-								name: "暂无法整改",
-								textColor: '#fff',
-								data: [8, 7, 2, ]
+			//计划标题
+			async securityCheckPlanPlantList() {
+				let self = this;
+				const {
+					data
+				} = await securityCheckPlanPlantList();
+				if (data.code == 200) {
+					this.pickerList = data.data
+					this.reportAppStatisticsDangerSort(this.pickerList[0].planId)
+					
+				}
+			},
+			//安全隐患列表数据
+			async reportAppStatisticsDangerSort(planId) {
+				let self = this;
+				const {
+					data
+				} = await reportAppStatisticsDangerSort({'type':'-1','planId':planId});
+				if (data.code == 200) {
+					this.dataList=data.data;
+					if(data.data[0]){
+						let name=[];
+						let list=[];
+						let list2=[];
+						let list3=[];
+						let num=0;
+						self.hiddenChartBottom=[];
+						data.data.forEach(function(item,index){
+							if(index<3){
+								name.push(item.deptSortName)
+								list.push(item.rectifyNum)
+								list2.push(item.notRectifyNum)
+								list3.push(item.tempNum)
+								num=item.rectifyNum+item.notRectifyNum+item.tempNum
+								self.hiddenChartBottom.push({'name':item.deptSortName,'total':num})
 							}
-						]
-					};
-					this.chartData = JSON.parse(JSON.stringify(res));
-				}, 500);
+						})
+						let res = {
+							categories: name,
+							series: [{
+									name: "已整改",
+									textColor: '#fff',
+									data: list
+						
+								},
+								{
+									name: "未整改",
+									textColor: '#fff',
+									data: list2
+								},
+								{
+									name: "暂无法整改",
+									textColor: '#fff',
+									data: list3
+								}
+							]
+						};
+						this.chartData = JSON.parse(JSON.stringify(res));
+					}
+				}
+			},
+			//暂无法整改
+			async securityCheckDangerNotHazardOneCollect(planId) {
+				let self = this;
+				const {
+					data
+				} = await securityCheckDangerNotHazardOneCollect({'type':'-1','planId':planId});
+				if (data.code == 200) {
+					
+				}
 			},
+			
+			
 			getServerDataTow() {
 				//模拟从服务器获取数据时的延时
 				setTimeout(() => {
@@ -382,10 +392,9 @@
 					let res = {
 						categories: ["生物安全", "基础安全", "安全设施", "化学安全"],
 						series: [{
-								name: "",
-								data: [55, 31, 61, 48]
-							},
-						]
+							name: "",
+							data: [55, 31, 61, 48]
+						}, ]
 					};
 					this.chartDataTow = JSON.parse(JSON.stringify(res));
 				}, 500);