jhwxapp/miniprogram/pageage/Material-Management/index.js

752 lines
20 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// pages/Material-Management/index.js
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
initData:{},
indexNum:0,
indexNum1:1,
indexNum2:1,
AIvideoSurvey: [],
background:'skyblue',
videoSurvey: [],
safetyDeepList:[],
safetyDeepData:[],
//服务请求接口表示
request:{
//获取完工工号数
getRebarOrConcreteOrOtherGhFinishNumService:"getRebarOrConcreteOrOtherGhFinishNumService",
// 混凝土统计使用量
getFinishConcreteGhInfoByProjectIdWx:"getFinishConcreteGhInfoByProjectIdWx",
//超耗物料top排行榜
getReportConcreteExceedMaterielTopService:"getReportConcreteExceedMaterielTopService",
//超耗原因分析
getReportConcreteExceedReasonService:"getReportConcreteExceedReasonService",
//进行中工号物料情况
getUseSituationRPTDayService:"getUseSituationRPTDayService",
//混凝土使用情况
getConcreteMaterialActquantityNumService:"getConcreteMaterialActquantityNumService" ,
//进行中工号数
getRebarOrConcreteOrOtherGhUnderNumService:"getRebarOrConcreteOrOtherGhUnderNumService",
//获取工号楼层信息
getConcreteMaterialActQuantityGhInfoService:"getConcreteMaterialActQuantityGhInfoService"
},
value2: "本月",
value1: "本月",
value3: "本月",
actions2: [{ name: '本月',id:0 }, { name: '累计', id:1},],
actions1: [{ name: '本月',id:1 }, { name: '累计', id:2},],
actions3: [{ name: '本月',id:1 }, { name: '累计', id:0},],
//完工工号数
finishGhNumber:0,
//完工超耗
finishGhSjl:0,
finishGhShl:0,
finishGhJcl:0,
finishGhJclRate:0,
//进行中用料情况
materialZc:0,
materialCh:0,
materialLj:0,
underGhNumber:0,
loadShow:false,
topMaterialIsSHowFlag:false,
topMaterialReasonIsSHowFlag:false,
ghId:"",
//混凝土使用情况
situationList:[]
},
//选择项目
onProjectSelect(e){
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()
},
onClick(){
this.setData({
show2:true
})
},
onClick1(){
this.setData({
show1:true
})
},
onClick2(){
this.setData({
show3:true
})
},
// 点击进行超耗tab切换
onSelect2(e){
// console.log(e);
let indexNum = e.detail.id;
this.setData({
indexNum,
value2: e.detail.name,
})
//数据切换
///获取混凝土完工工号数
this.getRebarOrConcreteOrOtherGhFinishNumService(indexNum)
//获取混凝土完工超耗情况
this.getProjectChaoHaoStatisticsRPTService(indexNum)
//获取混凝土超耗top榜单
this.getReportConcreteExceedMaterielTopService(indexNum)
//获取混凝土超耗原因分析
this.getReportConcreteExceedReasonService(indexNum)
},
onSelect1(e){
let indexNum1 = e.detail.id;
console.log(indexNum1);
this.setData({
indexNum1,
value1: e.detail.name,
})
this.getUseSituationRPTDayService(indexNum1)
},
onSelect3(e){
let {ghId} = this.data
let indexNum2 = e.detail.id;
this.setData({
indexNum2,
value3: e.detail.name,
})
if(ghId == 0){
this.onClickTemperatureTrend(indexNum2)
}else{
this.onClickTemperatureTrend(indexNum2,ghId)
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
//获取缓存数据
wx.getStorage({
key: 'userinfo',
success:res=>{
this.setData({
loginName:res.data.loginName,
userName:res.data.userName,
initData:{text:app.globalData.projectName,id:app.globalData.projectId}
})
this.getProjectCorrespondence(app.globalData.projectId)
}
})
},
/**
* 项目对应关系
*/
getProjectCorrespondence(projectId) {
var that = this;
wx.request({
url: app.globalData.reqUrl + '/weixin/training/getProjectCorrespondence',
data: {
"projectId": projectId,
},
method: "get",
success: function (res) {
that.setData({
projectData: res.data
})
//数据请求
//获取混凝土完工工号数
that.getRebarOrConcreteOrOtherGhFinishNumService(0)
//获取混凝土完工超耗情况
that.getProjectChaoHaoStatisticsRPTService(0)
//获取混凝土超耗top榜单
that.getReportConcreteExceedMaterielTopService(0)
//获取混凝土超耗原因分析
that.getReportConcreteExceedReasonService(0)
//混凝土使用情况
that.onClickTemperatureTrend(1)
//使用情况进行中
that.getUseSituationRPTDayService(1)
//获取楼层
that.getConcreteMaterialActQuantityGhInfoService()
}
})
},
/**
* 获取混凝土完工工号数
*/
getRebarOrConcreteOrOtherGhFinishNumService(type){
let that = this
that.setData({
loadShow:true
})
let {clxh} = that.data.projectData
let startDate = ""
let endDate = ""
if(type == 0){
startDate = that.dateFormat(that.getlastMonth(),"yyyy-MM-dd") + " 00:00:00"
endDate = that.dateFormat(new Date(),"yyyy-MM-dd") + " 00:00:00"
}else{
startDate = "1970-01-01 00:00:00"
endDate = that.dateFormat(new Date(),"yyyy-MM-dd") + " 00:00:00"
}
wx.request({
url: app.globalData.reqUrl + '/weixin/material/getRebarOrConcreteOrOtherGhFinishNumService',
method:"GET",
data:{
service:that.data.request.getRebarOrConcreteOrOtherGhFinishNumService,
projectId:clxh,
startDate,
endDate,
materialType:0
},
header:{
'content-type': 'application/x-www-form-urlencoded'
},
success(res){
that.setData({
loadShow:false
})
res = res.data
if(res.code == "000000"){
that.setData({
finishGhNumber:res.data[0].finishNum
})
}else{
that.setData({
finishGhNumber:0
})
}
}
})
},
/**
* 获取混凝土完工超耗情况
*/
getProjectChaoHaoStatisticsRPTService(type){
let that = this
that.setData({
loadShow:true
})
let {clxh} = that.data.projectData
let startTime = ""
let endTime = ""
if(type == 0){
startTime = that.dateFormat(that.getlastMonth(),"yyyy-MM-dd") + " 00:00:00"
endTime = that.dateFormat(new Date(),"yyyy-MM-dd") + " 23:59:59"
}
wx.request({
url: app.globalData.reqUrl + '/weixin/material/getProjectChaoHaoStatisticsRPTService',
method:"GET",
data:{
service:that.data.request.getFinishConcreteGhInfoByProjectIdWx,
projectId:clxh,
startTime,
endTime,
materialType:0
},
header:{
'content-type': 'application/x-www-form-urlencoded'
},
success(res){
that.setData({
loadShow:false
})
res = res.data
if(res.code == "000000"){
that.setData({
finishGhSjl:res.data[0].finishGhSjl,
finishGhShl:res.data[0].finishGhShl,
finishGhJcl:res.data[0].finishGhJcl,
finishGhJclRate:res.data[0].finishGhJclRate
})
}else{
that.setData({
finishGhSjl:0,
finishGhShl:0,
finishGhJcl:0,
finishGhJclRate:0
})
}
}
})
},
/**
* 获取混凝土超耗top榜单
*/
getReportConcreteExceedMaterielTopService(type){
let that = this
that.setData({
loadShow:true
})
let {clxh} = that.data.projectData
let startTime = ""
let endTime = ""
if(type == 0){
startTime = that.dateFormat(that.getlastMonth(),"yyyy-MM-dd") + " 00:00:00"
endTime = that.dateFormat(new Date(),"yyyy-MM-dd") + " 23:59:59"
}
wx.request({
url: app.globalData.reqUrl + '/weixin/material/getReportConcreteExceedMaterielTopService',
method:"GET",
data:{
service:that.data.request.getReportConcreteExceedMaterielTopService,
projectId:clxh,
startTime,
endTime,
materialType:0,
top:5
},
header:{
'content-type': 'application/x-www-form-urlencoded'
},
success(res){
res = res.data
that.setData({
loadShow:false
})
if(res.code == "000000" && res.data){
that.setData({
topMaterialIsSHowFlag:false
})
let temp = []
res.data.forEach((item,index)=>{
let tempObject = {}
tempObject.yesMonitor = Number(item.ch).toFixed(1)
tempObject.name = item.materielName +'('+item.materielModel+')'
tempObject.total = item.sumCh
tempObject.unit = "%"
temp.push(tempObject)
})
let excessRateData = temp.sort((prev,next)=> next.prop - prev.prop)
that.setData({
safetyDeepData:excessRateData
})
}else{
that.setData({
safetyDeepData:[]
})
}
}
})
},
/**
* 获取混凝土超耗原因分析
*/
getReportConcreteExceedReasonService(type){
let that = this
that.setData({
loadShow:true
})
let {clxh} = that.data.projectData
let startTime = ""
let endTime = ""
if(type == 0){
startTime = that.dateFormat(that.getlastMonth(),"yyyy-MM-dd") + " 00:00:00"
endTime = that.dateFormat(new Date(),"yyyy-MM-dd") + " 23:59:59"
}
wx.request({
url: app.globalData.reqUrl + '/weixin/material/getReportConcreteExceedReasonService',
method:"GET",
data:{
service:that.data.request.getReportConcreteExceedReasonService,
projectId:clxh,
startTime,
endTime,
materialType:0
},
header:{
'content-type': 'application/x-www-form-urlencoded'
},
success(res){
that.setData({
loadShow:false
})
res = res.data
if(res.code == "000000" && res.data){
that.setData({
topMaterialReasonIsSHowFlag:true
})
var temp = {}
let datas2 = []
const total = res.data.reduce((prev,cur,index)=>{
return prev + cur.chActQuantity
},0)
for(let i = 0;i < res.data.length;i++){
if(res.data[i].causeName.indexOf('其他') != -1 ){
for(let k in res.data[i]){
temp[k] = res.data[i][k]
}
temp.name = "其它原因"
temp.value = Number(temp.chActQuantity).toFixed(1);
temp.prop = ((Number(temp.chActQuantity) / total) * 100 ).toFixed(1)
res.data.splice(i,1)
break;
}
}
for(let i = 0;i < res.data.length;i++){
if(i < 5){
res.data[i].value = Number(res.data[i].chActQuantity).toFixed(1);
res.data[i].name = res.data[i].causeName;
res.data[i].prop = ((Number(res.data[i].chActQuantity) / total) * 100 ).toFixed(1)
datas2.push(
res.data[i]
)
}else{
temp.value = Number(Number(temp.value) + Number(Number(res.data[i].chActQuantity).toFixed(1))).toFixed(1)
}
}
datas2 = datas2.sort((next,prev)=> prev.value - next.value )
if(Object.keys(temp).length > 0){
datas2.push(temp)
}
that.setData({
videoSurvey:datas2
})
}else{
that.setData({
videoSurvey:[]
})
}
}
})
},
/**
* 进行中工号数
*/
getUseSituationRPTDayService(type){
let that = this
that.setData({
loadShow:true
})
let {clxh} = that.data.projectData
let startTime = ""
let endTime = ""
if(type == 1){
startTime = that.dateFormat(that.getlastMonth(),"yyyy-MM-dd") + " 00:00:00"
endTime = that.dateFormat(new Date(),"yyyy-MM-dd") + " 23:59:59"
}
wx.request({
url: app.globalData.reqUrl + '/weixin/material/getUseSituationRPTDayService',
method:"GET",
data:{
service:that.data.request.getUseSituationRPTDayService,
projectId:clxh,
startTime,
endTime,
type
},
header:{
'content-type': 'application/x-www-form-urlencoded'
},
success(res){
wx.request({
url: app.globalData.reqUrl + '/weixin/material/getRebarOrConcreteOrOtherGhUnderNumService',
method:"GET",
data:{
service:that.data.request.getRebarOrConcreteOrOtherGhUnderNumService,
projectId:clxh,
startDate:startTime,
endDate:endTime,
materialType:0
},
header:{
'content-type': 'application/x-www-form-urlencoded'
},
success(res1){
that.setData({
loadShow:false
})
//getRebarOrConcreteOrOtherGhUnderNumService
res = res.data
res1 = res1.data
if(res.code == "000000"){
let {concrete_consume_zc,concrete_consume_ch,concrete_consume_lj} = res.data[0]
let materialZc = isNaN(parseFloat(concrete_consume_zc).toFixed(1)) ? 0.0: parseFloat(concrete_consume_zc).toFixed(1);
//混凝土超耗
let materialCh = isNaN(parseFloat(concrete_consume_ch).toFixed(1)) ? 0.0:parseFloat(concrete_consume_ch).toFixed(1);
//混凝土临建
let materialLj = isNaN(parseFloat(concrete_consume_lj).toFixed(1)) ? 0.0:parseFloat(concrete_consume_lj).toFixed(1);
that.setData({
materialZc,
materialCh,
materialLj,
underGhNumber:res1.data[0].underNum
})
}else{
that.setData({
materialZc:0,
materialCh:0,
materialLj:0,
underGhNumber:0
})
}
}
})
}
})
},
//混凝土使用情况
onClickTemperatureTrend(type,ghId=''){
let that = this
that.setData({
loadShow:true
})
let {clxh} = that.data.projectData
let startTime = ""
let endTime = ""
if(type == 1){
startTime = that.dateFormat(that.getlastMonth(),"yyyy-MM-dd") + " 00:00:00"
endTime = that.dateFormat(new Date(),"yyyy-MM-dd") + " 23:59:59"
}
wx.request({
url: app.globalData.reqUrl + '/weixin/material/getConcreteMaterialActquantityNumService',
method:"GET",
data:{
service:that.data.request.getConcreteMaterialActquantityNumService,
projectId:clxh,
startTime,
endTime,
materialType:0,
top:3,
ghId
},
header:{
'content-type': 'application/x-www-form-urlencoded'
},
success(res){
that.setData({
loadShow:false
})
res = res.data
if(res.code == "000000"){
if(res.data){
let safetyDeepList = []
const total = res.data.reduce((prev,cur,index)=>{
return prev + cur.actQuantity
},0)
res.data.forEach(item=>{
safetyDeepList.push({
//name:item.materielName+'/'+item.materielModel,
name:item.materielModel,
yesMonitor:item.actQuantity.toFixed(1),
total:total,
unit: 'm³',
sjQuantity:item.yhl.toFixed(1)
})
})
that.setData({
safetyDeepList
})
}else{
that.setData({
safetyDeepList:[]
})
}
}
}
})
},
/**
* 获取楼号下拉框
* @param {} e
*/
getConcreteMaterialActQuantityGhInfoService(){
let that = this
let situationList = [{
id:0,
text:"全部"
}]
let {clxh} = that.data.projectData
wx.request({
url: app.globalData.reqUrl + '/weixin/material/getConcreteMaterialActquantityNumService',
method:"GET",
data:{
service:that.data.request.getConcreteMaterialActQuantityGhInfoService,
projectId:clxh
},
header:{
'content-type': 'application/x-www-form-urlencoded'
},
success(res){
res = res.data
if(res.code == "000000" && res.data){
res.data.forEach(item=>{
situationList.push({
id:item.ghId,
text:item.ghName
})
})
}
that.setData({
situationList
})
}
})
},
onSelectEducationType(e){
let id = e.detail.id
let {indexNum2} = this.data
this.setData({
ghId:id
})
if(id == 0){
this.onClickTemperatureTrend(indexNum2)
}else{
this.onClickTemperatureTrend(indexNum2,id)
}
},
/**
* 获取当前时间上一月时间
*/
getlastMonth() {
let now = new Date();
// 当前月的日期
let nowDate = now.getDate();
let lastMonth = new Date(now.getTime());
// 设置上一个月这里不需要减1
lastMonth.setMonth(lastMonth.getMonth());
// 设置为0默认为当前月的最后一天
lastMonth.setDate(0);
// 上一个月的天数
let daysOflastMonth = lastMonth.getDate();
// 设置上一个月的日期,如果当前月的日期大于上个月的总天数,则为最后一天
lastMonth.setDate(nowDate > daysOflastMonth ? daysOflastMonth : nowDate);
return lastMonth;
},
/**
* 格式化时间
*/
dateFormat(date,fmt) {
let ret;
const opt = {
"y+": date.getFullYear().toString(), // 年
"M+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"m+": date.getMinutes().toString(), // 分
"s+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
};
};
return fmt;
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
},
/**
* 返回到更多功能页面
*/
goGCLB:function(){
wx.redirectTo({
url: '../../pages/gengduogongneng/index'
})
},
showPopup() {
this.setData({ show: true });
},
onClose() {
this.setData({ show: false });
this.setData({ show1: false });
this.setData({ show2: false });
this.setData({ show3: false });
},
})