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