From e2cad5345678266960d40f1ba5e3ffac4d5c85e8 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期三, 13 七月 2022 09:19:05 +0800
Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/gtqt

---
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue     |   33 
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue                       |  111 +-
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue      |   34 
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue     |   44 
 src/views/specialWorkSystem/workProcessManagement/gasCheckAnalyze/index.vue                   |  261 +++++++
 src/views/specialWorkSystem/workProcessManagement/workCheckinRecord/index.vue                 |  255 +++++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue    |   32 
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue     |   33 
 src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue                             |    6 
 src/views/specialWorkSystem/workPlan/workReservation/index.vue                                |    6 
 src/views/specialWorkSystem/approveProcessManagement/approveProcessSetting/index.vue          |    0 
 src/views/specialWorkSystem/afterWorkManagement/workTicketCheck/index.vue                     |  339 ++++++++++
 src/views/specialWorkSystem/workApplyManagement/myApply/index.vue                             |  280 ++++++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue     |   32 
 src/views/specialWorkSystem/approveProcessManagement/approveProcessList/index.vue             |    8 
 src/views/specialWorkSystem/afterWorkManagement/workTicketRecord/index.vue                    |  249 +++++++
 src/views/specialWorkSystem/approveProcessManagement/addApproveProcess/index.vue              |    0 
 src/views/specialWorkSystem/approveProcessManagement/reportTypeSetting/index.vue              |    0 
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue |   33 
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue   |  173 ++--
 20 files changed, 1,688 insertions(+), 241 deletions(-)

diff --git a/src/views/specialWorkSystem/afterWorkManagement/workTicketCheck/index.vue b/src/views/specialWorkSystem/afterWorkManagement/workTicketCheck/index.vue
new file mode 100644
index 0000000..cba6e83
--- /dev/null
+++ b/src/views/specialWorkSystem/afterWorkManagement/workTicketCheck/index.vue
@@ -0,0 +1,339 @@
+<template>
+	<div class="home-container">
+		<el-scrollbar height="100%">
+		<el-row class="homeCard">
+			<el-col :span="8">
+				<div class="grid-content topInfo">
+					<el-input v-model="searchWord" placeholder="作业证编号"></el-input>
+					<el-button type="primary">查询</el-button>
+					<el-button plain>重置</el-button>
+					<el-button plain :icon="Download"></el-button>
+				</div>
+			</el-col>
+		</el-row>
+		<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 property="id" label="作业证编号" width="200" sortable/>
+					<el-table-column property="cardName" label="作业证名称" width="180" />
+					<el-table-column property="checkinTime" label="抽检日期" sortable/>
+					<el-table-column property="name" label="抽检人"/>
+					<el-table-column property="result" label="抽检结果"/>
+					<el-table-column property="remark" label="抽检意见"/>
+					<el-table-column fixed="right" label="操作" width="180">
+						<template #default="scope">
+							<el-button link type="primary" size="small" @click="viewRecord(scope.row)">查看</el-button>
+							<el-button link type="danger" size="small" @click="deleteRecord(scope.row)">删除</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="作业票抽检" @close="dialogColse">
+			<el-form :model="details" label-width="120px">
+				<el-form-item label="作业证编号">
+					<el-input
+							v-model="details.id"
+							class="input-with-select"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="抽检人">
+					<el-input
+							v-model="details.name"
+							class="input-with-select"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="抽检结果">
+					<el-input
+							v-model="details.result"
+							class="input-with-select"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="抽检时间">
+					<el-input
+							v-model="details.checkinTime"
+							class="input-with-select"
+							readonly
+					/>
+				</el-form-item>
+				<el-form-item label="抽检意见">
+					<el-input v-model="details.remark" type="textarea" 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="dialogColse">
+			<el-form :model="AddRecord" label-width="120px">
+				<el-form-item label="作业证编号">
+					<el-input
+							v-model="AddRecord.id"
+							class="input-with-select"
+					>
+						<template #append>
+							<el-button :icon="Search"/>
+						</template>
+					</el-input>
+				</el-form-item>
+				<el-form-item label="作业证名称">
+					<el-input
+							v-model="AddRecord.cardName"
+							class="input-with-select"
+					>
+						<template #append>
+							<el-button :icon="Search"/>
+						</template>
+					</el-input>
+				</el-form-item>
+				<el-form-item label="抽检人">
+					<el-input
+							v-model="AddRecord.name"
+							class="input-with-select"
+					>
+						<template #append>
+							<el-button :icon="Search"/>
+						</template>
+					</el-input>
+				</el-form-item>
+				<el-form-item label="抽检结果">
+					<el-select v-model="AddRecord.result">
+						<el-option label="合格" value="合格" />
+						<el-option label="不合格" value="不合格" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="抽检时间">
+					<el-date-picker
+							v-model="AddRecord.checkinTime"
+							type="datetime"
+							placeholder="请选择"
+					/>
+				</el-form-item>
+				<el-form-item label="抽检意见">
+					<el-input v-model="AddRecord.remark" type="textarea"/>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="warning" @click="dialogDetails = false" size="default" plain>取消</el-button>
+					<el-button type="primary" @click="addRecord" size="default">确认</el-button>
+				</el-form-item>
+			</el-form>
+		</el-dialog>
+		<el-dialog v-model="deleteDialog" title="提示" width="30%" center>
+			<span>您确定要删除该条记录吗?</span>
+			<template #footer>
+		  <span class="dialog-footer">
+			<el-button type="primary" @click="conFirmDelete" size="default">确认</el-button>
+			<el-button @click="deleteDialog = false" 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, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
+	import { ElTable } from 'element-plus'
+	let global: any = {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	};
+
+	interface stateType {
+		homeOne: Array <type>
+	}
+	interface type {
+
+	}
+	// export default defineComponent({
+	// 	name: 'workCheckinRecord',
+	// 	setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const currentPage = ref(1)
+			const pageSize = ref(10)
+			const handleSizeChange = (val: number) => {
+				console.log(`${val} items per page`)
+			}
+			const handleCurrentChange = (val: number) => {
+				console.log(`current page: ${val}`)
+			}
+			const tableData = ref(
+					[
+					{
+						id: '11011',
+						cardName: '动火作业证',
+						checkinTime: '2021-04-22 15:21:31',
+						name: '吴海涛',
+						result: '合格',
+						remark: '没意见'
+					},
+					{
+						id: '11012',
+						cardName: '动火作业证',
+						checkinTime: '2021-04-22 15:21:31',
+						name: '吴沈峰',
+						result: '合格',
+						remark: '有点意见'
+					},
+				]
+			)
+			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 = (row) =>{
+				deleteDialog.value = true
+			}
+			const conFirmDelete = (row)=> {
+				console.log(row,'row')
+				details.value = JSON.parse(JSON.stringify(row))
+				console.log(details,'details')
+				dialogDetails.value = true
+			}
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			// return {
+			// 	renderMenu,
+			// 	multipleTableRef,
+			// 	tableData,
+			// 	currentPage,
+			// 	pageSize,
+			// 	dialogDetails,
+			// 	details,
+			// 	deleteDialog,
+			// 	dialogAddRecord,
+			// 	viewRecord,
+			// 	deleteRecord,
+			// 	handleSizeChange,
+			// 	handleCurrentChange,
+			// 	Plus,
+			// 	Edit,
+			// 	Delete,
+			// 	Search,
+			// 	Download,
+			// 	handleSelectionChange,
+			// 	Refresh,
+			// 	...toRefs(state),
+			// };
+	// 	},
+	// });
+</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;
+			}
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/afterWorkManagement/workTicketRecord/index.vue b/src/views/specialWorkSystem/afterWorkManagement/workTicketRecord/index.vue
new file mode 100644
index 0000000..85657ec
--- /dev/null
+++ b/src/views/specialWorkSystem/afterWorkManagement/workTicketRecord/index.vue
@@ -0,0 +1,249 @@
+<template>
+	<div class="home-container">
+		<el-scrollbar height="100%">
+		<el-row class="homeCard">
+			<el-col :span="12">
+				<div class="grid-content topInfo">
+					<el-select v-model="searchType" placeholder="请选择" style="width: 100%">
+						<el-option label="动火作业" value="动火作业" />
+						<el-option label="动土作业" value="动土作业" />
+					</el-select>
+					<el-input v-model="searchWord" placeholder="作业证编号"></el-input>
+					<el-button type="primary">查询</el-button>
+					<el-button plain>重置</el-button>
+					<el-button-group style="display: flex;margin-left: 12px">
+						<el-button plain :icon="Download"></el-button>
+						<el-button plain :icon="Refresh"></el-button>
+					</el-button-group>
+				</div>
+			</el-col>
+		</el-row>
+		<div class="homeCard">
+			<div class="main-card">
+				<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 property="id" label="作业证编号" width="300" sortable />
+					<el-table-column property="cardName" label="作业证名称" width="300" />
+					<el-table-column property="name" label="申请人" width="300" />
+					<el-table-column property="department" label="申请部门" />
+					<el-table-column property="date" label="归档日期" sortable />
+				</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-dialog v-model="dialogDetails" title="签到记录" @close="dialogColse">
+			<el-form :model="details" label-width="120px">
+				<el-form-item label="作业证编号">
+					<el-input v-model="details.id" readonly/>
+				</el-form-item>
+				<el-form-item label="签到人">
+					<el-input
+						v-model="details.worker"
+						class="input-with-select"
+						readonly
+					>
+						<template #append>
+							<el-button :icon="Search" />
+						</template>
+					</el-input>
+				</el-form-item>
+<!--				<el-form-item label="签到状态">-->
+<!--					<el-select v-model="details.status" readonly>-->
+<!--						<el-option label="已签到" value="已签到" />-->
+<!--						<el-option label="未签到" value="未签到" />-->
+<!--					</el-select>-->
+<!--				</el-form-item>-->
+				<el-form-item label="签到时间">
+					<el-input v-model="details.checkinTime" readonly/>
+				</el-form-item>
+				<el-form-item label="备注">
+					<el-input v-model="details.remark" type="textarea" 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-scrollbar>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Plus, Edit, Delete, Refresh, Search, Download } from '@element-plus/icons-vue'
+	import { ElTable } from 'element-plus'
+	let global: any = {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	};
+
+	interface stateType {
+		homeOne: Array <type>
+	}
+	interface type {
+
+	}
+	interface User {
+		date: string
+		name: string
+		address: string
+	}
+	export default defineComponent({
+		name: 'gasCheckAnalyze',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const multipleTableRef = ref<InstanceType<typeof ElTable>>()
+			const multipleSelection = ref<User[]>([])
+			const handleSelectionChange = (val: User[]) => {
+				multipleSelection.value = val
+			}
+			const currentPage = ref(1)
+			const pageSize = ref(10)
+			const handleSizeChange = (val: number) => {
+				console.log(`${val} items per page`)
+			}
+			const handleCurrentChange = (val: number) => {
+				console.log(`current page: ${val}`)
+			}
+			const tableData: User[] = [
+				{
+					id: '11011',
+					cardName: '动火作业证',
+					name: '吴沈峰',
+					department: '土木部',
+					date: '2021-04-22 15:21:31'
+				}
+			]
+			const dialogDetails = ref(false)
+			const details = ref({})
+			const viewDetails = (row)=> {
+				console.log(row,'row')
+				details.value = JSON.parse(JSON.stringify(row))
+				console.log(details,'details')
+				dialogDetails.value = true
+			}
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				multipleTableRef,
+				tableData,
+				currentPage,
+				pageSize,
+				dialogDetails,
+				details,
+				viewDetails,
+				handleSizeChange,
+				handleCurrentChange,
+				Plus,
+				Edit,
+				Delete,
+				Search,
+				Download,
+				handleSelectionChange,
+				Refresh,
+				...toRefs(state),
+			};
+		},
+	});
+</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;
+			}
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/approvalProcess/addApproveProcess/index.vue b/src/views/specialWorkSystem/approveProcessManagement/addApproveProcess/index.vue
similarity index 100%
rename from src/views/specialWorkSystem/approvalProcess/addApproveProcess/index.vue
rename to src/views/specialWorkSystem/approveProcessManagement/addApproveProcess/index.vue
diff --git a/src/views/specialWorkSystem/approvalProcess/approveProcessManagement/index.vue b/src/views/specialWorkSystem/approveProcessManagement/approveProcessList/index.vue
similarity index 97%
rename from src/views/specialWorkSystem/approvalProcess/approveProcessManagement/index.vue
rename to src/views/specialWorkSystem/approveProcessManagement/approveProcessList/index.vue
index 45e65e2..69764ef 100644
--- a/src/views/specialWorkSystem/approvalProcess/approveProcessManagement/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManagement/approveProcessList/index.vue
@@ -1,9 +1,8 @@
 <template>
 	<div class="home-container">
 		<el-scrollbar height="100%">
