新版大屏顶部
This commit is contained in:
@@ -2,7 +2,8 @@
|
||||
<section class="AiDvWrapper" :class="'AiDvWrapper' + theme">
|
||||
<dv-full-screen-container>
|
||||
<div class="viewPanel column" flex>
|
||||
<component :is="headerComponent" v-bind="{...$props,...$data}" @fullscreen="handleFullScreen" @setting="e=>dialog=e"/>
|
||||
<component :is="headerComponent" v-bind="{...$props,...$data}"
|
||||
@fullscreen="handleFullScreen" @setting="e=>dialog=e" @change="e=>$emit('change',e)"/>
|
||||
<div class="fill">
|
||||
<slot/>
|
||||
</div>
|
||||
@@ -23,10 +24,11 @@ import {fullScreenContainer} from '@jiaminghi/data-view'
|
||||
import AiSprite from "../../AiSprite";
|
||||
import Classic from "./layout/classic";
|
||||
import Vue from "vue"
|
||||
import Primary from "./layout/primary";
|
||||
|
||||
export default {
|
||||
name: "AiDvWrapper",
|
||||
components: {Classic, AiSprite},
|
||||
components: {Primary, Classic, AiSprite},
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'change'
|
||||
@@ -44,7 +46,7 @@ export default {
|
||||
/**
|
||||
* 布局方案:black,classic
|
||||
*/
|
||||
type: {default: "classic"}
|
||||
type: {default: "black"}
|
||||
},
|
||||
computed: {
|
||||
active: {
|
||||
@@ -56,7 +58,8 @@ export default {
|
||||
}
|
||||
},
|
||||
headerComponent: v => ({
|
||||
classic: Classic
|
||||
classic: Classic,
|
||||
black: Primary
|
||||
}[v.type])
|
||||
},
|
||||
watch: {
|
||||
|
||||
BIN
components/layout/AiDvWrapper/assets/fullscreenIcon.png
Normal file
BIN
components/layout/AiDvWrapper/assets/fullscreenIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 592 B |
BIN
components/layout/AiDvWrapper/assets/headerPrimaryBG_lb.png
Normal file
BIN
components/layout/AiDvWrapper/assets/headerPrimaryBG_lb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 334 B |
BIN
components/layout/AiDvWrapper/assets/headerPrimaryBg_rb.png
Normal file
BIN
components/layout/AiDvWrapper/assets/headerPrimaryBg_rb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 288 B |
BIN
components/layout/AiDvWrapper/assets/settingIcon.png
Normal file
BIN
components/layout/AiDvWrapper/assets/settingIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 666 B |
BIN
components/layout/AiDvWrapper/assets/timeIcon.png
Normal file
BIN
components/layout/AiDvWrapper/assets/timeIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
BIN
components/layout/AiDvWrapper/assets/weatherIcon.png
Normal file
BIN
components/layout/AiDvWrapper/assets/weatherIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 KiB |
@@ -220,7 +220,7 @@ export default {
|
||||
width: 760px;
|
||||
height: 124px;
|
||||
background-repeat: no-repeat;
|
||||
background-image: url("./../assets/headerCenterBorderLight.svg"), url("./../assets/headerCenterBorder.svg"), url("./../assets/headerCenterBg2.png");
|
||||
background-image: url("../assets/headerCenterBorderLight.svg"), url("../assets/headerCenterBorder.svg"), url("../assets/headerCenterBg2.png");
|
||||
background-position: center bottom, center 0, center -20px;
|
||||
overflow: visible;
|
||||
|
||||
|
||||
163
components/layout/AiDvWrapper/layout/primary.vue
Normal file
163
components/layout/AiDvWrapper/layout/primary.vue
Normal file
@@ -0,0 +1,163 @@
|
||||
<template>
|
||||
<section class="primary">
|
||||
<div flex class="content">
|
||||
<b class="headerTitle" v-text="title"/>
|
||||
<el-tabs class="fill">
|
||||
<el-tab-pane v-for="tab in tabs" :key="tab.id" :label="tab.label" @click.native="$emit('change',tab.id)"/>
|
||||
</el-tabs>
|
||||
<div class="rightPane" flex>
|
||||
<div class="item" v-text="currentTime"/>
|
||||
<div class="item setting mar-l24" @click.stop="$emit('setting',true)"/>
|
||||
<div class="item fullscreen mar-l14" @click.stop="$emit('fullscreen')"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: "primary",
|
||||
props: {
|
||||
title: String,
|
||||
views: {default: () => []},
|
||||
active: String,
|
||||
currentTime: {default: null}
|
||||
},
|
||||
computed: {
|
||||
tabs: v => [
|
||||
...v.views,
|
||||
{label: "测试哦哦", id: 1},
|
||||
{label: "测试哦哦", id: 2},
|
||||
{label: "测试哦哦", id: 3},
|
||||
{label: "测试哦哦", id: 4},
|
||||
{label: "测试哦哦", id: 5},
|
||||
{label: "测试哦哦", id: 6},
|
||||
{label: "测试哦哦", id: 7},
|
||||
{label: "测试哦哦", id: 8},
|
||||
{label: "测试哦哦", id: 9},
|
||||
{label: "测试哦哦", id: 10},
|
||||
]
|
||||
},
|
||||
methods: {
|
||||
getWeather() {
|
||||
this.$request.post("/app/weather/queryWeather").then(res => {
|
||||
if (res?.data) {
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// this.getWeather()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.primary {
|
||||
width: 100%;
|
||||
height: 96px;
|
||||
padding: 0 48px;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
|
||||
.content {
|
||||
height: 100%;
|
||||
background-image: url("../assets/headerPrimaryBG_lb.png"), url("../assets/headerPrimaryBg_rb.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: left bottom, right bottom;
|
||||
|
||||
.headerTitle {
|
||||
font-size: 38px;
|
||||
font-weight: 400;
|
||||
font-family: "zihun100hao-fangfangxianfengti";
|
||||
line-height: 62px;
|
||||
letter-spacing: 1.52px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
:deep(.el-tabs) {
|
||||
margin-left: 92px;
|
||||
|
||||
.el-tabs__header {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.el-tabs__nav-wrap {
|
||||
padding: 0 24px;
|
||||
|
||||
&:after {
|
||||
content: none;
|
||||
}
|
||||
}
|
||||
|
||||
.el-tabs__active-bar {
|
||||
width: 88px;
|
||||
background: linear-gradient(270deg, #02feff00 0%, #02feffff 51%, #02feff00 100%);
|
||||
}
|
||||
|
||||
.el-tabs__item {
|
||||
color: #fff;
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
font-family: "PingFang SC";
|
||||
padding: 0 16px;
|
||||
|
||||
&.is-active {
|
||||
color: #02FEFF;
|
||||
}
|
||||
}
|
||||
|
||||
.el-tabs__nav-prev {
|
||||
padding-right: 14px;
|
||||
background-image: linear-gradient(270deg, #0b0d0cff 0%, #0f3031ff 72%, #02feffff 100%);
|
||||
|
||||
background-repeat: no-repeat;
|
||||
background-position: right center;
|
||||
background-size: 6px 32px;
|
||||
|
||||
.el-icon-arrow-left:before {
|
||||
color: #02FEFF;
|
||||
content: "◀";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.el-tabs__nav-next {
|
||||
padding-left: 14px;
|
||||
background-image: linear-gradient(270deg, #02feffff 0%, #0f3031ff 28%, #0b0d0cff 100%);
|
||||
background-repeat: no-repeat;
|
||||
background-position: left center;
|
||||
background-size: 6px 32px;
|
||||
|
||||
.el-icon-arrow-right:before {
|
||||
color: #02FEFF;
|
||||
content: "▶";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.rightPane {
|
||||
margin-left: 75px;
|
||||
padding: 0 11px 0 0;
|
||||
|
||||
.item {
|
||||
padding-left: 30px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
background-image: url("../assets/timeIcon.png");
|
||||
background-repeat: no-repeat;
|
||||
background-position: left center;
|
||||
|
||||
&.setting {
|
||||
background-image: url("../assets/settingIcon.png");
|
||||
}
|
||||
|
||||
&.fullscreen {
|
||||
background-image: url("../assets/fullscreenIcon.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user