|
@@ -1,84 +1,261 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <VerticalFlexLayout>
|
|
|
|
|
- <template #static>
|
|
|
|
|
- <Breadcrumb />
|
|
|
|
|
- </template>
|
|
|
|
|
- <div class="main">
|
|
|
|
|
- <el-tabs>
|
|
|
|
|
- <el-tab-pane label="全部" name="first" />
|
|
|
|
|
- <el-tab-pane label="院领导" name="first" />
|
|
|
|
|
- <el-tab-pane label="部门" name="first" />
|
|
|
|
|
- <el-tab-pane label="科室" name="first" />
|
|
|
|
|
- <el-tab-pane label="员工" name="first" />
|
|
|
|
|
- <el-tab-pane label="常驻供应商" name="first" />
|
|
|
|
|
|
|
+ <div class="safety-platform-container">
|
|
|
|
|
+ <header class="safety-platform-container__header">
|
|
|
|
|
+ <div class="breadcrumb-title"> 安全责任书管理 </div>
|
|
|
|
|
+ <el-tabs v-model="activeTab">
|
|
|
|
|
+ <el-tab-pane label="全部" name="" />
|
|
|
|
|
+ <el-tab-pane label="院领导" name="院领导" />
|
|
|
|
|
+ <el-tab-pane label="部门" name="部门" />
|
|
|
|
|
+ <el-tab-pane label="科室" name="科室" />
|
|
|
|
|
+ <el-tab-pane label="员工" name="员工" />
|
|
|
|
|
+ <el-tab-pane label="常驻供应商" name="常驻供应商" />
|
|
|
</el-tabs>
|
|
</el-tabs>
|
|
|
- <el-form :inline="true">
|
|
|
|
|
- <el-form-item>
|
|
|
|
|
- <el-input placeholder="搜索安全责任书名称" style="width: 170px" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item>
|
|
|
|
|
- <el-select placeholder="状态" style="width: 170px" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item>
|
|
|
|
|
- <el-select placeholder="所属部门" style="width: 170px" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item>
|
|
|
|
|
- <el-date-picker placeholder="计划日期范围" style="width: 170px" />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- <el-form-item>
|
|
|
|
|
- <el-button type="primary">查询</el-button>
|
|
|
|
|
- <el-button>重置</el-button>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </el-form>
|
|
|
|
|
- <div class="button-content">
|
|
|
|
|
- <el-button type="primary">添加</el-button>
|
|
|
|
|
|
|
+ </header>
|
|
|
|
|
+ <main class="safety-platform-container__main">
|
|
|
|
|
+ <div class="search-form">
|
|
|
|
|
+ <el-form :inline="true">
|
|
|
|
|
+ <el-form-item label="安全责任书">
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="queryParams.queryParam.responsibilityName"
|
|
|
|
|
+ placeholder="搜索安全责任书名称"
|
|
|
|
|
+ style="width: 170px"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="状态">
|
|
|
|
|
+ <el-select v-model="queryParams.queryParam.status" clearable placeholder="状态" style="width: 170px">
|
|
|
|
|
+ <el-option :value="1" label="未下发" />
|
|
|
|
|
+ <el-option :value="2" label="待签署" />
|
|
|
|
|
+ <el-option :value="3" label="待反馈材料" />
|
|
|
|
|
+ <el-option :value="4" label="待审核" />
|
|
|
|
|
+ <el-option :value="5" label="已完成" />
|
|
|
|
|
+ <el-option :value="6" label="已作废" />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item v-if="activeTab" label="所属部门">
|
|
|
|
|
+ <el-select
|
|
|
|
|
+ v-model="queryParams.queryParam.departmentName"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ placeholder="所属部门"
|
|
|
|
|
+ style="width: 170px"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-option value="院领导">院领导</el-option>
|
|
|
|
|
+ <el-option value="部门">部门</el-option>
|
|
|
|
|
+ <el-option value="科室">科室</el-option>
|
|
|
|
|
+ <el-option value="员工">员工</el-option>
|
|
|
|
|
+ <el-option value="常驻供应商">常驻供应商</el-option>
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="计划日期">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="queryParams.queryParam.date"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ type="daterange"
|
|
|
|
|
+ start-placeholder="开始时间"
|
|
|
|
|
+ end-placeholder="结束时间"
|
|
|
|
|
+ style="width: 230px"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ @click="
|
|
|
|
|
+ $router.push({
|
|
|
|
|
+ name: 'createResponsibilityAgree',
|
|
|
|
|
+ })
|
|
|
|
|
+ "
|
|
|
|
|
+ >添加
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ <el-button type="primary" @click="handleSafetyResponsibilityAdminqueryPage">查询</el-button>
|
|
|
|
|
+ <el-button @click="handleRestParams">重置</el-button>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+
|
|
|
<div class="table-content">
|
|
<div class="table-content">
|
|
|
- <el-table>
|
|
|
|
|
- <el-table-column type="selection" width="55" />
|
|
|
|
|
- <el-table-column label="责任书名称" width="180" />
|
|
|
|
|
- <el-table-column label="状态" width="100" />
|
|
|
|
|
- <el-table-column label="所属部门" width="180" />
|
|
|
|
|
- <el-table-column label="下发数" width="120" />
|
|
|
|
|
- <el-table-column label="签署人数" width="120" />
|
|
|
|
|
- <el-table-column label="签署比例" width="120" />
|
|
|
|
|
- <el-table-column label="分组名称" width="150" />
|
|
|
|
|
- <el-table-column label="计划完成时间" width="150" />
|
|
|
|
|
- <el-table-column fixed="right" min-width="200" label="操作">
|
|
|
|
|
|
|
+ <el-table :data="tableData.data">
|
|
|
|
|
+ <el-table-column fixed="left" type="selection" width="60" />
|
|
|
|
|
+ <el-table-column label="责任书名称" prop="responsibilityName" width="180" />
|
|
|
|
|
+ <el-table-column label="状态" prop="statusName" width="100" />
|
|
|
|
|
+ <el-table-column label="所属部门" prop="departmentName" width="180" />
|
|
|
|
|
+ <el-table-column label="下发数" prop="issuedQuantity" width="120" />
|
|
|
|
|
+ <el-table-column label="签署人数" prop="signedQuantity" width="120" />
|
|
|
|
|
+ <el-table-column label="签署比例" prop="signedRatio" width="120" />
|
|
|
|
|
+ <el-table-column label="分组名称" prop="userGroupName" width="150" />
|
|
|
|
|
+ <el-table-column label="计划完成时间" prop="planEndTime" width="150" />
|
|
|
|
|
+ <el-table-column fixed="right" min-width="300" label="操作">
|
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
|
- <el-button type="primary" link>编辑</el-button>
|
|
|
|
|
- <el-button type="primary" link>删除</el-button>
|
|
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ v-if="scope.row.status === 1 || scope.row.status === 2 || scope.row.status === 3"
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ link
|
|
|
|
|
+ @click="
|
|
|
|
|
+ $router.push({
|
|
|
|
|
+ name: 'editResponsibilityAgree',
|
|
|
|
|
+ query: {
|
|
|
|
|
+ id: scope.row.id,
|
|
|
|
|
+ },
|
|
|
|
|
+ })
|
|
|
|
|
+ "
|
|
|
|
|
+ >
|
|
|
|
|
+ 编辑
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ <el-button v-if="scope.row.status === 4">审核</el-button>
|
|
|
|
|
+ <el-popconfirm
|
|
|
|
|
+ v-if="scope.row.status === 1 || scope.row.status === 6"
|
|
|
|
|
+ title="确定要删除吗?"
|
|
|
|
|
+ @confirm="handleConfirmDeleteRow(scope)"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #reference>
|
|
|
|
|
+ <el-button type="primary" link>删除</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-popconfirm>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ v-if="
|
|
|
|
|
+ scope.row.status === 1 || scope.row.status === 2 || scope.row.status === 3 || scope.row.status === 4
|
|
|
|
|
+ "
|
|
|
|
|
+ type="primary"
|
|
|
|
|
+ link
|
|
|
|
|
+ >下发
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ <el-button v-if="scope.row.status === 4" type="primary" link>作废</el-button>
|
|
|
<el-button type="primary" link>下发对象</el-button>
|
|
<el-button type="primary" link>下发对象</el-button>
|
|
|
- <el-button type="primary" link>下发</el-button>
|
|
|
|
|
- <el-button type="primary" link>下载</el-button>
|
|
|
|
|
- <el-button type="primary" link>作废</el-button>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <el-button type="primary" link @click="handleDownloadLink(scope)">下载</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
</el-table>
|
|
</el-table>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="page-content"> sdfsd </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </VerticalFlexLayout>
|
|
|
|
|
|
|
+ <div class="page-content">
|
|
|
|
|
+ <el-pagination
|
|
|
|
|
+ :current-page="queryParams.pageNumber"
|
|
|
|
|
+ :page-size="queryParams.pageSize"
|
|
|
|
|
+ :total="tableData.total"
|
|
|
|
|
+ @size-change="handleSizeChange"
|
|
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </main>
|
|
|
|
|
+ </div>
|
|
|
</template>
|
|
</template>
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
|
- import Breadcrumb from '@/components/Breadcrumb.vue';
|
|
|
|
|
- import VerticalFlexLayout from '@/components/VerticalFlexLayout.vue';
|
|
|
|
|
|
|
+ import { onMounted, ref, reactive } from 'vue';
|
|
|
|
|
+ import dayjs from 'dayjs';
|
|
|
|
|
+ import { ElMessage } from 'element-plus';
|
|
|
|
|
+ import { useRouter } from 'vue-router';
|
|
|
|
|
+ import {
|
|
|
|
|
+ safetyResponsibilityAdminqueryPage,
|
|
|
|
|
+ safetyResponsibilityAdminDelete,
|
|
|
|
|
+ } from '@/api/production-safety/responsibility-implementation';
|
|
|
|
|
+ const router = useRouter();
|
|
|
|
|
+ const activeTab = ref('');
|
|
|
|
|
+ const queryParams = reactive<any>({
|
|
|
|
|
+ pageNumber: 1,
|
|
|
|
|
+ pageSize: 10,
|
|
|
|
|
+ queryParam: {
|
|
|
|
|
+ responsibilityName: '',
|
|
|
|
|
+ departmentName: '',
|
|
|
|
|
+ status: '',
|
|
|
|
|
+ date: '',
|
|
|
|
|
+ responsibilityPersonId: '',
|
|
|
|
|
+ },
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ const tableData = reactive({
|
|
|
|
|
+ data: [],
|
|
|
|
|
+ total: 0,
|
|
|
|
|
+ });
|
|
|
|
|
+ const handleSizeChange = () => {};
|
|
|
|
|
+ const handleCurrentChange = () => {};
|
|
|
|
|
+ const handleDownloadLink = (scope) => {
|
|
|
|
|
+ window.location.href = scope.row.attachment;
|
|
|
|
|
+ };
|
|
|
|
|
+ const handleConfirmDeleteRow = (scope) => {
|
|
|
|
|
+ safetyResponsibilityAdminDelete({
|
|
|
|
|
+ id: scope.row.id,
|
|
|
|
|
+ }).then(() => {
|
|
|
|
|
+ ElMessage.success('删除成功!');
|
|
|
|
|
+ });
|
|
|
|
|
+ };
|
|
|
|
|
+ const handleSafetyResponsibilityAdminqueryPage = () => {
|
|
|
|
|
+ safetyResponsibilityAdminqueryPage({
|
|
|
|
|
+ ...queryParams,
|
|
|
|
|
+ queryParam: {
|
|
|
|
|
+ ...queryParams.queryParam,
|
|
|
|
|
+ startTime: queryParams.queryParam.date?.[0]
|
|
|
|
|
+ ? dayjs(queryParams.queryParam.date?.[0]).format('YYYY-MM-DD')
|
|
|
|
|
+ : undefined,
|
|
|
|
|
+ endTime: queryParams.queryParam.date?.[1]
|
|
|
|
|
+ ? dayjs(queryParams.queryParam.date?.[1]).format('YYYY-MM-DD')
|
|
|
|
|
+ : undefined,
|
|
|
|
|
+ },
|
|
|
|
|
+ }).then((res) => {
|
|
|
|
|
+ tableData.data = res.records;
|
|
|
|
|
+ tableData.total = res.totalPage;
|
|
|
|
|
+ });
|
|
|
|
|
+ };
|
|
|
|
|
+ const handleRestParams = () => {
|
|
|
|
|
+ Object.assign(queryParams, {
|
|
|
|
|
+ pageNumber: 1,
|
|
|
|
|
+ pageSize: 10,
|
|
|
|
|
+ queryParam: {
|
|
|
|
|
+ responsibilityName: '',
|
|
|
|
|
+ departmentName: '',
|
|
|
|
|
+ status: '',
|
|
|
|
|
+ date: '',
|
|
|
|
|
+ responsibilityPersonId: '',
|
|
|
|
|
+ },
|
|
|
|
|
+ });
|
|
|
|
|
+ handleSafetyResponsibilityAdminqueryPage();
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ onMounted(() => {
|
|
|
|
|
+ handleSafetyResponsibilityAdminqueryPage();
|
|
|
|
|
+ });
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
-<style lang="css" scoped>
|
|
|
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
|
+ @use '@/styles/page-details-layout.scss' as *;
|
|
|
|
|
+ @use '@/styles/page-main-layout.scss' as *;
|
|
|
|
|
+ @use '@/styles/basic-table-action.scss' as *;
|
|
|
|
|
+ .safety-platform-container__header {
|
|
|
|
|
+ padding-bottom: 0 !important;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-tabs__header) {
|
|
|
|
|
+ margin: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-tabs__item) {
|
|
|
|
|
+ font-size: 14px !important;
|
|
|
|
|
+ }
|
|
|
:deep(.flexContent) {
|
|
:deep(.flexContent) {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
}
|
|
}
|
|
|
:deep(.breadcrumb .title) {
|
|
:deep(.breadcrumb .title) {
|
|
|
margin-left: 0;
|
|
margin-left: 0;
|
|
|
}
|
|
}
|
|
|
- .main {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ :deep(.el-form) {
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ row-gap: 15px;
|
|
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(.el-form-item) {
|
|
|
|
|
+ margin-bottom: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ :deep(main) {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
- padding: 20px;
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- overflow: hidden;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ .search-form {
|
|
|
|
|
+ min-width: 800px;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ margin-bottom: 20px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
.button-content {
|
|
.button-content {
|
|
|
margin-bottom: 20px;
|
|
margin-bottom: 20px;
|
|
|
}
|
|
}
|