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

752 lines
20 KiB
JavaScript
Raw Normal View History

2023-08-10 01:21:29 +08:00
// 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({
2024-03-19 23:25:38 +08:00
url: '../../pages/gengduogongneng/index'
2023-08-10 01:21:29 +08:00
})
},
showPopup() {
this.setData({ show: true });
},
onClose() {
this.setData({ show: false });
this.setData({ show1: false });
this.setData({ show2: false });
this.setData({ show3: false });
},
})