diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/trouble/SmzSspProblemmodifyMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/trouble/SmzSspProblemmodifyMapper.xml index 3eea4c3b..cabbe36b 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/trouble/SmzSspProblemmodifyMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/trouble/SmzSspProblemmodifyMapper.xml @@ -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, diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspProblemmodifyServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspProblemmodifyServiceImpl.java index fa9f988a..7c2984da 100644 --- a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspProblemmodifyServiceImpl.java +++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/SmzSspProblemmodifyServiceImpl.java @@ -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(); diff --git a/yanzhu-ui-vue3/src/assets/icons/svg/twrap.svg b/yanzhu-ui-vue3/src/assets/icons/svg/twrap.svg new file mode 100644 index 00000000..def17d23 --- /dev/null +++ b/yanzhu-ui-vue3/src/assets/icons/svg/twrap.svg @@ -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> \ No newline at end of file diff --git a/yanzhu-ui-vue3/src/views/system/user/index.vue b/yanzhu-ui-vue3/src/views/system/user/index.vue index 9fdcd139..ae18a076 100644 --- a/yanzhu-ui-vue3/src/views/system/user/index.vue +++ b/yanzhu-ui-vue3/src/views/system/user/index.vue @@ -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; diff --git a/yanzhu-ui-vue3/src/views/trouble/problemmodify/detailDrawer.vue b/yanzhu-ui-vue3/src/views/trouble/problemmodify/detailDrawer.vue index 73400bed..334e7b77 100644 --- a/yanzhu-ui-vue3/src/views/trouble/problemmodify/detailDrawer.vue +++ b/yanzhu-ui-vue3/src/views/trouble/problemmodify/detailDrawer.vue @@ -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; } } }