main
xiezuo003 5 months ago
parent bb48ef1db0
commit d19dc449ee

29496
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -11,7 +11,6 @@
"@jiaminghi/data-view": "^2.10.0", "@jiaminghi/data-view": "^2.10.0",
"axios": "^1.6.8", "axios": "^1.6.8",
"core-js": "^3.8.3", "core-js": "^3.8.3",
"crypto-js": "^4.1.1",
"echarts": "^5.5.0", "echarts": "^5.5.0",
"echarts4": "npm:echarts@^4.0.0", "echarts4": "npm:echarts@^4.0.0",
"element-ui": "^2.15.14", "element-ui": "^2.15.14",
@ -38,6 +37,7 @@
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^5.1.0", "eslint-plugin-promise": "^5.1.0",
"eslint-plugin-vue": "^8.0.3", "eslint-plugin-vue": "^8.0.3",
"postcss": "^8.4.49",
"sass": "^1.32.7", "sass": "^1.32.7",
"sass-loader": "^12.0.0", "sass-loader": "^12.0.0",
"vue-template-compiler": "^2.6.14" "vue-template-compiler": "^2.6.14"

@ -7,9 +7,9 @@
</script> </script>
<style lang="scss"> <style lang="scss">
#app { #app {
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif !important; font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
// -webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
// -moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
#nprogress .bar { #nprogress .bar {
background: #4b8df8 !important; background: #4b8df8 !important;

@ -1,4 +1,7 @@
import request from "@/utils/request"; import request from "@/utils/request";
// 前方需求分析
// 1.需求计划与分析 // 1.需求计划与分析
export function qfxqTable(params) { export function qfxqTable(params) {
return request({ return request({

@ -1,2 +1,3 @@
import request from "@/utils/request"; import request from "@/utils/request";
// 小池集成 // 小池集成

@ -1,6 +1,8 @@
import request from "@/utils/request"; import request from "@/utils/request";
// 线表分析 // 线表分析
// 柱状图、折线图
export function kbanXbjh(params) { export function kbanXbjh(params) {
return request({ return request({
url: "/kban/xbjh", url: "/kban/xbjh",

@ -1,10 +1,11 @@
import request from "@/utils/request"; import request from "@/utils/request";
// 中日程分析 // 月度计划分析
// 汇总表 // 汇总表
export function qfxqTable(params) { export function zrcTable(params) {
return request({ return request({
url: "/kban/qfxqTable", url: "/kban/zrcTable",
method: "get", method: "get",
params, params,
}); });

@ -10,3 +10,13 @@ export function getProject(params) {
params, params,
}); });
} }
// 根据查询条件获取pdf
export function pdfList(params) {
return request({
url: "/kban/pdfList",
method: "get",
params,
});
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

@ -185,22 +185,155 @@ export default {
nf: this.formData.nf, nf: this.formData.nf,
}).then((res) => { }).then((res) => {
let dataX = []; let dataX = [];
let dataY = []; let dataDayX = [];
let legendData = []; let legendData = [];
let seriesData = []; let seriesData = [{}, {}, {}, {}, {}, {}];
res.data.forEach((item) => { let dataY = [];
dataX.push(item.day); let dateData = [];
dataY.push(item.sl); let zyqList = res.data.reduce((prev, current) => {
legendData.push(item.zyq); const key = current.zyq;
seriesData.push({ if (!prev[key]) {
name: item.zyq, prev[key] = [];
type: "line", }
stack: "Total", prev[key].push(current);
data: item.sl, return prev;
}, {});
//
legendData = Object.keys(zyqList);
dataX = this.getAllDatesOfCurrentMonth();
dataX.forEach((item, index) => {
dataDayX.push(item.slice(-2) + "日");
dataY.push({
day: item,
data: 0,
}); });
dateData.push(0);
}); });
//
legendData.forEach((item, index) => {
if (item == "一区") {
let Y = JSON.parse(JSON.stringify(dataY));
for (let i = 0; i < Y.length; i++) {
let arry1 = Y[i];
let arry2 = zyqList[item].find((item) => item.day === arry1.day);
if (arry2) {
arry1.data = arry2.sl;
}
}
seriesData[0].data = Y;
} else if (item == "二区") {
let Y = JSON.parse(JSON.stringify(dataY));
for (let i = 0; i < Y.length; i++) {
let arry1 = Y[i];
let arry2 = zyqList[item].find((item) => item.day === arry1.day);
if (arry2) {
arry1.data = arry2.sl;
}
}
seriesData[1].data = Y;
} else if (item == "三区") {
let Y = JSON.parse(JSON.stringify(dataY));
for (let i = 0; i < Y.length; i++) {
let arry1 = Y[i];
let arry2 = zyqList[item].find((item) => item.day === arry1.day);
if (arry2) {
arry1.data = arry2.sl;
}
}
seriesData[2].data = Y;
} else if (item == "四区") {
let Y = JSON.parse(JSON.stringify(dataY));
for (let i = 0; i < Y.length; i++) {
let arry1 = Y[i];
let arry2 = zyqList[item].find((item) => item.day === arry1.day);
if (arry2) {
arry1.data = arry2.sl;
}
}
seriesData[3].data = Y;
} else if (item == "五区") {
let Y = JSON.parse(JSON.stringify(dataY));
for (let i = 0; i < Y.length; i++) {
let arry1 = Y[i];
let arry2 = zyqList[item].find((item) => item.day === arry1.day);
if (arry2) {
arry1.data = arry2.sl;
}
}
seriesData[4].data = Y;
} else if (item == "六区") {
let Y = JSON.parse(JSON.stringify(dataY));
for (let i = 0; i < Y.length; i++) {
let arry1 = Y[i];
let arry2 = zyqList[item].find((item) => item.day === arry1.day);
if (arry2) {
arry1.data = arry2.sl;
}
}
seriesData[5].data = Y;
}
});
var oneArr = [];
var twoArr = [];
var threeArr = [];
var fourArr = [];
var fiveArr = [];
var sixArr = [];
if (seriesData[0] && seriesData[0].data) {
seriesData[0].data.forEach((item) => {
oneArr.push(item.data);
});
} else {
oneArr = dateData;
}
if (seriesData[1] && seriesData[1].data) {
seriesData[1].data.forEach((item) => {
twoArr.push(item.data);
});
} else {
twoArr = dateData;
}
if (seriesData[2] && seriesData[2].data) {
seriesData[2].data.forEach((item) => {
threeArr.push(item.data);
});
} else {
threeArr = dateData;
}
if (seriesData[3] && seriesData[3].data) {
seriesData[3].data.forEach((item) => {
fourArr.push(item.data);
});
} else {
fourArr = dateData;
}
if (seriesData[4] && seriesData[4].data) {
seriesData[4].data.forEach((item) => {
fiveArr.push(item.data);
});
} else {
fiveArr = dateData;
}
if (seriesData[5] && seriesData[5].data) {
seriesData[5].data.forEach((item) => {
sixArr.push(item.data);
});
} else {
sixArr = dateData;
}
// 线 // 线
this.TableLine(legendData, dataX, dataY, seriesData); this.TableLine(
dataDayX,
oneArr,
twoArr,
threeArr,
fourArr,
fiveArr,
sixArr
);
}); });
}, },
today_zyjhzx() { today_zyjhzx() {
@ -578,7 +711,7 @@ export default {
myChart.resize(); myChart.resize();
}); });
}, },
TableLine(legendData, dataX, dataY, seriesData) { TableLine(dataX, oneArr, twoArr, threeArr, fourArr, fiveArr, sixArr) {
var myChart = this.$echarts.init(document.getElementById("TableLine")); var myChart = this.$echarts.init(document.getElementById("TableLine"));
var option = { var option = {
@ -594,7 +727,7 @@ export default {
"#3ba272", "#3ba272",
], ],
legend: { legend: {
data: legendData, data: ["一区", "二区", "三区", "四区", "五区", "六区"],
top: "5%", top: "5%",
textStyle: { textStyle: {
color: "#e9ebee", color: "#e9ebee",
@ -640,64 +773,34 @@ export default {
}, },
series: [ series: [
{ {
name: "作业区1", name: "一区",
type: "line", type: "line",
stack: "Total", data: oneArr,
data: [
120, 132, 101, 134, 90, 230, 210, 132, 101, 134, 90, 230, 4, 90,
230, 210, 132, 101, 134, 90, 304, 90, 230, 210, 132, 101, 134, 90,
230,
],
}, },
{ {
name: "作业区2", name: "二区",
type: "line", type: "line",
stack: "Total", data: twoArr,
data: [
220, 182, 191, 234, 290, 330, 310, 132, 101, 134, 90, 4, 90, 230,
210, 132, 101, 134, 90, 304, 90, 230, 210, 132, 101, 134, 90, 230,
230,
],
}, },
{ {
name: "作业区3", name: "三区",
type: "line", type: "line",
stack: "Total", data: threeArr,
data: [
120, 132, 101, 134, 130, 230, 210, 132, 101, 134, 90, 230, 4, 90,
230, 210, 132, 101, 134, 90, 304, 90, 230, 210, 132, 101, 134, 90,
230,
],
}, },
{ {
name: "作业区4", name: "四区",
type: "line", type: "line",
stack: "Total", data: fourArr,
data: [
220, 182, 191, 234, 290, 330, 310, 132, 101, 134, 90, 4, 90, 230,
210, 132, 101, 134, 90, 304, 90, 230, 210, 132, 101, 134, 90, 230,
230,
],
}, },
{ {
name: "作业区5", name: "五区",
type: "line", type: "line",
stack: "Total", data: fiveArr,
data: [
120, 132, 101, 134, 30, 230, 210, 132, 101, 134, 90, 230, 4, 90,
230, 210, 132, 101, 134, 90, 304, 90, 230, 210, 132, 101, 134, 90,
230,
],
}, },
{ {
name: "作业区6", name: "六区",
type: "line", type: "line",
stack: "Total", data: sixArr,
data: [
220, 182, 591, 234, 290, 330, 310, 132, 101, 134, 90, 4, 90, 230,
210, 132, 101, 134, 90, 304, 90, 230, 210, 132, 101, 134, 90, 230,
230,
],
}, },
], ],
}; };
@ -706,6 +809,30 @@ export default {
myChart.resize(); myChart.resize();
}); });
}, },
getAllDatesOfCurrentMonth() {
const today = new Date();
const firstDayOfMonth = new Date(
today.getFullYear(),
today.getMonth(),
1
);
const lastDayOfMonth = new Date(
today.getFullYear(),
today.getMonth() + 1,
0
);
const dates = [];
for (
let i = firstDayOfMonth;
i <= lastDayOfMonth;
i.setDate(i.getDate() + 1)
) {
dates.push(this.$moment(new Date(i)).format("yyyy/MM/DD"));
}
return dates;
},
}, },
}; };
</script> </script>

