安全隐患详情开发

dev_xd
haha 2025-03-04 00:08:06 +08:00
parent 2536e68a0d
commit be9e392ec7
5 changed files with 217 additions and 16 deletions

View File

@ -272,7 +272,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.checkUserPhone,
a.smark_url,
a.isDel,
c.nick_name as createUser,
CONCAT(c.nick_name,'【',c.phonenumber,'】') as createUser,
a.createTime,
a.updateUser,
a.updateTime,

View File

@ -7,6 +7,8 @@ import java.util.concurrent.atomic.AtomicInteger;
import com.yanzhu.common.core.context.SecurityContextHolder;
import com.yanzhu.common.core.utils.DateUtils;
import com.yanzhu.common.security.utils.SecurityUtils;
import com.yanzhu.system.api.domain.SysUser;
import com.yanzhu.system.api.model.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.yanzhu.manage.mapper.SmzSspProblemmodifyMapper;
@ -104,12 +106,15 @@ public class SmzSspProblemmodifyServiceImpl implements ISmzSspProblemmodifyServi
@Override
public int insertSmzSspProblemmodifies(List<SmzSspProblemmodify> list) {
AtomicInteger count = new AtomicInteger();
LoginUser loginUser=SecurityUtils.getLoginUser();
SysUser sysUser=loginUser.getSysUser();
list.stream().forEach(it->{
it.setCheckState(0L);
it.setIsDel(0L);
it.setCreateTime(DateUtils.getNowDate());
it.setCreateBy(""+SecurityUtils.getLoginUser().getSysUser().getUserId());
it.setCreateUser(""+SecurityUtils.getLoginUser().getSysUser().getUserId());
it.setProjectName(sysUser.getActiveProjectName());
it.setCreateBy(""+sysUser.getUserId());
it.setCreateUser(""+sysUser.getUserId());
count.addAndGet(smzSspProblemmodifyMapper.insertSmzSspProblemmodify(it));
});
return count.get();

View File

@ -0,0 +1 @@
<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4939"><path d="M60.8 1024c-33.6 0-60.8-27.2-60.8-60.8v-243.2c0-33.6 27.2-60.8 60.8-60.8s60.8 27.2 60.8 60.8v243.2c0 33.6-27.2 60.8-60.8 60.8zM361.6 1024c-33.6 0-60.8-27.2-60.8-60.8v-473.6c0-33.6 27.2-60.8 60.8-60.8s60.8 27.2 60.8 60.8v473.6c0 33.6-27.2 60.8-60.8 60.8zM662.4 1024c-33.6 0-60.8-27.2-60.8-60.8v-678.4c0-33.6 27.2-60.8 60.8-60.8s60.8 27.2 60.8 60.8v678.4c0 33.6-27.2 60.8-60.8 60.8zM963.2 1024c-33.6 0-60.8-27.2-60.8-60.8V60.8c0-33.6 27.2-60.8 60.8-60.8s60.8 27.2 60.8 60.8v902.4c0 33.6-27.2 60.8-60.8 60.8z" p-id="4940"></path></svg>

After

Width:  |  Height:  |  Size: 735 B

View File

@ -150,8 +150,8 @@
<el-form-item label="用户类型" prop="userType">
<el-select v-model="form.userType" placeholder="请选择用户类型" style="width: 100%"
@change="doRoleChange">
<el-option v-for="dict in sys_user_type" v-show="dict.value != '99'" :key="dict.value" :label="dict.label"
:value="dict.value" />
<el-option v-for="dict in sys_user_type" v-show="dict.value != '99'" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
@ -184,7 +184,7 @@
<el-form-item label="用户状态">
<el-radio-group v-model="form.status">
<el-radio v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label
}}</el-radio>
}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
@ -797,7 +797,6 @@ function submitForm() {
data.loading = true;
proxy.$refs["userRef"].validate(valid => {
if (valid) {
debugger
let obj = form.value.userInfos || {};
obj.cardImgPos = form.value.cardImgPos;
obj.cardImgInv = form.value.cardImgInv;

View File

@ -1,34 +1,178 @@
<template>
<el-drawer v-model="data.visible" :close-on-click-modal="false" :close-on-press-escape="false" size="960px"
<el-drawer v-model="data.visible" :close-on-click-modal="false" :close-on-press-escape="false" size="1000px"
:append-to-body="true" title="安全隐患详情" class="problemmodify-detail-drawer">
<el-row>
<el-col :span="12" class="detail-left">
<el-row v-if="data && data.row" style="padding:20px;">
<el-col :span="10" class="detail-left">
<el-steps style="max-width: 600px" :active="1" finish-status="success" simple>
<el-step title="待整改" />
<el-step title="待复检" />
<el-step title="复检驳回" />
<el-step title="复检通过" />
</el-steps>
</el-col>
<el-col :span="12">
<div class="step-header" :class="data.row.checkState >= 0 ? 'is-active' : ''">
<el-icon>
<SuccessFilled />
</el-icon>
01.待整改
</div>
<el-card>
<table border class="step-table">
<tr>
<td width="40%"><el-icon>
<User />
</el-icon></td>
<td>{{ data.row.createUser }}</td>
</tr>
<tr>
<td><el-icon>
<Calendar />
</el-icon></td>
<td>{{ data.row.createTime }}</td>
</tr>
<tr>
<td><el-icon>
<Picture />
</el-icon></td>
<td>
<el-image :src="data.row.smarkUrlPic" style="height:80px;" :preview-teleported="true"
:preview-src-list="data.row.smarkUrlPics"></el-image>
</td>
</tr>
</table>
</el-card>
</el-col>
<el-col :span="14" class="detail-right">
<el-form style="margin: 0px 20px;">
<el-form-item label="项目名称">
{{ data.row.projectName }}
</el-form-item>
<el-form-item label="隐患图片">
<el-image :src="data.row.smarkUrlPic" style="height:80px;" :preview-teleported="true"
:preview-src-list="data.row.smarkUrlPics"></el-image>
</el-form-item>
<el-form-item label="检查类型">
<dict-tag :options="ssp_proble_type" :value="data.row.problemType" />
</el-form-item>
<el-form-item label="隐患类型">
<dict-tag :options="ssp_proble_sub_type" :value="data.row.dangerType" />
</el-form-item>
<el-form-item label="施工部位">
{{ data.row.workParts }}
</el-form-item>
<el-form-item label="整改要求">
{{ data.row.changeInfo }}
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="提交人">
{{ data.row.createUser }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="提交时间">
{{ data.row.createTime }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="整改人">
{{ data.row.lordSent }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="抄送人">
{{ data.row.copySendUser }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="复检人">
{{ data.row.recheckSend }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="截至时间">
{{ data.row.nickedTime }}
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="step-2">
<div class="step-header">
<svg-icon icon-class="twrap" /> 整改情况
</div>
<el-form ref="formStep2Ref" :mode="step2Form" :rules="step2Rules">
<el-form-item label="整改说明" prop="opinion">
<el-input v-model="step2Form.opinion" style="width: 100%" maxlength="200" :rows="3"
type="textarea" placeholder="请输入整改说明最多200字" />
</el-form-item>
<el-form-item label="整改图片" prop="images" style="margin-top:15px">
<image-upload v-model="step2Form.images" previewAll :limit="5"
@change="doStep2ImageUpload" />
</el-form-item>
</el-form>
<div style="text-align: center;">
<el-button type="primary" @click="step2Submit" :disabled="data.loading">提交</el-button>
</div>
</div>
</el-col>
</el-row>
</el-drawer>
</template>
<script setup name="Problemmodify">
const { proxy } = getCurrentInstance();
const { ssp_proble_type, ssp_proble_sub_type } = proxy.useDict('ssp_proble_type', 'ssp_proble_sub_type');
const formStep2Ref = ref();
let data = reactive({
loading: false,
visible: false,
row: null
row: null,
step2: {
opinion: '',
images: [],
},
step2Form: {},
step2Rules: {
opinion: [
{ required: true, message: "请输入审核意见", trigger: "blur" },
{ min: 1, max: 200, message: "长度在 1 到 255 个字符", trigger: "blur" }
],
images: [
{ validator: validateStep2Images }
]
}
});
const { step2Form, step2Rules } = toRefs(data);
function validateStep2Images(rule, value, callback) {
if (value.length == 0) {
callback(new Error("请上传图片!"))
} else {
callback()
}
}
function showDrawer(row) {
data.row = row;
data.visible = true;
}
function step2Submit() {
data.loading = true;
formStep2Ref.value.validate(v => {
data.loading = false;
if (v) {
}
});
}
function doStep2ImageUpload() {
formStep2Ref.value.validateField("images");
}
defineExpose({
showDrawer
});
@ -37,7 +181,7 @@ defineExpose({
<style lang="scss">
.problemmodify-detail-drawer {
.el-drawer__header {
margin-bottom: 20px;
margin-bottom: 0px;
}
.el-drawer__body {
@ -52,6 +196,58 @@ defineExpose({
max-width: unset;
}
}
.el-card__body {
padding: 8px !important;
}
.step-table {
width: 100%;
border-collapse: collapse;
border-color: #dddddda6;
td {
color: #888;
font-size: 12px;
padding: 4px 10px;
background: #eeebeb;
}
}
.step-header {
line-height: 40px;
font-weight: bold;
&.is-active {
color: var(--el-color-success);
}
.el-icon {
position: relative;
top: 2px;
}
}
}
}
.detail-right {
.el-upload-list__item,
.el-upload--picture-card {
width: 80px !important;
height: 80px !important;
}
.el-form-item--default {
margin-bottom: 0px;
}
.step-header {
color: var(--el-color-primary);
font-weight: bold;
line-height: 30px;
border-bottom: dotted 1px var(--el-border-color-light);
margin-block: 12px;
}
}
}