From f93a3a605d6d949515bedbcdc633c5f454014f02 Mon Sep 17 00:00:00 2001
From: Admin <978517621@qq.com>
Date: 星期二, 26 七月 2022 17:07:06 +0800
Subject: [PATCH] 添加修改页面

---
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue                               |    2 
 src/views/riskWarningSys/accidentLevel/index.vue                                                      |  407 +++++++++++++++
 src/views/IntelligentXjSys/basicDataManagement/facilityArea/index.vue                                 |    2 
 src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveLinkSetting/index.vue |    2 
 src/views/basicRightsManagement/personnelShiftManagement/teamManagement/index.vue                     |    2 
 src/views/basicRightsManagement/personnelShiftManagement/shiftManagement/index.vue                    |    2 
 src/router/route.ts                                                                                   |   32 +
 src/views/IntelligentXjSys/inspectionTaskManagement/index.vue                                         |   30 
 src/views/specialWorkSystem/afterWorkManagement/workTicketCheck/index.vue                             |    2 
 src/views/riskWarningSys/educationAndTraining/index.vue                                               |  343 +++++++++++++
 src/views/specialWorkSystem/approveProcessManagement/approveProcessList/index.vue                     |    2 
 src/views/specialWorkSystem/workBasicManagementSetting/personalProtectDevices/index.vue               |    2 
 src/views/basicRightsManagement/personnelShiftManagement/holidayManagement/index.vue                  |    2 
 src/views/riskWarningSys/emergencyDrills/index.vue                                                    |  342 +++++++++++++
 src/views/IntelligentXjSys/basicDataManagement/indicator/index.vue                                    |    2 
 src/views/basicRightsManagement/personnelShiftManagement/personnelManagement/index.vue                |    2 
 src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue                                     |    2 
 src/views/specialWorkSystem/workPlan/workReservation/index.vue                                        |    2 
 src/views/specialWorkSystem/workBasicManagementSetting/certificateFilterSetting/index.vue             |    2 
 src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/reportTypeSetting/index.vue  |    2 
 src/views/IntelligentXjSys/basicDataManagement/inspection/index.vue                                   |    2 
 src/views/specialWorkSystem/afterWorkManagement/workTicketRecord/index.vue                            |    2 
 src/views/basicRightsManagement/personnelShiftManagement/workingHours/index.vue                       |    2 
 src/views/specialWorkSystem/workBasicManagementSetting/workTypeSetting/index.vue                      |    2 
 src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveTypeSetting/index.vue |    2 
 src/views/riskWarningSys/riskLevel/index.vue                                                          |  322 ++++++++++++
 src/views/specialWorkSystem/workBasicManagementSetting/securityMeasuresManagement/index.vue           |    2 
 27 files changed, 1,490 insertions(+), 28 deletions(-)

diff --git a/src/router/route.ts b/src/router/route.ts
index b3846c9..aaa0429 100644
--- a/src/router/route.ts
+++ b/src/router/route.ts
@@ -329,5 +329,37 @@
 		meta: {
 			title: '巡检记录管理'
 		},
+	},
+	{
+		path: '/educationAndTraining',
+		name: 'educationAndTraining',
+		component: () => import('/@/views/riskWarningSys/educationAndTraining/index.vue'),
+		meta: {
+			title: '教育培训'
+		},
+	},
+	{
+		path: '/emergencyDrills',
+		name: 'emergencyDrills',
+		component: () => import('/@/views/riskWarningSys/emergencyDrills/index.vue'),
+		meta: {
+			title: '应急演练'
+		},
+	},
+	{
+		path: '/accidentLevel',
+		name: 'accidentLevel',
+		component: () => import('/@/views/riskWarningSys/accidentLevel/index.vue'),
+		meta: {
+			title: '事故等级'
+		},
+	},
+	{
+		path: '/riskLevel',
+		name: 'riskLevel',
+		component: () => import('/@/views/riskWarningSys/riskLevel/index.vue'),
+		meta: {
+			title: '风险等级'
+		},
 	}
 ];
