From 647ef6974a149e21bc88e4b559ba9badaafe367e Mon Sep 17 00:00:00 2001
From: Admin <978517621@qq.com>
Date: 星期一, 11 七月 2022 18:02:28 +0800
Subject: [PATCH] 添加我的申请tab切换页面,优化组件表单的校验

---
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/hangLoadForm.vue     |   18 +
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue                       |   41 +++-
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/cutLineForm.vue      |   18 +
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/fireWorkForm.vue     |   18 +
 src/views/specialWorkSystem/workApplyManagement/myApply/index.vue                             |  282 ++++++++++++++++++++++++++++
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/highWorkForm.vue     |   18 +
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/tempElectForm.vue    |   18 +
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/dirtWorkForm.vue     |   18 +
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/limitedSpaceForm.vue |   18 +
 src/views/specialWorkSystem/workApplyManagement/workApplyForm/components/blindPanelForm.vue   |  108 ++++++----
 10 files changed, 477 insertions(+), 80 deletions(-)

diff --git a/src/views/specialWorkSystem/workApplyManagement/myApply/index.vue b/src/views/specialWorkSystem/workApplyManagement/myApply/index.vue
new file mode 100644
index 0000000..3a07d4e
--- /dev/null
+++ b/src/views/specialWorkSystem/workApplyManagement/myApply/index.vue
@@ -0,0 +1,282 @@
+<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>
+						<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="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 0876e24..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="bpForm.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>
@@ -208,7 +208,7 @@
 	export default defineComponent({
 		name: 'blindPanelForm',
 		props: {
-			bpForm: Object
+			bpForm: Object,
 		},
 		setup(props) {
 			const userInfo = useUserInfo()
@@ -232,7 +232,7 @@
 			// 	bpDePrincipals: [],
 			// 	bpUninstallTime: ''
 			// })
-			const ruleFormRef = ref<FormInstance>()
+			const bpRef = ref<FormInstance>()
 			const bpFormRules = reactive<FormRules>({
 				bpDepartment:[{required: true,message: '此处不可为空'}],
 				bpApplyName:[{required: true,message: '此处不可为空'}],
@@ -244,10 +244,9 @@
 				bpFormat: [{required: true,message: '此处不可为空'}],
 				bpNum: [{required: true,message: '此处不可为空'}],
 				bpLocation: [{required: true,message: '此处不可为空'}],
-				fileList: [{type: 'array',required: true,message: '此处不可为空'}],
-				bpPrincipals: [{type: 'array',required: true,message: '此处不可为空'}],
+				bpPrincipals: [{type: 'array',required: true,message: '此处不可为空',trigger:'blur'}],
 				bpInstallTime: [{required: true,message: '此处不可为空'}],
-				bpDePrincipals: [{type: 'array',required: true,message: '此处不可为空'}],
+				bpDePrincipals: [{type: 'array',required: true,message: '此处不可为空',trigger:'blur'}],
 				bpUninstallTime: [{required: true,message: '此处不可为空'}]
 			})
 			const fileList = ref<UploadUserFile[]>([
@@ -282,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)
@@ -292,9 +303,10 @@
 				renderMenu,
 				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 046e3b7..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">
@@ -108,7 +108,7 @@
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
 			const clForm1 = reactive(props.clForm)
-			const ruleFormRef = ref<FormInstance>()
+			const clRef = ref<FormInstance>()
 			const clFormRules = reactive<FormRules>({
 				clDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				clApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
@@ -148,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,8 +170,9 @@
 				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 699539f..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">
@@ -110,7 +110,7 @@
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
 			const dwForm1 = reactive(props.dwForm)
-			const ruleFormRef = ref<FormInstance>()
+			const dwRef = ref<FormInstance>()
 			const dwFormRules = reactive<FormRules>({
 				dwDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				dwApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
@@ -150,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)
@@ -160,8 +171,9 @@
 				renderMenu,
 				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 5ce13ec..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">
@@ -89,7 +89,7 @@
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
 			const fwForm1 = reactive(props.fwForm)
-			const ruleFormRef = ref<FormInstance>()
+			const fwRef = ref<FormInstance>()
 			const fwRules = reactive<FormRules>({
 				fwDepartment:[{required: true,message: '此处不可为空'}],
 				fwApplyName:[{required: true,message: '此处不可为空'}],
@@ -97,6 +97,17 @@
 				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)
@@ -107,8 +118,9 @@
 				renderMenu,
 				Search,
 				fwForm1,
-				ruleFormRef,
 				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 a0cb9cd..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">
@@ -95,7 +95,7 @@
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
 			const hlForm1 = reactive(props.hlForm)
-			const ruleFormRef = ref<FormInstance>()
+			const hlRef = ref<FormInstance>()
 			const hlFormRules = reactive<FormRules>({
 				hlDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				hlApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
@@ -103,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)
@@ -113,7 +124,8 @@
 				renderMenu,
 				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 009bf9d..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">
@@ -80,13 +80,24 @@
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
 			const hwForm1 = reactive(props.hwForm)
-			const ruleFormRef = ref<FormInstance>()
+			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)
@@ -96,8 +107,9 @@
 			return {
 				renderMenu,
 				hwForm1,
-				ruleFormRef,
+				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 345bdd2..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">
@@ -101,7 +101,7 @@
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
 			const lsForm1 = reactive(props.lsForm)
-			const ruleFormRef = ref<FormInstance>()
+			const lsRef = ref<FormInstance>()
 			const lsFormRules = reactive<FormRules>({
 				lsDepartment:[{required: true,message: '此处不可为空',trigger: 'blur'}],
 				lsApplyName:[{required: true,message: '此处不可为空',trigger: 'blur'}],
@@ -109,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)
@@ -119,7 +130,8 @@
 				renderMenu,
 				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 87d7776..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">
@@ -80,13 +80,24 @@
 			const { userInfos } = storeToRefs(userInfo);
 			const state  = reactive<stateType>({});
 			const teForm1 = reactive(props.teForm)
-			const ruleFormRef = ref<FormInstance>()
+			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)
@@ -96,8 +107,9 @@
 			return {
 				renderMenu,
 				teForm1,
-				ruleFormRef,
+				teRef,
 				teRules,
+				validateForm,
 				...toRefs(state),
 			};
 		},
diff --git a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
index 39bb014..3d0260b 100644
--- a/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
+++ b/src/views/specialWorkSystem/workApplyManagement/workApplyForm/index.vue
@@ -2,14 +2,14 @@
 	<div class="home-container">
 		<el-scrollbar height="100%">
 		<el-form :model="form" label-width="150px" :rules="applyRules" ref="ruleFormRef2">
-			<blind-panel-form :bpForm="form.addForm"></blind-panel-form>
-<!--			<cut-line-form :clForm="form.addForm"></cut-line-form>-->
-<!--			<dirt-work-form :dwForm="form.addForm"></dirt-work-form>-->
-<!--			<fire-work-form :fwForm="form.addForm"></fire-work-form>-->
-<!--			<hang-load-form :hlForm="form.addForm"></hang-load-form>-->
-<!--			<high-work-form :hwForm="form.addForm"></high-work-form>-->
-<!--			<limited-space-form :lsForm="form.addForm"></limited-space-form>-->
-<!--			<temp-elect-form :teForm="form.addForm"></temp-elect-form>-->
+<!--			<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>
@@ -352,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,
@@ -554,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',form)
+					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) => {
@@ -583,9 +600,11 @@
 				ruleFormRef,
 				ruleFormRef2,
 				ruleFormRef3,
+				additionalForm,
 				addWorkerRules,
 				saftyFileRules,
 				applyRules,
+				isValid,
 				handleApply,
 				cancleAddFile,
 				deleteRow,

--
Gitblit v1.9.2