From 5a1616f169d75ece07d2d12a8edac3e5f660a920 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期四, 08 九月 2022 09:36:16 +0800
Subject: [PATCH] 合并

---
 src/views/riskWarningSys/warningBigScreen/components/message.vue                                         |   24 
 src/views/goalManagement/targetStatistics/index.vue                                                      |   92 
 src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/linkSetting/index.vue               |    2 
 src/views/specialWorkSystem/workBasicManage/safeMeasuresManage/index.vue                                 |    2 
 src/views/contingencyManagement/panManagement/component/approval.vue                                     |  239 
 src/views/contingencyManagement/contingency/component/openAdd.vue                                        |  569 +
 src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue                           |  144 
 src/views/goalManagement/Goalsummary/index.vue                                                           |  227 
 src/views/riskWarningSys/warningBigScreen/index.vue                                                      |    8 
 src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue                            |    2 
 src/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue                          |  305 +
 src/views/goalManagement/processForms/component/lowerPlate.vue                                           |  120 
 src/views/specialWorkSystem/workBasicManage/certificateFilterSetting/index.vue                           |    2 
 src/views/specialWorkSystem/workPlan/workReservation/index.vue                                           |    2 
 src/views/goalManagement/targetImprovements/component/Dailogprove.vue                                    |  105 
 src/views/goalManagement/targetSettings/component/search.vue                                             |   52 
 src/views/specialWorkSystem/workFlow/approveBasic/index.vue                                              |    2 
 src/views/system/personShiftManage/arrangeManage/index.vue                                               |    2 
 src/views/facilityManagement/ProductionEquipment/index.vue                                               |  390 +
 src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue                                |    2 
 src/views/specialWorkSystem/approveProcessManage/examineTemplate/index.vue                               |    2 
 src/views/goalManagement/targetDecompositionMonth/index.vue                                              |  286 +
 src/views/contingencyManagement/processForm/component/formInformationTops.vue                            |  312 +
 src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/reportTypeSetting/index.vue         |    4 
 src/views/goalManagement/safetyAssessment/index.vue                                                      |  241 
 src/views/system/personShiftManage/scheduleManage/schedule/index.vue                                     |    2 
 src/views/intellectInspect/intelligentLine/index.vue                                                     |   25 
 src/views/specialWorkSystem/afterWorkManage/workTicketRecord/index.vue                                   |    2 
 src/views/riskWarningSys/accidentLevel/index.vue                                                         |    2 
 src/views/goalManagement/targetDecompositionQuarter/index.vue                                            |  286 +
 src/views/specialWorkSystem/foundationSet/safetyAction/index.vue                                         |    2 
 src/views/goalManagement/targetEscalation/index.vue                                                      |  199 
 src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue                                      |  204 
 src/views/contingencyManagement/processForm/processForm.vue                                              |  137 
 src/views/goalManagement/safetyAssessment/component/Dailog.vue                                           |  264 
 src/views/specialWorkSystem/workFlow/approveRule/index.vue                                               |    2 
 src/views/goalManagement/processForms/component/formInformationTop.vue                                   |  144 
 src/views/contingencyManagement/panManagement/component/upData.vue                                       |  125 
 src/views/facilityManagement/InstrumentationInformation/index.vue                                        |  391 +
 src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue                                 |  196 
 src/views/riskWarningSys/educationAndTraining/index.vue                                                  |    2 
 src/views/accidentManagementSystem/accidentCasesCop/index.vue                                            |   82 
 src/views/facilityManagement/deviceType/component/Dailog.vue                                             |  198 
 src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue                                       |    2 
 src/views/specialWorkSystem/workBasicManage/workTypeSetting/index.vue                                    |    2 
 src/views/contingencyManagement/panManagement/component/abolishLibrary.vue                               |  226 
 src/views/contingencyManagement/panManagement/component/approvalProcess.vue                              |  196 
 src/views/goalManagement/targetSettings/index.vue                                                        |  300 +
 src/views/specialWorkSystem/afterWorkManage/workTicketCheck/index.vue                                    |    2 
 src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/approveTypeSetting/index.vue        |    2 
 src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue                               |    2 
 src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue                                        |    2 
 src/views/specialWorkSystem/workProcess/gasCheck/index.vue                                               |   25 
 src/views/contingencyManagement/panManagement/component/startUp.vue                                      |  160 
 src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue                                 |  308 +
 src/views/contingencyManagement/contingency/index.vue                                                    |  401 +
 src/views/goalManagement/targetClassification/index.vue                                                  |  261 
 src/views/system/personShiftManage/personArrange/index.vue                                               |    2 
 src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue                           |    2 
 src/views/facilityManagement/safetyEquipment/index.vue                                                   |  391 +
 src/views/riskWarningSys/riskLevel/index.vue                                                             |    2 
 src/views/goalManagement/performanceAppraisal/component/DailogAq.vue                                     |  455 +
 src/views/accidentManagementSystem/accidentCasesCop/component/wangEditor/index.vue                       |  174 
 src/views/goalManagement/processForms/component/formInformationTops.vue                                  |  162 
 src/views/facilityManagement/deviceType/index.vue                                                        |  130 
 src/views/riskWarningSys/warningBigScreen/indexs/index.vue                                               |   53 
 src/views/system/personShiftManage/scheduleManage/strategy/index.vue                                     |    2 
 src/views/goalManagement/targetDecompositionHalfYear/index.vue                                           |  286 +
 src/views/goalManagement/processForms/processForms.vue                                                   |  124 
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue                |  325 +
 src/views/goalManagement/Incentivestandard/component/DailogAdd.vue                                       |  147 
 src/views/goalManagement/Incentivestandard/index.vue                                                     |  283 
 src/views/accidentManagementSystem/accidentStatistics/index.vue                                          |   13 
 src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue                              |  404 +
 src/views/accidentManagementSystem/accidentCases/index.vue                                               |  533 
 src/views/goalManagement/targetEscalation/component/TypeDailog.vue                                       |  341 +
 src/views/system/personShiftManage/personTimeManage/durationManage/index.vue                             |    2 
 src/views/contingencyManagement/contingency/component/upData.vue                                         |  125 
 src/views/goalManagement/targetImprovements/index.vue                                                    |  307 +
 src/views/goalManagement/index.vue                                                                       |   14 
 src/views/contingencyManagement/panManagement/component/initiateApproval.vue                             |  159 
 src/views/goalManagement/safetyAssessment/component/DailogAdd.vue                                        |  281 
 src/views/goalManagement/TargetBook/index.vue                                                            |  289 +
 src/views/riskWarningSys/emergencyDrills/index.vue                                                       |    2 
 src/views/contingencyManagement/abolishDialog/abolishDialog.vue                                          |  139 
 src/views/goalManagement/IncentiveRecording/index.vue                                                    |  302 +
 src/views/contingencyManagement/abolishDialog/component/formInformationTops.vue                          |  318 +
 src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue |    8 
 src/views/contingencyManagement/processForm/component/lowerPlate.vue                                     |  120 
 src/views/goalManagement/targetDecompositionYear/index.vue                                               |  284 
 src/views/specialWorkSystem/workAlert/alertRecord/index.vue                                              |    2 
 src/views/goalManagement/TargetBook/component/DailogAdd.vue                                              |  246 
 src/views/goalManagement/targetEscalation/component/Dailog.vue                                           |   65 
 src/views/specialWorkSystem/workProcess/workCheck/index.vue                                              |  187 
 src/views/goalManagement/performanceAppraisal/component/DailogKh.vue                                     |  247 
 src/views/facilityManagement/keyEquipment/index.vue                                                      |  449 +
 src/views/contingencyManagement/panManagement/component/openAdd.vue                                      |  471 +
 src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue                                   |  204 
 src/views/goalManagement/performanceAppraisal/index.vue                                                  |  526 +
 src/views/goalManagement/targetDecompositionYear/component/Dailog.vue                                    |  262 
 src/views/newHome/index.vue                                                                              |   42 
 src/views/specialWorkSystem/workBasicManage/personalProtectDevices/index.vue                             |    2 
 src/views/system/personShiftManage/generalShiftManagement/index.vue                                      |    2 
 src/views/specialWorkSystem/approveProcessManage/approveProcessList/index.vue                            |    2 
 src/views/contingencyManagement/abolishDialog/component/lowerPlate.vue                                   |  120 
 src/views/accidentManagementSystem/accidentCases/component/DailogCases.vue                               |    2 
 src/views/goalManagement/TargetBook/component/DailogSearch.vue                                           |  175 
 src/views/contingencyManagement/processForm/component/formInformationTop.vue                             |  144 
 src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue                                    |  133 
 src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue                                 |   16 
 src/views/goalManagement/targetSettings/component/dailogAdd.vue                                          |  284 
 src/views/facilityManagement/EquipmentStatistics/index.vue                                               |  101 
 112 files changed, 16,747 insertions(+), 402 deletions(-)

diff --git a/src/views/accidentManagementSystem/accidentCases/component/DailogCases.vue b/src/views/accidentManagementSystem/accidentCases/component/DailogCases.vue
index 3f1ffb1..3bcf4a6 100644
--- a/src/views/accidentManagementSystem/accidentCases/component/DailogCases.vue
+++ b/src/views/accidentManagementSystem/accidentCases/component/DailogCases.vue
@@ -21,7 +21,7 @@
 					</el-form-item>
 				</el-col>
 				<el-col :xs="24" :sm="23" :md="23" :lg="23" :xl="23" class="mb20">
-					<el-form-item label="内容" size="default" prop="caseContent">
+					<el-form-item  label="内容" size="default" prop="caseContent">
 						<Wangeditor v-if="dialogVisible" style="width: 100%" :value="form.caseContent"
 									@change="changeCaseContent" showTop=""></Wangeditor>
 					</el-form-item>
diff --git a/src/views/accidentManagementSystem/accidentCases/index.vue b/src/views/accidentManagementSystem/accidentCases/index.vue
index e5a4bfc..38728a1 100644
--- a/src/views/accidentManagementSystem/accidentCases/index.vue
+++ b/src/views/accidentManagementSystem/accidentCases/index.vue
@@ -1,261 +1,274 @@
-<!--<template>-->
-<!--	<div>-->
-<!--		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">-->
-<!--			<el-row>-->
-<!--				<el-col :span="4">-->
-<!--					<el-form-item>-->
-<!--						<el-input v-model="ruleForm.searchParams.caseTitle" size="default" placeholder="请输入关键词" />-->
-<!--					</el-form-item>-->
-<!--				</el-col>-->
-<!--				&lt;!&ndash; <el-col :span="4">-->
-<!--					<el-form-item>-->
-<!--						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />-->
-<!--					</el-form-item>-->
-<!--				</el-col> &ndash;&gt;-->
-<!--				<el-col :span="16">-->
-<!--					<el-form-item>-->
-<!--						<el-button type="primary" size="default" @click="listApi">查询</el-button>-->
-<!--						<el-button size="default" @click="resetForm">重置</el-button>-->
-<!--					</el-form-item>-->
-<!--				</el-col>-->
-<!--			</el-row>-->
-<!--		</el-form>-->
-<!--		<div class="minCenter">-->
-<!--			<div class="btns">-->
-<!--				<div>-->
-<!--					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>-->
-<!--					&lt;!&ndash; <el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain @click="openD('修改', deletAll[0])">修改</el-button> &ndash;&gt;-->
-<!--					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>-->
-<!--				</div>-->
-<!--			</div>-->
-<!--			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">-->
-<!--				<el-table-column type="selection" align="center" width="55" />-->
-<!--				<el-table-column label="序号" align="center" type="index" width="70" />-->
-<!--				<el-table-column label="标题" align="center" property="caseTitle" sortable />-->
-<!--				<el-table-column property="caseTime" align="center" label="发布时间" sortable />-->
-<!--				&lt;!&ndash; <el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />-->
-<!--				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip /> &ndash;&gt;-->
-<!--				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>-->
-<!--					<template #default="scope">-->
-<!--						&lt;!&ndash; <el-button link type="primary" size="small" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button> &ndash;&gt;-->
-<!--						<el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">编辑</el-button>-->
-<!--						<el-button link type="primary" size="small" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>-->
-<!--					</template>-->
-<!--				</el-table-column>-->
-<!--			</el-table>-->
-<!--			<div class="pages">-->
-<!--				<el-pagination-->
-<!--					v-model:currentPage="currentPage4"-->
-<!--					v-model:page-size="pageSize4"-->
-<!--					:page-sizes="[10, 20, 30, 40]"-->
-<!--					layout="total, sizes, prev, pager, next, jumper"-->
-<!--					:total="total"-->
-<!--					@size-change="handleSizeChange"-->
-<!--					@current-change="handleCurrentChange"-->
-<!--				/>-->
-<!--			</div>-->
-<!--		</div>-->
-<!--		<DailogCases ref="Show" @onAdd="add"></DailogCases>-->
-<!--	</div>-->
-<!--</template>-->
-<!--<script lang="ts">-->
-<!--import DailogCases from './component/DailogCases.vue';-->
-<!--import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';-->
-<!--import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';-->
-<!--import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';-->
-<!--import { accidentManagementSystemApi } from '/@/api/accidentManagementSystem';-->
-<!--export default defineComponent({-->
-<!--	components: { ElButton, ElInput,DailogCases },-->
-<!--	setup() {-->
-<!--		// 搜索条件-->
-<!--		const ruleForm = reactive({-->
-<!--			pageSize: 10,-->
-<!--			pageIndex: 1,-->
-<!--			searchParams: {-->
-<!--				caseTitle: '',-->
-<!--			},-->
-<!--		});-->
-<!--		// 下方导航与表格-->
-<!--		const tableData = ref([]);-->
-<!--		const currentPage4 = ref();-->
-<!--		const pageSize4 = ref();-->
-<!--		const total = ref();-->
-<!--		const resetForm = () => {-->
-<!--			ruleForm.searchParams.caseTitle = '';-->
-<!--			listApi();-->
-<!--		};-->
-<!--		const listApi = () => {-->
-<!--			accidentManagementSystemApi()-->
-<!--				.getaccidentCaseList(ruleForm)-->
-<!--				.then((res) => {-->
-<!--					if (res.data.code == 200) {-->
-<!--						tableData.value = res.data.data;-->
-<!--						currentPage4.value = res.data.pageIndex;-->
-<!--						pageSize4.value = res.data.pageSize;-->
-<!--						total.value = res.data.total;-->
-<!--					} else {-->
-<!--						ElMessage.error(res.data.msg);-->
-<!--					}-->
-<!--				});-->
-<!--		};-->
-<!--		onMounted(() => {-->
-<!--			listApi();-->
-<!--		});-->
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.caseTitle" size="default" placeholder="请输入关键词" />
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col> -->
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+					<!-- <el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain @click="openD('修改', deletAll[0])">修改</el-button> -->
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column label="标题" align="center" property="caseTitle" sortable />
+				<el-table-column property="caseTime" align="center" label="发布时间" sortable />
+				<!-- <el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip /> -->
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="small" :icon="View" @click="jump(scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">编辑</el-button>
+						<el-button link type="primary" size="small" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		<DailogCases ref="Show" @onAdd="add"></DailogCases>
+	</div>
+</template>
+<script lang="ts">
+import DailogCases from './component/DailogCases.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { accidentManagementSystemApi } from '/@/api/accidentManagementSystem';
+import { useRouter } from 'vue-router';
+export default defineComponent({
+	components: { ElButton, ElInput, DailogCases },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				caseTitle: '',
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.caseTitle = '';
+			listApi();
+		};
+		const listApi = () => {
+			accidentManagementSystemApi()
+				.getaccidentCaseList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
 
-<!--		const handleSizeChange = (val: number) => {-->
-<!--			// console.log(`${val} items per page`);-->
-<!--			ruleForm.pageSize = val;-->
-<!--			listApi();-->
-<!--		};-->
-<!--		const handleCurrentChange = (val: number) => {-->
-<!--			// console.log(`current page: ${val}`);-->
-<!--			ruleForm.pageIndex = val;-->
-<!--			listApi();-->
-<!--		};-->
-<!--		const activeNames = ref('1');-->
-<!--		// 打开弹窗-->
-<!--		const Show = ref();-->
-<!--		const openD = (title: String, id: number) => {-->
-<!--			Show.value.openDailog(title,id);-->
-<!--		};-->
-<!--		// 删除-->
-<!--		const onDelete = (id: number) => {-->
-<!--			let arr = [];-->
-<!--			arr.push(id);-->
-<!--			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {-->
-<!--				confirmButtonText: '确定',-->
-<!--				cancelButtonText: '取消',-->
-<!--				type: 'warning',-->
-<!--			})-->
-<!--				.then(() => {-->
-<!--                    console.log(arr)-->
-<!--					accidentManagementSystemApi()-->
-<!--						.getaccidentCaseDelete(arr)-->
-<!--						.then((res) => {-->
-<!--							if (res.data.code == 200) {-->
-<!--								ElMessage({-->
-<!--									message: res.data.msg,-->
-<!--									type: 'success',-->
-<!--								});-->
-<!--								listApi();-->
-<!--							} else {-->
-<!--								ElMessage.error(res.data.msg);-->
-<!--							}-->
-<!--						});-->
-<!--				})-->
-<!--				.catch(() => {-->
-<!--					// ElMessage({-->
-<!--					// 	type: 'info',-->
-<!--					// 	message: 'Delete canceled',-->
-<!--					// });-->
-<!--				});-->
-<!--		};-->
-<!--		// 批量删除-->
-<!--		const warning = ref(true);-->
-<!--		const danger = ref(true);-->
-<!--		const deletAll = ref();-->
-<!--		const handleSelectionChange = (val: any) => {-->
-<!--			let valId = JSON.parse(JSON.stringify(val));-->
-<!--			let arr = [];-->
-<!--			for (let i = 0; i < valId.length; i++) {-->
-<!--				arr.push(valId[i].id);-->
-<!--			}-->
-<!--			deletAll.value = arr;-->
-<!--			if (val.length == 1) {-->
-<!--				warning.value = false;-->
-<!--				danger.value = false;-->
-<!--			} else if (val.length == 0) {-->
-<!--				warning.value = true;-->
-<!--				danger.value = true;-->
-<!--			} else {-->
-<!--				warning.value = true;-->
-<!--				danger.value = false;-->
-<!--			}-->
-<!--		};-->
-<!--		const onDeleteAll = () => {-->
-<!--			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {-->
-<!--				confirmButtonText: '确定',-->
-<!--				cancelButtonText: '取消',-->
-<!--				type: 'warning',-->
-<!--			})-->
-<!--				.then(() => {-->
-<!--					accidentManagementSystemApi()-->
-<!--						.getaccidentCaseDelete(deletAll.value)-->
-<!--						.then((res) => {-->
-<!--							if (res.data.code == 200) {-->
-<!--								ElMessage({-->
-<!--									message: res.data.msg,-->
-<!--									type: 'success',-->
-<!--								});-->
-<!--								listApi();-->
-<!--							} else {-->
-<!--								ElMessage.error(res.data.msg);-->
-<!--							}-->
-<!--						});-->
-<!--				})-->
-<!--				.catch(() => {-->
-<!--					ElMessage({-->
-<!--						type: 'info',-->
-<!--						message: 'Delete canceled',-->
-<!--					});-->
-<!--				});-->
-<!--		};-->
-<!--		const add = () => {-->
-<!--			listApi();-->
-<!--		};-->
-<!--		return {-->
-<!--			listApi,-->
-<!--			add,-->
-<!--			resetForm,-->
-<!--			tableData,-->
-<!--			currentPage4,-->
-<!--			pageSize4,-->
-<!--			total,-->
-<!--			ruleForm,-->
-<!--			handleSizeChange,-->
-<!--			handleCurrentChange,-->
-<!--			Show,-->
-<!--			openD,-->
-<!--			activeNames,-->
-<!--			onDelete,-->
-<!--			warning,-->
-<!--			danger,-->
-<!--			deletAll,-->
-<!--			handleSelectionChange,-->
-<!--			onDeleteAll,-->
-<!--			Plus,-->
-<!--			Delete,-->
-<!--			Upload,-->
-<!--			Download,-->
-<!--			Refresh,-->
-<!--			View,-->
-<!--			EditPen,-->
-<!--		};-->
-<!--	},-->
-<!--});-->
-<!--</script>-->
-<!--<style scoped>-->
-<!--.topTitle {-->
-<!--	background-color: #fff;-->
-<!--	padding: 20px 0px 20px 0px;-->
-<!--}-->
-<!--.minCenter {-->
-<!--	width: 100%;-->
-<!--	background-color: #fff;-->
-<!--	margin-top: 10px;-->
-<!--	padding: 0 20px;-->
-<!--}-->
-<!--.btns {-->
-<!--	padding: 20px 0px 10px 0px;-->
-<!--	display: flex;-->
-<!--	justify-content: space-between;-->
-<!--}-->
-<!--.pages {-->
-<!--	padding: 20px 0;-->
-<!--	display: flex;-->
-<!--	justify-content: right;-->
-<!--}-->
-<!--.tableC {-->
-<!--	margin: 0 10%;-->
-<!--}-->
-<!--</style>-->
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		const activeNames = ref('1');
+		// 打开弹窗
+		const Show = ref();
+		const openD = (title: String, id: number) => {
+			Show.value.openDailog(title, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr = [];
+			arr.push(id);
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					console.log(arr);
+					accidentManagementSystemApi()
+						.getaccidentCaseDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr;
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					accidentManagementSystemApi()
+						.getaccidentCaseDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		const add = () => {
+			listApi();
+		};
+		let router = useRouter();
+		let jump = (id:any) => {
+			router.push({ 
+				path: '/accidentCasesCop' ,
+				query:{
+					id:id,
+				}
+			});
+		};
+
+		return {
+			jump,
+			router,
+			listApi,
+			add,
+			resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			ruleForm,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openD,
+			activeNames,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 20px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/accidentManagementSystem/accidentCasesCop/component/wangEditor/index.vue b/src/views/accidentManagementSystem/accidentCasesCop/component/wangEditor/index.vue
new file mode 100644
index 0000000..3953efc
--- /dev/null
+++ b/src/views/accidentManagementSystem/accidentCasesCop/component/wangEditor/index.vue
@@ -0,0 +1,174 @@
+<template>
+  <div class="editor">
+    <div ref="toolbar" class="toolbar"  :class="showTop">
+    </div>
+    <div ref="editor" class="text">
+    </div>
+  </div>
+</template>
+
+<script>
+  import E from 'wangeditor'
+  // import {uploadNew,downloadNew} from '@/api/upload';
+  // import defaultUrl from "@/api/defaultUrl";
+  export default {
+    name: 'editoritem',
+    data() {
+      return {
+        // uploadPath,
+        editor: null,
+        info_: null,
+        // defaultUrl:defaultUrl,
+        defaultUrl:'',
+      }
+    },
+    model: {
+      prop: 'value',
+      event: 'change'
+    },
+    props: {
+      value: {
+        type: String,
+        default: ''
+      },
+      isClear: {
+        type: Boolean,
+        default: false
+      },
+      showTop: {
+        type: String,
+        default: ''
+      },
+    },
+    watch: {
+      isClear(val) {
+        // 触发清除文本域内容
+        if (val) {
+          this.editor.txt.clear()
+          this.info_ = null
+        }
+      },
+      value: function(value) {
+        if (value !== this.editor.txt.html()) {
+          this.editor.txt.html(this.value)
+        }
+      }
+      //value为编辑框输入的内容,这里我监听了一下值,当父组件调用得时候,如果给value赋值了,子组件将会显示父组件赋给的值
+    },
+    mounted() {
+      var that =this
+      that.setEditor()
+      that.editor.txt.html(that.value)
+    },
+    methods: {
+      setEditor() {
+        var that =this
+        this.editor = new E(this.$refs.toolbar, this.$refs.editor)
+        // 配置菜单
+        this.editor.config.menus = [
+          'head',  // 标题
+          'bold',  // 粗体
+          'fontSize',  // 字号
+          'fontName',  // 字体
+          'italic',  // 斜体
+          'underline',  // 下划线
+          'strikeThrough',  // 删除线
+          'foreColor',  // 文字颜色
+          'backColor',  // 背景颜色
+          'link',  // 插入链接
+          'list',  // 列表
+          'justify',  // 对齐方式
+          'quote',  // 引用
+          'emoticon',  // 表情
+          // 'image',  // 插入图片
+          'table',  // 表格
+          // 'video',  // 插入视频
+          'code',  // 插入代码
+          'undo',  // 撤销
+          'redo'  // 重复
+        ]
+
+        //配置上传图片
+        this.editor.config.uploadImgShowBase64 = false // base 64 存储图片
+        this.editor.config.uploadImgServer = 'http://otp.cdinfotech.top/file/upload_images'// 配置服务器端地址
+        this.editor.config.uploadImgHeaders = { }// 自定义 header
+        this.editor.config.uploadFileName = 'file' // 后端接受上传文件的参数名
+        this.editor.config.uploadImgMaxSize = 2 * 1024 * 1024 // 将图片大小限制为 2M
+        this.editor.config.uploadImgMaxLength = 1 // 限制一次最多上传 3 张图片
+        this.editor.config.uploadImgTimeout = 3 * 60 * 1000 // 设置超时时间
+        this.editor.config.uploadImgHooks = {
+          fail: (xhr, editor, result) => {
+            // 插入图片失败回调
+          },
+          success: (xhr, editor, result) => {
+            // 图片上传成功回调
+          },
+          timeout: (xhr, editor) => {
+            // 网络超时的回调
+          },
+          error: (xhr, editor) => {
+            // 图片上传错误的回调
+          },
+          customInsert: (insertImg, result, editor) => {
+            // 图片上传成功,插入图片的回调
+            //result为上传图片成功的时候返回的数据,这里我打印了一下发现后台返回的是data:[{url:"路径的形式"},...]
+            // console.log(result.data[0].url)
+            //insertImg()为插入图片的函数
+            //循环插入图片
+            // for (let i = 0; i < 1; i++) {
+            // console.log(result)
+            let url = "http://otp.cdinfotech.top"+result.url
+            insertImg(url)
+            // }
+          }
+        }
+        this.editor.config.customUploadImg  = function (files, insert) {
+          let form = new FormData();
+          form.append('file', files[0]);
+          form.append('dir', 'temp1')
+          // uploadNew(form).then(res=>{
+          //   if(res.result){
+          //     let url = that.defaultUrl+`/upload/downloadNew?path=`+encodeURI(res.data.fileUrl)
+          //     insert(url)
+          //     that.$message("上传成功", 'success');
+          //   }else {
+          //     that.$message.error("上传失败");
+          //   }
+          //
+          // })
+        }
+
+        this.editor.config.onchange = (html) => {
+          this.info_ = html // 绑定当前逐渐地值
+          this.$emit('change', this.info_) // 将内容同步到父组件中
+        }
+        // 创建富文本编辑器
+        this.editor.create()
+        //是否可编辑
+        if (this.showTop=='hiddenClass'){
+          this.editor.disable()
+        }
+      }
+    }
+  }
+</script>
+
+<style scoped>
+  .editor {
+    /*margin: 0 auto;*/
+    position: relative;
+    z-index: 100;
+  }
+  .toolbar {
+    width: 100%;
+    border: 1px solid #ccc;
+  }
+  .text {
+    border: 1px solid #ccc;
+    min-height: 250px;
+  }
+  .hiddenClass{
+    display: none;
+
+  }
+</style>
diff --git a/src/views/accidentManagementSystem/accidentCasesCop/index.vue b/src/views/accidentManagementSystem/accidentCasesCop/index.vue
new file mode 100644
index 0000000..52831de
--- /dev/null
+++ b/src/views/accidentManagementSystem/accidentCasesCop/index.vue
@@ -0,0 +1,82 @@
+<template>
+    <div style="background-color:#fff;height: 800px;">
+		<el-form :model="form" label-width="120px">
+			<el-row>
+				<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+					<el-form-item label="标题" size="default" prop="caseTitle">
+						<el-input v-model="form.caseTitle" />
+					</el-form-item>
+				</el-col>
+				<el-col :xs="24" :sm="11" :md="11" :lg="11" :xl="11" class="mb20">
+					<el-form-item label="发布时间" size="default" prop="caseTime">
+						<el-date-picker
+							v-model="form.caseTime"
+							format="YYYY-MM-DD HH:mm:ss"
+							value-format="YYYY-MM-DD HH:mm:ss"
+							type="datetime"
+							placeholder="请选择"
+							style="width: 100%"
+						/>
+					</el-form-item>
+				</el-col>
+				<el-col :xs="24" :sm="23" :md="23" :lg="23" :xl="23" class="mb20">
+					<el-form-item  label="内容" size="default" prop="caseContent">
+						<Wangeditor style="width: 100%" :value="form.caseContent"
+									 showTop=""></Wangeditor>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+    </div>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, onMounted } from 'vue';
+import { timeDate } from '/@/assets/index.ts';
+import type { FormInstance, FormRules } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import { accidentManagementSystemApi } from '/@/api/accidentManagementSystem';
+import Wangeditor from './component/wangEditor/index.vue';
+import {useRoute} from 'vue-router'
+export default defineComponent({
+	components: {Wangeditor},
+	setup(props, { emit }) {
+        const route = useRoute();
+        const num = route.query.id;
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			caseTitle: '',///案例标题
+			caseContent: '',///案例内容
+			caseTime: '',
+		});
+    onMounted(()=>{
+        listApi(num)
+    })
+	const listApi=(id:any)=>{
+        accidentManagementSystemApi()
+					.getaccidentCaseDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+    }
+				
+		return {
+			timeDate,
+			form,
+			dialogVisible,
+			Search,
+            route,
+            num
+		};
+	},
+});
+</script>
+<style scoped>
+.el-col {
+	padding: 20px 0 0 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue b/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue
index 51af58b..f72d850 100644
--- a/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue
+++ b/src/views/accidentManagementSystem/accidentExpress/component/openAdd.vue
@@ -367,6 +367,7 @@
 										type: 'success',
 									});
 									emit('myAdd', true);
+									formEl.resetFields();
 								} else {
 									ElMessage({
 										showClose: true,
@@ -375,27 +376,12 @@
 									});
 									emit('myAdd', true);
 								}
-								formEl.resetFields();
 							});
 					} else {
 						console.log('error submit!', fields);
 					}
 				});
-				formEl.resetFields();
 			}
-			ruleForm.value = {
-				accidentExpressId: '',
-				emergencyPrecautions: '',
-				accidentCausesPreliminaryAnalysis: '',
-				accidentBriefProcess: '',
-				casualties: '',
-				accidentCause: '',
-				occurrenceTime: '',
-				occurrencePlace: '',
-				accidentDepartmentId: '',
-				accidentName: '',
-				fileList: [],
-			};
 		};
 		const resetForm = (formEl: FormInstance | undefined) => {
 			isShowDialog.value = false;
diff --git a/src/views/accidentManagementSystem/accidentStatistics/index.vue b/src/views/accidentManagementSystem/accidentStatistics/index.vue
index 1337225..f543f1a 100644
--- a/src/views/accidentManagementSystem/accidentStatistics/index.vue
+++ b/src/views/accidentManagementSystem/accidentStatistics/index.vue
@@ -3,22 +3,22 @@
         <el-card shadow="hover">
             <div class="system-user-search mb15">
                 <el-form ref="ruleFormRef" size="default" label-width="80px" :inline="true">
-                    <el-row :gutter="35">
-                        <el-col :xs="24" :sm="4" :md="4" :lg="4" :xl="4" class="mb20">
+                    <el-row >
+                        <el-col :span="5">
                             <el-form-item prop="telephone" label="选择年月">
-                                <el-radio-group v-model="params.type" class="w100">
+                                <el-radio-group v-model="params.type" style="width:100%">
                                     <el-radio :label="2">年</el-radio>
                                     <el-radio :label="1">月</el-radio>
                                 </el-radio-group>
                             </el-form-item>
                         </el-col>
-                        <el-col :xs="24" :sm="4" :md="4" :lg="4" :xl="4" class="mb20">
+                        <el-col :span="6">
                             <el-form-item v-if="params.type==2" prop="telephone" label="选择年">
                                 <el-date-picker
                                         v-model="params.year"
                                         :disabled="disabled"
                                         type="year"
-                                        class="w100"
+                                        style="width:100%"
                                         value-format="YYYY"
                                         placeholder="选择日期时间"
                                 />
@@ -29,12 +29,13 @@
                                         :disabled="disabled"
                                         type="month"
                                         class="w100"
+                                         style="width:100%"
                                         value-format="YYYY-MM"
                                         placeholder="选择日期时间"
                                 />
                             </el-form-item>
                         </el-col>
-                        <el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8" class="mb20">
+                        <el-col :span="3">
                             <el-button size="default" type="primary" class="ml10" @click="emergencySuppliesCount"> 查询</el-button>
                         </el-col>
                     </el-row>
diff --git a/src/views/contingencyManagement/abolishDialog/abolishDialog.vue b/src/views/contingencyManagement/abolishDialog/abolishDialog.vue
index e69de29..69dba30 100644
--- a/src/views/contingencyManagement/abolishDialog/abolishDialog.vue
+++ b/src/views/contingencyManagement/abolishDialog/abolishDialog.vue
@@ -0,0 +1,139 @@
+<template>
+  <div class="system-user-container">
+  <h4 class="title">胡海涛2022-07-01 16:08:42发起了目标检查上报(检查)--检查</h4>
+  <div class="box">
+    <el-menu
+        :default-active="activeIndex"
+        class="el-menu-demo"
+        background-color="#ebeef5"
+        text-color="#fff"
+        active-text-color="#fff"
+        mode="horizontal"
+        @select="handleSelect"
+    >
+      <el-menu-item index="1">表单信息</el-menu-item>
+      <el-menu-item index="2">流程图</el-menu-item>
+    </el-menu>
+    <div v-if="activeIndex == 1" class="navType">
+      <formInformationTop v-if="false"></formInformationTop>
+      <formInformationTops></formInformationTops>
+    </div>
+    <div v-if="activeIndex == 2" class="navType" style="padding:20px 20px 0 20px">
+      <div class="title2">流程图
+        <!-- <img src=""> -->
+      </div>
+      <div style="width:100%;height:400px"></div>
+    </div>
+  </div>
+  <lowerPlate></lowerPlate>
+  <div class="btns">
+    <el-button type="primary">启动</el-button>
+  </div>
+  </div>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref,onMounted } from 'vue';
+import { useRouter } from 'vue-router';
+import formInformationTop from './component/formInformationTop.vue'
+import formInformationTops from './component/formInformationTops.vue'
+import lowerPlate from './component/lowerPlate.vue'
+export default defineComponent({
+  components:{lowerPlate,formInformationTop,formInformationTops},
+  setup() {
+    const activeIndex = ref<any>('1');
+    const handleSelect = (key: string, keyPath: string[]) => {
+      // console.log(key, keyPath);
+      activeIndex.value = key;
+    };
+    const form = reactive({
+      name: '',
+      region: '',
+      date1: '',
+      date2: '',
+      delivery: false,
+      type: [],
+      resource: '',
+      desc: '',
+    });
+
+    const router=useRouter()
+    const Type=onMounted(()=>{
+      // console.log("xxxxxxx",router)
+    })
+
+    return {
+      activeIndex,
+      handleSelect,
+      form,
+      router,
+      Type
+    };
+  },
+});
+</script>
+<style scoped>
+.title {
+  text-align: center;
+  font-size: 16px;
+  margin-bottom: 20px;
+}
+.box{
+  border: 1px solid #dcdfe6;
+  box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+  background-color: #fff;
+  padding: 15px;
+}
+.tiao{
+  width: 100%;
+  height: 1px;
+  background-color: #dcdfe6;
+  margin: 30px 0 ;
+  position: relative;
+}
+.typeS{
+  width: 80px;
+  background-color: #fff;
+  position: absolute;
+  left: 30px;
+  top: -9px;
+  font-size: 14px;
+  text-align: center;
+}
+.logoColor{
+  background-color: #67c23a;
+  color: #fff;
+  padding:  5px 8px;
+  border-radius: 5px;
+  margin-right: 5px;
+}
+.btns{
+  width: 100%;
+  padding:20px 0;
+  background-color: #fff;
+  position: fixed;
+  bottom: 0px;
+  left: 0px;
+  text-align: center;
+  box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+
+}
+.title2{
+  padding: 20px 0 20px 10px;
+  width: 100%;
+  border: 1px solid #dcdfe6;
+}
+
+/*弹窗底部边框线*/
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+/*弹窗顶部边框线*/
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+</style>
diff --git a/src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue b/src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue
index e69de29..ef75063 100644
--- a/src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue
+++ b/src/views/contingencyManagement/abolishDialog/component/formInformationTop.vue
@@ -0,0 +1,144 @@
+<template>
+    <el-form ref="form" :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" style="padding: 0 20px">
+			<el-tab-pane label="考核指标" name="1">
+				<el-table :data="tableData" style="width: 100%">
+					<el-table-column align="center" type="index" label="序号" width="70" />
+					<el-table-column align="center" prop="date" label="责任部门" />
+					<el-table-column align="center" prop="name" label="考核指标" />
+					<el-table-column align="center" prop="address" label="制定部门" />
+					<el-table-column align="center" prop="address" label="制定日期" />
+					<el-table-column align="center"  label="检查值">
+						<template #default>
+                         <el-input v-model="form.name" placeholder=""></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="address" label="检查人" />
+					<el-table-column align="center" prop="address" label="检查时间" />
+				</el-table>
+				<div class="tiao">
+                 <div class="typeS">审批</div>
+				</div>
+				<el-row style="padding:20px 0">
+					<el-col :span="6" style="text-align:right">一级审批:</el-col>
+					<el-col :span="18">同意</el-col>
+				</el-row>
+				<el-row style="padding:0 0 20px 0">
+					<el-col :span="6"></el-col>
+					<el-col :span="18"><span class="logoColor">同意</span><span style="margin-right: 8px;">杜建喜</span><span>2021-05-24 04:47:42</span></el-col>
+				</el-row>
+			</el-tab-pane>
+		</el-tabs>
+</template>
+<script lang="ts">
+import { defineComponent,ref,reactive } from 'vue'
+
+export default defineComponent({
+    setup() {
+        	const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+        	const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+        const activeName = ref('1');
+        return{
+            form,
+            tableData,
+            activeName
+        }
+    },
+})
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0 ;
+}
+</style>
diff --git a/src/views/contingencyManagement/abolishDialog/component/formInformationTops.vue b/src/views/contingencyManagement/abolishDialog/component/formInformationTops.vue
index e69de29..68ae8a6 100644
--- a/src/views/contingencyManagement/abolishDialog/component/formInformationTops.vue
+++ b/src/views/contingencyManagement/abolishDialog/component/formInformationTops.vue
@@ -0,0 +1,318 @@
+<template>
+	<el-form ref="form" :model="form" label-width="120px">
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案名称">
+					<el-input v-model="form.name" disabled placeholder="请填写预案名称"></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="适用部门">
+          <el-tree-select
+              class="select"
+              placeholder="请选择"
+              v-model="value"
+              :data="data"
+              :render-after-expand="false"
+              show-checkbox
+              multiple
+              clearable
+              disabled
+          />
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案类型">
+          <el-select class="select" v-model="form.region" disabled placeholder="请选择">
+            <el-option label="综合应急预案" value="shanghai" />
+            <el-option label="现场处置方案" value="beijing" />
+            <el-option label="专项应急预案" value="shanghai" />
+            <el-option label="其它预案" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="危险源关联">
+          <el-select class="select" v-model="form.region" disabled placeholder="请选择">
+            <el-option label="是" value="shanghai" />
+            <el-option label="否" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案级别">
+          <el-select class="select" v-model="form.region" disabled placeholder="请选择">
+            <el-option label="公司及" value="shanghai" />
+            <el-option label="分厂级" value="beijing" />
+            <el-option label="车间级" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="编写人">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+              disabled
+          >
+            <template #append>
+              <el-button :icon="Search" @click="openUser" disabled/>
+            </template>
+          </el-input>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="编写部门" disabled placeholder="请选择">
+          <el-tree-select
+              class="select"
+              v-model="value2"
+              :data="dataSelect"
+              :render-after-expand="false"
+              multiple
+              check-strictly
+              check-on-click-node
+              clearable
+              disabled
+          />
+				</el-form-item>
+			</el-col>
+      <el-col :span="12">
+        <el-form-item label="发布实施日期">
+          <el-date-picker v-model="datetime" type="datetime" disabled placeholder="选择日期时间" style="width: 100%" />
+        </el-form-item>
+      </el-col>
+		</el-row>
+    <el-row>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="应急队伍" prop="telephone" @click="daiInpt" >
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+              disabled
+          >
+            <template #append>
+              <el-button :icon="Search" disabled/>
+            </template>
+          </el-input>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+        <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"
+              :on-change="handleChange"
+              disabled
+          >
+            <el-button type="primary" disabled
+            >点击上传</el-button>
+            <template #tip>
+              <div class="el-upload__tip">
+                添加相关附件
+              </div>
+            </template>
+          </el-upload>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="区域名称" prop="telephone">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+              disabled
+          >
+            <template #append>
+              <el-button :icon="Search" disabled @click="regionsDialog"/>
+            </template>
+          </el-input>
+        </el-form-item>
+      </el-col>
+    </el-row>
+	</el-form>
+  <checkTemplate ref="ShowRef"/>
+  <userSelections ref="userRef"/>
+  <RegionsDialog ref="openRef"/>
+</template>
+<script lang="ts">
+import {
+  defineComponent,
+  ref,
+  reactive
+} from 'vue';
+import {
+  Search
+} from '@element-plus/icons-vue'
+import UserSelections from "/@/components/userSelections/index.vue"
+import CheckTemplate from "/@/components/checkTemplate/index.vue"
+import RegionsDialog from "/@/components/regionsDialog/index.vue";
+export default defineComponent({
+  components: {
+    CheckTemplate,
+    UserSelections,
+    RegionsDialog,
+  },
+	setup() {
+		const form = reactive({
+			name: '',
+      value: '',
+      value2: '',
+      teamLeader: '',
+
+      // data: '',
+      // dataSelect: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+
+    // 可选择树形选择框
+    const value = ref()
+
+    const data = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '生产运行部',
+            children: [
+              {
+                value: '1-1-1',
+                label: '工艺二班',
+              },
+            ],
+          },
+        ],
+      }
+    ]
+    // 树形选择框
+    const value2 = ref()
+
+    const dataSelect = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '生产运行部',
+            children: [
+              {
+                value: '1-1-1',
+                label: '工艺二班',
+              },
+            ],
+          },
+        ],
+      }
+    ]
+    // 应急队伍弹窗
+    const ShowRef=ref()
+    const daiInpt=()=>{
+      ShowRef.value.openDailog()
+    }
+    // 选择区域弹窗
+    const openRef=ref()
+    const regionsDialog=()=>{
+      openRef.value.openDailog()
+    }
+    // 打开编写人选择用户弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDialog();
+    };
+    // 日期选择
+    const datetime = ref('')
+		return {
+			form,
+      value,
+      data,
+      value2,
+      dataSelect,
+      openUser,
+      userRef,
+      Search,
+      ShowRef,
+      daiInpt,
+      openRef,
+      datetime,
+      regionsDialog,
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box {
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao {
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0;
+	position: relative;
+}
+.typeS {
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+	left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor {
+	background-color: #67c23a;
+	color: #fff;
+	padding: 5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns {
+	width: 100%;
+	padding: 20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+}
+.title2 {
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0;
+}
+.select{
+  width: 100%;
+}
+.select ::v-deep .el-select{
+  width: 100%;
+}
+</style>
diff --git a/src/views/contingencyManagement/abolishDialog/component/lowerPlate.vue b/src/views/contingencyManagement/abolishDialog/component/lowerPlate.vue
index e69de29..cbb82fb 100644
--- a/src/views/contingencyManagement/abolishDialog/component/lowerPlate.vue
+++ b/src/views/contingencyManagement/abolishDialog/component/lowerPlate.vue
@@ -0,0 +1,120 @@
+<template>
+	<div class="box">
+		<el-form ref="formS" :model="form" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="流程标题">
+						<el-input v-model="form.names" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="下级审批日期">
+						<el-date-picker v-model="form.date1" type="date" placeholder="下级审批日期" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+							<el-checkbox v-model="form.delivery" label="是否抄送" @change="typeChang"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.delivery">
+				<el-col :span="15">
+					<el-form-item label="抄送给" prop="resource">
+						<el-input v-model="form.resource" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+						<el-checkbox v-model="form.type" label="指定下一步处理者(不设置就使用默认处理人)"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.type">
+				<el-col :span="15">
+					<el-form-item label="指定" prop="desc">
+						<el-input v-model="form.desc" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+	</div>
+	<DailogSearchUser ref="ShowUser"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'
+import { Search } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus'
+export default defineComponent({
+	components:{DailogSearchUser},
+	setup() {
+		const formS=ref<FormInstance>()
+		let form = reactive({
+			names: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: "",
+			type: "",
+			resource: '',
+			desc: '',
+		});
+	    const typeChang=()=>{
+         console.log('tag',form)
+		}
+		const rules = reactive<FormRules>({
+  resource: [
+    {
+      type: 'array',
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ],
+  desc: [
+    {
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ]})
+  const ShowUser=ref()
+  const openDai =()=>{
+   ShowUser.value.openDailog()
+  }
+		return {
+			form,
+			rules,
+			formS,
+			typeChang,
+			ShowUser,
+			openDai,
+			Search,
+		};
+	},
+});
+</script>
+
+<style scoped>
+.box {
+	margin: 30px 0 100px 0;
+	background-color: #fff;
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+	padding: 20px;
+}
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue b/src/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue
index e69de29..cafe13e 100644
--- a/src/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue
+++ b/src/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue
@@ -0,0 +1,305 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        :title="titles"
+        v-model="isShowDialog"
+        width="40%"
+        draggable
+        :fullscreen="full"
+        @close="resetForm(ruleFormRef)"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          size="default"
+          :rules="rules"
+          :disabled="disabled"
+          label-width="90px">
+        <el-row :gutter="35">
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="选择人员" prop="name">
+              <el-input
+                  v-model="ruleForm.name"
+                  placeholder="请选择"
+                  class="input-with-select"
+              >
+                <template #append>
+                  <el-button :icon="Search" @click="openUser"/>
+                </template>
+              </el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="人员工号" prop="jobNumber">
+              <el-input v-model="ruleForm.jobNumber" placeholder="请填写人员工号"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="人员名称" prop="name">
+              <el-input v-model="ruleForm.name" placeholder="请填写人员名称"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="人员性别" prop="gender">
+              <el-radio-group v-model="ruleForm.gender">
+                <el-radio :label="false">男</el-radio>
+                <el-radio :label="true">女</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="手机号码" prop="phone">
+              <el-input v-model="ruleForm.phone" placeholder="请填写手机号码"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+            <el-form-item label="职位" prop="position">
+              <el-input v-model="ruleForm.position" placeholder="请填写职位"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+<!--          <el-button size="default" type="primary" @click="addForm(ruleFormRef)">继续添加</el-button>-->
+					<el-button size="default" @click="resetForm(ruleFormRef)">关闭</el-button>
+          <el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)" >确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+    <DailogSearchUserManger ref="userRef" @SearchUser="onUser"/>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  ref,
+  reactive,
+  defineComponent
+} from 'vue';
+
+import type {
+  FormRules,
+  FormInstance,
+} from 'element-plus'
+import { ElMessage } from 'element-plus';
+import {
+  Search,
+  FullScreen,
+} from '@element-plus/icons-vue'
+import DailogSearchUserManger from "/@/components/DailogSearchUserManger/index.vue"
+import {contingencyApi} from "/@/api/contingencyManagement/contingency";
+
+export default defineComponent({
+  name: 'addTeamLeader',
+  components: {
+    // Search,
+    DailogSearchUserManger
+  },
+  setup(props, { emit }) {
+    const isShowDialog = ref(false)
+    const ruleFormRef = ref<FormInstance>()
+    const ruleForm = ref ({
+      teamId: '',
+      userUid: '',
+      gender: '',
+      jobNumber: '', // 人员工号
+      name: '', // 人员名称
+      phone: '', // 手机号码
+      position: '', // 职位
+    });
+    const rules = reactive<FormRules>({
+      jobNumber: [
+        {
+          required: true,
+          message: '人员工号不能为空',
+          trigger: 'change',
+        },
+      ],
+      personnelName: [
+        {
+          required: true,
+          message: '人员名称不能为空',
+          trigger: 'change',
+        },
+      ],
+      personnelGender: [
+        {
+          required: true,
+          message: '人员性别不能为空',
+          trigger: 'change',
+        },
+      ],
+      phone: [
+        {
+          required: true,
+          message: '手机号码不能为空',
+          trigger: 'change',
+        },
+      ],
+      position: [
+        {
+          required: true,
+          message: '职位不能为空',
+          trigger: 'change',
+        },
+      ],
+    })
+    const titles = ref();
+    const disabled = ref();
+    const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      if (title == '新建应急队伍人员') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            // console.log('-------',ruleForm.value)
+            // emit('myAdd', ruleForm.value);
+            contingencyApi()
+                .addEmergencyTeamPersonnel(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+      }
+      else if (title == '修改应急队伍人员') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            contingencyApi()
+                .editEmergencyTeamPersonnel(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: '修改成功',
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+        formEl.resetFields();
+        ruleForm.value = {
+          teamId: '',
+          userUid: '',
+          gender: '',
+          jobNumber: '', // 人员工号
+          name: '', // 人员名称
+          phone: '', // 手机号码
+          position: '', // 职位
+        };
+      }
+    }
+    const resetForm = (formEl: FormInstance | undefined) => {
+      isShowDialog.value = false;
+      if (!formEl) return;
+      formEl.resetFields();
+    };
+
+    // 打开弹窗
+    const openDialog = (title: string, id: number,teamId:number, type: boolean) => {
+      isShowDialog.value = true;
+      titles.value = title;
+      disabled.value = type;
+      ruleForm.value.teamId = teamId
+
+      if (title == '查看应急队伍人员' || title == '修改应急队伍人员') {
+        contingencyApi()
+            .seeEmergencyTeamPersonnel(id)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ruleForm.value = res.data.data;
+              }
+            });
+      }
+    };
+    // 打开用户选择弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDailog();
+    };
+    const onUser = (e:any) => {
+      ruleForm.value.userUid=e[0].uid
+      ruleForm.value.gender=e[0].sex
+      ruleForm.value.name=e[0].realName
+      ruleForm.value.jobNumber=e[0].jobNumber
+      ruleForm.value.phone=e[0].phone
+      ruleForm.value.position=e[0].position
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      // closeDialog,
+      isShowDialog,
+      ruleFormRef,
+      // submitForm,
+      // onCancel,
+      ruleForm,
+      rules,
+      Search,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      resetForm,
+      titles,
+      disabled,
+      emit,
+      openUser,
+      userRef,
+      onUser,
+      submitForm,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.textarea{
+  height: 168px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 168px!important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/contingency/component/openAdd.vue b/src/views/contingencyManagement/contingency/component/openAdd.vue
index e69de29..2d9e986 100644
--- a/src/views/contingencyManagement/contingency/component/openAdd.vue
+++ b/src/views/contingencyManagement/contingency/component/openAdd.vue
@@ -0,0 +1,569 @@
+<template>
+    <div class="system-edit-user-container">
+        <el-dialog :title="titles" v-model="isShowDialog" width="50%" draggable :fullscreen="full" @close="resetForm(ruleFormRef)">
+            <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+            <el-form ref="ruleFormRef" :model="ruleForm" size="default" :rules="rules" label-width="120px"
+                     :disabled="disabled">
+                <el-row :gutter="35">
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="队伍名称" prop="teamName">
+                            <el-input v-model="ruleForm.teamName" placeholder="请填写队伍名称"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="队伍级别" prop="teamLevel">
+                            <el-select v-model="ruleForm.teamLevel" class="w100" placeholder="请选择">
+                                <el-option label="公司" value="1"></el-option>
+                                <el-option label="分厂-车间" value="2"></el-option>
+                                <el-option label="工序-班组等" value="3"></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="队伍负责人" prop="principalName">
+                            <el-input v-model="ruleForm.principalName" placeholder="请选择" class="input-with-select">
+                                <template #append>
+                                    <el-button :icon="Search" @click="openUser"/>
+                                </template>
+                            </el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="负责人部门" prop="principalDepartmentId">
+                            <el-tree-select v-model="ruleForm.principalDepartmentId" :data="newTreeList" class="w100"
+                                            :props="propse" clearable placeholder="请选择"/>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="负责人手机" prop="principalPhone">
+                            <el-input v-model="ruleForm.principalPhone" placeholder="请填写负责人手机"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="固定电话" prop="telephoneNumber">
+                            <el-input v-model="ruleForm.telephoneNumber" placeholder="请填写固定电话"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                        <el-form-item label="队伍描述" prop="teamDesc">
+                            <el-input class="textarea" v-model="ruleForm.teamDesc" type="textarea" maxlength="150"
+                                      placeholder="请填写队伍描述"></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                        <el-form-item label="相关附件" prop="fileList">
+                            <uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled"
+                                          @successUploader="successUploader"></uploaderFile>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <el-row :gutter="35">
+                <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                    <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+                        <el-tab-pane label="应急队伍人员" name="first" >
+                            <el-button type="primary" size="default" @click="onAddEmergencyPersonnel(ruleFormRef)" :disabled="disabled">新增
+                            </el-button>
+                            <el-table
+                                    :data="tableData"
+                                    style="width: 100%; margin-top: 15px"
+                                    ref="multipleTableRef"
+                                    :header-cell-style="{ background: '#f6f7fa', color: '#909399' }"
+                                    :disabled="disabled"
+                            >
+                                <el-table-column prop="jobNumber" label="人员工号" show-overflow-tooltip></el-table-column>
+                                <el-table-column prop="name" label="人员名称" show-overflow-tooltip></el-table-column>
+                                <el-table-column prop="phone" label="手机号码" show-overflow-tooltip></el-table-column>
+                                <el-table-column prop="position" label="职位" show-overflow-tooltip></el-table-column>
+                                <el-table-column label="操作" width="250" align="center">
+                                    <template #default="scope">
+                                        <el-button :disabled="disabled" size="small" @click="onEdit('查看应急队伍人员',scope.row.id)">查看
+                                        </el-button>
+                                        <el-button :disabled="disabled" size="small" @click="onEdit('修改应急队伍人员',scope.row.id)"
+                                                   style="margin-right: 5px">编辑
+                                        </el-button>
+                                        <el-button :disabled="disabled" size="small" @click="onRowDel(scope.row.id)"
+                                                   style="margin-right: 5px">删除
+                                        </el-button>
+                                    </template>
+                                </el-table-column>
+                            </el-table>
+                        </el-tab-pane>
+                    </el-tabs>
+                </el-col>
+            </el-row>
+            <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" v-if="disabled == true ? false : true" type="primary"
+                               @click="onSubmit(titles, ruleFormRef)">确定</el-button>
+				</span>
+            </template>
+        </el-dialog>
+        <AddEmergencyPersonnel ref="addRef" @myAdd="onMyAdd"/>
+        <DailogSearchUserManger ref="userRef" @SearchUser="onUser"/>
+    </div>
+</template>
+
+<script lang="ts">
+    import {
+        reactive,
+        ref,
+        defineComponent,
+        onMounted,
+        // toRefs,
+    } from 'vue';
+    import {
+        ElMessage,
+        ElMessageBox,
+    } from 'element-plus';
+
+    import type {
+        UploadUserFile,
+        TabsPaneContext,
+        FormInstance,
+        FormRules,
+    } from 'element-plus'
+
+    import {
+        Search,
+        FullScreen
+    } from '@element-plus/icons-vue'
+    import AddEmergencyPersonnel from "/@/views/contingencyManagement/contingency/component/addEmergencyPersonnel.vue";
+    import DailogSearchUserManger from "/@/components/DailogSearchUserManger/index.vue"
+    import {contingencyApi} from "/@/api/contingencyManagement/contingency";
+    import {goalManagementApi} from "/@/api/goalManagement";
+    import uploaderFile from '/@/components/uploaderFile/index.vue';
+    // import {releaseDrillPlanApi} from "/@/api/releaseDrillPlan";
+
+
+    export default defineComponent({
+        name: 'openAdd',
+        components: {
+            AddEmergencyPersonnel,
+            DailogSearchUserManger,
+            uploaderFile
+        },
+        setup(prop, {emit}) {
+            const isShowDialog = ref(false);
+            const ruleFormRef = ref<FormInstance>();
+            const ruleForm = ref({
+                teamName: '', // 队伍名称
+                teamLevel: '', // 队伍级别
+                principalUid: '', // 队伍负责人
+                principalName: '',
+                principalDepartmentId: '',  //负责人部门
+                principalPhone: '', // 负责人手机
+                telephoneNumber: '', // 固定电话
+                teamDesc: '',  //队伍描述
+                fileList: [],
+                memberList: []
+            });
+            const titles = ref();
+            const disabled = ref();
+            const teamId = ref()
+            // 打开弹窗
+            const openDialog = (title: string, id: number, type: boolean) => {
+                isShowDialog.value = true;
+                titles.value = title;
+                disabled.value = type;
+                teamId.value = id
+                if (title == '查看应急队伍管理' || title == '修改应急队伍管理') {
+                    contingencyApi()
+                        .seeEmergencyTeam(id)
+                        .then((res) => {
+                            if (res.data.code == 200) {
+                                ruleForm.value = res.data.data;
+                                fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
+                                initFileListData()
+                                listApi()
+                            }
+                        });
+                }
+            }
+            // 上传附件
+            const fileList = ref([])
+            const initFileListData = async () => {
+                for(var a = 0;a<fileList.value.length;a++){
+                    fileList.value[a].name = fileList.value[a].fileName
+                }
+            }
+            // 上传成功组装数据
+            const successUploader = (list) =>{
+                fileList.value = list
+                const formFileList = []
+                for(var a = 0;a<fileList.value.length;a++){
+                    formFileList.push(
+                        {
+                            fileName:fileList.value[a].fileName,
+                            fileUrl:''
+                        }
+                    )
+                }
+                ruleForm.value.fileList = formFileList
+            }
+            //定义树形下拉框
+            const principalDepartmentId = ref()
+            const data = ref()
+
+
+
+            //el-tree-select回显
+            const propse = {
+                label: 'depName',
+                children: 'children',
+            };
+            const newTreeList = [];
+            //得到部门树
+            const department = async () => {
+                await goalManagementApi()
+                    .getTreedepartment()
+                    .then((res) => {
+                        if (res.data.code == 200) {
+                            data.value = res.data.data;
+                            getTreeList(res.data.data, newTreeList);
+                        } else {
+                            ElMessage.error(res.data.msg);
+                        }
+                    });
+            };
+            // 递归树状数据且修改字段名
+            const getTreeList = (treeList, newTreeList) => {
+                treeList.map((c) => {
+                    let tempData = {
+                        depName: c.depName,
+                        value: c.depId,
+                        children: [],
+                    };
+                    if (c.children && c.children.length > 0) {
+                        tempData.children = [];
+                        getTreeList(c.children, tempData.children);
+                    }
+                    newTreeList.push(tempData);
+                });
+            };
+            onMounted(() => {
+                department();
+            });
+
+
+
+
+            // 打开用户选择弹窗
+            const userRef = ref();
+            const openUser = () => {
+                userRef.value.openDailog();
+            };
+            const onUser = (e: any) => {
+                ruleForm.value.principalUid = e[0].uid
+                ruleForm.value.principalName = e[0].realName
+            };
+            //定义tabs切换
+            const activeName = ref('first')
+            const handleClick = (tab: TabsPaneContext, event: Event) => {
+                console.log(tab, event)
+            }
+
+            // 必填项提示
+            const rules = reactive<FormRules>({
+                teamName: [
+                    {
+                        required: true,
+                        message: '队伍名称不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                teamLevel: [
+                    {
+                        required: true,
+                        message: '队伍级别不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                principalUid: [
+                    {
+                        required: true,
+                        message: '队伍负责人不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                principalDepartmentId: [
+                    {
+                        required: true,
+                        message: '负责人部门不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                principalPhone: [
+                    {
+                        required: true,
+                        message: '负责人手机不能为空',
+                        trigger: 'change',
+                    },
+                ],
+                telephoneNumber: [
+                    {
+                        required: true,
+                        message: '固定电话不能为空',
+                        trigger: 'change',
+                    },
+                ],
+            })
+            //全屏
+            const full = ref(false);
+            const toggleFullscreen = () => {
+                if (full.value == false) {
+                    full.value = true;
+                } else {
+                    full.value = false;
+                }
+            };
+            const onSubmit = async (title: string, formEl: FormInstance | undefined) => {
+                if(!ruleForm.value.fileList){
+                    ruleForm.value.fileList = []
+                }
+                if (title == '新建应急队伍管理') {
+                    if (!formEl) return;
+                    await formEl.validate((valid, fields) => {
+                        if (valid) {
+                            isShowDialog.value = false;
+                            if(teamId.value==null||teamId.value==''){
+                                contingencyApi()
+                                    .addEmergencyTeam(ruleForm.value)
+                                    .then((res) => {
+                                        if (res.data.code == 200) {
+                                            ElMessage({
+                                                showClose: true,
+                                                message: res.data.msg,
+                                                type: 'success',
+                                            });
+                                            emit('myAdd', true);
+                                        } else {
+                                            ElMessage({
+                                                showClose: true,
+                                                message: res.data.msg,
+                                                type: 'error',
+                                            });
+                                            emit('myAdd', true);
+                                        }
+                                        formEl.resetFields();
+                                    });
+                            }else {
+                                ElMessage({
+                                    showClose: true,
+                                    message: '添加成功',
+                                    type: 'success',
+                                });
+                                emit('myAdd', true);
+                            }
+                        } else {
+                            console.log('error submit!', fields);
+                        }
+                    });
+                } else if (title == '修改应急队伍管理') {
+                    if (!formEl) return;
+                    await formEl.validate((valid, fields) => {
+                        if (valid) {
+                            isShowDialog.value = false;
+                            contingencyApi()
+                                .editEmergencyTeam(ruleForm.value)
+                                .then((res) => {
+                                    if (res.data.code == 200) {
+                                        ElMessage({
+                                            showClose: true,
+                                            message: '修改成功',
+                                            type: 'success',
+                                        });
+                                        emit('myAdd', true);
+                                    } else {
+                                        ElMessage({
+                                            showClose: true,
+                                            message: res.data.msg,
+                                            type: 'error',
+                                        });
+                                        emit('myAdd', true);
+                                    }
+                                    formEl.resetFields();
+                                });
+                        } else {
+                            console.log('error submit!', fields);
+                        }
+                    });
+                    formEl.resetFields();
+                    ruleForm.value = {
+                        teamName: '', // 队伍名称
+                        teamLevel: '', // 队伍级别
+                        principalUid: '', // 队伍负责人
+                        principalDepartmentId: '',  //负责人部门
+                        principalPhone: '', // 负责人手机
+                        telephoneNumber: '', // 固定电话
+                        teamDesc: '',  //队伍描述
+                        fileList: [],
+                        memberList: []
+                    };
+                }
+            };
+            const resetForm = (formEl: FormInstance | undefined) => {
+                isShowDialog.value = false;
+                if (!formEl) return;
+                formEl.resetFields();
+                fileList.value = []
+                tableData.value=[]
+                ruleForm.value = {}
+            };
+            // 定义表格数据
+            const tableData = ref([]);
+            //添加队伍负责人弹窗
+            const addRef = ref();
+            const onAddEmergencyPersonnel = async (formEl: FormInstance | undefined) => {
+                if(!ruleForm.value.fileList){
+                    ruleForm.value.fileList = []
+                }
+                if (!formEl) return;
+                await formEl.validate((valid, fields) => {
+                    if (valid) {
+                        // isShowDialog.value = false;
+                        if(teamId.value == ''||teamId.value==null){
+                            ElMessageBox.confirm('确认添加此应急队伍?', '提示', {
+                                confirmButtonText: '确定',
+                                cancelButtonText: '取消',
+                                type: 'warning',
+                            })
+                                .then(() => {
+                                    contingencyApi()
+                                        .addEmergencyTeam(ruleForm.value)
+                                        .then((res) => {
+                                            if (res.data.code == 200) {
+                                                ElMessage({
+                                                    showClose: true,
+                                                    message: res.data.msg,
+                                                    type: 'success',
+                                                });
+                                                teamId.value = res.data.data.id
+                                                addRef.value.openDialog('新建应急队伍人员','',teamId.value);
+                                            } else {
+                                                ElMessage({
+                                                    showClose: true,
+                                                    message: res.data.msg,
+                                                    type: 'error',
+                                                });
+                                            }
+                                        });
+                                })
+                                .catch(() => {});
+
+                        }else {
+                            addRef.value.openDialog('新建应急队伍人员','',teamId.value);
+                        }
+
+
+                    } else {
+                        console.log('error submit!', fields);
+                    }
+                });
+            };
+            // 请求列表数据
+            const listApi = async () => {
+                let res = await contingencyApi().getEmergencyTeamPersonnelList(teamId.value);
+                if (res.data.code == 200) {
+                    tableData.value = res.data.data;
+                } else {
+                    ElMessage.error(res.data.msg);
+                }
+            };
+            // 新增后刷新
+            const onMyAdd = (e: object) => {
+                listApi();
+            };
+            // 打开修改弹窗
+            const onEdit = (val: string, row: object) => {
+                if (val == '查看应急队伍人员') {
+                    addRef.value.openDialog('查看应急队伍人员', row,teamId.value, true);
+                } else {
+                    addRef.value.openDialog('修改应急队伍人员', row,teamId.value, false);
+                }
+            };
+            // 删除
+            const onRowDel = (data: any) => {
+                ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+                    confirmButtonText: '确认',
+                    cancelButtonText: '取消',
+                    type: 'warning',
+                }).then(() => {
+                    contingencyApi()
+                        .deleteEmergencyTeamPersonnel(data)
+                        .then((res) => {
+                            if (res.data.code == 200) {
+                                ElMessage({
+                                    showClose: true,
+                                    message: res.data.msg,
+                                    type: 'success',
+                                });
+                                listApi()
+                            } else {
+                                ElMessage({
+                                    showClose: true,
+                                    message: res.data.msg,
+                                    type: 'error',
+                                });
+                                listApi()
+                            }
+                        });
+                })
+                    .catch(() => {
+                    });
+            };
+            return {
+                openDialog,
+                fileList,
+                principalDepartmentId,
+                data,
+                activeName,
+                handleClick,
+                tableData,
+                Search,
+                resetForm,
+                isShowDialog,
+                ruleFormRef,
+                ruleForm,
+                rules,
+                addRef,
+                userRef,
+                titles,
+                disabled,
+                propse,
+                emit,
+                onSubmit,
+                openUser,
+                onAddEmergencyPersonnel,
+                toggleFullscreen,
+                FullScreen,
+                full,
+                onUser,
+                onMyAdd,
+                listApi,
+                onEdit,
+                onRowDel,
+                department,
+                teamId,
+                newTreeList,
+                successUploader,
+                initFileListData
+            };
+        },
+    });
+</script>
+<style scoped lang="scss">
+    .textarea {
+        height: 168px !important;
+    }
+
+    .textarea ::v-deep .el-textarea__inner {
+        height: 168px !important;
+    }
+
+    ::v-deep .el-table__cell {
+        font-weight: 400;
+    }
+</style>
+
diff --git a/src/views/contingencyManagement/contingency/component/upData.vue b/src/views/contingencyManagement/contingency/component/upData.vue
index e69de29..cc3e2d0 100644
--- a/src/views/contingencyManagement/contingency/component/upData.vue
+++ b/src/views/contingencyManagement/contingency/component/upData.vue
@@ -0,0 +1,125 @@
+<template>
+  <el-dialog
+      v-model="dialogVisible"
+      title="导入Excel"
+      width="50%"
+      draggable
+      :fullscreen="full"
+  >
+    <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+    <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 size="default">下载模板</el-button>
+      <el-button size="default" type="primary">点击上传</el-button>
+      <template #tip>
+        <div class="el-upload__tip">
+          只允许导入“xls”或“xlsx”格式文件!
+        </div>
+      </template>
+    </el-upload>
+  </el-dialog>
+</template>
+<script lang="ts">
+import { ref,
+  defineComponent,
+} from "vue";
+import {
+  ElMessage,
+  ElMessageBox
+} from "element-plus";
+import type {
+  UploadProps,
+  UploadUserFile,
+} from "element-plus";
+import {
+  FullScreen
+} from '@element-plus/icons-vue'
+export default defineComponent({
+  setup() {
+    let dialogVisible =ref<boolean>(false)
+    const fileList = ref<UploadUserFile[]>([
+      // {
+      //   name: "element-plus-logo.svg",
+      //   url: "https://element-plus.org/images/element-plus-logo.svg",
+      // },
+      // {
+      //   name: "element-plus-logo2.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(
+          `Cancel the transfert of ${uploadFile.name} ?`
+      ).then(
+          () => true,
+          () => false
+      );
+    };
+    // 打开弹窗
+    const openDialog = (type:string,value:any,projectList: any,projectId:string) => {
+      dialogVisible.value=true
+    }
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      dialogVisible,
+      fileList,
+      handleRemove,
+      handlePreview,
+      handleExceed,
+      beforeRemove,
+      openDialog,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.el-upload__tip{
+  margin-left: 100px;
+  margin-top: 20px;
+}
+::v-deep .el-dialog__header{
+  border-bottom: 1px solid #e8e8e8;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/contingency/index.vue b/src/views/contingencyManagement/contingency/index.vue
index e69de29..8083231 100644
--- a/src/views/contingencyManagement/contingency/index.vue
+++ b/src/views/contingencyManagement/contingency/index.vue
@@ -0,0 +1,401 @@
+<template>
+  <div class="system-user-container">
+    <el-card shadow="hover">
+      <div class="system-user-search mb15">
+        <el-form :inline="true" class="demo-form-inline">
+          <el-form-item>
+            <el-input size="default" v-model="listQuery.searchParams.teamName" placeholder="队伍名称"> </el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-select size="default" v-model="listQuery.searchParams.teamLevel" placeholder="请选择队伍级别">
+              <el-option label="公司" value="1"></el-option>
+              <el-option label="分厂-车间" value="2"></el-option>
+              <el-option label="工序-班组等" value="3"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+             <el-button size="default" type="primary" class="ml10" @click="onSubmit">
+               查询
+             </el-button>
+             <el-button size="default" class="ml10"  @click="submitReset">
+               重置
+             </el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="button_Line">
+        <div class="button_Left">
+          <el-button size="default" type="primary"  @click="onOpenAdd">
+            <el-icon>
+              <Plus />
+            </el-icon>新建
+          </el-button>
+          <el-button size="default" type="warning" plain :disabled="warning" @click="onEdit('修改', deleteAll[0])">
+            <el-icon>
+              <Edit />
+            </el-icon>修改
+          </el-button>
+          <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll">
+            <el-icon>
+              <Delete />
+            </el-icon>删除
+          </el-button>
+        </div>
+<!--        <div class="button_Right">-->
+<!--          <el-button size="default" @click="upButton">-->
+<!--            <el-icon>-->
+<!--              <Upload />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button size="default">-->
+<!--            <el-icon>-->
+<!--              <Download />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button size="default">-->
+<!--            <el-icon>-->
+<!--              <Refresh />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--        </div>-->
+      </div>
+      <el-table
+          :data="tableData"
+          style="width: 100%"
+          ref="multipleTableRef"
+          @selection-change="handleSelectionChange"
+      >
+        <el-table-column
+            type="selection"
+            width="55"
+        />
+        <el-table-column prop="teamName" label="队伍名称" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="teamLevel" label="队伍级别" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.teamLevel == 1">公司</span>
+            <span v-if="scope.row.teamLevel == 2">分厂-车间</span>
+            <span v-if="scope.row.teamLevel == 3">工序-班组等</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="teamDesc" label="队伍描述" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="principalPhone" label="负责人手机" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="fileList" label="相关附件" show-overflow-tooltip sortable>
+
+        </el-table-column>
+        <el-table-column label="操作" width="200" align="center" fixed="right">
+          <template #default="scope">
+            <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <View />
+              </el-icon>查看
+            </el-button>
+            <el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <EditPen />
+              </el-icon>修改
+            </el-button>
+            <el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+              <el-icon>
+                <Delete />
+              </el-icon>删除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pages">
+        <el-pagination
+            v-if="tableData.length == 0 ? false : true"
+            @size-change="onHandleSizeChange"
+            @current-change="onHandleCurrentChange"
+            class="mt15"
+            :pager-count="5"
+            :page-sizes="[10, 20, 30]"
+            v-model:currentPage="pageIndex"
+            background
+            v-model:page-size="pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+        >
+        </el-pagination>
+      </div>
+    </el-card>
+    <OpenAdd ref="addRef"  @myAdd="onMyAdd" />
+    <upData ref="upShow"></upData>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // toRefs,
+  reactive,
+  onMounted,
+  ref,
+  defineComponent
+} from 'vue';
+import {
+  ElMessageBox,
+  ElMessage,
+} from 'element-plus';
+import {
+  Plus,
+  Delete,
+  // Upload,
+  // Download,
+  // Refresh,
+  Edit,
+  View,
+  EditPen,
+} from '@element-plus/icons-vue'
+
+import OpenAdd from '../../contingencyManagement/contingency/component/openAdd.vue'
+import UpData from '../../contingencyManagement/contingency/component/upData.vue';
+import {contingencyApi} from "../../../api/contingencyManagement/contingency";
+
+export default defineComponent({
+  name: 'systemUser',
+  components: {
+    OpenAdd,
+    View,
+    Edit,
+    EditPen,
+    Plus,
+    Delete,
+    // Upload,
+    // Download,
+    // Refresh,
+    UpData,
+    contingencyApi
+  },
+  setup() {
+    // 列表参数
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        teamName: "",
+        teamLevel: "",
+      }
+    })
+    // 定义表格数据
+    const tableData = ref([]);
+    // 列表数据请求
+    const onSubmit = async () => {
+      let res = await contingencyApi().getTeamManagementList(listQuery)
+      if(res.data.code === '200'){
+        tableData.value = res.data.data;
+        for(var a = 0;a<tableData.value.length;a++){
+          if(tableData.value[a].fileList!=null&&tableData.value[a].fileList!=''&&tableData.value[a].fileList.length!=0){
+            tableData.value[a].fileList = tableData.value[a].fileList[0].fileName
+          }
+        }
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      }else{
+        ElMessage({
+          showClose: true,
+          type:'error',
+          message:res.data.msg
+        })
+      }
+    }
+    // 重置
+    const submitReset = () => {
+      listQuery.searchParams.teamName = '';
+      listQuery.searchParams.teamLevel = '';
+      onSubmit();
+    };
+    const warning = ref(true);
+    const danger = ref(true);
+    const deleteAll = ref();
+    const handleSelectionChange = (val: any) => {
+      let valId = JSON.parse(JSON.stringify(val));
+      let arr = [];
+      for (let i = 0; i < valId.length; i++) {
+        arr.push(valId[i].id);
+      }
+      deleteAll.value = arr;
+      if (val.length == 1) {
+        warning.value = false;
+        danger.value = false;
+      } else if (val.length == 0) {
+        warning.value = true;
+        danger.value = true;
+      } else {
+        warning.value = true;
+        danger.value = false;
+      }
+    };
+
+    // 上传
+    // const upShow=ref()
+    // const upButton=()=>{
+    //   upShow.value.openDialog()
+    // }
+    // 打开新增应急队伍弹窗
+    const addRef = ref();
+    const onOpenAdd = () => {
+      addRef.value.openDialog('新建应急队伍管理');
+    };
+    // 新增后刷新
+    const onMyAdd = (e: boolean) => {
+      if (e) {
+        onSubmit();
+      } else {
+        onSubmit();
+      }
+    };
+    // 打开修改应急队伍弹窗
+    const onEdit = (val: string, row: object) => {
+      if (val == '详情') {
+        addRef.value.openDialog('查看应急队伍管理',row,true);
+      } else {
+        addRef.value.openDialog('修改应急队伍管理',row,false);
+      }
+    };
+    // 删除用户
+    const onRowDel = (data: any) => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      }).then(() => {
+        contingencyApi()
+          .deleteEmergencyTeam([data])
+          .then((res) => {
+            if (res.data.code == 200) {
+              ElMessage({
+                showClose: true,
+                message: res.data.msg,
+                type: 'success',
+              });
+              onSubmit();
+            } else {
+              ElMessage({
+                showClose: true,
+                message: res.data.msg,
+                type: 'error',
+              });
+              onSubmit();
+            }
+          });
+      }).catch(() => {});
+    };
+    // 多选删除
+    const onDeleteAll = () => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+          .then(() => {
+            contingencyApi()
+                .deleteEmergencyTeam(deleteAll.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    onSubmit();
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    onSubmit();
+                  }
+                });
+          })
+          .catch(() => {});
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const onHandleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+      onSubmit();
+    };
+    const onHandleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+      onSubmit();
+    };
+    // 页面加载时
+    onMounted(() => {
+      onSubmit();
+    });
+    return {
+      listQuery,
+      onSubmit,
+      // upButton,
+      // upShow,
+      onOpenAdd,  //新增
+      addRef,
+      pageIndex,
+      pageSize,
+      total,
+      onEdit,
+      handleSelectionChange,
+      submitReset,
+      onRowDel,
+      onMyAdd,
+      tableData,
+      onDeleteAll,
+      onHandleSizeChange,
+      onHandleCurrentChange,
+      deleteAll,
+      warning,
+      danger,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.table_Box{
+  padding: 20px;
+  background-color: #fff;
+}
+.tableForm{
+  margin-top: 10px;
+}
+/*按钮行*/
+  .button_Line{
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    margin-bottom: 10px;
+  }
+//分页
+.pages{
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 15px;
+}
+.el-form .el-form-item{
+  margin-bottom: 0px!important;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+  background-color: #f6f7fa;
+  font-weight: 400;
+  color: #909399;
+}
+.el-table .sort-caret.ascending{
+  border-bottom-color: #c0c4cc;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue
index e69de29..5dad014 100644
--- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue
+++ b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue
@@ -0,0 +1,325 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        title="应急演练计划--修改审批进度"
+        v-model="isShowDialog"
+        width="769px"
+        draggable
+        :fullscreen="full"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <!-- <img class="process-status-img" src="src/assets/icon.png"> -->
+      <el-tabs type="border-card">
+        <el-tab-pane label="流转记录">
+          <el-card class="box-card" shadow="hover">
+            <template #header>
+              <div class="card-header">
+                <span>流转记录</span>
+              </div>
+            </template>
+            <div>
+              <el-steps :active="2">
+                <el-step title="开始" description="胡海涛,2022-07-09 20:41:50" />
+                <el-step title="一级审批" description="管理员,2022-07-09 20:41:50" />
+              </el-steps>
+            </div>
+            <el-table :data="tableData" stripe style="width: 100%">
+              <el-table-column prop="date" label="执行环节" width="120" />
+              <el-table-column prop="name" label="执行人" width="120" />
+              <el-table-column prop="address" label="开始时间" width="100" />
+              <el-table-column prop="address" label="结束时间" width="100" />
+              <el-table-column prop="address" label="办理状态" width="100" />
+              <el-table-column prop="address" label="审批意见" width="100" />
+              <el-table-column prop="address" label="任务历时" width="100" />
+            </el-table>
+          </el-card>
+        </el-tab-pane>
+        <el-tab-pane label="流程信息">
+          <el-card class="box-card" shadow="hover">
+            <template #header>
+              <div class="card-header">
+                <span>流程信息</span>
+              </div>
+            </template>
+            <div>
+              <el-timeline>
+                <el-timeline-item timestamp="2018/4/12" placement="top" color="rgb(63, 158, 255)">
+                  <el-card>
+                    <h4 style="margin: 10px 0;padding-bottom: 10px;">一级审批</h4>
+                    <el-row>
+                      <el-col class="tip" :span="22" :offset="1">
+                        <div class="item">
+                          <span class="label">审批人:</span>
+                          <span class="value">管理员</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">办理状态:</span>
+                          <span class="value">
+<!--                             <el-tag-->
+<!--                                 v-for="item in items"-->
+<!--                                 :key="item.label"-->
+<!--                                 :type="item.type"-->
+<!--                                 class="mx-1"-->
+<!--                                 effect="dark"-->
+<!--                             >-->
+<!--                               {{ item.label }}-->
+<!--                             </el-tag>-->
+                             <p class="text">等待审核</p>
+                          </span>
+                        </div>
+                        <div class="item">
+                          <span class="label">审批意见:</span>
+                          <span class="value">等待审核</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">开始时间:</span>
+                          <span class="value">2022-07-09 20:41:50</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">结束时间:</span>
+                          <span class="value">2022-07-09 20:41:50</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">用时:</span>
+                          <span class="value">0秒</span>
+                        </div>
+                      </el-col>
+                    </el-row>
+                  </el-card>
+                </el-timeline-item>
+                <el-timeline-item timestamp="2018/4/3" placement="top" color="rgb(63, 158, 255)">
+                  <el-card>
+                    <h4>开始</h4>
+                    <el-row>
+                      <el-col class="tip" :span="22" :offset="1">
+                        <div class="item">
+                          <span class="label">审批人:</span>
+                          <span class="value">胡海涛</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">办理状态:</span>
+                          <span class="value">
+                            <p class="text">开始</p>
+                          </span>
+                        </div>
+                        <div class="item">
+                          <span class="label">审批意见:</span>
+                          <span class="value">等待审核</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">开始时间:</span>
+                          <span class="value">2022-07-09 20:41:50</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">结束时间:</span>
+                          <span class="value">2022-07-09 20:41:50</span>
+                        </div>
+                        <div class="item">
+                          <span class="label">用时:</span>
+                          <span class="value">0秒</span>
+                        </div>
+                      </el-col>
+                    </el-row>
+                  </el-card>
+                </el-timeline-item>
+              </el-timeline>
+            </div>
+          </el-card>
+        </el-tab-pane>
+        <el-tab-pane label="流程图">
+          <el-card class="box-card" shadow="hover">
+            <template #header>
+              <div class="card-header">
+                <span>流程图</span>
+              </div>
+            </template>
+            <div>
+            </div>
+          </el-card>
+        </el-tab-pane>
+      </el-tabs>
+    </el-dialog>
+    <RegionsDialog ref="Shows"/>
+    <UserCheckbox ref="userRef"/>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+
+  ref,
+  defineComponent
+} from 'vue';
+
+import type {
+  TagProps,
+} from 'element-plus'
+
+import {
+  Search,
+  FullScreen
+} from '@element-plus/icons-vue'
+import UserCheckbox from "/@/components/userCheckbox/index.vue"
+import RegionsDialog from "/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/regionsDialog.vue"
+
+export default defineComponent({
+  name: 'openAdd',
+  components: {
+    RegionsDialog,
+    UserCheckbox,
+  },
+  setup() {
+    const isShowDialog = ref(false)
+    // 打开弹窗
+    const openDialog = () => {
+      // state.ruleForm = row;
+      isShowDialog.value = true;
+    };
+    // 关闭弹窗
+    const closeDialog = () => {
+      isShowDialog.value = false;
+    };
+    const tableData = [
+      {
+        date: '2016-05-03',
+        name: 'Tom',
+        address: '2022-07-09 20:41:50',
+      },
+      {
+        date: '2016-05-02',
+        name: 'Tom',
+        address: '2022-07-09 20:41:50',
+      },
+      {
+        date: '2016-05-04',
+        name: 'Tom',
+        address: '2022-07-09 20:41:50',
+      },
+      {
+        date: '2016-05-01',
+        name: 'Tom',
+        address: '2022-07-09 20:41:50',
+      },
+    ]
+
+    type Item = { type: TagProps['type']; label: string }
+
+    const items = ref<Array<Item>>([
+      { type: '', label: '等待审核' },
+    ])
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      closeDialog,
+      isShowDialog,
+      Search,
+      tableData,
+      items,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.process-status-img{
+  width: 128px;
+  height: auto;
+  position: absolute;
+  right: 10px;
+  top: 60px;
+  z-index: 999;
+}
+//弹窗底部边框线
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+//弹窗顶部边框线
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+//tabs字体颜色
+::v-deep .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{
+  color: #a9d86e!important;
+}
+.card-header {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+//.box-card {
+//  width: 480px;
+//}
+//步骤条字体大小
+::v-deep  .el-step__icon-inner{
+  font-size: 14px!important;
+}
+//步骤条颜色
+::v-deep .el-step__line{
+  background-color: #409eff;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+  background-color: #f6f7fa;
+  font-weight: 400;
+  color: #909399;
+}
+.el-table .sort-caret.ascending{
+  border-bottom-color: #c0c4cc;
+}
+
+.tip {
+  padding: 8px 16px;
+  background-color: #ecf8ff;
+  border-radius: 4px;
+  border-left: 5px solid #50bfff;
+  margin: 20px 0;
+}
+.item{
+  height: 32px;
+  line-height: 32px;
+  margin-bottom: 8px;
+}
+.item .label {
+  display: inline-block;
+  height: 100%;
+  width: 70px;
+  font-size: 14px;
+  color: #5e6d82;
+  text-align: end;
+  vertical-align: top;
+}
+.item .value {
+  padding-left: 10px;
+  font-size: 14px;
+  max-width: calc(100% - 90px);
+  color: #5e6d82;
+  display: inline-block;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+.text{
+  background-color: #409eff;
+  color: #fff;
+  border-width: 1px;
+  border-style: solid;
+  border-radius: 4px;
+  height: 24px;
+  padding: 0 8px;
+  line-height: 22px;
+  display: inline-block;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
index e69de29..b1a7099 100644
--- a/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
+++ b/src/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/index.vue
@@ -0,0 +1,404 @@
+<template>
+  <div class="system-user-container">
+    <el-card shadow="hover">
+      <div class="button_Line">
+        <div class="button_Left mb15">
+          <el-button size="default" type="primary"  @click="onOpenAdd">
+            <el-icon>
+              <Plus />
+            </el-icon>新建
+          </el-button>
+          <el-button size="default" type="danger" plain :disabled="danger" @click="onDeleteAll">
+            <el-icon>
+              <Delete />
+            </el-icon>删除
+          </el-button>
+        </div>
+        <div class="button_Right">
+<!--          <el-button @click="upButton">-->
+<!--            <el-icon>-->
+<!--              <Upload />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button>-->
+<!--            <el-icon>-->
+<!--              <Download />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+<!--          <el-button>-->
+<!--            <el-icon>-->
+<!--              <Refresh />-->
+<!--            </el-icon>-->
+<!--          </el-button>-->
+        </div>
+      </div>
+      <el-table
+          :data="tableData"
+          style="width: 100%"
+          ref="multipleTableRef"
+          @selection-change="handleSelectionChange"
+      >
+        <el-table-column
+            type="selection"
+            width="55"
+        />
+        <el-table-column prop="drillName" label="演练名称" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="drillAddress" label="演练地点" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="drillWay" label="演练方式" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.drillWay == 1">综合</span>
+            <span v-if="scope.row.drillWay == 2">桌面</span>
+            <span v-if="scope.row.drillWay == 3">专项</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="drillLevel" label="演练级别" show-overflow-tooltip sortable>
+          <template #default="scope">
+            <span v-if="scope.row.drillLevel == 1">公司级</span>
+            <span v-if="scope.row.drillLevel == 2">分厂级</span>
+            <span v-if="scope.row.drillLevel == 3">车间级</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="drillPlanDate" label="计划演练日期" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column prop="gmtModitify" label="修改时间" show-overflow-tooltip sortable></el-table-column>
+        <el-table-column label="操作" width="260" align="center">
+          <template #default="scope">
+            <!--<el-button size="small" text type="primary" @click="releaseOfDrillPlan(0)">-->
+              <!--<el-icon style="margin-right: 5px;">-->
+                <!--<VideoPlay />-->
+              <!--</el-icon>启动-->
+            <!--</el-button>-->
+            <el-button size="small" text type="primary" @click="onEdit('详情',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <View />
+              </el-icon>查看
+            </el-button>
+            <el-button size="small" text type="primary" @click="onEdit('修改',scope.row.id)">
+              <el-icon style="margin-right: 5px;">
+                <EditPen />
+              </el-icon>修改
+            </el-button>
+            <el-button size="small" text type="primary" @click="onRowDel(scope.row.id)">
+              <el-icon>
+                <Delete />
+              </el-icon>删除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="pages">
+        <el-pagination
+            v-if="tableData.length == 0 ? false : true"
+            v-model:currentPage="pageIndex"
+            v-model:page-size="pageSize"
+            :page-sizes="[10, 20, 30]"
+            :pager-count="5"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="total"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+        />
+      </div>
+    </el-card>
+    <OpenAdd ref="addRef" @myAdd="onMyAdd"/>
+<!--    <FlowChart ref="flowRef"></FlowChart>-->
+    <upData ref="upShow"></upData>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  // toRefs,
+  reactive,
+  onMounted,
+  ref,
+  defineComponent
+} from 'vue';
+import {
+  ElMessageBox,
+  ElMessage,
+  // ElTable,
+} from 'element-plus';
+import {
+  Plus,
+  Delete,
+  // Upload,
+  // Download,
+  // Refresh,
+  View,
+  VideoPlay,
+  EditPen,
+} from '@element-plus/icons-vue'
+import {useRouter} from "vue-router"
+import OpenAdd from '/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/openAdd.vue';
+// import FlowChart from '/@/views/contingencyManagement/emergencyDrill/releaseOfDrillPlan/component/flowChart.vue';
+import UpData from '/@/views/contingencyManagement/panManagement/component/upData.vue';
+import { releaseDrillPlanApi } from '/@/api/contingencyManagement/emergencyDrillPlan';
+
+export default defineComponent({
+  name: 'systemUser',
+  components: {
+    OpenAdd,
+    EditPen,
+    Plus,
+    View,
+    Delete,
+    // Upload,
+    // Download,
+    // Refresh,
+    VideoPlay,
+    UpData,
+    // FlowChart,
+  },
+  setup() {
+    // 列表参数
+    const listQuery = reactive({
+      pageIndex: 1,
+      pageSize: 10,
+      searchParams: {
+        drillName: ''
+      },
+    });
+    // 定义表格数据
+    const tableData = ref([]);
+    // 列表数据请求
+    const listApi = async () => {
+      let res = await releaseDrillPlanApi().getReleaseDrillPlanList(listQuery);
+      if (res.data.code == 200) {
+        tableData.value = res.data.data;
+        pageIndex.value = res.data.pageIndex;
+        pageSize.value = res.data.pageSize;
+        total.value = res.data.total;
+      } else {
+        ElMessage({
+          showClose: true,
+          message: res.data.msg,
+          type: 'error',
+        });
+      }
+    };
+    onMounted(() => {
+      listApi();
+    });
+    // 上传
+    // const upShow=ref()
+    // const upButton=()=>{
+    //   upShow.value.openDialog()
+    // }
+
+    // 打开新增弹窗
+    const addRef = ref();
+    const onOpenAdd = () => {
+      addRef.value.openDialog('新建应急演练计划发布',false);
+    };
+    // 新增后刷新
+    const onMyAdd = (e: boolean) => {
+      if (e) {
+        listApi();
+      } else {
+        listApi();
+      }
+    };
+    // 打开修改用户弹窗
+    const onEdit = (val: string, row: object) => {
+      if (val == '详情') {
+        addRef.value.openDialog('查看应急演练计划发布',row,true);
+      } else {
+        addRef.value.openDialog('修改应急演练计划发布',row,false);
+      }
+    };
+    // 打开修改用户弹窗
+    // const flowRef = ref();
+    // const onflowChart = (row: TableDataRow) => {
+    //   flowRef.value.openDialog(row);
+    // };
+    // 删除
+    const onRowDel = (id: number) => {
+      let arr = [];
+      arr.push(id)
+      ElMessageBox.confirm('确定删除所选项吗?', '提示',{
+        confirmButtonText: '确认',
+        cancelButtonText: '取消',
+        type: 'warning',
+      }).then(() => {
+        releaseDrillPlanApi()
+            .deleteReleaseDrillPlan(arr)
+            .then((res) => {
+              if (res.data.code == 200) {
+                ElMessage({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'success',
+                });
+                listApi();
+              } else {
+                ElMessage({
+                  showClose: true,
+                  message: res.data.msg,
+                  type: 'error',
+                });
+                listApi();
+              }
+            });
+      })
+          .catch(() => {});
+    };
+    // 多选删除
+    const onDeleteAll = () => {
+      ElMessageBox.confirm('确定删除所选项吗?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+          .then(() => {
+            releaseDrillPlanApi()
+                .deleteReleaseDrillPlan(deletAll.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    listApi();
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    listApi();
+                  }
+                });
+          })
+          .catch(() => {});
+    };
+    // 分页
+    const pageIndex = ref();
+    const pageSize = ref();
+    const total = ref();
+    // 分页改变
+    const handleSizeChange = (val: number) => {
+      listQuery.pageSize = val;
+      listApi();
+    };
+    // 分页未改变
+    const handleCurrentChange = (val: number) => {
+      listQuery.pageIndex = val;
+      listApi();
+    };
+    const danger = ref(true);
+    const deletAll = ref();
+    const handleSelectionChange = (val: any) => {
+      let valId = JSON.parse(JSON.stringify(val));
+      let arr = [];
+      for (let i = 0; i < valId.length; i++) {
+        arr.push(valId[i].id);
+      }
+      deletAll.value = arr;
+      // console.log(deletAll.value);
+      if (val.length == 1) {
+        danger.value = false;
+      }  else if (val.length == 0) {
+        danger.value = true;
+      } else {
+        danger.value = false;
+      }
+    };
+
+    // 启动跳转
+    const router=useRouter()
+    const releaseOfDrillPlan=(data:string)=>{
+      router.push({
+        path:"/releaseOfDrillStart",
+        query:{
+          type:data
+        }
+      })
+    }
+    return {
+      // upButton,
+      // upShow,
+      tableData,
+      // onflowChart,
+      // flowRef,
+      onOpenAdd,  //新增
+      addRef,
+      onRowDel,
+      View ,
+      pageIndex,
+      listQuery,
+      pageSize,
+      handleSizeChange,
+      handleCurrentChange,
+      router,
+      releaseOfDrillPlan,
+      listApi,
+      danger,
+      deletAll,
+      handleSelectionChange,
+      onMyAdd,
+      onDeleteAll,
+      onEdit,
+      total,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.table_Box{
+  padding: 20px;
+  background-color: #fff;
+}
+.tableForm{
+  margin-top: 10px;
+}
+/*按钮行*/
+.button_Line{
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+//表头
+::v-deep .el-table th.el-table__cell {
+  background-color: #f6f7fa;
+  font-weight: 400;
+  color: #909399;
+}
+.el-table .sort-caret.ascending{
+  border-bottom-color: #c0c4cc;
+}
+//分页
+.pages{
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 15px;
+}
+::v-deep .el-pagination .el-pager li {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+  background-color: #409eff;
+  color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled{
+  color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next{
+  margin: 0 5px;
+  background-color: #f4f4f5;
+  color: #606266;
+  min-width: 30px;
+  border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue b/src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue
index fd30fbe..d746a59 100644
--- a/src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue
+++ b/src/views/contingencyManagement/emergencyResources/maintenanceOfEmergencyMaterials/component/openAdd.vue
@@ -112,9 +112,9 @@
 			await formEl.validate((valid, fields) => {
 				if (valid) {
 					if (titles.value == '新建应急物资保养') {
-						isShowDialog.value = false;
 						delete ruleForm.value.suppliesName
 						delete ruleForm.value.userName
+						delete ruleForm.value.id
 						maintenanceEmergencyMaterialsApi()
 							.addMaintenanceEmergencyMaterials(ruleForm.value)
 							.then((res) => {
@@ -125,6 +125,7 @@
 										type: 'success',
 									});
 									emit('myAdd', true);
+									isShowDialog.value = false;
 								} else {
 									ElMessage({
 										showClose: true,
@@ -135,7 +136,6 @@
 								}
 							});
 					} else if (titles.value == '修改应急物资保养') {
-						isShowDialog.value = false;
 						delete ruleForm.value.suppliesName
 						delete ruleForm.value.userName
 						maintenanceEmergencyMaterialsApi()
@@ -148,6 +148,7 @@
 										type: 'success',
 									});
 									emit('myAdd', true);
+									isShowDialog.value = false;
 								} else {
 									ElMessage({
 										showClose: true,
@@ -163,12 +164,13 @@
 					console.log('error submit!', fields);
 				}
 			});
-			formEl.resetFields();
+
 		};
 		const resetForm = (formEl: FormInstance | undefined) => {
 			isShowDialog.value = false;
 			if (!formEl) return;
 			formEl.resetFields();
+			ruleForm.value.userList=[]
 		};
 		const rules = reactive<FormRules>({
 			nameTitle: [],
diff --git a/src/views/contingencyManagement/panManagement/component/abolishLibrary.vue b/src/views/contingencyManagement/panManagement/component/abolishLibrary.vue
index e69de29..c36b1e3 100644
--- a/src/views/contingencyManagement/panManagement/component/abolishLibrary.vue
+++ b/src/views/contingencyManagement/panManagement/component/abolishLibrary.vue
@@ -0,0 +1,226 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog title="废止库" v-model="isShowDialog" width="60%" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-row :gutter="35">
+				<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+					<el-table
+						:data="tableData"
+						style="width: 100%; margin-top: 15px"
+						ref="multipleTableRef"
+						:model="formInline"
+						:header-cell-style="{ background: '#f6f7fa', color: '#909399' }"
+					>
+						<el-table-column prop="name" label="预案名称" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column prop="type" label="预案类型" show-overflow-tooltip sortable>
+							<template #default="scope">
+								<div v-if="scope.row.type==1">综合应急预案</div>
+								<div v-if="scope.row.type==2">现场处置方案</div>
+								<div v-if="scope.row.type==3">专项应急预案</div>
+								<div v-if="scope.row.type==4">其他预案</div>
+							</template>
+						</el-table-column>
+						<el-table-column prop="authorName" label="编写人" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column prop="releaseDate" label="发布实施日期" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column label="操作" width="200" align="center">
+							<template #default="scope">
+								<el-button size="small" text type="primary" @click="onReduction(scope.row.id)">还原 </el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+				</el-col>
+			</el-row>
+			<div class="pages">
+				<el-pagination
+					v-if="tableData.length == 0 ? false : true"
+					v-model:currentPage="pageIndex"
+					v-model:page-size="pageSize"
+					:page-sizes="[10, 20, 30]"
+					:pager-count="5"
+					class="mt15"
+					background
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="onHandleSizeChange"
+					@current-change="onHandleCurrentChange"
+				/>
+			</div>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="onCancel">取消</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, reactive, defineComponent, onMounted } from 'vue';
+
+import type { FormInstance } from 'element-plus';
+import {
+	// ElMessageBox,
+	ElMessage,
+} from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import { emergencyPlanApi } from '../../../../api/contingencyManagement/emergencyPlan';
+export default defineComponent({
+	name: 'abolishLibrary',
+	components: {},
+	setup(prop, { emit }) {
+		// 列表参数
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				abolishStatus: true,
+			},
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+
+		// 列表数据请求
+		const openDialog = async () => {
+			isShowDialog.value = true;
+			let res = await emergencyPlanApi().getEmergencyPlanList(listQuery);
+			if (res.data.code === '200') {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage({
+					showClose: true,
+					type: 'error',
+					message: res.data.msg,
+				});
+			}
+		};
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		// 打开弹窗
+		// const openDialog = () => {
+		//   isShowDialog.value = true;
+		// };
+		// 关闭弹窗
+		const closeDialog = () => {
+			isShowDialog.value = false;
+		};
+		// 取消
+		const onCancel = () => {
+			closeDialog();
+		};
+		const onReduction = async (id: number) => {
+			isShowDialog.value = false;
+			emergencyPlanApi()
+				.reductionEmergencyTeam(id)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('myAdd', true);
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+						emit('myAdd', true);
+						openDialog();
+					}
+				})
+				.catch(() => {});
+		};
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页改变
+		const handleSizeChange = (val: number) => {
+			listQuery.pageSize = val;
+		};
+		// 分页未改变
+		const handleCurrentChange = (val: number) => {
+			listQuery.pageIndex = val;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			closeDialog,
+			isShowDialog,
+			onCancel,
+			tableData,
+			Search,
+			ruleFormRef,
+			pageIndex,
+			pageSize,
+			handleSizeChange,
+			handleCurrentChange,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			listQuery,
+			// onSubmit,
+			total,
+			emit,
+			onReduction,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+//分页
+.pages {
+	display: flex;
+	justify-content: flex-end;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/panManagement/component/approval.vue b/src/views/contingencyManagement/panManagement/component/approval.vue
index e69de29..aed57e8 100644
--- a/src/views/contingencyManagement/panManagement/component/approval.vue
+++ b/src/views/contingencyManagement/panManagement/component/approval.vue
@@ -0,0 +1,239 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog :title="titles" v-model="isShowDialog" width="40%" draggable :fullscreen="full" :close-on-click-modal="false">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" size="default" label-width="120px" :disabled="disabled">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批名称" prop="workName">
+							<el-input v-model="ruleForm.workName" placeholder="请填写队伍名称" disabled></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批标题" prop="title">
+							<el-input v-model="ruleForm.title" placeholder="请填写审批名称" disabled></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批人" prop="approvePersonId">
+							<el-input v-model="ruleForm.approvePersonName" placeholder="请选择" class="input-with-select" disabled>
+								<template #append>
+									<el-button :icon="Search" @click="openUser" :disabled="disabled"/>
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="审批结果" prop="authorUid">
+							<el-radio-group v-model="ruleForm.approveResult">
+								<el-radio :label="false">不通过</el-radio>
+								<el-radio :label="true">通过</el-radio>
+							</el-radio-group>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="审批意见" prop="approveMemo">
+							<el-input v-model="ruleForm.approveMemo" type="textarea" placeholder="请填写审批意见"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="是否完成" prop="complete" @change="typeChang">
+							<el-radio-group v-model="ruleForm.complete">
+								<el-radio :label="false">是</el-radio>
+								<el-radio :label="true">否</el-radio>
+							</el-radio-group>
+						</el-form-item>
+					</el-col>
+					<el-col v-if="ruleForm.complete" :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批名称" prop="twoWorkName">
+							<el-input v-model="ruleForm.twoWorkName" placeholder="请填写队伍名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col v-if="ruleForm.complete" :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批标题" prop="twoTitle">
+							<el-input v-model="ruleForm.twoTitle" placeholder="请填写审批名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col v-if="ruleForm.complete" :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批人" prop="twoApprovePersonName">
+							<el-input v-model="ruleForm.twoApprovePersonName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<DailogSearchUserManger ref="userRef" @SearchUser="onUser" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent } from 'vue';
+
+import type { FormInstance } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUserManger from '/@/components/DailogSearchUserManger/index.vue';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		DailogSearchUserManger,
+	},
+	setup(prop, { emit }) {
+		const isShowDialog = ref(false);
+		const ruleFormRef = ref<FormInstance>();
+		const ruleForm = ref({
+			approveId: '',
+			workName: '', // 审批名称
+			title: '', //审批标题
+			approvePersonId: '', //
+			approvePersonName: '', // 审批人
+			approveStatus: 2, //审批状态
+			relateType: 1, //业务类型
+			approveResult: false, //审批结果
+			approveMemo: '', //审批意见
+			relateId: '',
+			twoWorkName: '',
+			twoTitle: '',
+			twoApprovePersonId: '',
+			twoApprovePersonName: '',
+		});
+		const titles = ref();
+		const disabled = ref();
+		const uid = ref();
+		// 打开弹窗
+		const openDialog = (title: string, approveId: number, type: boolean, id: number) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			disabled.value = type;
+
+			uid.value = approveId;
+			if (title == '查看审批' || title == '审批') {
+				emergencyPlanApi()
+					.approvalProcessEmergencyPlan(approveId)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ruleForm.value = res.data.data;
+							ruleForm.value.relateId = id;
+						}
+					});
+			}
+		};
+		const submitForm = async () => {
+			console.log(ruleForm.value);
+
+			ruleForm.value.workName = ruleForm.value.twoWorkName;
+			ruleForm.value.title = ruleForm.value.twoTitle;
+			ruleForm.value.approvePersonId = ruleForm.value.twoApprovePersonId;
+			ruleForm.value.approvePersonName = ruleForm.value.twoApprovePersonName;
+			ruleForm.value.relateType = 1;
+			isShowDialog.value = false;
+		  if(ruleForm.value.complete == false)  {
+			ruleForm.value.approveStatus=3
+		  }
+			delete ruleForm.value.gmtCreate
+			delete ruleForm.value.complete
+			delete ruleForm.value.submitPersonName
+
+			delete ruleForm.value.twoApprovePersonId
+			delete ruleForm.value.twoApprovePersonName
+			delete ruleForm.value.twoTitle
+			delete ruleForm.value.twoWorkName
+			emergencyPlanApi()
+				.editApprovalEmergencyPlan(ruleForm.value)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							showClose: true,
+							message: '修改成功',
+							type: 'success',
+						});
+						emit('myAdd', true);
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+						emit('myAdd', true);
+					}
+				});
+		};
+		const resetForm = () => {
+			isShowDialog.value = false;
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDailog();
+		};
+		//回显
+		const onUser = (e: any) => {
+			ruleForm.value.twoApprovePersonId = e[0].uid;
+			ruleForm.value.twoApprovePersonName = e[0].realName;
+		};
+		const typeChang = () => {
+			console.log('tag', ruleForm);
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			Search,
+			submitForm,
+			openUser,
+			userRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			titles,
+			disabled,
+			emit,
+			isShowDialog,
+			ruleFormRef,
+			ruleForm,
+			resetForm,
+			onUser,
+			typeChang,
+			uid,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/panManagement/component/approvalProcess.vue b/src/views/contingencyManagement/panManagement/component/approvalProcess.vue
index e69de29..209c51a 100644
--- a/src/views/contingencyManagement/panManagement/component/approvalProcess.vue
+++ b/src/views/contingencyManagement/panManagement/component/approvalProcess.vue
@@ -0,0 +1,196 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog title="查看审批流程" v-model="isShowDialog" width="60%" draggable :fullscreen="full">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-row :gutter="35">
+				<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+					<el-table
+						:data="tableData"
+						style="width: 100%; margin-top: 15px"
+						ref="multipleTableRef"
+						:model="formInline"
+						:header-cell-style="{ background: '#f6f7fa', color: '#909399' }"
+					>
+						<el-table-column prop="workName" label="审批人" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column prop="title" label="审批标题" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column prop="approvePersonName" label="编写人" show-overflow-tooltip sortable></el-table-column>
+						<el-table-column prop="approveMemo" label="审批意见" show-overflow-tooltip sortable></el-table-column>
+					</el-table>
+				</el-col>
+			</el-row>
+			<div class="pages">
+				<el-pagination
+					v-if="tableData.length == 0 ? false : true"
+					v-model:currentPage="pageIndex"
+					v-model:page-size="pageSize"
+					:page-sizes="[10, 20, 30]"
+					:pager-count="5"
+					class="mt15"
+					background
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="onHandleSizeChange"
+					@current-change="onHandleCurrentChange"
+				/>
+			</div>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="onCancel">取消</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, reactive, defineComponent, onMounted } from 'vue';
+
+import type { FormInstance } from 'element-plus';
+import {
+	// ElMessageBox,
+	ElMessage,
+} from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import { emergencyPlanApi } from '../../../../api/contingencyManagement/emergencyPlan';
+export default defineComponent({
+	name: 'abolishLibrary',
+	components: {},
+	setup(prop, { emit }) {
+		// 列表参数
+		const listQuery = reactive({
+			pageIndex: 1,
+			pageSize: 10,
+			searchParams: {
+				relateType: 1,
+				relateId: '',
+				startTime: '',
+				endTime: '',
+			},
+		});
+		// 定义表格数据
+		const tableData = ref([]);
+
+		// 列表数据请求
+		const uid = ref();
+		const openDialog = async (id: number) => {
+			isShowDialog.value = true;
+      listQuery.searchParams.relateId=id
+			uid.value = id;
+			let res = await emergencyPlanApi().processEmergencyPlan(listQuery);
+			if (res.data.code === '200') {
+				tableData.value = res.data.data;
+				pageIndex.value = res.data.pageIndex;
+				pageSize.value = res.data.pageSize;
+				total.value = res.data.total;
+			} else {
+				ElMessage({
+					showClose: true,
+					type: 'error',
+					message: res.data.msg,
+				});
+			}
+		};
+
+		const isShowDialog = ref(false);
+
+		const ruleFormRef = ref<FormInstance>();
+		// 打开弹窗
+		// const openDialog = () => {
+		//   isShowDialog.value = true;
+		// };
+		// 关闭弹窗
+		const closeDialog = () => {
+			isShowDialog.value = false;
+		};
+		// 取消
+		const onCancel = () => {
+			closeDialog();
+		};
+		// 分页
+		const pageIndex = ref();
+		const pageSize = ref();
+		const total = ref();
+		// 分页改变
+		const handleSizeChange = (val: number) => {
+			listQuery.pageSize = val;
+		};
+		// 分页未改变
+		const handleCurrentChange = (val: number) => {
+			listQuery.pageIndex = val;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			closeDialog,
+			isShowDialog,
+			onCancel,
+			tableData,
+			Search,
+			ruleFormRef,
+			pageIndex,
+			pageSize,
+			handleSizeChange,
+			handleCurrentChange,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			listQuery,
+			total,
+			emit,
+			uid,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+//分页
+.pages {
+	display: flex;
+	justify-content: flex-end;
+}
+::v-deep .el-pagination .el-pager li {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination .el-pager li.is-active {
+	background-color: #409eff;
+	color: #fff;
+}
+::v-deep .el-pagination .btn-prev {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+::v-deep .el-pagination button:disabled {
+	color: #c0c4cc;
+}
+::v-deep .el-pagination .btn-next {
+	margin: 0 5px;
+	background-color: #f4f4f5;
+	color: #606266;
+	min-width: 30px;
+	border-radius: 2px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/panManagement/component/initiateApproval.vue b/src/views/contingencyManagement/panManagement/component/initiateApproval.vue
index e69de29..eb2afa2 100644
--- a/src/views/contingencyManagement/panManagement/component/initiateApproval.vue
+++ b/src/views/contingencyManagement/panManagement/component/initiateApproval.vue
@@ -0,0 +1,159 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog title="发起审批" v-model="isShowDialog" width="40%" draggable :fullscreen="full" :close-on-click-modal="false">
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" size="default" label-width="120px">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批名称" prop="workName">
+							<el-input v-model="ruleForm.workName" placeholder="请填写审批名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批标题" prop="title">
+							<el-input v-model="ruleForm.title" placeholder="请填写审批名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="审批人" prop="approvePersonId">
+							<el-input v-model="ruleForm.approvePersonName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm" size="default">关闭</el-button>
+					<el-button size="default" type="primary" @click="submitForm">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<DailogSearchUserManger ref="userRef" @SearchUser="onUser" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent } from 'vue';
+
+import type { FormInstance } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUserManger from '/@/components/DailogSearchUserManger/index.vue';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		DailogSearchUserManger,
+	},
+	setup(prop, { emit }) {
+		const isShowDialog = ref(false);
+		const ruleFormRef = ref<FormInstance>();
+		const ruleForm = ref({
+			workName: '', // 审批名称
+			title: '', //审批标题
+			approvePersonId: '',
+			approvePersonName: '',
+			approveStatus: 2,
+			relateType: 1,
+			relateId: '',
+		});
+		const titles = ref();
+
+		// 打开弹窗
+		const openDialog = (title: string, id: number) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			ruleForm.value.relateId = id;
+			uid.value = id;
+		};
+		const uid = ref();
+		const submitForm = async () => {
+			isShowDialog.value = false;
+
+			emergencyPlanApi()
+				.approvalEmergencyPlan(ruleForm.value)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('myAdd', true);
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+						emit('myAdd', true);
+					}
+				});
+		};
+		const resetForm = () => {
+			isShowDialog.value = false;
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDailog();
+		};
+		//回显
+		const onUser = (e: any) => {
+			ruleForm.value.approvePersonId = e[0].uid;
+			ruleForm.value.approvePersonName = e[0].realName;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			Search,
+			submitForm,
+			openUser,
+			userRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			titles,
+			emit,
+			isShowDialog,
+			ruleFormRef,
+			ruleForm,
+			resetForm,
+			onUser,
+			uid,
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/panManagement/component/openAdd.vue b/src/views/contingencyManagement/panManagement/component/openAdd.vue
index e69de29..4114bb7 100644
--- a/src/views/contingencyManagement/panManagement/component/openAdd.vue
+++ b/src/views/contingencyManagement/panManagement/component/openAdd.vue
@@ -0,0 +1,471 @@
+<template>
+	<div class="system-edit-user-container">
+		<el-dialog
+			:title="titles"
+			v-model="isShowDialog"
+			width="50%"
+			draggable
+			:fullscreen="full"
+			:close-on-click-modal="false"
+			@close="resetForm(ruleFormRef)"
+		>
+			<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+			<el-form ref="ruleFormRef" :model="ruleForm" size="default" label-width="120px" :disabled="disabled">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="预案名称" prop="name">
+							<el-input v-model="ruleForm.name" placeholder="请填写队伍名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="适用部门" prop="responsibleDepartment">
+							<el-tree-select
+								v-model="responsibleDepartment"
+								:data="newTreeList"
+								class="w100"
+								clearable
+								:props="propse"
+								multiple
+								:render-after-expand="false"
+								check-strictly
+								check-on-click-node
+								placeholder="请选择"
+								@change="changeDepartment"
+							/>
+							<el-divider />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="预案类型" prop="type">
+							<el-select v-model="ruleForm.type" class="w100" placeholder="请选择">
+								<el-option label="综合应急预案" value="1"></el-option>
+								<el-option label="现场处置方案" value="2"></el-option>
+								<el-option label="专项应急预案" value="3"></el-option>
+								<el-option label="其他预案" value="4"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="危险源关联" prop="associatedDanger">
+							<el-select v-model="ruleForm.associatedDanger" class="w100" placeholder="请选择">
+								<el-option label="是" :value="false"></el-option>
+								<el-option label="否" :value="true"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="预案级别" prop="level">
+							<el-select v-model="ruleForm.level" class="w100" placeholder="请选择">
+								<el-option label="公司级" value="1"></el-option>
+								<el-option label="分厂级" value="2"></el-option>
+								<el-option label="车间级" value="3"></el-option>
+							</el-select>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="编写人" prop="authorId">
+							<el-input v-model="ruleForm.authorName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="编写部门" prop="authorDeptId">
+							<el-tree-select
+								v-model="ruleForm.authorDeptId"
+								:data="newTreeList"
+								class="w100"
+								:props="propse"
+								clearable
+								:render-after-expand="false"
+								placeholder="请选择"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="发布实施日期" prop="releaseDate">
+							<el-date-picker
+								v-model="ruleForm.releaseDate"
+								type="datetime"
+								class="w100"
+								placeholder="选择日期时间"
+								value-format="YYYY-MM-DD HH:mm:ss"
+							/>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+						<el-form-item label="应急队伍" prop="emergencyTeam">
+							<el-input v-model="ruleForm.teamName" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="daiInpt(0)" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="相关附件">
+							<uploaderFile :fileList="fileList" :systemName="'EMERGENCY'" :disabled="disabled"
+										  @successUploader="successUploader"></uploaderFile>
+						</el-form-item>
+					</el-col>
+					<!--          <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
+					<!--            <el-form-item label="区域名称" prop="areaName">-->
+					<!--              <el-input-->
+					<!--                  v-model="ruleForm.areaName"-->
+					<!--                  placeholder="请选择"-->
+					<!--                  class="input-with-select"-->
+					<!--              >-->
+					<!--                <template #append>-->
+					<!--                  <el-button :icon="Search" @click="regionsDialog"/>-->
+					<!--                </template>-->
+					<!--              </el-input>-->
+					<!--            </el-form-item>-->
+					<!--          </el-col>-->
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+					<el-button size="default" type="primary" v-if="disabled == true ? false : true" @click="submitForm(titles, ruleFormRef)">确定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+		<CheckTemplate ref="Shows" @SearchUser="SearchUser" />
+		<DailogSearchUserManger ref="userRef" @SearchUser="onUser" />
+		<RegionsDialog ref="openRef" />
+	</div>
+</template>
+
+<script lang="ts">
+import { ref, defineComponent, onMounted } from 'vue';
+
+import type { UploadUserFile, FormInstance } from 'element-plus';
+import { ElMessage } from 'element-plus';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearchUserManger from '/@/components/DailogSearchUserManger/index.vue';
+import CheckTemplate from '/@/components/checkTemplate/index.vue';
+import RegionsDialog from '/@/components/regionsDialog/index.vue';
+import { emergencyPlanApi } from '/@/api/contingencyManagement/emergencyPlan';
+import { goalManagementApi } from '/@/api/goalManagement';
+import uploaderFile from '/@/components/uploaderFile/index.vue';
+export default defineComponent({
+	name: 'openAdd',
+	components: {
+		CheckTemplate,
+		DailogSearchUserManger,
+		RegionsDialog,
+		uploaderFile
+	},
+	setup(prop, { emit }) {
+		const isShowDialog = ref(false);
+		const ruleFormRef = ref<FormInstance>();
+		const ruleForm = ref({
+			name: '', // 预案名称
+			type: '', //预案类型
+			associatedDanger: '', // 危险源关联
+			level: '', // 预案级别
+			authorUid: '', // 编写人
+			authorName: '',
+			authorDeptId: '', // 编写部门
+			releaseDate: '', // 发布实施日期
+			fileList: [],
+			areaList: [], //区域列表
+			teamList: [],
+			// teamId: '', //应急队伍
+			deptList: [],
+		});
+		const titles = ref();
+		const disabled = ref();
+
+		// 打开弹窗
+		const openDialog = (title: string, id: number, type: boolean) => {
+			isShowDialog.value = true;
+			titles.value = title;
+			disabled.value = type;
+			if (title == '查看应急预案管理' || title == '修改应急预案管理') {
+				emergencyPlanApi()
+					.seeEmergencyTeam(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ruleForm.value = res.data.data;
+							ruleForm.value.teamName = ''
+							responsibleDepartment.value = []
+							if(res.data.data.teamList){
+								for(var a = 0;a<res.data.data.teamList.length;a++){
+									ruleForm.value.teamName+=res.data.data.teamList[a].teamName+';'
+								}
+							}
+							if(res.data.data.deptList){
+								for(var a = 0;a<res.data.data.deptList.length;a++){
+
+									responsibleDepartment.value.push(res.data.data.deptList[a].departmentId)
+								}
+							}
+							fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
+							initFileListData()
+						}
+					});
+			}
+		};
+		const initFileListData = async () => {
+			for(var a = 0;a<fileList.value.length;a++){
+				fileList.value[a].name = fileList.value[a].fileName
+			}
+		}
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			fileList.value = list
+			const formFileList = []
+			for(var a = 0;a<fileList.value.length;a++){
+				formFileList.push(
+						{
+							fileName:fileList.value[a].fileName,
+							fileUrl:''
+						}
+				)
+			}
+			ruleForm.value.fileList = formFileList
+		}
+		//日期选择器
+		const releaseDate = ref('');
+		// 上传附件
+		const fileList = ref([]);
+		//el-tree-select回显
+		const propse = {
+			label: 'depName',
+			children: 'children',
+		};
+		const newTreeList = [];
+		//得到部门树
+		const department = async () => {
+			await goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+						getTreeList(res.data.data, newTreeList);
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		// 递归树状数据且修改字段名
+		const getTreeList = (treeList, newTreeList) => {
+			treeList.map((c) => {
+				let tempData = {
+					depName: c.depName,
+					value: c.depId,
+					children: [],
+				};
+				if (c.children && c.children.length > 0) {
+					tempData.children = [];
+					getTreeList(c.children, tempData.children);
+				}
+				newTreeList.push(tempData);
+			});
+		};
+		onMounted(() => {
+			department();
+		});
+		const changeDepartment = (e) => {
+			var temList = [];
+			for (var a = 0; a < e.length; a++) {
+				temList.push({
+          departmentId: e[a],
+				});
+			}
+			ruleForm.value.deptList = temList;
+			console.log(ruleForm);
+		};
+		//定义树形下拉框
+		const responsibleDepartment = ref([]);
+		const data = ref();
+
+		const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+			if(!ruleForm.value.fileList){
+				ruleForm.value.fileList = []
+			}
+			if (title == '新建应急预案管理') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						delete ruleForm.value.teamName
+						emergencyPlanApi()
+							.addEmergencyPlan(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+			} else if (title == '修改应急预案管理') {
+				if (!formEl) return;
+				await formEl.validate((valid, fields) => {
+					if (valid) {
+						isShowDialog.value = false;
+						delete ruleForm.value.teamName
+						emergencyPlanApi()
+							.editEmergencyTeam(ruleForm.value)
+							.then((res) => {
+								if (res.data.code == 200) {
+									ElMessage({
+										showClose: true,
+										message: '修改成功',
+										type: 'success',
+									});
+									emit('myAdd', true);
+								} else {
+									ElMessage({
+										showClose: true,
+										message: res.data.msg,
+										type: 'error',
+									});
+									emit('myAdd', true);
+								}
+								formEl.resetFields();
+							});
+					} else {
+						console.log('error submit!', fields);
+					}
+				});
+				formEl.resetFields();
+				ruleForm.value = {
+					name: '', // 预案名称
+					type: '', //预案类型
+					associatedDanger: '', // 危险源关联
+					level: '', // 预案级别
+					authorUid: '', // 编写人
+					authorName: '',
+					authorDeptId: '', // 编写部门
+					releaseDate: '', // 发布实施日期
+					fileList: [],
+					// teamId: '', //应急队伍ID
+					areaList: [], //区域列表
+					teamList: [],
+					deptList: [],
+				};
+			}
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			isShowDialog.value = false;
+			if (!formEl) return;
+			formEl.resetFields();
+			ruleForm.value = {};
+			fileList.value = []
+		};
+		// 应急队伍弹窗
+		const Shows = ref();
+		const daiInpt = (data: any) => {
+			Shows.value.openDailog(data);
+		};
+		const SearchUser = (val: any) => {
+			let arr = [];
+			ruleForm.value.teamList = [];
+			for (let i = 0; i < val.length; i++) {
+				arr.push(val[i].teamName);
+				ruleForm.value.teamList.push({
+					teamId: val[i].id,
+				});
+			}
+			ruleForm.value.teamName = arr.toString();
+		};
+		// 选择区域弹窗
+		const openRef = ref();
+		const regionsDialog = () => {
+			openRef.value.openDailog();
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDailog();
+		};
+		//回显
+		const onUser = (e: any) => {
+			ruleForm.value.authorUid = e[0].uid;
+			ruleForm.value.authorName = e[0].realName;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			openDialog,
+			fileList,
+			responsibleDepartment,
+			data,
+			Search,
+			releaseDate,
+			// treeSelect,
+			// trees,
+			propse,
+			department,
+			daiInpt,
+			Shows,
+			SearchUser,
+			submitForm,
+			openUser,
+			userRef,
+			regionsDialog,
+			openRef,
+			toggleFullscreen,
+			FullScreen,
+			full,
+			titles,
+			disabled,
+			emit,
+			isShowDialog,
+			ruleFormRef,
+			ruleForm,
+			resetForm,
+			onUser,
+			newTreeList,
+			changeDepartment,
+			successUploader,
+			initFileListData
+		};
+	},
+});
+</script>
+<style scoped lang="scss">
+.textarea {
+	height: 168px !important;
+}
+.textarea ::v-deep .el-textarea__inner {
+	height: 168px !important;
+}
+::v-deep .el-table__cell {
+	font-weight: 400;
+}
+.el-divider--horizontal {
+	height: 0;
+	margin: 0;
+	border-top: transparent;
+}
+.el-select {
+	width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/panManagement/component/startUp.vue b/src/views/contingencyManagement/panManagement/component/startUp.vue
index e69de29..49f5500 100644
--- a/src/views/contingencyManagement/panManagement/component/startUp.vue
+++ b/src/views/contingencyManagement/panManagement/component/startUp.vue
@@ -0,0 +1,160 @@
+<template>
+  <div class="system-edit-user-container">
+    <el-dialog
+        :title="titles"
+        v-model="isShowDialog"
+        width="30%"
+        draggable
+        :fullscreen="full"
+    >
+      <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+      <el-form :model="ruleForm" ref="ruleFormRef" label-width="80px">
+        <el-form-item label="备注" >
+          <el-input v-model="ruleForm.remark" type="textarea" autocomplete="off" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+				<span class="dialog-footer">
+					<el-button @click="resetForm(ruleFormRef)" size="default">取消</el-button>
+          <el-button size="default" type="primary" @click="submitForm(titles,ruleFormRef)">确定</el-button>
+				</span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script lang="ts">
+import {
+  ref,
+  defineComponent
+} from 'vue';
+
+import type {
+  FormInstance,
+} from 'element-plus'
+import { ElMessage } from 'element-plus';
+import {
+  Search,
+  FullScreen
+} from '@element-plus/icons-vue'
+import {emergencyPlanLogApi} from "/@/api/contingencyManagement/emergencyPlanLog";
+
+export default defineComponent({
+  name: 'openAdd',
+  components: {
+  },
+  setup(prop, {emit}) {
+    const isShowDialog = ref(false);
+    const ruleFormRef = ref<FormInstance>();
+
+    const ruleForm = ref({
+      // id: id,
+      remark: '',
+    })
+    const titles = ref();
+    const disabled = ref();
+    // 打开弹窗
+    // const openDialog = (title: string ,id: number,) => {
+    //   isShowDialog.value = true;
+    //   titles.value = title;
+    //   if (title == '启动') {
+    //     emergencyPlanLogApi()
+    //     .seeEmergencyPlanLog(id)
+    //     .then((res) => {
+    //       if (res.data.code == 200) {
+    //         ruleForm.value = res.data.data;
+    //       }
+    //     });
+    //   }
+    // };
+    const openDialog = (title: string) => {
+      isShowDialog.value = true;
+      titles.value = title;
+    };
+    const submitForm = async (title: string, formEl: FormInstance | undefined) => {
+      if (title == '启动') {
+        if (!formEl) return;
+        await formEl.validate((valid, fields) => {
+          if (valid) {
+            isShowDialog.value = false;
+            emergencyPlanLogApi()
+                .addEmergencyPlanLog(ruleForm.value)
+                .then((res) => {
+                  if (res.data.code == 200) {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'success',
+                    });
+                    emit('myAdd', true);
+                  } else {
+                    ElMessage({
+                      showClose: true,
+                      message: res.data.msg,
+                      type: 'error',
+                    });
+                    emit('myAdd', true);
+                  }
+                  formEl.resetFields();
+                });
+            ruleForm.value = {
+              // id: id,
+              remark: '',
+            }
+          } else {
+            console.log('error submit!', fields);
+          }
+        });
+      }
+    };
+    const resetForm = (formEl: FormInstance | undefined) => {
+      isShowDialog.value = false;
+      if (!formEl) return;
+      formEl.resetFields();
+    };
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      openDialog,
+      Search,
+      toggleFullscreen,
+      FullScreen,
+      full,
+      titles,
+      emit,
+      isShowDialog,
+      ruleFormRef,
+      ruleForm,
+      submitForm,
+      disabled,
+      resetForm,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.textarea{
+  height: 168px!important;
+}
+.textarea ::v-deep .el-textarea__inner{
+  height: 168px!important;
+}
+::v-deep .el-table__cell {
+  font-weight: 400;
+}
+.el-divider--horizontal{
+  height: 0;
+  margin: 0;
+  border-top: transparent;
+}
+.el-select{
+  width: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/panManagement/component/upData.vue b/src/views/contingencyManagement/panManagement/component/upData.vue
index e69de29..cc3e2d0 100644
--- a/src/views/contingencyManagement/panManagement/component/upData.vue
+++ b/src/views/contingencyManagement/panManagement/component/upData.vue
@@ -0,0 +1,125 @@
+<template>
+  <el-dialog
+      v-model="dialogVisible"
+      title="导入Excel"
+      width="50%"
+      draggable
+      :fullscreen="full"
+  >
+    <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+    <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 size="default">下载模板</el-button>
+      <el-button size="default" type="primary">点击上传</el-button>
+      <template #tip>
+        <div class="el-upload__tip">
+          只允许导入“xls”或“xlsx”格式文件!
+        </div>
+      </template>
+    </el-upload>
+  </el-dialog>
+</template>
+<script lang="ts">
+import { ref,
+  defineComponent,
+} from "vue";
+import {
+  ElMessage,
+  ElMessageBox
+} from "element-plus";
+import type {
+  UploadProps,
+  UploadUserFile,
+} from "element-plus";
+import {
+  FullScreen
+} from '@element-plus/icons-vue'
+export default defineComponent({
+  setup() {
+    let dialogVisible =ref<boolean>(false)
+    const fileList = ref<UploadUserFile[]>([
+      // {
+      //   name: "element-plus-logo.svg",
+      //   url: "https://element-plus.org/images/element-plus-logo.svg",
+      // },
+      // {
+      //   name: "element-plus-logo2.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(
+          `Cancel the transfert of ${uploadFile.name} ?`
+      ).then(
+          () => true,
+          () => false
+      );
+    };
+    // 打开弹窗
+    const openDialog = (type:string,value:any,projectList: any,projectId:string) => {
+      dialogVisible.value=true
+    }
+    //全屏
+    const full = ref(false);
+    const toggleFullscreen = () => {
+      if (full.value == false) {
+        full.value = true;
+      } else {
+        full.value = false;
+      }
+    };
+    return {
+      dialogVisible,
+      fileList,
+      handleRemove,
+      handlePreview,
+      handleExceed,
+      beforeRemove,
+      openDialog,
+      toggleFullscreen,
+      FullScreen,
+      full,
+    };
+  },
+});
+</script>
+<style scoped lang="scss">
+.el-upload__tip{
+  margin-left: 100px;
+  margin-top: 20px;
+}
+::v-deep .el-dialog__header{
+  border-bottom: 1px solid #e8e8e8;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/processForm/component/formInformationTop.vue b/src/views/contingencyManagement/processForm/component/formInformationTop.vue
index e69de29..ef75063 100644
--- a/src/views/contingencyManagement/processForm/component/formInformationTop.vue
+++ b/src/views/contingencyManagement/processForm/component/formInformationTop.vue
@@ -0,0 +1,144 @@
+<template>
+    <el-form ref="form" :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" style="padding: 0 20px">
+			<el-tab-pane label="考核指标" name="1">
+				<el-table :data="tableData" style="width: 100%">
+					<el-table-column align="center" type="index" label="序号" width="70" />
+					<el-table-column align="center" prop="date" label="责任部门" />
+					<el-table-column align="center" prop="name" label="考核指标" />
+					<el-table-column align="center" prop="address" label="制定部门" />
+					<el-table-column align="center" prop="address" label="制定日期" />
+					<el-table-column align="center"  label="检查值">
+						<template #default>
+                         <el-input v-model="form.name" placeholder=""></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="address" label="检查人" />
+					<el-table-column align="center" prop="address" label="检查时间" />
+				</el-table>
+				<div class="tiao">
+                 <div class="typeS">审批</div>
+				</div>
+				<el-row style="padding:20px 0">
+					<el-col :span="6" style="text-align:right">一级审批:</el-col>
+					<el-col :span="18">同意</el-col>
+				</el-row>
+				<el-row style="padding:0 0 20px 0">
+					<el-col :span="6"></el-col>
+					<el-col :span="18"><span class="logoColor">同意</span><span style="margin-right: 8px;">杜建喜</span><span>2021-05-24 04:47:42</span></el-col>
+				</el-row>
+			</el-tab-pane>
+		</el-tabs>
+</template>
+<script lang="ts">
+import { defineComponent,ref,reactive } from 'vue'
+
+export default defineComponent({
+    setup() {
+        	const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+        	const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+        const activeName = ref('1');
+        return{
+            form,
+            tableData,
+            activeName
+        }
+    },
+})
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0 ;
+}
+</style>
diff --git a/src/views/contingencyManagement/processForm/component/formInformationTops.vue b/src/views/contingencyManagement/processForm/component/formInformationTops.vue
index e69de29..53eed6a 100644
--- a/src/views/contingencyManagement/processForm/component/formInformationTops.vue
+++ b/src/views/contingencyManagement/processForm/component/formInformationTops.vue
@@ -0,0 +1,312 @@
+<template>
+	<el-form ref="form" :model="form" label-width="120px">
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案名称">
+					<el-input v-model="form.name" placeholder="请填写预案名称"></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="适用部门">
+          <el-tree-select
+              class="select"
+              placeholder="请选择"
+              v-model="value"
+              :data="data"
+              :render-after-expand="false"
+              show-checkbox
+              multiple
+              clearable
+          />
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案类型">
+          <el-select class="select" v-model="form.region" placeholder="请选择">
+            <el-option label="综合应急预案" value="shanghai" />
+            <el-option label="现场处置方案" value="beijing" />
+            <el-option label="专项应急预案" value="shanghai" />
+            <el-option label="其它预案" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="危险源关联">
+          <el-select class="select" v-model="form.region" placeholder="请选择">
+            <el-option label="是" value="shanghai" />
+            <el-option label="否" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="预案级别">
+          <el-select class="select" v-model="form.region" placeholder="请选择">
+            <el-option label="公司及" value="shanghai" />
+            <el-option label="分厂级" value="beijing" />
+            <el-option label="车间级" value="beijing" />
+          </el-select>
+				</el-form-item>
+			</el-col>
+			<el-col :span="12">
+				<el-form-item label="编写人">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+          >
+            <template #append>
+              <el-button :icon="Search" @click="openUser"/>
+            </template>
+          </el-input>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="12">
+				<el-form-item label="编写部门"  placeholder="请选择">
+          <el-tree-select
+              class="select"
+              v-model="value2"
+              :data="dataSelect"
+              :render-after-expand="false"
+              multiple
+              check-strictly
+              check-on-click-node
+              clearable
+          />
+				</el-form-item>
+			</el-col>
+      <el-col :span="12">
+        <el-form-item label="发布实施日期">
+          <el-date-picker v-model="datetime" type="datetime" placeholder="选择日期时间" style="width: 100%" />
+        </el-form-item>
+      </el-col>
+		</el-row>
+    <el-row>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="应急队伍" prop="telephone" @click="daiInpt" >
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+          >
+            <template #append>
+              <el-button :icon="Search"/>
+            </template>
+          </el-input>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+        <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"
+              :on-change="handleChange"
+          >
+            <el-button type="primary"
+            >点击上传</el-button>
+            <template #tip>
+              <div class="el-upload__tip">
+                添加相关附件
+              </div>
+            </template>
+          </el-upload>
+        </el-form-item>
+      </el-col>
+      <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+        <el-form-item label="区域名称" prop="telephone">
+          <el-input
+              v-model="form.teamLeader"
+              placeholder="请选择"
+              class="input-with-select"
+          >
+            <template #append>
+              <el-button :icon="Search" @click="regionsDialog"/>
+            </template>
+          </el-input>
+        </el-form-item>
+      </el-col>
+    </el-row>
+	</el-form>
+  <checkTemplate ref="ShowRef"/>
+  <userSelections ref="userRef"/>
+  <RegionsDialog ref="openRef"/>
+</template>
+<script lang="ts">
+import {
+  defineComponent,
+  ref,
+  reactive
+} from 'vue';
+import {
+  Search
+} from '@element-plus/icons-vue'
+import UserSelections from "/@/components/userSelections/index.vue"
+import CheckTemplate from "/@/components/checkTemplate/index.vue"
+import RegionsDialog from "/@/components/regionsDialog/index.vue";
+export default defineComponent({
+  components: {
+    CheckTemplate,
+    UserSelections,
+    RegionsDialog,
+  },
+	setup() {
+		const form = reactive({
+			name: '',
+      value: '',
+      value2: '',
+      teamLeader: '',
+
+      // data: '',
+      // dataSelect: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+
+    // 可选择树形选择框
+    const value = ref()
+
+    const data = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '生产运行部',
+            children: [
+              {
+                value: '1-1-1',
+                label: '工艺二班',
+              },
+            ],
+          },
+        ],
+      }
+    ]
+    // 树形选择框
+    const value2 = ref()
+
+    const dataSelect = [
+      {
+        value: '1',
+        label: '广汇能源综合物流发展有限责任公司',
+        children: [
+          {
+            value: '1-1',
+            label: '生产运行部',
+            children: [
+              {
+                value: '1-1-1',
+                label: '工艺二班',
+              },
+            ],
+          },
+        ],
+      }
+    ]
+    // 应急队伍弹窗
+    const ShowRef=ref()
+    const daiInpt=()=>{
+      ShowRef.value.openDailog()
+    }
+    // 选择区域弹窗
+    const openRef=ref()
+    const regionsDialog=()=>{
+      openRef.value.openDailog()
+    }
+    // 打开编写人选择用户弹窗
+    const userRef = ref();
+    const openUser = () => {
+      userRef.value.openDialog();
+    };
+    // 日期选择
+    const datetime = ref('')
+		return {
+			form,
+      value,
+      data,
+      value2,
+      dataSelect,
+      openUser,
+      userRef,
+      Search,
+      ShowRef,
+      daiInpt,
+      openRef,
+      datetime,
+      regionsDialog,
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box {
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao {
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0;
+	position: relative;
+}
+.typeS {
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+	left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor {
+	background-color: #67c23a;
+	color: #fff;
+	padding: 5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns {
+	width: 100%;
+	padding: 20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+}
+.title2 {
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0;
+}
+.select{
+  width: 100%;
+}
+.select ::v-deep .el-select{
+  width: 100%;
+}
+</style>
diff --git a/src/views/contingencyManagement/processForm/component/lowerPlate.vue b/src/views/contingencyManagement/processForm/component/lowerPlate.vue
index e69de29..cbb82fb 100644
--- a/src/views/contingencyManagement/processForm/component/lowerPlate.vue
+++ b/src/views/contingencyManagement/processForm/component/lowerPlate.vue
@@ -0,0 +1,120 @@
+<template>
+	<div class="box">
+		<el-form ref="formS" :model="form" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="流程标题">
+						<el-input v-model="form.names" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="下级审批日期">
+						<el-date-picker v-model="form.date1" type="date" placeholder="下级审批日期" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+							<el-checkbox v-model="form.delivery" label="是否抄送" @change="typeChang"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.delivery">
+				<el-col :span="15">
+					<el-form-item label="抄送给" prop="resource">
+						<el-input v-model="form.resource" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+						<el-checkbox v-model="form.type" label="指定下一步处理者(不设置就使用默认处理人)"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.type">
+				<el-col :span="15">
+					<el-form-item label="指定" prop="desc">
+						<el-input v-model="form.desc" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+	</div>
+	<DailogSearchUser ref="ShowUser"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'
+import { Search } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus'
+export default defineComponent({
+	components:{DailogSearchUser},
+	setup() {
+		const formS=ref<FormInstance>()
+		let form = reactive({
+			names: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: "",
+			type: "",
+			resource: '',
+			desc: '',
+		});
+	    const typeChang=()=>{
+         console.log('tag',form)
+		}
+		const rules = reactive<FormRules>({
+  resource: [
+    {
+      type: 'array',
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ],
+  desc: [
+    {
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ]})
+  const ShowUser=ref()
+  const openDai =()=>{
+   ShowUser.value.openDailog()
+  }
+		return {
+			form,
+			rules,
+			formS,
+			typeChang,
+			ShowUser,
+			openDai,
+			Search,
+		};
+	},
+});
+</script>
+
+<style scoped>
+.box {
+	margin: 30px 0 100px 0;
+	background-color: #fff;
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+	padding: 20px;
+}
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/contingencyManagement/processForm/processForm.vue b/src/views/contingencyManagement/processForm/processForm.vue
index e69de29..98218a0 100644
--- a/src/views/contingencyManagement/processForm/processForm.vue
+++ b/src/views/contingencyManagement/processForm/processForm.vue
@@ -0,0 +1,137 @@
+<template>
+  <div class="system-user-container">
+	<h4 class="title">胡海涛2022-07-01 16:08:42发起了目标检查上报(检查)--检查</h4>
+	<div class="box">
+	<el-menu
+		:default-active="activeIndex"
+		class="el-menu-demo"
+		background-color="#ebeef5"
+		text-color="#fff"
+		active-text-color="#fff"
+		mode="horizontal"
+		@select="handleSelect"
+	>
+		<el-menu-item index="1">表单信息</el-menu-item>
+		<el-menu-item index="2">流程图</el-menu-item>
+	</el-menu>
+	<div v-if="activeIndex == 1" class="navType">
+		<formInformationTop v-if="false"></formInformationTop>
+		<formInformationTops></formInformationTops>
+	</div>
+	<div v-if="activeIndex == 2" class="navType" style="padding:20px 20px 0 20px">
+		<div class="title2">流程图</div>
+		<div style="width:100%;height:400px"></div>
+	</div>
+	</div>
+	<lowerPlate></lowerPlate>
+	<div class="btns">
+		<el-button type="primary">启动</el-button>
+	</div>
+  </div>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref,onMounted } from 'vue';
+import { useRouter } from 'vue-router';
+import formInformationTop from './component/formInformationTop.vue'
+import formInformationTops from './component/formInformationTops.vue'
+import lowerPlate from './component/lowerPlate.vue'
+export default defineComponent({
+	components:{lowerPlate,formInformationTop,formInformationTops},
+	setup() {
+		const activeIndex = ref('1');
+		const handleSelect = (key: string, keyPath: string[]) => {
+			// console.log(key, keyPath);
+			activeIndex.value = key;
+		};
+		const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+	
+		const router=useRouter()
+		const Type=onMounted(()=>{
+			// console.log("xxxxxxx",router)
+		})
+		
+		return {
+			activeIndex,
+			handleSelect,
+			form,
+			router,
+			Type
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+  padding: 15px;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+
+/*弹窗底部边框线*/
+::v-deep .el-dialog__footer{
+  border-top: 1px solid #e8e8e8;
+  border-radius: 0 0 4px 4px;
+}
+/*弹窗顶部边框线*/
+::v-deep .el-dialog__header {
+  border-bottom: 1px solid #e8e8e8;
+  margin-right: 0;
+  border-radius: 4px 4px 0 0;
+}
+</style>
diff --git a/src/views/facilityManagement/EquipmentStatistics/index.vue b/src/views/facilityManagement/EquipmentStatistics/index.vue
index e69de29..136eea1 100644
--- a/src/views/facilityManagement/EquipmentStatistics/index.vue
+++ b/src/views/facilityManagement/EquipmentStatistics/index.vue
@@ -0,0 +1,101 @@
+<template>
+	<div class="box">
+		<div class="title">设备设施统计</div>
+		<div ref="main" style="width: 100%; height: 400px"></div>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, onMounted, ref } from 'vue';
+import * as echarts from 'echarts';
+import { ElMessage } from 'element-plus';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+export default defineComponent({
+	setup() {
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentInfoStatistics()
+				.then((res) => {
+					if (res.data.code == 200) {
+						let arr = [];
+						arr = res.data.data;
+						let date = [];
+						for (let i = 0; i < arr.length; i++) {
+							if (arr[i].stopStatus == 1) {
+								date[0] = arr[i].count;
+							} else if (arr[i].stopStatus == 2) {
+								date[1] = arr[i].count;
+							}else if (arr[i].stopStatus == 3) {
+								date[2] = arr[i].count;
+							}else if (arr[i].stopStatus == 4) {
+								date[3] = arr[i].count;
+							}else if (arr[i].stopStatus == -1) {
+								date[4] = arr[i].count;
+							}
+						}
+						init(date);
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const main = ref();
+		const init = (data: any) => {
+			var myChart = echarts.init(main.value);
+			var option = {
+				tooltip: {},
+				grid: {
+					left: '3%',
+					right: '4%',
+					bottom: '5%',
+					containLabel: true,
+				},
+				xAxis: {
+					type: 'category',
+					data: ['停用 ', '在用', '维修 ', '报废', '超时未保养'],
+				},
+				yAxis: {
+					type: 'value',
+					name: '数量',
+					nameTextStyle: {
+						color: '#aaa',
+						nameLocation: 'start',
+					},
+				},
+				color: ['#6394f9'],
+				series: [
+					{
+						data: data,
+						type: 'bar',
+					},
+				],
+			};
+
+			myChart.setOption(option);
+		};
+		return {
+			init,
+			onMounted,
+			main,
+			listApi,
+		};
+	},
+});
+</script>
+<style scoped>
+.box {
+	background-color: #fff;
+	box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
+}
+.title {
+	font-size: 16px;
+	border-bottom: 1px solid #eee;
+	padding: 20px;
+}
+</style>
diff --git a/src/views/facilityManagement/InstrumentationInformation/index.vue b/src/views/facilityManagement/InstrumentationInformation/index.vue
index e69de29..9d64291 100644
--- a/src/views/facilityManagement/InstrumentationInformation/index.vue
+++ b/src/views/facilityManagement/InstrumentationInformation/index.vue
@@ -0,0 +1,391 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="ruleForm.searchParams.qName" placeholder="装置设施名称" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-row>
+			<el-col :span="4">
+				<el-input v-model="filterText" style="height: 30px" placeholder="请输入关键字" />
+				<div class="tree">
+					<!-- <el-tree ref="treeRef" class="filter-tree" :data="data" :props="props" :filter-node-method="filterNode" /> -->
+					<el-tree ref="treeRef" :data="data" :props="props" @node-click="handleNodeClick" :filter-node-method="filterNode" />
+				</div>
+			</el-col>
+			<el-col :span="20">
+				<div class="btns">
+					<div>
+						<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+						 <el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen"
+									@click="openD('修改', deletAll[0])">修改</el-button>
+						<el-button size="default" :disabled="danger" type="danger" :icon="Delete" @click="onDeleteAll" plain>删除</el-button>
+					</div>
+					<div>
+						<!-- <el-button size="default" :icon="Upload" @click="openUp"></el-button>
+						<el-button size="default" :icon="Download"></el-button>
+						<el-button size="default" :icon="Refresh"></el-button> -->
+					</div>
+				</div>
+				<div style="padding-left: 10px">
+					<el-table ref="multipleTableRef" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default="scope">
+								<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClicks" style="margin: 0 5%">
+									<el-tab-pane label="设备保养" name="first">
+										<el-table ref="multipleTableRef" :data="scope.row.takecareDetailList" style="width: 100%">
+											<el-table-column property="takecareMemo" align="center" label="保养情况" sortable />
+											<el-table-column property="leadingPersonName" align="center" label="保养负责人" sortable />
+											<el-table-column property="takecareDate" align="center" :formatter="timeDate" label="保养日期" sortable />
+											<el-table-column property="leadingPersonDepartmentName" align="center" label="保养负责人单位" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备检查" name="second"
+										><el-table ref="multipleTableRef" :data="scope.row.checkDetailList" style="width: 100%">
+											<el-table-column property="leadingPersonName" align="center" label="检查人" sortable />
+											<el-table-column property="createTime" align="center" :formatter="timeDate" label="检查日期" sortable />
+											<el-table-column property="name" align="center" label="检查人部门" sortable />
+											<el-table-column property="takecareMemo" align="center" label="检查结果" sortable />
+											<el-table-column property="name" align="center" label="检查状态" sortable /> </el-table
+									></el-tab-pane>
+									<el-tab-pane label="设备检测" name="third">
+										<el-table ref="multipleTableRef" :data="scope.row.testDetailList" style="width: 100%">
+											<el-table-column property="testPersonName" align="center" label="检测人" sortable />
+											<el-table-column property="testDate" align="center" :formatter="timeDate" label="检测日期" sortable />
+											<el-table-column property="testPersonDepartmentName" align="center" label="检测人单位" sortable />
+											<el-table-column property="testMemo" align="center" label="检测内容" sortable />
+											<el-table-column align="center" label="检测结果">
+												<template #default="scope">
+													<span v-if="scope.row.testResult == 1">成功</span>
+													<span v-if="scope.row.testResult == 2">失败</span>
+												</template>
+											</el-table-column>
+											<el-table-column property="testStatus" align="center" label="检测状态" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备维修" name="fourth">
+										<el-table ref="multipleTableRef" :data="scope.row.repaireDetailList" style="width: 100%">
+											<el-table-column property="exceptionInfo" align="center" label="设施异常项" sortable />
+											<el-table-column align="center" label="维修状态">
+												<template #default="scope">
+													<span v-if="scope.row.repairStatus == 1">维修中</span>
+													<span v-if="scope.row.repairStatus == 2">已修好</span>
+												</template>
+											</el-table-column>
+											<el-table-column property="repairMemo" align="center" label="维修情况" sortable />
+											<el-table-column property="repairPersonName" align="center" label="维修负责人" sortable />
+											<el-table-column property="repairPersonDepartmentName" align="center" label="维修负责人单位" sortable />
+											<el-table-column property="repairStartDate" align="center" :formatter="timeDate" label="维修开始日期" sortable />
+											<el-table-column property="repairEndDate" align="center" :formatter="timeDate" label="维修结束日期" sortable />
+										</el-table>
+									</el-tab-pane>
+								</el-tabs>
+							</template>
+						</el-table-column>
+						<el-table-column property="qName" label="装置设施名称" align="center" sortable />
+						<el-table-column property="positionNum" align="center" label="装置设施位号" sortable />
+						<el-table-column property="qUsage" align="center" label="装置设施用途" sortable />
+						<el-table-column property="model" label="装置设施型号" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="equipmentTypeId" label="类型/类别外键" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setPart" label="设施部位" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4"
+							v-model:page-size="pageSize4"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total"
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+						/>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<!-- <updata ref="Show"></updata> -->
+		<Dailog ref="openAdd" @navAddorUpdata="onAddorUpdata"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, watch, onMounted } from 'vue';
+import { timeDate } from '/@/assets/index.ts';
+import updata from '/@/components/updata/updata.vue';
+import Dailog from '/@/components/equipmentDailog/Dailog.vue';
+import { ElTree, TabsPaneContext, ElMessage, ElMessageBox } from 'element-plus';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import { EditPen, View, Plus, Delete, Download, Refresh, Upload } from '@element-plus/icons-vue';
+interface Tree {
+	label: string;
+	children?: Tree[];
+}
+export default defineComponent({
+	components: { updata, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////名称
+				positionNum: '', ////位号
+				equipmentTypeId: '',
+				infoType: 0, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.positionNum = '';
+			ruleForm.searchParams.equipmentTypeId = '';
+			listApiTree()
+			listApi();
+		};
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentInfoList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title, false, id, 0);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr = [];
+			arr.push(id);
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr;
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		const filterText = ref('');
+		const treeRef = ref<InstanceType<typeof ElTree>>();
+		// 树形
+		const listApiTree = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		const props = {
+			label: 'typeName',
+			children: 'childList',
+			value: 'id',
+		};
+		watch(filterText, (val) => {
+			treeRef.value!.filter(val);
+		});
+
+		const filterNode = (value: string, data: Tree) => {
+			if (!value) return true;
+			return data.typeName.includes(value);
+		};
+		const handleNodeClick = (data: Tree) => {
+			ruleForm.searchParams.positionNum = data.sortNum;
+			ruleForm.searchParams.equipmentTypeId = data.id;
+			listApi();
+		};
+		const data = ref([]);
+		onMounted(() => {
+			listApiTree();
+		});
+		const handleClicks = (tab: TabsPaneContext, event: Event) => {
+			console.log(tab, event);
+		};
+
+		const activeName = ref('first');
+		// const Show=ref()
+		// const openUp=()=>{
+		// 	Show.value.openDialog()
+		// }
+		return {
+			handleNodeClick,
+			ruleForm,
+			timeDate,
+			resetForm,
+			listApi,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			listApiTree,
+			handleClicks,
+			filterText,
+			treeRef,
+			props,
+			filterNode,
+			data,
+			openAdd,
+			openD,
+			activeName,
+			Plus,
+			EditPen,
+			Delete,
+			Download,
+			Refresh,
+			View,
+			Upload,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.tree {
+	height: 750px;
+	background-color: #fff;
+	overflow: hidden;
+	overflow-y: auto;
+}
+.btns {
+	padding: 10px 0px 10px 10px;
+	display: flex;
+	justify-content: space-between;
+	background-color: #fff;
+}
+</style>
diff --git a/src/views/facilityManagement/ProductionEquipment/index.vue b/src/views/facilityManagement/ProductionEquipment/index.vue
index e69de29..70edf54 100644
--- a/src/views/facilityManagement/ProductionEquipment/index.vue
+++ b/src/views/facilityManagement/ProductionEquipment/index.vue
@@ -0,0 +1,390 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="ruleForm.searchParams.qName" placeholder="装置设施名称" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-row>
+			<el-col :span="4">
+			<el-input v-model="filterText" style="height: 30px" placeholder="请输入关键字" />
+				<div class="tree">
+					
+					<!-- <el-tree ref="treeRef" class="filter-tree" :data="data" :props="props" :filter-node-method="filterNode" /> -->
+					<el-tree ref="treeRef" :data="data" :props="props" @node-click="handleNodeClick" :filter-node-method="filterNode" />
+				</div>
+			</el-col>
+			<el-col :span="20">
+				<div class="btns">
+					<div>
+						<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+						 <el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen"
+									@click="openD('修改', deletAll[0])">修改</el-button>
+						<el-button size="default" :disabled="danger" type="danger" :icon="Delete" @click="onDeleteAll" plain>删除</el-button>
+					</div>
+					<div>
+						<!-- <el-button size="default" :icon="Upload" @click="openUp"></el-button>
+						<el-button size="default" :icon="Download"></el-button>
+						<el-button size="default" :icon="Refresh"></el-button> -->
+					</div>
+				</div>
+				<div style="padding-left: 10px">
+					<el-table ref="multipleTableRef" :data="tableData"  @selection-change="handleSelectionChange" style="width: 100%">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default="scope">
+								<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClicks" style="margin: 0 5%">
+									<el-tab-pane label="设备保养" name="first">
+										<el-table ref="multipleTableRef" :data="scope.row.takecareDetailList" style="width: 100%">
+											<el-table-column property="takecareMemo" align="center" label="保养情况" sortable />
+											<el-table-column property="leadingPersonName" align="center" label="保养负责人" sortable />
+											<el-table-column property="takecareDate" align="center" label="保养日期" sortable />
+											<el-table-column property="leadingPersonDepartmentName" align="center" label="保养负责人单位" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备检查" name="second"
+										><el-table ref="multipleTableRef" :data="scope.row.checkDetailList" style="width: 100%">
+											<el-table-column property="leadingPersonName" align="center" label="检查人" sortable />
+											<el-table-column property="createTime" align="center" label="检查日期" sortable />
+											<el-table-column property="name" align="center" label="检查人部门" sortable />
+											<el-table-column property="takecareMemo" align="center" label="检查结果" sortable />
+											<el-table-column property="name" align="center" label="检查状态" sortable /> </el-table
+									></el-tab-pane>
+									<el-tab-pane label="设备检测" name="third">
+										<el-table ref="multipleTableRef" :data="scope.row.testDetailList" style="width: 100%">
+											<el-table-column property="testPersonName" align="center" label="检测人" sortable />
+											<el-table-column property="testDate" align="center" label="检测日期" sortable />
+											<el-table-column property="testPersonDepartmentName" align="center" label="检测人单位" sortable />
+											<el-table-column property="testMemo" align="center" label="检测内容" sortable />
+											<el-table-column align="center" label="检测结果">
+												<template #default="scope">
+													<span v-if="scope.row.testResult == 1">成功</span>
+													<span v-if="scope.row.testResult == 2">失败</span>
+												</template>
+											</el-table-column>
+											<el-table-column property="testStatus" align="center" label="检测状态" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备维修" name="fourth">
+										<el-table ref="multipleTableRef" :data="scope.row.repaireDetailList" style="width: 100%">
+											<el-table-column property="exceptionInfo" align="center" label="设施异常项" sortable />
+											<el-table-column align="center" label="维修状态">
+												<template #default="scope">
+													<span v-if="scope.row.repairStatus == 1">维修中</span>
+													<span v-if="scope.row.repairStatus == 2">已修好</span>
+												</template>
+											</el-table-column>
+											<el-table-column property="repairMemo" align="center" label="维修情况" sortable />
+											<el-table-column property="repairPersonName" align="center" label="维修负责人" sortable />
+											<el-table-column property="repairPersonDepartmentName" align="center" label="维修负责人单位" sortable />
+											<el-table-column property="repairStartDate" align="center" label="维修开始日期" sortable />
+											<el-table-column property="repairEndDate" align="center" label="维修结束日期" sortable />
+										</el-table>
+									</el-tab-pane>
+								</el-tabs>
+							</template>
+						</el-table-column>
+						<el-table-column property="qName" label="装置设施名称" align="center" sortable />
+						<el-table-column property="positionNum" align="center" label="装置设施位号" sortable />
+						<el-table-column property="qUsage" align="center" label="装置设施用途" sortable />
+						<el-table-column property="model" label="装置设施型号" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="equipmentTypeId" label="类型/类别外键" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setPart" label="设施部位" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4"
+							v-model:page-size="pageSize4"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total"
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+						/>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<!-- <updata ref="Show"></updata> -->
+		<Dailog ref="openAdd" @navAddorUpdata="onAddorUpdata"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, watch, onMounted } from 'vue';
+import updata from '/@/components/updata/updata.vue';
+import Dailog from '/@/components/equipmentDailog/Dailog.vue';
+import { ElTree, TabsPaneContext, ElMessage, ElMessageBox } from 'element-plus';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import { EditPen, View, Plus, Delete, Download, Refresh, Upload } from '@element-plus/icons-vue';
+interface Tree {
+	label: string;
+	children?: Tree[];
+}
+export default defineComponent({
+	components: { updata, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////名称
+				positionNum: '', ////位号
+				equipmentTypeId:"",
+				infoType: 1, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.positionNum = '';
+			ruleForm.searchParams.equipmentTypeId = '';
+			listApiTree()
+			listApi();
+		};
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentInfoList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title,true,id,1);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		const filterText = ref('');
+		const treeRef = ref<InstanceType<typeof ElTree>>();
+		// 树形
+		const listApiTree = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value= res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		const props = {
+			label: 'typeName',
+			children: 'childList',
+			value: 'id',
+		}
+		watch(filterText, (val) => {
+			treeRef.value!.filter(val);
+		});
+
+		const filterNode = (value: string, data: Tree) => {
+			if (!value) return true;
+			return data.typeName.includes(value);
+		};
+       const handleNodeClick=(data: Tree)=>{
+			ruleForm.searchParams.equipmentTypeId=data.id
+			ruleForm.searchParams.equipmentTypeId = data.id;
+			listApi();
+	   }
+		const data=ref([])
+		onMounted(() => {
+			listApiTree();
+		});
+		const handleClicks = (tab: TabsPaneContext, event: Event) => {
+			console.log(tab, event);
+		};
+		
+		const activeName = ref('first');
+		// const Show=ref()
+		// const openUp=()=>{
+		// 	Show.value.openDialog()
+		// }
+		return {
+			handleNodeClick,
+			ruleForm,
+			resetForm,
+			listApi,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			listApiTree,
+			handleClicks,
+			filterText,
+			treeRef,
+			props,
+			filterNode,
+			data,
+			openAdd,
+			openD,
+			activeName,
+			Plus,
+			EditPen,
+			Delete,
+			Download,
+			Refresh,
+			View,
+			Upload,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.tree {
+	height: 750px;
+	background-color: #fff;
+	overflow: hidden;
+	overflow-y: auto;
+}
+.btns {
+	padding: 10px 0px 10px 10px;
+	display: flex;
+	justify-content: space-between;
+	background-color: #fff;
+}
+</style>
diff --git a/src/views/facilityManagement/deviceType/component/Dailog.vue b/src/views/facilityManagement/deviceType/component/Dailog.vue
index e69de29..ce4d7af 100644
--- a/src/views/facilityManagement/deviceType/component/Dailog.vue
+++ b/src/views/facilityManagement/deviceType/component/Dailog.vue
@@ -0,0 +1,198 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" @close="resetForm(ruleFormRef)" :title="titles" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" :disabled="disabled" ref="ruleFormRef" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="是否为设备内容" size="default" prop="isContent">
+						<el-select v-model="form.isContent" placeholder="请选择" style="width: 100%">
+							<el-option label="是" :value="1" />
+							<el-option label="否" :value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="父级编号" size="default" prop="parentId">
+						<el-tree-select clearable check-strictly="true" v-model="form.parentId" :data="data" :props="propst" class="w100" placeholder="请选择" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="类别名称" size="default" prop="typeName">
+						<el-input v-model="form.typeName" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="排列序列" size="default" prop="sortNum">
+						<el-input v-model.number="form.sortNum" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm(ruleFormRef)">关闭</el-button>
+				<el-button type="primary" @click="submitForm(ruleFormRef)">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import type { FormInstance, FormRules } from 'element-plus';
+import { FullScreen } from '@element-plus/icons-vue';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import { ElMessage } from 'element-plus';
+import { type } from 'os';
+export default defineComponent({
+	setup(prpos, { emit }) {
+		const dialogVisible = ref(false);
+		const form = ref({
+			isContent: '', ////是否为设备内容  1:是 2:否
+			typeName: '', ////类别名称
+			parentId: '', ////父级ID,如果没有父级,为0
+			isCheck: 0, ////是否检测  1:是 2:否
+			isVisit: 0, ////是否巡检 1:是 2:否
+			sortNum: '', //排列序列
+			// id: '', //设备类型ID ,更新时必填
+		});
+		const titles = ref();
+		const titleT = ref();
+		const disabled = ref(false);
+		const openDailog = (title: string, id: number) => {
+			listApi();
+			titleT.value = title;
+			dialogVisible.value = true;
+			titles.value = `${title}设备设施类型管理`;
+			if (title == '查看') {
+				disabled.value = true;
+				detail(id);
+			} else if (title == '修改') {
+				detail(id);
+			} else if (title == '添加') {
+				form.value.parentId = id;
+			}
+		};
+		const detail = (id: number) => {
+			facilityManagementApi()
+				.getequipmentTypeMngDetail(id)
+				.then((res) => {
+					if (res.data.code == 200) {
+						form.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		// 列表
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		const data = ref([]);
+		const propst = {
+			label: 'typeName',
+			children: 'childList',
+			value: 'id',
+		};
+		const ruleFormRef = ref<FormInstance>();
+		const rules = reactive<FormRules>({
+			isContent: [{ required: true, message: '是否为设备内容不能为空', trigger: 'change' }],
+			parentId: [],
+			typeName: [{ required: true, message: '类别名称不能为空', trigger: 'change' }],
+			sortNum: [
+				{ required: true, message: '排列序列不能为空', trigger: 'change' },
+				{ type: 'number', message: '请输入数字!', trigger: 'change' },
+			],
+		});
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					if (titleT.value == '新建') {
+						delete form.value.id;
+					}
+					facilityManagementApi()
+						.getequipmentTypeMngAddOrUpdate(form.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								dialogVisible.value = false;
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								emit('onAdd');
+								formEl.resetFields();
+							} else {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'error',
+								});
+							}
+						});
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+			disabled.value=false
+		};
+		const resetForm = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			formEl.resetFields();
+			dialogVisible.value = false;
+			disabled.value=false
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			titleT,
+			detail,
+			rules,
+			ruleFormRef,
+			listApi,
+			propst,
+			submitForm,
+			resetForm,
+			data,
+			disabled,
+			dialogVisible,
+			form,
+			titles,
+			openDailog,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/facilityManagement/deviceType/index.vue b/src/views/facilityManagement/deviceType/index.vue
index e69de29..11958ec 100644
--- a/src/views/facilityManagement/deviceType/index.vue
+++ b/src/views/facilityManagement/deviceType/index.vue
@@ -0,0 +1,130 @@
+<template>
+	<div class="box">
+		<el-button type="primary" :icon="Plus" @click="openD('新建', 0)" size="default">新建</el-button>
+		<el-table :data="tableData" style="width: 100%" row-key="id" :tree-props="propse">
+			<el-table-column align="center" label="是否为设备内容">
+				<template #default="scope">
+					<span v-if="scope.row.isContent == 1">是</span>
+					<span v-if="scope.row.isContent == 2">否</span>
+				</template>
+			</el-table-column>
+			<el-table-column align="center" label="巡检">
+				<template #default="scope">
+					<span v-if="scope.row.isVisit == 0">-</span>
+					<span v-if="scope.row.isVisit == 1">是</span>
+					<span v-if="scope.row.isVisit == 2">否</span>
+				</template>
+			</el-table-column>
+			<el-table-column align="center" label="检测">
+				<template #default="scope">
+					<span v-if="scope.row.isCheck == 0">-</span>
+					<span v-if="scope.row.isCheck == 1">是</span>
+					<span v-if="scope.row.isCheck == 2">否</span>
+				</template>
+			</el-table-column>
+			<el-table-column align="center" prop="typeName" label="类别名称" />
+			<el-table-column align="center" label="操作">
+				<template #default="scope">
+					<el-button type="primary" link :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+					<el-button type="primary" link :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+					<el-button type="primary" link :icon="Delete" @click="Deletes(scope.row.id)">删除</el-button>
+					<el-button type="primary" link :icon="CirclePlus" @click="openD('添加', scope.row.id)">添加下级设备设施类型管理</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<Dailog ref="Show" @onAdd="add"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, onMounted, ref } from 'vue';
+import { Plus, View, EditPen, Delete, CirclePlus } from '@element-plus/icons-vue';
+import Dailog from './component/Dailog.vue';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import { ElMessage,ElMessageBox } from 'element-plus';
+export default defineComponent({
+	components: { Dailog },
+	setup() {
+		// 列表
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+		// 删除
+		const Deletes = (id: number) => {
+			let arr = [];
+			arr.push(id);
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentTypeMngDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									showClose: true,
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		const add = () => {
+			listApi();
+		};
+		const tableData = ref();
+		const propse = {
+			children: 'childList',
+		};
+		const Show = ref();
+		const openD = (title: string, id: number) => {
+			Show.value.openDailog(title, id);
+		};
+		return {
+			propse,
+			add,
+			tableData,
+			Show,
+			Deletes,
+			openD,
+			listApi,
+			Plus,
+			View,
+			EditPen,
+			CirclePlus,
+			Delete,
+		};
+	},
+});
+</script>
+<style scoped>
+.box {
+	padding: 20px;
+	background-color: #fff;
+}
+</style>
diff --git a/src/views/facilityManagement/keyEquipment/index.vue b/src/views/facilityManagement/keyEquipment/index.vue
index e69de29..36c634d 100644
--- a/src/views/facilityManagement/keyEquipment/index.vue
+++ b/src/views/facilityManagement/keyEquipment/index.vue
@@ -0,0 +1,449 @@
+<template>
+    <div>
+        <el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+            <el-row>
+                <el-col :span="4">
+                    <el-form-item size="default">
+                        <el-input v-model="ruleForm.searchParams.name" placeholder="装置/部位名称"/>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="4">
+                    <el-form-item>
+                        <el-button size="default" type="primary" @click="listApi">查询</el-button>
+                        <el-button size="default" @click="resetForm">重置</el-button>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+        </el-form>
+        <el-row>
+            <el-col :span="4">
+                <el-input v-model="filterText" style="height: 30px" placeholder="请输入关键字"/>
+                <div class="tree">
+                    <!--					<el-input v-model="filterText" style="height: 30px" placeholder="Filter keyword" />-->
+                    <el-tree ref="treeRef" :data="data" :props="props" @node-click="handleNodeClick"
+                             :filter-node-method="filterNode"/>
+                </div>
+            </el-col>
+            <el-col :span="20">
+                <div class="btns">
+                    <div>
+                        <el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+                        <el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen"
+                                   @click="openD('修改', deletAll[0])">修改</el-button>
+                        <el-button size="default" :disabled="danger" type="danger" :icon="Delete" @click="onDeleteAll"
+                                   plain>删除
+                        </el-button>
+                    </div>
+                    <div>
+                        <!-- <el-button size="default" :icon="Upload" @click="openUp"></el-button>
+                        <el-button size="default" :icon="Download"></el-button>
+                        <el-button size="default" :icon="Refresh"></el-button> -->
+                    </div>
+                </div>
+                <div style="padding-left: 10px">
+                    <el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange"
+                              style="width: 100%">
+                        <el-table-column type="selection" align="center" width="55"/>
+                        <el-table-column type="expand">
+                            <template #default="scope">
+                                <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"
+                                         style="margin: 0 5%">
+                                    <el-tab-pane label="设备保养" name="first">
+                                        <el-table ref="multipleTableRef" :data="scope.row.takecareDetailList"
+                                                  style="width: 100%">
+                                            <el-table-column property="takecareMemo" align="center" label="保养情况"
+                                                             sortable/>
+                                            <el-table-column property="leadingPersonName" align="center" label="保养负责人"
+                                                             sortable/>
+                                            <el-table-column property="takecareDate" align="center"
+                                                             :formatter="timeDate" label="保养日期" sortable/>
+                                            <el-table-column property="leadingPersonDepartmentName" align="center"
+                                                             label="保养负责人单位" sortable/>
+                                        </el-table>
+                                    </el-tab-pane>
+                                    <el-tab-pane label="设备检查" name="second"
+                                    >
+                                        <el-table ref="multipleTableRef" :data="scope.row.checkDetailList"
+                                                  style="width: 100%">
+                                            <el-table-column property="testPersonName" align="center" label="检查人"
+                                                             sortable/>
+                                            <el-table-column property="testDate" align="center" :formatter="timeDate"
+                                                             label="检查日期" sortable/>
+                                            <el-table-column property="testPersonDepartmentName" align="center" label="检查人部门" sortable/>
+                                            <el-table-column property="testResult" align="center" label="检查结果"
+                                                             sortable>
+                                                <template #default="scope">
+                                                    <span v-if="scope.row.testResult == 1">成功</span>
+                                                    <span v-if="scope.row.testResult == 2">失败</span>
+                                                </template>
+                                            </el-table-column>
+                                            <el-table-column property="testStatus" align="center" label="检查状态" sortable/>
+                                        </el-table
+                                        >
+                                    </el-tab-pane>
+                                    <el-tab-pane label="设备检测" name="third">
+                                        <el-table ref="multipleTableRef" :data="scope.row.testDetailList"
+                                                  style="width: 100%">
+                                            <el-table-column property="repairPersonName" align="center" label="检测人"
+                                                             sortable/>
+                                            <el-table-column property="repairStarDate" align="center" :formatter="timeDate"
+                                                             label="检测日期" sortable/>
+                                            <el-table-column property="repairPersonDepartmentName" align="center"
+                                                             label="检测人单位" sortable/>
+                                            <el-table-column property="testMemo" align="center" label="检测内容" sortable/>
+                                            <el-table-column property="testResult" align="center" label="检测结果"
+                                                             sortable/>
+                                            <el-table-column property="testStatus" align="center" label="检测状态"
+                                                             sortable/>
+                                        </el-table>
+                                    </el-tab-pane>
+                                    <el-tab-pane label="设备维修" name="fourth">
+                                        <el-table ref="multipleTableRef" :data="scope.row.repaireDetailList"
+                                                  style="width: 100%">
+                                            <el-table-column property="exceptionInfo" align="center" label="设施异常项"
+                                                             sortable/>
+                                            <el-table-column property="repairStatus" align="center" label="维修状态"
+                                                             sortable>
+                                                <template #default="scope">
+                                                    <span v-if="scope.row.repairStatus == 1">维修中</span>
+                                                    <span v-if="scope.row.repairStatus == 2">已维修</span>
+                                                </template>
+
+                                            </el-table-column>
+                                            <el-table-column property="repairMemo" align="center" label="维修情况"
+                                                             sortable/>
+                                            <el-table-column property="repairPersonName" align="center" label="维修负责人"
+                                                             sortable/>
+                                            <el-table-column property="repairPersonDepartmentName" align="center"
+                                                             label="维修负责人单位" sortable/>
+                                            <el-table-column property="repairStartDate" align="center"
+                                                             :formatter="timeDate" label="维修开始日期" sortable/>
+                                            <el-table-column property="repairEndDate" align="center"
+                                                             :formatter="timeDate" label="维修结束日期" sortable/>
+                                        </el-table>
+                                    </el-tab-pane>
+                                </el-tabs>
+                            </template>
+                        </el-table-column>
+                        <el-table-column property="equipmentTypeName" align="center" label="类型/类别外键" sortable/>
+                        <el-table-column property="name" align="center" label="装置/部位名称" sortable/>
+                        <el-table-column property="departmentName" label="所属部门" align="center" sortable
+                                         show-overflow-tooltip/>
+                        <el-table-column property="position" label="具体位置" align="center" sortable
+                                         show-overflow-tooltip/>
+                        <el-table-column property="leadingPersonName" label="负责人姓名" align="center" sortable
+                                         show-overflow-tooltip/>
+                        <el-table-column property="partType" label="装置部位分类" align="center" sortable
+                                         show-overflow-tooltip>
+                            <template #default="scope">
+                                <span v-if="scope.row.partType == 1">关键装置</span>
+                                <span v-if="scope.row.partType == 2">重点部位</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="操作" align="center" width="250">
+                            <template #default="scope">
+                                <el-button link type="primary" size="default" :icon="View"
+                                           @click="openD('查看', scope.row.id)">查看
+                                </el-button>
+                                <el-button link type="primary" size="default" :icon="EditPen"
+                                           @click="openD('修改', scope.row.id)">修改
+                                </el-button>
+                                <el-button link type="primary" size="default" :icon="Delete"
+                                           @click="onDelete(scope.row.id)">删除
+                                </el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <div class="pages">
+                        <el-pagination
+                                v-model:currentPage="currentPage4"
+                                v-model:page-size="pageSize4"
+                                :page-sizes="[10, 20, 30, 40]"
+                                layout="total, sizes, prev, pager, next, jumper"
+                                :total="total"
+                                @size-change="handleSizeChange"
+                                @current-change="handleCurrentChange"
+                        />
+                    </div>
+                </div>
+            </el-col>
+        </el-row>
+        <!--		<updata ref="Show"></updata>-->
+        <DailogS ref="ShowD" @navAddorUpdata="onAddorUpdata"></DailogS>
+    </div>
+</template>
+<script lang="ts">
+    import {defineComponent, ref, reactive, watch, onMounted} from 'vue';
+    // import updata from '/@/components/updata/updata.vue'
+    import DailogS from '/@/components/equipmentDailog/DailogS.vue';
+    import {ElTree, TabsPaneContext, ElMessage, ElMessageBox} from 'element-plus';
+    import {EditPen, Plus, Delete, Download, Refresh, Upload, View} from '@element-plus/icons-vue';
+    import {facilityManagementApi} from '/@/api/facilityManagement';
+    import {timeDate} from '/@/assets/index.ts'
+
+    interface Tree {
+        label: string;
+        children?: Tree[];
+    }
+
+    export default defineComponent({
+        components: {
+            // updata,
+            DailogS,
+        },
+        setup() {
+            const ruleForm = reactive({
+                pageSize: 10,
+                pageIndex: 1,
+                searchParams: {
+                    // equipmentTypeId: '', ////类型/类别外键
+                    name: '', ////装置/部位名称
+                    // departmentId: '',////所属部门
+                    // position: '', ////具体位置
+                    // leadingPersonName: '', ////负责人姓名
+                    // connectPersonId: '',////装置部位分类
+                    // infoTpe: 0, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施  3:重点监管装置/设备
+                    equipmentTypeId: ''
+                },
+            });
+            // 重置
+            const resetForm = () => {
+                ruleForm.searchParams.equipmentTypeId = '';
+                listApi();
+            };
+            const listApi = () => {
+                // delete ruleForm.qName
+                facilityManagementApi()
+                    .getkeypointEquipmentInfoAddOrList(ruleForm)
+                    .then((res) => {
+                        if (res.data.code == 200) {
+                            tableData.value = res.data.data;
+                            currentPage4.value = res.data.pageIndex;
+                            pageSize4.value = res.data.pageSize;
+                            total.value = res.data.total;
+                        } else {
+                            ElMessage.error(res.data.msg);
+                        }
+                    });
+            };
+            onMounted(() => {
+                listApi();
+            });
+            const onAddorUpdata = () => {
+                listApi();
+            };
+            const tableData = ref();
+            const currentPage4 = ref();
+            const pageSize4 = ref();
+            const total = ref();
+            const handleSizeChange = (val: number) => {
+                // console.log(`${val} items per page`);
+                ruleForm.pageSize = val;
+                listApi();
+            };
+            const handleCurrentChange = (val: number) => {
+                // console.log(`current page: ${val}`);
+                ruleForm.pageIndex = val;
+                listApi();
+            };
+            const filterText = ref('');
+            const treeRef = ref<InstanceType<typeof ElTree>>();
+            // 树形
+            const listApiTree = () => {
+                facilityManagementApi()
+                    .getequipmentTypeMngTreeData()
+                    .then((res) => {
+                        if (res.data.code == 200) {
+                            console.log(res.data.data);
+                            data.value = res.data.data;
+                        } else {
+                            ElMessage({
+                                showClose: true,
+                                message: res.data.msg,
+                                type: 'error',
+                            });
+                        }
+                    });
+            };
+            const props = {
+                label: 'typeName',
+                children: 'childList',
+                value: 'id',
+            }
+            watch(filterText, (val) => {
+                treeRef.value!.filter(val);
+            });
+            const filterNode = (value: string, data: Tree) => {
+                if (!value) return true;
+                return data.typeName.includes(value);
+            };
+            const handleNodeClick = (data: Tree) => {
+                console.log(data)
+                ruleForm.searchParams.equipmentTypeId = data.id;
+
+                listApi();
+            };
+            const data = ref([]);
+            onMounted(() => {
+                listApiTree();
+            });
+            // 删除
+            const onDelete = (id: number) => {
+                let arr = []
+                arr.push(id)
+                ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning',
+                })
+                    .then(() => {
+                        facilityManagementApi()
+                            .getkeypointEquipmentInfoDetele(arr)
+                            .then((res) => {
+                                if (res.data.code == 200) {
+                                    ElMessage({
+                                        message: res.data.msg,
+                                        type: 'success',
+                                    });
+                                    listApi();
+                                } else {
+                                    ElMessage.error(res.data.msg);
+                                }
+                            });
+                    })
+                    .catch(() => {
+                        ElMessage({
+                            type: 'info',
+                            message: 'Delete canceled',
+                        });
+                    });
+            };
+            // 批量删除
+            // const warning = ref(true);
+            const danger = ref(true);
+            const deletAll = ref();
+            const handleSelectionChange = (val: any) => {
+                let valId = JSON.parse(JSON.stringify(val));
+                let arr = [];
+                for (let i = 0; i < valId.length; i++) {
+                    arr.push(valId[i].id);
+                }
+                deletAll.value = arr;
+                if (val.length == 1) {
+                    // warning.value = false;
+                    danger.value = false;
+                } else if (val.length == 0) {
+                    // warning.value = true;
+                    danger.value = true;
+                } else {
+                    // warning.value = true;
+                    danger.value = false;
+                }
+            };
+            const onDeleteAll = () => {
+                ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning',
+                })
+                    .then(() => {
+                        facilityManagementApi()
+                            .getkeypointEquipmentInfoDetele(deletAll.value)
+                            .then((res) => {
+                                if (res.data.code == 200) {
+                                    ElMessage({
+                                        message: res.data.msg,
+                                        type: 'success',
+                                    });
+                                    listApi();
+                                } else {
+                                    ElMessage.error(res.data.msg);
+                                }
+                            });
+                    })
+                    .catch(() => {
+                        // ElMessage({
+                        // 	type: 'info',
+                        // 	message: 'Delete canceled',
+                        // });
+                    });
+            };
+
+            const activeName = ref('first');
+
+            const handleClick = (tab: TabsPaneContext, event: Event) => {
+                console.log(tab, event);
+            };
+            // const Show=ref()
+            // const openUp=()=>{
+            // 	Show.value.openDialog()
+            // }
+            // 新增弹窗
+            const ShowD = ref();
+            const openD = (title: String, id: number) => {
+                ShowD.value.openDailog(title, false, id, 2);
+            };
+            return {
+                activeName,
+                handleClick,
+                ruleForm,
+                filterText,
+                treeRef,
+                props,
+                filterNode,
+                data,
+                tableData,
+                // Show,
+                // openUp,
+                ShowD,
+                danger,
+                openD,
+                // openEdit,
+                Plus,
+                EditPen,
+                listApiTree,
+                Delete,
+                View,
+                Download,
+                Refresh,
+                Upload,
+                resetForm,
+                listApi,
+                handleCurrentChange,
+                handleSizeChange,
+                onAddorUpdata,
+                total,
+                currentPage4,
+                pageSize4,
+                onDelete,
+                // warning,
+                handleSelectionChange,
+                onDeleteAll,
+                handleNodeClick,
+                timeDate,
+                deletAll
+            };
+        },
+    });
+</script>
+<style scoped>
+    .topTitle {
+        background-color: #fff;
+        padding: 20px 0px 20px 0px;
+        margin-bottom: 10px;
+    }
+
+    .tree {
+        height: 750px;
+        background-color: #fff;
+        overflow: hidden;
+        overflow-y: auto;
+    }
+
+    .btns {
+        padding: 10px 0px 10px 10px;
+        display: flex;
+        justify-content: space-between;
+        background-color: #fff;
+    }
+</style>
diff --git a/src/views/facilityManagement/safetyEquipment/index.vue b/src/views/facilityManagement/safetyEquipment/index.vue
index e69de29..d7f3ac5 100644
--- a/src/views/facilityManagement/safetyEquipment/index.vue
+++ b/src/views/facilityManagement/safetyEquipment/index.vue
@@ -0,0 +1,391 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="ruleForm.searchParams.qName" placeholder="装置设施名称" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-row>
+			<el-col :span="4">
+				<el-input v-model="filterText" style="height: 30px" placeholder="请输入关键字" />
+				<div class="tree">
+					<!-- <el-tree ref="treeRef" class="filter-tree" :data="data" :props="props" :filter-node-method="filterNode" /> -->
+					<el-tree ref="treeRef" :data="data" :props="props" @node-click="handleNodeClick" :filter-node-method="filterNode" />
+				</div>
+			</el-col>
+			<el-col :span="20">
+				<div class="btns">
+					<div>
+						<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+						 <el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen"
+									@click="openD('修改', deletAll[0])">修改</el-button>
+						<el-button size="default" :disabled="danger" type="danger" :icon="Delete" @click="onDeleteAll" plain>删除</el-button>
+					</div>
+					<div>
+						<!-- <el-button size="default" :icon="Upload" @click="openUp"></el-button>
+						<el-button size="default" :icon="Download"></el-button>
+						<el-button size="default" :icon="Refresh"></el-button> -->
+					</div>
+				</div>
+				<div style="padding-left: 10px">
+					<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default="scope">
+								<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClicks" style="margin: 0 5%">
+									<el-tab-pane label="设备保养" name="first">
+										<el-table ref="multipleTableRef" :data="scope.row.takecareDetailList" style="width: 100%">
+											<el-table-column property="takecareMemo" align="center" label="保养情况" sortable />
+											<el-table-column property="leadingPersonName" align="center" label="保养负责人" sortable />
+											<el-table-column property="takecareDate" align="center" :formatter="timeDate" label="保养日期" sortable />
+											<el-table-column property="leadingPersonDepartmentName" align="center" label="保养负责人单位" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备检查" name="second"
+										><el-table ref="multipleTableRef" :data="scope.row.checkDetailList" style="width: 100%">
+											<el-table-column property="leadingPersonName" align="center" label="检查人" sortable />
+											<el-table-column property="createTime" align="center" :formatter="timeDate" label="检查日期" sortable />
+											<el-table-column property="name" align="center" label="检查人部门" sortable />
+											<el-table-column property="takecareMemo" align="center" label="检查结果" sortable />
+											<el-table-column property="name" align="center" label="检查状态" sortable /> </el-table
+									></el-tab-pane>
+									<el-tab-pane label="设备检测" name="third">
+										<el-table ref="multipleTableRef" :data="scope.row.testDetailList" style="width: 100%">
+											<el-table-column property="testPersonName" align="center" label="检测人" sortable />
+											<el-table-column property="testDate" align="center" :formatter="timeDate" label="检测日期" sortable />
+											<el-table-column property="testPersonDepartmentName" align="center" label="检测人单位" sortable />
+											<el-table-column property="testMemo" align="center" label="检测内容" sortable />
+											<el-table-column align="center" label="检测结果">
+												<template #default="scope">
+													<span v-if="scope.row.testResult == 1">成功</span>
+													<span v-if="scope.row.testResult == 2">失败</span>
+												</template>
+											</el-table-column>
+											<el-table-column property="testStatus" align="center" label="检测状态" sortable />
+										</el-table>
+									</el-tab-pane>
+									<el-tab-pane label="设备维修" name="fourth">
+										<el-table ref="multipleTableRef" :data="scope.row.repaireDetailList" style="width: 100%">
+											<el-table-column property="exceptionInfo" align="center" label="设施异常项" sortable />
+											<el-table-column align="center" label="维修状态">
+												<template #default="scope">
+													<span v-if="scope.row.repairStatus == 1">维修中</span>
+													<span v-if="scope.row.repairStatus == 2">已修好</span>
+												</template>
+											</el-table-column>
+											<el-table-column property="repairMemo" align="center" label="维修情况" sortable />
+											<el-table-column property="repairPersonName" align="center" label="维修负责人" sortable />
+											<el-table-column property="repairPersonDepartmentName" align="center" label="维修负责人单位" sortable />
+											<el-table-column property="repairStartDate" align="center" :formatter="timeDate" label="维修开始日期" sortable />
+											<el-table-column property="repairEndDate" align="center" :formatter="timeDate" label="维修结束日期" sortable />
+										</el-table>
+									</el-tab-pane>
+								</el-tabs>
+							</template>
+						</el-table-column>
+						<el-table-column property="qName" label="装置设施名称" align="center" sortable />
+						<el-table-column property="positionNum" align="center" label="装置设施位号" sortable />
+						<el-table-column property="qUsage" align="center" label="装置设施用途" sortable />
+						<el-table-column property="model" label="装置设施型号" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="equipmentTypeId" label="类型/类别外键" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setPart" label="设施部位" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4"
+							v-model:page-size="pageSize4"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total"
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+						/>
+					</div>
+				</div>
+			</el-col>
+		</el-row>
+		<!-- <updata ref="Show"></updata> -->
+		<Dailog ref="openAdd" @navAddorUpdata="onAddorUpdata"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, watch, onMounted } from 'vue';
+import updata from '/@/components/updata/updata.vue';
+import Dailog from '/@/components/equipmentDailog/Dailog.vue';
+import { ElTree, TabsPaneContext, ElMessage, ElMessageBox } from 'element-plus';
+import { facilityManagementApi } from '/@/api/facilityManagement';
+import { timeDate } from '/@/assets/index.ts';
+import { EditPen, View, Plus, Delete, Download, Refresh, Upload } from '@element-plus/icons-vue';
+interface Tree {
+	label: string;
+	children?: Tree[];
+}
+export default defineComponent({
+	components: { updata, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////名称
+				positionNum: '', ////位号
+				equipmentTypeId: '',
+				infoType: 2, ////具体类型(页面左侧的导航栏使用) 0:仪器仪表信息 1:生产设备设施 2:安全设备设施
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.positionNum = '';
+			ruleForm.searchParams.equipmentTypeId = '';
+			listApiTree()
+			listApi();
+		};
+		const listApi = () => {
+			facilityManagementApi()
+				.getequipmentInfoList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title, false, id, 2);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr = [];
+			arr.push(id);
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr;
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					facilityManagementApi()
+						.getequipmentInfoDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		const filterText = ref('');
+		const treeRef = ref<InstanceType<typeof ElTree>>();
+		// 树形
+		const listApiTree = () => {
+			facilityManagementApi()
+				.getequipmentTypeMngTreeData()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage({
+							showClose: true,
+							message: res.data.msg,
+							type: 'error',
+						});
+					}
+				});
+		};
+		const props = {
+			label: 'typeName',
+			children: 'childList',
+			value: 'id',
+		};
+		watch(filterText, (val) => {
+			treeRef.value!.filter(val);
+		});
+
+		const filterNode = (value: string, data: Tree) => {
+			if (!value) return true;
+			return data.typeName.includes(value);
+		};
+		const handleNodeClick = (data: Tree) => {
+			ruleForm.searchParams.equipmentTypeId = data.id;
+			ruleForm.searchParams.equipmentTypeId = data.id;
+			listApi();
+		};
+		const data = ref([]);
+		onMounted(() => {
+			listApiTree();
+		});
+		const handleClicks = (tab: TabsPaneContext, event: Event) => {
+			console.log(tab, event);
+		};
+
+		const activeName = ref('first');
+		// const Show=ref()
+		// const openUp=()=>{
+		// 	Show.value.openDialog()
+		// }
+		return {
+			handleNodeClick,
+			ruleForm,
+			resetForm,
+			listApi,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			listApiTree,
+			handleClicks,
+			filterText,
+			treeRef,
+			props,
+			filterNode,
+			data,
+			openAdd,
+			openD,
+			activeName,
+			Plus,
+			EditPen,
+			Delete,
+			Download,
+			Refresh,
+			View,
+			Upload,
+			timeDate,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.tree {
+	height: 750px;
+	background-color: #fff;
+	overflow: hidden;
+	overflow-y: auto;
+}
+.btns {
+	padding: 10px 0px 10px 10px;
+	display: flex;
+	justify-content: space-between;
+	background-color: #fff;
+}
+</style>
diff --git a/src/views/goalManagement/Goalsummary/index.vue b/src/views/goalManagement/Goalsummary/index.vue
index e69de29..a345459 100644
--- a/src/views/goalManagement/Goalsummary/index.vue
+++ b/src/views/goalManagement/Goalsummary/index.vue
@@ -0,0 +1,227 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="ruleForm.searchParams.year" placeholder="年度" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4" >
+					<el-form-item size="default">
+						<el-tree-select v-model="ruleForm.searchParams.departmentId" :data="data" class="w100" placeholder="请选择" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<p>汇总日期:2022-07-04 23:00:07</p>
+				<div>
+					<el-button type="primary" size="default" :icon="Download" @click="exportExcel('tab1', '会员明细.xlsx')">导出</el-button>
+				</div>
+			</div>
+			<el-table :data="tableData" style="width: 100%" id="tab1">
+				<el-table-column label="责任部门" align="center">
+					<template #default="scope">{{ scope.row.departmentId }}</template>
+				</el-table-column>
+				<el-table-column property="targetValue" align="center" label="安全目标指标" />
+				<el-table-column property="examineValue" label="考核指标" align="center" show-overflow-tooltip />
+				<el-table-column property="yiYue" label="1月" align="center" show-overflow-tooltip />
+				<el-table-column property="february" label="2月" align="center" show-overflow-tooltip />
+				<el-table-column property="erYue" label="3月" align="center" show-overflow-tooltip />
+				<el-table-column property="sanYue" label="4月" align="center" show-overflow-tooltip />
+				<el-table-column property="siYue" label="5月" align="center" show-overflow-tooltip />
+				<el-table-column property="wuYue" label="6月" align="center" show-overflow-tooltip />
+				<el-table-column property="liuYue" label="7月" align="center" show-overflow-tooltip />
+				<el-table-column property="qiYue" label="8月" align="center" show-overflow-tooltip />
+				<el-table-column property="baYue" label="9月" align="center" show-overflow-tooltip />
+				<el-table-column property="jiuYue" label="10月" align="center" show-overflow-tooltip />
+				<el-table-column property="shiYue" label="11月" align="center" show-overflow-tooltip />
+				<el-table-column property="shiyiYue" label="12月" align="center" show-overflow-tooltip />
+				<el-table-column label="考核结果" align="center">
+					<template #default="scope">{{ scope.row.examineResult }}</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+
+import * as XLSX from 'xlsx';
+
+export default defineComponent({
+	components: { ElButton, ElInput },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				year: '', //年度
+				departmentId: '', //责任部门
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.year = '';
+			ruleForm.searchParams.departmentId = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.gettargetDutySummaryList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		const data = [
+			{
+				value: '1',
+				label: '广汇能源综合物流发展有限责任公司',
+				children: [
+					{
+						value: '11',
+						label: '经营班子',
+						children: [],
+					},
+				],
+			},
+			{
+				value: '2',
+				label: '生产运行部',
+				children: [
+					{
+						value: '21',
+						label: '灌装一班',
+						children: [],
+					},
+					{
+						value: '22',
+						label: '工艺四班',
+						children: [],
+					},
+				],
+			},
+			{
+				value: '3',
+				label: '设备部',
+				children: [
+					{
+						value: '31',
+						label: '仪表班',
+						children: [],
+					},
+					{
+						value: '32',
+						label: '机修班',
+						children: [],
+					},
+				],
+			},
+		];
+
+		const exportExcel = (id:string,name:string) => {
+			let workbook = XLSX.utils.table_to_book(document.getElementById(id)); //需要在table上定义一个id
+			try {
+				XLSX.writeFile(workbook, name);
+				console.log('导出成功!');
+			} catch (e) {
+				console.log('导出失败!');
+			}
+		}
+		return {
+			ruleForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			data,
+			resetForm,
+			listApi,
+			handleSizeChange,
+			handleCurrentChange,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			exportExcel
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: left;
+}
+.btns p {
+	font-size: 18px;
+	line-height: 40px;
+	margin-right: 20px;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue b/src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue
index e69de29..c0a5906 100644
--- a/src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue
+++ b/src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue
@@ -0,0 +1,204 @@
+<template>
+	<el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" :disabled="disabled" label-width="120px">
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="员工姓名" size="default">
+						<el-input v-model="form.personName" placeholder="请选择">
+							<template #append> <el-button :icon="Search" @click="daiInpts(0)" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="奖惩名称" size="default">
+						<el-input v-model="form.rewardPunishmentStandardName" placeholder="请选择">
+							<template #append> <el-button :icon="Search" @click="daiInpt" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="奖惩类型" size="default">
+						<el-select v-model="form.standardType" disabled size="default" style="width: 100%" placeholder="请选择">
+							<el-option label="奖励" :value="1" />
+							<el-option label="惩罚" :value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="奖惩内容" size="default">
+						<el-input disabled v-model="form.content" placeholder="请填写奖惩内容" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="依据" size="default">
+						<el-input disabled v-model="form.reason" placeholder="请填写奖惩依据" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="备注信息">
+						<el-input v-model="form.memo" type="textarea" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default" :disabled="disabled">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearchUser ref="Show" @SearchUser="UserId"></DailogSearchUser>
+	<DailogSearch ref="Shows" @backNum="numberId"></DailogSearch>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearch from './DailogSearch.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+export default defineComponent({
+	components: { DailogSearch, DailogSearchUser },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			rewardPunishmentStandardId: '', //奖惩标准/外键
+			rewardPunishmentStandardName: '',
+			memo: '', ////备注信息
+			personId: '', ////员工(多个用逗号隔开)
+			personName: '',
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, data: any) => {
+			dialogVisible.value = true;
+			titles.value = `${title}奖惩标准设定`;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.getrewardPunishmentDetail(data.id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+							form.value.standardType = data.standardType;
+							form.value.content = data.content;
+							form.value.reason = data.reason;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			delete form.value.standardType;
+			delete form.value.content;
+			delete form.value.reason;
+			delete form.value.rewardPunishmentStandardName
+			goalManagementApi()
+				.getrewardPunishmentAddOrUpdate(form.value)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('navAddorUpdata');
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+			form.value = {
+				rewardPunishmentStandardId: '', //奖惩标准/外键
+				rewardPunishmentStandardName: '',
+				memo: '', ////备注信息
+				personId: '', ////员工(多个用逗号隔开)
+				personName: '',
+			};
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				rewardPunishmentStandardId: '', //奖惩标准/外键
+				rewardPunishmentStandardName: '',
+				memo: '', ////备注信息
+				personId: '', ////员工(多个用逗号隔开)
+				personName: '',
+			};
+		};
+
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		const Show = ref();
+		const daiInpts = (type: any) => {
+			Show.value.openDailog(type);
+		};
+		const numberId = (val: any) => {
+			console.log(val);
+			form.value.rewardPunishmentStandardId = val.id;
+			form.value.rewardPunishmentStandardName = val.qname;
+			form.value.standardType = val.standardType;
+			form.value.content = val.content;
+			form.value.reason = val.reason;
+		};
+		const UserId = (val: any) => {
+			let arr = [];
+			let arrId = [];
+			for (let i = 0; i < val.length; i++) {
+				arr.push(val[i].realName);
+				arrId.push(val[i].uid);
+			}
+			form.value.personName = arr.toString();
+			form.value.personId = arrId.toString();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			dialogVisible,
+			UserId,
+			form,
+			titles,
+			disabled,
+			openDailog,
+			submitForm,
+			numberId,
+			resetForm,
+			Shows,
+			daiInpt,
+			Show,
+			daiInpts,
+			full,
+			toggleFullscreen,
+			Search,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue b/src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue
index e69de29..aabfa03 100644
--- a/src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue
+++ b/src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue
@@ -0,0 +1,204 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="奖惩类型" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="12">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.searchParams.standardType" placeholder="奖惩类型" />
+							</el-form-item>
+						</el-col>
+						<!-- <el-col :span="6" :offset="1">
+					<el-form-item>
+						<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col> -->
+						<el-col :span="11" :offset="1">
+							<el-form-item>
+								<el-button size="default" type="primary" @click="listApi">查询</el-button>
+								<el-button size="default" @click="resetForm">重置</el-button>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+				<el-button size="default" :icon="Delete" @click="clear">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px">
+					<el-table-column align="center">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row.id" @click="radio(scope.row)" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="qname" label="奖惩名称" width="180" />
+					<el-table-column align="center" label="奖惩类型" width="180">
+						<template #default="scope">
+							<span v-if="scope.row.standardType == 1">奖励</span>
+							<span v-if="scope.row.standardType == 2">惩罚</span>
+							<span></span>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="content" label="奖惩内容" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</el-col>
+			<el-col :span="7">
+				<div v-if="dynamicTags[0] == '' ? false : true">
+					<el-tag
+						v-for="tag in dynamicTags"
+						:key="tag"
+						class="mx-1"
+						style="margin: 5px"
+						closable
+						:disable-transitions="false"
+						@close="handleClose(tag)"
+					>
+						{{ tag.qname }}
+					</el-tag>
+				</div>
+			</el-col>
+		</el-row>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref, onMounted } from 'vue';
+import { Delete, FullScreen } from '@element-plus/icons-vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	setup(props, { emit }) {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				standardType: '', ////奖惩类型 1:奖励 2:惩罚
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.standardType = '';
+			listApi();
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getrewardPunishmentStandardList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.standardType = targetType.paneName;
+			listApi();
+		};
+		onMounted(() => {});
+		// const onAddorUpdata = () => {
+		// 	listApi();
+		// };
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 打开弹窗
+		const dialogVisible = ref(false);
+		const openDailog = () => {
+			dialogVisible.value = true;
+			listApi();
+		};
+		// 右方点击添加后显示标签
+		const dynamicTags = ref(['']);
+		const handleClose = (tag: string) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('');
+		const radio = (event: any) => {
+			dynamicTags.value[0] = event;
+		};
+		const clear = () => {
+			dynamicTags.value = [''];
+			radio1.value = '';
+		};
+		const submitForm = () => {
+			let obj = JSON.parse(JSON.stringify(dynamicTags.value));
+			emit('backNum', obj[0]);
+			dialogVisible.value = false;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			submitForm,
+			radio,
+			radio1,
+			clear,
+			dialogVisible,
+			openDailog,
+			ruleForm,
+			resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			dynamicTags,
+			listApi,
+			handleClick,
+			handleClose,
+			Delete,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/IncentiveRecording/index.vue b/src/views/goalManagement/IncentiveRecording/index.vue
index e69de29..829190a 100644
--- a/src/views/goalManagement/IncentiveRecording/index.vue
+++ b/src/views/goalManagement/IncentiveRecording/index.vue
@@ -0,0 +1,302 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="personName" placeholder="请选择被奖惩者">
+							<template #append>
+								<el-button :icon="Search" @click="openSearch" />
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+				</el-form-item>
+			</el-col> -->
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+					 <el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen"
+								@click="openD('修改', editRow)">修改</el-button>
+					<el-button size="default" :disabled="danger" type="danger" :icon="Delete" plain @click="onDeleteAll">删除 </el-button>
+				</div>
+				<div>
+					<!-- <el-button size="default" :icon="Download"></el-button>
+					<el-button size="default" :icon="Refresh"></el-button> -->
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column property="createTime" align="center" label="奖惩日期" :formatter="timeDate" sortable />
+				<el-table-column label="奖惩类型" align="center" sortable>
+					<template #default="scope">
+						<span v-if="scope.row.standardType == 1">奖励</span>
+						<span v-if="scope.row.standardType == 2">惩罚</span>
+					</template>
+				</el-table-column>
+				<el-table-column property="personName" align="center" label="被奖惩者" sortable />
+				<el-table-column property="content" label="奖惩内容" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="reason" label="奖惩依据" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row)">查看 </el-button>
+						<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row)">修改</el-button>
+						<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除 </el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+			<DailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAdd>
+			<DailogSearchUser ref="openUser" @SearchUser="userId"></DailogSearchUser>
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import DailogAdd from './component/DailogAdd.vue';
+import {timeDate} from '/@/assets/index.ts'
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen, Search } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, DailogAdd, DailogSearchUser },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				personId: '', ////员工
+			},
+		});
+		// 重置
+		const personName=ref()
+		const resetForm = () => {
+			ruleForm.searchParams.personId = '';
+	        personName.value = '';
+			listApi();
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getrewardPunishmentList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.personId = targetType.paneName;
+			listApi();
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title, ruleForm.searchParams.personId, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getrewardPunishmentDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const editRow = ref()
+		const handleSelectionChange = (val: any) => {
+			editRow.value = val[0]
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getrewardPunishmentDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		const openUser = ref();
+		const openSearch = () => {
+			openUser.value.openDailog();
+		};
+		const userId = (val: any) => {
+			ruleForm.searchParams.personId = val.uid;
+			personName.value = val.realName;
+		};
+		return {
+			timeDate,
+			personName,
+			ruleForm,
+			userId,
+			resetForm,
+			listApi,
+			handleClick,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			openD,
+			onDelete,
+			openAdd,
+			warning,
+			danger,
+			deletAll,
+			openSearch,
+			handleSelectionChange,
+			onDeleteAll,
+			openUser,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+			Search,
+			editRow
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/Incentivestandard/component/DailogAdd.vue b/src/views/goalManagement/Incentivestandard/component/DailogAdd.vue
index e69de29..e910cb5 100644
--- a/src/views/goalManagement/Incentivestandard/component/DailogAdd.vue
+++ b/src/views/goalManagement/Incentivestandard/component/DailogAdd.vue
@@ -0,0 +1,147 @@
+<template>
+	<el-dialog v-model="dialogVisible"  :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" :disabled="disabled" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="奖惩类型" size="default">
+						<el-select v-model="form.standardType" style="width: 100%" placeholder="请选择">
+							<el-option label="奖励" :value="1" />
+							<el-option label="惩罚" :value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="奖惩内容" size="default">
+						<el-input v-model="form.content" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="奖惩名称" size="default">
+						<el-input v-model="form.qName" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="依据" size="default">
+						<el-input v-model="form.reason" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="备注信息">
+						<el-input v-model="form.memo" type="textarea" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default" :disabled="disabled">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+export default defineComponent({
+	setup(props, { emit }) {
+		let Shows = ref(false);
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			qName: "", ////奖惩名称
+			reason: "", ////依据
+			memo: "", ////备注信息
+			content: "", ////奖惩内容
+			standardType: null ////奖惩类型 1:奖励 2:惩罚
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value = `${title}奖惩标准设定`;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.getrewardPunishmentStandardDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			goalManagementApi()
+				.getrewardPunishmentStandardaddOrUpdate(form.value)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('navAddorUpdata');
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+			form.value = {
+				qName: "", ////奖惩名称
+				reason: "", ////依据
+				memo: "", ////备注信息
+				content: "", ////奖惩内容
+				standardType: null, ////奖惩类型 1:奖励 2:惩罚
+			}
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				qName: "", ////奖惩名称
+				reason: "", ////依据
+				memo: "", ////备注信息
+				content: "", ////奖惩内容
+				standardType: null, ////奖惩类型 1:奖励 2:惩罚
+			};
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+
+		return {
+			form,
+			titles,
+			dialogVisible,
+			openDailog,
+			disabled,
+			Search,
+			submitForm,
+			resetForm,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/Incentivestandard/index.vue b/src/views/goalManagement/Incentivestandard/index.vue
index e69de29..c0aadc8 100644
--- a/src/views/goalManagement/Incentivestandard/index.vue
+++ b/src/views/goalManagement/Incentivestandard/index.vue
@@ -0,0 +1,283 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-select v-model="ruleForm.searchParams.standardType" size="default" style="width: 100%" placeholder="请选择">
+							<el-option label="奖励" value="1" />
+							<el-option label="惩罚" value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+				</el-form-item>
+			</el-col> -->
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')" >新建</el-button>
+					 <el-button size="default" type="warning" :disabled="warning" plain :icon="EditPen"
+								@click="openD('修改', deletAll[0])">修改 </el-button>
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="handleSelectionChange">删除</el-button>
+				</div>
+				<div>
+					<!-- <el-button size="default" :icon="Upload" @click="upButton"></el-button>
+					<el-button size="default" :icon="Download"></el-button>
+					<el-button size="default" :icon="Refresh"></el-button> -->
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column property="qname" align="center" label="奖惩名称" sortable />
+				<el-table-column property="name" align="center" label="奖惩类型" sortable>
+					<template #default="scope">
+						<span v-if="scope.row.standardType == 1">奖励</span>
+						<span v-if="scope.row.standardType == 2">惩罚</span>
+					</template>
+				</el-table-column>
+				<el-table-column property="content" label="奖惩内容" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="reason" label="依据" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="memo" label="备注信息" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看 </el-button>
+						<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除 </el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+			<DailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAdd>
+			<!-- <upData ref="upShow"></upData> -->
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import DailogAdd from './component/DailogAdd.vue';
+import upData from '../../../components/updata/updata.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, upData, DailogAdd },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				standardType: '', ////奖惩类型 1:奖励 2:惩罚
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.standardType = '';
+			listApi();
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getrewardPunishmentStandardList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.standardType = targetType.paneName;
+			listApi();
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title, ruleForm.searchParams.standardType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getrewardPunishmentStandardDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr;
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getrewardPunishmentStandardDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		return {
+			ruleForm,
+			resetForm,
+			listApi,
+			handleClick,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			openAdd,
+			openD,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/TargetBook/component/DailogAdd.vue b/src/views/goalManagement/TargetBook/component/DailogAdd.vue
index e69de29..fa0bc2a 100644
--- a/src/views/goalManagement/TargetBook/component/DailogAdd.vue
+++ b/src/views/goalManagement/TargetBook/component/DailogAdd.vue
@@ -0,0 +1,246 @@
+<template>
+	<el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable @close="resetForm">
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" :disabled="disabled" label-width="120px">
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="岗位" size="default">
+						<el-input v-model="form.jobName" placeholder="请选择">
+							<template #append> <el-button :icon="Search" @click="daiInpt" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="责任书签订日期" size="default">
+						<el-date-picker v-model="form.signDate" style="width:100%" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择日期时间" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="备注信息">
+						<el-input v-model="form.memo" type="textarea" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="责任书附件">
+						<uploaderFile :fileList="fileList" :systemName="'GOAL_MANAGE'" :disabled="disabled"
+									  @successUploader="successUploader" @deleteFile="deleteFile"></uploaderFile>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearch ref="Shows" @backNum="IdNumber"></DailogSearch>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearch from './DailogSearch.vue';
+import { ElMessage, ElMessageBox } from 'element-plus';
+import type { UploadProps, UploadUserFile } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+import uploaderFile from '/@/components/uploaderFile/index.vue';
+export default defineComponent({
+	components: { DailogSearch,uploaderFile },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			indexNum: '', //目标指标编号
+			memo: '', ////备注信息
+			signDate: '', //责任书签订日期
+			extraFile: '', //责任书附件
+			jobId: '', //岗位
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value =`${title}目标责任书`;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.gettargetDutyfileInfoDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+							form.value.signDate=timeC(form.value.signDate)
+
+
+							if(res.data.data.extraFile!=null&&res.data.data.extraFile!=''){
+								var extraFileList = res.data.data.extraFile.split(',')
+								for(var a = 0;a<extraFileList.length;a++){
+									fileList.value.push(
+											{
+												name:extraFileList[a]
+											}
+									)
+								}
+							}else {
+								fileList.value = []
+							}
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			console.log('successUploader',list)
+			fileList.value = list
+			var formFileList = ''
+			for(var a = 0;a<fileList.value.length;a++){
+				if(a==fileList.value.length-1){
+					formFileList+=fileList.value[a].name
+				}else {
+					formFileList+=fileList.value[a].name+','
+				}
+			}
+			form.value.extraFile = formFileList
+		}
+		const deleteFile = (list) =>{
+			console.log('deleteFile',list)
+			fileList.value = list
+			const formFileList = ''
+			for(var a = 0;a<fileList.value.length;a++){
+				if(a==fileList.value.length-1){
+					formFileList.value+=fileList.value[a].name
+				}else {
+					formFileList.value+=fileList.value[a].name+','
+				}
+			}
+			form.value.extraFile = formFileList
+		}
+		const timeC = (timestamp: any) => {
+			let a = new Date(timestamp).getTime();
+			const date = new Date(a);
+			const Y = date.getFullYear() + '-';
+			const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+			const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '  ';
+			const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
+			const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
+			const s = date.getSeconds(); // 秒
+			const dateString = Y + M + D + h + m +`:${s}`;
+			// console.log('dateString', dateString); // > dateString 2021-07-06 14:23
+			return dateString;
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			delete form.value.jobName
+			goalManagementApi()
+				.gettargetDutyfileInfoAddorUpdata(form.value)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('navAddorUpdata');
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+			form.value = {
+				indexNum: '', //目标指标编号
+				memo: '', ////备注信息
+				signDate: '', //责任书签订日期
+				extraFile: '666', //责任书附件
+				jobId: '', //岗位
+			};
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				indexNum: '', //目标指标编号
+				memo: '', ////备注信息
+				signDate: '', //责任书签订日期
+				extraFile: '666', //责任书附件
+				jobId: '', //岗位
+			};
+			fileList.value = []
+		};
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		const IdNumber=(val:any)=>{
+         form.value.jobId=val.id
+		 form.value.jobName=val.date
+		}
+		// 点击上传
+		const fileList = ref([
+		]);
+
+		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(`Cancel the transfert of ${uploadFile.name} ?`).then(
+				() => true,
+				() => false
+			);
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			timeC,
+			IdNumber,
+			dialogVisible,
+			form,
+			disabled,
+			titles,
+			openDailog,
+			daiInpt,
+			submitForm,
+			resetForm,
+			Shows,
+			Search,
+			fileList,
+			handleRemove,
+			handlePreview,
+			handleExceed,
+			beforeRemove,
+			full,
+			toggleFullscreen,
+			FullScreen,
+			successUploader,
+			deleteFile
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/TargetBook/component/DailogSearch.vue b/src/views/goalManagement/TargetBook/component/DailogSearch.vue
index e69de29..54a6871 100644
--- a/src/views/goalManagement/TargetBook/component/DailogSearch.vue
+++ b/src/views/goalManagement/TargetBook/component/DailogSearch.vue
@@ -0,0 +1,175 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="选择岗位" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="12">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.pass" placeholder="岗位名称" />
+							</el-form-item>
+						</el-col>
+						<!-- <el-col :span="6" :offset="1">
+					<el-form-item>
+						<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col> -->
+						<el-col :span="11" :offset="1">
+							<el-form-item>
+								<el-button size="default" type="primary" @click="submitForm(ruleFormRef)">查询</el-button>
+								<el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+				<el-button size="default" :icon="Delete">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px"  >
+					<el-table-column align="center" width="70px">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row.id" @click="radio(scope.row)" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="date" label="岗位名称" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[100, 200, 300, 400]"
+					:small="small"
+					:disabled="disabled"
+					:background="background"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="1"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</el-col>
+			<el-col :span="7">
+			<div v-if="dynamicTags[0]==''?false:true">
+				<el-tag
+					v-for="tag in dynamicTags"
+					:key="tag"
+					class="mx-1"
+					style="margin: 5px"
+					closable
+					:disable-transitions="false"
+					@close="handleClose(tag)"
+				>
+					{{ tag.date }}
+				</el-tag>
+				</div>
+			</el-col>
+		</el-row>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref } from 'vue';
+import { Delete, FullScreen } from '@element-plus/icons-vue';
+export default defineComponent({
+	setup(props,{emit}) {
+		const dialogVisible = ref<boolean>(false);
+		const openDailog = () => {
+			dialogVisible.value = true;
+		};
+		// 搜索条件
+		const ruleForm = reactive({
+			pass: '',
+			checkPass: '',
+		});
+		// 表格
+		const tableData = [
+			{   id:1,
+				date: '岗位1',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				id:2,
+				date: '岗位2',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{	
+				id:3,	
+				date: '岗位3',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{	id:4,
+				date: '岗位4',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+		const pageSize4 = ref(100);
+		const handleSizeChange = (val: number) => {
+			console.log(`${val} items per page`);
+		};
+		const handleCurrentChange = (val: number) => {
+			console.log(`current page: ${val}`);
+		};
+		// 右方点击添加后显示标签
+		const dynamicTags = ref(['']);
+		const handleClose = (tag: string) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('');
+		const radio = (event: any) => {
+			dynamicTags.value[0] = event;
+		};
+		const clear=()=>{
+			dynamicTags.value=['']
+			radio1.value=""
+		}
+			const submitForm=()=>{
+			let obj=JSON.parse(JSON.stringify(dynamicTags.value))
+			emit("backNum",obj[0])
+			dialogVisible.value = false
+		}
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			radio1,
+			radio,
+			clear,
+			dialogVisible,
+			openDailog,
+			ruleForm,
+			tableData,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			dynamicTags,
+			handleClose,
+			submitForm,
+			Delete,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/TargetBook/index.vue b/src/views/goalManagement/TargetBook/index.vue
index e69de29..593acf8 100644
--- a/src/views/goalManagement/TargetBook/index.vue
+++ b/src/views/goalManagement/TargetBook/index.vue
@@ -0,0 +1,289 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="jobName" placeholder="请选择岗位">
+							<template #append> <el-button :icon="Search" @click="openSearch" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+				</el-form-item>
+			</el-col> -->
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+					<el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen"
+							   @click="openD('修改', deletAll[0])">修改</el-button>
+					<el-button size="default" :disabled="danger" type="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
+				</div>
+				<div>
+					<!-- <el-button size="default" :icon="Download"></el-button>
+					<el-button size="default" :icon="Refresh"></el-button> -->
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column type="index" label="序号" align="center" width="70" />
+				<el-table-column property="jobId" align="center" label="岗位" sortable />
+				<el-table-column property="signDate" align="center" label="责任书签订日期" :formatter="timeDate" sortable />
+				<el-table-column property="extraFile" align="center" label="附件" sortable />
+				<el-table-column property="memo" label="备注信息" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" style="width: 300px">
+					<template #default="scope">
+						<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+			<DailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAdd>
+			<DailogSearch ref="openUser"  @backNum="IdNumber"></DailogSearch>
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import DailogAdd from './component/DailogAdd.vue';
+import {timeDate} from '/@/assets/index.ts'
+import DailogSearch from './component/DailogSearch.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen, Search } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+export default defineComponent({
+	components: { ElButton, ElInput, DailogAdd, DailogSearch },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				jobId: '', ////岗位号/外键
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.jobId = '';
+			jobName.value=""
+			listApi();
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.gettargetDutyfileInfoList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.jobId = targetType.paneName;
+			listApi();
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		const jobName=ref()
+		const IdNumber=(val:any)=>{
+         ruleForm.jobId=val.id
+		 jobName.value=val.date
+		}
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title, ruleForm.searchParams.jobId, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.gettargetDutyfileInfoDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.gettargetDutyfileInfoDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		const openUser = ref();
+		const openSearch = () => {
+			openUser.value.openDailog();
+		};
+		return {
+			IdNumber,
+			ruleForm,
+			resetForm,
+			listApi,
+			handleClick,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			openAdd,
+			openD,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			openUser,
+			openSearch,
+			timeDate,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+			Search,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/index.vue b/src/views/goalManagement/index.vue
index e69de29..8d45119 100644
--- a/src/views/goalManagement/index.vue
+++ b/src/views/goalManagement/index.vue
@@ -0,0 +1,14 @@
+<template>
+    <router-view></router-view>
+</template>
+
+<script>
+export default {
+    name: "index"
+}
+</script>
+
+<style scoped>
+
+</style>
+
diff --git a/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue b/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue
index e69de29..1bf1044 100644
--- a/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue
+++ b/src/views/goalManagement/performanceAppraisal/component/DailogAq.vue
@@ -0,0 +1,455 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" @close="handleClose(ruleFormRef)" :title="titles" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px" ref="ruleFormRef" :rules="rules">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="考核标题" size="default" prop="title">
+						<el-input v-model="form.title" placeholder="请填写考核标题"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="考核日期" size="default" prop="examineDate">
+						<el-date-picker
+							v-model="form.examineDate"
+							format="YYYY-MM-DD HH:mm:ss"
+							value-format="YYYY-MM-DD HH:mm:ss"
+							type="datetime"
+							placeholder="请选择"
+							style="width: 100%"
+						/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="合格分数" size="default" prop="acceptanceNumber">
+						<el-input v-model="form.acceptanceNumber" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="总分" size="default" prop="examineTotalNumber">
+						<el-input v-model="form.examineTotalNumber" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="考核部门" size="default" prop="examineDepartmentId">
+						<el-tree-select
+							v-model="form.examineDepartmentId"
+							:data="data"
+							class="w100"
+							@node-click="nameData1"
+							:props="propse"
+							check-strictly
+							placeholder="请选择"
+						/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="考核人" size="default" prop="examinePersonName">
+						<el-input v-model="form.examinePersonName">
+							<template #append> <el-button :icon="Search" @click="daiInpt(1)" /></template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="被考核部门" size="default" prop="beExaminedDepartmentId">
+						<el-tree-select
+							v-model="form.beExaminedDepartmentId"
+							:data="data"
+							@node-click="nameData2"
+							class="w100"
+							:props="propse"
+							check-strictly
+							placeholder="请选择"
+						/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="被考核人" size="default" prop="beExaminedPersonName">
+						<el-input v-model="form.beExaminedPersonName">
+							<template #append> <el-button :icon="Search" @click="daiInpt(0)" /></template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="附件">
+						<uploaderFile :fileList="fileList" :systemName="'GOAL_MANAGE'" :disabled="disabled"
+									  @successUploader="successUploader" @deleteFile="deleteFile"></uploaderFile>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="考核模板" size="default" prop="examineTemplateName">
+						<el-input v-model="form.examineTemplateName">
+							<template #append> <el-button :icon="Search" @click="daiAdd" /></template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="备注信息" prop="memo">
+						<el-input v-model="form.memo" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs">
+			<el-tab-pane label="考核项目" name="1">
+				<!-- <el-button type="primary" size="default" @click="daiAdd">新增</el-button> -->
+			</el-tab-pane>
+		</el-tabs>
+		<el-table :data="form.numberDetailJson" style="width: 100%">
+			<el-table-column align="center" prop="itemDetail" label="考核项目" />
+			<el-table-column align="center" prop="content" label="考核内容" />
+			<el-table-column align="center" label="考核分数">
+				<template #default="scope">
+					<el-input @blur="numberC" v-model.number="scope.row.number"> </el-input>
+				</template>
+			</el-table-column>
+			<!-- <el-table-column align="center" prop="address" label="制定日期" />
+			<el-table-column align="center" prop="address" label="上报人" />
+			<el-table-column align="center" label="操作">
+				<template #default>
+					<el-button link type="primary">查看</el-button>
+				</template>
+			</el-table-column> -->
+		</el-table>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm(ruleFormRef)" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearch ref="Show" @typeDome="onType"></DailogSearch>
+	<DailogSearchUser ref="Shows" @SearchUser="userId"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogSearch from './DailogSearch.vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
+import { ElMessage, ElMessageBox } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { UploadProps, UploadUserFile } from 'element-plus';
+import type { FormInstance, FormRules } from 'element-plus';
+import uploaderFile from '/@/components/uploaderFile/index.vue';
+export default defineComponent({
+	components: { DailogSearchUser, DailogSearch,uploaderFile },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const ruleFormRef = ref<FormInstance>();
+		const form = ref({
+			beExaminedDepartmentId: '', ////被考核部门ID/外键
+			beExaminedDepartmentName: '',
+			beExaminedPersonId: '', ////被考核人ID/外键(可能有多个,用逗号隔开)
+			beExaminedPersonName: '',
+			examineDate: '', ////考核日期
+			examineDepartmentId: '', ////考核部门ID/外键
+			examineDepartmentName: '',
+			examinePersonId: '', ////考核人ID/外键
+			examinePersonName: '',
+			examineTemplateId: '', ////绩效考核模板ID/外键
+			examineTemplateName: '',
+			examineTotalNumber: '', ////总分
+			acceptanceNumber: '', ///合格分数
+			extraFile: '', //责任书附件
+			itemDetail: '', ////考核项目
+			memo: '', ////备注信息
+			numberDetailJson: [], ////各个考核项目的具体得分,json格式。形式为:[{“id”:"123","number":"123"}]
+			title: '', ////考核标题
+		});
+		const titles = ref();
+		const titleT = ref();
+		const disabled = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, id: number) => {
+			department();
+			dialogVisible.value = true;
+			titles.value = `${title}安全考核管理`;
+			titleT.value=title
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.getexamineMngDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+							form.value.examineDate = timeC(form.value.examineDate);
+							form.value.numberDetailJson = form.value.currentExamineDtoList;
+
+
+							if(res.data.data.extraFile!=null&&res.data.data.extraFile!=''){
+								var extraFileList = res.data.data.extraFile.split(',')
+								for(var a = 0;a<extraFileList.length;a++){
+									fileList.value.push(
+											{
+												name:extraFileList[a]
+											}
+									)
+								}
+							}else {
+								fileList.value = []
+							}
+
+							// fileList.value = (res.data.data.fileList?res.data.data.fileList:[])
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		// 上传成功组装数据
+		const successUploader = (list) =>{
+			console.log('successUploader',list)
+			fileList.value = list
+			var formFileList = ''
+			for(var a = 0;a<fileList.value.length;a++){
+				if(a==fileList.value.length-1){
+					formFileList+=fileList.value[a].name
+				}else {
+					formFileList+=fileList.value[a].name+','
+				}
+			}
+			form.value.extraFile = formFileList
+		}
+		const deleteFile = (list) =>{
+			console.log('deleteFile',list)
+			fileList.value = list
+			const formFileList = ''
+			for(var a = 0;a<fileList.value.length;a++){
+				if(a==fileList.value.length-1){
+					formFileList.value+=fileList.value[a].name
+				}else {
+					formFileList.value+=fileList.value[a].name+','
+				}
+			}
+			form.value.extraFile = formFileList
+		}
+
+		const timeC = (timestamp: any) => {
+			let a = new Date(timestamp).getTime();
+			const date = new Date(a);
+			const Y = date.getFullYear() + '-';
+			const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+			const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '  ';
+			const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
+			const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
+			const s = date.getSeconds(); // 秒
+			const dateString = Y + M + D + h + m + `:${s}`;
+			// console.log('dateString', dateString); // > dateString 2021-07-06 14:23
+			return dateString;
+		};
+		// 验证
+		const rules = reactive<FormRules>({
+			title: [{ required: true, message: '考核标题不能为空', trigger: 'blur' }],
+			examineDate: [{ required: true, message: '考核日期不能为空', trigger: 'blur' }],
+			examineDepartmentId: [{ required: true, message: '考核部门不能为空', trigger: 'blur' }],
+			examinePersonName: [],
+			examinePersonId: [],
+			beExaminedDepartmentId: [{ required: true, message: '被考核部门不能为空', trigger: 'blur' }],
+			beExaminedPersonName: [],
+			beExaminedPersonId: [],
+			examineTemplateId: [],
+			examineTemplateName: [{ required: true, message: '考核模板不能为空', trigger: 'blur' }],
+			memo: [],
+		});
+		// 接收
+		const onType = (data: any, val: any) => {
+			form.value.examineTotalNumber = '';
+			form.value.examineTemplateId = data.id;
+			form.value.examineTemplateName = data.title;
+			form.value.acceptanceNumber = data.acceptanceNumber;
+			form.value.numberDetailJson = val.examineItemList;
+		};
+		const numberC = () => {
+			let arr = 0;
+			for (let i = 0; i < form.value.numberDetailJson.length; i++) {
+				if (form.value.numberDetailJson[i].number != undefined) {
+					arr = parseInt(arr) + parseInt(form.value.numberDetailJson[i].number);
+				} else {
+					arr = parseInt(arr) + 0;
+				}
+			}
+			form.value.examineTotalNumber = arr;
+		};
+		// 提交
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					if(titleT.value=='新建'){
+						delete form.value.id
+					}
+					dialogVisible.value = false;
+					let arr = [];
+					for (let i = 0; i < form.value.numberDetailJson.length; i++) {
+						arr.push({
+							id: form.value.numberDetailJson[i].id,
+							number: form.value.numberDetailJson[i].number,
+						});
+					}
+					form.value.numberDetailJson = JSON.stringify(arr);
+					goalManagementApi()
+						.getexamineMngAddOrUpdate(form.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								emit('navAddorUpdata');
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+		};
+		//   取消
+		const resetForm = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			dialogVisible.value = false;
+			formEl.resetFields();
+		};
+		const handleClose = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			formEl.resetFields();
+			fileList.value=[]
+		};
+		const activeName = ref('1');
+		// 新增弹窗
+		const Show = ref();
+		const daiAdd = () => {
+			Show.value.openDailog();
+		};
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = (type: any) => {
+			Shows.value.openDailog(type);
+		};
+		// 点击上传
+		const fileList = ref<UploadUserFile[]>([]);
+
+		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(`Cancel the transfert of ${uploadFile.name} ?`).then(
+				() => true,
+				() => false
+			);
+		};
+		const userId = (val: any, type: any) => {
+			if (type == 1) {
+				form.value.examinePersonId = val.uid;
+				form.value.examinePersonName = val.realName;
+			} else if (type == 0) {
+				let uid = [];
+				let realName = [];
+				for (let i = 0; i < val.length; i++) {
+					uid.push(val[i].uid);
+					realName.push(val[i].realName);
+				}
+				form.value.beExaminedPersonId = uid.toString();
+				form.value.beExaminedPersonName = realName.toString();
+				console.log(form.value.beExaminedPersonId, form.value.beExaminedPersonName);
+			}
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		//部门
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		const data = ref();
+		const nameData1 = (val: any) => {
+			form.value.examineDepartmentName = val.depName;
+		};
+		const nameData2 = (val: any) => {
+			form.value.beExaminedDepartmentName = val.depName;
+			console.log(form.value);
+		};
+		return {
+			titleT,
+			rules,
+			timeC,
+			numberC,
+			onType,
+			handleClose,
+			nameData1,
+			nameData2,
+			ruleFormRef,
+			department,
+			propse,
+			data,
+			userId,
+			activeName,
+			dialogVisible,
+			form,
+			titles,
+			disabled,
+			openDailog,
+			submitForm,
+			resetForm,
+			Show,
+			daiAdd,
+			Shows,
+			daiInpt,
+			Search,
+			fileList,
+			handleRemove,
+			handlePreview,
+			handleExceed,
+			beforeRemove,
+			full,
+			toggleFullscreen,
+			FullScreen,
+			successUploader,
+			deleteFile
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/performanceAppraisal/component/DailogKh.vue b/src/views/goalManagement/performanceAppraisal/component/DailogKh.vue
index e69de29..7d58a68 100644
--- a/src/views/goalManagement/performanceAppraisal/component/DailogKh.vue
+++ b/src/views/goalManagement/performanceAppraisal/component/DailogKh.vue
@@ -0,0 +1,247 @@
+<template>
+	<el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" title="新建考核标准设定" width="60%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="标准标题" size="default">
+						<el-input v-model="form.title"> </el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="适用范围" size="default">
+						<el-select v-model="form.applyRange" style="width: 100%" placeholder="请选择">
+							<el-option label="安全生产责任制考核1" value="1" />
+							<el-option label="安全生产责任制考核2" value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<div v-if="clickType">
+				<el-row>
+					<el-col :span="11">
+						<el-form-item label="设定人" size="default">
+							<el-input v-model="form.setPersonId" disabled>
+								<template #append> <el-button :icon="Search" @click="daiInpt" /></template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="11" :offset="2">
+						<el-form-item label="设定人部门" size="default">
+							<el-select v-model="form.setPersonDepartmentId" disabled style="width: 100%" placeholder="请选择">
+								<el-option label="Zone one" value="shanghai" />
+								<el-option label="Zone two" value="beijing" />
+							</el-select>
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</div>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="模板分类编码" size="default">
+						<el-input v-model="form.templateCode" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="合格分数" size="default">
+						<el-input v-model="form.acceptanceNumber" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="备注信息">
+						<el-input v-model="form.memo" type="textarea" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2" v-if="clickType">
+					<el-form-item label="设定日期" size="default">
+						<el-date-picker disabled v-model="form.setTimem" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs">
+			<el-tab-pane label="考核项目" name="1">
+				<el-button type="primary" size="default" @click="daiAdd('新增','')">新增</el-button>
+			</el-tab-pane>
+		</el-tabs>
+		<el-table :data="form.examineItemList" style="width: 100%">
+			<el-table-column align="center" prop="itemType" label="类型" width="180" />
+			<el-table-column align="center" prop="itemDetail" label="考核项目" width="180" />
+			<el-table-column align="center" prop="content" label="考核内容" />
+			<el-table-column align="center" prop="judgeStandard" label="评定标准" />
+			<el-table-column align="center" prop="memo" label="考核说明" />
+			<el-table-column align="center" label="操作">
+				<template #default="scope">
+					<el-button link type="primary" @click="daiAdd('查看', scope.row)">查看</el-button>
+					<el-button link type="primary" @click="daiAdd('修改', scope.row)">修改</el-button>
+					<el-button link type="primary" @click="deleteA(scope.row)">删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogKhS ref="Show" @onAdd="AddObj"></DailogKhS>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogKhS from './DailogKhS.vue';
+import { ElMessage, ElMessageBox } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { DailogKhS },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			examineItemList: [], //考核项目列表
+			setTimem: 1658386392466,
+			memo: '', ////备注信息
+			templateCode: '', ////模板分类编码
+			title: '', ////标准标题
+			setPersonId: 1, //设定人
+			acceptanceNumber: '', ////合格分数
+			setPersonDepartmentId: 2, //设定人部门
+			applyRange: '', ////适用范围
+		});
+		const titles = ref();
+		const titleT = ref();
+		const disabled = ref(false);
+		const clickType = ref(false);
+		// 打开弹窗
+		const openDailog = (title: string, value: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value = `${title}安全考核管理`;
+			titleT.value=title
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改') {
+				goalManagementApi()
+					.getexamineTemplateDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+			} else {
+				clickType.value = false;
+			}
+		};
+		// 接受传值
+		const AddObj = (val: any) => {
+			if (index.value == -1) {
+				form.value.examineItemList.push(val);
+			} else {
+				form.value.examineItemList[index.value] = val;
+			}
+		};
+		// 删除
+		const deleteA = (tag: any) => {
+			form.value.examineItemList.splice(form.value.examineItemList.indexOf(tag), 1);
+		};
+		// 提交
+		const submitForm = () => {
+			if(titleT.value=='新建'){
+				delete form.value.id
+			}
+			dialogVisible.value = false;
+			goalManagementApi()
+				.getexamineTemplateAddOrUpdate(form.value)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('navAddorUpdata');
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+			form.value = {
+				examineItemList: [], //考核项目列表
+				setTimem: 1658386392466,
+				memo: '', ////备注信息
+				templateCode: '', ////模板分类编码
+				title: '', ////标准标题
+				setPersonId: 1, //设定人
+				acceptanceNumber: '', ////合格分数
+				setPersonDepartmentId: 2, //设定人部门
+				applyRange: '', ////适用范围
+			};
+		};
+		//   取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				examineItemList: [], //考核项目列表
+				setTimem: 1658386392466,
+				memo: '', ////备注信息
+				templateCode: '', ////模板分类编码
+				title: '', ////标准标题
+				setPersonId: 1, //设定人
+				acceptanceNumber: '', ////合格分数
+				setPersonDepartmentId: 2, //设定人部门
+				applyRange: '', ////适用范围
+			};
+		};
+		const activeName = ref('1');
+		// 新增弹窗
+		const index = ref<any>();
+		const Show = ref();
+		const daiAdd = (title: string, data: any) => {
+			index.value = form.value.examineItemList.indexOf(data);
+			Show.value.openDailog(title, data);
+		};
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog();
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			titleT,
+			index,
+			form,
+			dialogVisible,
+			deleteA,
+			AddObj,
+			openDailog,
+			activeName,
+			titles,
+			disabled,
+			submitForm,
+			resetForm,
+			Show,
+			daiAdd,
+			Shows,
+			daiInpt,
+			Search,
+			full,
+			clickType,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue b/src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue
index e69de29..f186ab3 100644
--- a/src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue
+++ b/src/views/goalManagement/performanceAppraisal/component/DailogKhS.vue
@@ -0,0 +1,133 @@
+<template>
+	<el-dialog v-model="dialogVisible"  :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" :disabled="disabled" label-width="120px">
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="类型">
+						<el-input v-model="form.itemType" type="textarea"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="考核项目">
+						<el-input v-model="form.itemDetail" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="考核内容">
+						<el-input v-model="form.content" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="评定标准">
+						<el-input v-model="form.judgeStandard" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="考核说明">
+						<el-input v-model="form.memo" type="textarea"> </el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+<!--				<el-button type="primary" @click="dialogVisible = false" size="default">继续添加</el-button>-->
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<!-- <DailogAdd ref="Show"></DailogAdd>
+  <DailogSearch ref="Shows"></DailogSearch> -->
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+// import DailogAdd from './DailogAdd.vue'
+// import DailogSearch from '../../../../components/DailogSearch/DailogSearch.vue'
+export default defineComponent({
+	// components:{DailogAdd,DailogSearch},
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			itemType: '', ////类型
+			memo: '', //备注
+			itemDetail: '', ////考核项目
+			content: '', ////考核内容
+			judgeStandard: '', ////评定标准
+		});
+		const disabled=ref(false)
+		const titles=ref()
+		const openDailog = (title: string, value: any) => {
+			dialogVisible.value = true;
+			titles.value=`${title}考核项目`
+			if (title == '查看') {
+				form.value = value;
+				disabled.value=true
+			}else if(title == '修改'){
+				disabled.value=false
+				form.value = value;
+			}
+		};
+		// 提交
+		const submitForm = () => {
+			dialogVisible.value = false;
+			emit('onAdd', form.value);
+			form.value = {
+				itemType: '', ////类型
+				memo: '', //备注
+				itemDetail: '', ////考核项目
+				content: '', ////考核内容
+				judgeStandard: '', ////评定标准
+			};
+		};
+		// 取消
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				itemType: '', ////类型
+				memo: '', //备注
+				itemDetail: '', ////考核项目
+				content: '', ////考核内容
+				judgeStandard: '', ////评定标准
+			};
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			form,
+			disabled,
+			titles,
+			dialogVisible,
+			openDailog,
+			submitForm,
+			resetForm,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue b/src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue
index e69de29..d50ea80 100644
--- a/src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue
+++ b/src/views/goalManagement/performanceAppraisal/component/DailogSearch.vue
@@ -0,0 +1,196 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="选择安全目标指标" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-row>
+			<el-col :span="17">
+				<el-form ref="ruleFormRef" :model="ruleForm" status-icon>
+					<el-row>
+						<el-col :span="12">
+							<el-form-item size="default">
+								<el-input v-model="ruleForm.searchParams.title" placeholder="标准标题" />
+							</el-form-item>
+						</el-col>
+						<!-- <el-col :span="6" :offset="1">
+					<el-form-item>
+						<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col> -->
+						<el-col :span="11" :offset="1">
+							<el-form-item>
+								<el-button size="default" type="primary" @click="listApi()">查询</el-button>
+								<el-button size="default" @click="reset">重置</el-button>
+							</el-form-item>
+						</el-col>
+					</el-row>
+				</el-form>
+				<el-button size="default" :icon="Delete" @click="clear">清除选择</el-button>
+				<el-table :data="tableData" style="width: 100%; margin-top: 20px" >
+					<el-table-column align="center" width="70px">
+						<template #default="scope">
+							<el-radio-group v-model="radio1">
+								<el-radio :label="scope.row.id" @click="radio(scope.row)" size="large">{{ null }}</el-radio>
+							</el-radio-group>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="title" label="标准标题" />
+				</el-table>
+				<el-pagination
+					style="padding: 20px 0; border-bottom: 1px solid #dedede"
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</el-col>
+			<el-col :span="7">
+			<div v-if="dynamicTags[0]==''?false:true">
+				<el-tag
+					v-for="tag in dynamicTags"
+					:key="tag"
+					class="mx-1"
+					style="margin: 5px"
+					closable
+					:disable-transitions="false"
+					@close="handleClose(tag)"
+				>
+					{{ tag.title }}
+				</el-tag>
+				</div>
+			</el-col>
+		</el-row>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref } from 'vue';
+import { Delete, FullScreen } from '@element-plus/icons-vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	setup(props,{emit}) {
+		const dialogVisible = ref<boolean>(false);
+		const openDailog = () => {
+			dialogVisible.value = true;
+			listApi()
+		};
+		// 搜索条件
+		const ruleForm = reactive({
+				pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				title: '', //标准标题
+			},
+		});
+		const listApi = () => {
+			goalManagementApi()
+				.getexamineTemplateList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+    //   重置
+	const reset=()=>{
+		ruleForm.searchParams.title=""
+		listApi()
+	}
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 提交
+		const submitForm=()=>{
+        dialogVisible.value = false
+		emit("typeDome",dynamicTags.value[0],list.value)
+		clear()
+		}
+		// 右方点击添加后显示标签
+		const dynamicTags = ref(['']);
+		const handleClose = (tag: string) => {
+			dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
+			radio1.value = '';
+		};
+		const radio1 = ref('');
+		const list=ref([])
+		const radio = (event: any) => {
+			
+				goalManagementApi()
+					.getexamineTemplateDetail(event.id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							list.value = res.data.data;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+					dynamicTags.value[0] = event;
+		};
+		const clear=()=>{
+			dynamicTags.value=['']
+			radio1.value=""
+		}
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			submitForm,
+			list,
+			reset,
+			dialogVisible,
+			listApi,
+			openDailog,
+			ruleForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			dynamicTags,
+			handleClose,
+			Delete,
+			full,
+			toggleFullscreen,
+			radio1,
+			radio,
+			clear,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/performanceAppraisal/index.vue b/src/views/goalManagement/performanceAppraisal/index.vue
index e69de29..53838f6 100644
--- a/src/views/goalManagement/performanceAppraisal/index.vue
+++ b/src/views/goalManagement/performanceAppraisal/index.vue
@@ -0,0 +1,526 @@
+<template>
+	<div>
+		<div class="minCenter">
+			<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+				<el-tab-pane label="安全考核管理" name="1">
+					<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+						<el-row>
+							<el-col :span="4">
+								<el-form-item size="default">
+									<el-tree-select v-model="ruleForm.searchParams.examineDepartmentId" :data="data" check-strictly="true" class="w100" :props="propse" placeholder="请选择" />
+								</el-form-item>
+							</el-col>
+							<el-col :span="4">
+								<el-form-item>
+									<el-button size="default" type="primary" @click="listApi">查询</el-button>
+									<el-button size="default" @click="resetForm">重置</el-button>
+								</el-form-item>
+							</el-col>
+						</el-row>
+					</el-form>
+					<div class="btns">
+						<div>
+							<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+							 <el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen"
+										@click="openD('修改', deletAll[0])">修改</el-button>
+							<el-button size="default" :disabled="danger" type="danger" plain :icon="Delete" @click="onDeleteAll">删除</el-button>
+						</div>
+					</div>
+					<el-table ref="multipleTableRef" :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default="scope">
+								<div class="tableC">
+									<el-table :data="scope.row.currentExamineDtoList" style="width: 100%">
+										<el-table-column align="center" prop="itemDetail" label="考核项目" />
+										<el-table-column align="center" prop="content" label="考核内容" />
+										<el-table-column align="center" prop="number" label="考核分数" />
+									</el-table>
+								</div>
+							</template>
+						</el-table-column>
+						<el-table-column property="examineDate" align="center" :formatter="timeDate" label="考核日期" sortable />
+						<el-table-column property="examineDepartmentName" align="center" label="考核部门" sortable />
+						<el-table-column property="examinePersonName" label="考核人" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="beExaminedDepartmentName" label="被考核部门" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="examineTotalNumber" label="总分" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="numberDetailJson.number" label="考核结果" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="extraFile" label="附件" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250px">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4"
+							v-model:page-size="pageSize4"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="total"
+							@size-change="handleSizeChange"
+							@current-change="handleCurrentChange"
+						/>
+					</div>
+				</el-tab-pane>
+				<el-tab-pane label="考核标准设定" name="2">
+					<el-form :model="ruleForms" status-icon label-width="20px" class="topTitle">
+						<el-row>
+							<el-col :span="4">
+								<el-form-item size="default">
+									<el-input v-model="ruleForms.searchParams.title" placeholder="标准标题" />
+								</el-form-item>
+							</el-col>
+							<el-col :span="4">
+								<el-form-item>
+									<el-button size="default" type="primary" @click="listApis">查询</el-button>
+									<el-button size="default" @click="resetForms">重置</el-button>
+								</el-form-item>
+							</el-col>
+						</el-row>
+					</el-form>
+					<div class="btns">
+						<div>
+							<el-button size="default" type="primary" :icon="Plus" @click="openDs('新建')">新建</el-button>
+							<!-- <el-button size="default" :disabled="warnings" type="warning" plain :icon="EditPen">修改</el-button> -->
+							<el-button size="default" :disabled="dangers" type="danger" plain :icon="Delete"  @click="onDeleteAlls">删除</el-button>
+						</div>
+					</div>
+					<el-table ref="multipleTableRef" :data="tableDatas" style="width: 100%" @selection-change="handleSelectionChanges">
+						<el-table-column type="selection" align="center" width="55" />
+						<el-table-column type="expand">
+							<template #default="scope">
+								<div class="tableC">
+									<el-table :data="scope.row.examineItemList" style="width: 100%">
+										<el-table-column align="center" prop="itemType" label="类型" />
+										<el-table-column align="center" prop="itemDetail" label="考核项目" />
+										<el-table-column align="center" prop="content" label="考核内容" />
+										<el-table-column align="center" prop="judgeStandard" label="评定标准" />
+										<el-table-column align="center" prop="memo" label="考核说明" />
+									</el-table>
+								</div>
+							</template>
+						</el-table-column>
+						<el-table-column label="标准标题" property="title" align="center" sortable />
+						<el-table-column property="applyRange" align="center" label="适用范围" sortable />
+						<el-table-column property="setPersonName" label="设定人" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setPersonDepartmentName" label="设定人部门" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="setTimem" label="设定日期" align="center" :formatter="timeDate" sortable show-overflow-tooltip />
+						<el-table-column property="templateCode" label="模板分类编码" align="center" sortable show-overflow-tooltip />
+						<el-table-column property="acceptanceNumber" label="合格分数" align="center" sortable show-overflow-tooltip />
+						<el-table-column label="操作" align="center" width="250px">
+							<template #default="scope">
+								<el-button link type="primary" size="default" :icon="View" @click="openDs('查看', scope.row.id)">查看</el-button>
+								<el-button link type="primary" size="default" :icon="EditPen" @click="openDs('修改', scope.row.id)">修改</el-button>
+								<el-button link type="primary" size="default" :icon="Delete" @click="onDeletes(scope.row.id)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<div class="pages">
+						<el-pagination
+							v-model:currentPage="currentPage4s"
+							v-model:page-size="pageSize4s"
+							:page-sizes="[10, 20, 30, 40]"
+							layout="total, sizes, prev, pager, next, jumper"
+							:total="totals"
+							@size-change="handleSizeChanges"
+							@current-change="handleCurrentChanges"
+						/>
+					</div>
+				</el-tab-pane>
+			</el-tabs>
+		</div>
+		<DailogAq ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAq>
+		<DailogKh ref="openAdds" @navAddorUpdata="onAddorUpdatas"></DailogKh>
+	</div>
+</template>
+<script lang="ts">
+import {timeDate} from '/@/assets/index.ts'
+import DailogAq from './component/DailogAq.vue';
+import DailogKh from './component/DailogKh.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import type { TabsPaneContext } from 'element-plus'
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, DailogAq, DailogKh },
+	setup() {
+		// 搜索条件 安全考核管理
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				examineDepartmentId: '',
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.examineDepartmentId = '';
+			listApi()
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getexamineMngList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD= (title: String, id: number) => {
+			openAdd.value.openDailog(title, ruleForm.searchParams.examineDepartmentId, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getexamineMngDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getexamineMngDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		// 切换
+		const activeName = ref('1');
+		const handleClick = (val: TabsPaneContext) => {
+			console.log(val)
+			if (val.props.name == '1') {
+				listApi();
+			}else{
+				listApis();
+			}
+		};
+		// 搜索条件 考核标准设定
+		const ruleForms = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				title: '', //标准标题
+			},
+		});
+		// 重置
+		const resetForms = () => {
+			ruleForms.searchParams.title = '';
+			listApis()
+		};
+		const listApis = () => {
+			goalManagementApi()
+				.getexamineTemplateList(ruleForms)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableDatas.value = res.data.data;
+						currentPage4s.value = res.data.pageIndex;
+						pageSize4s.value = res.data.pageSize;
+						totals.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApis();
+			department()
+		});
+		const onAddorUpdatas = () => {
+			listApis();
+		};
+		// 表格
+		const tableDatas = ref();
+		const currentPage4s = ref();
+		const pageSize4s = ref();
+		const totals = ref();
+		const handleSizeChanges = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForms.pageSize = val;
+			listApis();
+		};
+		const handleCurrentChanges = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForms.pageIndex = val;
+			listApis();
+		};
+		// 弹窗
+		const openAdds = ref();
+		const openDs = (title: String, id: number) => {
+			openAdds.value.openDailog(title, ruleForm.searchParams.examineDepartmentId, id);
+		};
+		// 删除
+		const onDeletes = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getexamineTemplateDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApis();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		const warnings = ref(true);
+		const dangers = ref(true);
+		const deletAlls = ref();
+		const handleSelectionChanges = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAlls.value = arr;
+			if (val.length == 1) {
+				warnings.value = false;
+				dangers.value = false;
+			} else if (val.length == 0) {
+				warnings.value = true;
+				dangers.value = true;
+			} else {
+				warnings.value = true;
+				dangers.value = false;
+			}
+		};
+		const onDeleteAlls = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getexamineTemplateDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApis();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+			//部门树
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		const data = ref();
+		return {
+			timeDate,
+			department,
+			propse,
+			data,
+			activeName,
+			ruleForm,
+			resetForm,
+			listApi,
+			handleClick,
+			onAddorUpdata,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			openAdd,
+			openD,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			ruleForms,
+			resetForms,
+			listApis,
+			onAddorUpdatas,
+			tableDatas,
+			currentPage4s,
+			pageSize4s,
+			totals,
+			handleSizeChanges,
+			handleCurrentChanges,
+			openAdds,
+			openDs,
+			onDeletes,
+			warnings,
+			dangers,
+			deletAlls,
+			handleSelectionChanges,
+			onDeleteAlls,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 20px;
+}
+.topTitle {
+	padding: 5px 0 20px 0;
+	border-bottom: 1px solid #dedede;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+</style>
diff --git a/src/views/goalManagement/processForms/component/formInformationTop.vue b/src/views/goalManagement/processForms/component/formInformationTop.vue
index e69de29..5f34405 100644
--- a/src/views/goalManagement/processForms/component/formInformationTop.vue
+++ b/src/views/goalManagement/processForms/component/formInformationTop.vue
@@ -0,0 +1,144 @@
+<template>
+    <el-form ref="form" :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标" size="default">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号" size="default">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度" size="default">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值" size="default">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" style="padding: 0 20px">
+			<el-tab-pane label="考核指标" name="1">
+				<el-table :data="tableData" style="width: 100%">
+					<el-table-column align="center" type="index" label="序号" width="70" />
+					<el-table-column align="center" prop="date" label="责任部门" />
+					<el-table-column align="center" prop="name" label="考核指标" />
+					<el-table-column align="center" prop="address" label="制定部门" />
+					<el-table-column align="center" prop="address" label="制定日期" />
+					<el-table-column align="center"  label="检查值">
+						<template #default>
+                         <el-input v-model="form.name" placeholder=""></el-input>
+						</template>
+					</el-table-column>
+					<el-table-column align="center" prop="address" label="检查人" />
+					<el-table-column align="center" prop="address" label="检查时间" />
+				</el-table>
+				<div class="tiao">
+                 <div class="typeS">审批</div>
+				</div>
+				<el-row style="padding:20px 0">
+					<el-col :span="6" style="text-align:right">一级审批:</el-col>
+					<el-col :span="18">同意</el-col>
+				</el-row>
+				<el-row style="padding:0 0 20px 0">
+					<el-col :span="6"></el-col>
+					<el-col :span="18"><span class="logoColor">同意</span><span style="margin-right: 8px;">杜建喜</span><span>2021-05-24 04:47:42</span></el-col>
+				</el-row>
+			</el-tab-pane>
+		</el-tabs>
+</template>
+<script lang="ts">
+import { defineComponent,ref,reactive } from 'vue'
+
+export default defineComponent({
+    setup() {
+        	const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+        	const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+        const activeName = ref('1');
+        return{
+            form,
+            tableData,
+            activeName
+        }
+    },
+})
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:0 0 20px 0 ;
+}
+</style>
diff --git a/src/views/goalManagement/processForms/component/formInformationTops.vue b/src/views/goalManagement/processForms/component/formInformationTops.vue
index e69de29..ba671e5 100644
--- a/src/views/goalManagement/processForms/component/formInformationTops.vue
+++ b/src/views/goalManagement/processForms/component/formInformationTops.vue
@@ -0,0 +1,162 @@
+<template>
+	<el-form ref="form" :model="form" label-width="120px">
+		<el-row>
+			<el-col :span="11">
+				<el-form-item label="安全目标指标" size="default">
+					<el-input v-model="form.name"></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :span="11" :offset="2">
+				<el-form-item label="目标指标编号" size="default">
+					<el-input v-model="form.name"></el-input>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="11">
+				<el-form-item label="年度" size="default">
+					<el-input v-model="form.name"></el-input>
+				</el-form-item>
+			</el-col>
+			<el-col :span="11" :offset="2">
+				<el-form-item label="责任部门" size="default">
+					<el-input v-model="form.name"></el-input>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="11">
+				<el-form-item label="改进期限" size="default">
+					<el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" style="width: 100%" />
+				</el-form-item>
+			</el-col>
+			<el-col :span="11" :offset="2">
+				<el-form-item label="发起人" size="default">
+					<el-input v-model="form.name"></el-input>
+				</el-form-item>
+			</el-col>
+		</el-row>
+		<el-row>
+			<el-col :span="11">
+				<el-form-item label="发起时间" size="default">
+					<el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" style="width: 100%" />
+				</el-form-item>
+			</el-col>
+		</el-row>
+	</el-form>
+	<el-tabs v-model="activeName" style="padding: 0 20px">
+		<el-tab-pane label="考核指标" name="1">
+			<el-table :data="tableData" style="width: 100%">
+				<el-table-column align="center" type="index" label="序号" width="70" />
+				<el-table-column align="center" prop="date" label="责任部门" />
+				<el-table-column align="center" prop="name" label="考核指标" />
+				<el-table-column align="center" prop="address" label="制定部门" />
+				<el-table-column align="center" prop="address" label="制定日期" />
+				<el-table-column align="center" label="检查值">
+					<template #default>
+						<el-input v-model="form.name" placeholder=""></el-input>
+					</template>
+				</el-table-column>
+				<el-table-column align="center" prop="address" label="检查人" />
+				<el-table-column align="center" prop="address" label="检查时间" />
+			</el-table>
+			<div class="tiao">
+				<div class="typeS">审批</div>
+			</div>
+			<el-row style="padding: 20px 0">
+				<el-col :span="6" style="text-align: right">一级审批:</el-col>
+				<el-col :span="18">同意</el-col>
+			</el-row>
+			<el-row style="padding: 0 0 20px 0">
+				<el-col :span="6"></el-col>
+				<el-col :span="18"><span class="logoColor">同意</span><span style="margin-right: 8px">杜建喜</span><span>2021-05-24 04:47:42</span></el-col>
+			</el-row>
+		</el-tab-pane>
+	</el-tabs>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+
+export default defineComponent({
+	setup() {
+		const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+		const tableData = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+		const activeName = ref('1');
+		return {
+			form,
+			tableData,
+			activeName,
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box {
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao {
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0;
+	position: relative;
+}
+.typeS {
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+	left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor {
+	background-color: #67c23a;
+	color: #fff;
+	padding: 5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns {
+	width: 100%;
+	padding: 20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+}
+.title2 {
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+.el-row{
+	padding:20px 0 0px 0;
+}
+</style>
diff --git a/src/views/goalManagement/processForms/component/lowerPlate.vue b/src/views/goalManagement/processForms/component/lowerPlate.vue
index e69de29..3eea9f5 100644
--- a/src/views/goalManagement/processForms/component/lowerPlate.vue
+++ b/src/views/goalManagement/processForms/component/lowerPlate.vue
@@ -0,0 +1,120 @@
+<template>
+	<div class="box">
+		<el-form ref="formS" :model="form" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="流程标题" size="default">
+						<el-input v-model="form.names" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="下级审批日期" size="default">
+						<el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+							<el-checkbox v-model="form.delivery" label="是否抄送" @change="typeChang"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.delivery">
+				<el-col :span="15">
+					<el-form-item label="抄送给" prop="resource" size="default">
+						<el-input v-model="form.resource" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="15">
+					<el-form-item label="">
+						<el-checkbox v-model="form.type" label="指定下一步处理者(不设置就使用默认处理人)"/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row v-if="form.type">
+				<el-col :span="15">
+					<el-form-item label="指定" prop="desc" size="default">
+						<el-input v-model="form.desc" placeholder="">
+							<template #append> <el-button :icon="Search" @click="openDai" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+	</div>
+	<DailogSearchUser ref="ShowUser"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'
+import { Search } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus'
+export default defineComponent({
+	components:{DailogSearchUser},
+	setup() {
+		const formS=ref<FormInstance>()
+		let form = reactive({
+			names: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: "",
+			type: "",
+			resource: '',
+			desc: '',
+		});
+    const typeChang=()=>{
+         console.log('tag',form)
+		}
+		const rules = reactive<FormRules>({
+  resource: [
+    {
+      type: 'array',
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ],
+  desc: [
+    {
+      required: true,
+      message: '用户不能为空',
+      trigger: 'change',
+    },
+  ]})
+  const ShowUser=ref()
+  const openDai =()=>{
+   ShowUser.value.openDailog()
+  }
+		return {
+			form,
+			rules,
+			formS,
+			typeChang,
+			ShowUser,
+			openDai,
+			Search,
+		};
+	},
+});
+</script>
+
+<style scoped>
+.box {
+	margin: 30px 0 100px 0;
+	background-color: #fff;
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+	padding: 20px;
+}
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/processForms/processForms.vue b/src/views/goalManagement/processForms/processForms.vue
index e69de29..331337a 100644
--- a/src/views/goalManagement/processForms/processForms.vue
+++ b/src/views/goalManagement/processForms/processForms.vue
@@ -0,0 +1,124 @@
+<template>
+	<div>
+	<h4 class="title">胡海涛2022-07-01 16:08:42发起了目标检查上报(检查)--检查</h4>
+	<div class="box">
+	<el-menu
+		:default-active="activeIndex"
+		class="el-menu-demo"
+		background-color="#ebeef5"
+		text-color="#fff"
+		active-text-color="#fff"
+		mode="horizontal"
+		@select="handleSelect"
+	>
+		<el-menu-item index="1">表单信息</el-menu-item>
+		<!-- <el-menu-item index="2">流程图</el-menu-item> -->
+	</el-menu>
+	<div v-if="activeIndex == 1" class="navType">
+		<formInformationTop v-if="false"></formInformationTop>
+		<formInformationTops></formInformationTops>
+	</div>
+	<!-- <div v-if="activeIndex == 2" class="navType" style="padding:20px 20px 0 20px">
+		<div class="title2">流程图</div>
+		<div style="width:100%;height:400px"></div>
+	</div> -->
+	</div>
+	<lowerPlate></lowerPlate>
+	<div class="btns">
+		<el-button type="primary">发起上报</el-button>
+	</div>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref,onMounted } from 'vue';
+import { useRouter } from 'vue-router';
+import formInformationTop from './component/formInformationTop.vue'
+import formInformationTops from './component/formInformationTops.vue'
+import lowerPlate from './component/lowerPlate.vue'
+export default defineComponent({
+	components:{lowerPlate,formInformationTop,formInformationTops},
+	setup() {
+		const activeIndex = ref('1');
+		const handleSelect = (key: string, keyPath: string[]) => {
+			// console.log(key, keyPath);
+			activeIndex.value = key;
+		};
+		const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+	
+		const router=useRouter()
+		const Type=onMounted(()=>{
+			console.log("xxxxxxx",router)
+		})
+		
+		return {
+			activeIndex,
+			handleSelect,
+			form,
+			router,
+			Type
+		};
+	},
+});
+</script>
+<style scoped>
+.title {
+	text-align: center;
+	font-size: 16px;
+	margin-bottom: 20px;
+}
+.box{
+	border: 1px solid #dcdfe6;
+	box-shadow: 0 2px 4px 0 rgb(0 0 0 / 12%), 0 0 6px 0 rgb(0 0 0 / 4%);
+}
+.navType {
+	background-color: #fff;
+}
+.tiao{
+	width: 100%;
+	height: 1px;
+	background-color: #dcdfe6;
+	margin: 30px 0 ;
+	position: relative;
+}
+.typeS{
+	width: 80px;
+	background-color: #fff;
+	position: absolute;
+    left: 30px;
+	top: -9px;
+	font-size: 14px;
+	text-align: center;
+}
+.logoColor{
+	background-color: #67c23a;
+	color: #fff;
+	padding:  5px 8px;
+	border-radius: 5px;
+	margin-right: 5px;
+}
+.btns{
+	width: 100%;
+	padding:20px 0;
+	background-color: #fff;
+	position: fixed;
+	bottom: 0px;
+	left: 0px;
+	text-align: center;
+	box-shadow: 0 -3px 5px 0 rgb(0 0 0 / 12%);
+	
+}
+.title2{
+	padding: 20px 0 20px 10px;
+	width: 100%;
+	border: 1px solid #dcdfe6;
+}
+</style>
diff --git a/src/views/goalManagement/safetyAssessment/component/Dailog.vue b/src/views/goalManagement/safetyAssessment/component/Dailog.vue
index e69de29..21771af 100644
--- a/src/views/goalManagement/safetyAssessment/component/Dailog.vue
+++ b/src/views/goalManagement/safetyAssessment/component/Dailog.vue
@@ -0,0 +1,264 @@
+<template>
+	<el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" title="目标分解" width="60%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标" size="default">
+						<el-input v-model="form.qName" :disabled="disabled">
+							<template #append>
+								<el-button :icon="Search" @click="daiInpt" />
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号" size="default">
+						<el-input v-model="form.indexNum" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度" size="default">
+						<el-input v-model="form.year" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值" size="default">
+						<el-input v-model="form.value" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs">
+			<el-tab-pane label="目标指标分解" name="1">
+				<!-- <el-button type="primary" size="default" @click="daiAdd('新增')" :disabled="disabled">新增</el-button> -->
+			</el-tab-pane>
+		</el-tabs>
+		<el-table :data="formUp.targetDivideDetailList" style="width: 100%">
+			<el-table-column align="center" property="dutyDepartmentName" label="责任部门" width="180" />
+			<el-table-column align="center" property="value" label="考核指标" width="180" />
+			<el-table-column align="center" property="makerDepartmentName" label="制定人部门" />
+			<el-table-column align="center" property="makeDate" :formatter="timeDate" label="制定日期" />
+			<el-table-column align="center" property="commitPersonName" label="上报人" />
+			<el-table-column align="center" label="操作">
+				<template #default="scope">
+					<el-button link type="primary" @click="daiAdd('查看', scope.row)">查看</el-button>
+					<el-button link :disabled="disabled" type="primary" @click="daiAdd('修改', scope.row)">考核</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button type="primary" v-if="disabled == false" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogAdd ref="Show" @onAdd="add"></DailogAdd>
+	<DailogSearch ref="Shows" @backNum="onNumber"></DailogSearch>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { timeDate } from '/@/assets/index.ts';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogAdd from './DailogAdd.vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import DailogSearch from '../../../../components/DailogSearch/DailogSearch.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import { emit } from 'process';
+import { deepClone } from '/@/utils/other';
+export default defineComponent({
+	components: { DailogAdd, DailogSearch },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			qName: '',
+			indexNum: '',
+			year: '',
+			value: '',
+			targetDivideDetailList: [],
+		});
+		const targetType = ref();
+		const disabled = ref(false);
+		const titles = ref();
+		const numId=ref()
+		const openDailog = (title: string, type: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value = title;
+			targetType.value = type;
+
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改') {
+				goalManagementApi()
+					.getTargetMngDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+							formUp.targetDivideDetailList = form.value.targetDivideDetailList;
+							for(let i=0;i<formUp.targetDivideDetailList.length;i++){
+								formUp.targetDivideDetailList[i].makeDate=timeC(formUp.targetDivideDetailList[i].makeDate)
+							}
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+			}
+			numId.value=id
+		};
+		const timeC = (timestamp: any) => {
+			let a = new Date(timestamp).getTime();
+			const date = new Date(a);
+			const Y = date.getFullYear() + '-';
+			const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+			const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '  ';
+			const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
+			const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
+			const s = date.getSeconds(); // 秒
+			const dateString = Y + M + D + h + m +`:${s}`;
+			// console.log('dateString', dateString); // > dateString 2021-07-06 14:23
+			return dateString;
+		};
+		const onNumber = (val: object) => {
+			form.value = val;
+		};
+		// 导航
+		const activeName = ref('1');
+		// 表格
+		const tableData = ref([]);
+		// 新增弹窗
+		const index = ref<any>();
+		const Show = ref();
+		const daiAdd = (title: string, data: any) => {
+			index.value = formUp.targetDivideDetailList.indexOf(data);
+			Show.value.openDailog(title, data);
+		};
+		const formUp = reactive({
+			targetId: '', //关联的目标指标/外键
+			delTargetDivideDetails: '', //要删除的目标指标分解ID,多个用逗号隔开
+			targetDivideDetailList: [], //目标指标分解列表
+		});
+
+		const add = (val: any) => {
+				goalManagementApi()
+					.getTargetMngDetail(numId.value)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+							formUp.targetDivideDetailList = form.value.targetDivideDetailList;
+							for(let i=0;i<formUp.targetDivideDetailList.length;i++){
+								formUp.targetDivideDetailList[i].makeDate=timeC(formUp.targetDivideDetailList[i].makeDate)
+							}
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+
+			// let obj=JSON.parse(JSON.stringify(form.value))
+		};
+		// 新增
+		const submitForm = () => {
+			formUp.delTargetDivideDetails = arr.value.toString();
+			formUp.targetId = form.value.id;
+			dialogVisible.value = false;
+			for(let i=0;i<formUp.targetDivideDetailList.length;i++){
+				delete formUp.targetDivideDetailList[i].dutyDepartmentName
+				delete formUp.targetDivideDetailList[i].makerDepartmentName
+			}
+			goalManagementApi()
+				.gettargetDivideDetail(formUp)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('addList');
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+			form.value = {
+				qName: '',
+				indexNum: '',
+				year: '',
+				value: '',
+				targetDivideDetailList: [],
+			};
+			tableData.value = [];
+			formUp.targetId = '';
+			formUp.delTargetDivideDetails = '';
+			formUp.targetDivideDetailList = [];
+		};
+		const arr = ref([]);
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog(targetType.value);
+		};
+		// 关闭
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				qName: '',
+				indexNum: '',
+				year: '',
+				value: '',
+				targetDivideDetailList: [],
+			};
+			tableData.value = [];
+			formUp.targetId = '';
+			formUp.delTargetDivideDetails = '';
+			formUp.targetDivideDetailList = [];
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		// 时间格式处理
+		// const timeDate = (data: any) => {
+		// 	let result = new Date(data).getTime();
+		// 	return result;
+		// };
+		return {
+			timeC,
+			index,
+			timeDate,
+			arr,
+			form,
+			dialogVisible,
+			openDailog,
+			activeName,
+			tableData,
+			Show,
+			daiAdd,
+			Shows,
+			daiInpt,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+			onNumber,
+			targetType,
+			disabled,
+			resetForm,
+			titles,
+			add,
+			formUp,
+			submitForm,
+			numId
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/safetyAssessment/component/DailogAdd.vue b/src/views/goalManagement/safetyAssessment/component/DailogAdd.vue
index e69de29..dc63830 100644
--- a/src/views/goalManagement/safetyAssessment/component/DailogAdd.vue
+++ b/src/views/goalManagement/safetyAssessment/component/DailogAdd.vue
@@ -0,0 +1,281 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" :title="titles" width="50%" draggable @close="resetForm(ruleFormRef)">
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" :disabled="disabled" label-width="120px" ref="ruleFormRef" :rules="rules">
+			<!-- <el-row>
+				<el-col :span="11">
+					<el-form-item label="责任部门" prop="dutyDepartmentId" size="default">
+						<el-tree-select v-model="form.dutyDepartmentId" check-strictly="true" @current-change="dutyName" :data="data" class="w100" :props="propse" placeholder="请选择" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="考核指标" prop="examineValue" size="default">
+						<el-input v-model.number="form.examineValue" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="制定人部门" prop="makerDepartmentId" size="default">
+						<el-tree-select v-model="form.makerDepartmentId" :data="data" check-strictly="true"
+										@current-change="makerDepartmentName" class="w100" :props="propse" placeholder="请选择" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="制定日期" prop="makeDate" size="default">
+						<el-date-picker v-model="form.makeDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="上报值" prop="uploadValue" size="default">
+						<el-input v-model="form.uploadValue">
+							<template #append> <el-button :icon="Search" @click="openUser" /> </template>
+            </el-input>
+					</el-form-item>
+				</el-col>
+        <el-col :span="11" :offset="2">
+          <el-form-item label="上报时间" prop="uploadDate" size="default">
+            <el-date-picker v-model="form.uploadDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
+          </el-form-item>
+        </el-col>
+			</el-row> -->
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="考核结果" prop="examineResult" size="default">
+						<el-select v-model="form.examineResult" placeholder="请选择" style="width: 100%">
+							<el-option label="合格" :value="1" />
+							<el-option label="不合格" :value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="考核人" prop="examinePersonName" size="default">
+						<el-input v-model="form.examinePersonName">
+							<template #append> <el-button :icon="Search" @click="openUser" /> </template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<!-- <el-row>
+        <el-col :span="11">
+          <el-form-item label="考核时间" prop="examineDate" size="default">
+            <el-date-picker v-model="form.examineDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="11" :offset="2"></el-col>
+      </el-row> -->
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm(ruleFormRef)" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearchUser ref="Show" @SearchUser="onUser"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, onMounted } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus';
+import DailogSearchUser from '../../../../components/DailogSearchUser/index.vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { DailogSearchUser },
+	setup(props, { emit }) {
+		const ruleFormRef = ref<FormInstance>();
+		const form = ref({
+			targetDivideDetailId: "", //关联的目标分解/外键
+			examinePersonId: "",
+			examinePersonName: '',
+			examineResult: "", //考核结果 1:合格 2:不合格
+			id: "", //目标指标ID
+		});
+		//部门
+		// const department = () => {
+		// 	goalManagementApi()
+		// 		.getTreedepartment()
+		// 		.then((res) => {
+		// 			if (res.data.code == 200) {
+		// 				data.value = res.data.data;
+		// 			} else {
+		// 				ElMessage.error(res.data.msg);
+		// 			}
+		// 		});
+		// };
+		// const propse = {
+		// 	label: 'depName',
+		// 	children: 'children',
+		// 	value: 'depId',
+		// };
+		// onMounted(() => {
+		// 	department();
+		// });
+		const disabled = ref(false);
+		// 开启弹窗
+		const titles = ref();
+		const dialogVisible = ref(false);
+		const openDailog = (title: string, data: any) => {
+			titles.value = `${title}目标考核`;
+			if (title == '查看') {
+				disabled.value = true;
+				form.value = data;
+				// form.value.id = data.targetId;
+				form.value.targetDivideDetailId=data.id
+				form.value.examinePersonName = data.examinePersonName;
+				form.value.examinePersonId=data.examinePersonId
+				form.value.examineResult=data.examineResult
+			} else if (title == '修改') {
+				console.log(data)
+				disabled.value = false;
+				// form.value.id = data.targetId;
+				form.value.targetDivideDetailId=data.id
+				form.value.examinePersonName = data.examinePersonName;
+				form.value.examinePersonId=data.examinePersonId
+				form.value.examineResult=data.examineResult
+			} else {
+				disabled.value = false;
+			}
+			dialogVisible.value = true;
+		};
+		// 开启用户弹窗
+		const Show = ref();
+		const openUser = () => {
+			Show.value.openDailog();
+		};
+		const rules = reactive<FormRules>({
+			// dutyDepartmentId: [
+			// 	{
+			// 		required: true,
+			// 		message: '责任部门不能为空',
+			// 		trigger: 'blur',
+			// 	},
+			// ],
+			// makerDepartmentId: [
+			// 	{
+			// 		required: true,
+			// 		message: '制定人部门不能为空',
+			// 		trigger: 'blur',
+			// 	},
+			// ],
+			// commitPersonId: [
+			// 	{
+			// 		required: true,
+			// 		message: '上报人不能为空',
+			// 		trigger: 'blur',
+			// 	},
+			// ],
+			// examineValue: [
+			// 	{
+			// 		required: true,
+			// 		message: '考核指标值不能为空',
+			// 		trigger: 'blur',
+			// 	},
+			// 	{
+			// 		type: 'number',
+			// 		message: '考核指标值只能为数字类型',
+			// 		trigger: 'blur',
+			// 	},
+			// ],
+			// makeDate: [
+			// 	{
+			// 		required: true,
+			// 		message: '制定日期不能为空',
+			// 		trigger: 'blur',
+			// 	},
+			// ],
+			examinePersonName: [],
+			examineResult:[]
+
+		});
+		// const dutyName = (data: any) => {
+		// 	form.value.dutyDepartmentName = data.depName;
+		// };
+		// const makerDepartmentName = (data: any) => {
+		// 	form.value.makerDepartmentName = data.depName;
+		// };
+
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					console.log(form.value)
+					dialogVisible.value = false;
+					goalManagementApi().gettargetExamineAddOrUpdate(form.value).then(res=>{
+						if(res.data.code==200){
+							ElMessage({
+							message: res.data.msg,
+							type: 'success',
+						});
+						}else{
+								ElMessage.error(res.data.msg);
+						}
+					})
+					// handleClose(formEl)
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+			emit('onAdd');
+		};
+
+		const resetForm = (formEl: FormInstance | undefined) => {
+			// console.log(formEl);
+			if (!formEl) return;
+			// formEl.resetFields();
+			dialogVisible.value = false;
+			form.value = {};
+		};
+		// const handleClose = (formEl: any) => {
+		// 	formEl.resetFields();
+		// };
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		// const data = ref();
+		const onUser = (e: any) => {
+			console.log(e);
+			form.value.examinePersonId = e.uid;
+			form.value.examinePersonName = e.realName;
+		};
+		return {
+			disabled,
+			titles,
+			// handleClose,
+			form,
+			// propse,
+			// department,
+			dialogVisible,
+			openDailog,
+			Show,
+			openUser,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+			// data,
+			onUser,
+			ruleFormRef,
+			rules,
+			submitForm,
+			resetForm,
+			// dutyName,
+			// makerDepartmentName,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/safetyAssessment/index.vue b/src/views/goalManagement/safetyAssessment/index.vue
index e69de29..f52ba71 100644
--- a/src/views/goalManagement/safetyAssessment/index.vue
+++ b/src/views/goalManagement/safetyAssessment/index.vue
@@ -0,0 +1,241 @@
+<template>
+	<div>
+		<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item size="default">
+						<el-input v-model="ruleForm.searchParams.indexNum" placeholder="请输入目标指标" />
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
+				</el-form-item>
+			</el-col> -->
+				<el-col :span="4">
+					<el-form-item>
+						<el-button size="default" type="primary" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<el-tabs v-model="ruleForm.searchParams.targetType" class="demo-tabs" @tab-click="handleClick">
+			<div class="btns">
+				<div>
+					<!-- <el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button> -->
+				</div>
+				<div>
+					<!-- <el-button size="default" :icon="Refresh"></el-button> -->
+				</div>
+			</div>
+			<el-tab-pane label="目标定制(年)" name="1"> </el-tab-pane>
+				<el-tab-pane label="目标定制(月)" name="2"></el-tab-pane>
+				<el-tab-pane label="目标定制(半年)" name="3"></el-tab-pane>
+				<el-tab-pane label="目标定制(季度)" name="4"></el-tab-pane>
+			</el-tabs>
+			<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="expand">
+					<template #default="scope">
+						<div class="tableC">
+							<el-tabs v-model="activeNames">
+								<el-tab-pane label="目标指标分解" name="1">
+									<el-table :data="scope.row.targetDivideDetailList" style="width: 100%">
+										<el-table-column align="center" prop="dutyDepartmentName" label="责任部门" />
+										<el-table-column align="center" prop="value" label="考核指标" />
+										<el-table-column align="center" prop="makerDepartmentName" label="制定人部门" />
+										<el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" />
+										<el-table-column align="center" prop="commitPersonName" label="上报人" />
+									</el-table>
+								</el-tab-pane>
+							</el-tabs>
+						</div>
+					</template>
+				</el-table-column>
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="考核指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" width="300" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="default" :icon="View" @click="openD('修改', scope.row.id)">考核</el-button>
+						<!--<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>-->
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+			<Dailog ref="openAdd"></Dailog>
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import { timeDate } from '/@/assets/index.ts';
+import Dailog from './component/Dailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '1', ////指标类型 1:年指标 2:月指标
+				divideStatus: 1, ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.gettargetExamineList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.targetType = targetType.paneName;
+			listApi();
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+			// 删除
+		const onDelete = (id: number) => {
+			var arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDailog(title, ruleForm.searchParams.targetType,id);
+		};
+       const activeNames=ref("1")
+		return {
+			timeDate,
+			activeNames,
+			listApi,
+			ruleForm,
+			resetForm,
+			handleClick,
+			tableData,
+			currentPage4,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			onAddorUpdata,
+			total,
+			openAdd,
+			openD,
+			onDelete,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetClassification/index.vue b/src/views/goalManagement/targetClassification/index.vue
index e69de29..8c59970 100644
--- a/src/views/goalManagement/targetClassification/index.vue
+++ b/src/views/goalManagement/targetClassification/index.vue
@@ -0,0 +1,261 @@
+<template>
+	<div>
+		<!-- <el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form> -->
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
+					<el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain @click="openD('修改', deletAll[0])">修改</el-button>
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column label="名称" align="center" property="typeName" sortable />
+				<el-table-column property="memo" align="center" label="描述" sortable />
+				<!-- <el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip /> -->
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="small" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="small" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		<DailogClass ref="Show" @onAdd="add"></DailogClass>
+	</div>
+</template>
+<script lang="ts">
+import DailogClass from '/@/components/DailogClass/index.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput,DailogClass },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				typeName: '', ////分类名称
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		// const resetForm = () => {
+		// 	ruleForm.searchParams.qName = '';
+		// 	ruleForm.searchParams.indexNum = '';
+		// 	listApi();
+		// };
+		const listApi = () => {
+			goalManagementApi()
+				.gettargetClassList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		const activeNames = ref('1');
+		// 打开弹窗
+		const Show = ref();
+		const openD = (title: String, id: number) => {
+			Show.value.openDailog(title, ruleForm.searchParams.targetType,id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr = [];
+			arr.push(id);
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.gettargetClassDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr;
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.gettargetClassDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		const add = () => {
+			listApi();
+		};
+		return {
+			listApi,
+			add,
+			// resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			ruleForm,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openD,
+			activeNames,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 20px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+</style>
diff --git a/src/views/goalManagement/targetDecompositionHalfYear/index.vue b/src/views/goalManagement/targetDecompositionHalfYear/index.vue
index e69de29..1ed6ed9 100644
--- a/src/views/goalManagement/targetDecompositionHalfYear/index.vue
+++ b/src/views/goalManagement/targetDecompositionHalfYear/index.vue
@@ -0,0 +1,286 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<!--<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>-->
+					 <el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain
+								@click="openD('修改', deletAll[0])">修改</el-button>
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column type="expand">
+					<template #default="scope">
+						<div class="tableC">
+							<el-tabs v-model="activeNames">
+								<el-tab-pane label="目标指标分解" name="1">
+									<el-table :data="scope.row.targetDivideDetailList" style="width: 100%">
+										<el-table-column align="center" prop="dutyDepartmentName" label="责任部门" />
+										<el-table-column align="center" prop="value" label="考核指标" />
+										<el-table-column align="center" prop="makerDepartmentName" label="制定人部门" />
+										<el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" />
+										<el-table-column align="center" prop="commitPersonName" label="上报人" />
+									</el-table>
+								</el-tab-pane>
+							</el-tabs>
+						</div>
+					</template>
+				</el-table-column>
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="small" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="small" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		<Dailog ref="Show" @addList="add"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { timeDate } from '/@/assets/index.ts';
+import search from '../targetSettings/component/search.vue';
+import Dailog from '../targetDecompositionYear/component/Dailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '3', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+			listApi()
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		const activeNames = ref('1');
+		// 打开弹窗
+		const Show = ref();
+		const openD = (title: String, id: number) => {
+			Show.value.openDailog(title, ruleForm.searchParams.targetType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+			const add=()=>{
+			listApi()
+		}
+		return {
+			timeDate,
+			add,
+			listApi,
+			resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			ruleForm,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openD,
+			activeNames,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetDecompositionMonth/index.vue b/src/views/goalManagement/targetDecompositionMonth/index.vue
index e69de29..f0510a7 100644
--- a/src/views/goalManagement/targetDecompositionMonth/index.vue
+++ b/src/views/goalManagement/targetDecompositionMonth/index.vue
@@ -0,0 +1,286 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<!--<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>-->
+					 <el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain
+								@click="openD('修改', deletAll[0])">修改</el-button>
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column type="expand">
+					<template #default="scope">
+						<div class="tableC">
+							<el-tabs v-model="activeNames">
+								<el-tab-pane label="目标指标分解" name="1">
+									<el-table :data="scope.row.targetDivideDetailList" style="width: 100%">
+										<el-table-column align="center" prop="dutyDepartmentName" label="责任部门" />
+										<el-table-column align="center" prop="value" label="考核指标" />
+										<el-table-column align="center" prop="makerDepartmentName" label="制定人部门" />
+										<el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" />
+										<el-table-column align="center" prop="commitPersonName" label="上报人" />
+									</el-table>
+								</el-tab-pane>
+							</el-tabs>
+						</div>
+					</template>
+				</el-table-column>
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="small" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="small" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		<Dailog ref="Show" @addList="add"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { timeDate } from '/@/assets/index.ts';
+import search from '../targetSettings/component/search.vue';
+import Dailog from '../targetDecompositionYear/component/Dailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '2', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+			listApi()
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		const activeNames = ref('1');
+		// 打开弹窗
+		const Show = ref();
+		const openD = (title: String, id: number) => {
+			Show.value.openDailog(title, ruleForm.searchParams.targetType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+			const add=()=>{
+			listApi()
+		}
+		return {
+			timeDate,
+			add,
+			listApi,
+			resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			ruleForm,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openD,
+			activeNames,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+</style>
diff --git a/src/views/goalManagement/targetDecompositionQuarter/index.vue b/src/views/goalManagement/targetDecompositionQuarter/index.vue
index e69de29..4f0f36d 100644
--- a/src/views/goalManagement/targetDecompositionQuarter/index.vue
+++ b/src/views/goalManagement/targetDecompositionQuarter/index.vue
@@ -0,0 +1,286 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<!--<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>-->
+					 <el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain
+								@click="openD('修改', deletAll[0])">修改</el-button>
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column type="expand">
+					<template #default="scope">
+						<div class="tableC">
+							<el-tabs v-model="activeNames">
+								<el-tab-pane label="目标指标分解" name="1">
+									<el-table :data="scope.row.targetDivideDetailList" style="width: 100%">
+										<el-table-column align="center" prop="dutyDepartmentName" label="责任部门" />
+										<el-table-column align="center" prop="value" label="考核指标" />
+										<el-table-column align="center" prop="makerDepartmentName" label="制定人部门" />
+										<el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" />
+										<el-table-column align="center" prop="commitPersonName" label="上报人" />
+									</el-table>
+								</el-tab-pane>
+							</el-tabs>
+						</div>
+					</template>
+				</el-table-column>
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="small" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="small" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		<Dailog ref="Show" @addList="add"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { timeDate } from '/@/assets/index.ts';
+import search from '../targetSettings/component/search.vue';
+import Dailog from '../targetDecompositionYear/component/Dailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '4', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+			listApi()
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		const activeNames = ref('1');
+		// 打开弹窗
+		const Show = ref();
+		const openD = (title: String, id: number) => {
+			Show.value.openDailog(title, ruleForm.searchParams.targetType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+			const add=()=>{
+			listApi()
+		}
+		return {
+			timeDate,
+			add,
+			listApi,
+			resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			ruleForm,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openD,
+			activeNames,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+</style>
diff --git a/src/views/goalManagement/targetDecompositionYear/component/Dailog.vue b/src/views/goalManagement/targetDecompositionYear/component/Dailog.vue
index e69de29..c728ad6 100644
--- a/src/views/goalManagement/targetDecompositionYear/component/Dailog.vue
+++ b/src/views/goalManagement/targetDecompositionYear/component/Dailog.vue
@@ -0,0 +1,262 @@
+<template>
+	<el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" title="目标分解" width="60%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标" size="default">
+						<el-input v-model="form.qName" :disabled="disabled">
+							<template #append>
+								<el-button :icon="Search" @click="daiInpt" />
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号" size="default">
+						<el-input v-model="form.indexNum" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度" size="default">
+						<el-input v-model="form.year" disabled />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值" size="default">
+						<el-input v-model="form.value" disabled />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs">
+			<el-tab-pane label="目标指标分解" name="1">
+				<el-button type="primary" size="default" @click="daiAdd('新增')" :disabled="disabled">新增</el-button>
+			</el-tab-pane>
+		</el-tabs>
+		<el-table :data="formUp.targetDivideDetailList" style="width: 100%">
+			<el-table-column align="center" property="dutyDepartmentName" label="责任部门" width="180" />
+			<el-table-column align="center" property="value" label="考核指标" width="180" />
+			<el-table-column align="center" property="makerDepartmentName" label="制定人部门" />
+			<el-table-column align="center" property="makeDate" :formatter="timeDate" label="制定日期" />
+			<el-table-column align="center" property="commitPersonName" label="上报人" />
+			<el-table-column align="center" label="操作">
+				<template #default="scope">
+					<el-button link type="primary" @click="daiAdd('查看', scope.row)">查看</el-button>
+					<el-button link :disabled="disabled" type="primary" @click="daiAdd('修改', scope.row)">修改</el-button>
+					<el-button link :disabled="disabled" type="primary" @click="Delete(scope.row)">删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button type="primary" v-if="disabled == false" @click="submitForm" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogAdd ref="Show" @onAdd="add"></DailogAdd>
+	<DailogSearch ref="Shows" @backNum="onNumber"></DailogSearch>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { timeDate } from '/@/assets/index.ts';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import DailogAdd from './DailogAdd.vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import DailogSearch from '../../../../components/DailogSearch/DailogSearch.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import { emit } from 'process';
+import { deepClone } from '/@/utils/other';
+export default defineComponent({
+	components: { DailogAdd, DailogSearch },
+	setup(props, { emit }) {
+		const dialogVisible = ref<boolean>(false);
+		const form = ref({
+			qName: '',
+			indexNum: '',
+			year: '',
+			value: '',
+			targetDivideDetailList: [],
+		});
+		const targetType = ref();
+		const disabled = ref(false);
+		const titles = ref();
+		const openDailog = (title: string, type: any, id: number) => {
+			dialogVisible.value = true;
+			titles.value = title;
+			targetType.value = type;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改') {
+				goalManagementApi()
+					.getTargetMngDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+							formUp.targetDivideDetailList = form.value.targetDivideDetailList;
+							for(let i=0;i<formUp.targetDivideDetailList.length;i++){
+								formUp.targetDivideDetailList[i].makeDate=timeC(formUp.targetDivideDetailList[i].makeDate)
+							}
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+			}
+		};
+		const timeC = (timestamp: any) => {
+			let a = new Date(timestamp).getTime();
+			const date = new Date(a);
+			const Y = date.getFullYear() + '-';
+			const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+			const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '  ';
+			const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
+			const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
+			const s = date.getSeconds(); // 秒
+			const dateString = Y + M + D + h + m +`:${s}`;
+			// console.log('dateString', dateString); // > dateString 2021-07-06 14:23
+			return dateString;
+		};
+		const onNumber = (val: object) => {
+			form.value = val;
+		};
+		// 导航
+		const activeName = ref('1');
+		// 表格
+		const tableData = ref([]);
+		// 新增弹窗
+		const index = ref<any>();
+		const Show = ref();
+		const daiAdd = (title: string, data: any) => {
+			index.value = formUp.targetDivideDetailList.indexOf(data);
+			Show.value.openDailog(title, data);
+		};
+		const formUp = reactive({
+			targetId: '', //关联的目标指标/外键
+			delTargetDivideDetails: '', //要删除的目标指标分解ID,多个用逗号隔开
+			targetDivideDetailList: [], //目标指标分解列表
+		});
+
+		const add = (val: any) => {
+			const item = deepClone(val);
+			console.log(item)
+			if (index.value == -1) {
+				formUp.targetDivideDetailList.push(item);
+			} else {
+				formUp.targetDivideDetailList[index.value] = item;
+			}
+
+			// let obj=JSON.parse(JSON.stringify(form.value))
+		};
+		// 新增
+		const submitForm = () => {
+			formUp.delTargetDivideDetails = arr.value.toString();
+			formUp.targetId = form.value.id;
+			dialogVisible.value = false;
+			for(let i=0;i<formUp.targetDivideDetailList.length;i++){
+				delete formUp.targetDivideDetailList[i].dutyDepartmentName
+				delete formUp.targetDivideDetailList[i].makerDepartmentName
+			}
+			goalManagementApi()
+				.gettargetDivideDetail(formUp)
+				.then((res) => {
+					if (res.data.code == 200) {
+						ElMessage({
+							message: res.data.msg,
+							type: 'success',
+						});
+						emit('addList');
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+			form.value = {
+				qName: '',
+				indexNum: '',
+				year: '',
+				value: '',
+				targetDivideDetailList: [],
+			};
+			tableData.value = [];
+			formUp.targetId = '';
+			formUp.delTargetDivideDetails = '';
+			formUp.targetDivideDetailList = [];
+		};
+		const arr = ref([]);
+		// 删除
+		const Delete = (data: any) => {
+			formUp.targetDivideDetailList.splice(form.value.targetDivideDetailList.indexOf(data), 1);
+			formUp.targetId = data.targetId;
+			arr.value.push(data.id);
+		};
+		// 安全目标指标弹窗
+		const Shows = ref();
+		const daiInpt = () => {
+			Shows.value.openDailog(targetType.value);
+		};
+		// 关闭
+		const resetForm = () => {
+			dialogVisible.value = false;
+			form.value = {
+				qName: '',
+				indexNum: '',
+				year: '',
+				value: '',
+				targetDivideDetailList: [],
+			};
+			tableData.value = [];
+			formUp.targetId = '';
+			formUp.delTargetDivideDetails = '';
+			formUp.targetDivideDetailList = [];
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		// 时间格式处理
+		// const timeDate = (data: any) => {
+		// 	let result = new Date(data).getTime();
+		// 	return result;
+		// };
+		return {
+			timeC,
+			index,
+			timeDate,
+			arr,
+			form,
+			dialogVisible,
+			openDailog,
+			activeName,
+			tableData,
+			Show,
+			daiAdd,
+			Shows,
+			daiInpt,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+			onNumber,
+			targetType,
+			disabled,
+			resetForm,
+			titles,
+			add,
+			formUp,
+			submitForm,
+			Delete,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue b/src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue
index e69de29..52680b0 100644
--- a/src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue
+++ b/src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue
@@ -0,0 +1,308 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" :title="titles" width="50%" draggable @close="resetForm(ruleFormRef)">
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" :disabled="disabled" label-width="120px" ref="ruleFormRef" :rules="rules">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="目标分类" prop="targetTypeId" size="default">
+						<el-select v-model="form.targetTypeId" class="m-2" placeholder="请选择" style="width:100%">
+							<el-option v-for="item in options" :key="item.id" :label="item.typeName" :value="item.id" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="责任人" prop="dutyPersonName" size="default">
+						<el-input v-model="form.dutyPersonName">
+							<template #append> <el-button :icon="Search" @click="openUser(1)" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="责任部门" prop="dutyDepartmentId" size="default">
+						<el-tree-select
+							v-model="form.dutyDepartmentId"
+							check-strictly="true"
+							@current-change="dutyName"
+							:data="data"
+							class="w100"
+							:props="propse"
+							placeholder="请选择"
+						/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="考核指标" prop="value" size="default">
+						<el-input v-model.number="form.value" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="制定人部门" prop="makerDepartmentId" size="default">
+						<el-tree-select
+							v-model="form.makerDepartmentId"
+							:data="data"
+							@current-change="makerName"
+							check-strictly="true"
+							class="w100"
+							:props="propse"
+							placeholder="请选择"
+						/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="制定日期" prop="makeDate" size="default">
+						<el-date-picker
+							v-model="form.makeDate"
+							format="YYYY-MM-DD HH:mm:ss"
+							value-format="YYYY-MM-DD HH:mm:ss"
+							type="datetime"
+							placeholder="请选择"
+							style="width: 100%"
+						/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="上报人" prop="commitPersonName" size="default">
+						<el-input v-model="form.commitPersonName">
+							<template #append> <el-button :icon="Search" @click="openUser(2)" /> </template
+						></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="计划措施" prop="commitPersonName" size="default">
+						<el-input v-model="form.planDesc"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+				<el-button type="primary" @click="submitForm(ruleFormRef)" :disabled="disabled" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearchUser ref="Show" @SearchUser="onUser"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive, onMounted } from 'vue';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+import type { FormInstance, FormRules } from 'element-plus';
+import DailogSearchUser from '../../../../components/DailogSearchUser/index.vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { DailogSearchUser },
+	setup(props, { emit }) {
+		const ruleFormRef = ref<FormInstance>();
+		const form = ref({
+			dutyDepartmentId: '', ////责任部门/外键
+			makerDepartmentId: '', ////制定人部门/外键
+			commitPersonId: '', ////上报人/外键
+			commitPersonName: '',
+			value: '', ////考核指标值
+			makeDate: '', ////制定日期
+			targetTypeId: '', ///目标分类
+			dutyPersonId: '', ///责任人id
+			dutyPersonName: '', ///责任人
+			planDesc: '', ///计划措施
+		});
+		//部门
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		onMounted(() => {
+			department();
+			allList()
+		});
+		const disabled = ref(false);
+		// 开启弹窗
+		const titles = ref();
+		const dialogVisible = ref(false);
+		const openDailog = (title: string, data: any) => {
+			titles.value = `${title}目标指标分解`;
+			if (title == '查看') {
+				disabled.value = true;
+				form.value = data;
+			} else if (title == '修改') {
+				disabled.value = false;
+				form.value = data;
+			} else {
+				disabled.value = false;
+			}
+			dialogVisible.value = true;
+		};
+		//  分类 All
+		const allList=()=>{
+			goalManagementApi().gettargetClassAll({}).then(res=>{
+				if(res.data.code==200){
+					options.value=res.data.data
+				}else{
+					ElMessage.error(res.data.msg);
+				}
+			})
+		}
+		// 开启用户弹窗
+		const Show = ref();
+		const openUser = (type:any) => {
+			Show.value.openDailog(type);
+		};
+		const rules = reactive<FormRules>({
+			targetTypeId: [
+				{
+					required: true,
+					message: '目标分类不能为空',
+					trigger: 'blur',
+				},
+			],
+			dutyPersonName: [
+				{
+					required: true,
+					message: '责任人不能为空',
+					trigger: 'blur',
+				},
+			],
+			dutyDepartmentId: [
+				{
+					required: true,
+					message: '责任部门不能为空',
+					trigger: 'blur',
+				},
+			],
+			makerDepartmentId: [
+				{
+					required: true,
+					message: '制定人部门不能为空',
+					trigger: 'blur',
+				},
+			],
+			commitPersonId: [
+				{
+					required: true,
+					message: '上报人不能为空',
+					trigger: 'blur',
+				},
+			],
+			value: [
+				{
+					required: true,
+					message: '考核指标值不能为空',
+					trigger: 'blur',
+				},
+				{
+					type: 'number',
+					message: '考核指标值只能为数字类型',
+					trigger: 'blur',
+				},
+			],
+			makeDate: [
+				{
+					required: true,
+					message: '制定日期不能为空',
+					trigger: 'blur',
+				},
+			],
+			commitPersonName: [],
+		});
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					emit('onAdd', form.value);
+					dialogVisible.value = false;
+					// handleClose(formEl)
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+		};
+
+		const resetForm = (formEl: FormInstance | undefined) => {
+			// console.log(formEl);
+			if (!formEl) return;
+			formEl.clearValidate();
+			dialogVisible.value = false;
+			form.value = {};
+		};
+		// const handleClose = (formEl: any) => {
+		// 	formEl.resetFields();
+		// };
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		const data = ref();
+		const onUser = (e: any, type: any) => {
+			console.log(e);
+			if (type == 1) {
+				form.value.dutyPersonId = e.uid;
+				form.value.dutyPersonName = e.realName;
+			} else if (type == 2) {
+				form.value.commitPersonId = e.uid;
+				form.value.commitPersonName = e.realName;
+			}
+		};
+		const makerName = (data: any) => {
+			form.value.makerDepartmentName = data.depName;
+		};
+		const dutyName = (data: any) => {
+			form.value.dutyDepartmentName = data.depName;
+		};
+		const options = ref([]);
+		return {
+			options,
+			allList,
+			disabled,
+			makerName,
+			dutyName,
+			titles,
+			// handleClose,
+			form,
+			propse,
+			department,
+			dialogVisible,
+			openDailog,
+			Show,
+			openUser,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+			data,
+			onUser,
+			ruleFormRef,
+			rules,
+			submitForm,
+			resetForm,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
diff --git a/src/views/goalManagement/targetDecompositionYear/index.vue b/src/views/goalManagement/targetDecompositionYear/index.vue
index e69de29..e840ca6 100644
--- a/src/views/goalManagement/targetDecompositionYear/index.vue
+++ b/src/views/goalManagement/targetDecompositionYear/index.vue
@@ -0,0 +1,284 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<div class="btns">
+				<div>
+					<!--<el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>-->
+					 <el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain
+								@click="openD('修改', deletAll[0])">修改</el-button>
+					<el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
+				</div>
+			</div>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column type="expand">
+					<template #default="scope">
+						<div class="tableC">
+							<el-tabs v-model="activeNames">
+								<el-tab-pane label="目标指标分解" name="1">
+									<el-table :data="scope.row.targetDivideDetailList" style="width: 100%">
+										<el-table-column align="center" prop="dutyDepartmentName" label="责任部门" />
+										<el-table-column align="center" prop="value" label="考核指标" />
+										<el-table-column align="center" prop="makerDepartmentName" label="制定人部门" />
+										<el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期"  />
+										<el-table-column align="center" prop="commitPersonName" label="上报人" />
+									</el-table>
+								</el-tab-pane>
+							</el-tabs>
+						</div>
+					</template>
+				</el-table-column>
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="small" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="small" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		<Dailog ref="Show" @addList="add"></Dailog>
+	</div>
+</template>
+<script lang="ts">
+import { timeDate } from '/@/assets/index.ts';
+import Dailog from './component/Dailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '1', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 下方导航与表格
+		const tableData = ref([]);
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+			listApi()
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		onMounted(() => {
+			listApi();
+		});
+
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		const activeNames = ref('1');
+		// 打开弹窗
+		const Show = ref();
+		const openD = (title: String, id: number) => {
+			Show.value.openDailog(title,ruleForm.searchParams.targetType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		// 批量删除
+		const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				warning.value = true;
+				danger.value = true;
+			} else {
+				warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		const add=()=>{
+			listApi()
+		}
+		return {
+			timeDate,
+			listApi,
+			add,
+			resetForm,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			ruleForm,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openD,
+			activeNames,
+			onDelete,
+			warning,
+			danger,
+			deletAll,
+			handleSelectionChange,
+			onDeleteAll,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+.tableC {
+	margin: 0 10%;
+}
+</style>
diff --git a/src/views/goalManagement/targetEscalation/component/Dailog.vue b/src/views/goalManagement/targetEscalation/component/Dailog.vue
index e69de29..bf223b6 100644
--- a/src/views/goalManagement/targetEscalation/component/Dailog.vue
+++ b/src/views/goalManagement/targetEscalation/component/Dailog.vue
@@ -0,0 +1,65 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="查看审批流程" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-table :data="tableData" style="width: 100%">
+			<el-table-column property="workName" label="审批人"  sortable></el-table-column>
+			<el-table-column property="title" label="审批标题"  sortable></el-table-column>
+			<el-table-column property="approvePersonName" label="编写人" sortable></el-table-column>
+			<el-table-column property="approveMemo" label="审批意见"  sortable></el-table-column>
+		</el-table>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false">关闭</el-button>
+				<!-- <el-button type="primary" @click="dialogVisible = false">确定</el-button> -->
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, reactive, ref } from 'vue';
+import { FullScreen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	setup() {
+		const dialogVisible = ref(false);
+		const form = ref({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				relateId: '', ////检查记录ID
+				relateType:"",
+				gmtCreate:[],
+			},
+		});
+		const tableData = ref();
+		const openDailog = (data: any,type:number) => {
+			dialogVisible.value = true;
+			form.value.searchParams.relateId=data
+			form.value.searchParams.relateType=type
+			goalManagementApi().getworkApproveListCode(form.value).then(res=>{
+				if(res.data.code==200){
+					tableData.value=res.data.data
+				}
+			})
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			dialogVisible,
+			tableData,
+			openDailog,
+			full,
+			toggleFullscreen,
+			form,
+			FullScreen,
+		};
+	},
+});
+</script>
diff --git a/src/views/goalManagement/targetEscalation/component/TypeDailog.vue b/src/views/goalManagement/targetEscalation/component/TypeDailog.vue
index e69de29..02c9afb 100644
--- a/src/views/goalManagement/targetEscalation/component/TypeDailog.vue
+++ b/src/views/goalManagement/targetEscalation/component/TypeDailog.vue
@@ -0,0 +1,341 @@
+<template>
+	<el-dialog :title="titleName" v-model="dialogVisible" @click="resetForm" width="70%" draggable :fullscreen="full" :close-on-click-modal="false">
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form ref="ruleFormRef" :model="form" size="default" :disabled="disabled" label-width="120px">
+			<div v-if="titleName == '发起审批'">
+				<el-row>
+					<el-col :span="11">
+						<el-form-item label="审批名称" prop="workName" size="default">
+							<el-input v-model="form.workName" :disabled="disabledT" placeholder="请填写名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="11" :offset="2">
+						<el-form-item label="审批标题" prop="title" size="default">
+							<el-input v-model="form.title" :disabled="disabledT" placeholder="请填写标题"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="11">
+						<el-form-item label="审批人" prop="approvePersonId" size="default">
+							<el-input v-model="form.approvePersonName" :disabled="disabledT" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="11" :offset="2"></el-col>
+				</el-row>
+			</div>
+			<div v-if="titleName != '发起审批'">
+				<el-row>
+					<el-col :span="11">
+						<el-form-item label="审批名称" prop="workName" size="default">
+							<el-input v-model="formUp.workName" :disabled="disabledT" placeholder="请填写名称"></el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="11" :offset="2">
+						<el-form-item label="审批标题" prop="title" size="default">
+							<el-input v-model="formUp.title" :disabled="disabledT" placeholder="请填写标题"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="11">
+						<el-form-item label="审批人" prop="approvePersonId" size="default">
+							<el-input v-model="formUp.approvePersonName" :disabled="disabledT" placeholder="请选择" class="input-with-select">
+								<template #append>
+									<el-button :icon="Search" @click="openUser" />
+								</template>
+							</el-input>
+						</el-form-item>
+					</el-col>
+					<el-col :span="11" :offset="2"></el-col>
+				</el-row>
+			</div>
+			<el-table :data="tableData" style="width: 90%;margin:20px auto">
+			<el-table-column align="center" type="index" label="序号" width="80" />
+			<el-table-column align="center" prop="makerDepartmentName" label="责任部门" />
+			<el-table-column align="center" prop="value" label="考核指标" />
+			<el-table-column align="center" prop="dutyDepartmentName" label="制定部门" />
+			<el-table-column align="center" prop="makeDate" :formatter="timeDate" label="制定日期" />
+			<el-table-column align="center" label="检查值">
+				<template #default="scope">
+					<el-input v-model="scope.row.commitValue" :disabled="disabledType" />
+				</template>
+			</el-table-column>
+			<el-table-column align="center" label="检查人">
+				<template #default="scope">
+					<el-input v-model="scope.row.personName" :disabled="disabledType">
+						<template #append> <el-button :icon="Search" @click="openUsers(scope.row)" /> </template
+					></el-input>
+				</template>
+			</el-table-column>
+		</el-table>
+			<div v-if="typeScope">
+				<el-row>
+					<el-col>
+						<el-form-item label="审批结果" prop="authorUid">
+							<el-radio-group :disabled="disabled" v-model="form.approveResult">
+								<el-radio :label="0">不通过</el-radio>
+								<el-radio :label="1">通过</el-radio>
+							</el-radio-group>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="审批意见" prop="approveMemo">
+							<el-input v-model="form.approveMemo" :disabled="disabled" type="textarea" placeholder="请填写审批意见"></el-input>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<el-row>
+					<el-col :span="24">
+						<el-form-item label="是否完成" prop="complete">
+							<el-radio-group v-model="form.approveStatus" :disabled="disabled">
+								<el-radio :label="3">是</el-radio>
+								<el-radio :label="2">否</el-radio>
+							</el-radio-group>
+						</el-form-item>
+					</el-col>
+				</el-row>
+				<div v-if="form.approveStatus == 2">
+					<el-row>
+						<el-col :span="11">
+							<el-form-item label="审批名称" prop="workName" size="default">
+								<el-input v-model="form.workName" placeholder="请填写名称"></el-input>
+							</el-form-item>
+						</el-col>
+						<el-col :span="11" :offset="2">
+							<el-form-item label="审批标题" prop="title" size="default">
+								<el-input v-model="form.title" placeholder="请填写标题"></el-input>
+							</el-form-item>
+						</el-col>
+					</el-row>
+					<el-row>
+						<el-col :span="11">
+							<el-form-item label="审批人" prop="approvePersonId" size="default">
+								<el-input v-model="form.approvePersonName" placeholder="请选择" class="input-with-select">
+									<template #append>
+										<el-button :icon="Search" @click="openUser" />
+									</template>
+								</el-input>
+							</el-form-item>
+						</el-col>
+						<el-col :span="11" :offset="2"></el-col>
+					</el-row>
+				</div>
+			</div>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm" size="default">关闭</el-button>
+				<el-button size="default" type="primary" :disabled="disabled" @click="submitForm">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+	<DailogSearchUserManger ref="userRef" @SearchUser="onUser" />
+	<DailogSearchUser ref="Show" @SearchUser="onUsers"></DailogSearchUser>
+</template>
+<script lang="ts">
+import { ref, defineComponent } from 'vue';
+import { timeDate } from '/@/assets/index.ts';
+import DailogSearchUserManger from '/@/components/DailogSearchUserManger/index.vue';
+import { ElMessage } from 'element-plus';
+import DailogSearchUser from '../../../../components/DailogSearchUser/index.vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+import { Search, FullScreen } from '@element-plus/icons-vue';
+export default defineComponent({
+	components: { DailogSearchUserManger, DailogSearchUser },
+	setup(props, { emit }) {
+		const dialogVisible = ref(false);
+		const form = ref({
+			workName: '', // 审批名称
+			title: '', //审批标题
+			approvePersonId: '',
+			approvePersonName: '',
+			approveStatus: "",
+			approveResult: '',
+			relateType: 1,
+			relateId: '',
+			relateDesc: '',
+		});
+		// 提交
+		const submitForm = () => {
+			if (titleName.value == '发起审批') {
+					let arr = [];
+			for (let i = 0; i < tableData.value.length; i++) {
+				arr.push({
+					id: tableData.value[i].id,
+					value: tableData.value[i].commitValue,
+					personName: tableData.value[i].personName,
+					personId: tableData.value[i].personId,
+				});
+			}
+			form.value.approveStatus=2
+			form.value.relateDesc = JSON.stringify(arr);
+				goalManagementApi()
+					.getworkApproveAdd(form.value)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ElMessage({
+								showClose: true,
+								message: res.data.msg,
+								type: 'success',
+							});
+							emit('onType');
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+			} else if (titleName.value == '审批') {
+				goalManagementApi()
+					.getworkApproveUpdata(form.value)
+					.then((res) => {
+						if (res.data.code == 200) {
+							ElMessage({
+								showClose: true,
+								message: res.data.msg,
+								type: 'success',
+							});
+							emit('onType');
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+			}
+			dialogVisible.value = false;
+			disabled.value = false;
+			disabledT.value = false;
+			form.value = {};
+			formUp.value = {};
+		};
+		// 关闭
+		const resetForm = () => {
+			disabled.value = false;
+			disabledT.value = false;
+			form.value = {};
+			formUp.value = {};
+			tableData.value=[];
+			dialogVisible.value = false;	
+		};
+		const titleName = ref();
+		const typeScope = ref();
+		const disabledT = ref(false);
+		const disabled = ref(false);
+		const formUp = ref({
+			workName: '',
+			title: '',
+			approvePersonName: '',
+		});
+		const tableData = ref([]);
+		const disabledType=ref()
+		// 打开弹窗
+		const openDialog = (title: string, name: any, id: number, type: number,data:any) => {
+			dialogVisible.value = true;
+			titleName.value = title;
+			form.value.relateType = type;
+			if (title == '发起审批') {
+				form.value.relateId = id;
+				typeScope.value = false;
+				goalManagementApi()
+					.getTargetMngDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							tableData.value = res.data.data.targetDivideDetailList;
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+					disabledType.value=false
+			} else if (title == '审批' || title == '查看审批') {
+				goalManagementApi()
+					.getworkApproveDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+								if (data.approveStatus==2&&data.checkApprove==true){
+								disabled.value = false;
+							} else if(data.approveStatus==2&&data.checkApprove==false) {
+								disabled.value = true;
+							}
+							form.value = res.data.data;
+							form.value.approveStatus = '';
+							formUp.value.workName = form.value.workName;
+							formUp.value.title = form.value.title;
+							formUp.value.approvePersonName = form.value.approvePersonName;
+							form.value.workName=""
+							form.value.title=""
+							form.value.approvePersonName=""
+							tableData.value=res.data.data.targetDivideDetailList
+							console.log(form.value.approvePersonName)
+						}
+					});
+					disabledType.value=true
+				typeScope.value = true;
+				disabledT.value = true;
+			}
+		};
+		// 打开用户选择弹窗
+		const userRef = ref();
+		const openUser = () => {
+			userRef.value.openDailog();
+		};
+		const index = ref();
+		const Show = ref();
+		const openUsers = (id: any) => {
+			index.value = tableData.value.indexOf(id);
+			Show.value.openDailog();
+		};
+		const onUser = (val: any) => {
+			form.value.approvePersonId = val[0].uid;
+			form.value.approvePersonName = val[0].realName;
+		};
+		const onUsers = (val: any) => {
+			tableData.value[index.value].personName = val.realName;
+			tableData.value[index.value].personId = val.uid;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			disabledType,
+			index,
+			Show,
+			onUsers,
+			openUsers,
+			formUp,
+			timeDate,
+			tableData,
+			onUser,
+			dialogVisible,
+			form,
+			disabledT,
+			submitForm,
+			resetForm,
+			titleName,
+			typeScope,
+			disabled,
+			openDialog,
+			userRef,
+			openUser,
+			full,
+			toggleFullscreen,
+			Search,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style>
+.el-row {
+	padding-bottom: 20px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetEscalation/index.vue b/src/views/goalManagement/targetEscalation/index.vue
index e69de29..22535be 100644
--- a/src/views/goalManagement/targetEscalation/index.vue
+++ b/src/views/goalManagement/targetEscalation/index.vue
@@ -0,0 +1,199 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+				<el-tab-pane label="检查" name="1"> </el-tab-pane>
+				<el-tab-pane label="上报" name="2"></el-tab-pane>
+			</el-tabs>
+			<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column v-if="activeName == 1" label="操作" align="center" show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==null" @click="TypeDailog('发起审批','检查',scope.row.id,1)">发起审批</el-button>
+						<el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==2&&scope.row.checkApprove==true"  @click="TypeDailog('审批',scope.row.id,scope.row.approveId,1,scope.row)">审批</el-button>
+						<el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==2&&scope.row.checkApprove==false" @click="TypeDailog('查看审批',scope.row.id,scope.row.approveId,1,scope.row)">查看审批</el-button>
+						<el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==3" @click="openDai(scope.row.id,1)" >查看审批流程</el-button>
+					</template>
+				</el-table-column>
+				<el-table-column v-if="activeName == 2" label="操作" align="center" show-overflow-tooltip>
+					<template #default="scope">
+							<el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==null" @click="TypeDailog('发起审批','检查',scope.row.id,2)">发起审批</el-button>
+						<el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==2&&scope.row.checkApprove==true"  @click="TypeDailog('审批',scope.row.id,scope.row.approveId,2,scope.row)">审批</el-button>
+						<el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==2&&scope.row.checkApprove==false" @click="TypeDailog('查看审批',scope.row.id,scope.row.approveId,2,scope.row)">查看审批</el-button>
+						<el-button link type="primary" size="default" :icon="EditPen" v-if="scope.row.approveStatus==3" @click="openDai(scope.row.id,2)" >查看审批流程</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+		</div>
+		<Dailog ref="Show"></Dailog>
+		<TypeDailog ref="TypeD" @onType="typeAlign" />
+	</div>
+</template>
+<script lang="ts">
+import Dailog from './component/Dailog.vue';
+import TypeDailog from './component/TypeDailog.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
+import { useRouter } from 'vue-router';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, Dailog,TypeDailog },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: 1, ////指标类型 1:年指标 2:月指标
+				divideStatus: 1, ////分解状态 1:已分解 2:未分解
+				relateType: 1, ////关联业务类型 1:目标检查 2:目标上报
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getworkApproveList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			// let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.relateType = val.paneName;
+			listApi();
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		const activeName = ref<any>('1');
+		// 记录弹窗
+		const Show = ref();
+		const openDai = (data: any,num:number) => {
+			Show.value.openDailog(data,num);
+		};
+		// 发起审批弹窗
+		const TypeD = ref();
+		const TypeDailog = (title:string,name:string,id:number,type:number,data:any) => {
+			TypeD.value.openDialog(title,name,id,type,data);
+		};
+		const typeAlign=()=>{
+			listApi();
+		}
+		return {
+			TypeD,
+			typeAlign,
+			TypeDailog,
+			activeName,
+			total,
+			handleClick,
+			ruleForm,
+			listApi,
+			onAddorUpdata,
+			tableData,
+			resetForm,
+			currentPage4,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			Show,
+			openDai,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			EditPen,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetImprovements/component/Dailogprove.vue b/src/views/goalManagement/targetImprovements/component/Dailogprove.vue
index e69de29..ee0c885 100644
--- a/src/views/goalManagement/targetImprovements/component/Dailogprove.vue
+++ b/src/views/goalManagement/targetImprovements/component/Dailogprove.vue
@@ -0,0 +1,105 @@
+<template>
+	<el-dialog v-model="dialogVisible" :fullscreen="full" title="Tips" width="50%" :before-close="handleClose">
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标指标" size="default">
+						<el-input v-model="form.name"></el-input>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标指标编号" size="default">
+						<el-input v-model="form.name" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度" size="default">
+						<el-input v-model="form.name" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="责任部门" size="default">
+						<el-input v-model="form.name" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="改进期限" size="default">
+						<el-date-picker v-model="form.date1" type="date" placeholder="选择日期时间" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2" >
+					<el-form-item label="发起人" size="default">
+						<el-input v-model="model"></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="发起时间" size="default">
+						<el-date-picker v-model="form.date1" type="date" placeholder="选择日期时间" style="width: 100%" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-tabs v-model="activeName" class="demo-tabs">
+			<el-tab-pane label="目标指标" name="first"></el-tab-pane>
+		</el-tabs>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="dialogVisible = false">关闭</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { defineComponent, ref, reactive } from 'vue';
+import { Plus, Delete, Upload, Download, Refresh, View, Search, FullScreen } from '@element-plus/icons-vue';
+export default defineComponent({
+	setup() {
+		const dialogVisible = ref(false);
+		const form = reactive({
+			name: '',
+			region: '',
+			date1: '',
+			date2: '',
+			delivery: false,
+			type: [],
+			resource: '',
+			desc: '',
+		});
+		const openDailog = () => {
+			dialogVisible.value = true;
+		};
+		const activeName = ref('first');
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		return {
+			dialogVisible,
+			form,
+			openDailog,
+			activeName,
+			Search,
+			full,
+			toggleFullscreen,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetImprovements/index.vue b/src/views/goalManagement/targetImprovements/index.vue
index e69de29..b273902 100644
--- a/src/views/goalManagement/targetImprovements/index.vue
+++ b/src/views/goalManagement/targetImprovements/index.vue
@@ -0,0 +1,307 @@
+<template>
+<div>
+	<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+		<el-row>
+			<el-col :span="4">
+				<el-form-item size="default">
+					<el-input v-model="ruleForm.pass" placeholder="安全目标指标" />
+				</el-form-item>
+			</el-col>
+			<el-col :span="4">
+				<el-form-item>
+					<el-button type="primary" size="default" @click="submitForm(ruleFormRef)">查询</el-button>
+					<el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
+				</el-form-item>
+			</el-col>
+		</el-row>
+	</el-form>
+	<div class="minCenter">
+		<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
+			<el-tab-pane label="发起改进" name="1">
+				<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+					<el-table-column label="序号" align="center" type="index" width="70" />
+					<el-table-column label="安全目标指标" align="center" sortable>
+						<template #default="scope">{{ scope.row.date }}</template>
+					</el-table-column>
+					<el-table-column property="name" align="center" label="目标指标编号" sortable />
+					<el-table-column property="address" label="年度" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="责任部门" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="考核指标" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="上报值" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="考核时间" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="考核结果" align="center" sortable show-overflow-tooltip />
+					<el-table-column label="操作" align="center" width="200" sortable show-overflow-tooltip>
+						<template #default>
+							<el-button link type="primary" size="default" :icon="View" @click="handleClick">查看</el-button>
+							<el-button link type="primary" size="default" :icon="Delete">删除</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+				<div class="pages">
+					<el-pagination
+						v-model:currentPage="currentPage4"
+						v-model:page-size="pageSize4"
+						:page-sizes="[100, 200, 300, 400]"
+						:small="small"
+						:disabled="disabled"
+						:background="background"
+						layout="total, sizes, prev, pager, next, jumper"
+						:total="400"
+						@size-change="handleSizeChange"
+						@current-change="handleCurrentChange"
+					/>
+				</div>
+			</el-tab-pane>
+			<el-tab-pane label="整改" name="2">
+				<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+					<el-table-column label="序号" align="center" type="index" width="70" />
+					<el-table-column label="安全目标指标" align="center" sortable>
+						<template #default="scope">{{ scope.row.date }}</template>
+					</el-table-column>
+					<el-table-column property="name" align="center" label="目标指标编号" sortable />
+					<el-table-column property="address" label="年度" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="责任部门" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="考核指标" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="改进期限" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="发起人" align="center" sortable show-overflow-tooltip />
+					<el-table-column property="address" label="发起时间" align="center" sortable show-overflow-tooltip />
+					<el-table-column label="操作" align="center" width="200" sortable show-overflow-tooltip>
+						<template #default>
+							<el-button link type="primary" size="default" :icon="View" @click="openDai">查看</el-button>
+							<el-button link type="primary" size="default" :icon="Delete" @click="jump">整改上报</el-button>
+						</template>
+					</el-table-column>
+				</el-table>
+				<div class="pages">
+					<el-pagination
+						v-model:currentPage="currentPage4"
+						v-model:page-size="pageSize4"
+						:page-sizes="[100, 200, 300, 400]"
+						:small="small"
+						:disabled="disabled"
+						:background="background"
+						layout="total, sizes, prev, pager, next, jumper"
+						:total="400"
+						@size-change="handleSizeChange"
+						@current-change="handleCurrentChange"
+					/>
+				</div>
+			</el-tab-pane>
+			<el-tab-pane label="验证" name="3">
+				<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+			<el-table-column label="序号" align="center" type="index" width="70" />
+			<el-table-column label="安全目标指标" align="center" sortable>
+				<template #default="scope">{{ scope.row.date }}</template>
+			</el-table-column>
+			<el-table-column property="name" align="center" label="目标指标编号" sortable />
+			<el-table-column property="address" label="年度" align="center" sortable show-overflow-tooltip />
+			<el-table-column property="address" label="责任部门" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="考核指标" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="整改值" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="整改时间" align="center" sortable show-overflow-tooltip />
+			<el-table-column label="操作" align="center" width="200" sortable show-overflow-tooltip>
+				<template #default>
+					<el-button link type="primary" size="default" :icon="View" @click="handleClick">查看</el-button>
+					<el-button link type="primary" size="default" :icon="Delete">删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<div class="pages">
+			<el-pagination
+				v-model:currentPage="currentPage4"
+				v-model:page-size="pageSize4"
+				:page-sizes="[100, 200, 300, 400]"
+				:small="small"
+				:disabled="disabled"
+				:background="background"
+				layout="total, sizes, prev, pager, next, jumper"
+				:total="400"
+				@size-change="handleSizeChange"
+				@current-change="handleCurrentChange"
+			/>
+		</div>
+			</el-tab-pane>
+			<el-tab-pane label="完成" name="4">
+				<el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
+			<el-table-column label="序号" align="center" type="index" width="70" />
+			<el-table-column label="安全目标指标" align="center" sortable>
+				<template #default="scope">{{ scope.row.date }}</template>
+			</el-table-column>
+			<el-table-column property="name" align="center" label="目标指标编号" sortable />
+			<el-table-column property="address" label="年度" align="center" sortable show-overflow-tooltip />
+			<el-table-column property="address" label="责任部门" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="考核指标" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="整改值" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="整改时间" align="center" sortable show-overflow-tooltip />
+            <el-table-column property="address" label="验证结果" align="center" sortable show-overflow-tooltip />
+			<el-table-column property="address" label="验证日期" align="center" sortable show-overflow-tooltip />
+			<el-table-column label="操作" align="center" width="200" sortable show-overflow-tooltip>
+				<template #default>
+					<el-button link type="primary" size="default" :icon="View" @click="handleClick">查看</el-button>
+					<el-button link type="primary" size="default" :icon="Delete">审批进度</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<div class="pages">
+			<el-pagination
+				v-model:currentPage="currentPage4"
+				v-model:page-size="pageSize4"
+				:page-sizes="[100, 200, 300, 400]"
+				:small="small"
+				:disabled="disabled"
+				:background="background"
+				layout="total, sizes, prev, pager, next, jumper"
+				:total="400"
+				@size-change="handleSizeChange"
+				@current-change="handleCurrentChange"
+			/>
+		</div>
+			</el-tab-pane>
+		</el-tabs>
+	</div>
+	<Dailogprove ref="Show"></Dailogprove>
+	</div>
+</template>
+<script lang="ts">
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View } from '@element-plus/icons-vue';
+interface User {
+	date: string;
+	name: string;
+	address: string;
+}
+import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
+import Dailogprove from './component/Dailogprove.vue';
+import { useRouter } from 'vue-router';
+export default defineComponent({
+	components: { ElButton, ElInput,Dailogprove},
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pass: '',
+			checkPass: '',
+		});
+		const resetForm = (formEl: FormInstance | undefined) => {
+			console.log(!formEl);
+			if (!formEl) return;
+			formEl.resetFields();
+		};
+		// 下方导航与表格
+		const activeName = ref('1');
+		const handleClick = (tab: TabsPaneContext, event: Event) => {
+			console.log(tab, event);
+		};
+		const formatter = (row: User, column: TableColumnCtx<User>) => {
+			return row.address;
+		};
+
+		const tableData: User[] = [
+			{
+				date: '2016-05-03',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-02',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-04',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-01',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-08',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-06',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+			{
+				date: '2016-05-07',
+				name: 'Tom',
+				address: 'No. 189, Grove St, Los Angeles',
+			},
+		];
+		const currentPage4 = ref(4);
+		const pageSize4 = ref(100);
+		const small = ref(false);
+		const disabled = ref(false);
+		const background = ref(false);
+		const handleSizeChange = (val: number) => {
+			console.log(`${val} items per page`);
+		};
+		const handleCurrentChange = (val: number) => {
+			console.log(`current page: ${val}`);
+		};
+        const Show=ref()
+		const openDai=()=>{
+			Show.value.openDailog()
+		}
+		const router=useRouter()
+		const jump=()=>{
+       router.push({
+		   path:"/processForms"
+	   })
+		}
+		return {
+			ruleForm,
+			resetForm,
+			activeName,
+			handleClick,
+			tableData,
+			formatter,
+			currentPage4,
+			pageSize4,
+			handleSizeChange,
+			handleCurrentChange,
+			small,
+			disabled,
+			background,
+			Show,
+			router,
+			jump,
+			openDai,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+	margin-bottom: 10px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 10px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetSettings/component/dailogAdd.vue b/src/views/goalManagement/targetSettings/component/dailogAdd.vue
index e69de29..8ab66ca 100644
--- a/src/views/goalManagement/targetSettings/component/dailogAdd.vue
+++ b/src/views/goalManagement/targetSettings/component/dailogAdd.vue
@@ -0,0 +1,284 @@
+<template>
+	<el-dialog v-model="Shows" @close="handleClose(ruleFormRef)" :fullscreen="full" :title="titles" width="50%" draggable>
+		<el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
+		<el-form :model="form" :disabled="disabled" ref="ruleFormRef" :rules="rules" label-width="120px">
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="安全目标项" prop="qName" size="default">
+						<el-input v-model="form.qName" placeholder="请填写安全目标项" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="目标编号" prop="indexNum" size="default">
+						<el-input v-model="form.indexNum" placeholder="请填写目标编号" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="年度" prop="year" size="default">
+						<el-input v-model.number="form.year" maxlength="8" placeholder="请填写年度" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="指标值" prop="value" size="default">
+						<el-input v-model.number="form.value" placeholder="请填写指标值">
+							<template #prepend>
+								<el-select v-model="form.valueSign " placeholder="请选择" style="width: 115px">
+									<el-option label="大于" :value="1" />
+									<el-option label="等于" :value="2" />
+									<el-option label="小于" :value="3" />
+								</el-select>
+							</template>
+						</el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="指标级别" size="default" prop="level">
+						<el-select v-model="form.level" placeholder="请选择" style="width: 100%">
+							<el-option label="公司级" :value="1">公司级</el-option>
+							<el-option label="部门分厂级" :value="2">部门分厂级</el-option>
+							<el-option label="工段班组级" :value="3">工段班组级</el-option>
+						</el-select>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2">
+					<el-form-item label="完成期限" size="default" prop="completeDate">
+						<el-date-picker
+							v-model="form.completeDate"
+							format="YYYY-MM-DD HH:mm:ss"
+							value-format="YYYY-MM-DD HH:mm:ss"
+							type="datetime"
+							placeholder="请选择"
+							style="width: 100%"
+						/>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row>
+				<el-col :span="11">
+					<el-form-item label="目标制定部门" size="default" prop="">
+						<el-tree-select
+							v-model="form.makerDepartmentId"
+							:data="data"
+							@current-change="makerName"
+							check-strictly="true"
+							class="w100"
+							:props="propse"
+							placeholder="请选择"
+						/>
+					</el-form-item>
+				</el-col>
+				<el-col :span="11" :offset="2"> </el-col>
+			</el-row>
+			<el-form-item label="备注信息" prop="memo">
+				<el-input v-model="form.memo" size="default" type="textarea" />
+			</el-form-item>
+		</el-form>
+		<template #footer>
+			<span class="dialog-footer">
+				<el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
+				<el-button type="primary" v-if="titles == '查看目标设定' ? false : true" @click="submitForm(ruleFormRef)" size="default">确定</el-button>
+			</span>
+		</template>
+	</el-dialog>
+</template>
+<script lang="ts">
+import { ref, toRefs, reactive, onMounted, watch, defineComponent } from 'vue';
+// import { timeDate } from '/@/assets/index.ts';
+import screenfull from 'screenfull';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
+import type { FormInstance, FormRules } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View, Search, FullScreen } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	setup(props, { emit }) {
+		let Shows = ref(false);
+		const ruleFormRef = ref<FormInstance>();
+		const form = ref({
+			indexNum: '', //目标指标编号
+			qName: '', //安全目标指标
+			year: '', //年度
+			level: '', ////指标级别 1:公司级 2:部门分厂级 3:工段班组级
+			memo: '', ////备注信息
+			targetType: '', ////指标类型 1:年指标 2:月指标
+			completeDate: '', ////完成期限
+			divideStatus: '2', ////分解状态 1:已分解 2:未分解
+			value: '', ////指标值
+			makerDepartmentId: '',
+			valueSign:""
+		});
+		const titles = ref();
+		const disabled = ref(false);
+		const titleT = ref();
+		// 打开弹窗
+		const openDialog = (title: string, value: any, id: number) => {
+			department();
+			Shows.value = true;
+			titleT.value = title;
+			titles.value = `${title}目标设定`;
+			form.value.targetType = value;
+			disabled.value = title == '查看' ? true : false;
+			if (title == '查看' || title == '修改')
+				goalManagementApi()
+					.getTargetMngDetail(id)
+					.then((res) => {
+						if (res.data.code == 200) {
+							form.value = res.data.data;
+							form.value.completeDate = timeC(form.value.completeDate);
+						} else {
+							ElMessage.error(res.data.msg);
+						}
+					});
+		};
+		const timeC = (timestamp: any) => {
+			let a = new Date(timestamp).getTime();
+			const date = new Date(a);
+			const Y = date.getFullYear() + '-';
+			const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
+			const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '  ';
+			const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
+			const m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
+			const s = date.getSeconds(); // 秒
+			const dateString = Y + M + D + h + m + `:${s}`;
+			// console.log('dateString', dateString); // > dateString 2021-07-06 14:23
+			return dateString;
+		};
+		//全屏
+		const full = ref(false);
+		const toggleFullscreen = () => {
+			if (full.value == false) {
+				full.value = true;
+			} else {
+				full.value = false;
+			}
+		};
+		const rules = reactive<FormRules>({
+			qName: [
+				{
+					required: true,
+					message: '安全目标项不能为空',
+					trigger: 'change',
+				},
+			],
+			indexNum: [
+				{
+					required: true,
+					message: '目标编号不能为空',
+					trigger: 'change',
+				},
+			],
+			year: [
+				{
+					required: true,
+					message: '年度不能为空',
+					trigger: 'change',
+				},
+			],
+			value: [
+				{
+					required: true,
+					message: '指标值不能为空',
+					trigger: 'change',
+				},
+				{
+					type: 'number',
+					message: '指标值只能为数字类型',
+					trigger: 'change',
+				},
+			],
+			level: [],
+			completeDate: [],
+			memo: [],
+		});
+		// 提交
+		const submitForm = async (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			await formEl.validate((valid, fields) => {
+				if (valid) {
+					if (titleT.value == '新建') {
+						delete form.value.id;
+					}
+					Shows.value = false;
+					goalManagementApi()
+						.getTargetMngAddOrupdata(form.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								emit('navAddorUpdata');
+							} else {
+								ElMessage.error(res.data.msg);
+								formEl.resetFields();
+							}
+						});
+					formEl.resetFields();
+				} else {
+					console.log('error submit!', fields);
+				}
+			});
+		};
+		//   取消
+		const resetForm = (formEl: FormInstance | undefined) => {
+			if (!formEl) return;
+			formEl.resetFields();
+			Shows.value = false;
+		};
+		const handleClose = (formEl: FormInstance | undefined) => {
+			formEl.resetFields();
+		};
+		//部门
+		const department = () => {
+			goalManagementApi()
+				.getTreedepartment()
+				.then((res) => {
+					if (res.data.code == 200) {
+						data.value = res.data.data;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		const propse = {
+			label: 'depName',
+			children: 'children',
+			value: 'depId',
+		};
+		const data = ref();
+		const makerName = (data: any) => {
+			form.value.makerDepartmentName = data.depName;
+		};
+		return {
+			department,
+			propse,
+			data,
+			makerName,
+			timeC,
+			openDialog,
+			handleClose,
+			titles,
+			titleT,
+			// timeDate,
+			Shows,
+			form,
+			full,
+			disabled,
+			toggleFullscreen,
+			rules,
+			ruleFormRef,
+			submitForm,
+			resetForm,
+			FullScreen,
+		};
+	},
+});
+</script>
+<style scoped>
+.el-row {
+	padding: 0 0 20px 0;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetSettings/component/search.vue b/src/views/goalManagement/targetSettings/component/search.vue
index e69de29..35b1a6a 100644
--- a/src/views/goalManagement/targetSettings/component/search.vue
+++ b/src/views/goalManagement/targetSettings/component/search.vue
@@ -0,0 +1,52 @@
+<template>
+	<el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
+		<el-row>
+			<el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.pass" size="default" placeholder="安全目标指标" />
+				</el-form-item>
+			</el-col>
+			<el-col :span="4">
+				<el-form-item>
+					<el-input v-model="ruleForm.checkPass" size="default" placeholder="目标指标编号" />
+				</el-form-item>
+			</el-col>
+			<el-col :span="16">
+				<el-form-item>
+					<el-button type="primary" size="default" @click="submitForm(ruleFormRef)">查询</el-button>
+					<el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
+				</el-form-item>
+			</el-col>
+		</el-row>
+	</el-form>
+</template>
+<script lang="ts">
+import { ref, reactive, defineComponent } from 'vue';
+import {
+  FormInstance,
+} from "element-plus";
+export default defineComponent({
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pass: '',
+			checkPass: '',
+		});
+        const resetForm = (formEl: FormInstance | undefined) => {
+      console.log(!formEl);
+      if (!formEl) return;
+      formEl.resetFields();
+    };
+		return {
+			ruleForm,
+            resetForm
+		};
+	},
+});
+</script>
+<style scoped>
+  .topTitle {
+  background-color: #fff;
+  padding: 20px 0px 20px 0px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/goalManagement/targetSettings/index.vue b/src/views/goalManagement/targetSettings/index.vue
index e69de29..0086c8e 100644
--- a/src/views/goalManagement/targetSettings/index.vue
+++ b/src/views/goalManagement/targetSettings/index.vue
@@ -0,0 +1,300 @@
+<template>
+	<div>
+		<el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
+			<el-row>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="4">
+					<el-form-item>
+						<el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
+					</el-form-item>
+				</el-col>
+				<el-col :span="16">
+					<el-form-item>
+						<el-button type="primary" size="default" @click="listApi">查询</el-button>
+						<el-button size="default" @click="resetForm">重置</el-button>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<div class="minCenter">
+			<el-tabs v-model="ruleForm.searchParams.targetType" class="demo-tabs" @tab-click="handleClick">
+				<div class="btns">
+					<div>
+						<el-button type="primary" size="default" :icon="Plus" @click="openD('新建')">新建</el-button>
+						<el-button type="danger" :disabled="danger" size="default" @click="onDeleteAll" :icon="Delete" plain>删除</el-button>
+					</div>
+					<div>
+						<!-- <el-button size="default" :icon="Upload" @click="upButton"></el-button>
+                <el-button size="default" :icon="Download"></el-button>
+                <el-button size="default" :icon="Refresh"></el-button> -->
+					</div>
+				</div>
+				<el-tab-pane label="目标定制(年)" name="1"> </el-tab-pane>
+				<el-tab-pane label="目标定制(月)" name="2"></el-tab-pane>
+				<el-tab-pane label="目标定制(半年)" name="3"></el-tab-pane>
+				<el-tab-pane label="目标定制(季度)" name="4"></el-tab-pane>
+			</el-tabs>
+			<el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
+				<el-table-column label="序号" align="center" type="index" width="70" />
+				<el-table-column type="selection" align="center" width="55" />
+				<el-table-column label="安全目标指标" align="center" property="qName" sortable />
+				<el-table-column property="indexNum" align="center" label="目标指标编号" sortable />
+				<el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="level" label="指标级别" align="center" sortable show-overflow-tooltip />
+				<el-table-column property="completeDate" label="完成期限" align="center" :formatter="timeDate" sortable show-overflow-tooltip />
+				<el-table-column label="状态" align="center" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<span v-if="scope.row.divideStatus == 1">已分解</span>
+						<span v-if="scope.row.divideStatus == 2">未分解</span>
+					</template>
+				</el-table-column>
+				<el-table-column property="memo" label="备注信息" align="center" sortable show-overflow-tooltip />
+				<el-table-column label="操作" align="center" width="300" sortable show-overflow-tooltip>
+					<template #default="scope">
+						<el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
+						<el-button link type="primary" size="default" :icon="View" @click="openD('修改', scope.row.id)">修改</el-button>
+						<el-button link type="primary" size="default" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<div class="pages">
+				<el-pagination
+					v-model:currentPage="currentPage4"
+					v-model:page-size="pageSize4"
+					:page-sizes="[10, 20, 30, 40]"
+					layout="total, sizes, prev, pager, next, jumper"
+					:total="total"
+					@size-change="handleSizeChange"
+					@current-change="handleCurrentChange"
+				/>
+			</div>
+			<dailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></dailogAdd>
+			<upData ref="upShow"></upData>
+		</div>
+	</div>
+</template>
+<script lang="ts">
+import dailogAdd from './component/dailogAdd.vue';
+import {timeDate} from '/@/assets/index.ts'
+import upData from '../../../components/updata/updata.vue';
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
+import { Plus, Delete, Upload, Download, Refresh, View } from '@element-plus/icons-vue';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	components: { ElButton, ElInput, dailogAdd, upData },
+	setup() {
+		// 搜索条件
+		const ruleForm = reactive({
+			pageSize: 10,
+			pageIndex: 1,
+			searchParams: {
+				qName: '', ////安全目标指标
+				indexNum: '', ////目标指标编号
+				targetType: '1', ////指标类型 1:年指标 2:月指标
+				divideStatus: '', ////分解状态 1:已分解 2:未分解
+			},
+		});
+		// 重置
+		const resetForm = () => {
+			ruleForm.searchParams.qName = '';
+			ruleForm.searchParams.indexNum = '';
+			listApi()
+		};
+		const listApi = () => {
+			goalManagementApi()
+				.getTargetMngList(ruleForm)
+				.then((res) => {
+					if (res.data.code == 200) {
+						tableData.value = res.data.data;
+						currentPage4.value = res.data.pageIndex;
+						pageSize4.value = res.data.pageSize;
+						total.value = res.data.total;
+					} else {
+						ElMessage.error(res.data.msg);
+					}
+				});
+		};
+		//
+		const handleClick = (val: any) => {
+			let targetType = JSON.parse(JSON.stringify(val));
+			ruleForm.searchParams.targetType = targetType.paneName;
+			listApi();
+		};
+		onMounted(() => {
+			listApi();
+		});
+		const onAddorUpdata = () => {
+			listApi();
+		};
+		// 表格
+		const tableData = ref();
+		const currentPage4 = ref();
+		const pageSize4 = ref();
+		const total = ref();
+		const small = ref(false);
+		const disabled = ref(false);
+		const background = ref(false);
+		const handleSizeChange = (val: number) => {
+			// console.log(`${val} items per page`);
+			ruleForm.pageSize = val;
+			listApi();
+		};
+		const handleCurrentChange = (val: number) => {
+			// console.log(`current page: ${val}`);
+			ruleForm.pageIndex = val;
+			listApi();
+		};
+		// 弹窗
+		const openAdd = ref();
+		const openD = (title: String, id: number) => {
+			openAdd.value.openDialog(title, ruleForm.searchParams.targetType, id);
+		};
+		// 删除
+		const onDelete = (id: number) => {
+			let arr=[]
+			arr.push(id)
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(arr)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					ElMessage({
+						type: 'info',
+						message: 'Delete canceled',
+					});
+				});
+		};
+		// 批量删除
+		// const warning = ref(true);
+		const danger = ref(true);
+		const deletAll = ref();
+		const handleSelectionChange = (val: any) => {
+			let valId = JSON.parse(JSON.stringify(val));
+			let arr = [];
+			for (let i = 0; i < valId.length; i++) {
+				arr.push(valId[i].id);
+			}
+			deletAll.value = arr
+			if (val.length == 1) {
+				// warning.value = false;
+				danger.value = false;
+			} else if (val.length == 0) {
+				// warning.value = true;
+				danger.value = true;
+			} else {
+				// warning.value = true;
+				danger.value = false;
+			}
+		};
+		const onDeleteAll = () => {
+			ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
+				confirmButtonText: '确定',
+				cancelButtonText: '取消',
+				type: 'warning',
+			})
+				.then(() => {
+					goalManagementApi()
+						.getTargetMngDelete(deletAll.value)
+						.then((res) => {
+							if (res.data.code == 200) {
+								ElMessage({
+									message: res.data.msg,
+									type: 'success',
+								});
+								listApi();
+							} else {
+								ElMessage.error(res.data.msg);
+							}
+						});
+				})
+				.catch(() => {
+					// ElMessage({
+					// 	type: 'info',
+					// 	message: 'Delete canceled',
+					// });
+				});
+		};
+		// 上传
+		// const upShow = ref();
+		// const upButton = () => {
+		// 	upShow.value.openDialog();
+		// };
+		return {
+			timeDate,
+			tableData,
+			currentPage4,
+			pageSize4,
+			total,
+			handleSizeChange,
+			handleCurrentChange,
+			handleClick,
+			openAdd,
+			openD,
+			// upShow,
+			// upButton,
+			small,
+			disabled,
+			background,
+			Plus,
+			Delete,
+			Upload,
+			Download,
+			Refresh,
+			View,
+			listApi,
+			ruleForm,
+			resetForm,
+			onAddorUpdata,
+			onDelete,
+			handleSelectionChange,
+			deletAll,
+			danger,
+			onDeleteAll,
+		};
+	},
+});
+</script>
+<style scoped>
+.topTitle {
+	background-color: #fff;
+	padding: 20px 0px 20px 0px;
+}
+.minCenter {
+	width: 100%;
+	background-color: #fff;
+	margin-top: 10px;
+	padding: 0 20px;
+}
+.btns {
+	padding: 0px 0px 10px 0px;
+	display: flex;
+	justify-content: space-between;
+}
+.pages {
+	padding: 20px 0;
+	display: flex;
+	justify-content: right;
+}
+</style>
diff --git a/src/views/goalManagement/targetStatistics/index.vue b/src/views/goalManagement/targetStatistics/index.vue
index e69de29..bffcc0e 100644
--- a/src/views/goalManagement/targetStatistics/index.vue
+++ b/src/views/goalManagement/targetStatistics/index.vue
@@ -0,0 +1,92 @@
+<template>
+	<div style="background-color: #fff">
+	  <h2 style="line-height:40px;text-align: center;padding: 20px 0;">目标完成情况统计</h2>
+		<el-row style="padding:20px 0">
+			<el-col :span="4" :offset="17">
+				<el-select v-model="form.targetType" placeholder="" @change="listApi" style="width:100%">
+					<el-option label="年指标" :value="1" />
+					<el-option label="月指标" :value="2" />
+					<el-option label="半年" :value="3" />
+					<el-option label="季度" :value="4" />
+				</el-select>
+			</el-col>
+		</el-row>
+		<div ref="main" style="width: 100%; height: 450px;"></div>
+	</div>
+</template>
+<script lang="ts">
+import { defineComponent, onMounted, ref } from 'vue';
+import * as echarts from 'echarts';
+import { ElMessage } from 'element-plus';
+import { goalManagementApi } from '/@/api/goalManagement';
+export default defineComponent({
+	setup() {
+		const form = ref({
+			qName: '',
+			indexNum: '',
+			targetType: 1,
+			divideStatus: '',
+		});
+		onMounted(() => {
+			listApi();
+		});
+		const listApi = () => {
+			goalManagementApi()
+				.gettargetstatistics(form.value.targetType)
+				.then((res) => {
+					let arr = [];
+					arr.push({
+						value: res.data.data.noComplete,
+						name: `未完成 ${res.data.data.noComplete}`,
+					});
+					arr.push({
+						value: res.data.data.complete,
+						name: `已完成 ${res.data.data.complete}`,
+					});
+					init(arr);
+				});
+		};
+		const main = ref();
+		const init = (data: any) => {
+			var myChart = echarts.init(main.value);
+			var option = {
+				// title: {
+				// 	text: 'Referer of a Website',
+				// 	subtext: 'Fake Data',
+				// 	left: 'center',
+				// },
+				tooltip: {
+					trigger: 'item',
+				},
+				legend: {
+					orient: 'vertical',
+					left: '30%',
+				},
+				series: [
+					{
+						// name: 'Access From',
+						type: 'pie',
+						radius: '90%',
+						data: data,
+						emphasis: {
+							itemStyle: {
+								shadowBlur: 10,
+								shadowOffsetX: 0,
+								shadowColor: 'rgba(0, 0, 0, 0.5)',
+							},
+						},
+					},
+				],
+			};
+
+			myChart.setOption(option);
+		};
+		return {
+			form,
+			main,
+			init,
+			listApi,
+		};
+	},
+});
+</script>
diff --git a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue b/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue
index f5c4e63..d897b89 100644
--- a/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue
+++ b/src/views/intellectInspect/inspectTaskManage/inspectTask/index.vue
@@ -23,7 +23,7 @@
                 <div class="main-card">
                     <el-row class="cardTop">
                         <el-col :span="12" class="mainCardBtn">
-                            <el-button type="primary" :icon="Plus" size="default" @click="openInspectTaskDialog('新增', {})">新建</el-button>
+                            <el-button type="primary" :icon="Plus" size="default" @click="openInspectTaskDialog('新增', {})">新增</el-button>
                             <!--                            <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
                         </el-col>
                         <el-button type="primary" :icon="Refresh" size="default" />
diff --git a/src/views/intellectInspect/intelligentLine/index.vue b/src/views/intellectInspect/intelligentLine/index.vue
index f27787a..3040a58 100644
--- a/src/views/intellectInspect/intelligentLine/index.vue
+++ b/src/views/intellectInspect/intelligentLine/index.vue
@@ -17,6 +17,7 @@
         <div class="blocks">
             <div>
             <div class="star-pic">
+                <dv-decoration-12 scanDur="5" haloDur="4" class="scan"/>
                 <div class="star-bg"><img src="../../../assets/loginPage/star-bg.png" /></div>
                 <div class="star"><img src="../../../assets/loginPage/device-pic.png" /></div>
             </div>
@@ -1003,9 +1004,10 @@
                 display: flex;
                 justify-content: center;
                 align-items: flex-start;
-                overflow: hidden;
-                overflow-x: auto;
-                overflow-y: auto;
+                overflow: auto;
+
+                &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+                &::scrollbar { width: 0; height: 0; color: transparent; }
             }
 
             .line-map {
@@ -1364,15 +1366,28 @@
                 position: absolute;
                 width: calc((100vw - 120px) / 7);
                 height: calc((100vw - 120px) / 7);
-                z-index: 999999999;
+                z-index: 9999;
                 bottom: 40px;
                 right: 40px;
                 padding: 20px;
+
+                .scan{
+                    position: inherit;
+                    width: 65%;
+                    height: 65%;
+                    z-index: 99997;
+                    left: 0;
+                    top: 0;
+                    right: 0;
+                    bottom: 0;
+                    margin: auto;
+                }
 
                 .star-bg {
                     position: inherit;
                     width: 100%;
                     height: 100%;
+                    z-index: 99998;
                     left: 0;
                     top: 0;
                     img {
@@ -1381,11 +1396,11 @@
                         animation: circle 30s linear infinite;
                     }
                 }
-
                 .star {
                     position: inherit;
                     width: 100%;
                     height: 100%;
+                    z-index: 99999;
                     left: 0;
                     top: 0;
                     img {
diff --git a/src/views/newHome/index.vue b/src/views/newHome/index.vue
index ca2e034..70df9bf 100644
--- a/src/views/newHome/index.vue
+++ b/src/views/newHome/index.vue
@@ -415,6 +415,24 @@
 </script>
 
 <style scoped lang="scss">
+    @keyframes showDown {
+        100% {
+            position: absolute;
+            top: 60px;
+        }
+    }
+    @keyframes moveDown {
+        100% {
+            position: absolute;
+            top: 0;
+        }
+    }
+    @keyframes moveRight {
+        100% {
+            position: absolute;
+            left: 0;
+        }
+    }
 @media screen and (min-width: 1400px) {
     .gridCont {
         width: 100%;
@@ -537,7 +555,6 @@
                 line-height: 30px;
                 height: 40%;
                 color: #072270;
-                margin-bottom: 1px;
                 margin-bottom: 2px;
             }
             .enTit {
@@ -710,35 +727,29 @@
         display: flex;
         justify-content: center;
         box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
-        animation: showDown 0.6s 1 ease forwards;
-
-        @keyframes showDown {
-            100% {
-                position: absolute;
-                top: 0;
-            }
-        }
     }
     .topPanelBg {
         position: absolute;
         width: 100%;
         height: 60px;
-        top: 0;
+        top: -60px;
         left: 0;
         background: rgba(255, 255, 255, 0.8);
         z-index: 9;
+        animation: moveDown 0.6s 1 ease forwards;
     }
     .topPanelCont {
         position: absolute;
         width: 100%;
         height: 60px;
         padding: 0 50px;
-        top: 0;
+        top: -60px;
         left: 0;
         display: flex;
         align-items: center;
         justify-content: space-between;
         z-index: 999;
+        animation: moveDown 0.6s 1 ease forwards;
 
         .topLogo {
             display: flex;
@@ -790,26 +801,29 @@
     }
     .leftCont {
         position: absolute;
-        left: 0;
+        left: -100px;
         top: 0;
         width: 240px;
         height: 100%;
         z-index: 99;
         background: url('../../assets/newMenu/leftbg.png') no-repeat center;
         background-size: 100% 100%;
+        animation: moveRight .8s 1 ease forwards;
     }
     .topCont {
         position: absolute;
         width: 100%;
         height: 200px;
         left: 0;
-        top: 60px;
+        top: 30px;
         padding: 0 40px 0 120px;
         z-index: 99999;
         display: flex;
         flex-direction: column;
         justify-content: center;
         align-items: flex-start;
+        animation: showDown 0.6s 1 ease forwards;
+
         .topInfo {
             width: 100%;
             display: flex;
@@ -885,7 +899,7 @@
 
                 &:hover {
                     background-image: radial-gradient(ellipse farthest-side at 50% 100%, #48a3ff 0%, #fff 120%);
-                    box-shadow: 8px 8px 24px rgba(20, 97, 234, 0.2), -8px -8px 24px #fafafa;
+                    box-shadow: -8px -8px 24px rgba(20, 97, 234, 0.2), 8px 8px 24px rgba(20, 97, 234, 0.2);
                 }
             }
             .cont-bg-1 {
diff --git a/src/views/riskWarningSys/accidentLevel/index.vue b/src/views/riskWarningSys/accidentLevel/index.vue
index 749e011..473ab13 100644
--- a/src/views/riskWarningSys/accidentLevel/index.vue
+++ b/src/views/riskWarningSys/accidentLevel/index.vue
@@ -5,7 +5,7 @@
 			<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="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>
diff --git a/src/views/riskWarningSys/educationAndTraining/index.vue b/src/views/riskWarningSys/educationAndTraining/index.vue
index 8ddea74..c71c7b6 100644
--- a/src/views/riskWarningSys/educationAndTraining/index.vue
+++ b/src/views/riskWarningSys/educationAndTraining/index.vue
@@ -5,7 +5,7 @@
 			<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="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>
diff --git a/src/views/riskWarningSys/emergencyDrills/index.vue b/src/views/riskWarningSys/emergencyDrills/index.vue
index b7548a3..87d3c2b 100644
--- a/src/views/riskWarningSys/emergencyDrills/index.vue
+++ b/src/views/riskWarningSys/emergencyDrills/index.vue
@@ -5,7 +5,7 @@
 			<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="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>
diff --git a/src/views/riskWarningSys/riskLevel/index.vue b/src/views/riskWarningSys/riskLevel/index.vue
index a24b9f7..b763284 100644
--- a/src/views/riskWarningSys/riskLevel/index.vue
+++ b/src/views/riskWarningSys/riskLevel/index.vue
@@ -5,7 +5,7 @@
 			<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="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>
diff --git a/src/views/riskWarningSys/warningBigScreen/components/message.vue b/src/views/riskWarningSys/warningBigScreen/components/message.vue
index e2ab6ee..6f3b789 100644
--- a/src/views/riskWarningSys/warningBigScreen/components/message.vue
+++ b/src/views/riskWarningSys/warningBigScreen/components/message.vue
@@ -39,18 +39,18 @@
 				config:{
 					header: ['消息列表', '同比'],
 					data: [
-						['一月预警消息SPI报告', '↑ 94%'],
-						['二月预警消息SPI报告', '↑ 94%'],
-						['三月预警消息SPI报告', '↑ 94%'],
-						['四月预警消息SPI报告', '↑ 94%'],
-						['五月预警消息SPI报告', '↑ 94%'],
-						['六月预警消息SPI报告', '↑ 94%'],
-						['七月预警消息SPI报告', '↑ 94%'],
-						['八月预警消息SPI报告', '↑ 94%'],
-						['九月预警消息SPI报告', '↑ 94%'],
-						['十月预警消息SPI报告', '↑ 94%'],
-						['十一月预警消息SPI报告', '↑ 94%'],
-						['十二月预警消息SPI报告', '↑ 94%']
+						['一月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'],
+						['二月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'],
+						['三月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'],
+						['四月预警消息SPI报告', '<span style="color:red;">↓ 43%</span>'],
+						['五月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'],
+						['六月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'],
+						['七月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'],
+						['八月预警消息SPI报告', '<span style="color:red;">↓ 65%</span>'],
+						['九月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'],
+						['十月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'],
+						['十一月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>'],
+						['十二月预警消息SPI报告', '<span style="color:#4CF475;">↑ 94%</span>']
 					],
 					index: true,
 					columnWidth: [60],
diff --git a/src/views/riskWarningSys/warningBigScreen/index.vue b/src/views/riskWarningSys/warningBigScreen/index.vue
index 164931e..b954ce2 100644
--- a/src/views/riskWarningSys/warningBigScreen/index.vue
+++ b/src/views/riskWarningSys/warningBigScreen/index.vue
@@ -339,8 +339,8 @@
                 }else{
                     document.getElementById('container').setAttribute( "class", 'light' )
                     state.boxBg = '#fff'
-                    state.boxColor = ['#ccc','#333']
-                    state.boxBigColor = ['#666','#fff']
+                    state.boxColor = ['#fff','#ccc']
+                    state.boxBigColor = ['#999','#fff']
                 }
             }
 
@@ -353,8 +353,8 @@
                 }else{
                     window.document.getElementById('container').setAttribute( "class", 'light' );
                     state.boxBg = '#fff'
-                    state.boxColor = ['#ccc','#333']
-                    state.boxBigColor = ['#666','#fff']
+                    state.boxColor = ['#fff','#ccc']
+                    state.boxBigColor = ['#999','#fff']
                 }
             }
 
diff --git a/src/views/riskWarningSys/warningBigScreen/indexs/index.vue b/src/views/riskWarningSys/warningBigScreen/indexs/index.vue
index 87d78cc..570d38d 100644
--- a/src/views/riskWarningSys/warningBigScreen/indexs/index.vue
+++ b/src/views/riskWarningSys/warningBigScreen/indexs/index.vue
@@ -49,7 +49,16 @@
             <div v-else>当前应急物资储备情况(总)</div>
             <dv-decoration8 :color="lineColor" :reverse="true" style="width:100%;" />
           </div>
-          <div class="des-main">
+          <div v-if="curChart===2" class="des-main">
+            <div>
+              <h4>距上次【<span>{{trainDesc.title}}</span>】应急演练结束<span>{{trainDesc.total}}</span>天</h4>
+              <h4>
+                应急演练分月情况汇总:
+              </h4>
+              <p v-for="(item,index) in trainDesc.list" :key="index">{{item.month}}应急演练次数:{{item.num}}次</p>
+            </div>
+          </div>
+          <div v-else class="des-main">
             <div v-for="(item,index) in accidentDesc" :key="index">
               <h4><span>{{item.title}}</span>共计:<span>{{item.total}}</span>起</h4>
               <h4>
@@ -86,6 +95,7 @@
     optionList: Array<any>;
     lineColor: Array<string>;
     accidentDesc: Array<any>;
+    trainDesc: Object;
   }
   export default defineComponent({
     name: 'warningPage',
@@ -182,7 +192,45 @@
             total: 150,
             desc: '死亡人数:0人; 重伤人数:0人; 轻伤人数:0人; 直接经济损失:9万元'
           }
-        ]
+        ],
+        trainDesc:{
+          title: '公司级',
+          total: 5,
+          list: [
+            {
+              month: '一月份',
+              num: 23
+            },
+            {
+              month: '二月份',
+              num: 76
+            },
+            {
+              month: '三月份',
+              num: 152
+            },
+            {
+              month: '四月份',
+              num: 200
+            },
+            {
+              month: '五月份',
+              num: 49
+            },
+            {
+              month: '六月份',
+              num: 83
+            },
+            {
+              month: '七月份',
+              num: 102
+            },
+            {
+              month: '八月份',
+              num: 99
+            }
+          ]
+        }
       });
 
       // 页面载入时执行方法
@@ -347,6 +395,7 @@
             color: #11FEEE;
 
             &::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
+            &::scrollbar { width: 0; height: 0; color: transparent; }
 
             &>div{
               margin-bottom: 2rem;
diff --git a/src/views/specialWorkSystem/afterWorkManage/workTicketCheck/index.vue b/src/views/specialWorkSystem/afterWorkManage/workTicketCheck/index.vue
index 3026179..1a5f98e 100644
--- a/src/views/specialWorkSystem/afterWorkManage/workTicketCheck/index.vue
+++ b/src/views/specialWorkSystem/afterWorkManage/workTicketCheck/index.vue
@@ -15,7 +15,7 @@
 			<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="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>
diff --git a/src/views/specialWorkSystem/afterWorkManage/workTicketRecord/index.vue b/src/views/specialWorkSystem/afterWorkManage/workTicketRecord/index.vue
index 34de123..0345cbd 100644
--- a/src/views/specialWorkSystem/afterWorkManage/workTicketRecord/index.vue
+++ b/src/views/specialWorkSystem/afterWorkManage/workTicketRecord/index.vue
@@ -18,7 +18,7 @@
 			<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="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>
diff --git a/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/approveTypeSetting/index.vue b/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/approveTypeSetting/index.vue
index 9c81495..2dfc9d6 100644
--- a/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/approveTypeSetting/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/approveTypeSetting/index.vue
@@ -14,7 +14,7 @@
 			<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="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>
diff --git a/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/linkSetting/index.vue b/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/linkSetting/index.vue
index 3dc4b96..46cbd7a 100644
--- a/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/linkSetting/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/linkSetting/index.vue
@@ -5,7 +5,7 @@
 			<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="primary" :icon="Plus" size="default" @click="dialogAddRecord=true">新增审批环节</el-button>
 						<el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>
 					</el-col>
 					<el-button type="primary" :icon="Refresh" size="default"/>
diff --git a/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/reportTypeSetting/index.vue b/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/reportTypeSetting/index.vue
index 0c0edee..68b22ee 100644
--- a/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/reportTypeSetting/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManage/approveLinkSettings/reportTypeSetting/index.vue
@@ -5,7 +5,7 @@
 			<div class="main-card">
 				<el-row class="cardTop">
 					<el-col :span="12" class="mainCardBtn">
-						<el-button type="primary" size="default" @click="addReport">新建上报类型</el-button>
+						<el-button type="primary" size="default" @click="addReport">新增上报类型</el-button>
 					</el-col>
 				</el-row>
 				<el-table ref="multipleTableRef"
@@ -43,7 +43,7 @@
 			</div>
 		</div>
 		</div>
-		<el-dialog v-model="dialogAddForm" title="新建上报类型" @close="dialogColse">
+		<el-dialog v-model="dialogAddForm" title="新增上报类型" @close="dialogColse">
 			<el-form :model="reportForm" label-width="120px" ref="ruleFormRef" :rules="addRules">
 				<el-form-item label="上报数据类型" prop="type">
 					<el-select v-model="reportForm.type" placeholder="选择上报数据类型">
diff --git a/src/views/specialWorkSystem/approveProcessManage/approveProcessList/index.vue b/src/views/specialWorkSystem/approveProcessManage/approveProcessList/index.vue
index d548c7c..0f6a0eb 100644
--- a/src/views/specialWorkSystem/approveProcessManage/approveProcessList/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManage/approveProcessList/index.vue
@@ -14,7 +14,7 @@
 			<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" v-throttle>新建</el-button>
+						<el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord=true" v-throttle>新增</el-button>
 						<el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>
 						<el-button type="success" size="default" plain>设置分类</el-button>
 					</el-col>
diff --git a/src/views/specialWorkSystem/approveProcessManage/examineTemplate/index.vue b/src/views/specialWorkSystem/approveProcessManage/examineTemplate/index.vue
index 2360714..8c2afdd 100644
--- a/src/views/specialWorkSystem/approveProcessManage/examineTemplate/index.vue
+++ b/src/views/specialWorkSystem/approveProcessManage/examineTemplate/index.vue
@@ -14,7 +14,7 @@
                 <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" v-throttle>新建</el-button>
+                            <el-button type="primary" :icon="Plus" size="default" @click="dialogAddRecord = true" v-throttle>新增</el-button>
                             <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>
                             <el-button type="success" size="default" plain>设置分类</el-button>
                         </el-col>
diff --git a/src/views/specialWorkSystem/foundationSet/safetyAction/index.vue b/src/views/specialWorkSystem/foundationSet/safetyAction/index.vue
index 2f51399..cc6d5a6 100644
--- a/src/views/specialWorkSystem/foundationSet/safetyAction/index.vue
+++ b/src/views/specialWorkSystem/foundationSet/safetyAction/index.vue
@@ -27,7 +27,7 @@
                 <div class="main-card">
                     <el-row class="cardTop">
                         <el-col :span="12" class="mainCardBtn">
-                            <el-button type="primary" :icon="Plus" size="default" @click="openSafetyActionDialog('新增', {})">新建</el-button>
+                            <el-button type="primary" :icon="Plus" size="default" @click="openSafetyActionDialog('新增', {})">新增</el-button>
                             <el-button type="danger" :icon="Delete" size="default" @click="deleteMoreSafetyAction" plain>批量删除</el-button>
                         </el-col>
                         <el-button type="primary" :icon="Refresh" size="default" />
diff --git a/src/views/specialWorkSystem/workAlert/alertRecord/index.vue b/src/views/specialWorkSystem/workAlert/alertRecord/index.vue
index f30e7c6..7ce10ae 100644
--- a/src/views/specialWorkSystem/workAlert/alertRecord/index.vue
+++ b/src/views/specialWorkSystem/workAlert/alertRecord/index.vue
@@ -41,7 +41,7 @@
 				<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="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button>-->
 <!--						</el-col>-->
 <!--						<el-button type="primary" :icon="Refresh" size="default"/>-->
 <!--					</el-row>-->
diff --git a/src/views/specialWorkSystem/workBasicManage/certificateFilterSetting/index.vue b/src/views/specialWorkSystem/workBasicManage/certificateFilterSetting/index.vue
index 5506079..5d47070 100644
--- a/src/views/specialWorkSystem/workBasicManage/certificateFilterSetting/index.vue
+++ b/src/views/specialWorkSystem/workBasicManage/certificateFilterSetting/index.vue
@@ -17,7 +17,7 @@
 			<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="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>
diff --git a/src/views/specialWorkSystem/workBasicManage/personalProtectDevices/index.vue b/src/views/specialWorkSystem/workBasicManage/personalProtectDevices/index.vue
index f8bd4c3..29c6088 100644
--- a/src/views/specialWorkSystem/workBasicManage/personalProtectDevices/index.vue
+++ b/src/views/specialWorkSystem/workBasicManage/personalProtectDevices/index.vue
@@ -14,7 +14,7 @@
 			<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="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>
diff --git a/src/views/specialWorkSystem/workBasicManage/safeMeasuresManage/index.vue b/src/views/specialWorkSystem/workBasicManage/safeMeasuresManage/index.vue
index 4964f20..a5abd21 100644
--- a/src/views/specialWorkSystem/workBasicManage/safeMeasuresManage/index.vue
+++ b/src/views/specialWorkSystem/workBasicManage/safeMeasuresManage/index.vue
@@ -22,7 +22,7 @@
 			<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="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>
diff --git a/src/views/specialWorkSystem/workBasicManage/workTypeSetting/index.vue b/src/views/specialWorkSystem/workBasicManage/workTypeSetting/index.vue
index 6d97c46..2acbc5e 100644
--- a/src/views/specialWorkSystem/workBasicManage/workTypeSetting/index.vue
+++ b/src/views/specialWorkSystem/workBasicManage/workTypeSetting/index.vue
@@ -19,7 +19,7 @@
 			<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="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>
diff --git a/src/views/specialWorkSystem/workFlow/approveBasic/index.vue b/src/views/specialWorkSystem/workFlow/approveBasic/index.vue
index 47badfd..9f2ec17 100644
--- a/src/views/specialWorkSystem/workFlow/approveBasic/index.vue
+++ b/src/views/specialWorkSystem/workFlow/approveBasic/index.vue
@@ -21,7 +21,7 @@
                 <div class="main-card">
                     <el-row class="cardTop">
                         <el-col :span="12" class="mainCardBtn">
-                            <el-button type="primary" :icon="Plus" size="default" @click="openApproveBasicDialog('新增', {})">新建</el-button>
+                            <el-button type="primary" :icon="Plus" size="default" @click="openApproveBasicDialog('新增', {})">新增</el-button>
                             <el-button type="danger" :icon="Delete" size="default" @click="deleteMoreApproveBasic" plain>批量删除</el-button>
                         </el-col>
                         <el-button type="primary" :icon="Refresh" size="default" />
diff --git a/src/views/specialWorkSystem/workFlow/approveRule/index.vue b/src/views/specialWorkSystem/workFlow/approveRule/index.vue
index 3f7f8b8..f78529f 100644
--- a/src/views/specialWorkSystem/workFlow/approveRule/index.vue
+++ b/src/views/specialWorkSystem/workFlow/approveRule/index.vue
@@ -31,7 +31,7 @@
                 <div class="main-card">
                     <el-row class="cardTop">
                         <el-col :span="12" class="mainCardBtn">
-                            <el-button type="primary" :icon="Plus" size="default" @click="openApproveRuleDialog('新增', {})">新建</el-button>
+                            <el-button type="primary" :icon="Plus" size="default" @click="openApproveRuleDialog('新增', {})">新增</el-button>
                             <el-button type="danger" :icon="Delete" size="default" @click="deleteMoreApproveRule" plain>批量删除</el-button>
                         </el-col>
                         <el-button type="primary" :icon="Refresh" size="default" />
diff --git a/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue b/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue
index d787438..b9f54fa 100644
--- a/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue
+++ b/src/views/specialWorkSystem/workPlan/workAppointSummary/index.vue
@@ -26,7 +26,7 @@
 			<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="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>
diff --git a/src/views/specialWorkSystem/workPlan/workReservation/index.vue b/src/views/specialWorkSystem/workPlan/workReservation/index.vue
index 7a1cc8d..7c89a19 100644
--- a/src/views/specialWorkSystem/workPlan/workReservation/index.vue
+++ b/src/views/specialWorkSystem/workPlan/workReservation/index.vue
@@ -26,7 +26,7 @@
 			<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="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>
diff --git a/src/views/specialWorkSystem/workProcess/gasCheck/index.vue b/src/views/specialWorkSystem/workProcess/gasCheck/index.vue
index 7e4c300..f8a0c36 100644
--- a/src/views/specialWorkSystem/workProcess/gasCheck/index.vue
+++ b/src/views/specialWorkSystem/workProcess/gasCheck/index.vue
@@ -28,7 +28,7 @@
 				<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="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button>
 						</el-col>
 						<el-button type="primary" :icon="Refresh" size="default"/>
 					</el-row>
@@ -42,7 +42,12 @@
 						<el-table-column type="index" label="序号" width="200"/>
 						<el-table-column property="id" label="作业证编号" width="200"/>
 						<el-table-column property="workType" label="作业类型" width="200"/>
-						<el-table-column property="combustible" label="可燃气%"/>
+<!--						<el-table-column property="combustible" label="可燃气%"/>-->
+						<el-table-column property="combustible" label="可燃气%">
+							<template #default="scope">
+								<span :class="scope.row.combustible > 0 ? 'red': ''">{{ scope.row.combustible }}</span>
+							</template>
+						</el-table-column>
 						<el-table-column property="oxygen" label="氧气%"/>
 						<el-table-column property="co" label="一氧化碳ppm"/>
 						<el-table-column property="hs" label="硫化氢ppm"/>
@@ -105,10 +110,14 @@
 				</el-form-item>
 			</el-form>
 		</el-dialog>
-		<el-dialog v-model="dialogAddRecord" title="新建" @close="closeAdd" @open="openAdd">
+		<el-dialog v-model="dialogAddRecord" title="新增" @close="closeAdd" @open="openAdd">
 			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
 				<el-form-item label="作业证编号" prop="id">
-					<el-input v-model="addRecord.id"> </el-input>
+					<el-input v-model="addRecord.id">
+						<template #append>
+							<el-button :icon="Search" />
+						</template>
+					</el-input>
 				</el-form-item>
 				<el-form-item label="作业类型" prop="groupMembers">
 					<el-select v-model="addRecord.groupMembers">
@@ -123,7 +132,7 @@
 				<el-form-item label="可燃气%" prop="combustible">
 					<el-input v-model="addRecord.combustible"/>
 				</el-form-item>
-				<el-form-item label="氧气" prop="oxygen">
+				<el-form-item label="氧气%" prop="oxygen">
 					<el-input v-model="addRecord.oxygen"/>
 				</el-form-item>
 				<el-form-item label="一氧化碳ppm" prop="combustible">
@@ -152,7 +161,7 @@
 	import { Session } from '/@/utils/storage';
 	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
 	import { ElTable } from 'element-plus';
-	import { FormInstance, FormRules, ElMessage } from 'element-plus';
+	import type { FormInstance, FormRules } from 'element-plus'
 	import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage';
 
 	// 定义接口来定义对象的类型
@@ -441,6 +450,7 @@
 				Delete,
 				Refresh,
 				Plus,
+				Search,
 				handleChange,
 				searchRecord,
 				clearSearch,
@@ -461,6 +471,9 @@
 
 <style scoped lang="scss">
 	$homeNavLengh: 8;
+	.red{
+		color: red;
+	}
 	.home-container {
 		height: calc(100vh - 144px);
 		box-sizing: border-box;
diff --git a/src/views/specialWorkSystem/workProcess/workCheck/index.vue b/src/views/specialWorkSystem/workProcess/workCheck/index.vue
index fefb99f..282ed9d 100644
--- a/src/views/specialWorkSystem/workProcess/workCheck/index.vue
+++ b/src/views/specialWorkSystem/workProcess/workCheck/index.vue
@@ -28,7 +28,7 @@
 				<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="primary" :icon="Plus" size="default" @click="dialogAddRecord = true">新增</el-button>
 						</el-col>
 						<el-button type="primary" :icon="Refresh" size="default"/>
 					</el-row>
@@ -43,7 +43,11 @@
 						<el-table-column property="id" label="作业证编号" width="200"/>
 						<el-table-column property="workType" label="作业类型" width="200"/>
 						<el-table-column property="checkInfo" label="检查内容"/>
-						<el-table-column property="result" label="检查结果"/>
+						<el-table-column property="result" label="检查结果">
+							<template #default="scope">
+								<span :class="scope.row.result == '异常' ? 'red': ''">{{ scope.row.result }}</span>
+							</template>
+						</el-table-column>
 						<el-table-column property="desc" label="描述" width="200"/>
 						<el-table-column property="name" label="分析人"/>
 						<el-table-column property="updateTime" label="分析时间"/>
@@ -97,10 +101,14 @@
 				</el-form-item>
 			</el-form>
 		</el-dialog>
-		<el-dialog v-model="dialogAddRecord" title="新建" @close="closeAdd" @open="openAdd">
+		<el-dialog v-model="dialogAddRecord" title="新增" @close="closeAdd" @open="openAdd">
 			<el-form :model="addRecord" label-width="120px" ref="addRef" :rules="addRules">
 				<el-form-item label="作业证编号" prop="id">
-					<el-input v-model="addRecord.id"> </el-input>
+					<el-input v-model="addRecord.id">
+						<template #append>
+							<el-button :icon="Search" />
+						</template>
+					</el-input>
 				</el-form-item>
 				<el-form-item label="作业类型" prop="workType">
 					<el-select v-model="addRecord.workType">
@@ -121,6 +129,14 @@
 						<el-option label="异常" value="1"/>
 					</el-select>
 				</el-form-item>
+				<el-form-item label="现场照片" prop="photos">
+					<el-upload accept="image/*" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" :http-request="upload" :action="uploadUrl" list-type="picture-card" :on-remove="handleRemove" :before-remove="beforeRemove" :before-upload="getUploadUrl">
+						<el-icon><Plus /></el-icon>
+						<template #tip>
+							<div class="el-upload__tip">上传jpg/png图片尺寸小于500KB,最多可上传3张</div>
+						</template>
+					</el-upload>
+				</el-form-item>
 				<el-form-item label="描述" prop="desc">
 					<el-input v-model="addRecord.desc" type="textarea"> </el-input>
 				</el-form-item>
@@ -129,6 +145,9 @@
 					<el-button type="primary" @click="confirmAddRecord(addRef)" size="default">确认</el-button>
 				</el-form-item>
 			</el-form>
+		</el-dialog>
+		<el-dialog v-model="dialogVisible">
+			<img w-full :src="dialogImageUrl" alt="Preview Image" />
 		</el-dialog>
 	</div>
 </template>
@@ -140,17 +159,21 @@
 	import { useUserInfo } from '/@/stores/userInfo';
 	import { Session } from '/@/utils/storage';
 	import { Edit, View, Plus, Delete, Refresh, Search, Download } from '@element-plus/icons-vue';
-	import { ElTable } from 'element-plus';
-	import { FormInstance, FormRules, ElMessage } from 'element-plus';
+	import { ElTable, ElMessage, ElMessageBox } from 'element-plus'
+	import type { FormInstance, FormRules, UploadProps, UploadUserFile } from 'element-plus'
 	import { teamManageApi } from '/@/api/systemManage/basicDateManage/personShiftManage/teamManage';
+	import {workApplyApi} from "/@/api/specialWorkSystem/workApply";
+	import axios from "axios";
 
 	// 定义接口来定义对象的类型
 	interface stateType {
 		tableData: Array<any>;
-		departmentList: Array<any>;
-		department:string;
-		workerList: Array<string>;
-		casProps: {};
+		imgLimit: number;
+		fileList: Array<file>,
+		uploadUrl: string,
+		isOverSize: Boolean,
+		dialogVisible: Boolean,
+		dialogImageUrl: string | null,
 		multipleSelection: Array<any>;
 		deleteArr: Array<any>;
 		dialogDetails: boolean;
@@ -164,15 +187,13 @@
 		searchWord: string;
 		searchType: number | null
 		totalSize: number;
-		addRecord: {
-
-		};
-		details: {
-
-		};
+		addRecord: {};
+		details: {};
 		workTypeList: Array<any>
 	}
-
+	interface file {
+		url: string;
+	}
 	export default {
 		name: 'workCheck',
 		components: {},
@@ -187,6 +208,12 @@
 				chosenIndex: null,
 				searchWord: '',
 				searchType: null,
+				isOverSize: false,
+				fileList: [],
+				imgLimit: 3,
+				uploadUrl: '',
+				dialogVisible: false,
+				dialogImageUrl: null,
 				tableData: [
 					{
 						id: 'GTXH-0000001',
@@ -216,15 +243,6 @@
 						updateTime: '2022-08-31 17:05:20'
 					}
 				],
-				departmentList: [],
-				department: '',
-				workerList: [],
-				casProps: {
-					expandTrigger: 'hover',
-					emitPath: false,
-					value: 'depId',
-					label: 'depName'
-				},
 				multipleSelection: [],
 				dialogDetails: false,
 				dialogAddRecord: false,
@@ -256,6 +274,7 @@
 				workType: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				checkInfo: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				result: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+				photos: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				desc: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				name: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
 				updateTime: [{ required: true, message: '该内容不能为空', trigger: 'blur' }]
@@ -264,7 +283,6 @@
 			// 页面载入时执行方法
 			onMounted(() => {
 				// getListByPage();
-				// getAllDepartment();
 			});
 
 			// 分页获取班组管理列表
@@ -289,32 +307,110 @@
 				}
 			};
 
-			// 获取部门列表
-			const getAllDepartment = async () => {
-				let res = await teamManageApi().getAllDepartment();
-				if (res.data.code === '200') {
-					state.departmentList = res.data.data;
-				} else {
+			// 图片上传
+			const showTip =()=>{
+				ElMessage({
+					type: 'warning',
+					message: '超出文件上传数量'
+				});
+			}
+
+			const handlePreview: UploadProps['onPreview'] = (uploadFile) => {
+				console.log(uploadFile);
+			};
+
+			const handlePictureCardPreview = (uploadFile: { url: string }) => {
+				state.dialogImageUrl = uploadFile.url!;
+				state.dialogVisible = true;
+			};
+
+			const getUploadUrl = async (rawFile: any) => {
+				const fileSize = rawFile.size / 1024 < 500 ? '1' : '0'
+				if(fileSize === '0'){
 					ElMessage({
 						type: 'warning',
-						message: res.data.msg
+						message: '文件大小不能超过500k。'
 					});
+					state.isOverSize = true
+					return false
+				}else{
+					const res = await workApplyApi().getUploadUrl(rawFile.name);
+					state.addRecord.photos.push(res.data.data.fileName)
+					state.uploadUrl = res.data.data.uploadUrl;
 				}
 			};
 
-			const handleChange = async (value) => {
-				state.addRecord.depId = value;
-				console.log(state.addRecord.department, 'de');
-				let res = await teamManageApi().getAllMember(value);
+			const upload = async (params: any) => {
+				let reader = new FileReader();
+				reader.readAsArrayBuffer(params.file);
+				reader.onload = async () => {
+					axios
+							.put(state.uploadUrl, reader.result, {
+								header: { 'Content-Type': 'multipart/form-data' }
+							})
+							.then(() => {
+								// if (state.fileList.length === 2) {
+								// 	state.fileList.splice(0, 1);
+								// }
+								// console.log(state.form.workDetail.photos,'photos')
+							});
+				};
+			};
+
+			const beforeRemove = (file: {}, fileList: []) => {
+				const result = new Promise((resolve, reject) => {
+					if(!state.isOverSize){
+						ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', {
+							confirmButtonText: '确定',
+							cancelButtonText: '取消',
+							type: 'warning'
+						})
+								.then(() => {
+									// console.log(state.workDetail.photos,'path')
+									const list = JSON.parse(JSON.stringify(state.addRecord.photos))
+									fileList.map((item,index)=>{
+										if(item.uid === file.uid){
+											fileList.splice(index,1)
+											state.addRecord.photos.splice(index,1)
+											// 请求删除接口
+											deletePic(false,list[index])
+										}
+									})
+								})
+								.catch(() => {
+									reject(false);
+								});
+					}else{
+						const list = JSON.parse(JSON.stringify(state.addRecord.photos))
+						fileList.map((item,index)=>{
+							if(item.uid === file.uid){
+								fileList.splice(index,1)
+								state.addRecord.photos.splice(index,1)
+								deletePic(true,list[index])
+							}
+						})
+						state.isOverSize = false
+					}
+				});
+				return result;
+			};
+
+			// 删除图片接口
+			const deletePic = async(isOverSize:boolean,fileName:string)=>{
+				const res = await workApplyApi().deleteFile({fileName: fileName})
 				if (res.data.code === '200') {
-					state.workerList = res.data.data;
+					ElMessage({
+						type: isOverSize ? 'error' : 'success',
+						message: isOverSize ? '上传失败':'删除成功!'
+					});
 				} else {
 					ElMessage({
 						type: 'warning',
 						message: res.data.msg
 					});
 				}
-			};
+			}
+
 
 			// 关键词查询记录
 			const searchRecord = async () => {
@@ -422,7 +518,13 @@
 				Delete,
 				Refresh,
 				Plus,
-				handleChange,
+				Search,
+				showTip,
+				handlePreview,
+				handlePictureCardPreview,
+				getUploadUrl,
+				upload,
+				beforeRemove,
 				searchRecord,
 				clearSearch,
 				viewRecord,
@@ -442,6 +544,9 @@
 
 <style scoped lang="scss">
 	$homeNavLengh: 8;
+	.red{
+		color: red;
+	}
 	.home-container {
 		height: calc(100vh - 144px);
 		box-sizing: border-box;
diff --git a/src/views/system/personShiftManage/arrangeManage/index.vue b/src/views/system/personShiftManage/arrangeManage/index.vue
index e723428..29689bf 100644
--- a/src/views/system/personShiftManage/arrangeManage/index.vue
+++ b/src/views/system/personShiftManage/arrangeManage/index.vue
@@ -14,7 +14,7 @@
 			<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="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>
diff --git a/src/views/system/personShiftManage/generalShiftManagement/index.vue b/src/views/system/personShiftManage/generalShiftManagement/index.vue
index 30efc7d..94d1a9d 100644
--- a/src/views/system/personShiftManage/generalShiftManagement/index.vue
+++ b/src/views/system/personShiftManage/generalShiftManagement/index.vue
@@ -5,7 +5,7 @@
 			<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="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>
diff --git a/src/views/system/personShiftManage/personArrange/index.vue b/src/views/system/personShiftManage/personArrange/index.vue
index 47d2c51..bdb185e 100644
--- a/src/views/system/personShiftManage/personArrange/index.vue
+++ b/src/views/system/personShiftManage/personArrange/index.vue
@@ -14,7 +14,7 @@
 			<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="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>
diff --git a/src/views/system/personShiftManage/personTimeManage/durationManage/index.vue b/src/views/system/personShiftManage/personTimeManage/durationManage/index.vue
index 2be202a..40cb89e 100644
--- a/src/views/system/personShiftManage/personTimeManage/durationManage/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/durationManage/index.vue
@@ -14,7 +14,7 @@
                 <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="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 @click="deleteBatchBtn">删除</el-button>
                         </el-col>
diff --git a/src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue b/src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue
index 64387a5..d063204 100644
--- a/src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/holidayTime/index.vue
@@ -14,7 +14,7 @@
                 <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="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 @click="deleteBatchBtn">删除</el-button>
                         </el-col>
diff --git a/src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue b/src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue
index 6f7c35b..e9e4e07 100644
--- a/src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/holidayTimeGroup/index.vue
@@ -14,7 +14,7 @@
                 <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="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 @click="deleteBatchBtn">删除</el-button>
                         </el-col>
diff --git a/src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue b/src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue
index 809fdcb..2b54b8f 100644
--- a/src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/timeStrategy/index.vue
@@ -14,7 +14,7 @@
                 <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="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 @click="deleteBatchBtn">删除</el-button>
                         </el-col>
diff --git a/src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue b/src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue
index 56aa234..c911247 100644
--- a/src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue
+++ b/src/views/system/personShiftManage/personTimeManage/workingHoursSet/index.vue
@@ -14,7 +14,7 @@
                 <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="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 @click="deleteBatchBtn">删除</el-button>
                         </el-col>
diff --git a/src/views/system/personShiftManage/scheduleManage/schedule/index.vue b/src/views/system/personShiftManage/scheduleManage/schedule/index.vue
index 71f7d52..bd31f9b 100644
--- a/src/views/system/personShiftManage/scheduleManage/schedule/index.vue
+++ b/src/views/system/personShiftManage/scheduleManage/schedule/index.vue
@@ -14,7 +14,7 @@
                 <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="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 @click="deleteBatchBtn">删除</el-button>
                         </el-col>
diff --git a/src/views/system/personShiftManage/scheduleManage/strategy/index.vue b/src/views/system/personShiftManage/scheduleManage/strategy/index.vue
index c7b209c..22c0ca4 100644
--- a/src/views/system/personShiftManage/scheduleManage/strategy/index.vue
+++ b/src/views/system/personShiftManage/scheduleManage/strategy/index.vue
@@ -14,7 +14,7 @@
                 <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="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 @click="deleteBatchBtn">删除</el-button>
                         </el-col>

--
Gitblit v1.9.2