YZProjectCloud/yanzhu-ui-app/miniprogram/pages/project_info/index.js

616 lines
18 KiB
JavaScript

import config from '../../config'
import {
getToken,
getUserInfo
} from '../../utils/auth'
import {
findProjectInfo,
findProjectDepts
} from '../../api/project'
import {
findSubDeptsUsers,
findDaysAttendanceView,
findUsersAttendanceView,
findSubDeptsAttendanceView
} from '../../api/attendance'
import {
findMyTask
} from '../../api/flowable'
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
title: "项目详情",
activeNames: ["base"],
//项目信息
projectInfo: {},
projectDeptsList: [],
deptTypes: [{
"name": "建设单位",
"iconSrc": "https://xiangguan.sxyanzhu.com/profile/icon/jsdw.png"
}, {
"name": "监理单位",
"iconSrc": "https://xiangguan.sxyanzhu.com/profile/icon/jldw.png"
}, {
"name": "设计单位",
"iconSrc": "https://xiangguan.sxyanzhu.com/profile/icon/sjdw.png"
}, {
"name": "检测单位",
"iconSrc": "https://xiangguan.sxyanzhu.com/profile/icon/jcjg.png"
}, {
"name": "勘察单位",
"iconSrc": "https://xiangguan.sxyanzhu.com/profile/icon/fbdw.png"
}, {
"name": "总包单位",
"iconSrc": "https://xiangguan.sxyanzhu.com/profile/icon/zbdw.png"
}],
active: 0,
projectId: '',
projectName: '',
initData: {},
aqglDb: 0,
zlglDb: 0,
todoDb: 0,
nactive: 0,
labourData: [{
name: "管理人员",
total: 0,
unit: "人",
yesMonitor: 180
},
{
name: "劳务人员",
yesMonitor: 0,
total: 0,
unit: "人"
},
{
name: "特殊工种",
yesMonitor: 0,
total: 0,
unit: "人"
},
],
labourDataList: [],
labourDays: [{
name: "管理人员",
total: 0,
unit: "人",
yesMonitor: 180
},
{
name: "劳务人员",
yesMonitor: 0,
total: 0,
unit: "人"
},
{
name: "特殊工种",
yesMonitor: 0,
total: 0,
unit: "人"
},
],
labourDaysTotal: 0,
labourImg: "https://szgcwx.jhncidg.com/staticFiles/icon/zgry.png",
labourName: "在岗人员",
labourTotal: 0,
labourTypeList: [{
name: "在岗人员",
total: 0,
img: "https://szgcwx.jhncidg.com/staticFiles/icon/zgry.png"
}, {
name: "离岗人员",
total: 0,
img: "https://szgcwx.jhncidg.com/staticFiles/icon/rylg.png"
}],
animation: true,
animationData: {},
labourDatas: {
unit: '人',
legend: ['出勤人数', '当前在岗'],
color: ['#2e6ed0', '#fb9300'],
Xdata: ['01-01', '01-02', '01-03', '01-04', '01-05', '01-06', '01-07'],
Ydata: [
[0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0]
]
},
switchChart: false,
attendanceListData: [],
subDeptUserInfo: {},
imgBaseUrl: config.baseImgUrl
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
if (!getToken()) {
wx.redirectTo({
url: '../login/login',
})
}
wx.setStorageSync('nav-menu', "xmgk");
const proUserInfo = getUserInfo();
app.globalData.subDeptUserData = proUserInfo.projectUserInfo;
this.initAnimationData();
this.setData({
labourImg: this.data.labourTypeList[this.data.nactive].img,
projectId: app.globalData.useProjectId,
projectName: app.globalData.useProjectName,
initData: {
id: app.globalData.useProjectId,
text: app.globalData.useProjectName,
},
subDeptUserInfo: proUserInfo.projectUserInfo
});
//项目基本信息
this.getProjectInfo(app.globalData.useProjectId);
//用户项目信息
this.getProUserDatas();
//项目建设单位
this.getProjectDepts(app.globalData.useProjectId);
},
/**
* 统计劳务人员信息
* @param {*} proId
*/
getSubDeptsUsers(proId) {
findSubDeptsUsers(proId).then(res => {
if (res.code == 200) {
let zg = 0;
let lg = 0;
res.data.forEach(item => {
if (item.useStatus == '0') {
zg += item.total;
} else {
lg += item.total;
}
});
this.setData({
"labourTypeList[0].total": zg,
"labourTypeList[1].total": lg,
labourTotal: zg,
labourDataList: res.data || []
})
this.initSubDeptUsersCharts();
}
});
},
/**
* 初始化动画
*/
initAnimationData() {
var animation = wx.createAnimation({
duration: 1000,
timingFunction: 'linear',
})
this.animation = animation;
if (this.data.animation) {
animation.translateY(-8).step();
} else {
animation.translateY(8).step();
}
this.setData({
animation: this.data.animation ? false : true,
animationData: animation.export()
})
setTimeout(() => {
this.initAnimationData();
}, 1200)
},
/**
* 初始化统计图表
*/
initSubDeptUsersCharts() {
let labourDataList = this.data.labourDataList;
if (labourDataList.length > 0) {
let gl = 0;
let ts = 0;
let lw = 0;
labourDataList.forEach(item => {
if (this.data.nactive == 0) {
if (item.useStatus == '0') {
if (item.craftType == '2') {
ts += item.total;
} else if (item.craftType == '3') {
gl += item.total;
} else {
lw += item.total;
}
}
} else {
if (item.useStatus != '0') {
if (item.craftType == '2') {
ts += item.total;
} else if (item.craftType == '3') {
gl += item.total;
} else {
lw += item.total;
}
}
}
});
this.setData({
"labourData[0].total": gl,
"labourData[0].yesMonitor": gl,
"labourData[1].total": ts,
"labourData[1].yesMonitor": ts,
"labourData[2].total": lw,
"labourData[2].yesMonitor": lw,
labourTotal: this.data.labourTypeList[this.data.nactive].total
})
if (this.data.switchChart) {
let chats = this.selectComponent("#userChart");
chats.initChart();
}
}
},
/**
* 初始化
* 今日考勤
* @param {*} proId
*/
initSubDeptDaysCharts(proId) {
findDaysAttendanceView(proId).then(res => {
if (res.code == 200) {
let gl = 0;
let ts = 0;
let lw = 0;
res.data.forEach(item => {
if (item.craftType == '2') {
ts += item.total;
} else if (item.craftType == '3') {
gl += item.total;
} else {
lw += item.total;
}
});
this.setData({
"labourDays[0].total": gl,
"labourDays[0].yesMonitor": gl,
"labourDays[1].total": ts,
"labourDays[1].yesMonitor": ts,
"labourDays[2].total": lw,
"labourDays[2].yesMonitor": lw,
labourDaysTotal: gl + ts + lw
})
if (this.data.switchChart) {
let chats = this.selectComponent("#attsChart");
chats.initChart();
}
}
});
},
/**
* 统计
* 最近出勤信息
* @param {*} proId
*/
getSubDeptsAttendanceView(proId) {
findSubDeptsAttendanceView(proId).then(res => {
if (res.code == 200) {
let xd = [];
let yd1 = [];
let yd2 = [];
res.data.list.forEach(item => {
xd.push(item.attendanceTime);
yd1.push(item.total);
});
if (xd.length < 7) {
let n = 7 - xd.length;
for (let i = 0; i < n; i++) {
xd.push('-');
yd1.push(0);
}
}
for (let y = 0; y < 7; y++) {
yd2.push(res.data.user);
}
let yd = [];
yd.push(yd1);
yd.push(yd2);
this.setData({
"labourDatas.Xdata": xd,
"labourDatas.Ydata": yd
});
if (this.data.switchChart) {
let chats = this.selectComponent("#chartBar");
chats.initChart();
}
}
});
},
/**
* 查询用户考勤
* @param {*} proId
*/
getUsersAttendanceView(proId) {
findUsersAttendanceView(proId).then(res => {
if (res.code == 200) {
this.setData({
attendanceListData: res.data
});
}
})
},
/**
* 单位人员信息
* @param {*} proId
*/
getProUserDatas() {
//劳务人员信息
if ((app.globalData.subDeptUserData.subDeptType == '1' || app.globalData.subDeptUserData.subDeptType == '4' || app.globalData.subDeptUserData.subDeptType == '5') && app.globalData.subDeptUserData.userPost != '4' && app.globalData.subDeptUserData.userPost != '5' && app.globalData.subDeptUserData.userPost != '6' && app.globalData.subDeptUserData.userPost != '8') {
//统计劳务人员信息
this.getSubDeptsUsers(app.globalData.useProjectId);
this.initSubDeptDaysCharts(app.globalData.useProjectId);
}
this.awaitTask();
//今日出勤信息
if (app.globalData.subDeptUserData.subDeptType == '1') {
this.getSubDeptsAttendanceView(app.globalData.useProjectId);
}
//人员出勤信息
if (app.globalData.subDeptUserData.userPost == '4' || app.globalData.subDeptUserData.userPost == '5' || app.globalData.subDeptUserData.userPost == '6' || app.globalData.subDeptUserData.userPost == '8') {
//统计劳务人员信息
this.getUsersAttendanceView(app.globalData.useProjectId);
}
},
/**
* 查询公众号消息授权
*/
reUserOpenMsgId() {
let userInfos = this.selectComponent("#userInfos");
userInfos.loadUserInfo();
},
// 底部导航
onChange(event) {
// event.detail 的值为当前选中项的索引
this.setData({
active: event.detail
});
},
/**
* 初始化曲线图表
*/
initLabourDatas() {
findGroupAllByDays({
projectId: app.globalData.projectId
}).then(res => {
if (res.code == 200) {
let xd = [];
let yd1 = [];
let yd2 = [];
res.data.list.forEach(item => {
xd.push(item.attendanceTime);
yd1.push(item.total);
});
if (xd.length < 7) {
let n = 7 - xd.length;
for (let i = 0; i < n; i++) {
xd.push('');
yd1.push(0);
}
}
for (let y = 0; y < 7; y++) {
yd2.push(res.data.user);
}
let yd = [];
yd.push(yd1);
yd.push(yd2);
this.setData({
"labourDatas.Xdata": xd,
"labourDatas.Ydata": yd
});
if (this.data.switchChart) {
let chats = this.selectComponent("#chartBar");
chats.initChart();
}
}
});
},
/**
* 查询项目详情
* @param {*} proId
*/
getProjectInfo: function (proId) {
findProjectInfo(proId).then(res => {
if (res.data.scheduledStartTime) {
res.data.scheduledStartTime = res.data.scheduledStartTime.split("T")[0];
} else {
res.data.scheduledStartTime = " - ";
}
if (res.data.actualOperatingTime) {
res.data.actualOperatingTime = res.data.actualOperatingTime.split("T")[0];
} else {
res.data.actualOperatingTime = " - ";
}
if (res.data.plannedCompletionTime) {
res.data.plannedCompletionTime = res.data.plannedCompletionTime.split("T")[0];
} else {
res.data.plannedCompletionTime = " - ";
}
res.data.projectDeptsList.forEach(item => {
this.data.deptTypes.forEach(_it => {
if (_it.name == item.deptType) {
item.iconSrc = _it.iconSrc;
}
})
});
this.setData({
projectInfo: res.data,
projectDeptsList: res.data.projectDeptsList
})
});
},
/**
* 查询
* 项目建设单位
* @param {*} proId
*/
getProjectDepts: function (proId) {
findProjectDepts(proId).then(res => {
this.setData({
projectDeptsList: res.data
})
});
},
// 页签选中事件
selectedTab(e) {
this.setData({
nactive: e.target.dataset.set,
labourImg: this.data.labourTypeList[e.target.dataset.set].img,
})
this.initSubDeptUsersCharts();
},
//项目切换 返回值
onProjectSelect(e) {
let projectId = e.detail.id;
let projectName = e.detail.text;
app.globalData.useProjectId = projectId;
app.globalData.useProjectName = projectName;
this.setData({
switchChart: true
})
this.onLoad();
},
// 手风琴
onCollChange(event) {
this.setData({
activeNames: event.detail,
});
},
/**
* 拨打电话
* @param {*} event
*/
calling: function (event) {
let callPhone = event.currentTarget.dataset.phone;
wx.makePhoneCall({
phoneNumber: callPhone,
success: function () {
console.log("拨打电话成功!")
},
fail: function () {
console.log("拨打电话失败!")
}
})
},
showImg: function (e) {
let paths = e.target.dataset.set;
let path = [];
paths.split(',').forEach(url => {
path.push(config.baseImgUrl + url);
});
wx.previewImage({
urls: path,
current: path[0]
})
},
/**
* 劳务管理查看详细
*/
goLWGL: function () {
if (this.data.nactive == 2) {
wx.redirectTo({
url: '../../pageage/project_attendance/project_attendanceData/list/index'
})
} else {
let type;
if (this.data.nactive == 0) {
type = 1;
} else {
type = 2;
}
wx.redirectTo({
url: '../../pageage/project_attendance/project_attendanceUser/list/index?type=' + type
})
}
},
/**
* 最近出勤
*/
goZJCQ: function () {
wx.redirectTo({
url: '../../pageage/project_attendance/project_attendanceData/list/index'
})
},
//跳转到安全管控
XMSP: function () {
wx.setStorageSync('nav-menu', "aqgl");
wx.redirectTo({
url: '../project_safety/index'
})
},
//跳转到质量管理
ZLGL: function () {
wx.setStorageSync('nav-menu', "zlgl");
wx.redirectTo({
url: '../project_quality/index'
})
},
//跳转到进度管理
JDGL: function () {
wx.setStorageSync('nav-menu', "xmgk");
wx.redirectTo({
url: '../project_schedule/list/index'
})
},
//跳转到项目管理
XMGL: function () {
wx.setStorageSync('nav-menu', "xmgl");
wx.redirectTo({
url: '../project_more/index'
})
},
//跳转到项目列表
XMLB: function () {
wx.redirectTo({
url: '../project_list/index'
})
},
/**
* 统计代办
*/
awaitTask() {
let param = "proId=" + app.globalData.useProjectId;
findMyTask(param).then(res => {
if (res.code == 200) {
let proUserInfo = this.data.subDeptUserInfo;
this.setData({
todoDb: proUserInfo.subDeptType=="1"?(res.data.dwsh+res.data.rysh):res.data.todo,
aqglDb: proUserInfo.subDeptType=="1"?res.data.aqgl:0,
zlglDb: proUserInfo.subDeptType=="1"?res.data.zlgl:0
})
}
});
},
})