jhwxapp/miniprogram/pages/renyuanguanli/renyuanguanli.js

577 lines
15 KiB
JavaScript

// pages/new-renyuanguanli/renyuanguanli.js
import * as echarts from '../../ec-canvas/echarts';
const app = getApp();
//加载施工队数据
const colorArray = [{
top: '#56c8ec',
bottom: '#1778eb'
}, {
top: '#56c8ec',
bottom: '#1778eb'
},
{
top: '#56c8ec',
bottom: '#1778eb'
}, {
top: '#59c5ec',
bottom: '#1778eb'
}, {
top: '#56c8ec',
bottom: '#1778eb'
}, {
top: '#56c8ec',
bottom: '#1778eb'
}, {
top: '#56c8ec',
bottom: '#1778eb'
}, {
top: '#56c8ec',
bottom: '#1778eb'
}, {
top: '#56c8ec',
bottom: '#1778eb'
}
];
function initChart_1(chart_1,data_1,data_name) {
var option_1 = {
grid: {
left: '0',
right: '10%',
bottom: '0%',
top:'10%',
containLabel: true
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
},
formatter: "{b}: {c}"
},
xAxis: {
show: false, //是否显示x轴
type: 'value'
},
yAxis: {
type: 'category',
inverse:true, //让y轴数据逆向
axisLabel: {
show: true,
textStyle: {
color: '#a2d4e6' //y轴字体颜色
},
//定义富文本标签
rich: {
lg: {
fontWeight: 'bold',
fontSize: 12, //字体默认12
color: '#08C',
padding: [0, 5, 0, 0]
},
title: {
color: '#fff',
fontWeight: 'lighter',
// borderWidth: 1,
// borderColor: '#08c'
// textareaBorderColor: '#08c',
}
},
interval: 0,
formatter: function(value) {
if (value.length > 8) {
return value.substring(0, 8) + "...";
} else {
return value;
}
}
},
splitLine: {show: false}, //横向的线
axisTick: {show: false}, //y轴的端点
axisLine: {show: false}, //y轴的线
data: data_name
},
series: [
{
name: '数据内框',
type: 'bar',
itemStyle: {
normal: {
show: true,
color: function(params) {
let num = colorArray.length;
return {
type: 'linear',
colorStops: [{
offset: 0,
color: colorArray[params.dataIndex % num].bottom
}, {
offset: 1,
color: colorArray[params.dataIndex % num].top
}, {
offset: 0,
color: colorArray[params.dataIndex % num].bottom
}, {
offset: 1,
color: colorArray[params.dataIndex % num].top
}, {
offset: 0,
color: colorArray[params.dataIndex % num].bottom
}, {
offset: 1,
color: colorArray[params.dataIndex % num].top
}, {
offset: 0,
color: colorArray[params.dataIndex % num].bottom
}, {
offset: 1,
color: colorArray[params.dataIndex % num].top
}, {
offset: 0,
color: colorArray[params.dataIndex % num].bottom
}, {
offset: 1,
color: colorArray[params.dataIndex % num].top
}]
}
},
barBorderRadius: 20,
}
},
barWidth: '15',
data: data_1,
label: {
show: true,
position: 'right',
color: '#ffc31f',
fontSize: 12,
offset: [10, 0]
},
}
]
};
chart_1.setOption(option_1);
return chart_1;
}
//加载工种分布
let formatNumber_2 = function(num) {
let reg = /(?=(\B)(\d{3})+$)/g;
return num.toString().replace(reg, ',');
}
function arrayobj_2 (array, key) {
var resObj = {}
for (var i = 0; i < array.length; i++) {
resObj[array[i][key]] = array[i]
}
return resObj
}
function initChart_2(chart_2,datas_2,data_name) {
let objData_2 = arrayobj_2(datas_2, 'name')
let total_2 = datas_2.reduce((a, b) => {
return a + b.value * 1
}, 0);
let title_2 = '总人数';
var option_2 = {
color: ["#ffac50", "#ed6942", "#9e40ec", "#1f8efa", "#06c985"],
title: [{
text: '{val|' + formatNumber_2(total_2) + '} \n {name|' + title_2 + '} ',
top: '31%',
left: '14%',
textStyle: {
rich: {
name: {
fontSize: 14,
fontWeight: 'normal',
color: '#fff',
padding: [10, 20]
},
val: {
fontSize:25,
fontWeight: 'bold',
color: '#0ad7ec',
padding: [0, 0,0,20]
}
}
}
}],
tooltip: {
trigger: 'item',
},
legend: {
orient: 'vertical',
top: "center",
right: "5%",
icon: 'circle',
data: data_name,
textStyle: {
color: "#fff",
fontSize: 10
},
formatter(name) {
return `${name} ${objData_2[name].value}`
}
},
series: [{
type: 'pie',
radius: ['55%', '80%'],
center: ['30%', '50%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
emphasis: {
label: {
show: true,
fontSize: '14'
}
},
labelLine: {
show: false
},
hoverAnimation: false,
data: datas_2
}]
};
chart_2.setOption(option_2);
return chart_2;
}
Page({
/**
* 页面的初始数据
*/
data: {
active:2,
ec_1: {
lazyLoad: true //动态加载
},
ec_2: {
lazyLoad: true //动态加载
},
gradientColor: {
'0%': '#6588ff',
'100%': '#7e57fe',
},
show:false,
show1: false,
jzshow:false,
time:"今日",
actions1: [{name: '今日',},{name: '本周',},{name: '本月',}],
list:[],
//安全教育
learningRate:'0',
passRate:'0',
learnedNum:'0',
notLearnedNum:'0',
sumLearnedNum:'0',
value1:'0',
value2:'0',
//安全帽
hardHatNum:0,
onlineNum:0,
notOnlineNum:0,
value3:0,
value4:0,
state:'day',
//人员定位个数
userLocation:'0',
userLocationList:[],
//页面跳转参数
loginName:'',
userName:'',
projectId:'',
projectName:'' ,
initData:{}
},
//项目切换 返回值
onProjectSelect(e){
this.onClickShow();
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.projectId = projectId;
app.globalData.projectName = projectName;
this.setData({
projectId:projectId,
projectName:projectName
})
this.onLoad();
},
onClickShow() {
this.setData({ jzshow: true });
},
onClickHide() {
this.setData({ jzshow: false });
},
showPopup() {
this.setData({ show: true });
},
onClose() {
this.setData({ show1: false ,show: false});
},
onclick1(){
this.setData({ show1: true });
},
onSelect1(event) {
this.onClickShow();
this.setData({
time: event.detail.name,
});
var state = "";
if(event.detail.name=="今日"){
state = "day";
}else if(event.detail.name == "本周"){
state = "week"
}else if(event.detail.name == "本月"){
state = "month";
}
this.setData({
state:state
})
//查询工时排行
this.selectUserAttendance(this.data.projectId,state);
},
// 底部导航
onChange(event) {
// event.detail 的值为当前选中项的索引
this.setData({ active: event.detail });
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
var that = this;
that.onClickShow();
//获取缓存数据
wx.getStorage({
key: 'userinfo',
success:function(res){
that.setData({
loginName:res.data.loginName,
userName:res.data.userName,
projectId:app.globalData.projectId,
projectName:app.globalData.projectName,
initData:{text:app.globalData.projectName,id:app.globalData.projectId}
})
}
})
this.oneComponent = this.selectComponent('#mychart-one');
this.twoComponent = this.selectComponent('#mychart-two');
this.getUserInfoRanks(app.globalData.projectId);
},
//初始化施工队柱状图数据
init_one: function (datas_1,data_name) {
this.oneComponent.init((canvas, width, height,dpr) => {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr //解决小程序视图模糊的问题,必写
});
initChart_1(chart,datas_1,data_name);
this.chart = chart;
return chart;
});
},
//初始工种分布
init_two: function (datas_1,data_name) {
this.twoComponent.init((canvas, width, height,dpr) => {
const chart = echarts.init(canvas, null, {
width: width,
height: height,
devicePixelRatio: dpr //解决小程序视图模糊的问题,必写
});
initChart_2(chart,datas_1,data_name);
this.chart = chart;
return chart;
});
},
//页面初始化加载数据
getUserInfoRanks:function(even){
var that = this;
//获取人员施工队数据
wx.request({
url: app.globalData.reqUrl+'/weixin/userinfo/selectUserInfoRanks',
data:{
"projectId":even
},
method:"GET",
success:function(ranks){
that.init_one(ranks.data.ranksNum,ranks.data.ranksName);
}
})
//获取人员工种分布数据
wx.request({
url: app.globalData.reqUrl+'/weixin/userinfo/selectUserInfoWork',
data:{
"projectId":even
},
method:"GET",
success:function(work){
if(work.data == ''){
that.init_two([{"name":'',"value":'0'}])
}else{
that.init_two(work.data,work.data);
}
}
})
//获取安全教育数据
wx.request({
url: app.globalData.reqUrl+'/weixin/userinfo/selectUserInfoEducation',
data:{
"projectId":even
},
method:"GET",
success:function(education){
if(education.data!=''){
var value1 = (education.data.learnedNum == '0' || education.data.workLabourNum == '0'?'0':(education.data.learnedNum/education.data.workLabourNum*100).toFixed(0));
that.setData({
value1:even==3?100:(value1>100.0?100.0:value1),
value2:even==3?0:((education.data.passRate)>100.0?100.0:education.data.passRate),
learnedNum:even==3?1009:education.data.learnedNum,
notLearnedNum:even==3?0:((education.data.workLabourNum-education.data.learnedNum)<0?0:education.data.workLabourNum-education.data.learnedNum),
sumLearnedNum:even==3?1009:education.data.attendanceNum,
})
}
}
})
//获取安全帽数据
wx.request({
url: app.globalData.reqUrl+'/weixin/userinfo/selectOnlineData',
data:{
"projectId":even
},
method:"GET",
success:function(res){
let hardHatNum = 0;
let onlineNum = 0;
let notOnlineNum = 0;
let value3 = 0;
let value4 = 0;
if(res.data.code == 0){
hardHatNum = res.data.data.hardHatNum,
onlineNum = res.data.data.onlineNum,
notOnlineNum = res.data.data.notOnlineNum,
value3 = res.data.data.onlineRate,
value4 = res.data.data.offlineRate
}
that.setData({
hardHatNum:hardHatNum,
onlineNum:onlineNum,
notOnlineNum:notOnlineNum,
value3:value3,
value4:value4,
})
}
})
//工时排行
that.selectUserAttendance(even,"day");
},
//工时排行
selectUserAttendance:function(projectId,state){
var that = this;
wx.request({
url: app.globalData.reqUrl+'/weixin/userinfo/selectUserAttendance',
data:{
"projectId":projectId,
"state":state
},
method:"GET",
success:function(gsph){
that.onClickHide();
that.setData({
list:gsph.data.listMap,
userLocation:gsph.data.userLocationCount,
userLocationList:gsph.data.userLocationList
})
}
})
},
//跳转到项目概况页面
XMGK:function(){
wx.redirectTo({
url: '../xiangmugaikuang/xiangmugaikuang'
})
},
//跳转到设备管理
SBGL:function(){
wx.redirectTo({
url: '../shebieguanli-jxsb/shajiangguan',
})
},
//跳转到安全管控
XMSP:function(){
wx.redirectTo({
//url: '../deepExcavation/index'
url:'../newAddPage/safetyManagement/index'
})
},
//跳转到更多更能
GDGN:function(event){
wx.redirectTo({
url: '../gengduogongneng/gengduogongneng',
})
},
//跳转到地图页面
skipUserMap:function(even){
wx.redirectTo({
url: '../ranyuanguanli-map/map?id='+even.currentTarget.dataset.itemid+"&index="+even.currentTarget.dataset.index+"&userLocationList="+JSON.stringify(this.data.userLocationList)+"&skipState=1"+"&state="+this.data.state
})
},
//跳转到地图列表页面
goUserMap:function(even){
wx.redirectTo({
url: '../ranyuanguanli-map/map?id='+even.currentTarget.dataset.itemid+"&index="+even.currentTarget.dataset.index+"&userLocationList="+JSON.stringify(this.data.userLocationList)+"&skipState=2"+"&state="+this.data.state
})
},
//退出登录
TCDL:function(){
wx.clearStorageSync();
wx.setStorageSync('isReload', "1")
wx.redirectTo({
url: '../login2/login',
})
},
//返回到工程列表页面
goGCLB:function(){
wx.redirectTo({
url: '../gongchengliebiao/gongchengliebiao'
})
},
//返回到地图页面
GOMAP:function(){
wx.redirectTo({
url: '../map/map',
})
},
})