From 7e603bde766e5f4fc7f95c785b1083c42f61955e Mon Sep 17 00:00:00 2001
From: 李旭东 <woaiguo66@sina.com>
Date: 星期五, 24 十一月 2023 13:42:57 +0800
Subject: [PATCH] Merge branch 'master' of http://111.30.93.211:10101/r/supipe
---
web/src/views/SecureManage/NipCheck/NipTips.vue | 388 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 386 insertions(+), 2 deletions(-)
diff --git a/web/src/views/SecureManage/NipCheck/NipTips.vue b/web/src/views/SecureManage/NipCheck/NipTips.vue
index c4b634a..34aead1 100644
--- a/web/src/views/SecureManage/NipCheck/NipTips.vue
+++ b/web/src/views/SecureManage/NipCheck/NipTips.vue
@@ -1,3 +1,387 @@
<template>
- <div>防患举报</div>
-</template>
\ No newline at end of file
+ <div class="main">
+ <div class="main_header">
+ <div class="header_item">
+ <span class="header_label">举报时间:</span>
+ <el-date-picker
+ v-model="search.time"
+ type="daterange"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ :default-time="['00:00:00','23:59:59']"
+ range-separator="-"
+ start-placeholder="起始时间"
+ end-placeholder="结束时间">
+ </el-date-picker>
+ </div>
+ <div class="header_item">
+ <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button>
+ <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('insert')" @click="exportFiles">导出Excel</el-button>
+ </div>
+ </div>
+ <div class="main_content">
+ <el-table
+ v-loading="loading"
+ :data="dataList"
+ height="100%">
+ <el-table-column align="center" label="序号" width="60">
+ <template #default="scope">
+ <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="createTime" label="举报时间" align="center" width="150"></el-table-column>
+ <el-table-column prop="dangerLocation" label="隐患地点" align="center" ></el-table-column>
+ <el-table-column prop="title" label="隐患标题" align="center" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="reporter" label="提交人" align="center" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="levelName" label="隐患等级" align="center" show-overflow-tooltip></el-table-column>
+ <el-table-column prop="auditStatusName" label="审核状态" align="center" width="150"></el-table-column>
+ <el-table-column prop="integral" label="积分" align="center" ></el-table-column>
+ <el-table-column label="操作" align="center" width="250">
+ <template #default="{ row }">
+ <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="updateProp(row)">修改</el-button>
+ <el-button class="delete_btn" size="mini" v-if="showButton('delete')" @click="deleteInfo(row)">删除</el-button>
+ <el-button class="table_btn" size="mini" v-if="showButton('update')&&row.auditStatus!==1" @click="checkHidden(row)">审核</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ <div class="main_footer">
+ <el-pagination
+ background
+ @current-change="changePageNum"
+ @size-change="changePageSize"
+ :current-page="pageNum"
+ :page-sizes="[10, 20, 50, 100]"
+ :page-size="pageSize"
+ layout="total, sizes, prev, pager, next, jumper"
+ :total="total">
+ </el-pagination>
+ </div>
+ <el-dialog
+ class="prop_dialog"
+ :title="asyncTitle? '隐患审核' :'修改隐患'"
+ :close-on-click-modal="false"
+ :visible.sync="asyncVisible"
+ width="45%">
+ <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="auto" class="rule_form">
+ <el-form-item label="举报时间:" prop="createTime">
+ <el-date-picker
+ v-model="ruleForm.createTime"
+ type="date"
+ :disabled="disabled"
+ format="yyyy-MM-dd HH:mm:ss"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="请选择举报时间">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="隐患地点:" prop="dangerLocation">
+ <el-input v-model="ruleForm.dangerLocation" :size="size" clearable placeholder="请输入隐患地点" :disabled="disabled"></el-input>
+ </el-form-item>
+ <el-form-item label="隐患标题" prop="title">
+ <el-input v-model="ruleForm.title" :size="size" type="textarea" :rows="5" clearable placeholder="请输入隐患标题" :disabled="disabled"></el-input>
+ </el-form-item>
+ <el-form-item label="问题照片:" prop="imageList">
+ <upload-image :file-list="imageList" @delectImage="delectImage" :disabled="disabled" style="overflow:auto">
+ <template #info>
+ <span>支持jpg、png、gif格式文件</span>
+ </template>
+ </upload-image>
+ </el-form-item>
+ <el-form-item label="提交人:" prop="reporter" v-if="asyncTitle">
+ <el-input v-model="ruleForm.reporter" :size="size" clearable placeholder="请输入提交人" :disabled="true"></el-input>
+ </el-form-item>
+ <el-form-item label="隐患等级:" prop="level" v-if="asyncTitle">
+ <el-select v-model="ruleForm.level" placeholder="请选择隐患等级" clearable>
+ <el-option
+ v-for="item in optionsLevel"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="积分值:" prop="integral" v-if="asyncTitle">
+ <el-input v-model="ruleForm.integral" :size="size" clearable placeholder="请输入积分值" ></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer">
+ <el-button @click="asyncVisible = false">取 消</el-button>
+ <el-button class="submit_btn" @click="asyncTitle ? submitInsert() : submitUpdate()">提 交</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import { buttonPinia } from '../../../pinia/index';
+import UploadImage from '../../../components/uploadImage.vue'
+import { throttle, changeSize,downFiles } from '../../../plugins/public'; // 导入节流、动态切换组件尺寸方法
+ export default {
+ components:{
+ UploadImage,
+ },
+ data() {
+ return {
+ size: changeSize(), // 组件尺寸
+ pageNum: 1,
+ pageSize: 10,
+ search:{},//查询条件
+ total: 0,
+ disabled:false,
+ loading: false,
+ dataList: [], //举报隐患信息列表
+ imageList:[],
+ asyncTitle: true, // 对话框title 新增:true 修改:false
+ asyncVisible: false, // 添加 修改对话框
+ optionsLevel:[
+ {
+ label:'一般隐患',
+ value:1
+ },
+ {
+ label:'重大隐患',
+ value:2
+ },
+ {
+ label:'不存在',
+ value:3
+ }
+ ],
+ ruleForm: {
+ }, // 按钮表单
+ rules: {
+ dangerLocation: [{
+ required: true,
+ message: '请输入隐患地点',
+ trigger: 'blur'
+ }],
+ title: [{
+ required: true,
+ message: '请输入隐患标题',
+ trigger: 'blur'
+ }],
+ reporter: [{
+ required: true,
+ message: '请输入提交人',
+ trigger: 'blur'
+ }],
+ createTime: [{
+ required: true,
+ message: '请选择举报时间',
+ trigger: 'change'
+ }],
+ level: [{
+ required: true,
+ message: '请选择隐患等级',
+ trigger: 'blur'
+ }],
+ integral:[{
+ required: true,
+ message: '请输入积分',
+ trigger: 'blur'
+ }],
+ },
+ optionsType:[],//设备类型
+ optionsDevice:[],//设备名称
+ optionsUser:[],//负责人
+ }
+ },
+ watch: {
+ asyncVisible(bol) {
+ if(!bol) {
+ this.ruleForm = {};
+ this.$refs.ruleForm.resetFields();
+ }
+ }
+ },
+ mounted() {
+ const that = this;
+ // 根据窗口大小动态修改组件尺寸
+ window.onresize = () => {
+ that.size = changeSize();
+ }
+ that.searchButtonInfo(true);
+ },
+ methods: {
+ // 查询按钮列表信息
+ searchButtonInfo(bol) {
+ if(bol) {
+ this.pageNum = 1;
+ }
+ let params = Object.assign({},this.search,{
+ pageNum: this.pageNum,
+ pageSize: this.pageSize
+ })
+ params.startTime = this.search.time&&this.search.time[0]
+ params.endTime = this.search.time&&this.search.time[1]
+ delete params.time
+ this.loading = true;
+ this.$api.Safety.searchHiddenLists(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ this.total = res.data.total;
+ this.dataList = res.data.list;
+ }
+ this.loading = false;
+ })
+ },
+ //删除上传图片
+ delectImage(item){
+ let uploadId = item.id
+ this.imageList.splice(this.imageList.findIndex(itm => itm.id === uploadId),1)
+ this.$message.success("删除成功!")
+ },
+ // 审核按钮
+ checkHidden(row) {
+ this.asyncTitle = true;
+ this.imageList = []
+ this.asyncVisible = true;
+ this.disabled = true
+ this.$api.Safety.detailsHiddenInfo({id: row.id}).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.ruleForm = res.data
+ res.data.imgEntities.map(item=>{
+ this.imageList.push({
+ id: this.imageList.length + 1,
+ url:`https://szpipe.thhy-tj.com/${item.imgPath}`,
+ name:item.imgPath,
+ nameImg:item.imgName
+ })
+ })
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ },
+ // 转圈圈
+ functionLoading() {
+ this.loadingView = this.$loading({
+ lock: true,
+ text: '请稍后...',
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ });
+ },
+ //导出excel
+ exportFiles(){
+ let params = {}
+ params.startTime = this.search.time&&this.search.time[0]
+ params.endTime = this.search.time&&this.search.time[1]
+ delete params.time
+ this.functionLoading();
+ this.$api.Safety.exportHiddenFiles(params).then(res => {
+ downFiles(res, '举报信息', 'xls')
+ this.loadingView.close()
+ })
+ .catch(() => {
+ this.loadingView.close();
+ })
+ },
+ // 修改按钮信息
+ updateProp(row) {
+ this.imageList = []
+ this.asyncTitle = false;
+ this.asyncVisible = true;
+ this.disabled = false
+ this.$api.Safety.detailsHiddenInfo({id: row.id}).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.ruleForm = res.data
+ res.data.imgEntities.map(item=>{
+ this.imageList.push({
+ id: this.imageList.length + 1,
+ url:`https://szpipe.thhy-tj.com/${item.imgPath}`,
+ name:item.imgPath,
+ nameImg:item.imgName
+ })
+ })
+ }else{
+ this.$message.warning(res.statusMsg)
+ }
+ })
+ },
+ // 删除按钮信息
+ deleteInfo(row) {
+ this.$confirm("该操作将删除该信息,是否继续删除?", "提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning"
+ })
+ .then(() => {
+ this.$api.Safety.deleteHiddenInfo({id: row.id})
+ .then(res => {
+ if(res.statusMsg === 'ok') {
+ this.searchButtonInfo(true);
+ this.$message.success("删除成功!");
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ })
+ .catch(() => {
+ this.$message.warning("您已取消");
+ })
+ },
+ // 提交审核按钮信息
+ submitInsert: throttle(function() {
+ this.$refs.ruleForm.validate((valid) => {
+ if(valid) {
+ const params = Object.assign({}, this.ruleForm);
+ let arrTitle = []
+ this.imageList&&this.imageList.forEach(item=>{
+ arrTitle.push({imgPath:item.name})
+ })
+ params.imgEntities = arrTitle
+ this.$api.Safety.checkHiddenInfo(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ this.asyncVisible = false;
+ this.searchButtonInfo(true);
+ this.$message.success('审核成功!');
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ }
+ })
+ }, 3000),
+ // 提交修改按钮信息
+ submitUpdate: throttle(function() {
+ this.$refs.ruleForm.validate((valid) => {
+ if(valid) {
+ const params = Object.assign({}, this.ruleForm);
+ let arrTitle = []
+ this.imageList&&this.imageList.forEach(item=>{
+ arrTitle.push({imgPath:item.name})
+ })
+ params.imgEntities = arrTitle
+ this.$api.Safety.updateHiddenInfo(params).then((res) => {
+ if(res.statusMsg === 'ok') {
+ this.asyncVisible = false;
+ this.searchButtonInfo(true);
+ this.$message.success('修改成功!');
+ } else {
+ this.$message.warning(res.statusMsg);
+ }
+ })
+ }
+ })
+ }, 3000),
+ // 判断按钮权限信息
+ showButton(str) {
+ const pinia = buttonPinia();
+ return pinia.$state.buttonInfo.includes(str);
+ },
+ // 切换页数
+ changePageNum(page) {
+ this.pageNum = page;
+ this.searchButtonInfo();
+ },
+ // 切换每页条数
+ changePageSize(size) {
+ this.pageSize = size;
+ this.searchButtonInfo();
+ }
+ }
+ }
+</script>
+
+<style lang="sass" scoped>
+@import '../../../style/layout-main.scss';
+</style>
\ No newline at end of file
--
Gitblit v1.9.3