@ -50,11 +50,11 @@
}}</el-col> }}</el-col>
<el-col :span="4" class="col-right-border">批次数量</el-col> <el-col :span="4" class="col-right-border">批次数量</el-col>
<el-col :span="5" class="col-right-border" <el-col :span="5" class="col-right-border"
>{{ item.pcsl }} </el-col >{{ item.pcsl }} </el-col
> >
<el-col :span="3" class="col-right-border">重量</el-col> <el-col :span="3" class="col-right-border">重量</el-col>
<el-col :span="5" class="col-right-border-text" <el-col :span="5" class="col-right-border-text"
>{{ item.zl }} </el-col >{{ hasDot(item.zl) }} </el-col
> >
</el-row> </el-row>
</vue-seamless-scroll> </vue-seamless-scroll>
@ -74,15 +74,15 @@
<div class="table-text"> <div class="table-text">
<div> <div>
<span class="span1">前方需求</span> <span class="span1">前方需求</span>
<span class="span2-orage">{{ xqzlSum }}</span> <span class="span2-orage">{{ hasDot(xqzlSum) }}</span>
</div> </div>
<div> <div>
<span class="span1">月度计划</span> <span class="span1">月度计划</span>
<span class="span2-orage">{{ jhzlSum }}</span> <span class="span2-orage">{{ hasDot(jhzlSum) }}</span>
</div> </div>
<div> <div>
<span class="span1">完工总量</span> <span class="span1">完工总量</span>
<span class="span2-red">{{ wczlSum }}</span> <span class="span2-red">{{ hasDot(wczlSum) }}</span>
</div> </div>
<div> <div>
<span class="span1">需求与计划百分比</span> <span class="span1">需求与计划百分比</span>
@ -115,6 +115,7 @@
<script> <script>
import { qfxqTable, qfxqWc } from "@/api/forwardDemand"; import { qfxqTable, qfxqWc } from "@/api/forwardDemand";
import VueSeamlessScroll from "vue-seamless-scroll"; import VueSeamlessScroll from "vue-seamless-scroll";
import { hasDot } from "@/utils/tool";
export default { export default {
name: "ForwardDemand", name: "ForwardDemand",
components: { components: {
@ -122,6 +123,7 @@ export default {
}, },
data() { data() {
return { return {
hasDot,
formData: { formData: {
year: 2024, year: 2024,
}, },
@ -517,7 +519,9 @@ export default {
.col-right-border-text { .col-right-border-text {
height: 2rem; height: 2rem;
line-height: 2rem; line-height: 2rem;
text-align: center; text-align: right;
padding-right: 10px;
padding-left: 10px;
border-top: 1px solid #3490ba; border-top: 1px solid #3490ba;
} }
} }

@ -26,10 +26,10 @@
:key="index" :key="index"
> >
<div class="pop-left"> <div class="pop-left">
<dv-border-box-9 class="datav-border"> <dv-border-box-12 class="datav-border">
<div class="status-text">设备状态 使用</div> <div class="status-text">设备状态 使用</div>
<div class="">加高套料图号 GHDLGFT</div> <div class="">加高套料图号 GHDLGFT</div>
</dv-border-box-9> </dv-border-box-12>
</div> </div>
<img :src="item.img" alt="" /> <img :src="item.img" alt="" />
</div> </div>
@ -42,10 +42,10 @@
> >
<div class="pop-left"> <div class="pop-left">
<!-- <dv-border-box-8 style="width: 200px;height: 100px;">dv-border-box-8</dv-border-box-8> --> <!-- <dv-border-box-8 style="width: 200px;height: 100px;">dv-border-box-8</dv-border-box-8> -->
<dv-border-box-9 class="datav-border"> <dv-border-box-12 class="datav-border">
<div class="status-text">设备状态 使用</div> <div class="status-text">设备状态 使用</div>
<div class="">套料图号 GHDLGFT</div> <div class="">套料图号 GHDLGFT</div>
</dv-border-box-9> </dv-border-box-12>
</div> </div>
<img :src="item.img" alt="" /> <img :src="item.img" alt="" />
</div> </div>

@ -104,8 +104,81 @@ export default {
xbgtt({ xbgtt({
nf: this.formData.year, nf: this.formData.year,
}).then((res) => { }).then((res) => {
let xbgttList = res.data.reduce((prev, current) => {
const key = current.dcCh;
if (!prev[key]) {
prev[key] = [];
}
prev[key].push(current);
return prev;
}, {});
//
let dataY = Object.keys(xbgttList);
let xbListCopy = JSON.parse(JSON.stringify(xbgttList));
let ydListCopy = JSON.parse(JSON.stringify(xbgttList));
//
let xbStartData = [];
let xbEndData = [];
let ydStartData = [];
let ydEndData = [];
dataY.forEach((item) => {
xbListCopy[item] = xbListCopy[item].filter((em) => {
return em.zl >= 0;
});
ydListCopy[item] = ydListCopy[item].filter((em) => {
return em.jhzl >= 0;
});
xbStartData.push(
new Date(
this.$moment().format("yyyy") +
"/" +
(xbListCopy[item] && xbListCopy[item][0].yf
? xbListCopy[item][0].yf
: "") +
"/01"
)
);
xbEndData.push(
new Date(
this.$moment().format("yyyy") +
"/" +
(xbListCopy[item] && xbListCopy[item].length > 0
? xbListCopy[item][xbListCopy[item].length - 1].yf
: "") +
"/01"
)
);
// =====
ydStartData.push(
new Date(
this.$moment().format("yyyy") +
"/" +
(ydListCopy[item] && ydListCopy[item].length > 0
? ydListCopy[item][0].yf
: "") +
"/01"
)
);
ydEndData.push(
new Date(
this.$moment().format("yyyy") +
"/" +
(ydListCopy[item] && ydListCopy[item].length > 0
? ydListCopy[item][ydListCopy[item].length - 1].yf
: "") +
"/01"
)
);
});
// //
this.ShipBar(); this.ShipBar(dataY, xbStartData, xbEndData, ydStartData, ydEndData);
}); });
}, },
TableLine() { TableLine() {
@ -293,7 +366,7 @@ export default {
myChart.resize(); myChart.resize();
}); });
}, },
ShipBar() { ShipBar(dataY, xbStartData, xbEndData, ydStartData, ydEndData) {
var myChart = this.$echarts4.init(document.getElementById("ShipBar")); var myChart = this.$echarts4.init(document.getElementById("ShipBar"));
var option = { var option = {
legend: { legend: {
@ -306,10 +379,10 @@ export default {
}, },
grid: { grid: {
containLabel: true, containLabel: true,
top: "10%", top: "6%",
left: "2%", left: "2%",
right: "4%", right: "4%",
bottom: "3%", bottom: "6%",
}, },
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
@ -326,33 +399,43 @@ export default {
}, },
}, },
formatter: (params) => { formatter: (params) => {
var res = params[0].name + "</br>"; if (params && params.length) {
var date0 = params[0].data; var res = "";
var date1 = params[1].data; var date0 = this.$moment(params[0].data).format("yyyy-MM");
var date2 = params[2].data; var date1 =
var date3 = params[3].data; params.length > 1
date0 = date0.getFullYear() + "-" + (date0.getMonth() + 1); ? this.$moment(params[1].data).format("yyyy-MM")
date1 = date1.getFullYear() + "-" + (date1.getMonth() + 1); : "";
date2 = date2.getFullYear() + "-" + (date2.getMonth() + 1); var date2 =
params.length > 2
date3 = date3.getFullYear() + "-" + (date3.getMonth() + 1); ? this.$moment(params[2].data).format("yyyy-MM")
res += : "";
params[1].marker + var date3 =
params[1].seriesName + params.length > 3
? this.$moment(params[3].data).format("yyyy-MM")
: "";
res =
params[0].name +
"</br>" +
(params.length > 1
? params[1].marker + params[1].seriesName
: "") +
":</br>" + ":</br>" +
date0 + date0 +
"~" + "~" +
date1 + date1 +
"</br>"; "</br>" +
res += (params.length > 3
params[3].marker + ? params[3].marker + params[3].seriesName
params[3].seriesName + : "") +
":</br>" + ":</br>" +
date2 + date2 +
"~" + "~" +
date3 + date3 +
"</br>"; "</br>";
return res; return res;
}
}, },
}, },
xAxis: { xAxis: {
@ -365,7 +448,6 @@ export default {
color: "#e4e4e4", color: "#e4e4e4",
formatter: (value) => { formatter: (value) => {
var date = new Date(value); var date = new Date(value);
console.log();
// 1 JavaScript 0 // 1 JavaScript 0
var month = date.getMonth() + 1; var month = date.getMonth() + 1;
// //
@ -389,18 +471,7 @@ export default {
}, },
}, },
yAxis: { yAxis: {
data: [ data: dataY,
"船只1",
"船只2",
"船只3",
"船只4",
"船只5",
"船只6",
"船只7",
"船只8",
"船只9",
"船只10",
],
axisLabel: { axisLabel: {
color: "#e4e4e4", color: "#e4e4e4",
}, },
@ -423,18 +494,7 @@ export default {
color: "rgba(0,0,0,0)", color: "rgba(0,0,0,0)",
}, },
}, },
data: [ data: xbStartData,
new Date("2024/01/01"),
new Date("2024/02/01"),
new Date("2024/03/01"),
new Date("2024/04/01"),
new Date("2024/04/01"),
new Date("2024/05/01"),
new Date("2024/06/01"),
new Date("2024/04/01"),
new Date("2024/06/01"),
new Date("2024/03/01"),
],
}, },
{ {
name: "线表计划", name: "线表计划",
@ -446,18 +506,7 @@ export default {
color: "#1afffd", color: "#1afffd",
}, },
}, },
data: [ data: xbEndData,
new Date("2024/10/01"),
new Date("2024/11/01"),
new Date("2024/11/01"),
new Date("2024/06/01"),
new Date("2024/10/01"),
new Date("2024/10/01"),
new Date("2024/12/01"),
new Date("2024/12/01"),
new Date("2024/08/01"),
new Date("2024/08/01"),
],
}, },
{ {
name: "月度计划(隐藏)", name: "月度计划(隐藏)",
@ -468,18 +517,7 @@ export default {
color: "rgba(0,0,0,0)", color: "rgba(0,0,0,0)",
}, },
}, },
data: [ data: ydStartData,
new Date("2024/03"),
new Date("2024/09"),
new Date("2024/02"),
new Date("2024/10"),
new Date("2024/04"),
new Date("2024/04"),
new Date("2024/04"),
new Date("2024/07"),
new Date("2024/09"),
new Date("2024/09"),
],
}, },
{ {
name: "月度计划", name: "月度计划",
@ -491,18 +529,7 @@ export default {
color: "#2e7cff", color: "#2e7cff",
}, },
}, },
data: [ data: ydEndData,
new Date("2024/09/01"),
new Date("2024/12/01"),
new Date("2024/05/01"),
new Date("2024/12/01"),
new Date("2024/08/01"),
new Date("2024/05/01"),
new Date("2024/11/01"),
new Date("2024/08/01"),
new Date("2024/11/01"),
new Date("2024/11/01"),
],
}, },
], ],
}; };
@ -592,7 +619,7 @@ export default {
} }
.ShipBar { .ShipBar {
width: 100%; width: 100%;
height: calc(100% - 24px); height: 100%;
} }
} }
} }

