From bac982d78843150c2637b7334c32b583350d1e85 Mon Sep 17 00:00:00 2001
From: 叶松 <2217086471@qq.com>
Date: 星期三, 08 十一月 2023 13:53:59 +0800
Subject: [PATCH] 隐患举报增加页面
---
xcx/robePages/safeManage/hiddenReport.vue | 290 ++++++++++++++++++++++++
xcx/api/module/system.js | 9
xcx/api/module/robeSystem.js | 19 +
xcx/robePages/safeManage/addHidden.vue | 191 +++++++++++++++
xcx/robePages/safeManage/areaPolling.vue | 11
xcx/pages.json | 32 ++
xcx/pages/robeHome/index.vue | 7
xcx/robePages/safeManage/detailsHidden.vue | 106 ++++++++
8 files changed, 663 insertions(+), 2 deletions(-)
diff --git a/xcx/api/module/robeSystem.js b/xcx/api/module/robeSystem.js
index 6c8cce3..b53579a 100644
--- a/xcx/api/module/robeSystem.js
+++ b/xcx/api/module/robeSystem.js
@@ -268,4 +268,23 @@
//获取宿舍人头
getDormNumsLists: (params) =>
axios.post('/staff/dorm/findUserList', params),
+
+ /*
+ *隐患举报模块
+ */
+ //查询隐患列表
+ searchHiddenLists: (params) =>
+ axios.post('/secure/hiddendanger/selectPageList', params),
+ //添加隐患举报
+ addHiddenInfo: (params) =>
+ axios.post('/secure/hiddendanger/insert', params),
+ //修改隐患举报
+ updateHiddenInfo: (params) =>
+ axios.post('/secure/hiddendanger/update', params),
+ //删除隐患举报
+ deleteHiddenInfo: (params) =>
+ axios.get('/secure/hiddendanger/delete?id='+params),
+ //隐患举报详情
+ detailsHiddenInfo: (params) =>
+ axios.get('/secure/hiddendanger/selectInfo?id='+params),
}
\ No newline at end of file
diff --git a/xcx/api/module/system.js b/xcx/api/module/system.js
index 548fed4..c5f210a 100644
--- a/xcx/api/module/system.js
+++ b/xcx/api/module/system.js
@@ -22,8 +22,13 @@
},
}),
// 获取分公司信息
- getCompanyData: () =>
- axios.post('/engineering/company/pulldown'),
+ getCompanyData: (params) =>
+ axios.post('/engineering/company/pulldown',{
+ header: {
+ "content-type":'application/json'
+ },
+ ...params
+ }),
// 获取岗位信息
getPositionData: (params) =>
axios.post('/staff/position/findall', params),
diff --git a/xcx/pages.json b/xcx/pages.json
index 7f4234e..2832198 100644
--- a/xcx/pages.json
+++ b/xcx/pages.json
@@ -237,6 +237,38 @@
}
},
{
+ "path":"safeManage/areaPolling",
+ "style": {
+ "navigationBarTitleText": "区域巡检",
+ "navigationBarBackgroundColor": "#1976FF",
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path":"safeManage/hiddenReport",
+ "style": {
+ "navigationBarTitleText": "隐患举报",
+ "navigationBarBackgroundColor": "#1976FF",
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "safeManage/addHidden",
+ "style": {
+ "navigationBarTitleText": "添加",
+ "navigationBarBackgroundColor": "#1976FF",
+ "navigationBarTextStyle": "white"
+ }
+ },
+ {
+ "path": "safeManage/detailsHidden",
+ "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 c6b4900..8a5889f 100644
--- a/xcx/pages/robeHome/index.vue
+++ b/xcx/pages/robeHome/index.vue
@@ -216,6 +216,13 @@
border-radius: 10rpx;
margin-bottom: 20rpx;
background-color: #FFFFFF;
+ &:nth-child(3){
+ .users_content{
+ .users_menu{
+ margin-left: -30px;
+ }
+ }
+ }
.users_title{
height: 8vh;
display: flex;
diff --git a/xcx/robePages/safeManage/addHidden.vue b/xcx/robePages/safeManage/addHidden.vue
new file mode 100644
index 0000000..1698bf1
--- /dev/null
+++ b/xcx/robePages/safeManage/addHidden.vue
@@ -0,0 +1,191 @@
+<template>
+ <view class="check_add_index">
+ <u-form
+ ref="form"
+ :model="formCheck"
+ :rules="rulesCkeck"
+ labelWidth="auto"
+ labelPosition="left">
+ <view style="overflow: auto;width: 100%;background-color: #FFFFFF;" class="upload_items items_tyle">
+ <u-form-item label="问题照片">
+ <u-upload
+ :fileList="formCheck.imageList"
+ @afterRead="afterRead"
+ @delete="deleteImage"
+ name="66"
+ :previewFullImage="true"
+ :maxCount="6"
+ width="150"
+ height="150">
+ <image src="https://pipe.thhy-tj.com/group1/M00/00/02/bx5d1GSihuWAA-kBAAAICqDtUn8566.png" mode="widthFix" style="width:64px;height: 100px;display: flex;justify-content: center;"></image>
+ <view style="text-align: center;font-size: 16px;color: #666666;">上传照片</view>
+ </u-upload>
+ </u-form-item>
+ </view>
+ <u-form-item
+ label="隐患地点"
+ prop="dangerLocation"
+ borderBottom>
+ <u-input
+ v-model="formCheck.dangerLocation"
+ placeholder="请输入隐患地点"
+ border="none">
+ </u-input>
+ </u-form-item>
+ <view class="items_tyle">
+ <u-form-item
+ label="隐患标题"
+ prop="title"
+ borderBottom>
+ <u--textarea v-model="formCheck.title" placeholder="请输入隐患标题" height="100"></u--textarea>
+ </u-form-item>
+ </view>
+ </u-form>
+ <view class="submit_bnt">
+ <u-button type="primary" color="#1976FF" text="提交" @click="submitInsertForm()"></u-button>
+ </view>
+ <u-picker
+ :show="showUser"
+ :columns="userColumns"
+ keyName="realName"
+ @cancel="showUser = false"
+ @confirm="selectCompany">
+ </u-picker>
+ </view>
+</template>
+
+<script>
+ import { throttle } from '../../plugins/public.js';
+ import { basrUrl } from '@/api/http';
+ export default{
+ data(){
+ return{
+ showUser: false,//整改人弹框显隐
+ formCheck:{
+ imageList:[],//上传图片
+ userId:'',//整改人
+ },
+ rulesCkeck: {
+ dangerLocation: [{
+ required: true,
+ message: '请输入隐患地点',
+ trigger: 'blur'
+ }],
+ title: [{
+ required: true,
+ message: '请输入隐患标题',
+ trigger: 'blur'
+ }],
+ }
+ }
+ },
+ onLoad(option) {
+ },
+ methods:{
+ //提交按钮
+ submitInsertForm: throttle(function() {
+ this.$refs.form.validate().then((valid) => {
+ if(valid) {
+ const params = Object.assign({}, this.formCheck);
+ params.imgEntities = this.formCheck.imageList.map(item=>{
+ return {
+ imgPath:item.data,
+ }
+ });
+ delete params.userId
+ delete params.imageList;
+ this.$api.reboSystem.addHiddenInfo(params).then((res) => {
+ if(res.success) {
+ uni.$u.toast("提交成功!");
+ uni.redirectTo({
+ url: './hiddenReport'
+ });
+ } else {
+ uni.$u.toast(res.statusMsg);
+ }
+ })
+ }
+ })
+ }, 3000),
+ // 读取图片后
+ afterRead(event) {
+ this.formCheck.imageList.push({
+ status: 'loading',
+ message: '上传中',
+ })
+ uni.uploadFile({
+ url: `${basrUrl}/file/file/upload`,
+ fileType: event.file.type,
+ filePath: event.file.url,
+ name: 'file',
+ success: (res) => {
+ const data = JSON.parse(res.data);
+ console.log(data,event,'名字')
+ this.$set(this.formCheck.imageList, this.formCheck.imageList.length - 1, {
+ id: this.formCheck.imageList.length + 1,
+ status: 'success',
+ message: '',
+ data: data.data,
+ url: `https://pipe.thhy-tj.com/${data.data}`
+ })
+ },
+ fail: (error) => {
+ uni.$u.toast('上传失败!');
+ }
+ })
+ },
+ // 删除图片
+ deleteImage(event) {
+ this.$nextTick(() => {
+ this.formCheck.imageList.splice(event.index, 1);
+ })
+ },
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .check_add_index{
+ background-color: #F6F6F6;
+ padding: 0 15px;
+ position: relative;
+ height: 100vh;
+ overflow: hidden;
+ }
+ .submit_bnt {
+ position: absolute;
+ bottom: 5%;
+ width: calc(100% - 30px);
+ }
+
+
+ ::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-upload{
+ flex: none !important;
+ justify-content: center;
+ align-items: center;
+ }
+ ::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/areaPolling.vue b/xcx/robePages/safeManage/areaPolling.vue
new file mode 100644
index 0000000..89b06c8
--- /dev/null
+++ b/xcx/robePages/safeManage/areaPolling.vue
@@ -0,0 +1,11 @@
+<template>
+ <view class="areaPolling">
+ 区域巡检
+ </view>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/xcx/robePages/safeManage/detailsHidden.vue b/xcx/robePages/safeManage/detailsHidden.vue
new file mode 100644
index 0000000..729f58c
--- /dev/null
+++ b/xcx/robePages/safeManage/detailsHidden.vue
@@ -0,0 +1,106 @@
+<template>
+ <view class="check_details_index">
+ <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>
+ </view>
+</template>
+
+<script>
+ export default{
+ data(){
+ return{
+ hiddenDetails:[],//隐患举报详情
+ hiddenPhone:[],//隐患举报图片
+ }
+ },
+ onLoad(option) {
+ this.getDetailsInfo(option.id)
+ },
+ methods:{
+ //获取信息详情
+ getDetailsInfo(val){
+ this.$api.reboSystem.detailsHiddenInfo(val).then(res=>{
+ if(res.statusMsg === 'ok'){
+ this.hiddenDetails = res.data
+ this.hiddenPhone = res.data.imgEntities
+ }else{
+ uni.$u.toast(res.statusMsg);
+ }
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .check_details_index{
+ height: 100vh;
+ overflow: hidden;
+ background-color: #F6F6F6;
+ padding: 15px;
+
+ .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;
+ }
+ }
+ }
+ ::v-deep image{
+ width: 320px!important;
+ height: 240px!important;
+ }
+</style>
\ No newline at end of file
diff --git a/xcx/robePages/safeManage/hiddenReport.vue b/xcx/robePages/safeManage/hiddenReport.vue
new file mode 100644
index 0000000..484d5de
--- /dev/null
+++ b/xcx/robePages/safeManage/hiddenReport.vue
@@ -0,0 +1,290 @@
+<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="hidden_add">
+ <u-button type="primary" color="#1977FF" text="添加" @click="goAddHidden()"></u-button>
+ </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" @click="goDetailsPage(item)">详情></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>
+ </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: `./detailsHidden?id=${val.id}`
+ })
+ },
+ //跳转隐患举报添加按钮
+ goAddHidden(){
+ uni.navigateTo({
+ url: `./addHidden`
+ })
+ },
+ //查询列表
+ 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;
+
+ .hidden_add{
+ width: 100%;
+ line-height:20px;
+ margin-bottom: 10px;
+ }
+
+ .check_select{
+ display: flex;
+ margin-bottom: 10px;
+ }
+ .check_main{
+ height: calc(100% - 135px);
+ .check_index_scroll{
+ height: 95%;
+
+ .check_card_index{
+ height: 120px;
+ 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_card_main{
+ display: flex;
+ flex-direction: column;
+ justify-content: space-around;
+ .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;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ ::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