From eb706c505406a6a38ca396ad73262f364badea7e Mon Sep 17 00:00:00 2001
From: Admin <978517621@qq.com>
Date: 星期四, 07 七月 2022 18:05:13 +0800
Subject: [PATCH] 添加页面组件

---
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue     |  160 +++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue                       |  162 +++-
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue      |  210 +++++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue     |  154 +++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue     |  143 ++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue    |  143 ++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue     |  212 +++++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue |  166 +++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue   |  337 +++++++++++
 9 files changed, 1,640 insertions(+), 47 deletions(-)

diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue
new file mode 100644
index 0000000..39513f7
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue
@@ -0,0 +1,337 @@
+<template>
+	<div class="comp-container">
+		<el-form :model="bpForm" label-width="180px" :rules="bpFormRules" ref="ruleFormRef">
+			<div class="homeCard">
+				<el-row>
+					<el-col :span="8">
+						<el-form-item label="申请部门" prop="bpDepartment">
+							<el-select v-model="bpForm.bpDepartment" placeholder="请选择部门">
+								<el-option label="机修班" value="机修班" />
+								<el-option label="火工班" value="火工班" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="申请人" prop="bpApplyName">
+							<el-input
+									v-model="bpForm.bpApplyName"
+									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="24">
+						<el-form-item label="设备管道名称" prop="bpTubeName">
+							<el-input
+									v-model="bpForm.bpTubeName"
+									placeholder="请输入"
+									class="input-with-select"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="主要介质" prop="bpMainMatter">
+							<el-input
+									v-model="bpForm.bpMainMatter"
+									placeholder="请输入"
+									class="input-with-select"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="8">
+						<el-form-item label="温度" prop="bpTemperature">
+							<el-input
+									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"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="盲板材质" prop="bpMaterial">
+							<el-input
+									v-model="bpForm.bpMaterial"
+									placeholder="请输入"
+									class="input-with-select"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="盲板规格" prop="bpFormat">
+							<el-input
+									v-model="bpForm.bpFormat"
+									placeholder="请输入"
+									class="input-with-select"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="盲板编号" prop="bpNum">
+							<el-input
+									v-model="bpForm.bpNum"
+									placeholder="请输入"
+									class="input-with-select"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="盲板位置" prop="bpLocation">
+							<el-input
+									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-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"
+							>
+								<el-button type="primary">上传附件</el-button>
+								<template #tip>
+									<div class="el-upload__tip">
+										jpg/png 文件大小须在500k以内.
+									</div>
+								</template>
+							</el-upload>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="装盲板负责人" prop="bpPrincipals">
+							<el-select v-model="bpForm.bpPrincipals" placeholder="请选择" multiple>
+								<el-option label="负责人一" value="负责人一" />
+								<el-option label="负责人二" value="负责人二" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="装盲板时间" prop="bpInstallTime">
+						<el-date-picker
+								v-model="bpForm.bpInstallTime"
+								type="datetime"
+								placeholder="请选择"
+						/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="拆盲板负责人" prop="bpDePrincipals">
+							<el-select v-model="bpForm.bpDePrincipals" placeholder="请选择" multiple>
+								<el-option label="负责人一" value="负责人一" />
+								<el-option label="负责人二" value="负责人二" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="拆盲板时间" prop="bpUninstallTime">
+							<el-date-picker
+									v-model="bpForm.bpUninstallTime"
+									type="datetime"
+									placeholder="请选择"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+		</el-form>
+	</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 { Search } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules, UploadProps, UploadUserFile } 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: 'blindPanelForm',
+		setup() {
+			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 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'}]
+			})
+			const fileList = ref<UploadUserFile[]>([
+				{
+					name: 'element-plus-logo.svg',
+					url: 'https://element-plus.org/images/element-plus-logo.svg',
+				}
+			])
+
+			const handleRemove: UploadProps['onRemove'] = (file, uploadFiles) => {
+				console.log(file, uploadFiles)
+			}
+
+			const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+				console.log(uploadFile)
+			}
+
+			const handleExceed: UploadProps['onExceed'] = (files, uploadFiles) => {
+				ElMessage.warning(
+						// `The limit is 3, you selected ${files.length} files this time, add up to ${
+						// 		files.length + uploadFiles.length
+						// } totally`
+						'文件总数超出限制'
+				)
+			}
+
+			const beforeRemove: UploadProps['beforeRemove'] = (uploadFile, uploadFiles) => {
+				return ElMessageBox.confirm(
+						`取消上传 ${uploadFile.name} ?`
+				).then(
+						() => true,
+						() => false
+				)
+			}
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				bpForm,
+				bpFormRules,
+				ruleFormRef,
+				fileList,
+				handleRemove,
+				handlePreview,
+				handleExceed,
+				beforeRemove,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+		.submitBtn{
+			display: flex;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue
new file mode 100644
index 0000000..49e1f46
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue
@@ -0,0 +1,210 @@
+<template>
+	<div class="comp-container">
+		<el-form :model="clForm" label-width="180px" :rules="clFormRules" ref="ruleFormRef">
+			<div class="homeCard">
+				<el-row>
+					<el-col :span="8">
+						<el-form-item label="申请部门" prop="clDepartment">
+							<el-select v-model="clForm.clDepartment" placeholder="请选择部门">
+								<el-option label="机修班" value="机修班" />
+								<el-option label="火工班" value="火工班" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="申请人" prop="clApplyName">
+							<el-input
+									v-model="clForm.clApplyName"
+									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="24">
+						<el-form-item label="断路原因" prop="clReason">
+							<el-input
+									v-model="clForm.clReason"
+									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="clUnits">
+							<el-select v-model="clForm.clUnits" placeholder="请选择" multiple>
+								<el-option label="单位一" value="单位一" />
+								<el-option label="单位二" value="单位二" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="断路地段示意图" prop="fileList">
+							<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"
+							>
+								<el-button type="primary">上传附件</el-button>
+								<template #tip>
+									<div class="el-upload__tip">
+										jpg/png 文件大小须在500k以内.
+									</div>
+								</template>
+							</el-upload>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+		</el-form>
+	</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 { Search } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules, UploadProps, UploadUserFile } 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: 'cutLineForm',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const clForm = reactive({
+				clDepartment: '',
+				clApplyName: '',
+				clReason: '',
+				clUnits: [],
+				fileList: []
+			})
+			const ruleFormRef = ref<FormInstance>()
+			const clFormRules = reactive<FormRules>({
+				clDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
+				clApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
+				clReason: [{required: true,message: '此处不可为空',trigger: 'blur'}],
+				clUnits: [{required: true,message: '此处不可为空',trigger: 'blur'}],
+				fileList: [{type: 'array',required: true,message: '此处不可为空',trigger: 'change'}]
+			})
+			const fileList = ref<UploadUserFile[]>([
+				{
+					name: 'element-plus-logo.svg',
+					url: 'https://element-plus.org/images/element-plus-logo.svg',
+				}
+			])
+
+			const handleRemove: UploadProps['onRemove'] = (file, uploadFiles) => {
+				console.log(file, uploadFiles)
+			}
+
+			const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+				console.log(uploadFile)
+			}
+
+			const handleExceed: UploadProps['onExceed'] = (files, uploadFiles) => {
+				ElMessage.warning(
+						// `The limit is 3, you selected ${files.length} files this time, add up to ${
+						// 		files.length + uploadFiles.length
+						// } totally`
+						'文件总数超出限制'
+				)
+			}
+
+			const beforeRemove: UploadProps['beforeRemove'] = (uploadFile, uploadFiles) => {
+				return ElMessageBox.confirm(
+						`取消上传 ${uploadFile.name} ?`
+				).then(
+						() => true,
+						() => false
+				)
+			}
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				clForm,
+				clFormRules,
+				ruleFormRef,
+				fileList,
+				handleRemove,
+				handlePreview,
+				handleExceed,
+				beforeRemove,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+		.submitBtn{
+			display: flex;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue
new file mode 100644
index 0000000..ceb729f
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue
@@ -0,0 +1,212 @@
+<template>
+	<div class="comp-container">
+		<el-form :model="dwForm" label-width="180px" :rules="dwFormRules" ref="ruleFormRef">
+			<div class="homeCard">
+				<el-row>
+					<el-col :span="8">
+						<el-form-item label="申请部门" prop="dwDepartment">
+							<el-select v-model="dwForm.dwDepartment" placeholder="请选择部门">
+								<el-option label="机修班" value="机修班" />
+								<el-option label="火工班" value="火工班" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="申请人" prop="dwApplyName">
+							<el-input
+									v-model="dwForm.dwApplyName"
+									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="24">
+						<el-form-item label="动土范围" prop="dwRange">
+							<el-input
+									v-model="dwForm.dwRange"
+									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="dwWay">
+							<el-input
+									v-model="dwForm.dwWay"
+									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-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"
+							>
+								<el-button type="primary">上传附件</el-button>
+								<template #tip>
+									<div class="el-upload__tip">
+										jpg/png 文件大小须在500k以内.
+									</div>
+								</template>
+							</el-upload>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+		</el-form>
+	</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 { Search } from '@element-plus/icons-vue'
+	import { ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules, UploadProps, UploadUserFile } 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: 'dirtWorkForm',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const dwForm = reactive({
+				dwDepartment: '',
+				dwApplyName: '',
+				dwRange: '',
+				dwWay: '',
+				fileList: []
+			})
+			const ruleFormRef = ref<FormInstance>()
+			const dwFormRules = reactive<FormRules>({
+				dwDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
+				dwApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
+				dwRange: [{required: true,message: '此处不可为空',trigger: 'blur'}],
+				dwWay: [{required: true,message: '此处不可为空',trigger: 'blur'}],
+				fileList: [{type: 'array',required: true,message: '此处不可为空',trigger: 'change'}]
+			})
+			const fileList = ref<UploadUserFile[]>([
+				{
+					name: 'element-plus-logo.svg',
+					url: 'https://element-plus.org/images/element-plus-logo.svg',
+				}
+			])
+
+			const handleRemove: UploadProps['onRemove'] = (file, uploadFiles) => {
+				console.log(file, uploadFiles)
+			}
+
+			const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+				console.log(uploadFile)
+			}
+
+			const handleExceed: UploadProps['onExceed'] = (files, uploadFiles) => {
+				ElMessage.warning(
+						// `The limit is 3, you selected ${files.length} files this time, add up to ${
+						// 		files.length + uploadFiles.length
+						// } totally`
+						'文件总数超出限制'
+				)
+			}
+
+			const beforeRemove: UploadProps['beforeRemove'] = (uploadFile, uploadFiles) => {
+				return ElMessageBox.confirm(
+						`取消上传 ${uploadFile.name} ?`
+				).then(
+						() => true,
+						() => false
+				)
+			}
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				dwForm,
+				dwFormRules,
+				ruleFormRef,
+				fileList,
+				handleRemove,
+				handlePreview,
+				handleExceed,
+				beforeRemove,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+		.submitBtn{
+			display: flex;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue
new file mode 100644
index 0000000..313ad5c
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue
@@ -0,0 +1,154 @@
+<template>
+	<div class="comp-container">
+		<el-form :model="fwForm" label-width="150px" :rules="fwRules" ref="ruleFormRef">
+			<div class="homeCard">
+				<el-row>
+					<el-col :span="8">
+						<el-form-item label="申请部门" prop="fwDepartment">
+							<el-select v-model="fwForm.fwDepartment" placeholder="请选择部门">
+								<el-option label="机修班" value="机修班" />
+								<el-option label="火工班" value="火工班" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="申请人" prop="fwApplyName">
+							<el-input
+									v-model="fwForm.fwApplyName"
+									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="作业等级" prop="fwLevel">
+							<el-select v-model="fwForm.fwLevel" placeholder="请选择">
+								<el-option label="一" value="一" />
+								<el-option label="二" value="二" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="危害辨识" prop="fwRiskIdentify">
+							<el-select v-model="fwForm.fwRiskIdentify" 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="动火方式" prop="fwWorkWay">
+							<el-select v-model="fwForm.fwWorkWay" placeholder="请选择">
+								<el-option label="方式一" value="方式一" />
+								<el-option label="方式二" value="方式二" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+		</el-form>
+	</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 { Search } from '@element-plus/icons-vue'
+	import type { FormInstance, FormRules } 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: 'fireWorkForm',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const fwForm = reactive({
+				fwDepartment: '',
+				fwApplyName: '',
+				fwLevel: '',
+				fwRiskIdentify: '',
+				fwWorkWay: ''
+			})
+			const ruleFormRef = 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'}]
+			})
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				fwForm,
+				ruleFormRef,
+				fwRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.comp-container {
+		height: 100%;
+		overflow: hidden;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+		.submitBtn{
+			display: flex;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue
new file mode 100644
index 0000000..858080e
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue
@@ -0,0 +1,160 @@
+<template>
+	<div class="comp-container">
+		<el-form :model="hlForm" label-width="180px" :rules="hlFormRules" ref="ruleFormRef">
+			<div class="homeCard">
+				<el-row>
+					<el-col :span="8">
+						<el-form-item label="申请部门" prop="hlDepartment">
+							<el-select v-model="hlForm.hlDepartment" placeholder="请选择部门">
+								<el-option label="机修班" value="机修班" />
+								<el-option label="火工班" value="火工班" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="申请人" prop="hlApplyName">
+							<el-input
+									v-model="hlForm.hlApplyName"
+									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="作业等级" prop="hlLevel">
+							<el-select v-model="hlForm.hlLevel" placeholder="请选择等级">
+								<el-option label="等级一" value="等级一" />
+								<el-option label="等级二" value="等级二" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="起吊重物质量" prop="hlWeight">
+							<el-input
+									v-model="hlForm.hlWeight"
+									placeholder="请输入"
+									class="input-with-select"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="吊装工具名称" prop="hlToolsName">
+							<el-input
+									v-model="hlForm.hlToolsName"
+									placeholder="请输入"
+									class="input-with-select"
+							>
+								<template #append>
+									<el-button :icon="Search" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+		</el-form>
+	</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 { Search } from '@element-plus/icons-vue'
+	import type { FormInstance, FormRules } 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: 'hangLoadForm',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const hlForm = reactive({
+				hlDepartment: '',
+				hlApplyName: '',
+				hlLevel: '',
+				hlWeight: '',
+				hlToolsName: ''
+			})
+			const ruleFormRef = ref<FormInstance>()
+			const hlFormRules = reactive<FormRules>({
+				hlDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
+				hlApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
+				hlLevel: [{required: true,message: '此处不可为空',trigger: 'blur'}],
+				hlWeight: [{required: true,message: '此处不可为空',trigger: 'blur'}],
+				hlToolsName: [{required: true,message: '此处不可为空',trigger: 'blur'}]
+			})
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				hlForm,
+				hlFormRules,
+				ruleFormRef,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+		.submitBtn{
+			display: flex;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue
new file mode 100644
index 0000000..198b18b
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue
@@ -0,0 +1,143 @@
+<template>
+	<div class="comp-container">
+		<el-form :model="hwForm" label-width="150px" :rules="hwRules" ref="ruleFormRef">
+			<div class="homeCard">
+				<el-row>
+					<el-col :span="8">
+						<el-form-item label="申请部门" prop="hwDepartment">
+							<el-select v-model="hwForm.hwDepartment" placeholder="请选择部门">
+								<el-option label="机修班" value="机修班" />
+								<el-option label="火工班" value="火工班" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="申请人" prop="hwApplyName">
+							<el-input
+									v-model="hwForm.hwApplyName"
+									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="作业等级" prop="hwLevel">
+							<el-select v-model="hwForm.hwLevel" placeholder="请选择">
+								<el-option label="一" value="一" />
+								<el-option label="二" value="二" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="作业高度" prop="hwHeight">
+							<el-input
+									v-model="hwForm.hwHeight"
+									placeholder="请输入"
+									class="input-with-select"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+		</el-form>
+	</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 { Search } from '@element-plus/icons-vue'
+	import type { FormInstance, FormRules } 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: 'highWorkForm',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const hwForm = reactive({
+				hwDepartment: '',
+				hwApplyName: '',
+				hwLevel: '',
+				hwHeight: ''
+			})
+			const ruleFormRef = 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 renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				hwForm,
+				ruleFormRef,
+				hwRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.comp-container {
+		height: 100%;
+		overflow: hidden;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+		.submitBtn{
+			display: flex;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue
new file mode 100644
index 0000000..e5bcb8d
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue
@@ -0,0 +1,166 @@
+<template>
+	<div class="comp-container">
+		<el-form :model="lsForm" label-width="180px" :rules="lsFormRules" ref="ruleFormRef">
+			<div class="homeCard">
+				<el-row>
+					<el-col :span="8">
+						<el-form-item label="申请部门" prop="lsDepartment">
+							<el-select v-model="lsForm.lsDepartment" placeholder="请选择部门">
+								<el-option label="机修班" value="机修班" />
+								<el-option label="火工班" value="火工班" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="申请人" prop="lsApplyName">
+							<el-input
+									v-model="lsForm.lsApplyName"
+									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="24">
+						<el-form-item label="受限空间名称" prop="lsUnitName">
+							<el-input
+									v-model="lsForm.lsUnitName"
+									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="24">
+						<el-form-item label="受限空间所属单位" prop="lsUnit">
+							<el-select v-model="lsForm.lsUnit" placeholder="请选择">
+								<el-option label="一" value="一" />
+								<el-option label="二" value="二" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="受限空间内原有介质名称" prop="lsUnitName">
+							<el-input
+									v-model="lsForm.lsUnitMatterName"
+									placeholder="请输入"
+									class="input-with-select"
+							>
+								<template #append>
+									<el-button :icon="Search" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+		</el-form>
+	</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 { Search } from '@element-plus/icons-vue'
+	import type { FormInstance, FormRules } 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: 'limitedSpaceForm',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const lsForm = reactive({
+				lsDepartment: '',
+				lsApplyName: '',
+				lsUnitName: '',
+				lsUnit: '',
+				lsUnitMatterName: ''
+			})
+			const ruleFormRef = ref<FormInstance>()
+			const lsFormRules = reactive<FormRules>({
+				lsDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
+				lsApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
+				lsUnitName: [{required: true,message: '此处不可为空',trigger: 'blur'}],
+				lsUnit: [{required: true,message: '此处不可为空',trigger: 'blur'}],
+				lsUnitMatterName: [{required: true,message: '此处不可为空',trigger: 'blur'}]
+			})
+			// 折线图
+			const renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				lsForm,
+				lsFormRules,
+				ruleFormRef,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.home-container {
+		height: 100%;
+		overflow: hidden;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+		.submitBtn{
+			display: flex;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue
new file mode 100644
index 0000000..296b5a1
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue
@@ -0,0 +1,143 @@
+<template>
+	<div class="comp-container">
+		<el-form :model="teForm" label-width="150px" :rules="teRules" ref="ruleFormRef">
+			<div class="homeCard">
+				<el-row>
+					<el-col :span="8">
+						<el-form-item label="申请部门" prop="teDepartment">
+							<el-select v-model="teForm.teDepartment" placeholder="请选择部门">
+								<el-option label="机修班" value="机修班" />
+								<el-option label="火工班" value="火工班" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="申请人" prop="teApplyName">
+							<el-input
+									v-model="teForm.teApplyName"
+									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="作业等级" prop="teLevel">
+							<el-select v-model="teForm.teLevel" placeholder="请选择等级">
+								<el-option label="等级一" value="等级一" />
+								<el-option label="等级二" value="等级二" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :span="8">
+						<el-form-item label="作业高度" prop="teHeight">
+							<el-input
+									v-model="teForm.teHeight"
+									placeholder="请输入"
+									class="input-with-select"
+							/>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+		</el-form>
+	</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 { Search } from '@element-plus/icons-vue'
+	import type { FormInstance, FormRules } 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: 'tempElectForm',
+		setup() {
+			const userInfo = useUserInfo()
+			const { userInfos } = storeToRefs(userInfo);
+			const state  = reactive<stateType>({});
+			const teForm = reactive({
+				teDepartment: '',
+				teApplyName: '',
+				teLevel: '',
+				teHeight: ''
+			})
+			const ruleFormRef = 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 renderMenu = async (value: string) => {
+				Session.set('projectId',value)
+				userInfos.value.projectId = value
+				await initBackEndControlRoutes();
+			};
+			return {
+				renderMenu,
+				teForm,
+				ruleFormRef,
+				teRules,
+				...toRefs(state),
+			};
+		},
+	});
+</script>
+
+<style scoped lang="scss">
+	.comp-container {
+		height: 100%;
+		overflow: hidden;
+		.homeCard{
+			width: 100%;
+			padding: 20px;
+			background: #fff;
+			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.el-row{
+			margin-bottom: 20px;
+		}
+		.el-row:last-child {
+			margin-bottom: 0;
+		}
+		.el-input{
+			width: 100% !important;
+		}
+		.el-date-editor::v-deep{
+			width: 100%;
+		}
+		.el-select{
+			width: 100%;
+		}
+		.el-cascader{
+			width: 100% !important;
+		}
+		.submitBtn{
+			display: flex;
+			justify-content: center;
+		}
+	}
+</style>
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApply/index.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
similarity index 72%
rename from src/views/specialWorkSystem/workApplyManagement/workApply/index.vue
rename to src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
index 09e11a7..42b3dff 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApply/index.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
@@ -1,8 +1,9 @@
 <template>
 	<div class="home-container">
 		<el-scrollbar height="100%">
-		<div class="homeCard">
-		<el-form :model="form" label-width="150px">
+		<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="申请部门">
@@ -54,13 +55,15 @@
 					</el-form-item>
 				</el-col>
 			</el-row>
+			</div>
+			<div class="homeCard">
 			<el-row>
 				<el-col :span="3"><el-button type="primary" size="default" @click="dialogAddWorker = true">添加作业人</el-button></el-col>
 				<el-col :span="21">
 					<el-table :data="form.workerList" style="width: 100%">
 						<el-table-column type="index" label="序号" width="100"/>
 						<el-table-column prop="worker" label="作业人"/>
-						<el-table-column prop="role" label="作业人角色" width="180" />
+						<el-table-column prop="role" label="作业人角色" width="180"/>
 						<el-table-column prop="unit" label="所属单位" width="180" />
 						<el-table-column prop="certificate" label="证书名称" width="180" />
 						<el-table-column prop="certificateId" label="证书号" />
@@ -74,7 +77,7 @@
 			</el-row>
 			<el-row>
 				<el-col :span="12">
-					<el-form-item label="作业地点">
+					<el-form-item label="作业地点" prop="workLocation">
 						<el-input
 							v-model="form.workLocation"
 							placeholder="请输入"
@@ -87,7 +90,7 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="作业期限">
+					<el-form-item label="作业期限" prop="workTimeLine">
 						<el-date-picker
 							v-model="form.workTimeLine"
 							type="daterange"
@@ -102,7 +105,7 @@
 			</el-row>
 			<el-row>
 				<el-col :span="12">
-					<el-form-item label="作业内容">
+					<el-form-item label="作业内容" prop="workContent">
 						<el-input
 							v-model="form.workContent"
 							placeholder="请输入"
@@ -115,7 +118,7 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="作业单位">
+					<el-form-item label="作业单位" prop="workUnit">
 						<el-input
 							v-model="form.workUnit"
 							placeholder="请输入"
@@ -128,9 +131,9 @@
 			</el-row>
 			<el-row>
 				<el-col :span="6">
-					<el-form-item label="作业负责人">
+					<el-form-item label="作业负责人" prop="responsor">
 						<el-input
-							v-model="form.responser"
+							v-model="form.responsor"
 							placeholder="请输入"
 							class="input-with-select"
 						>
@@ -141,7 +144,7 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="6">
-					<el-form-item label="监护人">
+					<el-form-item label="监护人" prop="monitor">
 						<el-input
 							v-model="form.monitor"
 							placeholder="请输入"
@@ -154,7 +157,7 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="6">
-					<el-form-item label="监护人岗位">
+					<el-form-item label="监护人岗位" prop="monitorStation">
 						<el-input
 							v-model="form.monitorStation"
 							placeholder="请输入"
@@ -169,7 +172,7 @@
 			</el-row>
 			<el-row>
 				<el-col :span="12">
-					<el-form-item label="生产车间负责人">
+					<el-form-item label="生产车间负责人" prop="workhouseLeader">
 						<el-input
 							v-model="form.workhouseLeader"
 							placeholder="请输入"
@@ -182,7 +185,7 @@
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="申请日期">
+					<el-form-item label="申请日期" prop="applyDate">
 						<el-date-picker
 							size="large"
 							v-model="form.applyDate"
@@ -193,10 +196,11 @@
 					</el-form-item>
 				</el-col>
 			</el-row>
-			<el-divider />
+			</div>
+			<div class="homeCard">
 			<el-row>
 				<el-col :span="24">
-					<el-form-item label="涉及的其他特殊作业">
+					<el-form-item label="涉及的其他特殊作业" prop="otherSpecialWorks">
 						<el-checkbox-group v-model="form.otherSpecialWorks">
 							<el-checkbox label="动火作业" />
 							<el-checkbox label="受限空间" />
@@ -213,7 +217,7 @@
 			</el-row>
 			<el-row>
 				<el-col>
-					<el-form-item label="防护用品">
+					<el-form-item label="防护用品" prop="protections">
 						<el-cascader
 							v-model="form.protections"
 							:options="protectOption"
@@ -225,25 +229,25 @@
 					</el-form-item>
 				</el-col>
 			</el-row>
-			<el-row>
-				<el-col :span="6"><el-button type="primary" size="default" @click="dialogAddFile = true">点击添加安全交底和风险告知书</el-button></el-col>
+			<el-row style="justify-content: center">
+				<el-button type="primary" size="default" @click="dialogAddFile = true">点击添加安全交底和风险告知书</el-button>
 			</el-row>
 			<el-row>
 				<el-col :span="12">
-					<el-form-item label="实施安全教育人">
+					<el-form-item label="实施安全教育人" prop="safetyMan">
 						<el-input
 							v-model="form.safetyMan"
 							placeholder="请输入"
 							class="input-with-select"
 						>
 							<template #append>
-								<el-button :icon="Search" />
+								<el-button :icon="Search"/>
 							</template>
 						</el-input>
 					</el-form-item>
 				</el-col>
 				<el-col :span="12">
-					<el-form-item label="被教育人">
+					<el-form-item label="被教育人" prop="educated">
 						<el-input
 							v-model="form.educated"
 							placeholder="请输入"
@@ -256,17 +260,18 @@
 					</el-form-item>
 				</el-col>
 			</el-row>
-			<el-divider />
+			</div>
+			<div class="homeCard applyBtn">
 			<el-row>
 				<el-col :span="24" class="submitBtn">
-					<el-button type="primary" size="large" plain>发起申请</el-button>
+					<el-button type="primary" size="large" plain @click="handleApply(ruleFormRef2)">发起申请</el-button>
 				</el-col>
 			</el-row>
+			</div>
 		</el-form>
-		</div>
 		<el-dialog v-model="dialogAddWorker" title="添加作业人">
-			<el-form :model="addWorkerForm" label-width="120px">
-				<el-form-item label="作业人">
+			<el-form :model="addWorkerForm" label-width="120px" :rules="addWorkerRules" ref='ruleFormRef3'>
+				<el-form-item label="作业人" prop="worker">
 					<el-input
 							v-model="addWorkerForm.worker"
 							placeholder="请输入"
@@ -277,7 +282,7 @@
 						</template>
 					</el-input>
 				</el-form-item>
-				<el-form-item label="作业人角色">
+				<el-form-item label="作业人角色" prop="role">
 					<el-input
 							v-model="addWorkerForm.role"
 							placeholder="请输入"
@@ -288,7 +293,7 @@
 						</template>
 					</el-input>
 				</el-form-item>
-				<el-form-item label="作业人角色">
+				<el-form-item label="作业人角色" prop="unit">
 					<el-input
 							v-model="addWorkerForm.unit"
 							placeholder="请输入"
@@ -299,7 +304,7 @@
 						</template>
 					</el-input>
 				</el-form-item>
-				<el-form-item label="证书名称">
+				<el-form-item label="证书名称" prop="certificate">
 					<el-input
 							v-model="addWorkerForm.certificate"
 							placeholder="请输入"
@@ -310,7 +315,7 @@
 						</template>
 					</el-input>
 				</el-form-item>
-				<el-form-item label="证书号">
+				<el-form-item label="证书号" prop="certificateId">
 					<el-input
 							v-model="addWorkerForm.certificateId"
 							placeholder="请输入"
@@ -385,7 +390,7 @@
 </template>
 
 <script lang="ts">
-	import { toRefs, reactive, defineComponent, ref } from 'vue';
+	import { toRefs, reactive, defineComponent, ref, defineAsyncComponent } from 'vue';
 	import { storeToRefs } from 'pinia';
 	import { initBackEndControlRoutes } from '/@/router/backEnd';
 	import {useUserInfo} from "/@/stores/userInfo";
@@ -406,7 +411,17 @@
 
 	}
 	export default defineComponent({
-		name: 'workApply',
+		name: 'workApplyForm',
+		components: {
+			fireWorkForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue')),
+			limitedSpaceForm: defineAsyncComponent(() => import('/@/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue')),
+			hangLoadForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue')),
+			dirtWorkForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue')),
+			cutLineForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue')),
+			highWorkForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue')),
+			tempElectForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue')),
+			blindPanelForm: defineAsyncComponent(()=> import('/@/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue'))
+		},
 		setup() {
 			const userInfo = useUserInfo()
 			const { userInfos } = storeToRefs(userInfo);
@@ -424,7 +439,7 @@
 				workTimeLine: '',
 				workContent: '',
 				workUnit: '',
-				responser: '',
+				responsor: '',
 				monitor: '',
 				workMonitor: '',
 				monitorStation: '',
@@ -514,6 +529,31 @@
 				}
 			]
 			const ruleFormRef = ref<FormInstance>()
+			const ruleFormRef2 = ref<FormInstance>()
+			const ruleFormRef3 = ref<FormInstance>()
+			const applyRules = reactive<FormRules>({
+				workLocation: [{required: true,message: '此处不能为空'}],
+				workTimeLine: [{required: true,message: '此处不能为空'}],
+				workContent: [{required: true,message: '此处不能为空'}],
+				workUnit: [{required: true,message: '此处不能为空'}],
+				responsor: [{required: true,message: '此处不能为空'}],
+				monitor: [{required: true,message: '此处不能为空'}],
+				workMonitor: [{required: true,message: '此处不能为空'}],
+				monitorStation: [{required: true,message: '此处不能为空'}],
+				workhouseLeader: [{required: true,message: '此处不能为空'}],
+				applyDate: [{required: true,message: '此处不能为空'}],
+				otherSpecialWorks: [{required: true,message: '此处不能为空'}],
+				protections: [{required: true,message: '此处不能为空'}],
+				safetyMan: [{required: true,message: '此处不能为空'}],
+				educated: [{required: true,message: '此处不能为空'}]
+			})
+			const addWorkerRules = reactive<FormRules>({
+				worker: [{required: true,message: '此处不能为空'}],
+				role: [{required: true,message: '此处不能为空'}],
+				unit: [{required: true,message: '此处不能为空'}],
+				certificate: [{required: true,message: '此处不能为空'}],
+				certificateId: [{required: true,message: '此处不能为空'}]
+			})
 			const saftyFileRules = reactive<FormRules>({
 				surrounding: [{required: true,message: '该选项不能为空'}],
 				risk: [{required: true,message: '该选项不能为空'}],
@@ -524,16 +564,23 @@
 				console.log(value)
 			}
 
-			const onSubmitAddForm = () => {
-				form.workerList.push(addWorkerForm.value)
-				addWorkerForm.value = {
-					worker: '',
-					role: '',
-					unit: '',
-					certificate: '',
-					certificateId: ''
-				}
-				dialogAddWorker.value = false
+			const onSubmitAddForm = async (formEl: FormInstance | undefined) => {
+				if (!formEl) return
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						form.workerList.push(addWorkerForm.value)
+						addWorkerForm.value = {
+							worker: '',
+							role: '',
+							unit: '',
+							certificate: '',
+							certificateId: ''
+						}
+						dialogAddWorker.value = false
+					} else {
+						console.log('error submit!', fields)
+					}
+				})
 			}
 			const onSubmitAddFile = () =>{
 
@@ -554,6 +601,16 @@
 			const deleteRow = (index) =>{
 				form.workerList.splice( index,1)
 			}
+			const handleApply = async (formEl: FormInstance | undefined) =>{
+				if (!formEl) return
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						console.log('submit!')
+					} else {
+						console.log('error submit!', fields)
+					}
+				})
+			}
 			// 折线图
 			const renderMenu = async (value: string) => {
 				Session.set('projectId',value)
@@ -571,7 +628,12 @@
 				addWorkerForm,
 				saftyFileForm,
 				ruleFormRef,
+				ruleFormRef2,
+				ruleFormRef3,
+				addWorkerRules,
 				saftyFileRules,
+				applyRules,
+				handleApply,
 				cancleAddFile,
 				deleteRow,
 				cancleAdd,
@@ -589,21 +651,27 @@
 		height: 100%;
 		overflow: hidden;
 		padding: 20px;
+		position: relative;
 		.homeCard{
 			width: 100%;
 			padding: 20px;
 			background: #fff;
 			border-radius: 4px;
+			margin-bottom: 20px;
+		}
+		.applyBtn{
+			position: absolute;
+			bottom: 0;
+			left: 0;
+			margin-bottom: 0;
+			border-radius: 0;
+			box-shadow: 0 -3px 8px rgba(150,150,150,.1);
 		}
 		.el-row{
 			margin-bottom: 20px;
 		}
 		.el-row:last-child {
 			margin-bottom: 0;
-		}
-		.el-col{
-			align-items: center;
-			margin-bottom: 10px;
 		}
 		.el-input{
 			width: 100% !important;

--
Gitblit v1.9.2