-		<el-row>
-			<div class="homeCard">
-			<el-col :span="12">
+		<el-row class="homeCard">
+			<el-col :span="8">
 				<div class="grid-content topInfo">
 					<div>流程名称</div>
 					<el-input v-model="searchWord" placeholder="请输入关键词"></el-input>
@@ -11,7 +10,6 @@
 					<el-button plain>重置</el-button>
 				</div>
 			</el-col>
-			</div>
 		</el-row>
 		<div class="homeCard">
 			<div class="main-card">
@@ -21,7 +19,7 @@
 						<el-button type="danger" :icon="Delete" size="default">删除</el-button>
 						<el-button type="success" size="default">设置分类</el-button>
 					</el-col>
-					<el-button type="primary" :icon="Refresh" />
+					<el-button type="primary" :icon="Refresh" size="default"/>
 				</el-row>
 				<el-table
 						ref="multipleTableRef"
diff --git a/src/views/specialWorkSystem/approvalProcess/approveProcessSetting/index.vue b/src/views/specialWorkSystem/approveProcessManagement/approveProcessSetting/index.vue
similarity index 100%
rename from src/views/specialWorkSystem/approvalProcess/approveProcessSetting/index.vue
rename to src/views/specialWorkSystem/approveProcessManagement/approveProcessSetting/index.vue
diff --git a/src/views/specialWorkSystem/approvalProcess/reportTypeSetting/index.vue b/src/views/specialWorkSystem/approveProcessManagement/reportTypeSetting/index.vue
similarity index 100%
rename from src/views/specialWorkSystem/approvalProcess/reportTypeSetting/index.vue
rename to src/views/specialWorkSystem/approveProcessManagement/reportTypeSetting/index.vue
diff --git a/src/views/specialWorkSystem/workApplyManagement/myApply/index.vue b/src/views/specialWorkSystem/workApplyManagement/myApply/index.vue
new file mode 100644
index 0000000..3bf4b98
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/myApply/index.vue
@@ -0,0 +1,280 @@
+<template>
+	<div class="home-container">
+		<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+			<el-tab-pane label="申请中" name="Applying">
+				<el-scrollbar height="100%">
+					<el-row class="homeCard">
+							<el-col :span="8">
+								<div class="grid-content topInfo">
+									<el-input v-model="searchWord" placeholder="作业证名称"></el-input>
+									<el-button type="primary">查询</el-button>
+									<el-button plain>重置</el-button>
+								</div>
+							</el-col>
+					</el-row>
+					<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">申请</el-button>
+<!--									<el-button type="danger" :icon="Delete" size="default">删除</el-button>-->
+<!--									<el-button type="success" size="default">设置分类</el-button>-->
+								</el-col>
+								<el-button type="primary" :icon="Refresh" size="default"/>
+							</el-row>
+							<el-table
+									ref="multipleTableRef"
+									:data="applyData"
+									style="width: 100%"
+									:header-cell-style="{background: '#fafafa'}"
+									@selection-change="handleSelectionChange"
+							>
+								<el-table-column type="selection" width="55" />
+								<el-table-column property="num" label="作业证编号" width="200"/>
+								<el-table-column property="level" label="作业证等级" width="180" sortable />
+								<el-table-column property="applyDate" label="申请日期" sortable />
+								<el-table-column property="name" label="申请人" width="180"/>
+								<el-table-column property="department" label="申请部门" width="180" />
+								<el-table-column label="申请状态" width="180">
+									<template #default="scope">
+										<el-tag type="success">{{ scope.row.status }}</el-tag>
+									</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-tab-pane>
+			<el-tab-pane label="已通过" name="passed">
+				<el-scrollbar height="100%">
+					<el-row>
+						<div class="homeCard">
+							<el-col :span="12">
+								<div class="grid-content topInfo">
+									<el-input v-model="searchWord" placeholder="作业证名称"></el-input>
+									<el-button type="primary">查询</el-button>
+									<el-button plain>重置</el-button>
+								</div>
+							</el-col>
+						</div>
+					</el-row>
+					<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">申请</el-button>-->
+									<!--<el-button type="danger" :icon="Delete" size="default">删除</el-button>-->
+									<!--<el-button type="success" size="default">设置分类</el-button>-->
+<!--								</el-col>-->
+<!--								<el-button type="primary" :icon="Refresh" />-->
+<!--							</el-row>-->
+							<el-table
+									ref="multipleTableRef"
+									:data="passedData"
+									style="width: 100%"
+									:header-cell-style="{background: '#fafafa'}"
+									@selection-change="handleSelectionChange"
+							>
+								<el-table-column type="selection" width="55" />
+								<el-table-column property="num" label="作业证编号" width="200"/>
+								<el-table-column property="level" label="作业证等级" width="180" sortable />
+								<el-table-column property="applyDate" label="申请日期" sortable />
+								<el-table-column property="name" label="申请人" width="180"/>
+								<el-table-column property="department" label="申请部门" width="180" />
+								<el-table-column label="申请状态" width="180">
+									<template #default="scope">
+										<el-tag type="success">{{ scope.row.status }}</el-tag>
+									</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-tab-pane>
+		</el-tabs>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Plus, Delete, Refresh } from '@element-plus/icons-vue'
+	import { ElTable } from 'element-plus'
+	import type { TabsPaneContext } from 'element-plus'
+	let global: any = {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	};
+
+	interface stateType {
+		homeOne: Array <type>
+	}
+	interface type {
+
+	}
+	interface User {
+		num: string
+		level: string
+		applyDate: string
+		name: string
+		department: string
+		status: string
+	}
+	export default defineComponent({
+		name: 'myApply',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const activeName = ref('Applying')
+			const handleClick = (tab: TabsPaneContext, event: Event) => {
+				console.log(tab, event)
+			}
+			const multipleTableRef = ref<InstanceType<typeof ElTable>>()
+			const multipleSelection = ref<User[]>([])
+			const handleSelectionChange = (val: User[]) => {
+				multipleSelection.value = val
+			}
+			const currentPage = ref(1)
+			const pageSize = ref(10)
+			const handleSizeChange = (val: number) => {
+				console.log(`${val} items per page`)
+			}
+			const handleCurrentChange = (val: number) => {
+				console.log(`current page: ${val}`)
+			}
+			const applyData: User[] = []
+			const passedData: User[] = []
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				multipleTableRef,
+				applyData,
+				passedData,
+				currentPage,
+				pageSize,
+				activeName,
+				handleClick,
+				handleSizeChange,
+				handleCurrentChange,
+				Plus,
+				Delete,
+				handleSelectionChange,
+				Refresh,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	$homeNavLengh: 8;
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		padding: 20px;
+		.demo-tabs > .el-tabs__content {
+			padding: 32px;
+			color: #6b778c;
+			font-size: 32px;
+			font-weight: 600;
+		}
+		.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;
+			}
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue
index 39513f7..bf26c37 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="comp-container">
-		<el-form :model="bpForm" label-width="180px" :rules="bpFormRules" ref="ruleFormRef">
+		<el-form :model="bpForm" label-width="180px" :rules="bpFormRules" ref="bpRef">
 			<div class="homeCard">
 				<el-row>
 					<el-col :span="8">
@@ -14,9 +14,9 @@
 					<el-col :span="8">
 						<el-form-item label="申请人" prop="bpApplyName">
 							<el-input
-									v-model="bpForm.bpApplyName"
-									placeholder="请输入"
-									class="input-with-select"
+								v-model="bpForm.bpApplyName"
+								placeholder="请输入"
+								class="input-with-select"
 							>
 								<template #append>
 									<el-button :icon="Search" />
@@ -29,9 +29,9 @@
 					<el-col :span="24">
 						<el-form-item label="设备管道名称" prop="bpTubeName">
 							<el-input
-									v-model="bpForm.bpTubeName"
-									placeholder="请输入"
-									class="input-with-select"
+								v-model="bpForm.bpTubeName"
+								placeholder="请输入"
+								class="input-with-select"
 							/>
 						</el-form-item>
 					</el-col>
@@ -40,9 +40,9 @@
 					<el-col :span="24">
 						<el-form-item label="主要介质" prop="bpMainMatter">
 							<el-input
-									v-model="bpForm.bpMainMatter"
-									placeholder="请输入"
-									class="input-with-select"
+								v-model="bpForm.bpMainMatter"
+								placeholder="请输入"
+								class="input-with-select"
 							/>
 						</el-form-item>
 					</el-col>
@@ -51,18 +51,18 @@
 					<el-col :span="8">
 						<el-form-item label="温度" prop="bpTemperature">
 							<el-input
-									v-model="bpForm.bpTemperature"
-									placeholder="请输入"
-									class="input-with-select"
+								v-model="bpForm.bpTemperature"
+								placeholder="请输入"
+								class="input-with-select"
 							/>
 						</el-form-item>
 					</el-col>
 					<el-col :span="8">
 						<el-form-item label="压力" prop="bpPressure">
 							<el-input
-									v-model="bpForm.bpPressure"
-									placeholder="请输入"
-									class="input-with-select"
+								v-model="bpForm.bpPressure"
+								placeholder="请输入"
+								class="input-with-select"
 							/>
 						</el-form-item>
 					</el-col>
@@ -71,9 +71,9 @@
 					<el-col :span="24">
 						<el-form-item label="盲板材质" prop="bpMaterial">
 							<el-input
-									v-model="bpForm.bpMaterial"
-									placeholder="请输入"
-									class="input-with-select"
+								v-model="bpForm.bpMaterial"
+								placeholder="请输入"
+								class="input-with-select"
 							/>
 						</el-form-item>
 					</el-col>
@@ -82,9 +82,9 @@
 					<el-col :span="24">
 						<el-form-item label="盲板规格" prop="bpFormat">
 							<el-input
-									v-model="bpForm.bpFormat"
-									placeholder="请输入"
-									class="input-with-select"
+								v-model="bpForm.bpFormat"
+								placeholder="请输入"
+								class="input-with-select"
 							/>
 						</el-form-item>
 					</el-col>
@@ -93,9 +93,9 @@
 					<el-col :span="24">
 						<el-form-item label="盲板编号" prop="bpNum">
 							<el-input
-									v-model="bpForm.bpNum"
-									placeholder="请输入"
-									class="input-with-select"
+								v-model="bpForm.bpNum"
+								placeholder="请输入"
+								class="input-with-select"
 							/>
 						</el-form-item>
 					</el-col>
@@ -104,27 +104,27 @@
 					<el-col :span="24">
 						<el-form-item label="盲板位置" prop="bpLocation">
 							<el-input
-									v-model="bpForm.bpLocation"
-									placeholder="请输入"
-									class="input-with-select"
-									type="textarea"
+								v-model="bpForm.bpLocation"
+								placeholder="请输入"
+								class="input-with-select"
+								type="textarea"
 							/>
 						</el-form-item>
 					</el-col>
 				</el-row>
 				<el-row>
 					<el-col :span="24">
-						<el-form-item label="盲板位置图" prop="fileList">
+						<el-form-item label="盲板位置图">
 							<el-upload
-									v-model:file-list="fileList"
-									class="upload-demo"
-									action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
-									multiple
-									:on-preview="handlePreview"
-									:on-remove="handleRemove"
-									:before-remove="beforeRemove"
-									:limit="3"
-									:on-exceed="handleExceed"
+								v-model:file-list="bpForm.picList"
+								class="upload-demo"
+								action="https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15"
+								multiple
+								:on-preview="handlePreview"
+								:on-remove="handleRemove"
+								:before-remove="beforeRemove"
+								:limit="3"
+								:on-exceed="handleExceed"
 							>
 								<el-button type="primary">上传附件</el-button>
 								<template #tip>
@@ -150,9 +150,9 @@
 					<el-col :span="24">
 						<el-form-item label="装盲板时间" prop="bpInstallTime">
 						<el-date-picker
-								v-model="bpForm.bpInstallTime"
-								type="datetime"
-								placeholder="请选择"
+							v-model="bpForm.bpInstallTime"
+							type="datetime"
+							placeholder="请选择"
 						/>
 						</el-form-item>
 					</el-col>
@@ -207,44 +207,47 @@
 	}
 	export default defineComponent({
 		name: 'blindPanelForm',
-		setup() {
+		props: {
+			bpForm: Object,
+		},
+		setup(props) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
-			const bpForm = reactive({
-				bpDepartment: '',
-				bpApplyName: '',
-				bpTubeName: '',
-				bpMainMatter: '',
-				bpTemperature: '',
-				bpPressure: '',
-				bpMaterial: '',
-				bpFormat: '',
-				bpNum: '',
-				bpLocation: '',
-				fileList: [],
-				bpPrincipals: [],
-				bpInstallTime: '',
-				bpDePrincipals: [],
-				bpUninstallTime: ''
-			})
-			const ruleFormRef = ref<FormInstance>()
+			const bpForm1 = reactive(props.bpForm)
+			// const bpForm = reactive({
+			// 	bpDepartment: '',
+			// 	bpApplyName: '',
+			// 	bpTubeName: '',
+			// 	bpMainMatter: '',
+			// 	bpTemperature: '',
+			// 	bpPressure: '',
+			// 	bpMaterial: '',
+			// 	bpFormat: '',
+			// 	bpNum: '',
+			// 	bpLocation: '',
+			// 	fileList: [],
+			// 	bpPrincipals: [],
+			// 	bpInstallTime: '',
+			// 	bpDePrincipals: [],
+			// 	bpUninstallTime: ''
+			// })
+			const bpRef = ref<FormInstance>()
 			const bpFormRules = reactive<FormRules>({
-				bpDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpTubeName: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpMainMatter: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpTemperature: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpPressure: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpMaterial: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpFormat: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpNum: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpLocation: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				fileList: [{type: 'array',required: true,message: '此处不可为空',trigger: 'change'}],
-				bpPrincipals: [{type: 'array',required: true,message: '此处不可为空',trigger: 'change'}],
-				bpInstallTime: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				bpDePrincipals: [{type: 'array',required: true,message: '此处不可为空',trigger: 'change'}],
-				bpUninstallTime: [{required: true,message: '此处不可为空',trigger: 'blur'}]
+				bpDepartment:[{required: true,message: '此处不可为空'}],
+				bpApplyName:[{required: true,message: '此处不可为空'}],
+				bpTubeName: [{required: true,message: '此处不可为空'}],
+				bpMainMatter: [{required: true,message: '此处不可为空'}],
+				bpTemperature: [{required: true,message: '此处不可为空'}],
+				bpPressure: [{required: true,message: '此处不可为空'}],
+				bpMaterial: [{required: true,message: '此处不可为空'}],
+				bpFormat: [{required: true,message: '此处不可为空'}],
+				bpNum: [{required: true,message: '此处不可为空'}],
+				bpLocation: [{required: true,message: '此处不可为空'}],
+				bpPrincipals: [{type: 'array',required: true,message: '此处不可为空',trigger:'blur'}],
+				bpInstallTime: [{required: true,message: '此处不可为空'}],
+				bpDePrincipals: [{type: 'array',required: true,message: '此处不可为空',trigger:'blur'}],
+				bpUninstallTime: [{required: true,message: '此处不可为空'}]
 			})
 			const fileList = ref<UploadUserFile[]>([
 				{
@@ -278,6 +281,18 @@
 						() => false
 				)
 			}
+
+			const validateForm = async () => {
+				let flag = null
+				await bpRef.value.validate(valid=>{
+					if(valid){
+						flag = true
+					}else{
+						flag = false
+					}
+				})
+				return flag
+			}
 			// 折线图
 			const renderMenu = async (value: string) => {
 				Session.set('projectId',value)
@@ -286,10 +301,12 @@
 			};
 			return {
 				renderMenu,
-				bpForm,
+				bpForm1,
 				bpFormRules,
-				ruleFormRef,
+				bpRef,
 				fileList,
+				Search,
+				validateForm,
 				handleRemove,
 				handlePreview,
 				handleExceed,
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue
index 49e1f46..4a0a5be 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="comp-container">
-		<el-form :model="clForm" label-width="180px" :rules="clFormRules" ref="ruleFormRef">
+		<el-form :model="clForm" label-width="180px" :rules="clFormRules" ref="clRef">
 			<div class="homeCard">
 				<el-row>
 					<el-col :span="8">
@@ -100,18 +100,15 @@
 	}
 	export default defineComponent({
 		name: 'cutLineForm',
-		setup() {
+		props: {
+			clForm: Object
+		},
+		setup(props) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
-			const clForm = reactive({
-				clDepartment: '',
-				clApplyName: '',
-				clReason: '',
-				clUnits: [],
-				fileList: []
-			})
-			const ruleFormRef = ref<FormInstance>()
+			const clForm1 = reactive(props.clForm)
+			const clRef = ref<FormInstance>()
 			const clFormRules = reactive<FormRules>({
 				clDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				clApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
@@ -151,6 +148,17 @@
 						() => false
 				)
 			}
+			const validateForm = async () => {
+				let flag = null
+				await clRef.value.validate(valid=>{
+					if(valid){
+						flag = true
+					}else{
+						flag = false
+					}
+				})
+				return flag
+			}
 			// 折线图
 			const renderMenu = async (value: string) => {
 				Session.set('projectId',value)
@@ -159,10 +167,12 @@
 			};
 			return {
 				renderMenu,
-				clForm,
+				clForm1,
+				Search,
 				clFormRules,
-				ruleFormRef,
+				clRef,
 				fileList,
+				validateForm,
 				handleRemove,
 				handlePreview,
 				handleExceed,
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue
index ceb729f..4bb6e52 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="comp-container">
-		<el-form :model="dwForm" label-width="180px" :rules="dwFormRules" ref="ruleFormRef">
+		<el-form :model="dwForm" label-width="180px" :rules="dwFormRules" ref="dwRef">
 			<div class="homeCard">
 				<el-row>
 					<el-col :span="8">
@@ -102,18 +102,15 @@
 	}
 	export default defineComponent({
 		name: 'dirtWorkForm',
-		setup() {
+		props:{
+			dwForm: Object
+		},
+		setup(props) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
-			const dwForm = reactive({
-				dwDepartment: '',
-				dwApplyName: '',
-				dwRange: '',
-				dwWay: '',
-				fileList: []
-			})
-			const ruleFormRef = ref<FormInstance>()
+			const dwForm1 = reactive(props.dwForm)
+			const dwRef = ref<FormInstance>()
 			const dwFormRules = reactive<FormRules>({
 				dwDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				dwApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
@@ -153,6 +150,17 @@
 						() => false
 				)
 			}
+			const validateForm = async () => {
+				let flag = null
+				await dwRef.value.validate(valid=>{
+					if(valid){
+						flag = true
+					}else{
+						flag = false
+					}
+				})
+				return flag
+			}
 			// 折线图
 			const renderMenu = async (value: string) => {
 				Session.set('projectId',value)
@@ -161,10 +169,11 @@
 			};
 			return {
 				renderMenu,
-				dwForm,
+				dwForm1,
 				dwFormRules,
-				ruleFormRef,
+				dwRef,
 				fileList,
+				validateForm,
 				handleRemove,
 				handlePreview,
 				handleExceed,
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue
index 313ad5c..084f86c 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="comp-container">
-		<el-form :model="fwForm" label-width="150px" :rules="fwRules" ref="ruleFormRef">
+		<el-form :model="fwForm" label-width="150px" :rules="fwRules" ref="fwRef">
 			<div class="homeCard">
 				<el-row>
 					<el-col :span="8">
@@ -81,25 +81,33 @@
 	}
 	export default defineComponent({
 		name: 'fireWorkForm',
-		setup() {
+		props: {
+			fwForm: Object
+		},
+		setup(props) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
-			const fwForm = reactive({
-				fwDepartment: '',
-				fwApplyName: '',
-				fwLevel: '',
-				fwRiskIdentify: '',
-				fwWorkWay: ''
-			})
-			const ruleFormRef = ref<FormInstance>()
+			const fwForm1 = reactive(props.fwForm)
+			const fwRef = ref<FormInstance>()
 			const fwRules = reactive<FormRules>({
-				fwDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
-				fwApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
-				fwLevel: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				fwRiskIdentify: [{required: true,message: '此处不可为空',trigger: 'blur'}],
-				fwWorkWay: [{required: true,message: '此处不可为空',trigger: 'blur'}]
+				fwDepartment:[{required: true,message: '此处不可为空'}],
+				fwApplyName:[{required: true,message: '此处不可为空'}],
+				fwLevel: [{required: true,message: '此处不可为空'}],
+				fwRiskIdentify: [{required: true,message: '此处不可为空'}],
+				fwWorkWay: [{required: true,message: '此处不可为空'}]
 			})
+			const validateForm = async () => {
+				let flag = null
+				await fwRef.value.validate(valid=>{
+					if(valid){
+						flag = true
+					}else{
+						flag = false
+					}
+				})
+				return flag
+			}
 			// 折线图
 			const renderMenu = async (value: string) => {
 				Session.set('projectId',value)
@@ -108,9 +116,11 @@
 			};
 			return {
 				renderMenu,
-				fwForm,
-				ruleFormRef,
+				Search,
+				fwForm1,
 				fwRules,
+				fwRef,
+				validateForm,
 				...toRefs(state),
 			};
 		},
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue
index 858080e..6b36361 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="comp-container">
-		<el-form :model="hlForm" label-width="180px" :rules="hlFormRules" ref="ruleFormRef">
+		<el-form :model="hlForm" label-width="180px" :rules="hlFormRules" ref="hlRef">
 			<div class="homeCard">
 				<el-row>
 					<el-col :span="8">
@@ -87,18 +87,15 @@
 	}
 	export default defineComponent({
 		name: 'hangLoadForm',
-		setup() {
+		props: {
+			hlForm: Object
+		},
+		setup(props) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
-			const hlForm = reactive({
-				hlDepartment: '',
-				hlApplyName: '',
-				hlLevel: '',
-				hlWeight: '',
-				hlToolsName: ''
-			})
-			const ruleFormRef = ref<FormInstance>()
+			const hlForm1 = reactive(props.hlForm)
+			const hlRef = ref<FormInstance>()
 			const hlFormRules = reactive<FormRules>({
 				hlDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				hlApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
@@ -106,6 +103,17 @@
 				hlWeight: [{required: true,message: '此处不可为空',trigger: 'blur'}],
 				hlToolsName: [{required: true,message: '此处不可为空',trigger: 'blur'}]
 			})
+			const validateForm = async () => {
+				let flag = null
+				await hlRef.value.validate(valid=>{
+					if(valid){
+						flag = true
+					}else{
+						flag = false
+					}
+				})
+				return flag
+			}
 			// 折线图
 			const renderMenu = async (value: string) => {
 				Session.set('projectId',value)
@@ -114,9 +122,10 @@
 			};
 			return {
 				renderMenu,
-				hlForm,
+				hlForm1,
 				hlFormRules,
-				ruleFormRef,
+				hlRef,
+				validateForm,
 				...toRefs(state),
 			};
 		},
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue
index 198b18b..1ae364a 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="comp-container">
-		<el-form :model="hwForm" label-width="150px" :rules="hwRules" ref="ruleFormRef">
+		<el-form :model="hwForm" label-width="150px" :rules="hwRules" ref="hwRef">
 			<div class="homeCard">
 				<el-row>
 					<el-col :span="8">
@@ -72,23 +72,32 @@
 	}
 	export default defineComponent({
 		name: 'highWorkForm',
-		setup() {
+		props:{
+			hwForm: Object
+		},
+		setup(props) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
-			const hwForm = reactive({
-				hwDepartment: '',
-				hwApplyName: '',
-				hwLevel: '',
-				hwHeight: ''
-			})
-			const ruleFormRef = ref<FormInstance>()
+			const hwForm1 = reactive(props.hwForm)
+			const hwRef = ref<FormInstance>()
 			const hwRules = reactive<FormRules>({
 				hwDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				hwApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				hwLevel: [{required: true,message: '此处不可为空',trigger: 'blur'}],
 				hwHeight: [{required: true,message: '此处不可为空',trigger: 'blur'}]
 			})
+			const validateForm = async () => {
+				let flag = null
+				await hwRef.value.validate(valid=>{
+					if(valid){
+						flag = true
+					}else{
+						flag = false
+					}
+				})
+				return flag
+			}
 			// 折线图
 			const renderMenu = async (value: string) => {
 				Session.set('projectId',value)
@@ -97,9 +106,10 @@
 			};
 			return {
 				renderMenu,
-				hwForm,
-				ruleFormRef,
+				hwForm1,
+				hwRef,
 				hwRules,
+				validateForm,
 				...toRefs(state),
 			};
 		},
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue
index e5bcb8d..bd92649 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="comp-container">
-		<el-form :model="lsForm" label-width="180px" :rules="lsFormRules" ref="ruleFormRef">
+		<el-form :model="lsForm" label-width="180px" :rules="lsFormRules" ref="lsRef">
 			<div class="homeCard">
 				<el-row>
 					<el-col :span="8">
@@ -93,18 +93,15 @@
 	}
 	export default defineComponent({
 		name: 'limitedSpaceForm',
-		setup() {
+		props: {
+			lsForm: Object
+		},
+		setup(props) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
-			const lsForm = reactive({
-				lsDepartment: '',
-				lsApplyName: '',
-				lsUnitName: '',
-				lsUnit: '',
-				lsUnitMatterName: ''
-			})
-			const ruleFormRef = ref<FormInstance>()
+			const lsForm1 = reactive(props.lsForm)
+			const lsRef = ref<FormInstance>()
 			const lsFormRules = reactive<FormRules>({
 				lsDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				lsApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
@@ -112,6 +109,17 @@
 				lsUnit: [{required: true,message: '此处不可为空',trigger: 'blur'}],
 				lsUnitMatterName: [{required: true,message: '此处不可为空',trigger: 'blur'}]
 			})
+			const validateForm = async () => {
+				let flag = null
+				await lsRef.value.validate(valid=>{
+					if(valid){
+						flag = true
+					}else{
+						flag = false
+					}
+				})
+				return flag
+			}
 			// 折线图
 			const renderMenu = async (value: string) => {
 				Session.set('projectId',value)
@@ -120,9 +128,10 @@
 			};
 			return {
 				renderMenu,
-				lsForm,
+				lsForm1,
 				lsFormRules,
-				ruleFormRef,
+				lsRef,
+				validateForm,
 				...toRefs(state),
 			};
 		},
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue
index 296b5a1..cc21d11 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue
@@ -1,6 +1,6 @@
 <template>
 	<div class="comp-container">
-		<el-form :model="teForm" label-width="150px" :rules="teRules" ref="ruleFormRef">
+		<el-form :model="teForm" label-width="150px" :rules="teRules" ref="teRef">
 			<div class="homeCard">
 				<el-row>
 					<el-col :span="8">
@@ -72,23 +72,32 @@
 	}
 	export default defineComponent({
 		name: 'tempElectForm',
-		setup() {
+		props: {
+			teForm: Object
+		},
+		setup(props) {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
-			const teForm = reactive({
-				teDepartment: '',
-				teApplyName: '',
-				teLevel: '',
-				teHeight: ''
-			})
-			const ruleFormRef = ref<FormInstance>()
+			const teForm1 = reactive(props.teForm)
+			const teRef = ref<FormInstance>()
 			const teRules = reactive<FormRules>({
 				teDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				teApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				teLevel: [{required: true,message: '此处不可为空',trigger: 'blur'}],
 				teHeight: [{required: true,message: '此处不可为空',trigger: 'blur'}]
 			})
+			const validateForm = async () => {
+				let flag = null
+				await teRef.value.validate(valid=>{
+					if(valid){
+						flag = true
+					}else{
+						flag = false
+					}
+				})
+				return flag
+			}
 			// 折线图
 			const renderMenu = async (value: string) => {
 				Session.set('projectId',value)
@@ -97,9 +106,10 @@
 			};
 			return {
 				renderMenu,
-				teForm,
-				ruleFormRef,
+				teForm1,
+				teRef,
 				teRules,
+				validateForm,
 				...toRefs(state),
 			};
 		},
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
index 42b3dff..7b0a1e0 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
@@ -2,60 +2,15 @@
 	<div class="home-container">
 		<el-scrollbar height="100%">
 		<el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef2">
-<!--			<blind-panel-form></blind-panel-form>-->
-			<div class="homeCard">
-			<el-row>
-				<el-col :span="8">
-					<el-form-item label="申请部门">
-						<el-select v-model="form.department" placeholder="请选择部门">
-							<el-option label="机修班" value="机修班" />
-							<el-option label="火工班" value="火工班" />
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :span="8">
-					<el-form-item label="申请人">
-						<el-input
-							v-model="form.applyName"
-							placeholder="请输入"
-							class="input-with-select"
-						>
-							<template #append>
-								<el-button :icon="Search" />
-							</template>
-						</el-input>
-					</el-form-item>
-				</el-col>
-			</el-row>
-			<el-row>
-				<el-col :span="8">
-					<el-form-item label="作业等级">
-						<el-select v-model="form.level" placeholder="请选择">
-							<el-option label="一" value="一" />
-							<el-option label="二" value="二" />
-						</el-select>
-					</el-form-item>
-				</el-col>
-				<el-col :span="8">
-					<el-form-item label="危害辨识">
-						<el-select v-model="form.riskIdentify" placeholder="请选择">
-							<el-option label="辨识一" value="辨识一" />
-							<el-option label="辨识二" value="辨识二" />
-						</el-select>
-					</el-form-item>
-				</el-col>
-			</el-row>
-			<el-row>
-				<el-col :span="8">
-					<el-form-item label="动火方式">
-						<el-select v-model="form.workWay" placeholder="请选择">
-							<el-option label="方式一" value="方式一" />
-							<el-option label="方式二" value="方式二" />
-						</el-select>
-					</el-form-item>
-				</el-col>
-			</el-row>
-			</div>
+			<blind-panel-form :bpForm="form.addForm" ref="additionalForm"></blind-panel-form>
+<!--			<cut-line-form :clForm="form.addForm" ref="additionalForm"></cut-line-form>-->
+<!--			<dirt-work-form :dwForm="form.addForm" ref="additionalForm"></dirt-work-form>-->
+<!--			<fire-work-form :fwForm="form.addForm" ref="additionalForm"></fire-work-form>-->
+<!--			<hang-load-form :hlForm="form.addForm" ref="additionalForm"></hang-load-form>-->
+<!--			<high-work-form :hwForm="form.addForm" ref="additionalForm"></high-work-form>-->
+<!--			<limited-space-form :lsForm="form.addForm" ref="additionalForm"></limited-space-form>-->
+<!--			<temp-elect-form :teForm="form.addForm" ref="additionalForm"></temp-elect-form>-->
+			<div>
 			<div class="homeCard">
 			<el-row>
 				<el-col :span="3"><el-button type="primary" size="default" @click="dialogAddWorker = true">添加作业人</el-button></el-col>
@@ -261,7 +216,8 @@
 				</el-col>
 			</el-row>
 			</div>
-			<div class="homeCard applyBtn">
+			</div>
+			<div class="applyBtn">
 			<el-row>
 				<el-col :span="24" class="submitBtn">
 					<el-button type="primary" size="large" plain @click="handleApply(ruleFormRef2)">发起申请</el-button>
@@ -327,7 +283,7 @@
 					</el-input>
 				</el-form-item>
 				<el-form-item>
-					<el-button type="primary" @click="onSubmitAddForm" size="default">确认</el-button>
+					<el-button type="primary" @click="onSubmitAddForm(ruleFormRef3)" size="default">确认</el-button>
 					<el-button size="default" @click="cancleAdd">取消</el-button>
 				</el-form-item>
 			</el-form>
@@ -396,6 +352,7 @@
 	import {useUserInfo} from "/@/stores/userInfo";
 	import { Session } from '/@/utils/storage';
 	import { Search } from '@element-plus/icons-vue'
+	import { ElMessage } from 'element-plus'
 	import type { FormInstance, FormRules } from 'element-plus'
 	let global: any = {
 		homeChartOne: null,
@@ -429,11 +386,7 @@
 				homeOne:[{id:1,name:'基础数据权限管理系统'},{id:2,name:'双重预防系统'},{id:3,name:'系统2'},{id:4,name:'系统3'},{id:5,name:'系统4'}],
 			});
 			const form = reactive({
-				department: '',
-				applyName: '',
-				level: '',
-				riskIdentify: '',
-				workWay: '',
+				addForm: {},
 				workerList: [],
 				workLocation: '',
 				workTimeLine: '',
@@ -532,6 +485,7 @@
 			const ruleFormRef2 = ref<FormInstance>()
 			const ruleFormRef3 = ref<FormInstance>()
 			const applyRules = reactive<FormRules>({
+				extraForm: [{type: 'object', required: true,message: '此处不能为空'}],
 				workLocation: [{required: true,message: '此处不能为空'}],
 				workTimeLine: [{required: true,message: '此处不能为空'}],
 				workContent: [{required: true,message: '此处不能为空'}],
@@ -542,7 +496,7 @@
 				monitorStation: [{required: true,message: '此处不能为空'}],
 				workhouseLeader: [{required: true,message: '此处不能为空'}],
 				applyDate: [{required: true,message: '此处不能为空'}],
-				otherSpecialWorks: [{required: true,message: '此处不能为空'}],
+				otherSpecialWorks: [{type: 'array', required: true,message: '此处不能为空'}],
 				protections: [{required: true,message: '此处不能为空'}],
 				safetyMan: [{required: true,message: '此处不能为空'}],
 				educated: [{required: true,message: '此处不能为空'}]
@@ -601,15 +555,31 @@
 			const deleteRow = (index) =>{
 				form.workerList.splice( index,1)
 			}
+			const isValid = ref(false)
+			const additionalForm = ref(null)
 			const handleApply = async (formEl: FormInstance | undefined) =>{
 				if (!formEl) return
+				const flag = additionalForm.value.validateForm()
+				await flag.then((res)=>{
+					isValid.value = res
+				})
 				await formEl.validate((valid, fields) => {
-					if (valid) {
-						console.log('submit!')
+					console.log(valid,'and',isValid.value)
+					if (valid && isValid.value) {
+						console.log('submit',form,fields)
+						ElMessage({
+							message: '提交成功!',
+							type: 'success',
+						})
 					} else {
-						console.log('error submit!', fields)
+						// console.log('error submit!',form,fields)
+						ElMessage({
+							message: '表单未填写完整',
+							type: 'error',
+						})
 					}
 				})
+
 			}
 			// 折线图
 			const renderMenu = async (value: string) => {
@@ -630,9 +600,11 @@
 				ruleFormRef,
 				ruleFormRef2,
 				ruleFormRef3,
+				additionalForm,
 				addWorkerRules,
 				saftyFileRules,
 				applyRules,
+				isValid,
 				handleApply,
 				cancleAddFile,
 				deleteRow,
@@ -658,11 +630,20 @@
 			background: #fff;
 			border-radius: 4px;
 			margin-bottom: 20px;
+
+			&:last-of-type{
+				margin-bottom: 100px;
+			}
 		}
 		.applyBtn{
 			position: absolute;
+			width: 100%;
+			padding: 20px;
+			background: #fff;
 			bottom: 0;
 			left: 0;
+			height: 80px;
+			z-index: 999;
 			margin-bottom: 0;
 			border-radius: 0;
 			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
diff --git a/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue b/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue
index a5a527b..94f0618 100644
--- a/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue
+++ b/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue
@@ -1,8 +1,8 @@
 <template>
 	<div class="home-container">
 		<el-scrollbar height="100%">
-		<el-row>
-			<div class="homeCard">
+		<el-row class="homeCard">
+<!--			<div class="homeCard">-->
 			<el-col :span="6">
 				<div class="grid-content topInfo">
 					<div>预约时间:</div>
@@ -37,7 +37,7 @@
 					<div><el-button type="primary" @click="dialogChartsVisible = true">查看统计图表</el-button></div>
 				</div>
 			</el-col>
-			</div>
+<!--			</div>-->
 		</el-row>
 		<el-row>
 			<div class="homeCard">
diff --git a/src/views/specialWorkSystem/workPlan/workReservation/index.vue b/src/views/specialWorkSystem/workPlan/workReservation/index.vue
index 2378d4c..0b25a62 100644
--- a/src/views/specialWorkSystem/workPlan/workReservation/index.vue
+++ b/src/views/specialWorkSystem/workPlan/workReservation/index.vue
@@ -1,8 +1,8 @@
 <template>
 	<div class="home-container">
 		<el-scrollbar height="100%">
-		<el-row>
-			<div class="homeCard">
+		<el-row class="homeCard">
+<!--			<div class="homeCard">-->
 			<el-col :span="6">
 				<div class="grid-content topInfo">
 					<div>当前所属部门:</div>
@@ -43,7 +43,7 @@
 					<div><el-button type="success" @click="dialogFormVisible = true">新增预约</el-button></div>
 				</div>
 			</el-col>
-		</div>
+<!--		</div>-->
 		</el-row>
 		<el-row>
 			<div class="homeCard">
diff --git a/src/views/specialWorkSystem/workProcessManagement/gasCheckAnalyze/index.vue b/src/views/specialWorkSystem/workProcessManagement/gasCheckAnalyze/index.vue
new file mode 100644
index 0000000..b019d19
--- /dev/null
+++ b/src/views/specialWorkSystem/workProcessManagement/gasCheckAnalyze/index.vue
@@ -0,0 +1,261 @@
+<template>
+	<div class="home-container">
+		<el-scrollbar height="100%">
+		<el-row class="homeCard">
+			<el-col :span="8">
+				<div class="grid-content topInfo">
+					<el-input v-model="searchWord" placeholder="作业证编号"></el-input>
+					<el-button type="primary">查询</el-button>
+					<el-button plain>重置</el-button>
+				</div>
+			</el-col>
+		</el-row>
+		<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">新建</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 property="id" label="作业证编号" width="200" sortable/>
+					<el-table-column property="date" label="日期" width="180" sortable/>
+					<el-table-column property="combustible" label="可燃气%" sortable/>
+					<el-table-column property="oxygen" label="氧气%" sortable/>
+					<el-table-column property="co" label="一氧化碳ppm" sortable/>
+					<el-table-column property="hs" label="硫化氢ppm" sortable/>
+					<el-table-column property="updateTime" label="更新时间" sortable/>
+				</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-dialog v-model="dialogDetails" title="签到记录" @close="dialogColse">
+			<el-form :model="details" label-width="120px">
+				<el-form-item label="作业证编号">
+					<el-input v-model="details.id" readonly/>
+				</el-form-item>
+				<el-form-item label="签到人">
+					<el-input
+						v-model="details.worker"
+						class="input-with-select"
+						readonly
+					>
+						<template #append>
+							<el-button :icon="Search" />
+						</template>
+					</el-input>
+				</el-form-item>
+<!--				<el-form-item label="签到状态">-->
+<!--					<el-select v-model="details.status" readonly>-->
+<!--						<el-option label="已签到" value="已签到" />-->
+<!--						<el-option label="未签到" value="未签到" />-->
+<!--					</el-select>-->
+<!--				</el-form-item>-->
+				<el-form-item label="签到时间">
+					<el-input v-model="details.checkinTime" readonly/>
+				</el-form-item>
+				<el-form-item label="备注">
+					<el-input v-model="details.remark" type="textarea" 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-scrollbar>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Plus, Edit, Delete, Refresh, Search } from '@element-plus/icons-vue'
+	import { ElTable } from 'element-plus'
+	let global: any = {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	};
+
+	interface stateType {
+		homeOne: Array <type>
+	}
+	interface type {
+
+	}
+	interface User {
+		date: string
+		name: string
+		address: string
+	}
+	export default defineComponent({
+		name: 'gasCheckAnalyze',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const multipleTableRef = ref<InstanceType<typeof ElTable>>()
+			const multipleSelection = ref<User[]>([])
+			const handleSelectionChange = (val: User[]) => {
+				multipleSelection.value = val
+			}
+			const currentPage = ref(1)
+			const pageSize = ref(10)
+			const handleSizeChange = (val: number) => {
+				console.log(`${val} items per page`)
+			}
+			const handleCurrentChange = (val: number) => {
+				console.log(`current page: ${val}`)
+			}
+			const tableData: User[] = [
+				{
+					id: '11011',
+					date: '2021-04-22 15:21:31',
+					combustible: 0,
+					oxygen: 21,
+					co: 0,
+					hs: 0,
+					updateTime: '2021-04-22 15:21:31',
+				},
+				{
+					id: '11011',
+					date: '2021-04-22 15:21:31',
+					combustible: 1,
+					oxygen: 21,
+					co: 0,
+					hs: 0,
+					updateTime: '2021-04-22 15:21:31',
+				}
+			]
+			const dialogDetails = ref(false)
+			const details = ref({})
+			const viewDetails = (row)=> {
+				console.log(row,'row')
+				details.value = JSON.parse(JSON.stringify(row))
+				console.log(details,'details')
+				dialogDetails.value = true
+			}
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				multipleTableRef,
+				tableData,
+				currentPage,
+				pageSize,
+				dialogDetails,
+				details,
+				viewDetails,
+				handleSizeChange,
+				handleCurrentChange,
+				Plus,
+				Edit,
+				Delete,
+				Search,
+				handleSelectionChange,
+				Refresh,
+				...toRefs(state),
+			};
+		},
+	});
+</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;
+			}
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workProcessManagement/workCheckinRecord/index.vue b/src/views/specialWorkSystem/workProcessManagement/workCheckinRecord/index.vue
new file mode 100644
index 0000000..4173575
--- /dev/null
+++ b/src/views/specialWorkSystem/workProcessManagement/workCheckinRecord/index.vue
@@ -0,0 +1,255 @@
+<template>
+	<div class="home-container">
+		<el-scrollbar height="100%">
+		<el-row class="homeCard">
+			<el-col :span="8">
+				<div class="grid-content topInfo">
+					<el-input v-model="searchWord" placeholder="作业证编号"></el-input>
+					<el-button type="primary">查询</el-button>
+					<el-button plain>重置</el-button>
+				</div>
+			</el-col>
+		</el-row>
+		<div class="homeCard">
+			<div class="main-card">
+				<el-row class="cardTop">
+					<el-col :span="12" class="mainCardBtn">
+						<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 property="id" label="作业证编号" width="200" sortable/>
+					<el-table-column property="worker" label="签到人" width="180" />
+					<el-table-column property="checkinTime" label="签到时间" sortable/>
+					<el-table-column property="remark" label="备注"/>
+					<el-table-column fixed="right" label="操作" width="180">
+						<template #default="scope">
+							<el-button link type="primary" size="small" @click="viewDetails(scope.row)">查看</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-dialog v-model="dialogDetails" title="签到记录" @close="dialogColse">
+			<el-form :model="details" label-width="120px">
+				<el-form-item label="作业证编号">
+					<el-input v-model="details.id" readonly/>
+				</el-form-item>
+				<el-form-item label="签到人">
+					<el-input
+						v-model="details.worker"
+						class="input-with-select"
+						readonly
+					>
+						<template #append>
+							<el-button :icon="Search" />
+						</template>
+					</el-input>
+				</el-form-item>
+<!--				<el-form-item label="签到状态">-->
+<!--					<el-select v-model="details.status" readonly>-->
+<!--						<el-option label="已签到" value="已签到" />-->
+<!--						<el-option label="未签到" value="未签到" />-->
+<!--					</el-select>-->
+<!--				</el-form-item>-->
+				<el-form-item label="签到时间">
+					<el-input v-model="details.checkinTime" readonly/>
+				</el-form-item>
+				<el-form-item label="备注">
+					<el-input v-model="details.remark" type="textarea" 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-scrollbar>
+	</div>
+</template>
+
+<script lang="ts">
+	import { toRefs, reactive, defineComponent, ref } from 'vue';
+	import { storeToRefs } from 'pinia';
+	import { initBackEndControlRoutes } from '/@/router/backEnd';
+	import {useUserInfo} from "/@/stores/userInfo";
+	import { Session } from '/@/utils/storage';
+	import { Edit, Delete, Refresh, Search } from '@element-plus/icons-vue'
+	import { ElTable } from 'element-plus'
+	let global: any = {
+		homeChartOne: null,
+		homeChartTwo: null,
+		homeCharThree: null,
+		dispose: [null, '', undefined],
+	};
+
+	interface stateType {
+		homeOne: Array <type>
+	}
+	interface type {
+
+	}
+	interface User {
+		date: string
+		name: string
+		address: string
+	}
+	export default defineComponent({
+		name: 'workCheckinRecord',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const multipleTableRef = ref<InstanceType<typeof ElTable>>()
+			const multipleSelection = ref<User[]>([])
+			const handleSelectionChange = (val: User[]) => {
+				multipleSelection.value = val
+			}
+			const currentPage = ref(1)
+			const pageSize = ref(10)
+			const handleSizeChange = (val: number) => {
+				console.log(`${val} items per page`)
+			}
+			const handleCurrentChange = (val: number) => {
+				console.log(`current page: ${val}`)
+			}
+			const tableData: User[] = [
+				{
+					id: '11011',
+					worker: '吴海涛',
+					checkinTime: '2021-04-22 15:21:31',
+					remark: ''
+				},
+				{
+					id: '11012',
+					worker: '吴沈峰',
+					checkinTime: '2021-04-22 15:21:31',
+					remark: ''
+				}
+			]
+			const dialogDetails = ref(false)
+			const details = ref({})
+			const viewDetails = (row)=> {
+				console.log(row,'row')
+				details.value = JSON.parse(JSON.stringify(row))
+				console.log(details,'details')
+				dialogDetails.value = true
+			}
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				multipleTableRef,
+				tableData,
+				currentPage,
+				pageSize,
+				dialogDetails,
+				details,
+				viewDetails,
+				handleSizeChange,
+				handleCurrentChange,
+				Edit,
+				Delete,
+				Search,
+				handleSelectionChange,
+				Refresh,
+				...toRefs(state),
+			};
+		},
+	});
+</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;
+			}
+		}
+	}
+</style>

--
Gitblit v1.9.2