From 19d173ea725300ee6422ec6ef9573433da94d052 Mon Sep 17 00:00:00 2001
From: 叶松 <2217086471@qq.com>
Date: 星期一, 13 十一月 2023 14:17:21 +0800
Subject: [PATCH] 隐患举报小程序完成

---
 xcx/robePages/safeManage/approveHidden.vue      |  279 ++++++++++++++++
 web/src/api/modules/safety.js                   |   19 +
 xcx/api/module/robeSystem.js                    |    3 
 web/src/views/SecureManage/NipCheck/NipTips.vue |  366 +++++++++++++++++++++
 xcx/pages.json                                  |   16 
 xcx/pages/robeHome/index.vue                    |    5 
 xcx/robePages/safeManage/checkHidden.vue        |  303 +++++++++++++++++
 7 files changed, 987 insertions(+), 4 deletions(-)

diff --git a/web/src/api/modules/safety.js b/web/src/api/modules/safety.js
index b0e824c..fe7ff49 100644
--- a/web/src/api/modules/safety.js
+++ b/web/src/api/modules/safety.js
@@ -289,4 +289,23 @@
   // 获取全部预警消息类型
   getAllWaringData: () =>
     axios.get('/materials/helmet/dataAIType'),
+
+  /**
+   * 隐患举报模块
+   */
+  //查询隐患列表
+	searchHiddenLists: (params) =>
+    axios.post('/secure/hiddendanger/selectPageList', params),
+  //审核隐患举报
+  checkHiddenInfo: (params) =>
+    axios.post('/secure/hiddendanger/examine', params),
+  //修改隐患举报
+  updateHiddenInfo: (params) =>
+    axios.post('/secure/hiddendanger/update', params),
+  //删除隐患举报
+  deleteHiddenInfo: (params) =>
+    axios.get('/secure/hiddendanger/delete',{params}),
+  //隐患举报详情
+  detailsHiddenInfo: (params) =>
+    axios.get('/secure/hiddendanger/selectInfo',{params}),
 }
\ No newline at end of file
diff --git a/web/src/views/SecureManage/NipCheck/NipTips.vue b/web/src/views/SecureManage/NipCheck/NipTips.vue
index c4b634a..e064a47 100644
--- a/web/src/views/SecureManage/NipCheck/NipTips.vue
+++ b/web/src/views/SecureManage/NipCheck/NipTips.vue
@@ -1,3 +1,365 @@
 <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 } 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://pipe.thhy-tj.com/${item.imgPath}`,
+                        name:item.imgPath,
+                        nameImg:item.imgName
+                    })
+                })
+            }else{
+                this.$message.warning(res.statusMsg)
+            }
+        })
+      },
+      //导出excel
+      exportFiles(){},
+      // 修改按钮信息
+      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://pipe.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
diff --git a/xcx/api/module/robeSystem.js b/xcx/api/module/robeSystem.js
index b53579a..0ca76ce 100644
--- a/xcx/api/module/robeSystem.js
+++ b/xcx/api/module/robeSystem.js
@@ -287,4 +287,7 @@
 	//隐患举报详情
 	detailsHiddenInfo: (params) =>
 		axios.get('/secure/hiddendanger/selectInfo?id='+params),
+	//审核隐患举报
+	  checkHiddenInfo: (params) =>
+		axios.post('/secure/hiddendanger/examine', params),
 }
