You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
194 lines
8.7 KiB
JavaScript
194 lines
8.7 KiB
JavaScript
$(() => {
|
|
moduleTitle()
|
|
safe('#safe')
|
|
// 公共请求地址
|
|
let url = '/broad/zhou'
|
|
|
|
// 轮询间隔时间
|
|
const INTERVAL = 30000
|
|
const orderDetailsTable = new AutoScrollTable(document.getElementById("IQC"), ["编号", "型号", "计划数量", "完成数量", "差异值"], {width: ['13%', '40%', null, null, '9%']}, 8)
|
|
|
|
const back = $('#backLeft')
|
|
back.push($('#backRight')[0])
|
|
const backDiv = $('#back')
|
|
if (location.href.split('?')[1]?.split('=')[1] == '1'){
|
|
backDiv.css({display:'block'})
|
|
}
|
|
back.click(() => {
|
|
location.href=`${window.location.protocol}//${window.location.host}/broad/factory`
|
|
})
|
|
//每日人力出勤轮询
|
|
autoUpdate("/broad/mtk/team6s ", INTERVAL, data => {
|
|
data.sort((a, b) => {
|
|
return b.teamNumber - a.teamNumber
|
|
})
|
|
singleVerticalBarChartTwo({
|
|
xName: data.map(val => val.teamName),
|
|
yData: data.map(val => val.teamNumber),
|
|
yImg: data.map(val => val.path),
|
|
}, document.getElementById("manpowerAttendance"))
|
|
})
|
|
|
|
// 三日订单执行情况
|
|
autoUpdate(url + "/selectOrderRateInfo", INTERVAL, data => {
|
|
let newData = []
|
|
data.forEach((val,index) => {
|
|
if (val.actual_number !== 0){
|
|
newData.push(data[index])
|
|
}
|
|
})
|
|
singleVerticalBarChart({
|
|
xName: newData.map(val => val.name_sub),
|
|
yData: newData.map(val => val.actual_number),
|
|
}, document.getElementById("productionEfficiency"), -20)
|
|
orderDetailsTable.loadData(data.map(value => [value.plan_code, value.name, value.plan_number, value.actual_number, value.plan_number - value.actual_number]), Object.keys(["编号", "型号", "计划数量", "完成数量", "差异值"]))
|
|
|
|
})
|
|
|
|
// autoUpdate(url + "/mtk_selectOrderInfoBy3dTatle", INTERVAL, data => {
|
|
// total(data.find(val => val.name === '入库订单统计').qty, '#total')
|
|
// Tips(data.find(val => val.name === '订单数量').qty, data.find(val => val.name === '完成数量').qty, data.find(val => val.name === '清单率').qty, '#Tips')
|
|
// })
|
|
|
|
autoUpdate(url+"/selectOrderRateInfoTatle", INTERVAL, data => {
|
|
Tips(data.find(val => val.name === '订单数量').qty, data.find(val => val.name === '完成数量').qty, data.find(val => val.name === '清单率').qty, '#Tips')
|
|
})
|
|
|
|
autoUpdate(url + "/selectProductInStore", INTERVAL, data => {
|
|
let list = data.map(val => val.list)
|
|
let yDataOne = []
|
|
let yDataTwo = []
|
|
list.forEach(val => {
|
|
yDataOne.push(val.find(val => val.name == '计划')?.qty || 0)
|
|
yDataTwo.push(val.find(val => val.name == '产量')?.qty || 0)
|
|
})
|
|
|
|
total(yDataTwo.reduce((val1,val2) => val1 + val2 , 0),'#total')
|
|
multipleVerticalBarChartTwo({
|
|
xName: data.map(val => val.code),
|
|
yDataOne: yDataOne,
|
|
yDataOneName: '计划',
|
|
yDataTwo: yDataTwo,
|
|
yDataTwoName: "产量",
|
|
}, document.getElementById("topLeft"), -20)
|
|
})
|
|
|
|
// 周质量分析
|
|
autoUpdate(url + "/zhou_selectQaItemInfo", INTERVAL, data => {
|
|
let arr = [100, 100, 100, 100, 100, 100]
|
|
let yDataOne = [...(data.find(val => val.code == '内胆检漏')?.list.map(val => val.rate) || []), ...arr]
|
|
let yDataTwo = [...(data.find(val => val.code == '安全检测')?.list.map(val => val.rate) || []), ...arr]
|
|
let yDataThree = [...(data.find(val => val.code == '成品检漏')?.list.map(val => val.rate) || []), ...arr]
|
|
let yDataFour = [...(data.find(val => val.code == '测温性能')?.list.map(val => val.rate) || []), ...arr]
|
|
let yDataFive = [...(data.find(val => val.code == '成品外观')?.list.map(val => val.rate) || []), ...arr]
|
|
lineChart({
|
|
xName: data.find(val => val.code == '横坐标')?.list.map(val => val.name),
|
|
yData: yDataOne,
|
|
yDataName: "内胆检漏"
|
|
}, document.getElementById("equipmentPowerOne"),undefined,undefined,'#389af4')
|
|
lineChart({
|
|
xName: data.find(val => val.code == '横坐标')?.list.map(val => val.name),
|
|
yData: yDataTwo,
|
|
yDataName: "安全检测"
|
|
}, document.getElementById("equipmentPowerTwo"),undefined,undefined,'#ff8c37')
|
|
lineChart({
|
|
xName: data.find(val => val.code == '横坐标')?.list.map(val => val.name),
|
|
yData: yDataThree,
|
|
yDataName: "成品检漏"
|
|
}, document.getElementById("equipmentPowerThree"),undefined,undefined,'#ffc257')
|
|
lineChart({
|
|
xName: data.find(val => val.code == '横坐标')?.list.map(val => val.name),
|
|
yData: yDataFour,
|
|
yDataName: "测温性能"
|
|
}, document.getElementById("equipmentPowerFour"),undefined,undefined,'#fd6f97')
|
|
lineChart({
|
|
xName: data.find(val => val.code == '横坐标')?.list.map(val => val.name),
|
|
yData: yDataFive,
|
|
yDataName: "成品外观"
|
|
}, document.getElementById("equipmentPowerFive"),undefined,undefined,'#a181fc')
|
|
// pieChart(data.map((val, index) => {
|
|
// if (index == 0 ) {
|
|
// return {
|
|
// name: val.type,
|
|
// value: val.qty,
|
|
// itemStyle: {
|
|
// color: 'red',
|
|
// }
|
|
// }
|
|
// }
|
|
// if (index == 1) {
|
|
// return {
|
|
// name: val.type,
|
|
// value: val.qty,
|
|
// itemStyle: {
|
|
// color: 'yellow',
|
|
// }
|
|
// }
|
|
// }
|
|
// return {
|
|
// name: val.type,
|
|
// value: val.qty,
|
|
// }
|
|
//
|
|
// }
|
|
// ), document.getElementById("equipmentPower"));
|
|
})
|
|
|
|
|
|
})
|
|
const today = () => {
|
|
const currentYear = new Date().getFullYear().toString();
|
|
const hasTimestamp = new Date() - new Date(currentYear);
|
|
const hasDays = Math.ceil(hasTimestamp / 86400000);
|
|
return hasDays
|
|
}
|
|
|
|
const curWeek = () => {
|
|
let today = new Date();
|
|
let firstDayOfYear = new Date(today.getFullYear(), 0, 1);
|
|
let dayOfWeek = firstDayOfYear.getDay();
|
|
let spendDay = 1;
|
|
if (dayOfWeek != 0) {
|
|
spendDay = 7 - dayOfWeek + 1;
|
|
}
|
|
firstDayOfYear = new Date(today.getFullYear(), 0, spendDay);
|
|
let d = Math.ceil((today.valueOf() - firstDayOfYear.valueOf()) / 86400000);
|
|
return Math.ceil((d / 7) + 1);
|
|
}
|
|
|
|
const moduleTitle = () => {
|
|
const html = `
|
|
<span style="position: absolute;top: 0.9%;left: 50%;color: #fff;font-size: 1.3vw;transform: translateX(-50%);letter-spacing: 0.3vw">第${curWeek()}周 生产数据管控平台</span>
|
|
<span style="position: absolute;top: 10%;left: 5.5%;color: #CFD2D0;font-size: 1.0vw">产量统计 </span>
|
|
<span style="position: absolute;top: 10%;left: 32%;color: #CFD2D0;font-size: 1.0vw">周订单执行情况</span>
|
|
<span style="position: absolute;top: 10%;left: 73.5%;color: #CFD2D0;font-size: 1.0vw">班组 6s 排行榜</span>
|
|
<span style="position: absolute;top: 54.5%;left: 5.5%;color: #CFD2D0;font-size: 1.0vw">周生产型号统计</span>
|
|
<span style="position: absolute;top: 54.5%;left: 32%;color: #CFD2D0;font-size: 1.0vw">周质量分析</span>
|
|
<span style="position: absolute;top: 54.5%;left: 73.6%;color: #CFD2D0;font-size: 1.0vw">安全生产</span>
|
|
`
|
|
$('body').append(html)
|
|
}
|
|
|
|
const safe = (el) => {
|
|
const html = `
|
|
<span style="position: absolute;top: 66%;left: 84%;white-space:nowrap;color: #CBE6F7;font-size: 1.3vw;font-weight:600;transform: translateX(-50%);letter-spacing: 0.3vw">${new Date().getFullYear().toString()}年连续安全生产天数</span>
|
|
<span style="position: absolute;top: 74%;left: 84%;color: #08F580;font-size: 2.5vw;transform: translateX(-50%);letter-spacing: 0.3vw">${today()}<span style="font-size: 0.5vw">天</span> </span>
|
|
<span style="position: absolute;top: 89%;left: 84%;color: #CBE6F7;font-size: 1vw;transform: translateX(-50%);letter-spacing: 0.3vw">智能冷柜互联工厂</span>
|
|
`
|
|
$(el).html(html)
|
|
}
|
|
|
|
|
|
const Tips = (val1 = 0, val2 = 0, val3 = 0, el) => {
|
|
const html = `
|
|
<span style="position: absolute;top: 10%;left: 44%;color: #fff;font-size: 1vw;">订单数量:${val1} 完成数量:${val2} 清单率:${val3}%</span>
|
|
`
|
|
$(el).html(html)
|
|
}
|
|
|
|
const total = (val1 = 0, el) => {
|
|
const html = `
|
|
<span style="position: absolute;top: 10%;left: 17.7%;color: #fff;font-size: 1vw;">合计:${val1} 台</span>
|
|
`
|
|
$(el).html(html)
|
|
} |