From d7e24c64a3961040fdc7fec835c2efa5d2f106c0 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期日, 26 九月 2021 19:54:54 +0800
Subject: [PATCH] 弹层层级bug修复v2
---
src/pages/settings/views/generalSettings.vue | 356 +++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 246 insertions(+), 110 deletions(-)
diff --git a/src/pages/settings/views/generalSettings.vue b/src/pages/settings/views/generalSettings.vue
index ab8edcb..b80b46c 100644
--- a/src/pages/settings/views/generalSettings.vue
+++ b/src/pages/settings/views/generalSettings.vue
@@ -1,6 +1,6 @@
<template>
<div class="all" ref="curPage">
- <div class="general-set">
+ <div class="general-seting">
<div class="general-center" ref="left">
<div
class="menu-item"
@@ -9,12 +9,14 @@
v-for="(item, i) in menuArr"
:key="i"
>
- <span class="iconfont" :style="`font-size:${item.size}px;`">{{ item.icon }}</span>
+ <span class="iconfont" :style="`font-size:${item.size}px;`">{{
+ item.icon
+ }}</span>
<span class="title">{{ item.name }}</span>
</div>
</div>
<div class="general-right">
- <div class="lang" v-if="activePage == 0">
+ <!-- <div class="lang" v-if="activePage == 0">
<div class="bar">
<span class="name">璁惧ID</span>
<span class="desc">{{ deviceInfo.server_id }}</span>
@@ -55,8 +57,8 @@
<span class="name">杩愯鏃堕棿</span>
<span class="desc">{{ deviceInfo.runningTime }}</span>
</div>
- </div>
- <div class="lang" v-if="activePage == 1">
+ </div> -->
+ <div class="lang" v-if="activePage == 0">
<div class="min-dur">
<div class="title">鎶撴媿鍓嶅綍鍍忔椂闀�</div>
<div class="entity">
@@ -66,7 +68,8 @@
v-model="fakeObj.min"
id="cut_min_duration"
:min="5 / 1.2"
- :max="100" :step="5 / 1.2"
+ :max="100"
+ :step="5 / 1.2"
@input="min_len = min_video_len"
show-stops
:show-tooltip="true"
@@ -77,8 +80,10 @@
v-model="min_len"
@change="fakeObj.min = +(min_len / 1.2)"
controls-position="right"
- :min="5" :step="5"
- :max="120" step-strictly
+ :min="5"
+ :step="5"
+ :max="120"
+ step-strictly
size="small"
></el-input-number
> s
@@ -94,7 +99,8 @@
id="cut_max_duration"
:min="5 / 1.2"
@input="max_len = max_video_len"
- :max="100" :step="5 / 1.2"
+ :max="100"
+ :step="5 / 1.2"
show-stops
:format-tooltip="formatTooltip"
:show-tooltip="true"
@@ -104,7 +110,9 @@
v-model="max_len"
@change="fakeObj.max = +(max_len / 1.2)"
controls-position="right"
- :min="5" :step="5" step-strictly
+ :min="5"
+ :step="5"
+ step-strictly
:max="120"
size="small"
></el-input-number
@@ -114,8 +122,8 @@
<div class="save-btn" @click="submitAlarm">淇濆瓨</div>
</div>
- <div class="lang" v-if="activePage == 2">
- <div class="title">浜嬩欢澹伴煶</div>
+ <div class="lang" v-if="activePage == 1">
+ <div class="bar title voice-title" style="border: 2px solid #fff;">浜嬩欢澹伴煶</div>
<div class="bar-group">
<div
class="bar"
@@ -125,46 +133,44 @@
ref="soundBar"
>
<div class="left-part">
- <span
- class="icon iconfont"
- style="margin-right: 12px; color: dodgerblue"
- ></span
- >
<span class="name">{{ item.name }}</span>
</div>
<div class="btns">
<span @click="togglePlay(item, i)">
+
+ <span class="iconfont" v-if="!item.isPlay" style="cursor: pointer;">{{playSpan}}</span>
+ <span class="iconfont" v-else style="cursor: pointer;">{{playSpan2}}</span>
+<!--
<i
v-if="!item.isPlay"
class="el-icon-video-play"
style=""
></i>
- <i v-else class="el-icon-video-pause"></i>
+ <i v-else class="el-icon-video-pause"></i> -->
</span>
<span
- class="icon iconfont"
- style="cursor: pointer; color: indianred"
+ class="icon iconfont del"
+ style="cursor: pointer;"
@click="removeSound(item)"
- ></span
+ >{{delspan}}</span
>
</div>
</div>
</div>
- <el-upload
- class="upload-demo"
- drag
- action="https://jsonplaceholder.typicode.com/posts/"
- :http-request="uploadSound"
- v-if="showUpload"
- :show-file-list="false"
- >
- <i class="el-icon-upload"></i>
- <div class="el-upload__text">
- 浜嬩欢澹伴煶鏂囦欢鎷栧埌姝ゅ锛屾垨
- <em>鐐瑰嚮涓婁紶</em>
- <br />浠呮敮鎸乵p3/wma绛夋牸寮�
- </div>
- </el-upload>
+ <div v-if="showUpload" @click.stop >
+ <el-upload
+ class="upload-demo"
+ drag
+ action=""
+ :http-request="uploadSound"
+ :show-file-list="false"
+ >
+ <div class="info">璇峰皢澹伴煶浜嬩欢鏂囦欢鎷栨嫿鍒版澶勶紝鎴�<span class="info-click" >鐐瑰嚮涓婁紶</span></div>
+ <div class="des" v-if="showUpload" @click.stop>浠呮敮鎸乵p3銆亀av绛夋牸寮�</div>
+ </el-upload>
+ </div>
+
+
<div class="add-group">
<div class="add-btn">
<span class="icon iconfont" @click.stop="showUpload = !showUpload"
@@ -174,7 +180,7 @@
</div>
</div>
- <div class="self-setting" v-if="activePage == 3">
+ <div class="self-setting" v-if="activePage == 2">
<div class="top-title">鍥炬爣涓婚</div>
<div class="icon-bar" style="cursor: pointer" @click="selectIcons(0)">
@@ -192,6 +198,7 @@
class="entity-img"
v-for="(item, i) in realIconList"
:key="i"
+ @click="colorCard(item.color)"
>
<img :src="item.url" alt="" />
</div>
@@ -240,11 +247,14 @@
<script>
import { saveAlarmConfig, getDevInfo } from "@/api/system";
import { uploadSound, getSoundList, deleteSound } from "@/api/event";
-// import config from "../../../../package.json";
export default {
data() {
return {
+ playSpan:"\ue6e8",
+ playSpan2:"\ue6e8",
+ delspan:"\ue6e8",
+ warnSpn:"\ue6e8",
curPlayingIndex: null,
showUpload: false,
activeIcons: 0,
@@ -255,10 +265,10 @@
max: 0,
},
menuArr: [
- { name: "璁惧淇℃伅", icon: "\ue933" ,size:18},
- { name: "浜嬩欢褰曞儚鏃堕暱", icon: "\ue6f3" ,size:20},
- { name: "浜嬩欢澹伴煶", icon: "\ue6e1" ,size:16},
- { name: "涓�у寲璁剧疆", icon: "\ue756" ,size:18},
+ // { name: "璁惧淇℃伅", icon: "\ue933" ,size:18},
+ { name: "浜嬩欢褰曞儚鏃堕暱", icon: "\ue6f3", size: 20 },
+ { name: "浜嬩欢澹伴煶", icon: "\ue6e1", size: 16 },
+ { name: "涓�у寲璁剧疆", icon: "\ue756", size: 18 },
],
soundList: [],
activePage: 0,
@@ -278,9 +288,9 @@
},
isPlay: false,
realIconList: [
- { url: "/images/settings/鏃ュ織绠$悊.png" },
- { url: "/images/settings/瀹炴椂鐩戞帶.png" },
- { url: "/images/settings/鏁版嵁鍙鍖�.png" },
+ { url: "/images/settings/鏃ュ織绠$悊.png",color:"green" },
+ { url: "/images/settings/瀹炴椂鐩戞帶.png",color:"yellow" },
+ { url: "/images/settings/鏁版嵁鍙鍖�.png",color:"pink" },
],
flatIconList: [
{ url: "/images/settings/鏁版嵁鎺ㄩ��.png" },
@@ -304,16 +314,16 @@
_this.curPlayingIndex = null;
}
});
- const url = localStorage.getItem("backgroundPic")
+ const url = localStorage.getItem("backgroundPic");
if (url) {
- const arr = url.split("/")
- this.activeBg= this.tableBGList.findIndex((x) => {
- return x.url.includes(arr[arr.length-1])
- })
- }else{
- this.activeBg= 0
+ const arr = url.split("/");
+ this.activeBg = this.tableBGList.findIndex((x) => {
+ return x.url.includes(arr[arr.length - 1]);
+ });
+ } else {
+ this.activeBg = 0;
}
- const e = this.$refs.curPage
+ const e = this.$refs.curPage;
e.addEventListener("click", (e) => {
if (this.showUpload) {
this.showUpload = false;
@@ -321,7 +331,7 @@
});
},
beforeDestroy() {
- this.$refs.curPage.removeEventListener("click")
+ this.$refs.curPage.removeEventListener("click");
},
computed: {
min_video_len() {
@@ -400,13 +410,12 @@
return day + "澶� " + hour + "灏忔椂 " + minute + "鍒� " + second + "绉�";
},
uploadSound(params) {
- debugger
let param = new FormData();
param.append("file", params.file);
uploadSound(param).then(
(res) => {
this.$message.success("涓婁紶鎴愬姛");
- this.showUpload = false
+ this.showUpload = false;
this.getSounds();
},
(err) => {
@@ -421,11 +430,18 @@
this.activeIcons = i;
},
removeSound(item) {
- this.$confirm("鎮ㄦ槸鍚︾‘璁ゅ垹闄や簨浠跺0闊�", "鍒犻櫎浜嬩欢澹伴煶", {
- confirmButtonText: "纭畾",
- cancelButtonText: "鍙栨秷",
- type: "warning",
- }).then(() => {
+ const h = this.$createElement;
+ const icon =
+ this.$msgbox({
+ message: h('div', {style: 'display: flex; flex-direction: column; justify-content: center; align-items: center;'}, [
+ h('span',{class:'iconfont warn-icon'},`${this.warnSpn}`),
+ h('span', {class:'warn-title'}, '鍒犻櫎浜嬩欢澹伴煶 '),
+ h('span', {class:'warn-dec'}, '鎮ㄦ槸鍚︾‘璁ゅ垹闄や簨浠跺0闊�?')
+ ]),
+ showCancelButton: true,
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ }).then(() => {
deleteSound({
id: item.id,
}).then(
@@ -447,10 +463,10 @@
},
clickSound(item, i) {
this.$refs["soundBar"].forEach((x) => {
- x.style.backgroundColor = "rgba(248, 248, 248, 1)";
+ x.style = "border: 2px solid #FFF;";
});
- this.$refs["soundBar"][i].style.backgroundColor =
- "rgba(233, 233, 233, 1)";
+ this.$refs["soundBar"][i].style =
+ "border: 2px solid #4E94FF;";
},
submitAlarm() {
saveAlarmConfig({
@@ -466,15 +482,21 @@
}
});
},
+ colorCard(color) {
+ document.documentElement.style.setProperty('--colorCard',`${color}`)
+ localStorage.setItem('--colorCard',`${color}`)
+ }
},
};
</script>
-<style lang="scss">
+
+<style scoped lang="scss">
+
.all {
width: 100%;
}
-.general-set {
+.general-seting {
height: 100%;
display: flex;
flex-direction: row;
@@ -483,39 +505,43 @@
box-sizing: border-box;
.general-center {
height: 100%;
- width: 280px;
+ width: 300px;
overflow: auto;
box-sizing: border-box;
flex-shrink: 0;
- padding: 10px;
- border-right: 5px solid #f8f8f8;
+ padding: 24px 10px;
+ border-right: 4px solid #F2F2F7;
+ background-color: #FBFAFF;
+
+
.menu-item {
- background-color: #f8f8f8;
- height: 50px;
- margin-bottom: 10px;
- border-radius: 10px;
- line-height: 50px;
+
+ height: 56px;
+ margin-bottom: 4px;
+ border-radius: 8px;
+ line-height: 56px;
box-sizing: border-box;
- font-size: 14px;
- padding: 0 20px;
+ font-size: 16px;
+ padding-left: 15px;
cursor: pointer;
display: flex;
.iconfont {
- margin-right: 8px;
+ margin: 0 17px;
+ font-size: 24px !important;
}
.title {
- font-size: 15px;
+ font-size: 16px;
+ font-weight: 700;
}
}
.menu-item-active {
- background-color: #3d68e1;
- color: white;
+ background-color: var(--colorCard) !important;
+ color: white !important;
}
- .menu-item:hover {
- background-color: #3d68e1;
- color: white;
- }
+ /* .menu-item:hover {
+ background-color: #F2F2F7;
+ } */
}
.general-right {
flex: 1;
@@ -523,7 +549,7 @@
overflow: auto;
box-sizing: border-box;
- padding: 20px 40px;
+ padding: 10px 18px 10px 10px;
.el-form-item.is-required:not(.is-no-asterisk)
> .el-form-item__label:before,
.el-form-item.is-required:not(.is-no-asterisk)
@@ -565,36 +591,35 @@
text-align: left;
margin-bottom: 5px;
}
+ .voice-title {
+ justify-content: center !important;
+ font-weight: 700 ;
+ }
.bar-group {
overflow: auto;
- height: 100%;
+ height: 520px;
}
.bar {
- height: 44px;
+ height: 48px;
background-color: #f8f8f8;
border-radius: 10px;
- line-height: 44px;
+ line-height: 48px;
box-sizing: border-box;
- padding: 0 30px 0 20px;
+ padding: 0 20px 0 20px;
+ font-weight: 700;
display: flex;
justify-content: space-between;
- margin-bottom: 10px;
- .left-part {
- .icon {
- color: rgba(191, 191, 191, 1);
- font-size: 16px;
- margin-right: 5px;
- }
- }
+ margin-bottom: 2px;
+ border: 2px solid #fff;
.name {
- font-size: 15px;
- }
+ font-size: 14px;
+ }
.btns {
- width: 50px;
+ width: 52px;
display: flex;
justify-content: space-between;
color: rgba(191, 191, 191, 1);
- .el-icon-video-pause {
+ /* .el-icon-video-pause {
cursor: pointer;
font-size: 23px;
vertical-align: middle;
@@ -605,6 +630,12 @@
font-size: 23px;
vertical-align: middle;
color: #409eff;
+ } */
+ span {
+ color: #333
+ }
+ .del:hover {
+ color:#FC4958;
}
}
.desc {
@@ -612,11 +643,11 @@
color: rgba(134, 134, 134, 1);
}
}
- .bar:hover {
- background-color: rgba(233, 233, 233, 1);
- }
+ /* .bar:hover {
+ border: 2px solid #4E94FF !important;
+ } */
.add-group {
- margin: 10px auto;
+ margin: 54px auto;
width: fit-content;
}
.upload-demo {
@@ -624,7 +655,6 @@
transition: all 0.5s;
position: absolute;
bottom: -40px;
-
left: calc(50% - 145px);
.el-upload-dragger {
width: 290px;
@@ -637,7 +667,7 @@
cursor: pointer;
width: fit-content;
.icon {
- font-size: 32px;
+ font-size: 40px;
color: rgba(61, 104, 225, 1);
}
}
@@ -775,11 +805,11 @@
margin-right: 12px;
cursor: pointer;
// width: 120px;
- height: 80px;
+ height: 80px;
border: 2px solid transparent;
img {
- border-radius: 5px;
- height: 100%;
+ border-radius: 5px;
+ height: 100%;
}
}
.bg-img:hover {
@@ -793,4 +823,110 @@
}
}
}
+.v-modal {
+ opacity:0.35 !important;
+ border-radius: 8px !important;
+}
+
+.el-message-box {
+position: absolute;
+width: 420px;
+height: 210px;
+left: 302px;
+top: 279px;
+
+background: #FFFFFF;
+border-radius: 8px;
+}
+
+.upload-demo {
+top: 452px;
+left: 2px !important;
+width: 452px;
+height: 150px;
+background: #FFFFFF;
+box-shadow: 0px 2px 10px rgba(0, 0, 0, 0.1);
+border-radius: 8px;
+
+::v-deep .el-upload-dragger {
+display: flex;
+justify-content: center;
+align-items: center;
+overflow: visible;
+width: 340px;
+height: 72px;
+margin-top:30px ;
+}
+
+
+.info {
+
+font-weight: bold;
+font-size: 14px;
+color: #828282;
+}
+
+.info-click {
+ color: #4E94FF;
+ text-decoration: underline;
+}
+
+}
+
+.des {
+ position: absolute;
+ top: 78px;
+ left: 109px;
+ z-index: 999;
+ color: #4F4F4F;
+ font-weight: bold;
+ font-size: 12px;
+}
+
+</style>
+
+<style lang="scss">
+.el-message-box {
+ .warn-icon {
+ color:rgba(254, 109, 104, 1) ;
+ font-size: 50px;
+ margin-top:26px ;
+ }
+ .warn-title {
+ font-weight: bold;
+ font-size: 16px;
+ margin: 5px;
+ }
+ .warn-dec {
+ font-weight: bold;
+ font-size: 14px;
+ color: #828282;
+ }
+ .el-message-box__btns {
+ display: flex;
+ justify-content: center;
+ margin-top: 10px;
+ button {
+ width: 175px;
+ height: 40px;
+ border-radius: 25px;
+ span {
+ font-size: 16px;
+ font-weight: 700;
+ }
+ }
+ button:first-child {
+ background-color: #E0E0E0;
+ span {
+ color: #333333;
+ }
+ }
+ button:last-child {
+ background-color: #4E94FF !important;
+ span {
+ color: #fff;
+ }
+ }
+ }
+}
</style>
--
Gitblit v1.8.0