\ No newline at end of file
diff --git a/xcx/pages.json b/xcx/pages.json
index 2832198..fe5079b 100644
--- a/xcx/pages.json
+++ b/xcx/pages.json
@@ -269,6 +269,22 @@
 					}
 				},
 				{
+					"path": "safeManage/checkHidden",
+					"style": {
+						"navigationBarTitleText": "隐患举报审核",
+						"navigationBarBackgroundColor": "#1976FF",
+						"navigationBarTextStyle": "white"
+					}
+				},
+				{
+					"path": "safeManage/approveHidden",
+					"style": {
+						"navigationBarTitleText": "隐患举报审核",
+						"navigationBarBackgroundColor": "#1976FF",
+						"navigationBarTextStyle": "white"
+					}
+				},
+				{
 					"path": "dataBoard/productMonitor",
 					"style": {
 						"navigationBarTitleText": "生产监控",
diff --git a/xcx/pages/robeHome/index.vue b/xcx/pages/robeHome/index.vue
index 8a5889f..54c132b 100644
--- a/xcx/pages/robeHome/index.vue
+++ b/xcx/pages/robeHome/index.vue
@@ -219,7 +219,7 @@
 					&:nth-child(3){
 						.users_content{
 							.users_menu{
-								margin-left: -30px;
+								// margin-left: -30px;
 							}
 						}
 					}
@@ -245,7 +245,7 @@
 						padding: 15px 0 0;
 						display: flex;
 						align-items: center;
-						justify-content: space-around;
+						// justify-content: space-around;
 						max-width: 100%;
 						height: calc(100% - 110rpx);
 						flex-wrap: wrap;
@@ -257,6 +257,7 @@
 						.users_menu{
 							max-width: calc(100%/4 - 45rpx);
 							padding-left: 20rpx;
+							padding-right: 13px;
 							display: flex;
 							justify-content: center;
 							align-items: center;
diff --git a/xcx/robePages/safeManage/approveHidden.vue b/xcx/robePages/safeManage/approveHidden.vue
new file mode 100644
index 0000000..9c49116
--- /dev/null
+++ b/xcx/robePages/safeManage/approveHidden.vue
@@ -0,0 +1,279 @@
+<template>
+	<view class="check_add_index">
+		<view style="height:90vh;overflow: auto;">
+			<view class="check_details_matter">
+				<view class="check_details_card" >
+					<view class="hidden_text">问题照片</view>
+					<view class="check_details_phone hidden_datas" v-for="(item,index) in hiddenPhone">
+						<!-- <u-image :src="`https://pipe.thhy-tj.com/${item.imgPath}`" ></u-image> -->
+						<u-album :urls="[`https://pipe.thhy-tj.com/${item.imgPath}`]"></u-album>
+					</view>
+				</view>
+				<view class="check_details_card">
+					<view class="hidden_text">举报时间</view>
+					<view class="hidden_datas">{{hiddenDetails.createTime}}</view>
+				</view>
+				<view class="check_details_card">
+					<view class="hidden_text">隐患地点</view>
+					<view class="hidden_datas">{{hiddenDetails.dangerLocation}}</view>
+				</view>
+				<view class="check_details_card">
+					<view class="hidden_text">隐患内容</view>
+					<view class="hidden_datas">{{hiddenDetails.title}}</view>
+				</view>
+				<view class="check_details_card">
+					<view class="hidden_text">提交人</view>
+					<view class="hidden_datas">{{hiddenDetails.reporter}}</view>
+				</view>
+			</view>
+			<view class="check_details_matter" style="margin-top:15px" v-if="checkShow">
+				<view class="check_details_card">
+					<view class="hidden_text">隐患等级</view>
+					<view class="hidden_datas">{{hiddenDetails.levelName}}</view>
+				</view>
+				<view class="check_details_card">
+					<view class="hidden_text">积分值</view>
+					<view class="hidden_datas">{{hiddenDetails.integral===null?'':hiddenDetails.integral}}</view>
+				</view>
+			</view>
+			<u-form
+				ref="form"
+				:model="formCheck"
+				:rules="rulesCkeck"
+				labelWidth="auto"
+				v-if="!checkShow"
+				labelPosition="left">
+				<u-form-item
+						label="隐患等级"
+						prop="level"
+						borderBottom
+						@click="changeLever()">
+					<u-input
+						v-model="formCheck.level"
+						placeholder="请选择隐患等级"
+						disabledColor="#FFFFFF"
+						border="none">
+					</u-input>
+					<u-icon
+						slot="right"
+						name="arrow-right">
+					</u-icon>
+				</u-form-item>
+				<u-form-item
+						label="积分值"
+						prop="integral"
+						borderBottom>
+					<u-input
+						v-model="formCheck.integral"
+						placeholder="请输入积分值"
+						disabledColor="#FFFFFF"
+						border="none">
+					</u-input>
+				</u-form-item>
+			</u-form>
+			<view class="submit_bnt" v-if="hiddenBtn==='0'">
+				<u-button type="primary" color="#1976FF" text="提交" @click="submitInsertForm()"></u-button>
+			</view>
+			<u-picker 
+				:show="showLever" 
+				:columns="leverColumns" 
+				keyName="label"
+				@cancel="showLever = false"
+				@confirm="selectLever">
+			</u-picker>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { throttle } from '../../plugins/public.js';
+	import { basrUrl } from '@/api/http';
+	export default{
+		data(){
+			return{
+				hiddenBtn:0,//是否展示提交按钮 0:展示
+				checkShow:false,//展示隐患等级和积分值是否可修改
+				showLever: false,//隐患等级弹框显隐
+				leverColumns: [
+					[
+						{
+							label:'一般隐患',
+							value:1
+						},
+						{
+							label:'重大隐患',
+							value:2
+						},
+						{
+							label:'不存在',
+							value:3
+						}
+					]
+				],//所有隐患等级
+				formCheck:{
+					imageList:[],//上传图片
+					levelId:'',//隐患等级id
+				},
+				hiddenDetails:[],//隐患举报详情
+				hiddenPhone:[],//隐患举报图片
+				rulesCkeck: {
+					level: [{
+						required: true,
+						message: '请选择隐患等级',
+						trigger: 'change'
+					}],
+					integral: [{
+						required: true,
+						message: '请输入积分',
+						trigger: 'blur'
+					}],
+				}
+			}
+		},
+		onLoad(option) {
+			this.hiddenBtn = option.status
+			if(option.status==='0'){//0为审批页面、其他为详情页面
+				this.checkShow = false
+				this.getDetailsInfo(option.id,0)
+			}else{
+				this.checkShow = true
+				this.getDetailsInfo(option.id,1)
+			}
+		},
+		methods:{
+			// 打开隐患等级选择
+			 changeLever() {
+				 this.showLever = true;
+				 this.$set(this.formCheck, 'levelId', '');
+				 this.$set(this.formCheck, 'level','');
+			 },
+			// 确认隐患等级
+			selectLever({ value }) {
+				 this.$set(this.formCheck, 'levelId', value[0].value);
+				 this.$set(this.formCheck, 'level', value[0].label);
+				 this.showLever = false;
+			},
+			//获取信息详情
+			getDetailsInfo(val,num){
+				this.$api.reboSystem.detailsHiddenInfo(val).then(res=>{
+					if(res.statusMsg === 'ok'){
+						this.hiddenDetails = res.data
+						this.hiddenPhone = res.data.imgEntities
+						if(num===1){
+							this.$set(this.formCheck,'level',res.data.level)
+							this.$set(this.formCheck,'integral',res.data.integral)
+						}
+					}else{
+						uni.$u.toast(res.statusMsg);
+					}
+				})
+			},
+			//提交按钮
+			submitInsertForm: throttle(function() {
+				this.$refs.form.validate().then((valid) => {
+					if(valid) {
+						const params = Object.assign({},this.hiddenDetails);
+						params.level = this.formCheck.levelId
+						params.integral = this.formCheck.integral
+						this.$api.reboSystem.checkHiddenInfo(params).then((res) => {
+							if(res.success) {
+								uni.$u.toast("提交成功!");
+								uni.redirectTo({
+									url: './checkHidden'
+								});
+							} else {
+								uni.$u.toast(res.statusMsg);
+							}
+						})
+					}
+				})
+			}, 3000),
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.check_add_index{
+		background-color: #F6F6F6;
+		padding: 0 15px;
+		position: relative;
+		height: 100vh;
+		overflow: hidden;
+		
+		.check_details_matter{
+			// height: calc(100vh - 112px);
+			background-color: #FFFFFF;
+			border-radius: 6px;
+			
+			.check_details_card{
+				padding: 15px 10px;
+				display: flex;
+				justify-content: space-between;
+				
+				.hidden_text{
+					color: rgba(153, 153, 153, 1);
+					font-size: 16px;
+					flex: none;
+				}
+				.hidden_datas{
+					color: rgba(51, 51, 51, 1);
+					font-size: 15px;
+					text-align: left;
+					flex: 1;
+					margin-left: 15px;
+				}
+			}
+			.check_details_contents{
+				height: calc(100% - 460px);
+				margin: 15px;
+				padding: 15px;
+				display: flex;
+				// align-items: center;
+				background-color: #F6FAFF;
+				color:#666666 ;
+			}
+			.check_details_phone{
+				margin-top: 5px;
+				margin-left: 15px;
+				display: flex;
+				justify-content: center;
+				overflow: auto;
+			}
+		}
+	}
+	.submit_bnt {
+		position: absolute;
+		bottom: 5%;
+		width: calc(100% - 30px);
+	}
+	
+	::v-deep image{
+		width: 320px!important;
+		height: 240px!important;
+	}
+	
+	::v-deep .u-input__content__field-wrapper__field {
+		text-align: right !important;
+	}
+	::v-deep .u-form-item{
+		margin: 15px 0;
+		padding: 0 10px;
+		background-color: #FFFFFF;
+		line-height: 40px;
+		border-radius: 4px;
+	}
+	::v-deep .u-textarea{
+		background-color: #EFEFEF !important;
+		color: #999999 !important;
+	}
+	
+</style>
+<style scoped>
+	.items_tyle /deep/.u-form-item__body{
+		flex-direction: column !important;
+	}
+	.upload_items /deep/.u-upload__wrap{
+		flex-wrap: nowrap;
+		align-items: center;
+	}
+</style>
\ No newline at end of file
diff --git a/xcx/robePages/safeManage/checkHidden.vue b/xcx/robePages/safeManage/checkHidden.vue
new file mode 100644
index 0000000..7976020
--- /dev/null
+++ b/xcx/robePages/safeManage/checkHidden.vue
@@ -0,0 +1,303 @@
+<template>
+	<view class="check_index">
+		<view class="check_select">
+			<view @click="startClick()">
+				<u--input placeholder="举报起始时间" disabled disabledColor="#FFFFFF" placeholderStyle="color:#999999;padding-left:10px"  v-model="search.startTime" border="none" suffixIcon="calendar" suffixIconStyle="color: #666666;font-size:30px;"></u--input>
+			</view>
+			<view @click="endClick()">
+				<u--input placeholder="举报截止时间" disabled disabledColor="#FFFFFF"  placeholderStyle="color:#999999;padding-left:10px" v-model="search.endTime" border="none" suffixIcon="calendar" suffixIconStyle="color: #666666;font-size:30px;"></u--input>
+			</view>
+			<view style="width:60px">
+				<u-button type="primary" color="#1977FF" text="查询" @click="searchCheckList()"></u-button>
+			</view>
+		</view>
+		<view class="check_main">
+			<scroll-view
+				scroll-y="true"
+				class="check_index_scroll"
+				:scroll-top="scrollTop" 
+				refresher-enabled="true" 
+				refresher-background="#EAEAEA"
+				:refresher-triggered="triggered" 
+				@refresherpulling="refresherrefresh"
+				@scrolltolower="scrolltoLower">
+				<view class="check_card_index" v-for="(item,index) in hiddenDatas" :key="index">
+					<view class="check_card_header">
+						<view class="check_header_times">{{item.createTime}}</view>
+						<view :class="{'check_header_names':item.auditStatus!==0,'check_header_names_wait':item.auditStatus===0}">{{item.auditStatusName}}</view>
+					</view>
+					<view class="check_card_main">
+						<view class="check_main_items">
+							<view class="check_main_items_titles">隐患地点</view>
+							<view class="check_main_items_datas">{{item.dangerLocation}}</view>
+						</view>
+						<view class="check_main_items">
+							<view class="check_main_items_titles">隐患内容</view>
+							<view class="check_main_items_datas">{{item.title}}</view>
+						</view>
+						<view class="check_main_items">
+							<view class="check_main_items_titles">提交人</view>
+							<view class="check_main_items_datas">{{item.reporter}}</view>
+						</view>
+						<view class="check_main_items">
+							<view class="check_main_items_titles">隐患等级</view>
+							<view class="check_main_items_datas">{{item.levelName}}</view>
+						</view>
+						<view class="check_main_items">
+							<view class="check_main_items_titles">积分值</view>
+							<view class="check_main_items_datas">{{item.integral===null?'':item.integral}}</view>
+						</view>
+					</view>
+					<view class="check_card_footer">
+						<view class="" @click="goDetailsPage(item)">{{item.auditStatus===0?'审核':'详情'}}</view>
+					</view>
+				</view>
+				<u-loadmore :status="status" :icon-type="iconType" :load-text="loadText" />
+			</scroll-view>
+		</view>
+		<u-datetime-picker
+			:show="showStart"
+			v-model="startTime"
+			mode="date"
+			@confirm="changeStart"
+			@cancel="showStart = false"
+		></u-datetime-picker>
+		<u-datetime-picker
+			:show="showEnd"
+			v-model="endTime"
+			mode="date"
+			@confirm="changeEnd"
+			@cancel="showEnd = false"
+		></u-datetime-picker>
+		<u-popup :show="showResult" @close="closeResult" mode="center" :round="6" :closeable="true">
+			<view class="result_main_style">
+				{{resultContent===null?'':resultContent}}
+			</view>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	import {changeTime,throttle} from '@/plugins/public.js'
+	export default{
+		data(){
+			return{
+				showResult:false,//是否展示检查结果弹框
+				resultContent:"",//检查结果内容
+				search:{},//查询条件
+				showStart:false,//是否显示起始时间
+				showEnd:false,//是否展示截止时间弹框
+				startTime:Number(new Date()),//起始时间默认当天
+				endTime:Number(new Date()),//截止时间默认当天
+				hiddenDatas:[{}],//列表数据
+				pageNum: 1,
+				pageSize: 10,
+				loadPage: 0,
+				scrollTop: 0,
+				triggered: true,
+				status: 'loading',
+				loadText: {
+					loading: '努力加载中',
+					nomore: '没有更多数据了'
+				},
+			}
+		},
+		onLoad(options) {
+			this.searchCheckList()
+		},
+		methods:{
+			//关闭弹框
+			closeResult(){
+				this.showResult = false
+			},
+			//跳转隐患审批或详情页面
+			goDetailsPage(val){
+				uni.navigateTo({
+					url: `./approveHidden?id=${val.id}&status=${val.auditStatus}`
+				})
+			},
+			//查询列表
+			searchCheckList(){
+				this.triggered = true;
+				this.hiddenDatas = [];
+				let params =Object.assign({},this.search,{
+					pageNum: this.pageNum,
+					pageSize:this.pageSize,
+				})
+				this.$api.reboSystem.searchHiddenLists(params).then(res=>{
+					if(res.statusMsg === 'ok'){
+						this.hiddenDatas = res.data.list
+						this.loadPage = res.data.pages;
+						this.triggered = false;
+						this.status = 'nomore';
+					}else{
+						uni.$u.toast(res.statusMsg);
+					}
+				}).catch((err) => {
+					uni.$u.toast('请检查网络服务或联系管理员!')
+				})
+			},
+			//自定义下拉刷新
+			refresherrefresh: throttle(function() {
+				this.status = 'loading';
+				this.pageNum = 1;
+				this.searchCheckList();
+				uni.$u.toast('刷新成功');
+			}, 500),
+			//触底刷新
+			scrolltoLower: throttle(function() {
+				this.status = 'loading';
+				if(this.pageNum >= this.loadPage) {
+					setTimeout(() => {
+						this.status = 'nomore'
+						uni.$u.toast('没有更多数据了');
+					},1000)
+					return
+				} else {
+					this.pageNum+=1
+					let params =Object.assign({},this.search,{
+						pageNum: this.pageNum,
+						pageSize:this.pageSize,
+					})
+					this.$api.reboSystem.searchHiddenLists(params).then(res=>{
+						if(res.statusMsg === 'ok'){
+							this.hiddenDatas.push(...res.data.list)
+							this.loadPage = res.data.pages;
+							this.triggered = false;
+							this.status = 'nomore';
+						}else{
+							uni.$u.toast(res.statusMsg);
+						}
+					}).catch((err) => {
+						uni.$u.toast('请检查网络服务或联系管理员!')
+					})
+				}
+			}, 1500),
+			//点击弹出选择起始时间
+			startClick(){
+				this.showStart = true
+				this.$set(this.search,'startTime','')
+			},
+			//确定选择的起始时间
+			changeStart({value}){
+				this.showStart = false
+				this.$set(this.search,'startTime',changeTime(value))
+			},
+			//点击弹出选择截止时间
+			endClick(){
+				this.showEnd = true
+				this.$set(this.search,'endTime','')
+			},
+			//确定选择的起始时间
+			changeEnd({value}){
+				this.showEnd = false
+				this.$set(this.search,'endTime',changeTime(value))
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.check_index{
+		height: 100vh;
+		background-color: #F6F6F6;
+		padding: 10px 15px;
+		
+		.check_select{
+			display: flex;
+			margin-bottom: 10px;
+		}
+		.check_main{
+			height: calc(100% - 50px);
+			.check_index_scroll{
+				height: 95%;
+				
+				.check_card_index{
+					height: 230px;
+					background-color: #FFFFFF;
+					border-radius: 6px;
+					margin-bottom: 10px;
+					.check_card_header{
+						line-height: 40px;
+						border-bottom: 1px solid #F2F2F2;
+						display: flex;
+						justify-content: space-between;
+						align-items: center;
+						.check_header_times{
+							font-size: 15px;
+							padding-left: 28px;
+							color: #333333;
+							position: relative;
+							&::before{
+								width: 15px;
+								height: 15px;
+								content: "";
+								background: url('../../static/times.png') no-repeat;
+								position: absolute;
+								top: 13px;
+								left: 10px;
+							}
+						}
+						.check_header_names{
+							padding-right: 15px;
+							font-size: 17px;
+							color: #1977FF;
+						}
+						.check_header_names_wait{
+							padding-right: 15px;
+							font-size: 17px;
+							color: rgba(252, 62, 62, 1);
+						}
+					}
+					.check_card_main{
+						display: flex;
+						flex-direction: column;
+						justify-content: space-around;
+						border-bottom: 1px solid rgba(234, 234, 234, 1);
+						.check_main_items{
+							display: flex;
+							line-height: 30px;
+							.check_main_items_titles{
+								padding-left: 15px;
+								width: 80px;
+								flex: none;
+								color: #999999;
+								font-size: 15px;
+							}
+							.check_main_items_datas{
+								padding-right: 10px;
+								color: #333333;
+								font-size: 15px;
+								flex: 1;
+								text-align: left;
+								overflow: hidden;
+								text-overflow: ellipsis;
+								white-space: nowrap;
+							}
+						}
+					}
+					.check_card_footer{
+						line-height: 35px;
+						width: 100%;
+						display: flex;
+						justify-content: center;
+						align-items: center;
+					}
+				}
+			}
+		}
+	}
+	::v-deep .u-input {
+		margin-right: 10px!important;
+		background-color: #FFFFFF;
+		border-radius: 0px;
+		height: 40px;
+	}
+	.result_main_style{
+		width: 200px;
+		height: 200px;
+		padding: 30px 15px 15px;
+		overflow: auto;
+		margin-right: 15px;
+	}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3