chore: sync local DataV boards and assets for standalone repo

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-21 17:00:21 +08:00
parent 08e5773d3e
commit f21bb0f2ea
109 changed files with 15299 additions and 7269 deletions
+4
View File
@@ -19,3 +19,7 @@ yarn-error.log*
*.njsproj
*.sln
*.sw?
debug.log
**/debug.log
+27
View File
@@ -17,6 +17,7 @@
"vue": "^2.6.11",
"vue-awesome": "^4.0.2",
"vue-router": "^3.1.5",
"vue-seamless-scroll": "^1.1.23",
"vuex": "^3.1.2",
"webpack": "^4.23.0",
"webpack-cli": "^3.3.10"
@@ -5103,6 +5104,11 @@
"dev": true,
"license": "MIT"
},
"node_modules/comutils": {
"version": "1.1.19",
"resolved": "https://registry.npmmirror.com/comutils/-/comutils-1.1.19.tgz",
"integrity": "sha512-JxXB67juILiwhdLwOsYyjUqwWEhHdObI0EClOPk+JDtEuTbac59s0pxGpfCBnNNQ5JommifmcMGneW/4Cg7YWw=="
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
@@ -16278,6 +16284,14 @@
"integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ==",
"license": "MIT"
},
"node_modules/vue-seamless-scroll": {
"version": "1.1.23",
"resolved": "https://registry.npmmirror.com/vue-seamless-scroll/-/vue-seamless-scroll-1.1.23.tgz",
"integrity": "sha512-HBjUub8WwsKJzbFCrwKPDrZn4e+SSbkKgwWtjKtfLwesiFGwSsVxP44/Z6d3kpXy94qIFOiflJH6l0/9pj7SGA==",
"dependencies": {
"comutils": "^1.1.9"
}
},
"node_modules/vue-style-loader": {
"version": "4.1.3",
"resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
@@ -21449,6 +21463,11 @@
}
}
},
"comutils": {
"version": "1.1.19",
"resolved": "https://registry.npmmirror.com/comutils/-/comutils-1.1.19.tgz",
"integrity": "sha512-JxXB67juILiwhdLwOsYyjUqwWEhHdObI0EClOPk+JDtEuTbac59s0pxGpfCBnNNQ5JommifmcMGneW/4Cg7YWw=="
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
@@ -29604,6 +29623,14 @@
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz",
"integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ=="
},
"vue-seamless-scroll": {
"version": "1.1.23",
"resolved": "https://registry.npmmirror.com/vue-seamless-scroll/-/vue-seamless-scroll-1.1.23.tgz",
"integrity": "sha512-HBjUub8WwsKJzbFCrwKPDrZn4e+SSbkKgwWtjKtfLwesiFGwSsVxP44/Z6d3kpXy94qIFOiflJH6l0/9pj7SGA==",
"requires": {
"comutils": "^1.1.9"
}
},
"vue-style-loader": {
"version": "4.1.3",
"resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
+1
View File
@@ -17,6 +17,7 @@
"vue": "^2.6.11",
"vue-awesome": "^4.0.2",
"vue-router": "^3.1.5",
"vue-seamless-scroll": "^1.1.23",
"vuex": "^3.1.2",
"webpack": "^4.23.0",
"webpack-cli": "^3.3.10"
+53
View File
@@ -0,0 +1,53 @@
import request from '../utils/request'
//生产任务
export function gettaskList(data) {
return request({
url: '/api/bi/zhusu-factory-data',
method: 'post',
data
})
}
export function getzlList (params) {
return request({
url: '/api/bi/zl-bi-data',
method: 'POST',
type: 'change',
data: params
})
}
export function getmjList (params) {
return request({
url: '/api/bi/mold-manager-data',
method: 'POST',
type: 'change',
data: params
})
}
export function getzzList (params) {
return request({
url: '/api/bi/zuzhuang-factory-data',
method: 'POST',
type: 'change',
data: params
})
}
export function getjcList (data) {
return request({
url: '/api/bi/jichu-factory-data',
method: 'POST',
type: 'change',
data
})
}
export function getsbList (data) {
return request({
url: '/api/bi/equip-manager-data',
method: 'POST',
type: 'change',
data
})
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

+68
View File
@@ -0,0 +1,68 @@
.box {
display: flex;
justify-content: space-between;
align-items: center;
flex-direction: row;
width: 772px;
height: 128px;
margin-top: 10px;
.cell {
width: 193px;
.item {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
margin-left: 30px;
margin-top: 20px;
width: 100%;
.text{
font-size:12px;
}
.num{
font-size: 20px;
margin-bottom:10px;
}
}
}
.jrrk {
background-image: url("@/assets/images/sum-board/jrrk.png");
background-repeat: no-repeat;
background-position: center center;
//background-attachment: fixed;
background-size: 169px 74px;
.num{
color:#1FEEF7;
}
}
.jrck {
background-image: url("@/assets/images/sum-board/jrck.png");
background-repeat: no-repeat;
background-position: center center;
//background-attachment: fixed;
background-size: 169px 74px;
.num{
color:#208DF0;
}
}
.jrfh {
background-image: url("@/assets/images/sum-board/jrfh.png");
background-repeat: no-repeat;
background-position: center center;
//background-attachment: fixed;
background-size: 169px 74px;
.num{
color:#16FFA5;
}
}
.jrsh {
background-image: url("@/assets/images/sum-board/jrsh.png");
background-repeat: no-repeat;
background-position: center center;
//background-attachment: fixed;
background-size: 169px 74px;
.num{
color:#CFD243;
}
}
}
+14
View File
@@ -0,0 +1,14 @@
.container {
width: 100vw;
height: 100%;
line-height: 100px;
background-image: url("../images/sum-board/head.png");
font-size: 45px;
color: #fff;
// text-shadow: 0 0 8px rgba(255, 255, 255, 0.4),
// 0 0 8px rgba(255, 255, 255, 0.1),0 0 8px rgba(255, 255, 255, 0);
//filter: drop-shadow(0 0 10px white) drop-shadow(0 0 20px white) drop-shadow(0 0 30px white);
background-repeat: no-repeat;
background-size: contain;
font-weight: 500;
}
+3 -18
View File
@@ -19,23 +19,18 @@
}
.host-body {
height: 100%;
.dv-dec-10,
.dv-dec-10-s {
width: 33.3%;
height: 5px;
}
.dv-dec-10-s {
transform: rotateY(180deg);
}
.dv-dec-8 {
width: 200px;
height: 50px;
}
.title {
position: relative;
width: 500px;
@@ -44,7 +39,7 @@
background-repeat: no-repeat;
.title-text {
font-size: 35px;
font-size: 24px;
position: absolute;
bottom: 0;
left: 50%;
@@ -65,7 +60,6 @@
.aside-width {
width: 40%;
}
.react-r-s,
.react-l-s {
background-color: #0f1325;
@@ -77,7 +71,6 @@
text-align: right;
width: 500px;
}
font-size: 18px;
width: 300px;
line-height: 50px;
@@ -101,13 +94,10 @@
}
.react-left {
user-select: none;
&.react-l-s {
width: 500px;
text-align: left;
}
font-size: 18px;
width: 300px;
height: 50px;
@@ -133,7 +123,6 @@
}
.body-box {
// height: 100%;
margin-top: 16px;
display: flex;
flex-direction: column;
@@ -141,15 +130,11 @@
//下方区域的布局
.content-box {
display: grid;
grid-template-columns: 2fr 3fr 5fr 3fr 2fr;
grid-template-columns: 3fr 9fr 3fr;
}
// 底部数据
.bottom-box {
margin-top: 10px;
display: grid;
grid-template-columns: repeat(2, 50%);
}
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 568 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

+3
View File
@@ -57,6 +57,9 @@ export default {
// 初始化echart
this.chart = this.$echarts.init(this.$el, 'tdTheme')
this.chart.setOption(this.options, true)
window.addEventListener('resize', function() {
this.chart.resize();
});
}
}
}
+157
View File
@@ -0,0 +1,157 @@
<template>
<div class="grid-progress-bar" :id="domId">
<div
v-for="(item, index) in totalItems"
:key="index"
class="grid-item"
:class="{ completed: index < completedItems }"
:style="{ backgroundColor: getColor(completedItems, index) }"
></div>
</div>
<div class="tip-text">{{ percent }}%</div>
</template>
<script setup>
import { ref, watchEffect, onMounted, onUnmounted } from "vue";
// 示例数据
const props = defineProps({
domId: {
type: String,
default: "progressBar",
require: true,
},
percent: {
type: Number,
default: 0,
},
totalWidth: {
type: String,
default: "80%",
},
gapWidth: {
type: String,
default: "4px",
},
gridWidth: {
type: String,
default: "6.68px",
},
gridHeight: {
type: String,
default: "21px",
},
color: {
type: String,
default: "#4caf50",
},
bgColor: {
type: String,
default: "#ccc",
},
startColor: {
type: String,
//default: "#21564F",
},
endColor: {
type: String,
//default: "#3BFFBA",
},
});
const totalItems = ref(0);
const completedItems = ref(0);
const cacheContainerWidth = ref(0);
const getColor = (total, index) => {
if (total <= index) {
return props.bgColor;
}
if (!props.startColor || !props.endColor) {
return props.color;
}
const totalSteps = total - 1; // 因为是从0到19,共有20个div
const r1 = parseInt(props.startColor.substring(1, 3), 16);
const g1 = parseInt(props.startColor.substring(3, 5), 16);
const b1 = parseInt(props.startColor.substring(5, 7), 16);
const r2 = parseInt(props.endColor.substring(1, 3), 16);
const g2 = parseInt(props.endColor.substring(3, 5), 16);
const b2 = parseInt(props.endColor.substring(5, 7), 16);
const r = Math.round(r1 + ((r2 - r1) * index) / totalSteps).toString(16);
const g = Math.round(g1 + ((g2 - g1) * index) / totalSteps).toString(16);
const b = Math.round(b1 + ((b2 - b1) * index) / totalSteps).toString(16);
return `#${r.padStart(2, "0")}${g.padStart(2, "0")}${b.padStart(2, "0")}`;
};
// const gradientColors = computed(() => {
// const _completedItems = completedItems.value;
// const colors = [];
// for (let i = 0; i < _completedItems; i++) {
// colors.push(getColor(_completedItems, i));
// }
// return colors;
// });
/////
const getTransNumFromCss = (v) => {
return Number(v.replace("px", ""));
};
const setTotalItems = () => {
const div =
(cacheContainerWidth.value - getTransNumFromCss(props.gapWidth)) /
(getTransNumFromCss(props.gapWidth) + getTransNumFromCss(props.gridWidth));
console.log(cacheContainerWidth.value, totalItems.value, "值==---===");
totalItems.value = Math.floor(div);
completedItems.value = Math.floor((totalItems.value * props.percent) / 100);
};
const setContainerWidth = () => {
const dom = document.getElementById(props.domId);
cacheContainerWidth.value = dom.offsetWidth;
setTotalItems();
};
const resizeHandler = () => {
setContainerWidth();
};
const onResize = () => {
window.addEventListener("resize", resizeHandler);
};
const removeResize = () => {
window.removeEventListener("resize", resizeHandler);
};
onMounted(() => {
resizeHandler();
onResize();
});
onUnmounted(() => {
removeResize();
});
</script>
<style scoped>
.grid-progress-bar {
display: inline-flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
gap: v-bind(gapWidth);
width: v-bind(totalWidth);
}
.grid-item {
width: v-bind(gridWidth); /* 固定宽度 */
height: v-bind(gridHeight); /* 固定高度 */
background-color: v-bind(bgColor);
}
.completed {
background-color: v-bind(color);
}
.tip-text {
display: inline-block;
margin-left: 10px;
font-size: 20px;
height: v-bind(gridHeight);
line-height: v-bind(gridHeight);
}
</style>
+43
View File
@@ -0,0 +1,43 @@
<script setup>
import { ref } from 'vue'
defineProps({
msg: String,
})
const count = ref(0)
</script>
<template>
<h1>{{ msg }}</h1>
<div class="card">
<button type="button" @click="count++">count is {{ count }}</button>
<p>
Edit
<code>components/HelloWorld.vue</code> to test HMR
</p>
</div>
<p>
Check out
<a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"
>create-vue</a
>, the official Vue + Vite starter
</p>
<p>
Learn more about IDE Support for Vue in the
<a
href="https://vuejs.org/guide/scaling-up/tooling.html#ide-support"
target="_blank"
>Vue Docs Scaling up Guide</a
>.
</p>
<p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
</template>
<style scoped>
.read-the-docs {
color: #888;
}
</style>
+189
View File
@@ -0,0 +1,189 @@
<template>
<div class="circle-container" :style="containerStyle">
<svg :width="size" :height="size" viewBox="0 0 100 100" class="circle-svg">
<defs>
<linearGradient v-if="isGradient" :id="gradientId">
<stop v-for="(colorStop, index) in gradientColors" :key="index" :offset="colorStop.offset" :stop-color="colorStop.color" />
</linearGradient>
</defs>
<!-- 叠加的内部圆环 -->
<circle
v-if="glowType === 'outer'"
cx="50"
cy="50"
r="40"
:stroke="strokeColor"
:stroke-width="innerCircleThickness"
fill="none"
stroke-linecap="round"
class="circle-inner"
/>
<!-- 主圆环,应用发光效果 -->
<circle
cx="50"
cy="50"
r="40"
:stroke="strokeColor"
:stroke-width="thickness"
fill="none"
stroke-linecap="round"
:stroke-dasharray="circumference"
:stroke-dashoffset="dashOffset"
class="circle-main"
:style="circleGlowStyle"
/>
<!-- 中间文字 -->
<text x="50" y="50" text-anchor="middle" dominant-baseline="middle" class="circle-text">
{{ text }}
</text>
</svg>
</div>
</template>
<script>
import { computed, defineComponent } from 'vue';
export default defineComponent({
name: 'CustomCircle',
props: {
startAngle: {
type: Number,
default: -150,
validator: value => value >= -360 && value <= 360
},
endAngle: {
type: Number,
default: 30,
validator: value => value >= -360 && value <= 360
},
thickness: {
type: Number,
default: 10
},
color: {
type: [String, Object],
required: true
},
text: {
type: String,
default: ''
},
glow: {
type: Boolean,
default: false
},
glowType: {
type: String, // outer, both
default: 'outer'
},
size: {
type: Number,
default: 200
},
},
setup(props) {
const gradientId = 'gradient-' + Math.random().toString(36).substring(7);
const isGradient = computed(() => typeof props.color === 'object');
const gradientColors = computed(() => props.color);
const circumference = 2 * Math.PI * 40;
// 计算起始角度和结束角度的偏移和弧长
const dashOffset = computed(() => {
const totalAngle = props.endAngle - props.startAngle;
// 圆环的起始角度转换为偏移量,负角度表示逆时针
const startOffset = (props.startAngle / 360) * circumference;
const endOffset = (totalAngle / 360) * circumference;
return -startOffset;
});
const dashArray = computed(() => {
const totalAngle = props.endAngle - props.startAngle;
// 圆环显示的弧长
const arcLength = Math.abs((totalAngle / 360) * circumference);
return `${arcLength} ${circumference}`;
});
const strokeColor = computed(() => {
return isGradient.value ? `url(#${gradientId})` : props.color;
});
const backgroundStroke = 'rgba(0, 0, 0, 0.1)'; // 圆环的背景颜色,可以根据需要修改
const containerStyle = computed(() => ({
width: `${props.size}px`,
height: `${props.size}px`,
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
borderRadius: '50%',
}));
// 内部圆环的粗细,保证叠加后整体等于传入的 thickness
const innerCircleThickness = computed(() => props.thickness * 0.5);
// 发光效果的样式,应用到圆环本身
const circleGlowStyle = computed(() => {
if (!props.glow) {
return {};
}
const glowColor = 'rgba(255, 0, 0, 0.8)';
const outerGlow = `drop-shadow(0 0 10px ${glowColor})`;
// 根据类型返回对应的发光效果
switch (props.glowType) {
case 'both':
return { filter: `${outerGlow} drop-shadow(0 0 5px ${glowColor})` };
default: // outer
return { filter: outerGlow };
}
});
return {
circumference,
dashOffset,
dashArray,
strokeColor,
gradientId,
isGradient,
gradientColors,
backgroundStroke,
containerStyle,
innerCircleThickness,
circleGlowStyle,
};
},
});
</script>
<style scoped>
.circle-svg {
transform: rotate(-90deg); /* 使起始角度从顶部开始 */
}
.circle-inner {
opacity: 1; /* 内部圆环需要完全不透明 */
}
.circle-main {
transition: stroke-dashoffset 0.5s ease;
stroke-dasharray: var(--dasharray);
}
.circle-text {
font-size: 14px;
fill: black;
}
.circle-container {
position: relative;
}
</style>
+80
View File
@@ -0,0 +1,80 @@
<template>
<div
class="ScaleBox"
ref="ScaleBox"
:style="{
width: width + 'px',
height: height + 'px',
}"
>
<slot></slot>
</div>
</template>
<script>
export default {
name: "ScaleBox",
props: {},
data() {
return {
scale: 0,
width: 1920,
height: 1080,
};
},
mounted() {
this.setScale();
window.addEventListener("resize", this.debounce(this.setScale));
},
methods: {
getScale() {
// 固定好16:9的宽高比,计算出最合适的缩放比
const { width, height } = this;
const wh = window.innerHeight / height;
const ww = window.innerWidth / width;
console.log(ww < wh ? ww : wh);
return ww < wh ? ww : wh;
},
setScale() {
// 获取到缩放比例,设置它
this.scale = this.getScale();
if (this.$refs.ScaleBox) {
this.$refs.ScaleBox.style.setProperty("--scale", this.scale);
}
},
debounce(fn, delay) {
const delays = delay || 500;
let timer;
return function () {
const th = this;
const args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
timer = null;
fn.apply(th, args);
}, delays);
};
},
},
};
</script>
<style lang="scss">
#ScaleBox {
--scale: 1;
}
.ScaleBox {
position: absolute;
transform: scale(var(--scale)) translate(-50%, -50%);
display: flex;
flex-direction: column;
transform-origin: 0 0;
left: 50%;
top: 50%;
transition: 0.3s;
z-index: 999;
// background: rgba(255, 0, 0, 0.3);
}
</style>
+72
View File
@@ -0,0 +1,72 @@
<template>
<!-- <div ref="domBox" :style="{ width, height }"> -->
<div ref="domRef" :style="{ width, height }" />
<!-- </div> -->
</template>
<script setup>
import { watch, ref, onMounted, onUnmounted, nextTick } from "vue";
import echarts from "@/utils/echarts/index";
const props = defineProps({
width: {
type: String,
default: "100%",
},
height: {
type: String,
default: "100%",
},
options: {
type: Object,
default: null,
},
});
const domRef = ref(null);
const domBox = ref(null);
let chartObj = null;
onMounted(() => {
if (!domRef.value) return;
init();
if (props.options) drawOption();
onResize();
});
onUnmounted(() => {
if (chartObj) {
chartObj.dispose();
chartObj = null;
removeResize();
}
});
watch(
() => props.options,
() => drawOption()
);
// 初始化
const init = () => {
chartObj = echarts.init(domRef.value);
};
const drawOption = () => {
if (!chartObj) return;
chartObj.setOption(props.options);
chartObj.resize(); //调用自适应方法
};
const resizeHandler = () => {
nextTick(() => {
console.log("执行尺寸重置");
chartObj && chartObj.resize(); //调用自适应方法
});
};
const onResize = () => {
window.addEventListener("resize", resizeHandler);
};
const removeResize = () => {
window.removeEventListener("resize", resizeHandler);
};
</script>
@@ -4,7 +4,7 @@
<Echart
:options="options"
id="bottomLeftChart"
height="480px"
height="200px"
width="100%"
></Echart>
</div>
@@ -31,6 +31,20 @@ export default {
cdata: {
handler (newData) {
this.options = {
title: {
show: true, // 是否显示标题,默认为true
text: newData.title, // 主标题文本
x: 'center', // 标题水平位置,默认为'left'
y: 'top', // 标题垂直位置,默认为'top'
textStyle: {
color: '#fff', // 主标题文字颜色
fontStyle: 'normal', // 主标题文字风格
fontWeight: 'bold', // 主标题文字粗细
fontFamily: 'Arial, Verdana, sans-serif', // 主标题文字字体
fontSize: 18 // 主标题文字大小
},
},
tooltip: {
trigger: "axis",
backgroundColor: "rgba(255,255,255,0.1)",
@@ -43,23 +57,31 @@ export default {
}
},
legend: {
data: ["已贯通", "计划贯通", "贯通率"],
// data: ["已贯通", "计划贯通", "贯通率"],
textStyle: {
color: "#B4B4B4"
},
top: "0%"
},
grid: {
top:'24%',
x: "8%",
width: "88%",
bottom:'28%',
y: "4%"
},
xAxis: {
data: newData.category,
data: newData.chart_x,
axisLine: {
lineStyle: {
color: "#B4B4B4"
color: "#0735a2"
}
},
axisLabel: {
interval:0,
rotate:20,
fontSize:10,
fontFamily: 'Microsoft YaHei'
},
axisTick: {
show: false
@@ -67,22 +89,16 @@ export default {
},
yAxis: [
{
splitLine: { show: false },
name:'%',
axisLine: {
lineStyle: {
color: "#B4B4B4"
}
show: false, // 是否显示坐标轴轴线
},
axisLabel: {
formatter: "{value} "
}
},
{
splitLine: { show: false },
axisLine: {
splitLine: {
show: true, // 是否显示网格线
lineStyle: {
color: "#B4B4B4"
color: '#0735a2', // 网格线颜色
width: 1, // 网格线的宽度
type: 'dashed' // 网格线类型
}
},
axisLabel: {
@@ -90,24 +106,22 @@ export default {
}
}
],
dataZoom: [{
show: false,
type: 'slider',
realtime: true,
startValue: newData.start,
endValue: newData.end,
xAxisIndex: [0],
bottom: '10',
left: '30',
height: 10,
borderColor: 'rgba(0,0,0,0)',
textStyle: { color: '#05D5FF' }
}],
series: [
{
name: "贯通率",
type: "line",
smooth: true,
showAllSymbol: true,
symbol: "emptyCircle",
symbolSize: 8,
yAxisIndex: 1,
itemStyle: {
normal: {
color: "#F02FC2"
}
},
data: newData.rateData
},
{
name: "已贯通",
name: "",
type: "bar",
barWidth: 10,
itemStyle: {
@@ -119,26 +133,17 @@ export default {
])
}
},
data: newData.barData
},
{
name: "计划贯通",
type: "bar",
barGap: "-100%",
barWidth: 10,
itemStyle: {
normal: {
barBorderRadius: 5,
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: "rgba(156,107,211,0.8)" },
{ offset: 0.2, color: "rgba(156,107,211,0.5)" },
{ offset: 1, color: "rgba(156,107,211,0.2)" }
])
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'pink',//字体颜色
fontSize: 10//字体大小
}
},
z: -12,
data: newData.lineData
}
data: newData.chart_y
},
]
}
},
@@ -7,116 +7,12 @@
<script>
import Chart from './chart.vue'
export default {
props:[
'cdata'
],
data () {
return {
cdata: {
category: [
"市区",
"万州",
"江北",
"南岸",
"北碚",
"綦南",
"长寿",
"永川",
"璧山",
"江津",
"城口",
"大足",
"垫江",
"丰都",
"奉节",
"合川",
"江津区",
"开州",
"南川",
"彭水",
"黔江",
"石柱",
"铜梁",
"潼南",
"巫山",
"巫溪",
"武隆",
"秀山",
"酉阳",
"云阳",
"忠县",
"川东",
"检修"
],
lineData: [
18092,
20728,
24045,
28348,
32808,
36097,
39867,
44715,
48444,
50415,
56061,
62677,
59521,
67560,
18092,
20728,
24045,
28348,
32808,
36097,
39867,
44715,
48444,
50415,
36097,
39867,
44715,
48444,
50415,
50061,
32677,
49521,
32808
],
barData: [
4600,
5000,
5500,
6500,
7500,
8500,
9900,
12500,
14000,
21500,
23200,
24450,
25250,
33300,
4600,
5000,
5500,
6500,
7500,
8500,
9900,
22500,
14000,
21500,
8500,
9900,
12500,
14000,
21500,
23200,
24450,
25250,
7500
],
rateData: []
}
};
},
components: {
@@ -128,10 +24,10 @@ export default {
methods: {
// 根据自己的业务情况修改
setData () {
for (let i = 0; i < this.cdata.barData.length -1; i++) {
let rate = this.cdata.barData[i] / this.cdata.lineData[i];
this.cdata.rateData.push(rate.toFixed(2));
}
// for (let i = 0; i < this.cdata.barData.length -1; i++) {
// let rate = this.cdata.barData[i] / this.cdata.lineData[i];
// this.cdata.rateData.push(rate.toFixed(2));
// }
},
}
};
@@ -0,0 +1,153 @@
<template>
<div>
<!-- 年度开工率 -->
<Echart
:options="options"
id="bottomLeftChart"
height="160px"
width="100%"
></Echart>
</div>
</template>
<script>
import Echart from '@/common/echart'
export default {
data () {
return {
options: {},
};
},
components: {
Echart,
},
props: {
cdata: {
type: Object,
default: () => ({})
},
},
watch: {
cdata: {
handler (newData) {
this.options = {
title: {
show: true, // 是否显示标题,默认为true
text: newData.title, // 主标题文本
x: 'center', // 标题水平位置,默认为'left'
y: 'top', // 标题垂直位置,默认为'top'
textStyle: {
color: '#fff', // 主标题文字颜色
fontStyle: 'normal', // 主标题文字风格
fontWeight: 'bold', // 主标题文字粗细
fontFamily: 'Arial, Verdana, sans-serif', // 主标题文字字体
fontSize: 18 // 主标题文字大小
},
},
tooltip: {
trigger: "axis",
backgroundColor: "rgba(255,255,255,0.1)",
axisPointer: {
type: "shadow",
label: {
show: true,
backgroundColor: "#7B7DDC"
}
}
},
legend: {
// data: ["已贯通", "计划贯通", "贯通率"],
textStyle: {
color: "#B4B4B4"
},
top: "0%"
},
grid: {
top:'24%',
x: "8%",
width: "88%",
y: "4%"
},
xAxis: {
data: newData.chart_x,
axisLine: {
lineStyle: {
color: "#0735a2"
}
},
axisLabel: {
interval:0,
rotate:20
},
axisTick: {
show: false
}
},
yAxis: [
{
name:'%',
axisLine: {
show: false, // 是否显示坐标轴轴线
},
splitLine: {
show: true, // 是否显示网格线
lineStyle: {
color: '#0735a2', // 网格线颜色
width: 1, // 网格线的宽度
type: 'dashed' // 网格线类型
}
},
axisLabel: {
formatter: "{value}"
}
}
],
dataZoom: [{
show: false,
type: 'slider',
realtime: true,
startValue: newData.start,
endValue: newData.end,
xAxisIndex: [0],
bottom: '10',
left: '30',
height: 10,
borderColor: 'rgba(0,0,0,0)',
textStyle: { color: '#05D5FF' }
}],
series: [
{
name: "",
type: "bar",
barWidth: 10,
itemStyle: {
normal: {
barBorderRadius: 5,
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: "#956FD4" },
{ offset: 1, color: "#3EACE5" }
])
}
},
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'pink',//字体颜色
fontSize: 10//字体大小
}
},
data: newData.chart_y
},
]
}
},
immediate: true,
deep: true
},
},
}
</script>
@@ -0,0 +1,37 @@
<template>
<div>
<Chart :cdata="cdata" />
</div>
</template>
<script>
import Chart from './chart.vue'
export default {
props:[
'cdata'
],
data () {
return {
};
},
components: {
Chart,
},
mounted () {
this.setData();
},
methods: {
// 根据自己的业务情况修改
setData () {
// for (let i = 0; i < this.cdata.barData.length -1; i++) {
// let rate = this.cdata.barData[i] / this.cdata.lineData[i];
// this.cdata.rateData.push(rate.toFixed(2));
// }
},
}
};
</script>
<style lang="scss" scoped>
</style>
@@ -0,0 +1,153 @@
<template>
<div>
<!-- 年度开工率 -->
<Echart
:options="options"
id="bottomLeftChart"
height="200px"
width="100%"
></Echart>
</div>
</template>
<script>
import Echart from '@/common/echart'
export default {
data () {
return {
options: {},
};
},
components: {
Echart,
},
props: {
cdata: {
type: Object,
default: () => ({})
},
},
watch: {
cdata: {
handler (newData) {
this.options = {
title: {
show: true, // 是否显示标题,默认为true
text: newData.title, // 主标题文本
x: 'center', // 标题水平位置,默认为'left'
y: 'top', // 标题垂直位置,默认为'top'
textStyle: {
color: '#fff', // 主标题文字颜色
fontStyle: 'normal', // 主标题文字风格
fontWeight: 'bold', // 主标题文字粗细
fontFamily: 'Arial, Verdana, sans-serif', // 主标题文字字体
fontSize: 18 // 主标题文字大小
},
},
tooltip: {
trigger: "axis",
backgroundColor: "rgba(255,255,255,0.1)",
axisPointer: {
type: "shadow",
label: {
show: true,
backgroundColor: "#7B7DDC"
}
}
},
legend: {
// data: ["已贯通", "计划贯通", "贯通率"],
textStyle: {
color: "#B4B4B4"
},
top: "0%"
},
grid: {
top:'24%',
x: "12%",
width: "88%",
y: "4%"
},
xAxis: {
data: newData.chart_x,
axisLine: {
lineStyle: {
color: "#0735a2"
}
},
axisLabel: {
interval:0,
rotate:20,
fontSize:5
},
axisTick: {
show: false
}
},
yAxis: [
{
name:'套',
axisLine: {
show: false, // 是否显示坐标轴轴线
},
splitLine: {
show: true, // 是否显示网格线
lineStyle: {
color: '#0735a2', // 网格线颜色
width: 1, // 网格线的宽度
type: 'dashed' // 网格线类型
}
},
axisLabel: {
formatter: "{value}"
}
}
],
dataZoom: [{
show: false,
type: 'slider',
realtime: true,
startValue: newData.start,
endValue: newData.end,
xAxisIndex: [0],
bottom: '10',
left: '30',
height: 10,
borderColor: 'rgba(0,0,0,0)',
textStyle: { color: '#05D5FF' }
}],
series: [
{
name: "",
type: "bar",
barWidth: 10,
itemStyle: {
normal: {
barBorderRadius: 5,
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: "#956FD4" },
{ offset: 1, color: "#3EACE5" }
])
}
},
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'pink',//字体颜色
fontSize: 10//字体大小
}
},
data: newData.chart_y
},
]
}
},
immediate: true,
deep: true
},
},
}
</script>
@@ -0,0 +1,37 @@
<template>
<div>
<Chart :cdata="cdata" />
</div>
</template>
<script>
import Chart from './chart.vue'
export default {
props:[
'cdata'
],
data () {
return {
};
},
components: {
Chart,
},
mounted () {
this.setData();
},
methods: {
// 根据自己的业务情况修改
setData () {
// for (let i = 0; i < this.cdata.barData.length -1; i++) {
// let rate = this.cdata.barData[i] / this.cdata.lineData[i];
// this.cdata.rateData.push(rate.toFixed(2));
// }
},
}
};
</script>
<style lang="scss" scoped>
</style>
@@ -0,0 +1,173 @@
<template>
<div>
<!-- 年度开工率 -->
<Echart
:options="options"
id="bottomLeftChart"
height="240px"
width="100%"
></Echart>
</div>
</template>
<script>
import Echart from '@/common/echart'
export default {
data () {
return {
options: {},
};
},
components: {
Echart,
},
props: {
cdata: {
type: Object,
default: () => ({})
},
},
watch: {
cdata: {
handler (newData) {
let showlegend=false
if(newData.chart_y2){
showlegend=true
}
this.options = {
title: {
show: true, // 是否显示标题,默认为true
text: newData.title, // 主标题文本
x: 'center', // 标题水平位置,默认为'left'
y: 'top', // 标题垂直位置,默认为'top'
textStyle: {
color: '#fff', // 主标题文字颜色
fontStyle: 'normal', // 主标题文字风格
fontWeight: 'bold', // 主标题文字粗细
fontFamily: 'Arial, Verdana, sans-serif', // 主标题文字字体
fontSize: 18 // 主标题文字大小
},
},
tooltip: {
trigger: "axis",
backgroundColor: "rgba(255,255,255,0.1)",
axisPointer: {
type: "shadow",
label: {
show: true,
backgroundColor: "#7B7DDC"
}
}
},
legend: {
show: showlegend, // 启用图例
left: 'right', // 设置图例位置为居中
top: '8%', // 设置图例顶部对齐
textStyle: { // 设置图例文字样式
color: '#fff',
fontSize: 14,
fontFamily: 'sans-serif'
}
},
grid: {
top:'24%',
x: "8%",
width: "88%",
y: "4%"
},
xAxis: {
data: newData.chart_x,
axisLine: {
lineStyle: {
color: "#0735a2"
}
},
axisLabel: {
interval:0,
rotate:20
},
axisTick: {
show: false
}
},
yAxis: [
{
name:'',
// splitLine: { show: false },
axisLine: {
show: false, // 是否显示坐标轴轴线
},
splitLine: {
show: true, // 是否显示网格线
lineStyle: {
color: '#0735a2', // 网格线颜色
width: 1, // 网格线的宽度
type: 'dashed' // 网格线类型
}
},
axisLabel: {
formatter: "{value}"
}
}
],
dataZoom: [{
show: false,
type: 'slider',
realtime: true,
startValue: newData.start,
endValue: newData.end,
xAxisIndex: [0],
bottom: '10',
left: '30',
height: 10,
borderColor: 'rgba(0,0,0,0)',
textStyle: { color: '#05D5FF' }
}],
series: [
{
name: "工时",
type: "bar",
barWidth: 10,
itemStyle: {
normal: {
barBorderRadius: 5,
color: new this.$echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: "#956FD4" },
{ offset: 1, color: "#3EACE5" }
])
}
},
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'pink',//字体颜色
fontSize: 10//字体大小
}
},
data: newData.chart_y
},
{
name:'次数',
data: newData.chart_y2,
type: 'line',
label: {
show: true, //开启显示
position: 'left', //在上方显示
textStyle: { //数值样式
color: '#fff',//字体颜色
fontSize: 10//字体大小
}
},
}
]
}
},
immediate: true,
deep: true
},
},
}
</script>
@@ -0,0 +1,37 @@
<template>
<div>
<Chart :cdata="cdata" />
</div>
</template>
<script>
import Chart from './chart.vue'
export default {
props:[
'cdata'
],
data () {
return {
};
},
components: {
Chart,
},
mounted () {
this.setData();
},
methods: {
// 根据自己的业务情况修改
setData () {
// for (let i = 0; i < this.cdata.barData.length -1; i++) {
// let rate = this.cdata.barData[i] / this.cdata.lineData[i];
// this.cdata.rateData.push(rate.toFixed(2));
// }
},
}
};
</script>
<style lang="scss" scoped>
</style>
@@ -4,8 +4,8 @@
<Echart
:options="options"
:id="id"
height="100px"
width="100px"
height="150px"
width="100%"
></Echart>
</div>
</template>
@@ -59,7 +59,7 @@ export default {
y: "center",
textStyle: {
color: this.colorObj.textStyle,
fontSize: 16
fontSize: 25
}
},
series: [
@@ -71,7 +71,8 @@ export default {
color: this.colorObj.series.color,
label: {
normal: {
show: false
show: false,
}
},
data: [
@@ -0,0 +1,104 @@
<template>
<div>
<!-- 通过率/达标率 -->
<Echart
:options="options"
:id="id"
height="150px"
width="100%"
></Echart>
</div>
</template>
<script>
import Echart from '@/common/echart'
export default {
data () {
return {
options: {},
};
},
components: {
Echart,
},
props: {
id: {
type: String,
required: true,
default: "chartRate"
},
tips: {
type: Number,
required: true,
default: 50
},
colorObj: {
type: Object,
default: function () {
return {
textStyle: "#3fc0fb",
series: {
color: ["#00bcd44a", "transparent"],
dataColor: {
normal: "#03a9f4",
shadowColor: "#97e2f5"
}
}
};
}
}
},
watch: {
// tips 是会变更的数据,所以进行监听
tips: {
handler (newData) {
this.options = {
title:{
text: newData * 1 ,
x: "center",
y: "center",
textStyle: {
color: this.colorObj.textStyle,
fontSize: 25
}
},
series: [
{
type: "pie",
radius: ["75%", "80%"],
center: ["50%", "50%"],
hoverAnimation: false,
color: this.colorObj.series.color,
label: {
normal: {
show: false
}
},
data: [
{
value: newData,
itemStyle: {
normal: {
color: this.colorObj.series.dataColor.normal,
shadowBlur: 10,
shadowColor: this.colorObj.series.dataColor.shadowColor
}
}
},
{
value: 100 - newData
}
]
}
]
}
},
immediate: true,
deep: true
}
}
};
</script>
<style lang="scss" scoped>
</style>
@@ -3,8 +3,8 @@
<Echart
:options="options"
id="centreLeft1Chart"
height="220px"
width="260px"
height="350px"
width="300px"
></Echart>
</div>
</template>
@@ -30,45 +30,46 @@ export default {
cdata: {
handler (newData) {
this.options ={
color: [
"#37a2da",
"#32c5e9",
"#9fe6b8",
"#ffdb5c",
"#ff9f7f",
"#fb7293",
"#e7bcf3",
"#8378ea"
],
title: {
left: 'center'
},
tooltip: {
trigger: "item",
formatter: "{a} <br/>{b} : {c} ({d}%)"
trigger: 'item'
},
toolbox: {
show: true
},
calculable: true,
legend: {
orient: "horizontal",
icon: "circle",
bottom: 0,
x: "center",
data: newData.xData,
textStyle: {
color: "#fff"
}
orient: 'vertical',
right: 0,
top: 0,
},
series: [
{
name: "通过率统计",
type: "pie",
radius: [10, 50],
roseType: "area",
center: ["50%", "40%"],
data: newData.seriesData
name: '',
type: 'pie',
radius: '50%',
center: ['50%', '50%'],
data: newData.data,
itemStyle: {
normal: {
label: {
show: true,
formatter: '{b} : ({c})'
},
labelLine: {
show: true
}
}
},
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
}
},
immediate: true,
deep: true
@@ -1,25 +1,18 @@
<template>
<div>
<Chart :cdata="cdata" />
<Chart :cdata="piedata" />
</div>
</template>
<script>
import Chart from './chart.vue';
export default {
props:[
'piedata'
],
data () {
return {
cdata: {
xData: ["data1", "data2", "data3", "data4", "data5", "data6"],
seriesData: [
{ value: 10, name: "data1" },
{ value: 5, name: "data2" },
{ value: 15, name: "data3" },
{ value: 25, name: "data4" },
{ value: 20, name: "data5" },
{ value: 35, name: "data6" }
]
}
}
},
components: {
@@ -3,8 +3,8 @@
<Echart
:options="options"
id="centreRight2Chart1"
height="200px"
width="260px"
height="230px"
:width="cdata.width"
></Echart>
</div>
</template>
@@ -36,91 +36,112 @@ export default {
opacity: 0.5
}
};
this.options = {
radar: {
indicator: newData.indicatorData,
shape: "circle",
splitNumber: 5,
radius: ["0%", "65%"],
name: {
textStyle: {
color: "rgb(238, 197, 102)"
let showlegend=false
if(newData.chart_y2){
showlegend=true
}
this.options = {
title: {
show: true, // 是否显示标题,默认为true
text: newData.title, // 主标题文本
x: 'center', // 标题水平位置,默认为'left'
y: 'top', // 标题垂直位置,默认为'top'
textStyle: {
color: '#fff', // 主标题文字颜色
fontStyle: 'normal', // 主标题文字风格
fontWeight: 'bold', // 主标题文字粗细
fontFamily: 'Arial, Verdana, sans-serif', // 主标题文字字体
fontSize: 18 // 主标题文字大小
},
},
grid: {
top:'24%',
x: "8%",
width: "88%",
y: "4%"
},
legend: {
show: showlegend, // 启用图例
left: 'right', // 设置图例位置为居中
top: 'top', // 设置图例顶部对齐
textStyle: { // 设置图例文字样式
color: '#fff',
fontSize: 14,
fontFamily: 'sans-serif'
}
},
xAxis: {
type: 'category',
data: newData.chart_x,
axisLine: {
show: true, // 是否显示坐标轴轴线
lineStyle: {
color: '#0735a2', // 线的颜色
width: 2, // 线的宽度
type: 'solid' // 线的类型
}
},
},
yAxis: {
type: 'value',
// name: '单位:元',
axisLine: {
show: false, // 是否显示坐标轴轴线
},
splitLine: {
show: true, // 是否显示网格线
lineStyle: {
color: [
"rgba(238, 197, 102, 0.1)",
"rgba(238, 197, 102, 0.2)",
"rgba(238, 197, 102, 0.4)",
"rgba(238, 197, 102, 0.6)",
"rgba(238, 197, 102, 0.8)",
"rgba(238, 197, 102, 1)"
].reverse()
}
},
splitArea: {
show: false
},
axisLine: {
lineStyle: {
color: "rgba(238, 197, 102, 0.5)"
color: '#0735a2', // 网格线颜色
width: 1, // 网格线的宽度
type: 'dashed' // 网格线类型
}
}
},
series: [
{
name: "北京",
type: "radar",
lineStyle: lineStyle,
data: newData.dataBJ,
symbol: "none",
itemStyle: {
normal: {
color: "#F9713C"
name:'工时',
data: newData.chart_y,
type: 'bar',
barWidth: '30%',
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: 'pink',//字体颜色
fontSize: 10//字体大小
}
},
areaStyle: {
normal: {
opacity: 0.1
itemStyle: {
color: {
type: 'linear',
x: 0, // 右
y: 0, // 下
x2: 0, // 左
y2: 1, // 上
colorStops: [
{ offset: 0, color: 'pink' }, // 0% 处的颜色
{ offset: 0.7, color: '#2378f7' }, // 70% 处的颜色
{ offset: 1, color: '#83bff6' } // 100% 处的颜色
]
}
}
},
{
name: "上海",
type: "radar",
lineStyle: lineStyle,
data: newData.dataSH,
symbol: "none",
itemStyle: {
normal: {
color: "#B3E4A1"
name:'次数',
data: newData.chart_y2,
type: 'line',
label: {
show: true, //开启显示
position: 'left', //在上方显示
textStyle: { //数值样式
color: '#fff',//字体颜色
fontSize: 10//字体大小
}
},
areaStyle: {
normal: {
opacity: 0.05
}
}
},
{
name: "广州",
type: "radar",
lineStyle: lineStyle,
data: newData.dataGZ,
symbol: "none",
itemStyle: {
normal: {
color: "rgb(238, 197, 102)"
}
},
areaStyle: {
normal: {
opacity: 0.05
}
}
} //end
]
}
},
@@ -7,45 +7,12 @@
<script>
import Chart from './chart.vue';
export default {
props:[
'cdata'
],
data () {
return {
cdata: {
indicatorData: [
{ name: "data1", max: 300 },
{ name: "data2", max: 250 },
{ name: "data3", max: 300 },
{ name: "data4", max: 5},
{ name: "data5", max: 200 },
{ name: "data6", max: 100 }
],
dataBJ: [
[94, 69, 114, 2.08, 73, 39, 22],
[99, 73, 110, 2.43, 76, 48, 23],
[31, 12, 30, 0.5, 32, 16, 24],
[42, 27, 43, 1, 53, 22, 25],
[154, 117, 157, 3.05, 92, 58, 26],
[234, 185, 230, 4.09, 123, 69, 27],
[160, 120, 186, 2.77, 91, 50, 28]
],
dataGZ: [
[84, 94, 140, 2.238, 68, 18, 22],
[93, 77, 104, 1.165, 53, 7, 23],
[99, 130, 227, 3.97, 55, 15, 24],
[146, 84, 139, 1.094, 40, 17, 25],
[113, 108, 137, 1.481, 48, 15, 26],
[81, 48, 62, 1.619, 26, 3, 27],
[56, 48, 68, 1.336, 37, 9, 28]
],
dataSH: [
[91, 45, 125, 0.82, 34, 23, 1],
[65, 27, 78, 0.86, 45, 29, 2],
[83, 60, 84, 1.09, 73, 27, 3],
[109, 81, 121, 1.28, 68, 51, 4],
[106, 77, 114, 1.07, 55, 51, 5],
[109, 81, 121, 1.28, 68, 51, 6],
[106, 77, 114, 1.07, 55, 51, 7]
]
}
}
},
components: {
+27 -1
View File
@@ -7,7 +7,33 @@ const routes = [{
path: '/',
name: 'index',
component: () => import('../views/index.vue')
}]
},
{
path: '/jc',
name: 'index',
component: () => import('../views/jcindex.vue')
},
{
path: '/mj',
name: 'index',
component: () => import('../views/mjindex.vue')
},
{
path: '/zl',
name: 'index',
component: () => import('../views/zlindex.vue')
},
{
path: '/zz',
name: 'index',
component: () => import('../views/zzindex.vue')
},
{
path: '/sb',
name: 'index',
component: () => import('../views/shebei.vue')
}
]
const router = new VueRouter({
routes
})
+5
View File
@@ -0,0 +1,5 @@
// 注册自定义图形
import { registerShape as registerShapeSolidBar } from "./solidBar";
export const registerCustomShape = (echarts) => {
registerShapeSolidBar(echarts);
};
+306
View File
@@ -0,0 +1,306 @@
// 立体柱状图 自定义图形
import echarts from "@/echarts/index";
// 注册图形元素
export const registerShape = (echarts) => {
// 定义柱状图左侧图形元素
const leftRect = echarts.graphic.extendShape({
shape: {
x: 0,
y: 0,
width: 10, //柱状图宽
zWidth: 8, //阴影折角宽
zHeight: 4, //阴影折角高
},
buildPath: function (ctx, shape) {
const api = shape.api;
const xAxisPoint = api.coord([shape.xValue, 0]);
const p0 = [
shape.x - shape.width / 2 + shape.groupBasisX,
shape.y - shape.zHeight,
];
const p1 = [
shape.x - shape.width / 2 + shape.groupBasisX,
shape.y - shape.zHeight,
];
const p2 = [
xAxisPoint[0] - shape.width / 2 + shape.groupBasisX,
xAxisPoint[1],
];
const p3 = [
xAxisPoint[0] + shape.width / 2 + shape.groupBasisX,
xAxisPoint[1],
];
const p4 = [shape.x + shape.width / 2 + shape.groupBasisX, shape.y];
ctx.moveTo(p0[0], p0[1]);
ctx.lineTo(p1[0], p1[1]);
ctx.lineTo(p2[0], p2[1]);
ctx.lineTo(p3[0], p3[1]);
ctx.lineTo(p4[0], p4[1]);
ctx.lineTo(p0[0], p0[1]);
ctx.closePath();
},
});
// 定义柱状图右侧图形元素
const rightRect = echarts.graphic.extendShape({
shape: {
x: 0,
y: 0,
width: 9,
zWidth: 15,
zHeight: 8,
},
buildPath: function (ctx, shape) {
const api = shape.api;
const xAxisPoint = api.coord([shape.xValue, 0]);
const p1 = [
shape.x - shape.width / 2 + shape.groupBasisX,
shape.y - shape.zHeight / 2,
];
const p3 = [
xAxisPoint[0] + shape.width / 2 + shape.groupBasisX,
xAxisPoint[1],
];
const p4 = [shape.x + shape.width / 2 + shape.groupBasisX, shape.y];
const p5 = [
xAxisPoint[0] + shape.width / 2 + shape.zWidth + shape.groupBasisX,
xAxisPoint[1],
];
const p6 = [
shape.x + shape.width / 2 + shape.zWidth + shape.groupBasisX,
shape.y - shape.zHeight / 2,
];
const p7 = [
shape.x - shape.width / 2 + shape.zWidth + shape.groupBasisX,
shape.y - shape.zHeight,
];
ctx.moveTo(p4[0], p4[1]);
ctx.lineTo(p3[0], p3[1]);
ctx.lineTo(p5[0], p5[1]);
ctx.lineTo(p6[0], p6[1]);
ctx.lineTo(p4[0], p4[1]);
// ctx.moveTo(p4[0], p4[1]);
// ctx.lineTo(p6[0], p6[1]);
// ctx.lineTo(p7[0], p7[1]);
// ctx.lineTo(p1[0], p1[1]);
// ctx.lineTo(p4[0], p4[1]);
ctx.closePath();
},
});
//定义柱状图顶部图形元素
const topRect = echarts.graphic.extendShape({
shape: {
x: 0,
y: 0,
width: 9,
zWidth: 15,
zHeight: 8,
},
buildPath: function (ctx, shape) {
const api = shape.api;
const xAxisPoint = api.coord([shape.xValue, 0]);
const p1 = [
shape.x - shape.width / 2 + shape.groupBasisX,
shape.y - shape.zHeight / 2,
];
const p3 = [
xAxisPoint[0] + shape.width / 2 + shape.groupBasisX,
xAxisPoint[1],
];
const p4 = [shape.x + shape.width / 2 + shape.groupBasisX, shape.y];
const p5 = [
xAxisPoint[0] + shape.width / 2 + shape.zWidth + shape.groupBasisX,
xAxisPoint[1],
];
const p6 = [
shape.x + shape.width / 2 + shape.zWidth + shape.groupBasisX,
shape.y - shape.zHeight / 2,
];
const p7 = [
shape.x - shape.width / 2 + shape.zWidth + shape.groupBasisX,
shape.y - shape.zHeight,
];
// ctx.moveTo(p4[0], p4[1]);
// ctx.lineTo(p3[0], p3[1]);
// ctx.lineTo(p5[0], p5[1]);
// ctx.lineTo(p6[0], p6[1]);
// ctx.lineTo(p4[0], p4[1]);
ctx.moveTo(p4[0], p4[1]);
ctx.lineTo(p6[0], p6[1]);
ctx.lineTo(p7[0], p7[1]);
ctx.lineTo(p1[0], p1[1]);
ctx.lineTo(p4[0], p4[1]);
ctx.closePath();
},
});
echarts.graphic.registerShape("leftRect", leftRect);
echarts.graphic.registerShape("rightRect", rightRect);
echarts.graphic.registerShape("topRect", topRect);
};
const _getCustomBarStyleGroupList = (echarts) => [
{
leftRect: {
fill: "#C69321",
},
rightRect: {
fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// 这里 offset: 0 1 ,表示从下往上的渐变色
{
offset: 0, // 100%处的颜色
color: "#FABF3D",
},
{
offset: 1, // 0%处的颜色
color: "#FFD376",
},
]),
},
topRect: {
fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// 这里 offset: 0 1 ,表示从下往上的渐变色
{
offset: 0, // 100%处的颜色
color: "#FAC244",
},
{
offset: 1, // 0%处的颜色
color: "#FED26F",
},
]),
},
},
{
leftRect: {
fill: "#0EAEDC",
},
rightRect: {
fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// 这里 offset: 0 1 ,表示从下往上的渐变色
{
offset: 0, // 100%处的颜色
color: "#4BDBFF",
},
{
offset: 1, // 0%处的颜色
color: "#09C8FF",
},
]),
},
topRect: {
fill: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// 这里 offset: 0 1 ,表示从下往上的渐变色
{
offset: 0, // 100%处的颜色
color: "#4ADAFF",
},
{
offset: 1, // 0%处的颜色
color: "#0BC8FF",
},
]),
},
},
];
function getRenderItem(params, api, groupIdx, customBarStyleGroupList,groupBasisXVal=-30) {
const seriesIndex = params.seriesIndex;
const apiVals = [api.value(0), api.value(1)]; //
let location = api.coord([apiVals[0], apiVals[1]]);
var extent = api.size([0, api.value(1)]);
const customBarStyleGroupListLen = customBarStyleGroupList.length;
const _customBarStyle =
customBarStyleGroupListLen - 1 >= groupIdx
? customBarStyleGroupList[groupIdx]
: customBarStyleGroupList[0];
return {
type: "group",
children: [
{
type: "leftRect",
shape: {
api,
groupBasisX: (groupIdx - 2) * groupBasisXVal * -1,
xValue: apiVals[0],
yValue: apiVals[1],
x: location[0],
y: location[1],
},
style: _customBarStyle.leftRect,
//style: api.style()
},
{
type: "rightRect",
shape: {
api,
groupBasisX: (groupIdx - 2) * groupBasisXVal * -1,
xValue: apiVals[0],
yValue: apiVals[1],
x: location[0],
y: location[1],
},
style: _customBarStyle.rightRect,
//style: api.style(),
},
{
type: "topRect",
shape: {
api,
groupBasisX: (groupIdx - 2) * groupBasisXVal * -1,
xValue: apiVals[0],
yValue: apiVals[1],
x: location[0],
y: location[1],
},
style: _customBarStyle.topRect,
//style: api.style(),
},
],
};
}
export const getSeriesData = (
echarts,
groups,
xDataList,
customBarStyleGroupList,
groupBasisXVal = -30
) => {
if (!Array.isArray(customBarStyleGroupList)) {
customBarStyleGroupList = _getCustomBarStyleGroupList(echarts);
}
const d = [];
const len = xDataList.length;
const len2 = xDataList[0].length;
xDataList[0].forEach((el, idx) => {
d.push(el);
for (let index = 1; index < len; index++) {
const el2 = xDataList[index];
d.push(el2[idx]);
}
});
return groups.map((label, idx) => {
const temp = [];
for (let index = 0; index < len2; index++) {
const el = d[idx + index * groups.length];
const _rest = []; //new Array(groups.length - 1).fill("");
temp.push(el, ..._rest);
}
return {
type: "custom",
name: label,
renderItem: function (params, api) {
return getRenderItem(params, api, idx, customBarStyleGroupList,groupBasisXVal);
},
//barWidth: '20',
data: temp,
itemStyle: {
// color: () => {
// return new echarts.graphic.LinearGradient(0, 0, 0, 1, colors[index]);
// },
},
};
});
};
+42
View File
@@ -0,0 +1,42 @@
## 颜色渐进
```json
# 方法1
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
// 这里 offset: 0 1 ,表示从下往上的渐变色
{
offset: 0, // 0%处的颜色
color: "rgba(0, 216, 255,1)",
},
{
offset: 0.8, // 100%处的颜色
color: "rgba(0, 167, 254,1)",
},
{
offset: 1, // 100%处的颜色
color: "rgba(42, 118, 254,1)",//
},
]),
# 方法2
color: {
x: 0,
y: 0,
x2: 0,
y2: 1,
type: "linear",
global: false,
colorStops: [
{
offset: 0, // 0%处的颜色
color: "rgba(0, 216, 255,1)",
},
{
offset: 0.8, // 100%处的颜色
color: "rgba(0, 167, 254,1)",
},
{
offset: 1, // 100%处的颜色
color: "rgba(42, 118, 254,1)", //
},
],
},
```
+66
View File
@@ -0,0 +1,66 @@
/*
* @Author: mjh
* @Date: 2023-08-11 12:16:33
* @LastEditors: mjh
* @LastEditTime: 2023-08-15 10:20:14
* @Description:
*/
import * as echarts from "echarts/core";
import {
GraphicComponent,
GridComponent,
LegendComponent,
PolarComponent,
TitleComponent,
TooltipComponent,
ToolboxComponent,
} from "echarts/components";
import {
BarChart,
BoxplotChart,
LineChart,
PieChart,
RadarChart,
PictorialBarChart,
GaugeChart,
CustomChart,
} from "echarts/charts";
import { UniversalTransition } from "echarts/features";
import { CanvasRenderer } from "echarts/renderers";
echarts.use([
GraphicComponent,
GridComponent,
TooltipComponent,
ToolboxComponent,
LegendComponent,
TitleComponent,
LineChart,
BarChart,
PieChart,
BoxplotChart,
CanvasRenderer,
UniversalTransition,
RadarChart,
PictorialBarChart,
PolarComponent,
GaugeChart,
CustomChart,
]);
// import * as echarts from 'echarts'
// 初始化语法糖
const draw = (dom, option) => {
const chart = echarts.init(dom);
chart.clear();
chart.setOption(option);
return chart;
};
// 注册自定义图形
import { registerCustomShape } from "./customCharts/index";
registerCustomShape(echarts);
//
export default {
...echarts,
draw,
};
+3 -1
View File
@@ -1,6 +1,8 @@
import axios from 'axios'
const server = axios.create({
baseURL: "http://192.168.11.109", //配置请求的url
baseURL: "http://192.168.11.109:9231", //配置请求的url
// baseURL: "http://192.168.1.31:9231",
// baseURL: "http://tnb.tuotong-tech.com", //配置请求的url
timeout: 30000, //配置超时时间
headers:{}//配置请求头
+36
View File
@@ -0,0 +1,36 @@
import { ref, onMounted, onUnmounted } from 'vue';
function getShowTime() {
var date = new Date();
// 年月日
var year = date.getFullYear();
var month = date.getMonth() + 1;
month = month < 10 ? "0" + month : month;
var day = date.getDate();
day = day < 10 ? "0" + day : day;
// 时分秒
var hour = date.getHours();
hour = hour < 10 ? "0" + hour : hour;
var minute = date.getMinutes();
minute = minute < 10 ? "0" + minute : minute;
var second = date.getSeconds();
second = second < 10 ? "0" + second : second;
// 实时显示
return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
}
export default function useTimeCounter() {
const nowTimerVal = ref("");
let timer = null;
onMounted(() => {
timer = setInterval(() => {
nowTimerVal.value = getShowTime();
}, 1000);
});
onUnmounted(() => {
clearInterval(timer);
timer = null;
});
return { nowTimerVal };
}
+8 -5
View File
@@ -1,16 +1,16 @@
<template>
<div id="bottomLeft">
<div class="bg-color-black">
<div class="d-flex pt-2 pl-2">
<div >
<!-- <div class="d-flex pt-2 pl-2">
<span>
<icon name="chart-bar" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">数据统计图</span>
</div>
</div>
</div> -->
<div>
<BottomLeftChart />
<BottomLeftChart :cdata="cdata" />
</div>
</div>
</div>
@@ -19,6 +19,9 @@
<script>
import BottomLeftChart from '@/components/echart/bottom/bottomLeftChart'
export default {
props:[
'cdata'
],
components: {
BottomLeftChart
}
@@ -26,7 +29,7 @@ export default {
</script>
<style lang="scss" scoped>
$box-height: 520px;
$box-height: 220px;
$box-width: 100%;
#bottomLeft {
padding: 20px 16px;
+55
View File
@@ -0,0 +1,55 @@
<template>
<div id="bottomLeft">
<div >
<!-- <div class="d-flex pt-2 pl-2">
<span>
<icon name="chart-bar" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">数据统计图</span>
</div>
</div> -->
<div>
<BottomLeftChart :cdata="cdata" />
</div>
</div>
</div>
</template>
<script>
import BottomLeftChart from '@/components/echart/bottom/bottomLeftChart1'
export default {
props:[
'cdata'
],
components: {
BottomLeftChart
}
}
</script>
<style lang="scss" scoped>
$box-height: 170px;
$box-width: 100%;
#bottomLeft {
padding: 20px 16px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 35px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.chart-box {
margin-top: 16px;
width: 170px;
height: 170px;
.active-ring-name {
padding-top: 10px;
}
}
}
</style>
+55
View File
@@ -0,0 +1,55 @@
<template>
<div id="bottomLeft">
<div >
<!-- <div class="d-flex pt-2 pl-2">
<span>
<icon name="chart-bar" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">数据统计图</span>
</div>
</div> -->
<div>
<BottomLeftChart :cdata="cdata" />
</div>
</div>
</div>
</template>
<script>
import BottomLeftChart from '@/components/echart/bottom/bottomLeftChart2'
export default {
props:[
'cdata'
],
components: {
BottomLeftChart
}
}
</script>
<style lang="scss" scoped>
$box-height: 220px;
$box-width: 100%;
#bottomLeft {
padding: 20px 16px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 35px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.chart-box {
margin-top: 16px;
width: 170px;
height: 170px;
.active-ring-name {
padding-top: 10px;
}
}
}
</style>
+55
View File
@@ -0,0 +1,55 @@
<template>
<div id="bottomLeft">
<div >
<!-- <div class="d-flex pt-2 pl-2">
<span>
<icon name="chart-bar" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">数据统计图</span>
</div>
</div> -->
<div>
<BottomLeftChart :cdata="cdata" />
</div>
</div>
</div>
</template>
<script>
import BottomLeftChart from '@/components/echart/bottom/bottomLeftChartsb'
export default {
props:[
'cdata'
],
components: {
BottomLeftChart
}
}
</script>
<style lang="scss" scoped>
$box-height: 170px;
$box-width: 100%;
#bottomLeft {
padding: 20px 16px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 35px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.chart-box {
margin-top: 16px;
width: 170px;
height: 170px;
.active-ring-name {
padding-top: 10px;
}
}
}
</style>
+155 -6
View File
@@ -1,22 +1,116 @@
<template>
<div id="bottomRight">
<div class="bg-color-black">
<!-- <div class="d-flex pt-2 pl-2">
<span>
<icon name="chart-area" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">工单修复以及满意度统计图</span>
<div class="decoration2">
<dv-decoration-2 :reverse="true" style="width:5px;height:6rem;" />
</div>
</div>
</div> -->
<div style="padding-top: 7px;">
<div style="text-align: center;"><span style="position: absolute;left: 20px;top: 20px;font-size: 20px;font-weight: bold;">设备运行状态</span><span style="margin-right: 44px;position: relative;"><div class="badge success" style="left: -28px;top:1px"></div> 运行数:{{eqpinfo.work_count}}</span><span style="margin-right: 44px;position: relative;"><div class="badge red" style="left: -28px;top:1px"></div>报警数:{{ eqpinfo.alarm_count }}</span><span style="color:grey"></span><span style="margin-right: 20px;position: relative;"><div class="badge gray" style="left: -28px;top:1px"></div>停机数:{{ eqpinfo.shutdown_count }}</span></div>
<div style="margin-top: 7px;">
<!-- <BottomRightChart /> -->
<div class="eqpbox" v-for="item in eqpinfo.workStatusList" :key="item.id">
<div class="eqpstatus" :style={backgroundColor:item.status}>
{{ item.eqp_name }} <div class="badge img" :class="item.status == '1' ? 'success' :item.status == '2'?'red':'gray'"></div>
</div>
<!-- <div class="eqpname" :class="item.status == '1' ? 'red' : item.status == '2' ? 'grey': item.status == '4' ? 'yellow':'white'"></div> -->
<BottomRightChart />
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import BottomRightChart from "@/components/echart/bottom/bottomRightChart";
// import BottomRightChart from "@/components/echart/bottom/bottomRightChart";
import { gettaskList } from '../api/kanban.js'
export default {
props:[
'eqpinfo'
],
components: {
BottomRightChart
// BottomRightChart
},
data() {
return {
alldata:{
"day_month_yield": {
month_qty:0,
day_qty:0,
month_qualified_percent:0,
day_qualified_percent:0
},
"equip_pie_list": [
0
],
"equip_info_list": [
],
"report_record_list": [
]
},
run:0,
down:0,
warn:0,
white:0,
grey:0,
red:0,
yellow:0
}},
mounted() {
this.$nextTick(function() {
this.run=0
this.down=0
this.warn=0
this.alldata.equip_info_list=this.eqpinfo
// this.eqpinfo.forEach(item=>{
// if(item.daq_status=='green'){
// this.run=this.run+1
// }else if(item.daq_status=='grey'){
// this.down=this.down+1
// }else if(item.daq_status=='red'){
// this.warn=this.warn+1
// }
// if(item.sys_status=='1'){
// this.red=this.red+1
// }else if(item.sys_status=='2'){
// this.grey=this.grey+1
// }else if(item.sys_status=='3'){
// this.white=this.white+1
// }else if(item.sys_status=='4'){
// this.yellow=this.yellow+1
// }
// })
})
},
watch: {
alldata(newCount, oldCount) {
debugger
console.log(`count变成了${newCount},之前是${oldCount}`);
}
}
};
</script>
<style lang="scss" class>
$box-height: 920px;
<style lang="scss" class scoped>
$box-height: 190px;
$box-width: 100%;
#bottomRight {
padding: 14px 16px;
@@ -44,4 +138,59 @@ $box-width: 100%;
}
}
}
.eqpbox{
width:7.125%;
padding: 5px;
height: 45px;
text-align: center;
float: left;
}
.eqpstatus{
height: 35px;
line-height: 35px;
background-color: #034b7a;
position: relative;
// background-image: url(../assets/jcj.png);
background-size: 100% 100%;
font-size: 0.25rem;
}
.eqpbox .eqpname{
line-height: 25px;
background-color: rgba(19, 25, 47, 0.6);
height: 25px;
}
.eqpbox .eqpname.red{
color: red;
}
.eqpbox .eqpname.grey{
color: grey;
}
.eqpbox .eqpname.yellow{
color: yellow;
}
.eqpbox .eqpname.white{
color: #fff;
}
.badge{
width: 20px;
height: 20px;
background-color: #67C23A;
border-radius: 20px;
position: absolute;
top:0px;
left: 0;
}
.badge.red{
background-color: #F56C6C;
}
.badge.img{
width: 10px;
height: 10px;
border-radius: 10px;
}
.badge.gray{
background-color: gray;
}
</style>
+195
View File
@@ -0,0 +1,195 @@
<template>
<div id="bottomRight">
<div class="bg-color-black">
<!-- <div class="d-flex pt-2 pl-2">
<span>
<icon name="chart-area" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">工单修复以及满意度统计图</span>
<div class="decoration2">
<dv-decoration-2 :reverse="true" style="width:5px;height:6rem;" />
</div>
</div>
</div> -->
<div style="padding-top: 7px;">
<div style="text-align: center;"><span style="position: absolute;left: 20px;top: 20px;font-size: 20px;font-weight: bold;">设备运行状态</span><span style="margin-right: 44px;position: relative;"><div class="badge success" style="left: -28px;top:1px"></div> 运行数:{{eqpinfo.work_count}}</span><span style="margin-right: 44px;position: relative;"><div class="badge red" style="left: -28px;top:1px"></div>报警数:{{ eqpinfo.alarm_count }}</span><span style="color:grey"></span><span style="margin-right: 20px;position: relative;"><div class="badge gray" style="left: -28px;top:1px"></div>停机数:{{ eqpinfo.shutdown_count }}</span></div>
<div style="margin-top: 7px;">
<!-- <BottomRightChart /> -->
<div class="eqpbox" v-for="item in eqpinfo.workStatusList" :key="item.id">
<div class="eqpstatus" :style={backgroundColor:item.status}>
{{ item.eqp_name }} <div class="badge img" :class="item.status == '1' ? 'success' :item.status == '2'?'red':'gray'"></div>
</div>
<!-- <div class="eqpname" :class="item.status == '1' ? 'red' : item.status == '2' ? 'grey': item.status == '4' ? 'yellow':'white'"></div> -->
</div>
</div>
</div>
</div>
</div>
</template>
<script>
// import BottomRightChart from "@/components/echart/bottom/bottomRightChart";
import { gettaskList } from '../api/kanban.js'
export default {
props:[
'eqpinfo'
],
components: {
// BottomRightChart
},
data() {
return {
alldata:{
"day_month_yield": {
month_qty:0,
day_qty:0,
month_qualified_percent:0,
day_qualified_percent:0
},
"equip_pie_list": [
0
],
"equip_info_list": [
],
"report_record_list": [
]
},
run:0,
down:0,
warn:0,
white:0,
grey:0,
red:0,
yellow:0
}},
mounted() {
this.$nextTick(function() {
this.run=0
this.down=0
this.warn=0
this.alldata.equip_info_list=this.eqpinfo
// this.eqpinfo.forEach(item=>{
// if(item.daq_status=='green'){
// this.run=this.run+1
// }else if(item.daq_status=='grey'){
// this.down=this.down+1
// }else if(item.daq_status=='red'){
// this.warn=this.warn+1
// }
// if(item.sys_status=='1'){
// this.red=this.red+1
// }else if(item.sys_status=='2'){
// this.grey=this.grey+1
// }else if(item.sys_status=='3'){
// this.white=this.white+1
// }else if(item.sys_status=='4'){
// this.yellow=this.yellow+1
// }
// })
})
},
watch: {
alldata(newCount, oldCount) {
debugger
console.log(`count变成了${newCount},之前是${oldCount}`);
}
}
};
</script>
<style lang="scss" class scoped>
$box-height: 150px;
$box-width: 100%;
#bottomRight {
padding: 14px 16px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
//下滑线动态
.decoration2 {
position: absolute;
right: 0.125rem;
}
.chart-box {
margin-top: 16px;
width: 170px;
height: 170px;
.active-ring-name {
padding-top: 10px;
}
}
}
.eqpbox{
width:10%;
padding: 5px;
height: 80px;
text-align: center;
float: left;
}
.eqpstatus{
height: 55px;
line-height: 55px;
background-color: #034b7a;
position: relative;
// background-image: url(../assets/jcj.png);
background-size: 100% 100%;
font-size: 0.22rem;
}
.eqpbox .eqpname{
line-height: 25px;
background-color: rgba(19, 25, 47, 0.6);
height: 25px;
}
.eqpbox .eqpname.red{
color: red;
}
.eqpbox .eqpname.grey{
color: grey;
}
.eqpbox .eqpname.yellow{
color: yellow;
}
.eqpbox .eqpname.white{
color: #fff;
}
.badge{
width: 20px;
height: 20px;
background-color: #67C23A;
border-radius: 20px;
position: absolute;
top:0px;
left: 0;
}
.badge.red{
background-color: #F56C6C;
}
.badge.img{
width: 10px;
height: 10px;
border-radius: 10px;
}
.badge.gray{
background-color: gray;
}
</style>
+196
View File
@@ -0,0 +1,196 @@
<template>
<div id="bottomRight">
<div class="bg-color-black">
<!-- <div class="d-flex pt-2 pl-2">
<span>
<icon name="chart-area" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">工单修复以及满意度统计图</span>
<div class="decoration2">
<dv-decoration-2 :reverse="true" style="width:5px;height:6rem;" />
</div>
</div>
</div> -->
<div style="padding-top: 7px;">
<div style="text-align: right;"><span style="position: absolute;left: 20px;top: 20px;font-size: 20px;font-weight: bold;">设备运行状态</span><span style="margin-right: 44px;position: relative;"><div class="badge success" style="left: -28px;top:1px"></div> 运行数:{{eqpinfo.work_count}}</span><span style="margin-right: 44px;position: relative;"><div class="badge red" style="left: -28px;top:1px"></div>报警数:{{ eqpinfo.alarm_count }}</span><span style="color:grey"></span><span style="margin-right: 20px;position: relative;"><div class="badge gray" style="left: -28px;top:1px"></div>停机数:{{ eqpinfo.shutdown_count }}</span></div>
<div style="margin-top: 7px;">
<!-- <BottomRightChart /> -->
<div class="eqpbox" v-for="item in eqpinfo.workStatusList" :key="item.id">
<div class="eqpstatus" :style={backgroundColor:item.status}>
{{ item.eqp_name }} <div class="badge img" :class="item.status == '1' ? 'success' :item.status == '2'?'red':'gray'"></div>
</div>
<!-- <div class="eqpname" :class="item.status == '1' ? 'red' : item.status == '2' ? 'grey': item.status == '4' ? 'yellow':'white'"></div> -->
</div>
</div>
</div>
</div>
</div>
</template>
<script>
// import BottomRightChart from "@/components/echart/bottom/bottomRightChart";
import { gettaskList } from '../api/kanban.js'
export default {
props:[
'eqpinfo'
],
components: {
// BottomRightChart
},
data() {
return {
alldata:{
"day_month_yield": {
month_qty:0,
day_qty:0,
month_qualified_percent:0,
day_qualified_percent:0
},
"equip_pie_list": [
0
],
"equip_info_list": [
],
"report_record_list": [
]
},
run:0,
down:0,
warn:0,
white:0,
grey:0,
red:0,
yellow:0
}},
mounted() {
this.$nextTick(function() {
this.run=0
this.down=0
this.warn=0
this.alldata.equip_info_list=this.eqpinfo
// this.eqpinfo.forEach(item=>{
// if(item.daq_status=='green'){
// this.run=this.run+1
// }else if(item.daq_status=='grey'){
// this.down=this.down+1
// }else if(item.daq_status=='red'){
// this.warn=this.warn+1
// }
// if(item.sys_status=='1'){
// this.red=this.red+1
// }else if(item.sys_status=='2'){
// this.grey=this.grey+1
// }else if(item.sys_status=='3'){
// this.white=this.white+1
// }else if(item.sys_status=='4'){
// this.yellow=this.yellow+1
// }
// })
})
},
watch: {
alldata(newCount, oldCount) {
debugger
console.log(`count变成了${newCount},之前是${oldCount}`);
}
}
};
</script>
<style lang="scss" class scoped>
$box-height: 200px;
$box-width: 100%;
#bottomRight {
padding: 14px 16px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
//下滑线动态
.decoration2 {
position: absolute;
right: 0.125rem;
}
.chart-box {
margin-top: 16px;
width: 170px;
height: 170px;
.active-ring-name {
padding-top: 10px;
}
}
}
.eqpbox{
width:10%;
padding: 5px;
height: 45px;
text-align: center;
float: left;
}
.eqpstatus{
height: 35px;
line-height: 35px;
background-color: #034b7a;
position: relative;
// background-image: url(../assets/jcj.png);
background-size: 100% 100%;
font-size: 0.10rem;
}
.eqpbox .eqpname{
line-height: 25px;
background-color: rgba(19, 25, 47, 0.6);
height: 25px;
}
.eqpbox .eqpname.red{
color: red;
}
.eqpbox .eqpname.grey{
color: grey;
}
.eqpbox .eqpname.yellow{
color: yellow;
}
.eqpbox .eqpname.white{
color: #fff;
}
.badge{
width: 20px;
height: 20px;
background-color: #67C23A;
border-radius: 20px;
position: absolute;
top:0px;
left: 0;
}
.badge.red{
background-color: #F56C6C;
}
.badge.img{
width: 10px;
height: 10px;
border-radius: 10px;
}
.badge.gray{
background-color: gray;
}
</style>
+39 -29
View File
@@ -1,48 +1,53 @@
<template>
<div id="center">
<div class="up">
<div
class="bg-color-black item"
v-for="item in titleItem"
:key="item.title"
>
<p class="ml-3 colorBlue fw-b fs-xl">{{ item.title }}</p>
<div>
<dv-digital-flop
class="dv-dig-flop ml-1 mt-2 pl-3"
:config="item.number"
/>
</div>
</div>
</div>
<div class="down">
<div class="ranking bg-color-black">
<!-- <div class="ranking bg-color-black">
<span>
<icon name="chart-pie" class="text-icon"></icon>
</span>
<span class="fs-xl text mx-2 mb-1 pl-3">年度负责人组件达标榜</span>
<dv-scroll-ranking-board class="dv-scr-rank-board mt-1" :config="ranking" />
</div>
</div> -->
<div class="percent">
<div class="item bg-color-black">
<span>今日任务通过率</span>
<CenterChart
<span>本月产量</span>
<CenterChart1
:id="rate[0].id"
:tips="rate[0].tips"
:tips="data.day_month_yield.month_qty"
:colorObj="rate[0].colorData"
/>
</div>
<div class="item bg-color-black">
<span>今日任务达标率</span>
<span>当日产量</span>
<CenterChart1
:id="rate[0].id"
:tips="data.day_month_yield.day_qty"
:colorObj="rate[0].colorData"
/>
</div>
<div class="item bg-color-black">
<span>本月合格率</span>
<CenterChart
:id="rate[1].id"
:tips="rate[1].tips"
:id="rate[0].id"
:tips="data.day_month_yield.month_qualified_percent"
:colorObj="rate[1].colorData"
/>
</div>
<div class="water">
<dv-water-level-pond class="dv-wa-le-po" :config="water" />
<div class="item bg-color-black">
<span>当日合格率</span>
<CenterChart
:id="rate[1].id"
:tips="data.day_month_yield.day_qualified_percent"
:colorObj="rate[1].colorData"
/>
</div>
<!-- <div class="water">
<dv-water-level-pond class="dv-wa-le-po" :config="water" />
</div> -->
</div>
</div>
</div>
@@ -50,8 +55,11 @@
<script>
import CenterChart from '@/components/echart/center/centerChartRate'
import CenterChart1 from '@/components/echart/center/centerChartRate1'
export default {
props:[
'data'
],
data() {
return {
titleItem: [
@@ -214,7 +222,8 @@ export default {
}
},
components: {
CenterChart
CenterChart,
CenterChart1
}
}
</script>
@@ -233,7 +242,7 @@ export default {
padding-top: 8px;
margin-top: 8px;
width: 32%;
height: 70px;
height: 150px;
.dv-dig-flop {
width: 150px;
height: 30px;
@@ -258,15 +267,16 @@ export default {
}
}
.percent {
width: 40%;
width: 100%;
display: flex;
flex-wrap: wrap;
.item {
width: 50%;
height: 120px;
height: 198px;
span {
margin-top: 8px;
font-size: 14px;
font-size: 18px;
font-weight: bold;
display: flex;
justify-content: center;
}
+17 -10
View File
@@ -1,20 +1,21 @@
<template>
<div id="centerLeft1">
<div class="bg-color-black">
<div class="d-flex pt-2 pl-2">
<span>
<icon name="chart-bar" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">任务通过率</span>
<dv-decoration-3 class="dv-dec-3" />
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex">
<span class="fs-xl text">设备利用率: <span>{{ piedata.rate +' %'}}</span></span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class="d-flex jc-center">
<CenterLeft1Chart />
<CenterLeft1Chart :piedata="piedata" />
</div>
<!-- 4个主要的数据 -->
<div class="bottom-data">
<!-- <div class="bottom-data">
<div
class="item-box mt-2"
v-for="(item, index) in numberData"
@@ -29,7 +30,7 @@
<span class="colorYellow">(件)</span>
</p>
</div>
</div>
</div> -->
</div>
</div>
</template>
@@ -37,6 +38,9 @@
<script>
import CenterLeft1Chart from '@/components/echart/centerLeft/centerLeft1Chart'
export default {
props:[
'piedata'
],
data() {
return {
numberData: [
@@ -114,7 +118,7 @@ export default {
</script>
<style lang="scss" scoped>
$box-width: 300px;
$box-width: 100%;
$box-height: 410px;
#centerLeft1 {
@@ -128,6 +132,9 @@ $box-height: 410px;
}
.text {
color: #c3cbde;
font-size: 20px;
font-weight: bold;
padding-top: 12px;
}
.dv-dec-3 {
position: relative;
+235 -22
View File
@@ -1,56 +1,207 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<div class="d-flex pt-2 pl-2">
<!-- <div class="d-flex pl-2">
<span>
<icon name="chart-line" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">任务完成排行榜</span>
<span class="fs-xl text mx-2">任务列表</span>
</div>
</div> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ title }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class="d-flex jc-center body-box">
<dv-scroll-board class="dv-scr-board" :config="config" />
<div class="jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="mo_task_code" label="生产任务单" align="center" />
<el-table-column prop="material_name" label="产品名称" align="center" />
<el-table-column prop="equip_name" label="设备名称" align="center" />
<el-table-column prop="report_qty" label="数量" align="center" :width="120" />
<el-table-column prop="work_man" label="生产人" align="center" :width="120" />
<el-table-column prop="plan_qty" label="计划数" align="center" :width="120" />
<el-table-column prop="remain_plan_qty" label="剩余计划数" align="center" :width="120" />
<el-table-column prop="report_time" label="提报时间" align="center" :width="150" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<!-- <template slot-scope="scope">
<el-card class="notice">
<el-carousel indicator-position="none" arrow="never" direction="vertical" :interval="5000">
<el-carousel-item class="notice_item">
此处是公告内容!此处是公告内容!{{scope.row.mo_task_code}}
</el-carousel-item>
</el-carousel>
</el-card>
<vue-seamless-scroll
:data="list"
style="width: 100%"
:class-option="classOption1"
><div v-text="scope.row.mo_task_code"></div></vue-seamless-scroll>
</template> -->
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="mo_task_code" label="生产任务单" align="center" />
<el-table-column prop="material_name" label="产品名称" align="center" />
<el-table-column prop="equip_name" label="设备名称" align="center" />
<el-table-column prop="report_qty" label="数量" align="center" :width="120" />
<el-table-column prop="work_man" label="生产人" align="center" :width="120" />
<el-table-column prop="plan_qty" label="计划数" align="center" :width="120" />
<el-table-column prop="remain_plan_qty" label="剩余计划数" align="center" :width="120" />
<el-table-column prop="report_time" label="提报时间" align="center" :width="150" />
</el-table>
</vue-seamless-scroll>
<!-- <dv-scroll-board class="dv-scr-board" :config="config" v-if="type==1" />
<dv-scroll-board class="dv-scr-board" :config="config2" v-if="type==2" /> -->
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1',
'title'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
classOption1() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 2, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: ['组件', '分支', '覆盖率'],
data: [
['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
],
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [50],
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 410px;
$box-width: 300px;
$box-width: 1220px;
#centerRight1 {
padding: 16px;
padding-top: 20px;
@@ -68,9 +219,71 @@ $box-width: 300px;
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 270px;
height: 340px;
width: 1120px;
height: 320px;
}
}
}
.seamless-warp {
height: 300px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table td{
font-size: 12px;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
</style>
+10 -6
View File
@@ -1,15 +1,15 @@
<template>
<div id="centerRight2">
<div class="bg-color-black">
<div class="d-flex pt-2 pl-2">
<div class="d-flex pl-2">
<span>
<icon name="align-left" class="text-icon"></icon>
</span>
<span class="fs-xl text mx-2">产品销售渠道分析</span>
<!-- <span class="fs-xl text mx-2">产品销售渠道分析</span> -->
</div>
<div class="d-flex ai-center flex-column body-box">
<dv-capsule-chart class="dv-cap-chart" :config="config" />
<centerRight2Chart1 />
<centerRight2Chart1 :cdata="cdata" />
</div>
</div>
</div>
@@ -19,8 +19,12 @@
import centerRight2Chart1 from '@/components/echart/centerRight/centerRightChart'
export default {
props:[
'cdata'
],
data() {
return {
config: {
data: [
{
@@ -53,8 +57,8 @@ export default {
<style lang="scss" scoped>
#centerRight2 {
$box-height: 410px;
$box-width: 340px;
$box-height: 270px;
$box-width: 100%;
padding: 5px;
height: $box-height;
width: $box-width;
+241
View File
@@ -0,0 +1,241 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ title }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class="jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
table-layout='auto'
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column prop="mo_task_code" label="单据编号" align="center" show-overflow-tooltip />
<el-table-column prop="equip_workline_name" label="设备名称" align="center" show-overflow-tooltip />
<el-table-column prop="create_time" label="任务生成时间" align="center" show-overflow-tooltip />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
table-layout='auto'
>
<el-table-column prop="mo_task_code" label="单据编号" align="center" show-overflow-tooltip />
<el-table-column prop="equip_workline_name" label="设备名称" align="center" show-overflow-tooltip />
<el-table-column prop="create_time" label="任务生成时间" align="center" show-overflow-tooltip />
</el-table>
</vue-seamless-scroll>
<!-- <dv-scroll-board class="dv-scr-board" :config="config" v-if="type==1" />
<dv-scroll-board class="dv-scr-board" :config="config2" v-if="type==2" /> -->
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1',
'title'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum:7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 410px;
$box-width: 420px;
#centerRight1 {
padding: 16px;
padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 1120px;
height: 320px;
}
}
}
.seamless-warp {
height: 270px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table td{
font-size: 10px;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
::v-deep .el-table th>.cell{
white-space: nowrap !important;
}
</style>
+227
View File
@@ -0,0 +1,227 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ '安灯呼叫' }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class="jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column prop="info" label="设备信息" align="center" />
<el-table-column prop="fault" label="故障" align="center" :width="250" />
<!-- <el-table-column prop="source" label="发起人" align="center" /> -->
<el-table-column prop="create_time" label="发起时间" align="center" :width="200" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column prop="info" label="设备信息" align="center" />
<el-table-column prop="fault" label="故障" align="center" :width="250" />
<el-table-column prop="source" label="发起人" align="center" />
<el-table-column prop="create_time" label="发起时间" align="center" :width="200" />
</el-table>
</vue-seamless-scroll>
<!-- <dv-scroll-board class="dv-scr-board" :config="config" v-if="type==1" />
<dv-scroll-board class="dv-scr-board" :config="config2" v-if="type==2" /> -->
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum:7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 270px;
$box-width: calc( 100% - 0px );
#centerRight1 {
padding: 16px;
padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 1120px;
height: 220px;
}
}
}
.seamless-warp {
height: 240px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table::before {
height: 0;
}
</style>
+251
View File
@@ -0,0 +1,251 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<!-- <div class="d-flex pl-2">
<span>
<icon name="chart-line" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">任务列表</span>
</div>
</div> -->
<div class="jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
table-layout='auto'
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column prop="mo_task_code" label="单据编号" align="center" :width="140" />
<el-table-column prop="equip_workline_name" label="设备名称" align="center"/>
<el-table-column prop="checktype" label="质检类型" align="center" />
<el-table-column prop="material_name" label="物料名称" align="center" />
<el-table-column prop="material_specification" label="规格" align="center" />
<el-table-column prop="material_standard" label="型号" align="center" />
<el-table-column prop="qty" label="合格" align="center" :width="80" />
<el-table-column prop="rqty" label="不合格" align="center" :width="80" />
<el-table-column prop="result" label="质检结论" align="center" :width="80" />
<el-table-column prop="execuser" label="质检人" align="center" />
<el-table-column prop="exectime" label="质检时间" align="center" :width="140" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
table-layout='auto'
>
<el-table-column prop="mo_task_code" label="单据编号" align="center" :width="140" />
<el-table-column prop="equip_workline_name" label="设备名称" align="center" />
<el-table-column prop="checktype" label="质检类型" align="center" />
<el-table-column prop="material_name" label="物料名称" align="center" />
<el-table-column prop="material_specification" label="规格" align="center" />
<el-table-column prop="material_standard" label="型号" align="center" />
<el-table-column prop="qty" label="合格" align="center" :width="80" />
<el-table-column prop="rqty" label="不合格" align="center" :width="80" />
<el-table-column prop="result" label="质检结论" align="center" :width="80" />
<el-table-column prop="execuser" label="质检人" align="center" />
<el-table-column prop="exectime" label="质检时间" align="center" :width="140" />
</el-table>
</vue-seamless-scroll>
<!-- <dv-scroll-board class="dv-scr-board" :config="config" v-if="type==1" />
<dv-scroll-board class="dv-scr-board" :config="config2" v-if="type==2" /> -->
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 410px;
$box-width: 1220px;
#centerRight1 {
padding: 16px;
padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 1120px;
height: 320px;
}
}
}
.seamless-warp {
height: 300px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table td{
font-size: 10px;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
</style>
+277
View File
@@ -0,0 +1,277 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<!-- <div class="d-flex pl-2">
<span>
<icon name="chart-line" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">任务列表</span>
</div>
</div> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ title }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class="jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="production_task_code" label="生产任务单" align="center" />
<el-table-column prop="material_name" label="产品名称" align="center" />
<el-table-column prop="work_line" label="产线信息" align="center" />
<el-table-column prop="code_batch" label="批次号" align="center" />
<el-table-column prop="plan_qty" label="计划数" align="center" />
<el-table-column prop="complete_rate" label="完成率" align="center" />
<el-table-column prop="work_man" label="排班人员" align="center" />
<el-table-column prop="start_time" label="开工时间" align="center" :width="150" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="production_task_code" label="生产任务单" align="center" />
<el-table-column prop="material_name" label="产品名称" align="center" />
<el-table-column prop="work_line" label="产线信息" align="center" />
<el-table-column prop="code_batch" label="批次号" align="center" />
<el-table-column prop="plan_qty" label="计划数" align="center" />
<el-table-column prop="complete_rate" label="完成率" align="center" >
<template slot-scope="scope">
<el-progress :text-inside="true" :stroke-width="22" :percentage="scope.row.complete_rate" :status="scope.row.complete_rate<90?'success':'warning'"></el-progress>
</template>
</el-table-column>
<el-table-column prop="work_man" label="排班人员" align="center" />
<el-table-column prop="start_time" label="开工时间" align="center" :width="150" />
</el-table>
</vue-seamless-scroll>
<!-- <dv-scroll-board class="dv-scr-board" :config="config" v-if="type==1" />
<dv-scroll-board class="dv-scr-board" :config="config2" v-if="type==2" /> -->
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1',
'title'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
classOption1() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 2, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 290px;
$box-width: 100%;
#centerRight1 {
padding: 16px;
padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 1120px;
height: 320px;
}
}
}
.seamless-warp {
height: 160px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table td{
font-size: 12px;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
</style>
+267
View File
@@ -0,0 +1,267 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<!-- <div class="d-flex pl-2">
<span>
<icon name="chart-line" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">任务列表</span>
</div>
</div> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ title }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class="jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="eqp_code" label="设备编码" align="center" />
<el-table-column prop="eqp_name" label="设备名称" align="center" :width="180" />
<el-table-column prop="run_time" label="运行时间" align="center" />
<el-table-column prop="shutdown_time" label="停机时间" align="center" />
<el-table-column prop="hour_out" label="每小时产量" align="center" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="eqp_code" label="设备编码" align="center" />
<el-table-column prop="eqp_name" label="设备名称" align="center" :width="180" />
<el-table-column prop="run_time" label="运行时间" align="center" />
<el-table-column prop="shutdown_time" label="停机时间" align="center" />
<el-table-column prop="hour_out" label="每小时产量" align="center" />
</el-table>
</vue-seamless-scroll>
<!-- <dv-scroll-board class="dv-scr-board" :config="config" v-if="type==1" />
<dv-scroll-board class="dv-scr-board" :config="config2" v-if="type==2" /> -->
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1',
'title'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 3, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
classOption1() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 2, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 3, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 240px;
$box-width: 100%;
#centerRight1 {
padding: 16px;
padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 1120px;
height: 320px;
}
}
}
.seamless-warp {
height: 110px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table td{
font-size: 12px;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
</style>
+285
View File
@@ -0,0 +1,285 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<!-- <div class="d-flex pl-2">
<span>
<icon name="chart-line" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">任务列表</span>
</div>
</div> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ title }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class="jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="production_task_code" label="生产任务单" align="center" />
<el-table-column prop="material_name" label="产品名称" align="center" />
<el-table-column prop="carry_code" label="料箱编号" align="center" />
<el-table-column prop="qty" label="数量" align="center" />
<el-table-column prop="reporter" label="提报人" align="center" />
<el-table-column prop="report_time" label="提报时间" align="center" :width="150" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<!-- <template slot-scope="scope">
<el-card class="notice">
<el-carousel indicator-position="none" arrow="never" direction="vertical" :interval="5000">
<el-carousel-item class="notice_item">
此处是公告内容!此处是公告内容!{{scope.row.mo_task_code}}
</el-carousel-item>
</el-carousel>
</el-card>
<vue-seamless-scroll
:data="list"
style="width: 100%"
:class-option="classOption1"
><div v-text="scope.row.mo_task_code"></div></vue-seamless-scroll>
</template> -->
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="production_task_code" label="生产任务单" align="center" />
<el-table-column prop="material_name" label="产品名称" align="center" />
<el-table-column prop="carry_code" label="料箱编号" align="center" />
<el-table-column prop="qty" label="数量" align="center" />
<el-table-column prop="reporter" label="提报人" align="center" />
<el-table-column prop="report_time" label="提报时间" align="center" :width="150" />
</el-table>
</vue-seamless-scroll>
<!-- <dv-scroll-board class="dv-scr-board" :config="config" v-if="type==1" />
<dv-scroll-board class="dv-scr-board" :config="config2" v-if="type==2" /> -->
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1',
'title'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
classOption1() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 2, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 410px;
$box-width: 1220px;
#centerRight1 {
padding: 16px;
padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 1120px;
height: 320px;
}
}
}
.seamless-warp {
height: 285px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table td{
font-size: 12px;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
</style>
+384
View File
@@ -0,0 +1,384 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ title }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class="jc-center body-box" v-if="type=='sb01'">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" />
<el-table-column prop="name" label="姓名" align="center" />
<el-table-column label="日/月工时(h)" align="center" >
<template slot-scope="scope">
{{ scope.row.work_hour +'/' + scope.row.month_work_hour}}
</template>
</el-table-column>
<el-table-column label="日/月执行数" align="center" >
<template slot-scope="scope">
{{ scope.row.excute_count +'/' + scope.row.month_excute_count}}
</template>
</el-table-column>
<!-- <el-table-column prop="month_work_hour" label="月工时/h" align="center" /> -->
<!-- <el-table-column prop="month_excute_count" label="月执行数" align="center" /> -->
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="name" label="姓名" align="center" />
<el-table-column label="日/月工时(h)" align="center" >
<template slot-scope="scope">
{{ scope.row.work_hour +'/' + scope.row.month_work_hour}}
</template>
</el-table-column>
<el-table-column label="日/月执行数" align="center" >
<template slot-scope="scope">
{{ scope.row.excute_count +'/' + scope.row.month_excute_count}}
</template>
</el-table-column>
</el-table>
</vue-seamless-scroll>
</div>
<div class="jc-center body-box" v-if="type=='sb03'">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" />
<el-table-column prop="name" label="姓名" align="center" />
<el-table-column prop="work_hour" label="工时汇总/h" align="center" >
</el-table-column>
<el-table-column prop="excute_count" label="执行数" align="center" >
</el-table-column>
<!-- <el-table-column prop="month_work_hour" label="月工时/h" align="center" /> -->
<!-- <el-table-column prop="month_excute_count" label="月执行数" align="center" /> -->
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="name" label="姓名" align="center" />
<el-table-column prop="work_hour" label="工时汇总/h" align="center" >
</el-table-column>
<el-table-column prop="excute_count" label="执行数" align="center" >
</el-table-column>
</el-table>
</vue-seamless-scroll>
</div>
<div class="jc-center body-box" v-if="type=='sb02'">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" />
<el-table-column prop="eqp_code" label="设备编码" align="center" />
<el-table-column prop="eqp_name" label="设备名称" align="center" :width="210" />
<el-table-column prop="status" label="报警状态" align="center" />
<el-table-column prop="andon_time" label="报警时间" align="center" :width="160" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="eqp_code" label="设备编码" align="center" />
<el-table-column prop="eqp_name" label="设备名称" align="center" :width="210" />
<el-table-column prop="status" label="报警状态" align="center" />
<el-table-column prop="andon_time" label="报警时间" align="center" :width="160" />
</el-table>
</vue-seamless-scroll>
</div>
<div class="jc-center body-box" v-if="type=='mj01'">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="mold_name" label="模具信息" align="center" />
<el-table-column prop="apply_name" label="报修名称" align="center" :min-width="160" />
<el-table-column prop="applyer_name" label="报修人" align="center" />
<el-table-column prop="modifyer_name" label="维修人" align="center" />
<el-table-column prop="work_hour" label="工时" align="center" />
<!-- <el-table-column prop="responsible_name" label="复核人" align="center" /> -->
<el-table-column prop="status" label="状态" align="center" />
<el-table-column prop="complete_time" label="完成时间" align="center" :width="160" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="mold_name" label="模具信息" align="center" />
<el-table-column prop="apply_name" label="报修名称" align="center" :min-width="160" />
<el-table-column prop="applyer_name" label="报修人" align="center" />
<el-table-column prop="modifyer_name" label="维修人" align="center" />
<el-table-column prop="work_hour" label="工时" align="center" />
<!-- <el-table-column prop="responsible_name" label="复核人" align="center" /> -->
<el-table-column prop="status" label="状态" align="center" />
<el-table-column prop="complete_time" label="完成时间" align="center" :width="160" />
</el-table>
</vue-seamless-scroll>
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1',
'title'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 4, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 4, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 270px;
$box-width: calc( 100% - 0px );
#centerRight1 {
padding: 16px;
// padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 1120px;
height: 210px;
}
}
}
.seamless-warp {
height: 140px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .bottom tr:nth-child(even) {
background-color: #092142;
}
::v-deep .bottom tr:hover {
background-color: #092142;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
</style>
+221
View File
@@ -0,0 +1,221 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ title }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class=" jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column prop="mo_task_code" label="单据编号" align="center" />
<el-table-column prop="equip_workline_name" label="设备名称" align="center" />
<el-table-column prop="create_time" label="任务生成时间" align="center" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column prop="mo_task_code" label="单据编号" align="center" />
<el-table-column prop="equip_workline_name" label="设备名称" align="center" />
<el-table-column prop="create_time" label="任务生成时间" align="center" />
</el-table>
</vue-seamless-scroll>
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'title'
],
data() {
return {
config: {
header: [
'单据编号',
'设备/产线名称',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [40],
align: ['center']
},
config1: {
header: [
'单据编号1',
'设备/产线名称',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [40],
align: ['center']
}
}
},
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 520px;
$box-width: 633px;
#centerRight1 {
padding: 16px;
padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 580px;
height: 320px;
}
}
}
.seamless-warp {
height: 360px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .bottom tr:nth-child(even) {
background-color: #092142;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
</style>
+330
View File
@@ -0,0 +1,330 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ title }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class=" jc-center body-box" v-if="type==1 || type==2 || type==3">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="eqp_code" label="设备编码" align="center" />
<el-table-column prop="eqp_name" label="设备名称" align="center" :width="160" />
<el-table-column prop="excuter_name" label="执行人" align="center" v-if="type==1" />
<el-table-column prop="excuter_name" label="报修人" align="center" v-if="type==2" />
<el-table-column prop="excuter_name" label="复核人" align="center" v-if="type==3" />
<el-table-column prop="create_time" label="发起时间" align="center" :width="160" />
</el-table>
<el-table
v-if="hasMatch==true"
:data="list"
style="width: 100%"
class="bottom"
:row-class-name="getRowClass"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="eqp_code" label="设备编码" align="center" />
<el-table-column prop="eqp_name" label="设备名称" align="center" :width="160" />
<el-table-column prop="excuter_name" label="执行人" align="center" v-if="type==1" />
<el-table-column prop="excuter_name" label="报修人" align="center" v-if="type==2" />
<el-table-column prop="excuter_name" label="复核人" align="center" v-if="type==3" />
<el-table-column prop="create_time" label="发起时间" align="center" :width="160" />
</el-table>
<vue-seamless-scroll
v-else
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="eqp_code" label="设备编码" align="center" />
<el-table-column prop="eqp_name" label="设备名称" align="center" :width="160" />
<el-table-column prop="excuter_name" label="执行人" align="center" v-if="type==1" />
<el-table-column prop="excuter_name" label="报修人" align="center" v-if="type==2" />
<el-table-column prop="excuter_name" label="复核人" align="center" v-if="type==3" />
<el-table-column prop="create_time" label="发起时间" align="center" :width="160" />
</el-table>
</vue-seamless-scroll>
</div>
<div class=" jc-center body-box" v-else>
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="mold_code" label="模具编码" align="center" />
<el-table-column prop="mold_name" label="模具名称" align="center" :width="160" />
<el-table-column prop="excuter_name" label="执行人" align="center" v-if="type=='mj01' || type=='mj02'" />
<el-table-column prop="excuter_name" label="报修人" align="center" v-if="type=='mj03'" />
<el-table-column prop="create_time" label="开始时间" align="center" :width="160" v-if="type=='mj01'" />
<el-table-column prop="create_time" label="报修时间" align="center" :width="160" v-if="type=='mj02'" />
<el-table-column prop="create_time" label="创建时间" align="center" :width="160" v-if="type=='mj03'" />
</el-table>
<el-table
v-if="hasMatch==true"
:data="list"
style="width: 100%"
class="bottom"
:row-class-name="getRowClass"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="mold_code" label="模具编码" align="center" />
<el-table-column prop="mold_name" label="模具名称" align="center" :width="160" />
<el-table-column prop="excuter_name" label="执行人" align="center" v-if="type=='mj01' || type=='mj02'" />
<el-table-column prop="excuter_name" label="报修人" align="center" v-if="type=='mj03'" />
<el-table-column prop="create_time" label="开始时间" align="center" :width="160" v-if="type=='mj01'" />
<el-table-column prop="create_time" label="报修时间" align="center" :width="160" v-if="type=='mj02'" />
<el-table-column prop="create_time" label="创建时间" align="center" :width="160" v-if="type=='mj03'" />
</el-table>
<vue-seamless-scroll
v-else
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column
type="index"
width="50" label="序号" align="center" />
<el-table-column prop="mold_code" label="模具编码" align="center" />
<el-table-column prop="mold_name" label="模具名称" align="center" :width="160" />
<el-table-column prop="excuter_name" label="执行人" align="center" v-if="type=='mj01' || type=='mj02'" />
<el-table-column prop="excuter_name" label="报修人" align="center" v-if="type=='mj03'" />
<el-table-column prop="create_time" label="开始时间" align="center" :width="160" v-if="type=='mj01'" />
<el-table-column prop="create_time" label="报修时间" align="center" :width="160" v-if="type=='mj02'" />
<el-table-column prop="create_time" label="创建时间" align="center" :width="160" v-if="type=='mj03'" />
</el-table>
</vue-seamless-scroll>
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'title',
'hasMatch'
],
data() {
return {
isPlaying:false,
config: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [40],
align: ['center']
},
config1: {
header: [
'单据编号1',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [40],
align: ['center']
}
}
},
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 6, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
methods: {
getRowClass(row,rowindex){
if (row.row.is_priority== '1') {
return 'rowactive';
} else {
return '';
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 380px;
$box-width: 633px;
#centerRight1 {
padding: 16px;
// padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 580px;
height: 120px;
}
}
}
.seamless-warp {
height: 240px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .bottom tr:nth-child(even) {
background-color: #092142;
}
::v-deep .el-table tr.rowactive{
color: red;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
</style>
+246
View File
@@ -0,0 +1,246 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<div class="d-flex" style="display: block;width: 100%;text-align: center;">
<!-- <span>
<icon name="chart-bar" class="text-icon"></icon>
</span> -->
<div class="d-flex" style="display: block;width: 100%;text-align: center;font-size: 18px;font-weight: bold;">
<span class=" text">{{ title }}</span>
<!-- <dv-decoration-3 class="dv-dec-3" /> -->
</div>
</div>
<div class="jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column prop="production_task_code" label="生产任务单" align="center" />
<el-table-column prop="material_name" label="产品名称" align="center" />
<el-table-column prop="work_line" label="产线信息" align="center" />
<el-table-column prop="code_batch" label="批次号" align="center" :width="140" />
<el-table-column prop="plan_qty" label="计划数" align="center" :width="120" />
<el-table-column prop="complete_rate" label="完成率" align="center" :width="120" />
<el-table-column prop="start_time" label="开工时间" align="center" :width="150" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column prop="production_task_code" label="生产任务单" align="center" />
<el-table-column prop="material_name" label="产品名称" align="center" />
<el-table-column prop="work_line" label="产线信息" align="center" />
<el-table-column prop="code_batch" label="批次号" align="center" :width="140" />
<el-table-column prop="plan_qty" label="计划数" align="center" :width="120" />
<el-table-column prop="complete_rate" label="完成率" align="center" :width="120" >
<template slot-scope="scope">
<el-progress :text-inside="true" :stroke-width="22" :percentage="scope.row.complete_rate" :status="scope.row.complete_rate<90?'success':'warning'"></el-progress>
</template>
</el-table-column>
<el-table-column prop="start_time" label="开工时间" align="center" :width="150" />
</el-table>
</vue-seamless-scroll>
<!-- <dv-scroll-board class="dv-scr-board" :config="config" v-if="type==1" />
<dv-scroll-board class="dv-scr-board" :config="config2" v-if="type==2" /> -->
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1',
'title'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 3, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 420px;
$box-width: 1220px;
#centerRight1 {
padding: 16px;
padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 1120px;
height: 320px;
}
}
}
.seamless-warp {
height: 280px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table td{
font-size: 14px;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .el-table::before {
height: 0;
}
::v-deep .el-table tr:hover>td{
background-color: #034b7a !important;
}
</style>
+238
View File
@@ -0,0 +1,238 @@
<template>
<div id="centerRight1">
<div class="bg-color-black">
<!-- <div class="d-flex pl-2">
<span>
<icon name="chart-line" class="text-icon"></icon>
</span>
<div class="d-flex">
<span class="fs-xl text mx-2">任务列表</span>
</div>
</div> -->
<div class="jc-center body-box">
<el-table
:data="list"
style="width: 100%"
class="top"
:header-cell-style="{background:'transparent',color:'#fff'}"
>
<el-table-column prop="mo_task_code" label="生产任务单" align="center" :width="180" />
<el-table-column prop="material_name" label="产品名称" align="center" :width="200" />
<el-table-column prop="workline_name" label="产线名称" align="center" :width="200" />
<el-table-column prop="plan_qty" label="计划数" align="center" />
<el-table-column prop="complete_qty" label="完成数" align="center" />
<el-table-column prop="report_qty" label="提报数" align="center" />
<el-table-column prop="report_name" label="提报人" align="center" />
<el-table-column prop="report_time" label="提报时间" align="center" :width="200" />
</el-table>
<vue-seamless-scroll
:data="list"
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
<el-table
:data="list"
style="width: 100%"
class="bottom"
>
<el-table-column prop="mo_task_code" label="生产任务单" align="center" :width="180" />
<el-table-column prop="material_name" label="产品名称" align="center" :width="200" />
<el-table-column prop="workline_name" label="产线名称" align="center" :width="200" />
<el-table-column prop="plan_qty" label="计划数" align="center" />
<el-table-column prop="complete_qty" label="完成数" align="center" />
<el-table-column prop="report_qty" label="提报数" align="center" />
<el-table-column prop="report_name" label="提报人" align="center" />
<el-table-column prop="report_time" label="提报时间" align="center" :width="200" />
</el-table>
</vue-seamless-scroll>
<!-- <dv-scroll-board class="dv-scr-board" :config="config" v-if="type==1" />
<dv-scroll-board class="dv-scr-board" :config="config2" v-if="type==2" /> -->
</div>
</div>
</div>
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
components: {
vueSeamlessScroll
},
props:[
'list',
'type',
'list1'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 3, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
config: {
header: [
'生产任务单',
'产品名称',
'产线信息',
'提报类型',
'数量',
'提报人',
'计划数',
'剩余计划数',
'提报时间'],
data:this.list,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
},
config1: {
header: [
'单据编号',
'设备/产线名称',
'执行人',
'任务生成时间',],
data:this.list1,
// data: [
// ['组件1', 'dev-1', "<span class='colorGrass'>↑75%</span>"],
// ['组件2', 'dev-2', "<span class='colorRed'>↓33%</span>"],
// ['组件3', 'dev-3', "<span class='colorGrass'>↑100%</span>"],
// ['组件4', 'rea-1', "<span class='colorGrass'>↑94%</span>"],
// ['组件5', 'rea-2', "<span class='colorGrass'>↑95%</span>"],
// ['组件6', 'fix-2', "<span class='colorGrass'>↑63%</span>"],
// ['组件7', 'fix-4', "<span class='colorGrass'>↑84%</span>"],
// ['组件8', 'fix-7', "<span class='colorRed'>↓46%</span>"],
// ['组件9', 'dev-2', "<span class='colorRed'>↓13%</span>"],
// ['组件10', 'dev-9', "<span class='colorGrass'>↑76%</span>"]
// ],
rowNum: 7, //表格行数
headerHeight: 35,
headerBGC: '#0f1325', //表头
oddRowBGC: '#0f1325', //奇数行
evenRowBGC: '#171c33', //偶数行
index: true,
columnWidth: [30],
align: ['center']
}
}
},
mounted() {
console.log('list',this.list)
},
}
</script>
<style lang="scss" scoped>
$box-height: 420px;
$box-width: 1220px;
#centerRight1 {
padding: 16px;
padding-top: 20px;
height: $box-height;
width: $box-width;
border-radius: 5px;
.bg-color-black {
height: $box-height - 30px;
border-radius: 10px;
}
.text {
color: #c3cbde;
}
.body-box {
border-radius: 10px;
overflow: hidden;
.dv-scr-board {
width: 1120px;
height: 320px;
}
}
}
.seamless-warp {
height: 300px;
overflow: hidden;
}
.min {
display: flex;
width: 100%;
}
::v-deep .top .el-table__body-wrapper {
display: none;
border-bottom: 0;
}
::v-deep .top .el-table__header-wrapper {
border-bottom: 0;
}
::v-deep .bottom .el-table__header-wrapper {
display: none;
width: 100%;
border-bottom: 0;
}
::v-deep .el-table tr,.el-table tr{
background-color: transparent;
}
::v-deep .el-table, .el-table__expanded-cell,th{
background-color: transparent;
color:#fff
}
::v-deep .el-table thead tr{
background-image: linear-gradient(
to right,
#092142 12%,
#034b7a 50%,
#092142 88%
);
}
::v-deep .el-table td, .el-table th.is-leaf,.el-table th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .top th.el-table__cell.is-leaf{
border-bottom: 0;
}
::v-deep .el-table td{
font-size: 14px;
}
::v-deep .el-table__body-wrapper .cell {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
::v-deep .el-table::before {
height: 0;
}
</style>
+274
View File
@@ -0,0 +1,274 @@
<template>
<div id="center">
<div class="up">
</div>
<div class="down">
<!-- <div class="ranking bg-color-black">
<span>
<icon name="chart-pie" class="text-icon"></icon>
</span>
<span class="fs-xl text mx-2 mb-1 pl-3">年度负责人组件达标榜</span>
<dv-scroll-ranking-board class="dv-scr-rank-board mt-1" :config="ranking" />
</div> -->
<div class="percent">
<div >本月产量:<span >{{ data.month_output }}</span></div>
<div >当日产量:<span >{{ data.day_output }}</span></div>
<div>本月合格率:<span >{{ data.month_pass_rate +'%'}} </span></div>
<div>当日合格率:<span >{{ data.day_pass_rate+'%'}}</span></div>
<!-- <div class="water">
<dv-water-level-pond class="dv-wa-le-po" :config="water" />
</div> -->
</div>
</div>
</div>
</template>
<script>
// import CenterChart from '@/components/echart/center/centerChartRate'
// import CenterChart1 from '@/components/echart/center/centerChartRate1'
export default {
props:[
'data'
],
data() {
return {
titleItem: [
{
title: '今年累计任务建次数',
number: {
number: [120],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '本月累计任务次数',
number: {
number: [18],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今日累计任务次数',
number: {
number: [2],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今年失败任务次数',
number: {
number: [14],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今年成功任务次数',
number: {
number: [106],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今年达标任务个数',
number: {
number: [100],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
}
],
ranking: {
data: [
{
name: '周口',
value: 55
},
{
name: '南阳',
value: 120
},
{
name: '西峡',
value: 78
},
{
name: '驻马店',
value: 66
},
{
name: '新乡',
value: 80
},
{
name: '新乡2',
value: 80
},
{
name: '新乡3',
value: 80
},
{
name: '新乡4',
value: 80
},
{
name: '新乡5',
value: 80
},
{
name: '新乡6',
value: 80
}
],
carousel: 'single',
unit: '人'
},
water: {
data: [24, 45],
shape: 'roundRect',
formatter: '{value}%',
waveNum: 3
},
// 通过率和达标率的组件复用数据
rate: [
{
id: 'centerRate1',
tips: 60,
colorData: {
textStyle: '#3fc0fb',
series: {
color: ['#00bcd44a', 'transparent'],
dataColor: {
normal: '#03a9f4',
shadowColor: '#97e2f5'
}
}
}
},
{
id: 'centerRate2',
tips: 40,
colorData: {
textStyle: '#67e0e3',
series: {
color: ['#faf3a378', 'transparent'],
dataColor: {
normal: '#ff9800',
shadowColor: '#fcebad'
}
}
}
}
]
}
},
components: {
// CenterChart,
// CenterChart1
}
}
</script>
<style lang="scss" scoped>
#center {
display: flex;
flex-direction: column;
.up {
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
.item {
border-radius: 6px;
padding-top: 8px;
margin-top: 8px;
width: 32%;
height: 150px;
.dv-dig-flop {
width: 150px;
height: 30px;
}
}
}
.down {
padding: 6px 4px;
padding-bottom: 0;
width: 100%;
display: flex;
height: 255px;
justify-content: space-between;
.bg-color-black {
border-radius: 5px;
}
.ranking {
padding: 10px;
width: 59%;
.dv-scr-rank-board {
height: 225px;
}
}
.percent {
width: 100%;
padding: 60px 20px;
// text-align: center;
line-height: 70px;
font-size: 18px;
// display: flex;
// flex-wrap: wrap;
span{
font-size: 18px;
width: 30%;
display: inline-block;
}
.item {
width: 50%;
height: 198px;
span {
margin-top: 8px;
font-size: 18px;
display: flex;
font-weight: bold;
justify-content: center;
}
}
.water {
width: 100%;
.dv-wa-le-po {
height: 120px;
}
}
}
}
}
</style>
+330
View File
@@ -0,0 +1,330 @@
<template>
<div id="center">
<div class="up">
</div>
<div class="down">
<!-- <div class="ranking bg-color-black">
<span>
<icon name="chart-pie" class="text-icon"></icon>
</span>
<span class="fs-xl text mx-2 mb-1 pl-3">年度负责人组件达标榜</span>
<dv-scroll-ranking-board class="dv-scr-rank-board mt-1" :config="ranking" />
</div> -->
<div class="percent">
<div class="item bg-color-black">
<span>设备/模具故障时间(h)</span>
<!-- <vue-seamless-scroll
class="seamless-warp"
style="width: 100%"
:class-option="classOption"
>
</vue-seamless-scroll> -->
<div class="num">
<div>{{ (data.equipFaultTime/(60*60)).toFixed(2) }}</div>
<div>{{ (data.moldFaultTime/(60*60)).toFixed(2) }}</div>
</div>
<!-- <CenterChart1
:id="rate[0].id"
:tips="data.monthCount"
:colorObj="rate[0].colorData"
/> -->
</div>
<div class="item bg-color-black">
<span>设备/模具维修时间(h)</span>
<div class="num">
<div>{{ (data.equipRepairTime/(60*60)).toFixed(2) }}</div>
<div>{{ (data.moldRepairTime/(60*60)).toFixed(2) }}</div>
</div>
</div>
<div class="item bg-color-black">
<span>设备/模具保养次数</span>
<div class="num">
<div>{{ data.equipMaintainCount }}</div>
<div>{{ data.moldMaintainCount }}</div>
</div>
</div>
<div class="item bg-color-black">
<span >本月故障时间(h)</span>
<div class="num">
<div>{{ (data.equipMonthFaultTime/(60*60)).toFixed(2) }}</div>
<div>{{ (data.moldMonthFaultTime/(60*60)).toFixed(2) }}</div>
</div>
</div>
<!-- <div class="water">
<dv-water-level-pond class="dv-wa-le-po" :config="water" />
</div> -->
</div>
</div>
</div>
</template>
<script>
// import CenterChart from '@/components/echart/center/centerChartRate'
// import CenterChart1 from '@/components/echart/center/centerChartRate1'
// import vueSeamlessScroll from 'vue-seamless-scroll';
export default {
props:[
'data'
],
computed: {
// 滚动条的配置项
classOption() {
return {
step: 0.3, // 数值越大速度滚动越快
limitMoveNum: 7, // 开始无缝滚动的数据量 this.list
hoverStop: true, // 是否开启鼠标悬停stop
direction: 1, // 0向下 1向上 2向左 3向右
openWatch: true, // 开启数据实时监控刷新dom
singleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
waitTime: 1000, // 单步运动停止的时间(默认值1000ms)
};
},
},
data() {
return {
titleItem: [
{
title: '今年累计任务建次数',
number: {
number: [120],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '本月累计任务次数',
number: {
number: [18],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今日累计任务次数',
number: {
number: [2],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今年失败任务次数',
number: {
number: [14],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今年成功任务次数',
number: {
number: [106],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今年达标任务个数',
number: {
number: [100],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
}
],
ranking: {
data: [
{
name: '周口',
value: 55
},
{
name: '南阳',
value: 120
},
{
name: '西峡',
value: 78
},
{
name: '驻马店',
value: 66
},
{
name: '新乡',
value: 80
},
{
name: '新乡2',
value: 80
},
{
name: '新乡3',
value: 80
},
{
name: '新乡4',
value: 80
},
{
name: '新乡5',
value: 80
},
{
name: '新乡6',
value: 80
}
],
carousel: 'single',
unit: '人'
},
water: {
data: [24, 45],
shape: 'roundRect',
formatter: '{value}%',
waveNum: 3
},
// 通过率和达标率的组件复用数据
rate: [
{
id: 'centerRate1',
tips: 60,
colorData: {
textStyle: '#3fc0fb',
series: {
color: ['#00bcd44a', 'transparent'],
dataColor: {
normal: '#03a9f4',
shadowColor: '#97e2f5'
}
}
}
},
{
id: 'centerRate2',
tips: 40,
colorData: {
textStyle: '#67e0e3',
series: {
color: ['#faf3a378', 'transparent'],
dataColor: {
normal: '#ff9800',
shadowColor: '#fcebad'
}
}
}
}
]
}
},
components: {
// vueSeamlessScroll
// CenterChart,
// CenterChart1
}
}
</script>
<style lang="scss" scoped>
#center {
display: flex;
flex-direction: column;
.up {
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
.item {
border-radius: 6px;
padding-top: 8px;
margin-top: 8px;
width: 33%;
height: 150px;
.dv-dig-flop {
width: 150px;
height: 30px;
}
}
}
.down {
padding: 6px 4px;
padding-bottom: 0;
width: 100%;
display: flex;
height: 255px;
justify-content: space-between;
.bg-color-black {
border-radius: 5px;
}
.ranking {
padding: 10px;
width: 59%;
.dv-scr-rank-board {
height: 225px;
}
}
.percent {
width: 100%;
display: flex;
flex-wrap: wrap;
.item {
width: 50%;
height: 198px;
span {
margin-top: 8px;
font-size: 12px;
display: flex;
justify-content: center;
}
}
.water {
width: 100%;
.dv-wa-le-po {
height: 120px;
}
}
}
}
}
.num{
width: 120px;
height: 120px;
border: 2px solid;
border-image: linear-gradient(to right, #8f41e9, #578aef) 1;
margin: 0 auto;
border-radius: 120px;
text-align: center;
line-height: 60px;
margin-top: 20px;
}
</style>
+292
View File
@@ -0,0 +1,292 @@
<template>
<div id="center">
<div class="up">
</div>
<div class="down">
<!-- <div class="ranking bg-color-black">
<span>
<icon name="chart-pie" class="text-icon"></icon>
</span>
<span class="fs-xl text mx-2 mb-1 pl-3">年度负责人组件达标榜</span>
<dv-scroll-ranking-board class="dv-scr-rank-board mt-1" :config="ranking" />
</div> -->
<div class="percent">
<div class="item bg-color-black">
<span>开工任务数</span>
<CenterChart1
:id="rate[0].id"
:tips="data.mo_task_count"
:colorObj="rate[0].colorData"
/>
</div>
<div class="item bg-color-black">
<span>质检任务数</span>
<CenterChart1
:id="rate[0].id"
:tips="data.qc_all_count"
:colorObj="rate[0].colorData"
/>
</div>
<div class="item bg-color-black">
<span>校验完成任务数</span>
<CenterChart1
:id="rate[0].id"
:tips="data.qc_complete_count"
:colorObj="rate[1].colorData"
/>
</div>
<div class="item bg-color-black">
<span>质检通过任务数</span>
<CenterChart1
:id="rate[1].id"
:tips="data.qc_ok_count"
:colorObj="rate[1].colorData"
/>
</div>
<!-- <div class="water">
<dv-water-level-pond class="dv-wa-le-po" :config="water" />
</div> -->
</div>
</div>
</div>
</template>
<script>
// import CenterChart from '@/components/echart/center/centerChartRate'
import CenterChart1 from '@/components/echart/center/centerChartRate1'
export default {
props:[
'data'
],
data() {
return {
titleItem: [
{
title: '今年累计任务建次数',
number: {
number: [120],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '本月累计任务次数',
number: {
number: [18],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今日累计任务次数',
number: {
number: [2],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今年失败任务次数',
number: {
number: [14],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今年成功任务次数',
number: {
number: [106],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
},
{
title: '今年达标任务个数',
number: {
number: [100],
toFixed: 1,
textAlign: 'left',
content: '{nt}',
style: {
fontSize: 26
}
}
}
],
ranking: {
data: [
{
name: '周口',
value: 55
},
{
name: '南阳',
value: 120
},
{
name: '西峡',
value: 78
},
{
name: '驻马店',
value: 66
},
{
name: '新乡',
value: 80
},
{
name: '新乡2',
value: 80
},
{
name: '新乡3',
value: 80
},
{
name: '新乡4',
value: 80
},
{
name: '新乡5',
value: 80
},
{
name: '新乡6',
value: 80
}
],
carousel: 'single',
unit: '人'
},
water: {
data: [24, 45],
shape: 'roundRect',
formatter: '{value}%',
waveNum: 3
},
// 通过率和达标率的组件复用数据
rate: [
{
id: 'centerRate1',
tips: 60,
colorData: {
textStyle: '#3fc0fb',
series: {
color: ['#00bcd44a', 'transparent'],
dataColor: {
normal: '#03a9f4',
shadowColor: '#97e2f5'
}
}
}
},
{
id: 'centerRate2',
tips: 40,
colorData: {
textStyle: '#67e0e3',
series: {
color: ['#faf3a378', 'transparent'],
dataColor: {
normal: '#ff9800',
shadowColor: '#fcebad'
}
}
}
}
]
}
},
components: {
// CenterChart,
CenterChart1
}
}
</script>
<style lang="scss" scoped>
#center {
display: flex;
flex-direction: column;
.up {
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: space-around;
.item {
border-radius: 6px;
padding-top: 8px;
margin-top: 8px;
width: 32%;
height: 150px;
.dv-dig-flop {
width: 150px;
height: 30px;
}
}
}
.down {
padding: 6px 4px;
padding-bottom: 0;
width: 100%;
display: flex;
height: 255px;
justify-content: space-between;
.bg-color-black {
border-radius: 5px;
}
.ranking {
padding: 10px;
width: 59%;
.dv-scr-rank-board {
height: 225px;
}
}
.percent {
width: 100%;
display: flex;
flex-wrap: wrap;
.item {
width: 50%;
height: 198px;
span {
margin-top: 8px;
font-size: 14px;
display: flex;
justify-content: center;
}
}
.water {
width: 100%;
.dv-wa-le-po {
height: 120px;
}
}
}
}
}
</style>

Some files were not shown because too many files have changed in this diff Show More