@ -22,27 +22,23 @@
<tr> <tr>
<td class="table-sum-title">需求重量</td> <td class="table-sum-title">需求重量</td>
<td class="table-sum-text"> <td class="table-sum-text">
{{ tableSumObj.xqzl ? tableSumObj.xqzl : 0 }} {{ tableSumObj.xqzl ? hasDot(tableSumObj.xqzl) : 0 }}
</td> </td>
<td class="table-sum-title">订货清单重量</td> <td class="table-sum-title">订货清单重量</td>
<td class="table-sum-text"> <td class="table-sum-text">
{{ tableSumObj.dhzl ? tableSumObj.dhzl : 0 }} {{ tableSumObj.dhzl ? hasDot(tableSumObj.dhzl) : 0 }}
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="table-sum-title">月度计划重量</td> <td class="table-sum-title">月度计划重量</td>
<td class="table-sum-text"> <td class="table-sum-text">
{{ tableSumObj.jhzl ? tableSumObj.jhzl : 0 }} {{ tableSumObj.jhzl ? hasDot(tableSumObj.jhzl) : 0 }}
</td> </td>
<td class="table-sum-title">完成重量</td> <td class="table-sum-title">完成重量</td>
<td class="table-sum-text"> <td class="table-sum-text">
{{ tableSumObj.wczl ? tableSumObj.wczl : 0 }} {{ tableSumObj.wczl ? hasDot(tableSumObj.wczl) : 0 }}
</td> </td>
</tr> </tr>
</table>
</div>
<div class="left-bottom-box">
<table class="table-sum">
<tr v-for="(item, index) in tableSumObj.detail" :key="index"> <tr v-for="(item, index) in tableSumObj.detail" :key="index">
<td class="table-sum-title">船号</td> <td class="table-sum-title">船号</td>
<td class="table-sum-text"> <td class="table-sum-text">
@ -55,6 +51,10 @@
</tr> </tr>
</table> </table>
</div> </div>
<!-- <div class="left-bottom-box">
<table class="table-sum">
</table>
</div> -->
</div> </div>
</div> </div>
</div> </div>
@ -65,21 +65,21 @@
<!-- 柱状图 --> <!-- 柱状图 -->
<div class="right-top-title">月度计划数据分析</div> <div class="right-top-title">月度计划数据分析</div>
<el-row class="row"> <el-row class="row">
<el-col :span="12"> <el-col :span="24">
<div id="DrawingBar" class="drawingBar"></div> <div id="DrawingBar" class="drawingBar"></div>
</el-col> </el-col>
<el-col :span="12"> <!-- <el-col :span="12">
<div id="ForwardDemandBar" class="forwardDemandBar"></div <div id="ForwardDemandBar" class="forwardDemandBar"></div
></el-col> ></el-col> -->
</el-row> </el-row>
<el-row class="row"> <!-- <el-row class="row">
<el-col :span="12"> <el-col :span="12">
<div id="MonthlyPlanBar" class="monthlyPlanBar"></div <div id="MonthlyPlanBar" class="monthlyPlanBar"></div
></el-col> ></el-col>
<el-col :span="12" <el-col :span="12"
><div id="FinishBar" class="finishBar"></div> ><div id="FinishBar" class="finishBar"></div>
</el-col> </el-col>
</el-row> </el-row> -->
</div> </div>
</div> </div>
</div> </div>
@ -89,16 +89,19 @@
<!-- 饼图 --> <!-- 饼图 -->
<div class="right-bottom-title">月度计划数据分析</div> <div class="right-bottom-title">月度计划数据分析</div>
<el-row class="row"> <el-row class="row">
<el-col :span="6"> <el-col :span="4">
<div id="DrawingPie" class="drawingPie"></div> <div id="DrawingPie" class="drawingPie"></div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="4" :offset="1">
<div id="ForwardDemandPie" class="forwardDemandPie"></div> <div id="ForwardDemandPie" class="forwardDemandPie"></div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="4" :offset="1">
<div id="PlanFinishPie" class="planFinishPie"></div>
</el-col>
<el-col :span="4" :offset="1">
<div id="MonthlyPlanPie" class="monthlyPlanPie"></div> <div id="MonthlyPlanPie" class="monthlyPlanPie"></div>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="4">
<div id="FinishPie" class="finishPie"></div <div id="FinishPie" class="finishPie"></div
></el-col> ></el-col>
</el-row> </el-row>
@ -110,11 +113,13 @@
</div> </div>
</template> </template>
<script> <script>
import { qfxqTable } from "@/api/monthPlan"; import { zrcTable } from "@/api/monthPlan";
import { hasDot } from "@/utils/tool";
export default { export default {
name: "MonthPlan", name: "MonthPlan",
data() { data() {
return { return {
hasDot,
tableSumList: [], tableSumList: [],
tableSumObj: {}, tableSumObj: {},
xbjhList: [], xbjhList: [],
@ -136,128 +141,108 @@ export default {
}; };
}, },
mounted() { mounted() {
this.qfxqTable(); this.zrcTable();
}, },
methods: { methods: {
qfxqTable() { zrcTable() {
qfxqTable().then((res) => { zrcTable().then((res) => {
this.tableSumObj = res.data; this.tableSumObj = res.data;
this.DrawingBar(); var bgData = [res.data.xqzl, res.data.xqzl, res.data.xqzl, res.data.xqzl];
this.ForwardDemandBar(); var zlData = [ res.data.xqzl,res.data.dhzl, res.data.jhzl, res.data.wczl];
this.MonthlyPlanBar();
this.FinishBar(); this.DrawingBar(bgData,zlData);
this.DrawingPie(20, 45); // this.ForwardDemandBar();
this.ForwardDemandPie(20, 45); // this.MonthlyPlanBar();
this.MonthlyPlanPie(20, 45); // this.finishBar();
this.FinishPie(20, 45); this.drawingPie(res.data.ltsl, res.data.tzsl);
this.planFinishPie(res.data.jhzl, res.data.wczl);
this.forwardDemandPie(res.data.xqzl, res.data.dhzl);
this.monthlyPlanPie(res.data.xqzl, res.data.jhzl);
this.finishPie(res.data.xqzl, res.data.wczl);
}); });
}, },
DrawingBar() { DrawingBar(bgData,zlData) {
var myChart = this.$echarts.init(document.getElementById("DrawingBar")); var myChart = this.$echarts.init(document.getElementById("DrawingBar"));
var option = { var option = {
color: ["#2e7cff", "#fc8452"], // color: ["#2e7cff", "#fc8452"],
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
}, axisPointer: {
legend: { type: "line",
data: ["线表计划", "月度计划"], lineStyle: {
top: "5%", color: "rgba(150,150,150,0.2)",
textStyle: { width: 70,
color: "#e9ebee", type: "solid",
},
},
formatter: (params) => {
var res = "";
res =
params[1].marker +
params[1].name +
"<br/>" +
params[0].seriesName +
"" +
params[0].value +
"<br/>" +
params[1].name +
"" +
params[1].value;
return res;
}, },
}, },
grid: { grid: {
top: "10%",
left: "2%", left: "2%",
right: "2%", right: "2%",
bottom: "5%", bottom: "15",
containLabel: true, containLabel: true,
}, },
calculable: true,
xAxis: [ xAxis: [
{ {
type: "category", type: "category",
data: this.monthList, data: ["需求重量", "订货重量", "计划重量", "完成重量"],
axisLabel: { axisLabel: {
color: "#e4e4e4", color: "#e4e4e4",
}, },
nameTextStyle: {
color: "#e4e4e4",
fontSize: 12,
padding: [0, 0, 0, 0],
},
}, },
], ],
yAxis: [ yAxis: {
{
type: "value", type: "value",
splitLine: { splitLine: {
show: false, show: false,
lineStyle: {
color: "#064585",
// type: "dashed"
},
}, },
axisLabel: { axisLabel: {
color: "#e4e4e4", color: "#e4e4e4",
}, },
nameTextStyle: { data: zlData,
color: "#e4e4e4",
fontSize: 12,
padding: [0, 30, 10, 0],
}, },
},
],
series: [ series: [
{ {
name: "线表计划", name: "需求重量",
type: "bar", type: "bar",
data: [34, 45, 67, 34, 45, 34, 12, 67, 34, 12, 34, 12], barGap: "-100%",
markPoint: {
data: [
{
type: "max",
name: "Max",
label: { label: {
show: true, show: false,
color: "#fff",
},
},
{
type: "min",
name: "Min",
label: {
show: true,
color: "#fff",
},
}, },
], barWidth: 40,
itemStyle: {
color: "#2e7cff",
}, },
data: bgData, //
z: 0,
}, },
{ {
name: "月度计划", name: "完成数量",
type: "bar", type: "bar",
data: [34, 45, 67, 34, 12, 34, 45, 67, 34, 12, 34, 12], barWidth: 40,
markPoint: { itemStyle: {
data: [ color: "#fc8452",
{
type: "max",
name: "Max",
label: {
show: true,
color: "#fff",
},
},
{
type: "min",
name: "Min",
label: {
show: true,
color: "#fff",
},
},
],
}, },
data: zlData, // ()
z: 1,
}, },
], ],
}; };
@ -498,7 +483,7 @@ export default {
myChart.resize(); myChart.resize();
}); });
}, },
FinishBar() { finishBar() {
var myChart = this.$echarts.init(document.getElementById("FinishBar")); var myChart = this.$echarts.init(document.getElementById("FinishBar"));
var option = { var option = {
@ -612,11 +597,62 @@ export default {
myChart.resize(); myChart.resize();
}); });
}, },
DrawingPie(wclValue, wcValue) { drawingPie(ltValue, tzValue) {
var myChart = this.$echarts.init(document.getElementById("DrawingPie")); var myChart = this.$echarts.init(document.getElementById("DrawingPie"));
var option = { var option = {
title: { title: {
text: "中日程与图纸", text: "来图与图纸分析",
left: "center",
bottom: "10%",
textStyle: {
color: "#fff",
fontSize: 14,
fontWeight: "normal",
},
},
tooltip: {
trigger: "item",
formatter: "{a} <br/>{b} : {c} ({d}%)",
},
color: ["#ff81cb", "#ff81cb"],
legend: {
show: true,
left: "center",
top: "10%",
textStyle: {
color: "#e9ebee",
},
itemWidth: 25,
itemHeight: 15,
},
series: [
{
name: "来图与图纸分析",
type: "pie",
radius: "50%",
center: ["50%", "50%"],
minAngle: tzValue && tzValue ? 20 : "",
avoidLabelOverlap: true,
data: [
{ value: ltValue, name: "来图数量" },
{ value: tzValue, name: "图纸数量" },
],
},
],
};
myChart.setOption(option);
window.addEventListener("resize", () => {
myChart.resize();
});
},
planFinishPie(jhValue, wcValue) {
var myChart = this.$echarts.init(
document.getElementById("PlanFinishPie")
);
var option = {
title: {
text: "计划与完成分析",
left: "center", left: "center",
bottom: "10%", bottom: "10%",
textStyle: { textStyle: {
@ -625,11 +661,11 @@ export default {
fontWeight: "normal", fontWeight: "normal",
}, },
}, },
color: ["#2e7cff", "#91cc75"],
tooltip: { tooltip: {
trigger: "item", trigger: "item",
formatter: "{a} <br/>{b} : {c} ({d}%)", formatter: "{a} <br/>{b} : {c} ({d}%)",
}, },
color: ["#ff7d0a", "#5470c6"],
legend: { legend: {
show: true, show: true,
left: "center", left: "center",
@ -642,15 +678,15 @@ export default {
}, },
series: [ series: [
{ {
name: "中日程与图纸", name: "计划与完成分析",
type: "pie", type: "pie",
radius: "50%", radius: "50%",
center: ["50%", "50%"], center: ["50%", "50%"],
minAngle: wcValue && wclValue ? 20 : "", minAngle: wcValue && wcValue ? 20 : "",
avoidLabelOverlap: true, avoidLabelOverlap: true,
data: [ data: [
{ value: wcValue, name: "完成量" }, { value: jhValue, name: "计划重量" },
{ value: wclValue, name: "完成量" }, { value: wcValue, name: "完成量" },
], ],
}, },
], ],
@ -660,14 +696,14 @@ export default {
myChart.resize(); myChart.resize();
}); });
}, },
ForwardDemandPie(wclValue, wcValue) { forwardDemandPie(xqValue, dhValue) {
var myChart = this.$echarts.init( var myChart = this.$echarts.init(
document.getElementById("ForwardDemandPie") document.getElementById("ForwardDemandPie")
); );
var option = { var option = {
title: { title: {
text: "中日程与前方需求", text: "需求与订货分析",
left: "center", left: "center",
bottom: "10%", bottom: "10%",
textStyle: { textStyle: {
@ -676,7 +712,7 @@ export default {
fontWeight: "normal", fontWeight: "normal",
}, },
}, },
color: ["#91cc75", "#2e7cff"], color: ["#ff5c58", "#06b8f8"],
tooltip: { tooltip: {
trigger: "item", trigger: "item",
formatter: "{a} <br/>{b} : {c} ({d}%)", formatter: "{a} <br/>{b} : {c} ({d}%)",
@ -693,15 +729,15 @@ export default {
}, },
series: [ series: [
{ {
name: "中日程与前方需求", name: "需求与订货分析",
type: "pie", type: "pie",
radius: "50%", radius: "50%",
center: ["50%", "50%"], center: ["50%", "50%"],
minAngle: wcValue && wclValue ? 20 : "", minAngle: dhValue && dhValue ? 20 : "",
avoidLabelOverlap: true, avoidLabelOverlap: true,
data: [ data: [
{ value: wcValue, name: "完成量" }, { value: xqValue, name: "需求重量" },
{ value: wclValue, name: "未完成量" }, { value: dhValue, name: "订货重量" },
], ],
}, },
], ],
@ -711,14 +747,14 @@ export default {
myChart.resize(); myChart.resize();
}); });
}, },
MonthlyPlanPie(wclValue, wcValue) { monthlyPlanPie(xqValue, jhValue) {
var myChart = this.$echarts.init( var myChart = this.$echarts.init(
document.getElementById("MonthlyPlanPie") document.getElementById("MonthlyPlanPie")
); );
var option = { var option = {
title: { title: {
text: "中日程与月度计划", text: "需求与月度计划分析",
left: "center", left: "center",
bottom: "10%", bottom: "10%",
textStyle: { textStyle: {
@ -731,7 +767,7 @@ export default {
trigger: "item", trigger: "item",
formatter: "{a} <br/>{b} : {c} ({d}%)", formatter: "{a} <br/>{b} : {c} ({d}%)",
}, },
color: ["#feb602", "#5470c6"], color: ["#5470c6", "#ffcb89"],
legend: { legend: {
show: true, show: true,
left: "center", left: "center",
@ -744,15 +780,15 @@ export default {
}, },
series: [ series: [
{ {
name: "中日程与月度计划", name: "需求与月度计划分析",
type: "pie", type: "pie",
radius: "50%", radius: "50%",
center: ["50%", "50%"], center: ["50%", "50%"],
minAngle: wcValue && wclValue ? 20 : "", minAngle: jhValue && jhValue ? 20 : "",
avoidLabelOverlap: true, avoidLabelOverlap: true,
data: [ data: [
{ value: wcValue, name: "完成量" }, { value: xqValue, name: "需求重量" },
{ value: wclValue, name: "未完成量" }, { value: jhValue, name: "计划重量" },
], ],
}, },
], ],
@ -762,11 +798,11 @@ export default {
myChart.resize(); myChart.resize();
}); });
}, },
FinishPie(wclValue, wcValue) { finishPie(xqValue, wcValue) {
var myChart = this.$echarts.init(document.getElementById("FinishPie")); var myChart = this.$echarts.init(document.getElementById("FinishPie"));
var option = { var option = {
title: { title: {
text: "中日程与完成重量", text: "需求与完成分析",
left: "center", left: "center",
// left:"center", // left:"center",
bottom: "10%", bottom: "10%",
@ -794,16 +830,16 @@ export default {
}, },
series: [ series: [
{ {
name: "中日程与完成重量", name: "需求与完成分析",
type: "pie", type: "pie",
radius: "50%", radius: "50%",
center: ["50%", "50%"], center: ["50%", "50%"],
minAngle: wcValue && wclValue ? 20 : "", minAngle: wcValue && wcValue ? 20 : "",
minAngle: 20, minAngle: 20,
avoidLabelOverlap: true, avoidLabelOverlap: true,
data: [ data: [
{ value: wcValue, name: "完成量" }, { value: xqValue, name: "需求重量" },
{ value: wclValue, name: "完成量" }, { value: wcValue, name: "完成量" },
], ],
}, },
], ],
@ -842,6 +878,20 @@ export default {
text-align: center; text-align: center;
margin: 0 auto; margin: 0 auto;
} }
.table-sum {
width: 96%;
margin-left: 2%;
margin-top: 2%;
border-collapse: collapse;
color: #ffffff;
.table-sum-title {
font-size: 14px;
}
.table-sum-text {
font-weight: bold;
font-size: 16px;
}
}
} }
.left-bottom-box { .left-bottom-box {
// border: 1px solid red; // border: 1px solid red;
@ -874,7 +924,7 @@ export default {
margin-left: 5px; margin-left: 5px;
// //
.right-top-box { .right-top-box {
height: 55%; height: 50%;
margin-bottom: 5px; margin-bottom: 5px;
.right-top-title { .right-top-title {
width: 32%; width: 32%;
@ -888,8 +938,9 @@ export default {
margin: 0 auto; margin: 0 auto;
} }
.row { .row {
height: calc(50% - 12px); height: calc(100% - 24px);
.el-col-12 { .el-col-24 {
width: 100%;
height: 100%; height: 100%;
.drawingBar, .drawingBar,
@ -904,7 +955,7 @@ export default {
} }
// //
.right-bottom-box { .right-bottom-box {
height: 45%; height: 50%;
.right-bottom-title { .right-bottom-title {
width: 32%; width: 32%;
height: 24px; height: 24px;
@ -918,10 +969,11 @@ export default {
} }
.row { .row {
height: calc(100% - 24px); height: calc(100% - 24px);
.el-col-6 { .el-col-4 {
height: 100%; height: 100%;
.drawingPie, .drawingPie,
.forwardDemandPie, .forwardDemandPie,
.planFinishPie,
.monthlyPlanPie, .monthlyPlanPie,
.finishPie { .finishPie {
width: 100%; width: 100%;

@ -126,15 +126,15 @@
> >
<div class="header-box-flex"> <div class="header-box-flex">
<div class="header-left-box"> <div class="header-left-box">
<div class="type-text">{{ item.msgType }}</div> <div class="type-text">
{{ item.msgType == 41 ? "月度计划下发" : "" }}
{{ item.subData1 }} {{ item.subData2 }}
</div>
<div class="name-text">{{ item.subName }}</div> <div class="name-text">{{ item.subName }}</div>
</div> </div>
<div class="time-text">{{ item.subTime }}</div> <div class="time-text">{{ item.subTime }}</div>
</div> </div>
<div class="body"> <div class="body"></div>
<div class="body1">船号{{ item.subData1 }}</div>
<div>批量{{ item.subData2 }}</div>
</div>
</div> </div>
</vue-seamless-scroll> </vue-seamless-scroll>
</div> </div>
@ -154,78 +154,74 @@
height="95%" height="95%"
> >
<el-table-column type="index" label="序号" width="55" fixed /> <el-table-column type="index" label="序号" width="55" fixed />
<el-table-column prop="dcCh" label="船号" width="90" /> <el-table-column prop="dcCh" label="船号" width="80" />
<el-table-column prop="dcPl" label="批量" width="90" /> <el-table-column prop="dcPl" label="批量" width="70" />
<el-table-column prop="dcFd" label="分段号" width="90" /> <el-table-column prop="dcFd" label="分段号" width="80" />
<el-table-column prop="bs" label="板数" width="60" /> <el-table-column prop="bs" label="板数" width="50" />
<el-table-column prop="sl" label="上料" width="100" /> <el-table-column prop="sl" label="上料" width="95" />
<el-table-column prop="xcpw" label="型材抛丸" width="100" /> <el-table-column prop="xcpw" label="型材抛丸" width="80" />
<el-table-column prop="date" label="抛丸" width="100" /> <el-table-column prop="date" label="抛丸" width="70" />
<el-table-column prop="yklm" label="一垮龙门板数" width="100" /> <el-table-column prop="yklm" label="一垮龙门板数" width="95" />
<el-table-column prop="yksk" label="一垮数控板数" width="100" /> <el-table-column prop="yksk" label="一垮数控板数" width="95" />
<el-table-column <el-table-column
prop="ykpkjs" prop="ykpkjs"
label="坡口切割结束" label="坡口切割结束"
width="100" width="95"
/>
<el-table-column
prop="eksk2"
label="二跨龙门板数"
width="100"
/> />
<el-table-column prop="eksk" label="二跨数控板数" width="100" /> <el-table-column prop="eksk2" label="二跨龙门板数" width="95" />
<el-table-column prop="eksk" label="二跨数控板数" width="95" />
<el-table-column <el-table-column
prop="ekskks" prop="ekskks"
label="数控切割开始" label="数控切割开始"
width="100" width="95"
/> />
<el-table-column <el-table-column
prop="ekpkjs" prop="ekpkjs"
label="坡口切割结束" label="坡口切割结束"
width="100" width="95"
/> />
<el-table-column prop="sksk" label="三跨数控板数" width="100" /> <el-table-column prop="sksk" label="三跨数控板数" width="95" />
<el-table-column <el-table-column
prop="skskqgks" prop="skskqgks"
label="数控切割开始" label="数控切割开始"
width="100" width="95"
/> />
<el-table-column <el-table-column
prop="skpkjs" prop="skpkjs"
label="坡口切割结束" label="坡口切割结束"
width="100" width="95"
/> />
<el-table-column prop="skpt" label="三跨平铁板数" width="100" /> <el-table-column prop="skpt" label="三跨平铁板数" width="95" />
<el-table-column prop="ptks" label="平铁切割开始" width="100" /> <el-table-column prop="ptks" label="平铁切割开始" width="95" />
<el-table-column prop="ptjs" label="平铁切割结束" width="100" /> <el-table-column prop="ptjs" label="平铁切割结束" width="95" />
<el-table-column <el-table-column
prop="qpt_zjs" prop="qpt_zjs"
label="曲平铁转结束" label="曲平铁转结束"
width="100" width="100"
/> />
<el-table-column prop="qptjs" label="曲平铁结束" width="100" /> <el-table-column prop="qptjs" label="曲平铁结束" width="90" />
<el-table-column prop="qwbjs" label="曲外板结束" width="100" /> <el-table-column prop="qwbjs" label="曲外板结束" width="90" />
<el-table-column prop="zl" label="组立" width="100" /> <el-table-column prop="zl" label="组立" width="70" />
<el-table-column prop="skbs" label="数控板数" width="100" /> <el-table-column prop="skbs" label="数控板数" width="70" />
<el-table-column <el-table-column
prop="skqgks" prop="skqgks"
label="数控切割开始" label="数控切割开始"
width="100" width="95"
/> />
<el-table-column <el-table-column
prop="pkqgjs" prop="pkqgjs"
label="坡口切割结束" label="坡口切割结束"
width="100" width="95"
/> />
<el-table-column prop="mbjb" label="面板挤边" width="100" /> <el-table-column prop="mbjb" label="面板挤边" width="70" />
<el-table-column <el-table-column
prop="qkxcms" prop="qkxcms"
label="七跨型材米数" label="七跨型材米数"
width="100" width="95"
/> />
<el-table-column prop="xcmb" label="型材面板" width="100" /> <el-table-column prop="xcmb" label="型材面板" width="95" />
<el-table-column prop="gdjs" label="光电结束" width="100" /> <el-table-column prop="gdjs" label="光电结束" width="95" />
<el-table-column prop="fdxq" label="分段需求" width="100" /> <el-table-column prop="fdxq" label="分段需求" width="95" />
</el-table> </el-table>
</div> </div>
</div> </div>
@ -293,13 +289,19 @@
<div class="border-out"> <div class="border-out">
<div class="border-inner"> <div class="border-inner">
<div class="right-top-title">本月计划汇总量</div> <div class="right-top-title">本月计划汇总量</div>
<div class="right-top-flex">
<div class="right-top-text"> <div class="right-top-text">
<div v-for="(item, index) in planList" :key="index"> <div
<span>{{ item.name }}:</span> 计划:{{ class="title-flex"
item.zsl ? item.zsl : item.zsl v-for="(item, index) in planList"
}} &nbsp; &nbsp;完成:{{ item.wcl ? item.wcl : 0 }} :key="index"
>
<div>
<span>{{ item.name }}</span>
</div>
<div class="title-plan">
计划{{ item.zsl ? item.zsl : 0 }}
</div> </div>
<div class="title">完成{{ item.wcl ? item.wcl : 0 }}</div>
</div> </div>
</div> </div>
</div> </div>
@ -309,7 +311,7 @@
<div class="right-center-box box-top"> <div class="right-center-box box-top">
<div class="border-out"> <div class="border-out">
<div class="border-inner"> <div class="border-inner">
<dv-scroll-board ref="scrollTable2" :config="bottomConfig" /> <dv-scroll-board ref="scrollTable2" :config="tableConfig" />
</div> </div>
</div> </div>
</div> </div>
@ -318,27 +320,27 @@
<div class="border-out"> <div class="border-out">
<div class="border-inner"> <div class="border-inner">
<div class="right-bottom-title">作业区完成情况</div> <div class="right-bottom-title">作业区完成情况</div>
<el-row :gutter="40"> <el-row>
<el-col :span="12"> <el-col :span="8">
<div id="FinishOnePie" class="FinishOnePie"></div> <div id="FinishOnePie" class="FinishOnePie"></div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<div id="FinishSecondPie" class="FinishSecondPie"></div> <div id="FinishSecondPie" class="FinishSecondPie"></div>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<div id="FinishThreePie" class="FinishThreePie"></div> <div id="FinishThreePie" class="FinishThreePie"></div>
</el-col> </el-col>
<!-- </el-row> </el-row>
<el-row> --> <el-row>
<el-col :span="12"> <el-col :span="8">
<div id="FinishFourPie" class="FinishFourPie"></div> <div id="FinishFourPie" class="FinishFourPie"></div>
</el-col> </el-col>
<!-- <el-col :span="12"> <el-col :span="8">
<div id="FinishFivePie" class="FinishFivePie"></div> <div id="FinishFivePie" class="FinishFivePie"></div>
</el-col> --> </el-col>
<!-- <el-col :span="8"> <el-col :span="8">
<div id="FinishSixPie" class="FinishSixPie"></div> <div id="FinishSixPie" class="FinishSixPie"></div>
</el-col> --> </el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
@ -433,7 +435,7 @@ export default {
// 6. // 6.
planList: [], planList: [],
// 7. // 7.
bottomConfig: { tableConfig: {
header: [ header: [
"作业区", "作业区",
"船号", "船号",
@ -445,6 +447,7 @@ export default {
"完成人", "完成人",
], ],
data: [], data: [],
columnWidth: [45, 65, 40, 40, 88, 30, 70, 60],
rowNum: 7, rowNum: 7,
headerBGC: "#3490ba", headerBGC: "#3490ba",
oddRowBGC: "", oddRowBGC: "",
@ -558,19 +561,30 @@ export default {
zxqwcqk() { zxqwcqk() {
zxqwcqk().then((res) => { zxqwcqk().then((res) => {
res.data.forEach((item) => { res.data.forEach((item) => {
let oneValue = [0, 0];
let secondValue = [0, 0];
let threeValue = [0, 0];
let fourValue = [0, 0];
let fiveValue = [0, 0];
let sixValue = [0, 0];
if (item.zyq == "一区") { if (item.zyq == "一区") {
this.FinishOnePie(item.wcl, item.wc);
} else if (item.zyq == "二区") { } else if (item.zyq == "二区") {
this.FinishSecondPie(item.wcl, item.wc); oneValue = [item.wcl, item.wc];
} else if (item.zyq == "三区") { } else if (item.zyq == "三区") {
this.FinishThreePie(item.wcl, item.wc); threeValue = [item.wcl, item.wc];
} else if (item.zyq == "四区") { } else if (item.zyq == "四区") {
this.FinishFourPie(item.wcl, item.wc); fourValue = [item.wcl, item.wc];
} else if (item.zyq == "五区") { } else if (item.zyq == "五区") {
this.FinishFivePie(item.wcl, item.wc); fiveValue = [item.wcl, item.wc];
} else if (item.zyq == "六区") { } else if (item.zyq == "六区") {
this.FinishSixPie(item.wcl, item.wc); sixValue = [item.wcl, item.wc];
} }
this.FinishOnePie(oneValue[0], oneValue[1]);
this.FinishSecondPie(secondValue[0], secondValue[1]);
this.FinishThreePie(threeValue[0], threeValue[1]);
this.FinishFourPie(fourValue[0], fourValue[1]);
this.FinishFivePie(fiveValue[0], fiveValue[1]);
this.FinishSixPie(sixValue[0], sixValue[1]);
}); });
}); });
}, },
@ -585,8 +599,8 @@ export default {
}, },
legend: { legend: {
orient: "vertical", orient: "vertical",
x: "right",
y: "10%", y: "10%",
right: "2%",
data: ["白班", "二班"], data: ["白班", "二班"],
textStyle: { textStyle: {
color: "#e9ebee", color: "#e9ebee",
@ -665,7 +679,7 @@ export default {
var option = { var option = {
title: { title: {
text: "作业一区", text: "作业一区",
left: "56%", left: "50%",
bottom: 0, bottom: 0,
textStyle: { textStyle: {
color: "#fff", color: "#fff",
@ -686,7 +700,7 @@ export default {
textStyle: { textStyle: {
color: "#e9ebee", color: "#e9ebee",
}, },
itemWidth: 20, itemWidth: 10,
itemHeight: 10, itemHeight: 10,
}, },
series: [ series: [
@ -723,7 +737,7 @@ export default {
var option = { var option = {
title: { title: {
text: "作业二区", text: "作业二区",
left: "56%", left: "50%",
// left: "center", // left: "center",
bottom: 0, bottom: 0,
textStyle: { textStyle: {
@ -745,7 +759,7 @@ export default {
textStyle: { textStyle: {
color: "#e9ebee", color: "#e9ebee",
}, },
itemWidth: 20, itemWidth: 10,
itemHeight: 10, itemHeight: 10,
}, },
series: [ series: [
@ -783,7 +797,7 @@ export default {
var option = { var option = {
title: { title: {
text: "作业三区", text: "作业三区",
left: "56%", left: "50%",
// left:"center", // left:"center",
bottom: 0, bottom: 0,
textStyle: { textStyle: {
@ -805,7 +819,7 @@ export default {
textStyle: { textStyle: {
color: "#e9ebee", color: "#e9ebee",
}, },
itemWidth: 20, itemWidth: 10,
itemHeight: 10, itemHeight: 10,
}, },
series: [ series: [
@ -843,7 +857,7 @@ export default {
var option = { var option = {
title: { title: {
text: "作业四区", text: "作业四区",
left: "56%", left: "48%",
// left:"center", // left:"center",
bottom: 0, bottom: 0,
textStyle: { textStyle: {
@ -865,7 +879,7 @@ export default {
textStyle: { textStyle: {
color: "#e9ebee", color: "#e9ebee",
}, },
itemWidth: 20, itemWidth: 10,
itemHeight: 10, itemHeight: 10,
}, },
series: [ series: [
@ -904,7 +918,7 @@ export default {
var option = { var option = {
title: { title: {
text: "作业五区", text: "作业五区",
left: "53%", left: "48%",
bottom: 0, bottom: 0,
textStyle: { textStyle: {
color: "#fff", color: "#fff",
@ -1233,7 +1247,7 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
.type-text { .type-text {
width: 150px; // width: 150px;
background-image: url("@/assets/image/pushmessage_class.png"); background-image: url("@/assets/image/pushmessage_class.png");
background-size: 100%; background-size: 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
@ -1242,14 +1256,13 @@ export default {
white-space: nowrap; white-space: nowrap;
line-height: 25px; line-height: 25px;
color: #fff; color: #fff;
font-size: 14px; font-size: 11px;
text-align: center; text-align: center;
} }
.name-text { .name-text {
background-image: url("@/assets/image/pushmessage_level03.png"); background-image: url("@/assets/image/pushmessage_level03.png");
background-size: 100%; background-size: 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
line-height: 25px;
// width: 10rem; // width: 10rem;
padding-left: 0.5rem; padding-left: 0.5rem;
padding-right: 0.5rem; padding-right: 0.5rem;
@ -1361,18 +1374,29 @@ export default {
font-weight: bold; font-weight: bold;
color: white; color: white;
} }
.right-top-flex {
height: 88%;
display: flex;
align-items: center;
.right-top-text { .right-top-text {
text-indent: 2ch; height: 74%;
color: #10a4db; display: flex;
font-size: 1.1rem; flex-direction: column;
font-family: "data_Number"; justify-content: space-between;
margin-left: 5%;
color: #3490ba;
font-size: 16px;
padding: 3% 0;
.title-flex {
display: flex;
.title-plan {
width: 47%;
}
.title {
width: 53%;
}
span { span {
width: 70px;
text-align: left;
display: inline-block;
color: #fff !important; color: #fff !important;
font-size: 12px !important; font-size: 14px !important;
} }
} }
} }
@ -1437,6 +1461,14 @@ export default {
border-top-left-radius: 10px !important; border-top-left-radius: 10px !important;
border-top-right-radius: 10px !important; border-top-right-radius: 10px !important;
} }
.dv-scroll-board .header .header-item,
.dv-scroll-board .rows .ceil {
padding: 0 !important;
text-align: center !important;
}
.dv-scroll-board .rows .row-item {
font-size: 10px !important;
}
.center-top-box { .center-top-box {
// .el-table th.el-table__cell { // .el-table th.el-table__cell {

@ -3,12 +3,17 @@
<div class="viewpdf-container"> <div class="viewpdf-container">
<!-- 筛选 --> <!-- 筛选 -->
<div class="formData-box"> <div class="formData-box">
<el-select v-model="formData.dcCh" size="mini" placeholder="请选择船号"> <el-select
v-model="formData.dcCh"
size="mini"
placeholder="请选择船号"
@change="dcChChange"
>
<el-option <el-option
v-for="(item, index) in dcChOptions" v-for="(item, index) in dcChOptions"
:key="index" :key="index"
:label="item.label" :label="item.dcCh"
:value="item.value" :value="item.dcCh"
> >
</el-option> </el-option>
</el-select> </el-select>
@ -16,62 +21,105 @@
<el-option <el-option
v-for="(item, index) in dcPlOptions" v-for="(item, index) in dcPlOptions"
:key="index" :key="index"
:label="item.label" :label="item.dcPl"
:value="item.value" :value="item.dcPl"
> >
</el-option> </el-option>
</el-select> </el-select>
<el-select v-model="formData.kw" size="mini" placeholder="请选择套料图">
<el-option label="四垮" :value="4"></el-option>
<el-option label="五垮" :value="5"></el-option>
<el-option label="六垮" :value="6"></el-option>
</el-select>
<div class="query-btn" @click="queryBtn"></div> <div class="query-btn" @click="queryBtn"></div>
</div> </div>
<div class="viewpdf-box"> <div class="viewpdf-box">
<div class="border-out"> <div class="border-out">
<div class="border-inner"> <div class="border-inner">
<div class="viewpdf-flex"> <el-row :gutter="20">
<div class="left-box"> <el-col :span="6" v-for="(item, index) in pdfDataList" :key="index">
<div></div> <dv-border-box-12>
</div> <div class="viewpdf-flex" @click="pdfChange(item)">
<div class="right-box"></div> <img src="@/assets/image/KHCFDC_PDF.png" alt="" />
<div class="pdf-title">{{ item }}</div>
</div> </div>
</dv-border-box-12>
</el-col>
</el-row>
</div> </div>
</div> </div>
</div> </div>
<!-- pdf预览 -->
<el-dialog
title="预览"
:visible.sync="dialogVisible"
:modal="false"
width="60%"
:before-close="handleClose"
>
<pdf :src="pdfUrl"></pdf>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { getProject } from "@/api/viewPDF"; import { getProject, pdfList } from "@/api/viewPDF";
// import pdf from 'vue-pdf' import pdf from "vue-pdf";
export default { export default {
name: "ViewPDF", name: "ViewPDF",
// components:{ components: {
// pdf pdf,
// }, },
data() { data() {
return { return {
formData: { formData: {
dcCh: "", dcCh: "",
dcPl: "", dcPl: "",
}, },
sumOptions: [],
dcChOptions: [], dcChOptions: [],
dcPlOptions: [], dcPlOptions: [],
pdfDataList: [],
dialogVisible: false,
pdfUrl: "",
}; };
}, },
mounted() { mounted() {
this.queryBtn(); this.getProject();
}, },
methods: { methods: {
//
queryBtn() { queryBtn() {
this.getProject(); this.pdfList();
}, },
getProject() { getProject() {
getProject({ getProject().then((res) => {
nf: this.formData.year, this.sumOptions = res.data;
}).then((res) => {}); const uniqueArr = res.data.reduce((accumulator, current) => {
const duplicate = accumulator.find(
(item) => item.dcCh === current.dcCh
);
if (!duplicate) {
return accumulator.concat([current]);
}
return accumulator;
}, []);
this.dcChOptions = uniqueArr;
});
},
pdfList() {
pdfList({
dcCh: this.formData.dcCh,
dcPl: this.formData.dcPl,
}).then((res) => {
this.pdfDataList = res.data;
});
},
dcChChange(value) {
this.formData.dcPl = "";
this.dcPlOptions = this.sumOptions.filter((item) => {
return item.dcCh == value;
});
},
pdfChange(item) {
this.pdfUrl = `http://kban.runpengsoft.com/upload/${this.formData.dcCh}/${this.formData.dcPl}/PDF/${item}.pdf`;
this.dialogVisible = true;
},
handleClose() {
this.dialogVisible = false;
}, },
}, },
}; };
@ -83,7 +131,7 @@ export default {
padding-left: 5px; padding-left: 5px;
padding-right: 5px; padding-right: 5px;
.formData-box { .formData-box {
width: 450px !important; width: 300px !important;
margin-bottom: 18px; margin-bottom: 18px;
} }
.viewpdf-box { .viewpdf-box {
@ -92,10 +140,18 @@ export default {
height: calc(100vh - 105px); height: calc(100vh - 105px);
.viewpdf-flex { .viewpdf-flex {
display: flex; display: flex;
align-items: center;
font-size: 20px;
color: #fff;
margin-top: 4%;
padding: 20px;
cursor: pointer;
img {
width: 50px;
} }
.left-box { .pdf-title {
margin-left: 10px;
} }
.right-box {
} }
} }
@ -117,9 +173,42 @@ export default {
box-sizing: border-box; box-sizing: border-box;
border: 2px solid #016ae0; border: 2px solid #016ae0;
border-radius: 10px; border-radius: 10px;
padding: 0 1%;
} }
.border-inner { .border-inner {
background-color: rgba(2, 8, 23, 0.1); background-color: rgba(2, 8, 23, 0.1);
} }
} }
::v-deep {
.el-dialog {
display: flex;
flex-direction: column;
margin: 0 !important;
position: fixed;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
max-height: calc(100% - 30px) !important;
max-width: calc(100% - 30px) !important;
background-color: #134094 !important;
border: 1px solid #016ae0;
}
.el-dialog__title {
display: flex;
align-items: center;
font-weight: bold;
color: #fff !important;
}
.el-dialog__body {
overflow-y: auto;
padding-top: 0 !important;
.el-select,
.el-date-editor.el-input {
width: 100% !important;
}
}
.el-dialog__headerbtn .el-dialog__close{
color: #fff !important;
}
}
</style> </style>

@ -1,11 +0,0 @@
<template>
<div class="layout-container">
<router-view />
</div>
</template>
<script>
export default {
name: "Layout",
};
</script>
<style></style>

@ -1,42 +1,18 @@
import Vue from "vue"; import Vue from "vue";
import VueRouter from "vue-router"; import VueRouter from "vue-router";
import Layout from "@/layout";
Vue.use(VueRouter); Vue.use(VueRouter);
export const constantRoutes = [ export const routes = [
{
path: "/redirect",
component: Layout,
children: [
{
path: "/redirect/:path(.*)",
component: () => import("@/views/redirect/index"),
},
],
},
{ {
path: "/", path: "/",
component: () => import("../views/home/index.vue"), component: () => import("../views/home/index.vue"),
}, }
{
path: "/404",
component: () => import("../views/errorPage/404.vue"),
},
{
path: "/500",
component: () => import("@/views/errorPage/500.vue"),
},
]; ];
export const routes = [
...constantRoutes,
// 404页必须放在末尾
{ path: "*", redirect: "/404" },
];
const router = new VueRouter({ const router = new VueRouter({
mode: "hash", mode: "hash",
routes, routes
}); });
export default router; export default router;

@ -5,24 +5,10 @@ Vue.use(Vuex);
export default new Vuex.Store({ export default new Vuex.Store({
state: { state: {
cartNum: 0, //购物车数量
navBarIndex: 0, //默认菜单高亮
}, },
getters: { getters: {
cartNum(state) {
return state.cartNum;
},
navBarIndex(state) {
return state.navBarIndex;
},
}, },
mutations: { mutations: {
CART_NUM: (state, cartNum) => {
state.cartNum = cartNum;
},
NAV_BAR_INDEX: (state, navBarIndex) => {
state.navBarIndex = navBarIndex;
},
}, },
actions: {}, actions: {},
modules: {}, modules: {},

Binary file not shown.

@ -1,6 +1,8 @@
@font-face { @font-face {
font-family: "data_number"; font-family: "data_number";
src: url("./data_number.ttf") format("truetype"); src: url("./data_number.ttf") format("truetype");
font-weight: normal; }
font-style: normal; @font-face {
font-family: "din-regular";
src: url("./DIN-Condensed.ttf") format("truetype");
} }

@ -1,5 +1,5 @@
@charset "UTF-8"; @charset "UTF-8";
@import url(f:\ccgroup\gj-erp-kban-vue\src\styles\font\font.css); @import url(f:\gj-erp-kban-vue\src\styles\font\font.css);
.el-input__inner { .el-input__inner {
background-color: rgba(1, 1, 1, 0) !important; background-color: rgba(1, 1, 1, 0) !important;
border: 2px solid #00c0ef !important; border: 2px solid #00c0ef !important;
@ -7,21 +7,6 @@
font-weight: bold; font-weight: bold;
} }
.table-sum {
width: 96%;
border-collapse: collapse;
color: #ffffff;
}
.table-sum .table-sum-title {
font-size: 14px;
}
.table-sum .table-sum-text {
font-weight: bold;
font-size: 18px;
}
.table-sum tr td { .table-sum tr td {
border: 1px solid #5bc0de; border: 1px solid #5bc0de;
padding-top: 0.3rem; padding-top: 0.3rem;
@ -102,7 +87,7 @@
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
border-radius: 10px; border-radius: 10px;
background: rgba(0, 0, 0, 0.3); background: #fff;
-webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.5); -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.5);
} }

@ -1 +1 @@
@import url(f:\ccgroup\gj-erp-kban-vue\src\styles\font\font.css);.el-input__inner{background-color:rgba(1,1,1,0) !important;border:2px solid #00c0ef !important;color:#72e3ff !important;font-weight:bold}.table-sum{width:96%;border-collapse:collapse;color:#ffffff}.table-sum .table-sum-title{font-size:14px}.table-sum .table-sum-text{font-weight:bold;font-size:18px}.table-sum tr td{border:1px solid #5bc0de;padding-top:0.3rem;padding-bottom:0.3rem;text-indent:10px}.formData-box{width:300px;position:relative;top:10px;display:flex}.formData-box .query-btn{height:22px;background-color:#00c0ef;color:white;border:#00cdff 2px solid;min-width:50px;border-radius:5px;margin-left:20px;text-align:center;font-size:14px;position:relative;top:2px;cursor:pointer}.formData-box .el-form-item__label{color:#fff}.el-select .el-input .el-select__caret{color:#00c0ef !important}.el-table,.el-table tr,.el-table__fixed-right::before,.el-table__fixed::before{background-color:rgba(1,1,1,0) !important}.el-table th,.el-table td{text-align:center !important;height:30px !important;padding:0 !important;color:#fff}.el-table-column--selection .cell{padding-left:0 !important;padding-right:0 !important}.el-table--border{border:none !important}.el-table .el-table__cell{padding:0 !important}.el-table--border::after,.el-table--group::after,.el-table::before{border:none !important;background-color:rgba(1,1,1,0) !important}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{border-radius:10px;background:rgba(0,0,0,0.3);-webkit-box-shadow:inset006pxrgba(0, 0, 0, 0.5)}::-webkit-scrollbar-corner{background:transparent !important} @import url(f:\gj-erp-kban-vue\src\styles\font\font.css);.el-input__inner{background-color:rgba(1,1,1,0) !important;border:2px solid #00c0ef !important;color:#72e3ff !important;font-weight:bold}.table-sum tr td{border:1px solid #5bc0de;padding-top:0.3rem;padding-bottom:0.3rem;text-indent:10px}.formData-box{width:300px;position:relative;top:10px;display:flex}.formData-box .query-btn{height:22px;background-color:#00c0ef;color:white;border:#00cdff 2px solid;min-width:50px;border-radius:5px;margin-left:20px;text-align:center;font-size:14px;position:relative;top:2px;cursor:pointer}.formData-box .el-form-item__label{color:#fff}.el-select .el-input .el-select__caret{color:#00c0ef !important}.el-table,.el-table tr,.el-table__fixed-right::before,.el-table__fixed::before{background-color:rgba(1,1,1,0) !important}.el-table th,.el-table td{text-align:center !important;height:30px !important;padding:0 !important;color:#fff}.el-table-column--selection .cell{padding-left:0 !important;padding-right:0 !important}.el-table--border{border:none !important}.el-table .el-table__cell{padding:0 !important}.el-table--border::after,.el-table--group::after,.el-table::before{border:none !important;background-color:rgba(1,1,1,0) !important}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{border-radius:10px;background:#fff;-webkit-box-shadow:inset006pxrgba(0, 0, 0, 0.5)}::-webkit-scrollbar-corner{background:transparent !important}

@ -5,19 +5,6 @@
color: #72e3ff !important; color: #72e3ff !important;
font-weight: bold; font-weight: bold;
} }
.table-sum {
width: 96%;
// margin-left: 2%;
border-collapse: collapse;
color: #ffffff;
.table-sum-title {
font-size: 14px;
}
.table-sum-text {
font-weight: bold;
font-size: 18px;
}
}
.table-sum tr td { .table-sum tr td {
border: 1px solid #5bc0de; border: 1px solid #5bc0de;
padding-top: 0.3rem; padding-top: 0.3rem;

@ -1,30 +0,0 @@
import CryptoJS from "crypto-js";
// 解密
export function decrypt(word, keyStr) {
keyStr = keyStr || "ylhzabcdefghi066";
var key = CryptoJS.enc.Utf8.parse(keyStr);
var decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
// 加密
export function encrypt(word, keyStr) {
keyStr = keyStr || "ylhzabcdefghi066";
if (!word) return "";
const key = CryptoJS.enc.Utf8.parse(keyStr);
const srcs = CryptoJS.enc.Utf8.parse(word);
const encrypted = CryptoJS.AES.encrypt(srcs, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7,
});
return encrypted.toString();
}

@ -0,0 +1,9 @@
export function hasDot(num) {
// 保留小数点后两位
var result = num.toString().indexOf("."); // 查找是否含有小数点
if (result != -1) {
return num.toString().substring(0, result + 3); //有小数点保留两位小数
} else {
return num;
}
}

@ -1,233 +0,0 @@
<template>
<div class="wscn-http404-container">
<div class="wscn-http404">
<div class="pic-404">
<img class="pic-404__parent" src="@/assets/404_images/404.png" alt="404">
<img class="pic-404__child left" src="@/assets/404_images/404_cloud.png" alt="404">
<img class="pic-404__child mid" src="@/assets/404_images/404_cloud.png" alt="404">
<img class="pic-404__child right" src="@/assets/404_images/404_cloud.png" alt="404">
</div>
<div class="bullshit">
<div class="bullshit__oops">OOPS!</div>
<div class="bullshit__info">~ ~ ~ ~ ~ ~ ~ ~
<!-- <a style="color:#20a0ff" href="https://wallstreetcn.com" target="_blank">wallstreetcn</a> -->
</div>
<div class="bullshit__headline">{{ message }}</div>
<div class="bullshit__info">请您联系管理员或者单击下面的按钮返回主页</div>
<a href="" class="bullshit__return-home" @click="goHome"></a>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Page404',
computed: {
message() {
return '页面错误...'
}
},
methods: {
goHome() {
this.$router.push('/home')
}
}
}
</script>
<style lang="scss" scoped>
.wscn-http404-container{
transform: translate(-50%,-50%);
position: absolute;
top: 40%;
left: 50%;
}
.wscn-http404 {
position: relative;
width: 1200px;
padding: 0 50px;
overflow: hidden;
.pic-404 {
position: relative;
float: left;
width: 600px;
overflow: hidden;
&__parent {
width: 100%;
}
&__child {
position: absolute;
&.left {
width: 80px;
top: 17px;
left: 220px;
opacity: 0;
animation-name: cloudLeft;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
&.mid {
width: 46px;
top: 10px;
left: 420px;
opacity: 0;
animation-name: cloudMid;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1.2s;
}
&.right {
width: 62px;
top: 100px;
left: 500px;
opacity: 0;
animation-name: cloudRight;
animation-duration: 2s;
animation-timing-function: linear;
animation-fill-mode: forwards;
animation-delay: 1s;
}
@keyframes cloudLeft {
0% {
top: 17px;
left: 220px;
opacity: 0;
}
20% {
top: 33px;
left: 188px;
opacity: 1;
}
80% {
top: 81px;
left: 92px;
opacity: 1;
}
100% {
top: 97px;
left: 60px;
opacity: 0;
}
}
@keyframes cloudMid {
0% {
top: 10px;
left: 420px;
opacity: 0;
}
20% {
top: 40px;
left: 360px;
opacity: 1;
}
70% {
top: 130px;
left: 180px;
opacity: 1;
}
100% {
top: 160px;
left: 120px;
opacity: 0;
}
}
@keyframes cloudRight {
0% {
top: 100px;
left: 500px;
opacity: 0;
}
20% {
top: 120px;
left: 460px;
opacity: 1;
}
80% {
top: 180px;
left: 340px;
opacity: 1;
}
100% {
top: 200px;
left: 300px;
opacity: 0;
}
}
}
}
.bullshit {
position: relative;
float: left;
width: 300px;
padding: 30px 0;
overflow: hidden;
&__oops {
font-size: 32px;
font-weight: bold;
line-height: 40px;
color: #1482f0;
opacity: 0;
margin-bottom: 20px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;
}
&__headline {
font-size: 20px;
line-height: 24px;
color: #222;
font-weight: bold;
opacity: 0;
margin-bottom: 10px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;
}
&__info {
font-size: 13px;
line-height: 21px;
color: grey;
opacity: 0;
margin-bottom: 30px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.2s;
animation-fill-mode: forwards;
}
&__return-home {
display: block;
float: left;
width: 110px;
height: 36px;
background: #1482f0;
border-radius: 100px;
text-align: center;
color: #ffffff;
opacity: 0;
font-size: 14px;
line-height: 36px;
cursor: pointer;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>

@ -1,106 +0,0 @@
<template>
<div class="errPage-container">
<el-button icon="el-icon-arrow-left" class="pan-back-btn" @click="back">
返回首页
</el-button>
<el-row class="row-flex">
<el-col :span="12">
<h1 class="text-jumbo text-ginormous">Oops!</h1>
<!-- gif来源<a href="https://zh.airbnb.com/" target="_blank">airbnb</a> 页面 -->
<h2>您没有权限访问该页面</h2>
<!-- <h6>如有不满请联系你领导</h6> -->
<ul class="list-unstyled">
<li>或者你可以去:</li>
<li class="link-type">
<router-link to="/home"> 回首页 </router-link>
</li>
<!-- <li class="link-type">
<a href="https://www.taobao.com/">随便看看</a>
</li> -->
<li>
<a href="#" @click.prevent="dialogVisible = true">点我看图</a>
</li>
</ul>
</el-col>
<el-col :span="12">
<img
:src="errGif"
width="313"
height="428"
alt="Girl has dropped her ice cream."
>
</el-col>
</el-row>
<el-dialog :visible.sync="dialogVisible" title="随便看">
<img :src="ewizardClap" class="pan-img">
</el-dialog>
</div>
</template>
<script>
import errGif from '@/assets/401_images/401.gif'
export default {
name: 'Page401',
data() {
return {
errGif: errGif + '?' + +new Date(),
ewizardClap:
'https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646',
dialogVisible: false
}
},
methods: {
back() {
this.$router.push({ path: '/home' })
}
}
}
</script>
<style lang="scss" scoped>
.errPage-container {
width: 800px;
max-width: 100%;
margin: 0 auto;
padding-top: 100px;
height: 100vh;
overflow: hidden;
.pan-back-btn {
background: #008489;
color: #fff;
border: none !important;
}
.row-flex{
display: flex;
align-items: center;
}
.pan-gif {
margin: 0 auto;
display: block;
}
.pan-img {
display: block;
margin: 0 auto;
width: 100%;
}
.text-jumbo {
font-size: 60px;
font-weight: 700;
color: #484848;
}
.list-unstyled {
font-size: 14px;
li {
padding-bottom: 5px;
}
a {
color: #008489;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
}
}
</style>

@ -4,6 +4,7 @@
<div class="home-header"> <div class="home-header">
<div class="home-header-left"> <div class="home-header-left">
<div v-for="(item, index) in headerLeftList" :key="index"> <div v-for="(item, index) in headerLeftList" :key="index">
<div class="home-header-flex">
<div <div
class="home-header-name" class="home-header-name"
:class="leftActiveIndex == index ? 'home-header-name-active' : ''" :class="leftActiveIndex == index ? 'home-header-name-active' : ''"
@ -11,17 +12,21 @@
> >
{{ item.name }} {{ item.name }}
</div> </div>
<div class="tab-border" v-if="leftActiveIndex == index"></div>
</div>
</div> </div>
</div> </div>
<div class="home-header-right"> <div class="home-header-right">
<div v-for="(item, index) in headerRightList" :key="index"> <div v-for="(item, index) in headerRightList" :key="index">
<div class="home-header-flex">
<div <div
class="home-header-name" class="home-header-name"
:class="rightActiveIndex == index ? 'home-header-name-active' : ''"
@click="headerRightChange(item, index)" @click="headerRightChange(item, index)"
> >
{{ item.name }} {{ item.name }}
</div> </div>
<div class="tab-border" v-if="rightActiveIndex == index"></div>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -88,7 +93,7 @@ export default {
MonthPlan, MonthPlan,
AmphiPosition, AmphiPosition,
Integration, Integration,
ViewPDF ViewPDF,
}, },
data() { data() {
return { return {
@ -121,8 +126,8 @@ export default {
}, },
{ {
id: 7, id: 7,
name:"查看PDF" name: "查看PDF",
} },
], //tabs ], //tabs
leftActiveIndex: 0, leftActiveIndex: 0,
rightActiveIndex: 99, rightActiveIndex: 99,
@ -168,6 +173,12 @@ export default {
justify-content: space-between; justify-content: space-between;
margin-right: 3%; margin-right: 3%;
} }
.home-header-flex {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.home-header-name { .home-header-name {
font-size: 14px; font-size: 14px;
@ -184,7 +195,9 @@ export default {
opacity: 1; opacity: 1;
} }
} }
.home-header-name-active { .tab-border {
width: 80%;
border-radius: 1px;
border-bottom: 4px solid #4b8df8; border-bottom: 4px solid #4b8df8;
} }
} }

@ -1,12 +0,0 @@
<script>
export default {
created() {
const { params, query } = this.$route
const { path } = params
this.$router.replace({ path: '/' + path, query })
},
render: function(h) {
return h() // avoid warning message
}
}
</script>
Loading…
Cancel
Save