This commit is contained in:
2025-09-16 17:20:24 +08:00
5 changed files with 101 additions and 57 deletions

View File

@ -1,11 +1,13 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
:leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="发生日期" prop="happenDate">
<el-date-picker clearable v-model="queryParams.happenDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择发生日期" />
<el-date-picker clearable v-model="queryParams.happenDate" type="date" value-format="YYYY-MM-DD"
placeholder="请选择发生日期" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
@ -26,15 +28,8 @@
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['quality:qualityConstructionLog:edit']">修改</el-button>
</el-col> -->
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete()"
v-hasPermi="['quality:qualityConstructionLog:remove']"
>删除</el-button
>
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
v-hasPermi="['quality:qualityConstructionLog:remove']">删除</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['quality:qualityConstructionLog:export']">导出</el-button>
@ -81,14 +76,16 @@
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="View" @click="handleUpdate(scope.row)">详情</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['quality:qualityConstructionLog:remove']">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['quality:qualityConstructionLog:remove']">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 详情对话框 -->
<el-dialog title="施工日志详情" v-model="dialog.visible" width="60vw" append-to-body>
@ -147,6 +144,8 @@ const data = reactive<PageData<QualityConstructionLogForm, QualityConstructionLo
pageSize: 10,
projectId: currentProject.value?.id,
happenDate: undefined,
orderByColumn: "createTime",
isAsc: "desc",
params: {}
},
rules: {

View File

@ -2,12 +2,12 @@
<div class="documentCompletion-data">
<el-tabs v-model="activeName" class="p-4" @tab-click="handleClick">
<el-tab-pane label="文件夹" name="first">
<el-button type="success" :disabled="toolStart" @click="handleFile(3)"
><el-icon><Plus /></el-icon>新建文件夹</el-button
>
<el-button type="primary" :disabled="toolStart" @click="handleFile(2)"
><el-icon><Upload /></el-icon>上传文件</el-button
>
<el-button type="success" :disabled="toolStart" @click="handleFile(3)"><el-icon>
<Plus />
</el-icon>新建文件夹</el-button>
<el-button type="primary" :disabled="toolStart" @click="handleFile(2)"><el-icon>
<Upload />
</el-icon>上传文件</el-button>
<el-card style="margin-top: 10px">
<div class="breadcrumb-img">
<el-breadcrumb>
@ -18,16 +18,19 @@
<div class="tool-All">
<div v-if="!toolStart">
<el-button type="primary" v-hasPermi="['project:project:remove']" @click="onBatchAll">
<el-icon><Menu /></el-icon>批量操作</el-button
>
<el-icon>
<Menu />
</el-icon>批量操作</el-button>
</div>
<div v-if="toolStart">
<el-button type="warning" @click="onBatchAll">
<el-icon><Tools /></el-icon>取消操作</el-button
>
<el-icon>
<Tools />
</el-icon>取消操作</el-button>
<el-button type="danger" @click="onDeleteAll">
<el-icon><Delete /></el-icon>删除</el-button
>
<el-icon>
<Delete />
</el-icon>删除</el-button>
</div>
</div>
</div>
@ -40,17 +43,9 @@
<div @click="onNav(item)" title="点击打开文件" @contextmenu="onContextmenu($event, item, i)">
<img src="../../../assets/icons/svg/file1.png" v-if="item.fileType == '2'" alt="" />
<img src="../../../assets/icons/svg/file.png" v-else-if="item.fileType == '1'" alt="" />
<el-image
v-else-if="item.fileType == '3'"
style="width: 100%; height: 100%"
:src="item.filePath"
:zoom-rate="1.2"
:max-scale="7"
:min-scale="0.2"
:initial-index="4"
:preview-src-list="[item.filenPathCoding]"
fit="cover"
/>
<el-image v-else-if="item.fileType == '3'" style="width: 100%; height: 100%" :src="item.filePath"
:zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :initial-index="4"
:preview-src-list="[item.filenPathCoding]" fit="cover" />
<img :src="'/icon/' + item.fileType + '.png'" v-else />
</div>
<span @click="onFileName(item)" title="点击重命名">{{ item.fileName }}</span>
@ -104,7 +99,7 @@ export default defineComponent({
const { proxy } = <any>getCurrentInstance();
const RecyclingStationRef = ref();
// 字典选项数据
const {} = proxy.useDict();
const { } = proxy.useDict();
// 文件下载
const onExport = (event) => {
event.stopPropagation();
@ -242,7 +237,7 @@ export default defineComponent({
}
});
})
.catch(() => {});
.catch(() => { });
} else {
// 竣工图
proxy.mittBus.emit('bigUploader.uploadFile', { type: 100, types: 1010, accept: [] });
@ -295,7 +290,7 @@ export default defineComponent({
}
});
})
.catch(() => {});
.catch(() => { });
};
const handleClick = (val) => {
if (state.activeName == 'second') {
@ -356,7 +351,7 @@ export default defineComponent({
}
});
})
.catch(() => {});
.catch(() => { });
};
// 批量删除
const onDeleteAll = () => {
@ -420,23 +415,28 @@ export default defineComponent({
align-items: center;
width: 100%;
padding-right: 10px;
.tool-All {
display: flex;
align-items: center;
> div {
>div {
display: flex;
align-items: center;
}
}
.batch {
width: 24px;
}
}
.file_detail {
position: relative;
width: 100%;
height: 66vh;
overflow: auto;
.right_box {
position: absolute;
z-index: 999;
@ -448,7 +448,8 @@ export default defineComponent({
display: none;
border-radius: 6px;
padding: 14px 4px;
> div {
>div {
font-size: 16px;
font-weight: bold;
color: #fff;
@ -457,10 +458,12 @@ export default defineComponent({
font-family: revert;
border-radius: 5px;
}
> div:hover {
>div:hover {
background-color: rgb(0 0 0 / 80%);
}
}
.file_style {
// height: 100px;
width: 90px;
@ -472,22 +475,26 @@ export default defineComponent({
animation: 0.5s ease;
position: relative;
margin-bottom: 10px;
> div {
>div {
width: 100%;
// height: 70%;
height: 80px;
> img {
>img {
width: 100%;
height: 100%;
}
}
.checkbox-box {
position: absolute;
top: -8px;
left: 60px;
z-index: 1000;
}
> span {
>span {
font-size: 12px;
width: 100%;
display: block;
@ -498,10 +505,12 @@ export default defineComponent({
word-wrap: break-word;
}
}
.file_style:hover {
background-color: rgba(189, 189, 189, 0.322);
border-radius: 5px;
}
.fileActive {
display: block;
top: 0;
@ -515,9 +524,11 @@ export default defineComponent({
}
}
}
.colBlock {
display: block;
}
.colNone {
display: none;
}

View File

@ -6,8 +6,10 @@
<el-col :span="12" style="text-align: right">记录时间{{ safetyLogDetail?.createTime }}</el-col>
</el-row>
<el-descriptions :column="3" border style="margin-top: 8px">
<el-descriptions-item label-align="center" width="160px" label="项目名称" :span="3">{{ currentProject?.name }} </el-descriptions-item>
<el-descriptions-item label-align="center" label="发生日期">{{ safetyLogDetail?.dateOfOccurrence }} </el-descriptions-item>
<el-descriptions-item label-align="center" width="160px" label="项目名称" :span="3">{{ currentProject?.name }}
</el-descriptions-item>
<el-descriptions-item label-align="center" label="发生日期">{{ safetyLogDetail?.dateOfOccurrence }}
</el-descriptions-item>
<el-descriptions-item label-align="center" label="气温">
<span>最高{{ safetyLogDetail?.airTemperatureMax }}</span>
<span>最低{{ safetyLogDetail?.airTemperatureMin }}</span>
@ -36,20 +38,44 @@
<el-descriptions-item label-align="center" label="监理通知有关部门安全检查情况" :span="3">
{{ safetyLogDetail?.safetyInspectionCondition }}
</el-descriptions-item>
<el-descriptions-item label-align="center" label="停工、加班情况" :span="3">{{ safetyLogDetail?.stoppageOrOvertime }} </el-descriptions-item>
<el-descriptions-item label-align="center" label="停工、加班情况" :span="3">{{ safetyLogDetail?.stoppageOrOvertime }}
</el-descriptions-item>
<el-descriptions-item label-align="center" label="其他应记录的安全与文明施工事项" :span="3">
{{ safetyLogDetail?.otherCondition }}
</el-descriptions-item>
<el-descriptions-item label-align="center" label="附件" :span="3">
<el-space direction="vertical">
<el-link v-for="item in fileList" :key="item.ossId" :href="`${item.url}`" type="primary" :underline="false" target="_blank">
<template v-for="item in fileList" :key="item.ossId">
<el-link :href="`${item.url}`" type="primary" :underline="false" target="_blank""
v-if="item.fileSuffix.includes('pdf')">
<span> {{ item.originalName }} </span>
</el-link>
<el-space wrap>
<span v-if="['.png', '.jpg', '.jpeg'].includes(item.fileSuffix)">
<image-preview :src="item.url" width="200px" />
</span>
<span v-else>
<el-link :href="`${item.url}`" :underline="false" target="_blank">
<span> {{ item.originalName }} </span>
</el-link>
</span>
</el-space>
</template>
</el-space>
</el-descriptions-item>
<el-descriptions-item label-align="center" label="备注" :span="3">{{ safetyLogDetail?.remark }} </el-descriptions-item>
<el-descriptions-item label-align="center" label="备注" :span="3">{{ safetyLogDetail?.remark }}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-dialog width="80%" v-model="viewFileVisible" title="查看文件" append-to-body>
<iframe :src="fileUrl" frameborder="0" width="100%" height="800"></iframe>
<template #footer>
<div class="dialog-footer">
<el-button @click="viewFileVisible = false" type="primary">关闭</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup lang="ts">
@ -74,6 +100,8 @@ const props = defineProps<Props>();
const loading = ref<boolean>(false);
const safetyLogDetail = ref<SafetyLogVO>();
const fileList = ref<Array<OssVO>>([]);
const viewFileVisible = ref<boolean>(false);
const fileUrl = ref<string>('');
const get = async () => {
loading.value = true;
const res = await getSafetyLog(props.safetyLogId);
@ -86,7 +114,11 @@ const get = async () => {
}
loading.value = false;
};
const viewFile = (url: string) => {
fileUrl.value = url;
viewFileVisible.value = true;
return false;
};
onMounted(() => {
get();
});

View File

@ -25,7 +25,7 @@
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['safety:safetyLog:add']">1
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['safety:safetyLog:add']">新增
</el-button>
</el-col>
<el-col :span="1.5">
@ -214,7 +214,8 @@ const data = reactive<PageData<SafetyLogForm, SafetyLogQuery>>({
otherCondition: undefined,
remark: undefined,
creatorName: undefined,
orderByColumn: "createTime",
isAsc: "desc",
params: {}
},
rules: {

View File

@ -3,7 +3,8 @@
<el-descriptions v-loading="loading" :column="2">
<el-descriptions-item :span="2" label="宣讲人">{{ teamMeetingDetail?.compereName }}</el-descriptions-item>
<el-descriptions-item :span="2" label="参与人">
<span :key="item.id" v-for="item in teamMeetingDetail?.participantList">{{ item.name }}</span>
<!-- <span :key="item.id" v-for="item in teamMeetingDetail?.participantList">{{ item.name }}</span> -->
<span>{{teamMeetingDetail?.participantList.map(item => item.name).join("")}}</span>
</el-descriptions-item>
<el-descriptions-item label="班组名称">{{ teamMeetingDetail?.teamName }}</el-descriptions-item>
<el-descriptions-item label="施工单位">{{ teamMeetingDetail?.contractorName }}</el-descriptions-item>