qa-prevention-gwj-first-app/pages/basics/home.vue

955 lines
27 KiB
Vue
Raw Permalink Normal View History

2023-11-07 09:43:46 +08:00
<template name="basics">
<view>
<!-- #ifdef APP-PLUS -->
<view class="status_bar">
<view class="top_view"></view>
</view>
<!-- #endif -->
<mescroll-uni ref="mescrollRef" :top="StatusBar+'px'" @init="mescrollInit" @down="downCallback" :up="upOption" @up="upCallback">
<view class="banner">
<view></view>
<view>首页</view>
<view class="icon-ui" @click="$noMultipleClicks(scan)">
<text class="cuIcon-scan"></text>
</view>
</view>
<view class="options">
<view class="girds">
<template v-for="(item,index) in girdList">
<view class="gird" :key="index" v-if="item.condition">
<navigator class="a" hover-class="none" :url="item.url">
<view class="image">
<image :src="item.image" mode=""></image>
<view v-if="item.title === '高危作业' && totalUnreadCount > 0" class="badge">{{ totalUnreadCount }}</view>
2023-11-07 09:43:46 +08:00
</view>
<view class="title">
<text>{{ item.title }}</text>
</view>
</navigator>
</view>
</template>
</view>
<view class="broadcast">
<view class="left">隐患播报</view>
<!-- <view class="right" @click="$noMultipleClicks(goToRecord)">-->
<view class="right">
<swiper
style="height: 126upx"
:indicator-dots="false"
:autoplay="true"
:interval="2000"
:duration="1000"
:circular="true"
:vertical="true"
:display-multiple-items="2"
>
<swiper-item v-for="item of hiddenList" :key="item.HIDDEN_ID">
<view class="item" @click="$noMultipleClicks(goToRecordDetail, item.HIDDEN_ID)">
<text class="u-line-1">{{item.HIDDENDESCR}}</text>
<text>{{item.findUserNames?item.findUserNames:'暂无'}}</text>
<text>{{item.DISCOVERYTIME? formatDate(item.DISCOVERYTIME):'暂无'}}</text>
</view>
</swiper-item>
</swiper>
</view>
</view>
</view>
<!--<view class="high-risk-work">
<view class="home-work-title">
<view class="title">
<view class="q_title"></view>
<view class="text-black f30b">高危作业</view>
</view>
</view>
<view class="new-apps-box">
<view class="new-apps-warp">
<view class="new-apps-item" v-for="(item,index) in highRiskList" :key="index">
<navigator class="a" hover-class="none" :url="item.url">
<view class="image">
<image :src="item.image" mode=""></image>
</view>
<view class="title">
<text>{{ item.title }}</text>
</view>
</navigator>
</view>
</view>
</view>
</view>-->
<view class="home-work">
<view class="home-work-title">
<view class="title">
<view class="q_title"></view>
<view class="text-black f30b">我的工作</view>
</view>
<view class="this-date">{{today}}</view>
</view>
<view class="work-list">
<swiper class="swiper">
<swiper-item>
<view class="work-box">
<navigator class="swiper-item" hover-class="none" url="/pages/application/hidden-trouble-investigation/hidden-trouble-app/hidden-trouble-app?isIndex=1">
<view>
待排查
</view>
<view class="work-border wui-mt10">
{{hidCount.dpc}}
</view>
</navigator>
<navigator class="swiper-item" hover-class="none" url="/pages/application/hidden-danger-management/hidden-danger-confirm/hidden-danger-confirm-change">
<view>
待确认
</view>
<view class="work-border wui-mt10">
{{hidCount.dqr}}
</view>
</navigator>
<navigator class="swiper-item" hover-class="none" url="/pages/application/hidden-danger-management/hidden-danger-rectification/hidden-danger-rectification-change?isIndex=1">
<view>
待整改
</view>
<view class="work-border wui-mt10">
{{hidCount.dzg}}
</view>
</navigator>
<navigator class="swiper-item" hover-class="none" url="/pages/application/hidden-danger-management/hidden-danger-overdue/hidden-danger-overdue?isIndex=1">
<view>
已超期
</view>
<view class="work-border wui-mt10">
{{hidCount.ycq}}
</view>
</navigator>
<navigator class="swiper-item" hover-class="none" url="/pages/application/hidden-danger-management/hidden-danger-check/hidden-danger-check?isIndex=1">
<view>
待验收
</view>
<view class="work-border wui-mt10">
{{hidCount.dys}}
</view>
</navigator>
<navigator class="swiper-item" hover-class="none" url="/pages/application/hidden-danger-management/hidden-danger-finish/hidden-danger-finish?isIndex=1">
<view>
已验收
</view>
<view class="work-border wui-mt10">
{{hidCount.yys}}
</view>
</navigator>
</view>
</swiper-item>
</swiper>
</view>
</view>
<view class="home-work">
<view class="home-work-title">
<view class="title">
<view class="q_title"></view>
<view class="text-black f30b">安全环保检查</view>
</view>
</view>
<view class="work-list">
<swiper class="swiper">
<swiper-item>
<view class="work-box">
<navigator class="swiper-item" hover-class="none">
<view>
检查数
</view>
<view class="work-border wui-mt10">
{{safetyEnvironmentalCount.COUNT_INSPECTION}}
</view>
</navigator>
<navigator class="swiper-item" hover-class="none">
<view>
被检查数
</view>
<view class="work-border wui-mt10">
{{safetyEnvironmentalCount.COUNT_INSPECTED}}
</view>
</navigator>
<navigator class="swiper-item" hover-class="none">
<view style="white-space: nowrap;">
负责整改隐患数
</view>
<view class="work-border wui-mt10">
{{safetyEnvironmentalCount.COUNT_HIDDEN}}
</view>
</navigator>
<navigator class="swiper-item" hover-class="none">
<view>
隐患验收数
</view>
<view class="work-border wui-mt10">
{{safetyEnvironmentalCount.COUNT_HIDDEN_ACCEPT}}
</view>
</navigator>
</view>
</swiper-item>
</swiper>
</view>
</view>
<view class="home-date" v-if="false">
<view class="home-work-title">
<view class="title">
<view class="q_title"></view>
<view class="text-black f30b">排查数据</view>
</view>
<!-- <view class="this-date">更多</view> -->
</view>
<view class="home-date-list">
<view class="qd-date">
<view class="qd-date-item">
<view class="date text-blue">
{{hdCount.monthTotal}}
</view>
<view class="name">
发现隐患数
</view>
</view>
<view class="qd-date-item">
<view class="date text-orange">
{{hdCount.monthChecked}}
</view>
<view class="name">
已整改隐患数
</view>
</view>
<view class="qd-date-item">
<view class="date text-green">
{{hdCount.monthTotal==0?0:((hdCount.monthChecked/hdCount.monthTotal*100).toFixed(2))}}%
</view>
<view class="name">
隐患整改率
</view>
</view>
<view class="qd-tag bg-blue">
<text></text>
<text></text>
</view>
</view>
<view class="qd-date">
<view class="qd-date-item">
<view class="date text-blue">
{{hdCount.yearTotal}}
</view>
<view class="name">
发现隐患数
</view>
</view>
<view class="qd-date-item">
<view class="date text-orange">
{{hdCount.yearChecked}}
</view>
<view class="name">
已整改隐患数
</view>
</view>
<view class="qd-date-item">
<view class="date text-green">
{{hdCount.yearTotal==0?0:((hdCount.yearChecked/hdCount.yearTotal*100).toFixed(2))}}%
</view>
<view class="name">
隐患整改率
</view>
</view>
<view class="qd-tag bg-red">
<text></text>
<text></text>
</view>
</view>
</view>
</view>
<view class="cu-tabbar-height"></view>
</mescroll-uni>
</view>
</template>
<script>
import {
basePath,corpinfoId,loginUserId,formatDate,loginUser,setloginUserId,setCorpinfoId,setloginUser,setDeptId
} from '@/common/tool.js';
import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
export default {
mixins: [MescrollMixin], // 使用mixin (在main.js注册全局组件)
data() {
return {
totalUnreadCount: 0,
2023-11-07 09:43:46 +08:00
girdList:[
{
title:'基本资料',
url:'/pages/basics/basic-info/basic-info',
image:require('../../static/new_images/ico1.png'),
condition:true
},
{
title:'工作安排',
url:'/pages/basics/work-plan/work-plan',
image:require('../../static/new_images/ico2.png'),
condition:true
},
{
title:'风险分布',
url:'/pages/basics/risk-distribution/risk-distribution',
image:require('../../static/new_images/ico3.png'),
condition:true
},
{
title:'学习园地',
url:'/pages/application/onlinexxks/home',
image:require('../../static/new_images/ico4.png'),
condition:true
},
{
title:'高危作业',
url:'/pages/application/high-risk-work/home',
image:require('../../static/new_images/ico5.png'),
condition:true
},
{
title:'安全环保检查',
url:'/pages/application/safety-environmental-inspection/home',
image:require('../../static/new_images/ico6.png'),
condition:true
},
{
title:'消防管理',
url:'/pages/application/fire-management/hidden-trouble-app/hidden-trouble-app',
image:require('../../static/new_images/home-xiaofang.jpg'),
condition:true
},
{
title:'智能门禁管理',
url:'/pages/application/accesscontrol/home',
image:require('../../static/new_images/ico7.png'),
condition:loginUser.CORPINFO_ID ==='035958e685cf4850bc40151c5e0617a6' || loginUser.CORPINFO_ID ==='13cf0f4ec77e4d98ae8cdd9c3386ae0c'
},
{
title:'重点工程管理',
url:'/pages/application/key-project-management/index/index',
image:require('../../static/new_images/home-zdgcgl.png'),
condition:true
},
],
highRiskList:[
{
title:'动火作业',
url:'/pages/application/eight-assignments/index',
image:require('../../static/new_images/i1.png'),
},
{
title:'高处作业',
url:'/pages/application/high-risk-work/high-work/home',
image:require('../../static/new_images/i2.png'),
},
{
title:'盲板作业',
url:'/pages/application/high-risk-work/blind-work/index',
image:require('../../static/new_images/i3.png'),
},
{
title:'吊装作业',
url:'/pages/application/high-risk-work/lifting-safety-work/index',
image:require('../../static/new_images/i4.png'),
},
{
title:'有限空间安全作业',
url:'/pages/application/high-risk-work/limited-space/index',
image:require('../../static/new_images/i5.png'),
},
{
title:'临时用电安全作业',
url:'/pages/application/high-risk-work/electricity/index',
image:require('../../static/new_images/i6.png'),
},
],
page: 1,
rows: 10,
totalCount:0,
total:0,
isEnd: false,
hiddenList: [],
noClick:true,
StatusBar: this.StatusBar,
StatusBarb: this.StatusBar + 50,
hidCount: [],
safetyEnvironmentalCount: {},
hdCount:{},
today :'',
triggered: false,
totalList:[],
isGoodsEdit: false, // 是否加载编辑后的数据
downOption:{
mustToTop:true,
},
upOption: {
use: false, // 禁止上拉
toTop: {
src: '' // 不显示回到顶部按钮
}
},
loginUser :loginUser
};
},
mounted(){
// uni.startPullDownRefresh();
let now = new Date();
var today = formatDate(now, 'yyyy-MM-dd');
this.getData()
this.getHiddenData()
this.getSafetyEnvironmentalCount()
this.getSumCount();
2023-11-07 09:43:46 +08:00
// this.getListData()
console.info(loginUser)
// this._freshing = false;
// setTimeout(() => {
// this.triggered = true;
// }, 1000)
},
// onPullDownRefresh() {
// console.log('refresh');
// setTimeout(function () {
// uni.stopPullDownRefresh();
// }, 1000);
// },
methods: {
//跳转事件
goToRecord(e) {
uni.navigateTo({
url: '/pages/application/hidden-danger-management/hidden-danger-record/hidden-danger-record',
});
},
goToRecordDetail(e) {
uni.navigateTo({
url: '/pages/application/hidden-danger-management/hidden-danger-record/hidden-danger-record-detail?id='+e,
});
},
async downCallback(page) {
this.getSumCount();
2023-11-07 09:43:46 +08:00
await this.getWork();
await this.getHiddenData()
await this.getSafetyEnvironmentalCount()
// await this.getMonth();
// await this.getYear();
await this.mescroll.endSuccess();
this.mescroll.scrollTo( 0,100 )
},
getWork(){
return new Promise((resolve, reject) => {
var _this = this;
uni.request({
url: basePath + '/app/hidden/getCountByUserId',
method: 'POST',
dataType: 'json',
header:{
'Content-type':'application/x-www-form-urlencoded'
},
data: {
userId: loginUserId,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
USER_NAME: loginUser.NAME,
CHECK_DEPARTMENT_ID: loginUser.DEPARTMENT_ID,
IS_MAIN:loginUser.ISMAIN
},
success: (res) => {
if (res.data != null) {
_this.hidCount = res.data.hidCount;
resolve();
}
}
});
})
},
getMonth(){
return new Promise((resolve, reject) => {
var _this = this;
//月隐患数
uni.request({
url: basePath + '/app/hidden/getIndexCount',
method: 'POST',
dataType: 'json',
header:{
'Content-type':'application/x-www-form-urlencoded'
},
data: {
userId: loginUserId,
},
success: (res) => {
if (res.data != null) {
_this.hdCount.monthTotal = res.data.total;
_this.hdCount.monthChecked = res.data.checked;
_this.hdCount.monthUncheck = res.data.uncheck;
this.$forceUpdate();
resolve();
}
}
});
})
},
getYear(){
return new Promise((resolve, reject) => {
var _this = this;
//年隐患数
uni.request({
url: basePath + '/app/hidden/getIndexCount',
method: 'POST',
dataType: 'json',
header:{
'Content-type':'application/x-www-form-urlencoded'
},
data: {
userId: loginUserId,
},
success: (res) => {
if (res.data != null) {
_this.hdCount.yearTotal = res.data.total;
_this.hdCount.yearChecked = res.data.checked;
_this.hdCount.yearUncheck = res.data.uncheck;
this.$forceUpdate();
resolve();
}
}
});
})
},
getData() {
var _this = this;
let now = new Date();
_this.today = formatDate(now, 'yyyy-MM-dd');
uni.request({
url: basePath + '/app/hidden/getCountByUserId',
method: 'POST',
dataType: 'json',
header:{
'Content-type':'application/x-www-form-urlencoded'
},
data: {
userId: loginUserId,
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
USER_NAME: loginUser.NAME,
CHECK_DEPARTMENT_ID: loginUser.DEPARTMENT_ID,
IS_MAIN:loginUser.ISMAIN
},
success: (res) => {
if (res.data != null) {
_this.hidCount = res.data.hidCount;
}
},
fail: (res) => {
uni.showToast({
icon: 'none',
title: "服务器正在升级,请稍后再试。",
duration: 2000
});
setTimeout(function() {
plus.runtime.quit();
// ios quit方法无效退出到登陆页
setloginUserId(null);
setCorpinfoId(null);
setDeptId(null);
setloginUser(null);
uni.removeStorage({key: 'USER'});
uni.navigateTo({
url: '/pages/login/home'
});
}, 2000);
}
});
//月隐患数
// uni.request({
// url: basePath + '/app/hidden/getIndexCount',
// method: 'POST',
// dataType: 'json',
// header:{
// 'Content-type':'application/x-www-form-urlencoded'
// },
// data: {
// userId: loginUserId,
// },
// success: (res) => {
// if (res.data != null) {
// _this.hdCount.monthTotal = res.data.total;
// _this.hdCount.monthChecked = res.data.checked;
// _this.hdCount.monthUncheck = res.data.uncheck;
// this.$forceUpdate();//强制刷新
// }
// }
// });
//年隐患数
// uni.request({
// url: basePath + '/app/hidden/getIndexCount',
// method: 'POST',
// dataType: 'json',
// header:{
// 'Content-type':'application/x-www-form-urlencoded'
// },
// data: {
// userId: loginUserId,
// },
// success: (res) => {
// if (res.data != null) {
// this.hdCount.yearTotal = res.data.total;
// _this.hdCount.yearChecked = res.data.checked;
// _this.hdCount.yearUncheck = res.data.uncheck;
// this.$forceUpdate();//强制刷新
// }
// }
// });
},
async getSumCount() {
const hotWorkCount = await this.getCount('/app/hotwork/cfd/countCheck');
const highWorkCount = await this.getCount('/app/gfHighwork/countCheck');
const blindBoardCount = await this.getCount('/app/gfBlindBoard/countCheck');
const hoistingCount = await this.getCount('/app/gfHoisting/countCheck');
const confinedSpaceCount = await this.getCount('/app/gfConfinedSpace/countCheck');
const electricityCount = await this.getCount('/app/gfElectricity/countCheck');
this.totalUnreadCount = hotWorkCount + highWorkCount + blindBoardCount + hoistingCount + confinedSpaceCount + electricityCount;
this.$forceUpdate();
},
getCount(url) {
return new Promise((resolve, reject) => {
uni.request({
url: basePath + url,
method: 'POST',
dataType: 'json',
header: { 'Content-type': 'application/x-www-form-urlencoded' },
data: {
tm: new Date().getTime(),
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
},
success: (res) => {
if (res.data.result === "success") {
resolve(res.data.count.SUMCOUNT || 0);
} else {
resolve(0);
}
},
fail: (err) => {
console.error(err);
resolve(0);
},
});
});
},
2023-11-07 09:43:46 +08:00
// 隐患播报
getHiddenData() {
return new Promise((resolve, reject) => {
var _this = this;
if (_this.isEnd) {
return
}
uni.showLoading({
title: '请稍候'
});
let DISPOSESTATE = 2;
uni.request({
url: basePath + '/app/hidden/list',
method: 'POST',
dataType: 'json',
header:{
'Content-type':'application/x-www-form-urlencoded'
},
data: {
tm:new Date().getTime(),
showCount:_this.rows,
currentPage:_this.page,
totalResult:_this.total,
DISPOSESTATE:-1,
USERDEPT:loginUser.DEPARTMENT_ID,
SELFUSERID:loginUserId,
CORPINFO_ID:corpinfoId
},
success: (res) => {
// console.info(res.data);
if (res.data.result == 'success') {
uni.hideLoading();
_this.total = res.data.page.totalResult;
_this.hiddenList = res.data.varList;
} else {
uni.showToast({
title: res.data.message,
duration: 2000
});
}
resolve()
}
})
});
},
// 获取清单数量
getListData(){
var _this=this;
uni.showLoading({
title: '加载中'
})
uni.request({
url: basePath + '/app/listmanager/checkList',
method: 'POST',
dataType: 'json',
header: {
'Content-type':'application/x-www-form-urlencoded'
},
data: {
CORPINFO_ID: loginUser.CORPINFO_ID,
USER_ID: loginUser.USER_ID,
USER_NAME: loginUser.NAME,
CHECK_DEPARTMENT_ID: loginUser.DEPARTMENT_ID,
IS_MAIN:loginUser.ISMAIN,
},
success: (res) => {
if("success" == res.data.result){
uni.hideLoading();
var content = res.data.varList;
for(var i=0;i<content.length;i++){
if(content[i].checkCount==0){
this.totalList.push(content[i]);
}else{
this.totalList.push(content[i]);
}
}
}else{
uni.showToast({
icon:'none',
title: '系统异常',
duration: 2000
});
}
},
fail: (res) => {
uni.showToast({
icon: 'none',
title: "服务器正在升级,请稍后再试。",
duration: 2000
});
setTimeout(function() {
plus.runtime.quit();
}, 2000);
}
})
},
getSafetyEnvironmentalCount(){
return new Promise((resolve, reject) => {
var _this = this;
uni.showLoading({
title:"加载中..."
});//加载中动画
uni.request({
url: basePath +'/app/safetyenvironmental/countHome',
method: 'POST',
dataType: 'json',
header: {
'Content-type':'application/x-www-form-urlencoded'
},
data: {
CORPINFO_ID:corpinfoId,
USER_ID:loginUser.USER_ID,
tm:new Date().getTime()
},
success: (res) => {
uni.hideLoading();//结束加载中动画
if ("success" == res.data.result) {
_this.safetyEnvironmentalCount = res.data.count;
}
resolve()
}
})
})
},
// refresh() {
// if (this._freshing) return;
// this._freshing = true;
// this.getData();
// setTimeout(() => {
// this.triggered = false;
// this._freshing = false;
// }, 1000)
// },
// refreshEnd() {
// this.triggered = 'restore'; // 需要重置
// console.log("onRestore");
// },
scan(){
let _this=this;
uni.scanCode({
success: function (res) {
let flag=false;
let listId = res.result;
for(var i=0;i<_this.totalList.length;i++){
if(_this.totalList[i].LISTMANAGER_ID==listId){
flag=true;
_this.goToList({listId:_this.totalList[i].LISTMANAGER_ID,listName:_this.totalList[i].NAME});
break;
}
}
if(!flag){
uni.showToast({
title: "无法检查该清单",
duration: 2000
});
}
}
});
},
// scan(){
// let _this=this;
// uni.scanCode({
// success: function (res) {
// let flag=false;
// let unit = res.result;
// uni.navigateTo({
// url: '/pages/basics/risk-distribution/risk-distribution-forunit?unit='+unit
// });
// // _this.goToList({listId:_this.totalList[i].LISTMANAGER_ID,listName:_this.totalList[i].NAME});
// }
// });
// },
//跳转事件
goToexclude(e) {
this.$emit('setInit',true);
uni.navigateTo({
url: '/pages/basics/hidden-danger-exclude/exclude-list',
});
},
goToDanger(e) {
this.$emit('setInit',true);
uni.navigateTo({
url: '/pages/basics/danger-exclude/danger-exclude-list',
});
},
toSetinit(e) {
this.$emit('setInit',true);
},
//跳转事件
goToList(e) {
uni.navigateTo({
url: '/pages/application/hidden-trouble-investigation/hidden-trouble-app/hidden-trouble-spot?listId='+e.listId+'&listName='+e.listName
});
// uni.navigateTo({
// url: '/pages/application/hidden-trouble-investigation/hidden-trouble-app/check-items-list?listId='+e.listId+'&listName='+e.listName
// });
},
formatDate(time) {
let date = new Date(time)
return formatDate(date, 'yyyy-MM-dd')
}
}
}
</script>
<style lang="scss" scoped>
.status_bar {
height: var(--status-bar-height);
width: 100%;
background-color: #022267;
2023-11-07 09:43:46 +08:00
}
.top_view {
height: var(--status-bar-height);
width: 100%;
position: fixed;
background-color: #022267;
top: 0;
z-index: 999;
2023-11-07 09:43:46 +08:00
}
.banner{
background-image: url("/static/new_images/banner.png");
background-size: 100% 100%;
background-repeat: no-repeat;
display: flex;
justify-content: space-between;
color: #fff;
font-size: 34upx;
padding: 20upx 5%;
}
.options{
background-color: #fff;
padding: 0 5% 30upx 3%;
border-radius: 50upx 50upx 0 0;
.girds{
display: flex;
flex-wrap: wrap;
.gird{
flex-basis: 25%;
margin-top: 30upx;
.a{
display: flex;
justify-content: center;
flex-wrap: wrap;
.image{
flex-basis: 100%;
text-align: center;
position: relative; // 添加相对定位
2023-11-07 09:43:46 +08:00
image{
width: 84upx;
height: 84upx;
}
.badge {
position: absolute;
top: -10px; // 调整位置
right: 0; // 调整位置
background-color: #dd514c;
color: white;
border-radius: 50%;
padding:3px 6px;
font-size: 12px;
}
2023-11-07 09:43:46 +08:00
}
.title{
flex-basis: 100%;
text-align: center;
margin-top: 10upx;
}
}
}
}
.broadcast{
display: flex;
margin-top: 50upx;
.left{
background-color: #0081ff;
color: #FFFFFF;
width: 100upx;
text-align: center;
padding: 20upx;
border-radius: 20upx 0 0 20upx;
}
.right{
height: 126upx;
background-color: #f8f9fe;
border-radius: 0 20upx 20upx 0;
flex: 1;
padding: 0 20upx;
display: flex;
flex-direction: column;
justify-content: space-between;
.item{
font-size: 30upx;
display: flex;
justify-content: space-between;
align-items: center;
padding: 10upx 0;
border-bottom: 1px dashed #e4e5ea;
.u-line-1{
flex-basis: 40%;
}
}
}
}
}
.high-risk-work{
margin-top: 20upx;
background-color: #fff;
}
</style>