diff --git a/src/views/IntelligentXjSys/basicDataManagement/facilityArea/index.vue b/src/views/IntelligentXjSys/basicDataManagement/facilityArea/index.vue
index a40b89f..5c490e7 100644
--- a/src/views/IntelligentXjSys/basicDataManagement/facilityArea/index.vue
+++ b/src/views/IntelligentXjSys/basicDataManagement/facilityArea/index.vue
@@ -238,7 +238,7 @@
 						if(chosenIndex.value == -1){
 							addRecord.value.createTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 							addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 							tableData[chosenIndex.value] = addRecord.value
diff --git a/src/views/IntelligentXjSys/basicDataManagement/indicator/index.vue b/src/views/IntelligentXjSys/basicDataManagement/indicator/index.vue
index 63819f9..7af3854 100644
--- a/src/views/IntelligentXjSys/basicDataManagement/indicator/index.vue
+++ b/src/views/IntelligentXjSys/basicDataManagement/indicator/index.vue
@@ -245,7 +245,7 @@
 						if(chosenIndex.value == -1){
 							addRecord.value.createTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 							addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 							tableData[chosenIndex.value] = addRecord.value
diff --git a/src/views/IntelligentXjSys/basicDataManagement/inspection/index.vue b/src/views/IntelligentXjSys/basicDataManagement/inspection/index.vue
index d558469..ef85413 100644
--- a/src/views/IntelligentXjSys/basicDataManagement/inspection/index.vue
+++ b/src/views/IntelligentXjSys/basicDataManagement/inspection/index.vue
@@ -238,7 +238,7 @@
 						if(chosenIndex.value == -1){
 							addRecord.value.createTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 							addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 							tableData[chosenIndex.value] = addRecord.value
diff --git a/src/views/IntelligentXjSys/inspectionTaskManagement/index.vue b/src/views/IntelligentXjSys/inspectionTaskManagement/index.vue
index e2cd7d9..5f1e4a9 100644
--- a/src/views/IntelligentXjSys/inspectionTaskManagement/index.vue
+++ b/src/views/IntelligentXjSys/inspectionTaskManagement/index.vue
@@ -583,6 +583,8 @@
 			const addRef = ref<FormInstance>()
 			const addShiftRef = ref<FormInstance>()
 			const addInspectionRef = ref<FormInstance>()
+
+	// 表单校验
 			const addRules = reactive<FormRules>({
 				name:[{required: true, message: '该内容不能为空',trigger:'blur'}],
 				type:[{required: true, message: '该内容不能为空',trigger:'blur'}],
@@ -611,10 +613,14 @@
 			const addShift = ref({})
 			const addInspection = ref({})
 			const details = ref({})
+
+	// 查看记录
 			const viewRecord = (row) =>{
 				details.value = JSON.parse(JSON.stringify(row))
 				dialogDetails.value = true
 			}
+
+			// 删除记录
 			const deleteRecord = (index) =>{
 				chosenIndex.value = index
 				deleteDialog.value = true
@@ -622,6 +628,13 @@
 			const conFirmDelete = ()=> {
 				tableData.splice(chosenIndex.value,1)
 				deleteDialog.value = false
+			}
+
+			// 修改添加记录
+			const editRecord =(index, row)=>{
+				chosenIndex.value = index
+				dialogAddRecord.value = true
+				addRecord.value = JSON.parse(JSON.stringify(row))
 			}
 			const confirmAddRecord = async (formEl: FormInstance | undefined) =>{
 				if (!formEl) return
@@ -649,7 +662,7 @@
 								addRecord.value.createTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 								addRecord.value.chainLength = addRecord.value.shiftSteps.length
 								addRecord.value.status = '开启'
-								tableData.push(addRecord.value)
+								tableData.unshift(addRecord.value)
 							}
 						}else{
 							if(addRecord.value.shiftSteps.length == 0){
@@ -680,9 +693,13 @@
 				})
 
 			}
+
+			// 添加弹窗打开前预操作
 			const openAdd =()=>{
 				addRecord.value.unit = '小时'
 			}
+
+			// 弹窗关闭后判断数据初始化
 			const closeAdd =()=>{
 				addRecord.value={}
 				chosenIndex.value = -1
@@ -699,11 +716,6 @@
 				chosenInspectionIndex.value = -1
 				chosenShiftIndex.value = -1
 			}
-			const editRecord =(index, row)=>{
-				chosenIndex.value = index
-				dialogAddRecord.value = true
-				addRecord.value = JSON.parse(JSON.stringify(row))
-			}
 
 			// 排序
 			function compare(key){
@@ -719,6 +731,8 @@
 				dialogAddShift.value = true
 				chosenShiftIndex.value = index
 			}
+
+			// 删除巡检区域
 			const deleteFlow = (index) => {
 				deleteShiftDialog.value = true
 				chosenShiftIndex.value = index
@@ -727,6 +741,7 @@
 				addRecord.value.shiftSteps.splice( chosenShiftIndex.value,1)
 				deleteShiftDialog.value = false
 			}
+
 			const confirmAddShift = async (formEl: FormInstance | undefined) => {
 				if (!formEl) return
 				await formEl.validate((valid, fields) => {
@@ -742,8 +757,9 @@
 						console.log('error submit!', fields)
 					}
 				})
-
 			}
+
+
 			const addSysInspection =(index)=>{
 				dialogAddInspection.value = true
 				chosenShiftIndex.value = index
diff --git a/src/views/basicRightsManagement/personnelShiftManagement/holidayManagement/index.vue b/src/views/basicRightsManagement/personnelShiftManagement/holidayManagement/index.vue
index 1c82f55..5ffe431 100644
--- a/src/views/basicRightsManagement/personnelShiftManagement/holidayManagement/index.vue
+++ b/src/views/basicRightsManagement/personnelShiftManagement/holidayManagement/index.vue
@@ -244,7 +244,7 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						if(chosenIndex.value == -1){
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							tableData[chosenIndex.value] = addRecord.value
 						}
diff --git a/src/views/basicRightsManagement/personnelShiftManagement/personnelManagement/index.vue b/src/views/basicRightsManagement/personnelShiftManagement/personnelManagement/index.vue
index 4679574..6274717 100644
--- a/src/views/basicRightsManagement/personnelShiftManagement/personnelManagement/index.vue
+++ b/src/views/basicRightsManagement/personnelShiftManagement/personnelManagement/index.vue
@@ -237,7 +237,7 @@
 						if(chosenIndex.value == -1){
 							addRecord.value.startTime = JSON.parse(JSON.stringify(addRecord.value.timeRange))[0]
 							addRecord.value.endTime = JSON.parse(JSON.stringify(addRecord.value.timeRange))[1]
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							addRecord.value.startTime =  JSON.parse(JSON.stringify(addRecord.value.timeRange))[0]
 							addRecord.value.endTimeTime =  JSON.parse(JSON.stringify(addRecord.value.timeRange))[1]
diff --git a/src/views/basicRightsManagement/personnelShiftManagement/shiftManagement/index.vue b/src/views/basicRightsManagement/personnelShiftManagement/shiftManagement/index.vue
index c9dc0de..97994c2 100644
--- a/src/views/basicRightsManagement/personnelShiftManagement/shiftManagement/index.vue
+++ b/src/views/basicRightsManagement/personnelShiftManagement/shiftManagement/index.vue
@@ -330,7 +330,7 @@
 								})
 								return
 							}else{
-								tableData.push(addRecord.value)
+								tableData.unshift(addRecord.value)
 							}
 						}else{
 							if(addRecord.value.type == '循环班' && addRecord.value.shiftSteps.length == 0){
diff --git a/src/views/basicRightsManagement/personnelShiftManagement/teamManagement/index.vue b/src/views/basicRightsManagement/personnelShiftManagement/teamManagement/index.vue
index d4f963a..04f674a 100644
--- a/src/views/basicRightsManagement/personnelShiftManagement/teamManagement/index.vue
+++ b/src/views/basicRightsManagement/personnelShiftManagement/teamManagement/index.vue
@@ -249,7 +249,7 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						if(chosenIndex.value == -1){
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							tableData[chosenIndex.value] = addRecord.value
 						}
diff --git a/src/views/basicRightsManagement/personnelShiftManagement/workingHours/index.vue b/src/views/basicRightsManagement/personnelShiftManagement/workingHours/index.vue
index 1c4f628..bb15eed 100644
--- a/src/views/basicRightsManagement/personnelShiftManagement/workingHours/index.vue
+++ b/src/views/basicRightsManagement/personnelShiftManagement/workingHours/index.vue
@@ -208,7 +208,7 @@
 								addRecord.value.endTime = '次日' + addRecord.value.endTime
 							}
 							addRecord.value.range = addRecord.value.startTime + '\xa0-\xa0' + addRecord.value.endTime
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							if(addRecord.value.startTime >=  addRecord.value.endTime){
 								addRecord.value.endTime = '次日' + addRecord.value.endTime
diff --git a/src/views/riskWarningSys/accidentLevel/index.vue b/src/views/riskWarningSys/accidentLevel/index.vue
new file mode 100644
index 0000000..a876414
--- /dev/null
+++ b/src/views/riskWarningSys/accidentLevel/index.vue
@@ -0,0 +1,407 @@
+<template>
+	<div class="home-container">
+		<el-scrollbar height="100%">
+		<div class="homeCard">
+			<div class="main-card">
+				<el-row class="cardTop">
+					<el-col :span="12" class="mainCardBtn">
+						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
+<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+						<el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>
+					</el-col>
+					<el-button type="primary" :icon="Refresh" size="default"/>
+				</el-row>
+				<el-table
+						ref="multipleTableRef"
+						:data="tableData"
+						style="width: 100%"
+						:header-cell-style="{background: '#fafafa'}"
+						@selection-change="handleSelectionChange"
+				>
+					<el-table-column type="selection" width="55" />
+					<el-table-column type="index" label="编号" width="80"/>
+					<el-table-column property="month" label="所属月份"/>
+					<el-table-column property="level" label="事故类型"/>
+					<el-table-column property="amount" label="事故起数(起)"/>
+					<el-table-column property="death" label="死亡人数(人)"/>
+					<el-table-column property="injury" label="重伤人数(人)"/>
+					<el-table-column property="wound" label="轻伤人数(人)"/>
+					<el-table-column property="cost" label="直接经济损失(万)"/>
+					<el-table-column property="updateTime" label="提交时间"/>
+					<el-table-column fixed="right" label="操作" align="center" width="250">
+						<template #default="scope">
+							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+							<el-button link type="primary" size="small" :icon="Edit" @click="editRecord(scope.$index ,scope.row)">修改</el-button>
+							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecord(scope.$index)">删除</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+			</div>
+			<div class="pageBtn">
+				<el-pagination
+						v-model:currentPage="currentPage"
+						v-model:page-size="pageSize"
+						:page-sizes="[10, 15]"
+						small=false
+						background
+						layout="total, sizes, prev, pager, next, jumper"
+						:total="100"
+						@size-change="handleSizeChange"
+						@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		</el-scrollbar>
+		<el-dialog v-model="dialogDetails" title="查看详情">
+			<el-form :model="details" label-width="120px">
+				<el-form-item label="所属月份">
+					<el-input
+							v-model="details.month"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="事故类型">
+					<el-input
+							v-model="details.level"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="事故起数(起)">
+					<el-input
+							v-model="details.amount"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="死亡人数(人)">
+					<el-input
+							v-model="details.death"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="重伤人数(人)">
+					<el-input
+							v-model="details.injury"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="轻伤人数(人)">
+					<el-input
+							v-model="details.wound"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="直接经济损失(万)">
+					<el-input
+							v-model="details.cost"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="提交时间">
+					<el-input
+							v-model="details.updateTime"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+				</el-form-item>
+			</el-form>
+		</el-dialog>
+		<el-dialog v-model="dialogAddRecord" title="事故等级编辑" @close="closeAdd">
+			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+				<el-form-item label="所属时间" prop="month">
+					<el-date-picker
+							v-model="addRecord.month"
+							type="month"
+							placeholder="请选择日期"
+							format="YYYY-MM" value-format="YYYY-MM"
+					/>
+				</el-form-item>
+				<el-form-item label="事故类型" prop="level">
+					<el-select v-model="addRecord.level" placeholder="请选择">
+						<el-option label="特别重大事故" value="特别重大事故" />
+						<el-option label="重大事故" value="重大事故" />
+						<el-option label="较大事故" value="较大事故" />
+						<el-option label="一般事故" value="一般事故" />
+						<el-option label="未遂事故" value="未遂事故" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="事故起数" prop="amount">
+					<el-input
+							v-model="addRecord.amount"
+							placeholder="请填写事故次数"
+							type="number"
+					>
+					</el-input>
+				</el-form-item>
+				<el-form-item label="死亡人数" prop="death">
+					<el-input
+							v-model="addRecord.death"
+							placeholder="请填写死亡人数"
+							type="number"
+					>
+					</el-input>
+				</el-form-item>
+				<el-form-item label="重伤人数" prop="injury">
+					<el-input
+							v-model="addRecord.injury"
+							placeholder="请填写重伤人数"
+							type="number"
+					>
+					</el-input>
+				</el-form-item>
+				<el-form-item label="轻伤人数" prop="wound">
+					<el-input
+							v-model="addRecord.wound"
+							placeholder="请填写轻伤人数"
+							type="number"
+					>
+					</el-input>
+				</el-form-item>
+				<el-form-item label="直接经济损失" prop="cost">
+					<el-input
+							v-model="addRecord.cost"
+							placeholder="请填写直接经济损失"
+							type="number"
+					>
+					</el-input>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+				</el-form-item>
+			</el-form>
+		</el-dialog>
+		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+			<span>您确定要删除该条记录吗?</span>
+			<template #footer>
+		  <span class="dialog-footer">
+			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
+			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+		  </span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts" setup>
+	import { toRefs, reactive, ref } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
+	import { ElTable } from 'element-plus'
+	import { FormInstance, FormRules } from 'element-plus'
+	let global: any = {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	};
+
+	interface stateType {
+		homeOne: Array <type>
+	}
+	interface type {
+
+	}
+	const userInfo = useUserInfo()
+	const { userInfos } = storeToRefs(userInfo);
+	const state  = reactive<stateType>({});
+	const currentPage = ref(1)
+	const pageSize = ref(10)
+	const chosenIndex = ref(-1)
+	const handleSizeChange = (val: number) => {
+		console.log(`${val} items per page`)
+	}
+	const handleCurrentChange = (val: number) => {
+		console.log(`current page: ${val}`)
+	}
+	// 时间格式化
+	const timeForm = {
+		hour12: false,
+		year: 'numeric',
+		month: '2-digit',
+		day: '2-digit',
+		hour: '2-digit',
+		minute: '2-digit',
+		second: '2-digit'
+	}
+	const tableData = reactive(
+			[
+			{
+				month: '2022-07',
+				level: '未遂事故',
+				amount: 1,
+				death: 0,
+				injury: 0,
+				wound: 0,
+				cost: 1,
+				updateTime: '2022-07-26 15:55:00'
+			},
+			{
+				month: '2022-06',
+				level: '未遂事故',
+				amount: 2,
+				death: 0,
+				injury: 0,
+				wound: 0,
+				cost: 15,
+				updateTime: '2022-07-26 15:55:00'
+			},
+			{
+				month: '2022-05',
+				level: '一般事故',
+				amount: 1,
+				death: 0,
+				injury: 0,
+				wound: 1,
+				cost: 100,
+				updateTime: '2022-07-26 15:55:00'
+			}
+		]
+	)
+	const addRef = ref<FormInstance>()
+	const addRules = reactive<FormRules>({
+		month:[{required: true, message: '该内容不能为空'}],
+		level:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		amount:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		death:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		injury:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		wound:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		cost:[{required: true, message: '该内容不能为空',trigger:'blur'}]
+	})
+	const dialogDetails = ref(false)
+	const dialogAddRecord = ref(false)
+	const deleteDialog = ref(false)
+	const addRecord = ref({})
+	const details = ref({})
+	const viewRecord = (row) =>{
+		details.value = JSON.parse(JSON.stringify(row))
+		dialogDetails.value = true
+	}
+	const deleteRecord = (index) =>{
+		chosenIndex.value = index
+		deleteDialog.value = true
+	}
+	const conFirmDelete = ()=> {
+		tableData.splice(chosenIndex.value,1)
+		deleteDialog.value = false
+	}
+	const confirmAddRecord = async (formEl: FormInstance | undefined) =>{
+		if (!formEl) return
+		await formEl.validate((valid, fields) => {
+			if (valid) {
+				if(chosenIndex.value == -1){
+					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
+					tableData.unshift(addRecord.value)
+				}else{
+					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
+					tableData[chosenIndex.value] = addRecord.value
+				}
+				dialogAddRecord.value =false
+			} else {
+				console.log('error submit!', fields)
+			}
+		})
+
+	}
+	const closeAdd =()=>{
+		addRecord.value={}
+		chosenIndex.value = -1
+	}
+	const indexClear = ()=>{
+		chosenIndex.value = -1
+	}
+	const editRecord =(index, row)=>{
+		dialogAddRecord.value = true
+		chosenIndex.value = index
+		addRecord.value = JSON.parse(JSON.stringify(row))
+	}
+	// 折线图
+	const renderMenu = async (value: string) => {
+		Session.set('projectId',value)
+		userInfos.value.projectId = value
+		await initBackEndControlRoutes();
+	};
+</script>
+
+<style scoped lang="scss">
+	$homeNavLengh: 8;
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		padding: 20px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+		}
+		.el-row{
+			display: flex;
+			align-items: center;
+			margin-bottom: 20px;
+			&:last-child {
+				margin-bottom: 0;
+			}
+			.grid-content{
+				align-items: center;
+				min-height: 36px;
+			}
+
+			.topInfo {
+				display: flex;
+				align-items: center;
+				font-size: 16px;
+				font-weight: bold;
+
+				&>div{
+					white-space: nowrap;
+					margin-right: 20px;
+				}
+			}
+		}
+		.mainPages{
+			height: 100%;
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+		}
+		.main-card{
+			width: 100%;
+			.cardTop{
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				margin-bottom: 20px;
+				.mainCardBtn{
+					margin: 0;
+				}
+			}
+		}
+		.pageBtn{
+			display: flex;
+			align-items: center;
+			justify-content: right;
+			margin-top: 20px;
+
+			.demo-pagination-block + .demo-pagination-block {
+				margin-top: 10px;
+			}
+			.demo-pagination-block .demonstration {
+				margin-bottom: 16px;
+			}
+		}
+	}
+	.el-input{
+		width: 100% !important;
+	}
+	.el-date-editor::v-deep{
+		width: 100%;
+	}
+	.el-select{
+		width: 100%;
+	}
+</style>
diff --git a/src/views/riskWarningSys/educationAndTraining/index.vue b/src/views/riskWarningSys/educationAndTraining/index.vue
new file mode 100644
index 0000000..39b1979
--- /dev/null
+++ b/src/views/riskWarningSys/educationAndTraining/index.vue
@@ -0,0 +1,343 @@
+<template>
+	<div class="home-container">
+		<el-scrollbar height="100%">
+		<div class="homeCard">
+			<div class="main-card">
+				<el-row class="cardTop">
+					<el-col :span="12" class="mainCardBtn">
+						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
+<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+						<el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>
+					</el-col>
+					<el-button type="primary" :icon="Refresh" size="default"/>
+				</el-row>
+				<el-table
+						ref="multipleTableRef"
+						:data="tableData"
+						style="width: 100%"
+						:header-cell-style="{background: '#fafafa'}"
+						@selection-change="handleSelectionChange"
+				>
+					<el-table-column type="selection" width="55" />
+					<el-table-column type="index" label="编号" width="80"/>
+					<el-table-column property="month" label="所属月份"/>
+					<el-table-column property="level" label="级别"/>
+					<el-table-column property="amount" label="培训次数(次)"/>
+					<el-table-column property="eduTime" label="教育时间比" />
+					<el-table-column property="updateTime" label="提交时间"/>
+					<el-table-column fixed="right" label="操作" align="center" width="250">
+						<template #default="scope">
+							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+							<el-button link type="primary" size="small" :icon="Edit" @click="editRecord(scope.$index ,scope.row)">修改</el-button>
+							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecord(scope.$index)">删除</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+			</div>
+			<div class="pageBtn">
+				<el-pagination
+						v-model:currentPage="currentPage"
+						v-model:page-size="pageSize"
+						:page-sizes="[10, 15]"
+						small=false
+						background
+						layout="total, sizes, prev, pager, next, jumper"
+						:total="100"
+						@size-change="handleSizeChange"
+						@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		</el-scrollbar>
+		<el-dialog v-model="dialogDetails" title="查看详情">
+			<el-form :model="details" label-width="120px">
+				<el-form-item label="所属月份">
+					<el-input
+							v-model="details.month"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="级别">
+					<el-input
+							v-model="details.level"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="培训次数(次)">
+					<el-input
+							v-model="details.amount"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="教育时间比">
+					<el-input
+							v-model="details.eduTime"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="提交时间">
+					<el-input
+							v-model="details.updateTime"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+				</el-form-item>
+			</el-form>
+		</el-dialog>
+		<el-dialog v-model="dialogAddRecord" title="教育培训记录编辑" @close="closeAdd">
+			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+				<el-form-item label="所属时间" prop="month">
+					<el-date-picker
+							v-model="addRecord.month"
+							type="month"
+							placeholder="请选择日期"
+							format="YYYY-MM" value-format="YYYY-MM"
+					/>
+				</el-form-item>
+				<el-form-item label="选择级别" prop="level">
+					<el-select v-model="addRecord.level" placeholder="请选择">
+						<el-option label="公司级" value="公司级" />
+						<el-option label="事业部级" value="事业部级" />
+						<el-option label="车间级" value="车间级" />
+						<el-option label="班组级" value="班组级" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="培训次数" prop="amount">
+					<el-input
+							v-model="addRecord.amount"
+							placeholder="请填写培训次数"
+							type="number"
+					>
+					</el-input>
+				</el-form-item>
+				<el-form-item label="教育时间比" prop="eduTime">
+					<el-select v-model="addRecord.eduTime" placeholder="请选择">
+						<el-option label="大于或等于100%" value="大于或等于100%" />
+						<el-option label="大于或等于80%,小于100%" value="大于或等于80%,小于100%" />
+						<el-option label="大于或等于50%,小于80%" value="大于或等于50%,小于80%" />
+						<el-option label="大于或等于30%,小于50%" value="大于或等于30%,小于50%" />
+						<el-option label="小于30%" value="小于30%" />
+					</el-select>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+				</el-form-item>
+			</el-form>
+		</el-dialog>
+		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+			<span>您确定要删除该条记录吗?</span>
+			<template #footer>
+		  <span class="dialog-footer">
+			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
+			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+		  </span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts" setup>
+	import { toRefs, reactive, ref } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
+	import { ElTable } from 'element-plus'
+	import { FormInstance, FormRules } from 'element-plus'
+	let global: any = {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	};
+
+	interface stateType {
+		homeOne: Array <type>
+	}
+	interface type {
+
+	}
+	const userInfo = useUserInfo()
+	const { userInfos } = storeToRefs(userInfo);
+	const state  = reactive<stateType>({});
+	const currentPage = ref(1)
+	const pageSize = ref(10)
+	const chosenIndex = ref(-1)
+	const handleSizeChange = (val: number) => {
+		console.log(`${val} items per page`)
+	}
+	const handleCurrentChange = (val: number) => {
+		console.log(`current page: ${val}`)
+	}
+	// 时间格式化
+	const timeForm = {
+		hour12: false,
+		year: 'numeric',
+		month: '2-digit',
+		day: '2-digit',
+		hour: '2-digit',
+		minute: '2-digit',
+		second: '2-digit'
+	}
+	const tableData = reactive(
+			[
+			{
+				month: '2022-07',
+				level: '公司级',
+				amount: 10,
+				eduTime: '大于或等于100%',
+				updateTime: '2022-07-26 15:55:00'
+			},
+			{
+				month: '2022-06',
+				level: '班组级',
+				amount: 10,
+				eduTime: '大于或等于100%',
+				updateTime: '2022-06-26 15:55:00'
+			}
+		]
+	)
+	const addRef = ref<FormInstance>()
+	const addRules = reactive<FormRules>({
+		month:[{required: true, message: '该内容不能为空'}],
+		level:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		amount:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		eduTime:[{required: true, message: '该内容不能为空',trigger:'blur'}]
+	})
+	const dialogDetails = ref(false)
+	const dialogAddRecord = ref(false)
+	const deleteDialog = ref(false)
+	const addRecord = ref({})
+	const details = ref({})
+	const viewRecord = (row) =>{
+		details.value = JSON.parse(JSON.stringify(row))
+		dialogDetails.value = true
+	}
+	const deleteRecord = (index) =>{
+		chosenIndex.value = index
+		deleteDialog.value = true
+	}
+	const conFirmDelete = ()=> {
+		tableData.splice(chosenIndex.value,1)
+		deleteDialog.value = false
+	}
+	const confirmAddRecord = async (formEl: FormInstance | undefined) =>{
+		if (!formEl) return
+		await formEl.validate((valid, fields) => {
+			if (valid) {
+				if(chosenIndex.value == -1){
+					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
+					tableData.unshift(addRecord.value)
+				}else{
+					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
+					tableData[chosenIndex.value] = addRecord.value
+				}
+				dialogAddRecord.value =false
+			} else {
+				console.log('error submit!', fields)
+			}
+		})
+
+	}
+	const closeAdd =()=>{
+		addRecord.value={}
+		chosenIndex.value = -1
+	}
+	const indexClear = ()=>{
+		chosenIndex.value = -1
+	}
+	const editRecord =(index, row)=>{
+		dialogAddRecord.value = true
+		chosenIndex.value = index
+		addRecord.value = JSON.parse(JSON.stringify(row))
+	}
+	// 折线图
+	const renderMenu = async (value: string) => {
+		Session.set('projectId',value)
+		userInfos.value.projectId = value
+		await initBackEndControlRoutes();
+	};
+</script>
+
+<style scoped lang="scss">
+	$homeNavLengh: 8;
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		padding: 20px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+		}
+		.el-row{
+			display: flex;
+			align-items: center;
+			margin-bottom: 20px;
+			&:last-child {
+				margin-bottom: 0;
+			}
+			.grid-content{
+				align-items: center;
+				min-height: 36px;
+			}
+
+			.topInfo {
+				display: flex;
+				align-items: center;
+				font-size: 16px;
+				font-weight: bold;
+
+				&>div{
+					white-space: nowrap;
+					margin-right: 20px;
+				}
+			}
+		}
+		.mainPages{
+			height: 100%;
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+		}
+		.main-card{
+			width: 100%;
+			.cardTop{
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				margin-bottom: 20px;
+				.mainCardBtn{
+					margin: 0;
+				}
+			}
+		}
+		.pageBtn{
+			display: flex;
+			align-items: center;
+			justify-content: right;
+			margin-top: 20px;
+
+			.demo-pagination-block + .demo-pagination-block {
+				margin-top: 10px;
+			}
+			.demo-pagination-block .demonstration {
+				margin-bottom: 16px;
+			}
+		}
+	}
+	.el-input{
+		width: 100% !important;
+	}
+	.el-date-editor::v-deep{
+		width: 100%;
+	}
+	.el-select{
+		width: 100%;
+	}
+</style>
diff --git a/src/views/riskWarningSys/emergencyDrills/index.vue b/src/views/riskWarningSys/emergencyDrills/index.vue
new file mode 100644
index 0000000..76722d5
--- /dev/null
+++ b/src/views/riskWarningSys/emergencyDrills/index.vue
@@ -0,0 +1,342 @@
+<template>
+	<div class="home-container">
+		<el-scrollbar height="100%">
+		<div class="homeCard">
+			<div class="main-card">
+				<el-row class="cardTop">
+					<el-col :span="12" class="mainCardBtn">
+						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
+<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+						<el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>
+					</el-col>
+					<el-button type="primary" :icon="Refresh" size="default"/>
+				</el-row>
+				<el-table
+						ref="multipleTableRef"
+						:data="tableData"
+						style="width: 100%"
+						:header-cell-style="{background: '#fafafa'}"
+						@selection-change="handleSelectionChange"
+				>
+					<el-table-column type="selection" width="55" />
+					<el-table-column type="index" label="编号" width="80"/>
+					<el-table-column property="month" label="所属月份"/>
+					<el-table-column property="level" label="级别"/>
+					<el-table-column property="amount" label="演练次数(次)"/>
+					<el-table-column property="aftTime" label="应急演练后时间" />
+					<el-table-column property="updateTime" label="提交时间"/>
+					<el-table-column fixed="right" label="操作" align="center" width="250">
+						<template #default="scope">
+							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+							<el-button link type="primary" size="small" :icon="Edit" @click="editRecord(scope.$index ,scope.row)">修改</el-button>
+							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecord(scope.$index)">删除</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+			</div>
+			<div class="pageBtn">
+				<el-pagination
+						v-model:currentPage="currentPage"
+						v-model:page-size="pageSize"
+						:page-sizes="[10, 15]"
+						small=false
+						background
+						layout="total, sizes, prev, pager, next, jumper"
+						:total="100"
+						@size-change="handleSizeChange"
+						@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		</el-scrollbar>
+		<el-dialog v-model="dialogDetails" title="查看详情">
+			<el-form :model="details" label-width="120px">
+				<el-form-item label="所属月份">
+					<el-input
+							v-model="details.month"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="级别">
+					<el-input
+							v-model="details.level"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="演练次数(次)">
+					<el-input
+							v-model="details.amount"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="应急演练后时间">
+					<el-input
+							v-model="details.aftTime"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="提交时间">
+					<el-input
+							v-model="details.updateTime"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+				</el-form-item>
+			</el-form>
+		</el-dialog>
+		<el-dialog v-model="dialogAddRecord" title="应急演练编辑" @close="closeAdd">
+			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+				<el-form-item label="所属时间" prop="month">
+					<el-date-picker
+							v-model="addRecord.month"
+							type="month"
+							placeholder="请选择日期"
+							format="YYYY-MM" value-format="YYYY-MM"
+					/>
+				</el-form-item>
+				<el-form-item label="选择级别" prop="level">
+					<el-select v-model="addRecord.level" placeholder="请选择">
+						<el-option label="公司级" value="公司级" />
+						<el-option label="事业部级" value="事业部级" />
+						<el-option label="车间级" value="车间级" />
+						<el-option label="班组级" value="班组级" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="培训次数" prop="amount">
+					<el-input
+							v-model="addRecord.amount"
+							placeholder="请填写培训次数"
+							type="number"
+					>
+					</el-input>
+				</el-form-item>
+				<el-form-item label="应急演练后时间" prop="aftTime">
+					<el-select v-model="addRecord.aftTime" placeholder="请选择">
+						<el-option label="小于或等于一周" value="小于或等于一周" />
+						<el-option label="大于一周,小于或等于二周" value="大于一周,小于或等于二周" />
+						<el-option label="大于二周,小于或等于三周" value="大于二周,小于或等于三周" />
+						<el-option label="大于三周" value="大于三周" />
+					</el-select>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+				</el-form-item>
+			</el-form>
+		</el-dialog>
+		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+			<span>您确定要删除该条记录吗?</span>
+			<template #footer>
+		  <span class="dialog-footer">
+			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
+			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+		  </span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts" setup>
+	import { toRefs, reactive, ref } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
+	import { ElTable } from 'element-plus'
+	import { FormInstance, FormRules } from 'element-plus'
+	let global: any = {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	};
+
+	interface stateType {
+		homeOne: Array <type>
+	}
+	interface type {
+
+	}
+	const userInfo = useUserInfo()
+	const { userInfos } = storeToRefs(userInfo);
+	const state  = reactive<stateType>({});
+	const currentPage = ref(1)
+	const pageSize = ref(10)
+	const chosenIndex = ref(-1)
+	const handleSizeChange = (val: number) => {
+		console.log(`${val} items per page`)
+	}
+	const handleCurrentChange = (val: number) => {
+		console.log(`current page: ${val}`)
+	}
+	// 时间格式化
+	const timeForm = {
+		hour12: false,
+		year: 'numeric',
+		month: '2-digit',
+		day: '2-digit',
+		hour: '2-digit',
+		minute: '2-digit',
+		second: '2-digit'
+	}
+	const tableData = reactive(
+			[
+			{
+				month: '2022-07',
+				level: '公司级',
+				amount: 10,
+				aftTime: '小于或等于一周',
+				updateTime: '2022-07-26 15:55:00'
+			},
+			{
+				month: '2022-06',
+				level: '班组级',
+				amount: 10,
+				aftTime: '大于一周,小于或等于二周',
+				updateTime: '2022-06-26 15:55:00'
+			}
+		]
+	)
+	const addRef = ref<FormInstance>()
+	const addRules = reactive<FormRules>({
+		month:[{required: true, message: '该内容不能为空'}],
+		level:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		amount:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		aftTime:[{required: true, message: '该内容不能为空',trigger:'blur'}]
+	})
+	const dialogDetails = ref(false)
+	const dialogAddRecord = ref(false)
+	const deleteDialog = ref(false)
+	const addRecord = ref({})
+	const details = ref({})
+	const viewRecord = (row) =>{
+		details.value = JSON.parse(JSON.stringify(row))
+		dialogDetails.value = true
+	}
+	const deleteRecord = (index) =>{
+		chosenIndex.value = index
+		deleteDialog.value = true
+	}
+	const conFirmDelete = ()=> {
+		tableData.splice(chosenIndex.value,1)
+		deleteDialog.value = false
+	}
+	const confirmAddRecord = async (formEl: FormInstance | undefined) =>{
+		if (!formEl) return
+		await formEl.validate((valid, fields) => {
+			if (valid) {
+				if(chosenIndex.value == -1){
+					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
+					tableData.unshift(addRecord.value)
+				}else{
+					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
+					tableData[chosenIndex.value] = addRecord.value
+				}
+				dialogAddRecord.value =false
+			} else {
+				console.log('error submit!', fields)
+			}
+		})
+
+	}
+	const closeAdd =()=>{
+		addRecord.value={}
+		chosenIndex.value = -1
+	}
+	const indexClear = ()=>{
+		chosenIndex.value = -1
+	}
+	const editRecord =(index, row)=>{
+		dialogAddRecord.value = true
+		chosenIndex.value = index
+		addRecord.value = JSON.parse(JSON.stringify(row))
+	}
+	// 折线图
+	const renderMenu = async (value: string) => {
+		Session.set('projectId',value)
+		userInfos.value.projectId = value
+		await initBackEndControlRoutes();
+	};
+</script>
+
+<style scoped lang="scss">
+	$homeNavLengh: 8;
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		padding: 20px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+		}
+		.el-row{
+			display: flex;
+			align-items: center;
+			margin-bottom: 20px;
+			&:last-child {
+				margin-bottom: 0;
+			}
+			.grid-content{
+				align-items: center;
+				min-height: 36px;
+			}
+
+			.topInfo {
+				display: flex;
+				align-items: center;
+				font-size: 16px;
+				font-weight: bold;
+
+				&>div{
+					white-space: nowrap;
+					margin-right: 20px;
+				}
+			}
+		}
+		.mainPages{
+			height: 100%;
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+		}
+		.main-card{
+			width: 100%;
+			.cardTop{
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				margin-bottom: 20px;
+				.mainCardBtn{
+					margin: 0;
+				}
+			}
+		}
+		.pageBtn{
+			display: flex;
+			align-items: center;
+			justify-content: right;
+			margin-top: 20px;
+
+			.demo-pagination-block + .demo-pagination-block {
+				margin-top: 10px;
+			}
+			.demo-pagination-block .demonstration {
+				margin-bottom: 16px;
+			}
+		}
+	}
+	.el-input{
+		width: 100% !important;
+	}
+	.el-date-editor::v-deep{
+		width: 100%;
+	}
+	.el-select{
+		width: 100%;
+	}
+</style>
diff --git a/src/views/riskWarningSys/riskLevel/index.vue b/src/views/riskWarningSys/riskLevel/index.vue
new file mode 100644
index 0000000..c4cfb64
--- /dev/null
+++ b/src/views/riskWarningSys/riskLevel/index.vue
@@ -0,0 +1,322 @@
+<template>
+	<div class="home-container">
+		<el-scrollbar height="100%">
+		<div class="homeCard">
+			<div class="main-card">
+				<el-row class="cardTop">
+					<el-col :span="12" class="mainCardBtn">
+						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新建</el-button>
+<!--						<el-button type="warning" :icon="Edit" size="default" plain>修改</el-button>-->
+						<el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>
+					</el-col>
+					<el-button type="primary" :icon="Refresh" size="default"/>
+				</el-row>
+				<el-table
+						ref="multipleTableRef"
+						:data="tableData"
+						style="width: 100%"
+						:header-cell-style="{background: '#fafafa'}"
+						@selection-change="handleSelectionChange"
+				>
+					<el-table-column type="selection" width="55" />
+					<el-table-column type="index" label="编号" width="80"/>
+					<el-table-column property="month" label="所属月份"/>
+					<el-table-column property="level" label="风险类型"/>
+					<el-table-column property="amount" label="风险个数(个)"/>
+					<el-table-column property="updateTime" label="提交时间"/>
+					<el-table-column fixed="right" label="操作" align="center" width="250">
+						<template #default="scope">
+							<el-button link type="primary" size="small" :icon="View" @click="viewRecord(scope.row)">查看</el-button>
+							<el-button link type="primary" size="small" :icon="Edit" @click="editRecord(scope.$index ,scope.row)">修改</el-button>
+							<el-button link type="danger" size="small" :icon="Delete" @click="deleteRecord(scope.$index)">删除</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+			</div>
+			<div class="pageBtn">
+				<el-pagination
+						v-model:currentPage="currentPage"
+						v-model:page-size="pageSize"
+						:page-sizes="[10, 15]"
+						small=false
+						background
+						layout="total, sizes, prev, pager, next, jumper"
+						:total="100"
+						@size-change="handleSizeChange"
+						@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		</el-scrollbar>
+		<el-dialog v-model="dialogDetails" title="查看详情">
+			<el-form :model="details" label-width="120px">
+				<el-form-item label="所属月份">
+					<el-input
+							v-model="details.month"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="风险类型">
+					<el-input
+							v-model="details.level"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="风险个数(个)">
+					<el-input
+							v-model="details.amount"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="提交时间">
+					<el-input
+							v-model="details.updateTime"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" @click="dialogDetails = false" size="default">确认</el-button>
+				</el-form-item>
+			</el-form>
+		</el-dialog>
+		<el-dialog v-model="dialogAddRecord" title="风险等级编辑" @close="closeAdd">
+			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
+				<el-form-item label="所属时间" prop="month">
+					<el-date-picker
+							v-model="addRecord.month"
+							type="month"
+							placeholder="请选择日期"
+							format="YYYY-MM" value-format="YYYY-MM"
+					/>
+				</el-form-item>
+				<el-form-item label="风险类型" prop="level">
+					<el-select v-model="addRecord.level" placeholder="请选择">
+						<el-option label="高风险" value="高风险" />
+						<el-option label="低风险" value="低风险" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="风险个数" prop="amount">
+					<el-input
+							v-model="addRecord.amount"
+							placeholder="请填写风险个数"
+							type="number"
+					>
+					</el-input>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="warning" @click="dialogAddRecord = false" size="default" plain>取消</el-button>
+					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
+				</el-form-item>
+			</el-form>
+		</el-dialog>
+		<el-dialog v-model="deleteDialog" title="提示" width="30%" center @close="indexClear">
+			<span>您确定要删除该条记录吗?</span>
+			<template #footer>
+		  <span class="dialog-footer">
+			  <el-button @click="deleteDialog = false" size="default">取消</el-button>
+			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+		  </span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts" setup>
+	import { toRefs, reactive, ref } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
+	import { ElTable } from 'element-plus'
+	import { FormInstance, FormRules } from 'element-plus'
+	let global: any = {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	};
+
+	interface stateType {
+		homeOne: Array <type>
+	}
+	interface type {
+
+	}
+	const userInfo = useUserInfo()
+	const { userInfos } = storeToRefs(userInfo);
+	const state  = reactive<stateType>({});
+	const currentPage = ref(1)
+	const pageSize = ref(10)
+	const chosenIndex = ref(-1)
+	const handleSizeChange = (val: number) => {
+		console.log(`${val} items per page`)
+	}
+	const handleCurrentChange = (val: number) => {
+		console.log(`current page: ${val}`)
+	}
+	// 时间格式化
+	const timeForm = {
+		hour12: false,
+		year: 'numeric',
+		month: '2-digit',
+		day: '2-digit',
+		hour: '2-digit',
+		minute: '2-digit',
+		second: '2-digit'
+	}
+	const tableData = reactive(
+			[
+			{
+				month: '2022-07',
+				level: '低风险',
+				amount: 1,
+				updateTime: '2022-07-26 15:55:00'
+			},
+			{
+				month: '2022-06',
+				level: '高风险',
+				amount: 2,
+				updateTime: '2022-07-26 15:55:00'
+			}
+		]
+	)
+	const addRef = ref<FormInstance>()
+	const addRules = reactive<FormRules>({
+		month:[{required: true, message: '该内容不能为空'}],
+		level:[{required: true, message: '该内容不能为空',trigger:'blur'}],
+		amount:[{required: true, message: '该内容不能为空',trigger:'blur'}]
+	})
+	const dialogDetails = ref(false)
+	const dialogAddRecord = ref(false)
+	const deleteDialog = ref(false)
+	const addRecord = ref({})
+	const details = ref({})
+	const viewRecord = (row) =>{
+		details.value = JSON.parse(JSON.stringify(row))
+		dialogDetails.value = true
+	}
+	const deleteRecord = (index) =>{
+		chosenIndex.value = index
+		deleteDialog.value = true
+	}
+	const conFirmDelete = ()=> {
+		tableData.splice(chosenIndex.value,1)
+		deleteDialog.value = false
+	}
+	const confirmAddRecord = async (formEl: FormInstance | undefined) =>{
+		if (!formEl) return
+		await formEl.validate((valid, fields) => {
+			if (valid) {
+				if(chosenIndex.value == -1){
+					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
+					tableData.unshift(addRecord.value)
+				}else{
+					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
+					tableData[chosenIndex.value] = addRecord.value
+				}
+				dialogAddRecord.value =false
+			} else {
+				console.log('error submit!', fields)
+			}
+		})
+
+	}
+	const closeAdd =()=>{
+		addRecord.value={}
+		chosenIndex.value = -1
+	}
+	const indexClear = ()=>{
+		chosenIndex.value = -1
+	}
+	const editRecord =(index, row)=>{
+		dialogAddRecord.value = true
+		chosenIndex.value = index
+		addRecord.value = JSON.parse(JSON.stringify(row))
+	}
+	// 折线图
+	const renderMenu = async (value: string) => {
+		Session.set('projectId',value)
+		userInfos.value.projectId = value
+		await initBackEndControlRoutes();
+	};
+</script>
+
+<style scoped lang="scss">
+	$homeNavLengh: 8;
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		padding: 20px;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+		}
+		.el-row{
+			display: flex;
+			align-items: center;
+			margin-bottom: 20px;
+			&:last-child {
+				margin-bottom: 0;
+			}
+			.grid-content{
+				align-items: center;
+				min-height: 36px;
+			}
+
+			.topInfo {
+				display: flex;
+				align-items: center;
+				font-size: 16px;
+				font-weight: bold;
+
+				&>div{
+					white-space: nowrap;
+					margin-right: 20px;
+				}
+			}
+		}
+		.mainPages{
+			height: 100%;
+			display: flex;
+			flex-direction: column;
+			justify-content: space-between;
+		}
+		.main-card{
+			width: 100%;
+			.cardTop{
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				margin-bottom: 20px;
+				.mainCardBtn{
+					margin: 0;
+				}
+			}
+		}
+		.pageBtn{
+			display: flex;
+			align-items: center;
+			justify-content: right;
+			margin-top: 20px;
+
+			.demo-pagination-block + .demo-pagination-block {
+				margin-top: 10px;
+			}
+			.demo-pagination-block .demonstration {
+				margin-bottom: 16px;
+			}
+		}
+	}
+	.el-input{
+		width: 100% !important;
+	}
+	.el-date-editor::v-deep{
+		width: 100%;
+	}
+	.el-select{
+		width: 100%;
+	}
+</style>
diff --git a/src/views/specialWorkSystem/afterWorkManagement/workTicketCheck/index.vue b/src/views/specialWorkSystem/afterWorkManagement/workTicketCheck/index.vue
index dc12704..35df32c 100644
--- a/src/views/specialWorkSystem/afterWorkManagement/workTicketCheck/index.vue
+++ b/src/views/specialWorkSystem/afterWorkManagement/workTicketCheck/index.vue
@@ -256,7 +256,7 @@
 		await formEl.validate((valid, fields) => {
 			if (valid) {
 				if(chosenIndex.value == -1){
-					tableData.push(addRecord.value)
+					tableData.unshift(addRecord.value)
 				}else{
 					tableData[chosenIndex.value] = addRecord.value
 				}
diff --git a/src/views/specialWorkSystem/afterWorkManagement/workTicketRecord/index.vue b/src/views/specialWorkSystem/afterWorkManagement/workTicketRecord/index.vue
index a84f6be..13b184e 100644
--- a/src/views/specialWorkSystem/afterWorkManagement/workTicketRecord/index.vue
+++ b/src/views/specialWorkSystem/afterWorkManagement/workTicketRecord/index.vue
@@ -210,7 +210,7 @@
 		await formEl.validate((valid, fields) => {
 			if (valid) {
 				if(chosenIndex.value == -1){
-					tableData.push(addRecord.value)
+					tableData.unshift(addRecord.value)
 				}else{
 					tableData[chosenIndex.value] = addRecord.value
 				}
diff --git a/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveLinkSetting/index.vue b/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveLinkSetting/index.vue
index e0c5c65..5eb9a0b 100644
--- a/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveLinkSetting/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveLinkSetting/index.vue
@@ -225,7 +225,7 @@
 				if(chosenIndex.value == -1){
 					addRecord.value.createTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
-					tableData.push(addRecord.value)
+					tableData.unshift(addRecord.value)
 				}else{
 					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 					tableData[chosenIndex.value] = addRecord.value
diff --git a/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveTypeSetting/index.vue b/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveTypeSetting/index.vue
index 57f1527..3e6b942 100644
--- a/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveTypeSetting/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/approveTypeSetting/index.vue
@@ -227,7 +227,7 @@
 				if(chosenIndex.value == -1){
 					addRecord.value.createTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
-					tableData.push(addRecord.value)
+					tableData.unshift(addRecord.value)
 				}else{
 					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 					tableData[chosenIndex.value] = addRecord.value
diff --git a/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/reportTypeSetting/index.vue b/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/reportTypeSetting/index.vue
index 30844ac..440ed57 100644
--- a/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/reportTypeSetting/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManagement/approveLinkSettings/reportTypeSetting/index.vue
@@ -149,7 +149,7 @@
 						if(rowIndex.value == -1){
 							reportForm.value.createTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 							reportForm.value.editeTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
-							tableData.push(reportForm.value)
+							tableData.unshift(reportForm.value)
 						}else{
 							reportForm.value.editeTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 							tableData[rowIndex.value] = reportForm.value
diff --git a/src/views/specialWorkSystem/approveProcessManagement/approveProcessList/index.vue b/src/views/specialWorkSystem/approveProcessManagement/approveProcessList/index.vue
index 2bf2079..6b0615c 100644
--- a/src/views/specialWorkSystem/approveProcessManagement/approveProcessList/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManagement/approveProcessList/index.vue
@@ -301,7 +301,7 @@
 			if (valid) {
 				if(chosenIndex.value == -1){
 					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
-					tableData.push(addRecord.value)
+					tableData.unshift(addRecord.value)
 				}else{
 					addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 					tableData[chosenIndex.value] = addRecord.value
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
index 7d2d26b..272e899 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
@@ -522,7 +522,7 @@
 				if (!formEl) return
 				await formEl.validate((valid, fields) => {
 					if (valid) {
-						form.workerList.push(addWorkerForm.value)
+						form.workerList.unshift(addWorkerForm.value)
 						addWorkerForm.value = {
 							worker: '',
 							role: '',
diff --git a/src/views/specialWorkSystem/workBasicManagementSetting/certificateFilterSetting/index.vue b/src/views/specialWorkSystem/workBasicManagementSetting/certificateFilterSetting/index.vue
index ae0fccf..4d8d77a 100644
--- a/src/views/specialWorkSystem/workBasicManagementSetting/certificateFilterSetting/index.vue
+++ b/src/views/specialWorkSystem/workBasicManagementSetting/certificateFilterSetting/index.vue
@@ -197,7 +197,7 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						if(chosenIndex.value == -1){
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							tableData[chosenIndex.value] = addRecord.value
 						}
diff --git a/src/views/specialWorkSystem/workBasicManagementSetting/personalProtectDevices/index.vue b/src/views/specialWorkSystem/workBasicManagementSetting/personalProtectDevices/index.vue
index 9421d04..8a5eb25 100644
--- a/src/views/specialWorkSystem/workBasicManagementSetting/personalProtectDevices/index.vue
+++ b/src/views/specialWorkSystem/workBasicManagementSetting/personalProtectDevices/index.vue
@@ -174,7 +174,7 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						if(chosenIndex.value == -1){
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							tableData[chosenIndex.value] = addRecord.value
 						}
diff --git a/src/views/specialWorkSystem/workBasicManagementSetting/securityMeasuresManagement/index.vue b/src/views/specialWorkSystem/workBasicManagementSetting/securityMeasuresManagement/index.vue
index 5c3c5a4..ae00ade 100644
--- a/src/views/specialWorkSystem/workBasicManagementSetting/securityMeasuresManagement/index.vue
+++ b/src/views/specialWorkSystem/workBasicManagementSetting/securityMeasuresManagement/index.vue
@@ -278,7 +278,7 @@
 					if (valid) {
 						if(chosenIndex.value == -1){
 							addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							addRecord.value.updateTime = new Date().toLocaleString('zh', timeForm).replace(/\//g,'-')
 							tableData[chosenIndex.value] = addRecord.value
diff --git a/src/views/specialWorkSystem/workBasicManagementSetting/workTypeSetting/index.vue b/src/views/specialWorkSystem/workBasicManagementSetting/workTypeSetting/index.vue
index 27e072f..7e9af1a 100644
--- a/src/views/specialWorkSystem/workBasicManagementSetting/workTypeSetting/index.vue
+++ b/src/views/specialWorkSystem/workBasicManagementSetting/workTypeSetting/index.vue
@@ -220,7 +220,7 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						if(chosenIndex.value == -1){
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							tableData[chosenIndex.value] = addRecord.value
 						}
diff --git a/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue b/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue
index 2aebc33..d787438 100644
--- a/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue
+++ b/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue
@@ -427,7 +427,7 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						if(chosenIndex.value == -1){
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							tableData[chosenIndex.value] = addRecord.value
 						}
diff --git a/src/views/specialWorkSystem/workPlan/workReservation/index.vue b/src/views/specialWorkSystem/workPlan/workReservation/index.vue
index 2c14f8a..7a1cc8d 100644
--- a/src/views/specialWorkSystem/workPlan/workReservation/index.vue
+++ b/src/views/specialWorkSystem/workPlan/workReservation/index.vue
@@ -318,7 +318,7 @@
 				await formEl.validate((valid, fields) => {
 					if (valid) {
 						if(chosenIndex.value == -1){
-							tableData.push(addRecord.value)
+							tableData.unshift(addRecord.value)
 						}else{
 							tableData[chosenIndex.value] = addRecord.value
 						}

--
Gitblit v1.9.2