gz_safety_ui/js/welcome/welcome.js

594 lines
19 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var initTimeType = '1'; //初始化时间类型
var purchaseType = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22'
]
var purchaseData = [
120, 200, 150, 80, 70, 110, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130
]
var rankingList = [
{ name: '220kvxxxxxxxxxxxxxxxxxx工程220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' }
]
var supplierList = [
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' },
{ name: '220kvxxxxxxxxxxxxxxxxxx工程', ly: '50', th: '10', cq: '35' }
]
// 页面初始化
$(function () {
console.log('DOM is ready!');
$(`#time-${initTimeType}`).addClass('time-select-item-ac');
initDelivery()
initPurchase()
initBalance()
initPlan()
initInstrument()
rankingDom()
supplierDom()
layui.use('laydate', function () {
var laydate = layui.laydate;
//执行一个laydate实例
laydate.render({
elem: '#time_range_id', //指定元素
type: 'datetime',
range: true
});
});
});
function overviewClick(type) {
console.log(type)
let title = '', content = '', width = '95%', height = '95%';
if (type === '0') {
title = '工程详情';
content = '../../page/welconme_child/engineer.html';
}
else if (type === '1') {
title = '需求计划详情';
content = '../../page/welconme_child/demand.html';
}
else if (type === '2') {
title = '库存详情';
content = '../../page/welconme_child/inventory.html';
}
else if (type === '3') {
title = '采购详情';
content = '../../page/welconme_child/purchase.html';
}
else if (type === '4') {
title = '利库详情';
content = '../../page/welconme_child/liKu.html';
}
else if (type === '5') {
title = '退回详情';
content = '../../page/welconme_child/goBack.html';
}
openIframeByParamObj("engineerDetail", title, content, width, height);
}
// 页面刷新事件
function refreshClick() {
$(`#refresh_id`).addClass('layui-anim-rotate');
}
function rankingDom() {
var dom_nav = document.getElementById('table_body_id')
rankingList.forEach((item, index) => {
var dom = ''
var color = ''
if (index == 0) {
color = 'rgb(244, 138, 139)'
} else if (index == 1 || index == 2) {
color = '#eae13c'
} else {
color = '#999999'
}
dom += `
<div style="width: 10%;">
<div class="serialNumber" style="background:${color}">${index + 1}</div>
</div>
<div style="width: 40%;" title="${item.name}">${item.name}</div>
<div style="width: 16.6%;font-weight: 700;">${item.ly}</div>
<div style="width: 16.6%;font-weight: 700;color: rgb(68, 206, 66);">${item.th}</div>
<div style="width: 16.6%;font-weight: 700;color: rgb(244, 138, 139);">${item.cq}</div>
`
var itemDom = document.createElement("div");
itemDom.setAttribute('class', `table_body_item`);
itemDom.innerHTML = dom;
dom_nav.appendChild(itemDom);
})
rankingScrollTo()
}
function supplierDom() {
//注意进度条依赖 element 模块,否则无法进行正常渲染和功能性操作
layui.use('element', function () {
var element = layui.element;
});
var dom_nav = document.getElementById('supplier_table_body_id')
rankingList.forEach((item, index) => {
var dom = ''
dom += `
<div class="table_img_nav" style="width: 34%;">
<img src="../images/logo.png" alt="">
<div class="table_img_txt">
<div style="font-size: 18px;color: #666666;font-weight: 700;">Axxxxxxxxxx供应商名称供应商名称供应商名称
</div>
<div style="color: #999999;margin-top: 4px;">合同占比40 % 1,600,000</div>
</div>
</div>
<div style="width: 18%;">56,2305656</div>
<div style="width: 18%;">800,000.00</div>
<div style="width: 15%;">
<div class="layui-progress layui-progress-big" lay-showPercent="yes" style="width: 100%;">
<div class="layui-progress-bar" lay-percent="20%" style="width:20%;">
<span class="layui-progress-text">20%</span>
</div>
</div>
</div>
<div style="width: 15%;">
<i class="layui-icon layui-icon-time" style="margin-right: 4px;"></i>
2024-10-21
</div>
`
var itemDom = document.createElement("div");
itemDom.setAttribute('class', `supplier_table_body_item`);
itemDom.innerHTML = dom;
dom_nav.appendChild(itemDom);
})
}
// 排名自动滚动
var rankingTimer = null
var offset = 0
function clearIntervalEvent() {
clearInterval(rankingTimer)
rankingTimer = null
}
function startIntervalEvent() {
let ranking_dom = document.getElementById('table_body_id')
offset = ranking_dom.scrollTop
rankingScrollTo()
}
function rankingScrollTo() {
var dom_nav = document.getElementById('table_body_id')
dom_nav.addEventListener('mouseenter',clearIntervalEvent)
dom_nav.addEventListener('mouseleave',startIntervalEvent)
// 元素可滚动高度
var scrollHeight = dom_nav.scrollHeight- dom_nav.clientHeight
// console.dir(dom_nav)
// console.log(scrollHeight)
rankingTimer = setInterval(() => {
offset += 1
if (offset >= scrollHeight) {
offset = 0
dom_nav.scrollTo({
top: offset
})
clearIntervalEvent()
rankingScrollTo()
} else {
dom_nav.scrollTo({
top: offset
})
}
}, 40)
}
function initInstrument() {
var dataArr = 80;
var colorSet = {
color: "#468EFD",
};
var myChart = echarts.init(document.getElementById('instrument_id'));
var option = {
tooltip: {
formatter: "{a} <br/>{b} : {c}%",
},
series: [
{
name: "内部进度条",
type: "gauge",
center: ['50%', '60%'],
radius: "100%",
splitNumber: 10,
axisLine: {
lineStyle: {
color: [
[dataArr / 100, colorSet.color],
[1, "#111F42"],
],
width: 8,
},
},
axisLabel: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {
show: false,
},
itemStyle: {
show: false,
},
detail: {
formatter: function (value) {
if (value !== 0) {
var num = Math.round(value);
return parseInt(num).toFixed(0) + "%";
} else {
return 0;
}
},
offsetCenter: [0, 82],
textStyle: {
padding: [0, 0, 0, 0],
fontSize: 18,
fontWeight: "700",
color: colorSet.color,
},
},
title: {
//标题
show: true,
offsetCenter: [0, 46], // x, y单位px
textStyle: {
color: "#999999",
fontSize: 14, //表盘上的标题文字大小
fontWeight: 400,
fontFamily: "PingFangSC",
marginTop: '20px'
},
},
data: [
{
name: "¥3,400,000.00",
value: dataArr,
},
],
pointer: {
show: true,
length: "75%",
radius: "30%",
width: 10, //指针粗细
},
animationDuration: 4000,
},
{
name: "外部刻度",
type: "gauge",
center: ['50%', '60%'],
radius: "90%",
min: 0, //最小刻度
max: 100, //最大刻度
splitNumber: 10, //刻度数量
startAngle: 225,
endAngle: -45,
axisLine: {
show: true,
lineStyle: {
width: 1,
color: [[1, "rgba(0,0,0,0)"]],
},
}, //仪表盘轴线
axisLabel: {
show: true,
color: "#4d5bd1",
distance: 25,
formatter: function (v) {
switch (v + "") {
case "0":
return "0";
case "10":
return "10";
case "20":
return "20";
case "30":
return "30";
case "40":
return "40";
case "50":
return "50";
case "60":
return "60";
case "70":
return "70";
case "80":
return "80";
case "90":
return "90";
case "100":
return "100";
}
},
}, //刻度标签。
axisTick: {
show: true,
splitNumber: 7,
lineStyle: {
color: colorSet.color, //用颜色渐变函数不起作用
width: 1,
},
length: -8,
}, //刻度样式
splitLine: {
show: true,
length: -20,
lineStyle: {
color: colorSet.color, //用颜色渐变函数不起作用
},
}, //分隔线样式
detail: {
show: false,
},
pointer: {
show: false,
},
},
],
};
myChart.setOption(option);
}
function initPlan() {
var myChart = echarts.init(document.getElementById('plan_id'));
var option = {
tooltip: {
trigger: 'item'
},
graphic: {
type: 'text',
left: 'center',
top: 'center',
style: {
text: '完成率50%', // 要显示的文字
textAlign: 'center',
fill: '#0cd68d', // 文字颜色
fontSize: 20
// 其他样式配置...
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
top: '14%',
containLabel: true
},
series: [
{
name: '需求计划',
type: 'pie',
radius: ['60%', '80%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
data: [
{ value: 1100, name: '已完成', itemStyle: { color: '#0cd68d' } },
{ value: 1048, name: '未完成', itemStyle: { color: '#eef2f3' } },
]
}
]
};
myChart.setOption(option);
}
function initBalance() {
var myChart = echarts.init(document.getElementById('balance_id'));
var option = {
xAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
},
yAxis: {
type: 'category',
boundaryGap: false,
type: 'value'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['采购金额', '已付金额']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
top: '14%',
containLabel: true
},
series: [
{
name: '采购金额',
type: 'line',
stack: 'Total',
itemStyle: {
normal: {
color: '#3983fe', // 点的颜色
lineStyle: {
color: '#3983fe' // 线的颜色
}
}
},
areaStyle: {},
data: [120, 132, 101, 134, 90, 230, 210, 210, 210, 210, 210, 210]
},
{
name: '已付金额',
type: 'line',
stack: 'Total',
itemStyle: {
normal: {
color: '#877de3', // 点的颜色
lineStyle: {
color: '#877de3' // 线的颜色
}
}
},
areaStyle: {},
data: [220, 182, 191, 234, 290, 330, 310, 210, 210, 210, 210, 210]
}
]
};
myChart.setOption(option);
}
function initPurchase() {
var myChart = echarts.init(document.getElementById('purchase_id'));
var option = {
xAxis: {
type: 'category',
data: purchaseType
},
yAxis: {
type: 'value'
},
tooltip: {
trigger: 'axis',
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
top: '5%',
containLabel: true
},
dataZoom: {
type: "inside",
xAxisIndex: [0],
show: false,
startValue: 0, // 从头开始
endValue: 12, // 一次性展示几个
},
series: [
{
data: purchaseData,
type: 'bar',
showBackground: true,
label: {
show: true, // 显示数值
position: 'top' // 数值显示的位置
},
backgroundStyle: {
color: 'rgba(180, 180, 180, 0.2)'
}
}
]
};
setInterval(function () {
// 每次向左滑动一个,最后一个从头开始。
if (option.dataZoom.endValue == purchaseType.length) {
option.dataZoom.startValue = 0;
option.dataZoom.endValue = 12;
} else {
option.dataZoom.endValue = option.dataZoom.endValue + 1;
option.dataZoom.startValue = option.dataZoom.startValue + 1;
}
myChart.setOption(option);
}, 2000);
myChart.setOption(option);
}
function initDelivery() {
var myChart = echarts.init(document.getElementById('delivery_id'));
var option = {
xAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
},
yAxis: {
type: 'category',
boundaryGap: false,
type: 'value'
},
tooltip: {
trigger: 'axis'
},
legend: {
data: ['采购量', '利库量', '退还量']
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
top: '14%',
containLabel: true
},
series: [
{
name: '采购量',
type: 'line',
stack: 'Total',
data: [120, 132, 101, 134, 90, 230, 210, 210, 210, 210, 210, 210]
},
{
name: '利库量',
type: 'line',
stack: 'Total',
data: [220, 182, 191, 234, 290, 330, 310, 210, 210, 210, 210, 210]
},
{
name: '退还量',
type: 'line',
stack: 'Total',
data: [150, 232, 201, 154, 190, 330, 410, 210, 210, 210, 210, 210]
}
]
};
myChart.setOption(option);
}
function timeClick(type) {
$(`#time-${type}`).addClass('time-select-item-ac');
$(`#time-${initTimeType}`).removeClass('time-select-item-ac');
initTimeType = type
console.log(initTimeType)
if(initTimeType == 2) {
document.getElementById('time_range_nav').style.display = 'block'
}else {
document.getElementById('time_range_nav').style.display = 'none'
}
}