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