修改上传地址
parent
c53bbc2b5f
commit
4f6423a988
@ -0,0 +1,63 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="title">
|
||||
<span contenteditable="true" @blur="edit('title', $event)">
|
||||
{{ data.title }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<div class="value">
|
||||
<span contenteditable="true" @blur="edit('value', $event)">
|
||||
{{ data.value }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: "El1",
|
||||
props: ['data'],
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
edit(key, e) {
|
||||
this.$props.data[key] = e.target.innerText
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
.title {
|
||||
margin-top: 5vw;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 1.9vw;
|
||||
letter-spacing: 2px;
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.divider {
|
||||
width: 4vw;
|
||||
height: 4px;
|
||||
background: #3372FE;
|
||||
border-radius: 999px;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
.value {
|
||||
width: 62vw;
|
||||
margin: 2vw auto 4vw auto;
|
||||
text-align: left;
|
||||
font-size: 1vw;
|
||||
line-height: 2vw;
|
||||
letter-spacing: 0.1vw;
|
||||
color: #000;
|
||||
text-indent: 2em;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,218 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="title">
|
||||
<span contenteditable="true" @blur="edit('title', $event)">
|
||||
{{ data.title }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
|
||||
<div style="height:35.4vw;">
|
||||
<div class="swiper hero-swiper mySwiper">
|
||||
<div class="swiper-wrapper">
|
||||
<div class="swiper-slide" v-for="(item,k) in data.list" :key="k">
|
||||
<UploadEl :data="item" field="img"/>
|
||||
<div class="slide-bg">
|
||||
<div class="slide-title" contenteditable="true" @blur="edit1('title', k, $event)">
|
||||
{{ item.title }}
|
||||
</div>
|
||||
<div class="slide-value" contenteditable="true" @blur="edit1('value', k, $event)">
|
||||
{{ item.value }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="swiper-slide">
|
||||
<div style="width:100%;height:100%;"
|
||||
@click="addImg">
|
||||
<i class="el-icon-circle-plus" style="font-size: 3vw; line-height: 22vw"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="swiper-button-next"></div>
|
||||
<div class="swiper-button-prev"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Swiper from 'swiper'
|
||||
import UploadEl from "@/components/editEl/uploadEl.vue";
|
||||
|
||||
import {Autoplay, Navigation} from "swiper/modules";
|
||||
|
||||
Swiper.use([
|
||||
Navigation,
|
||||
Autoplay
|
||||
])
|
||||
let swiper = null
|
||||
export default {
|
||||
name: "El1",
|
||||
components: {UploadEl},
|
||||
props: ['data'],
|
||||
data() {
|
||||
return {
|
||||
show: true,
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.initSwiper()
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
addImg() {
|
||||
// this.show = false;
|
||||
this.$props.data.list.push({
|
||||
title: '请输入',
|
||||
value: '请输入',
|
||||
img: ''
|
||||
});
|
||||
this.$nextTick(() => {
|
||||
this.initSwiper()
|
||||
swiper.slideTo(this.$props.data.list.length - 1);
|
||||
// this.show = true;
|
||||
// this.$nextTick(() => {
|
||||
// setTimeout(() => {
|
||||
// this.$refs.carousel1.setActiveItem(this.$props.data.list.length - 1);
|
||||
// }, 10)
|
||||
// })
|
||||
})
|
||||
},
|
||||
initSwiper() {
|
||||
if (swiper) {
|
||||
swiper.destroy(true, true);
|
||||
swiper = null;
|
||||
}
|
||||
swiper = new Swiper(".mySwiper", {
|
||||
loop: this.data.list.length > 2,
|
||||
centeredSlides: true,
|
||||
slidesPerView: "auto",
|
||||
spaceBetween: -24,
|
||||
speed: 450,
|
||||
grabCursor: true,
|
||||
navigation: {
|
||||
nextEl: ".swiper-button-next",
|
||||
prevEl: ".swiper-button-prev",
|
||||
},
|
||||
});
|
||||
},
|
||||
edit(key, e) {
|
||||
this.$props.data[key] = e.target.innerText
|
||||
},
|
||||
edit1(key, index, e) {
|
||||
this.$props.data.list[index][key] = e.target.innerText
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.hero-swiper {
|
||||
width: 100%;
|
||||
height: 22vw;
|
||||
overflow: visible;
|
||||
margin-top: 2vw;
|
||||
}
|
||||
|
||||
.hero-swiper .swiper-wrapper {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.hero-swiper .swiper-slide {
|
||||
width: 60vw;
|
||||
height: 21.25vw;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transform: scale(0.6);
|
||||
transition: transform 300ms ease, opacity 300ms ease;
|
||||
opacity: 0.55;
|
||||
position: relative;
|
||||
|
||||
.slide-bg {
|
||||
display: none;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 8vw;
|
||||
background-color: #0002;
|
||||
bottom: 0;
|
||||
|
||||
.slide-title {
|
||||
position: absolute;
|
||||
top: 1vw;
|
||||
left: 2vw;
|
||||
font-size: 1.6vw;
|
||||
line-height: 2vw;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.slide-value {
|
||||
position: absolute;
|
||||
text-align: left;
|
||||
top: 3.2vw;
|
||||
left: 2vw;
|
||||
font-size: 1vw;
|
||||
font-weight: 600;
|
||||
width: calc(100% - 4vw);
|
||||
color: #fff;
|
||||
text-indent: 2em;
|
||||
height: 4vw;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
line-height: 2vw;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.hero-swiper .swiper-slide-active {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
z-index: 2;
|
||||
|
||||
.slide-bg {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
.hero-swiper .swiper-slide img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: block;
|
||||
object-fit: cover;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 18px 48px rgba(20, 24, 31, 0.22);
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
.hero-swiper {
|
||||
height: 280px;
|
||||
}
|
||||
|
||||
.hero-swiper .swiper-slide {
|
||||
width: 76vw;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
margin-top: 5vw;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 1.9vw;
|
||||
letter-spacing: 2px;
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.divider {
|
||||
width: 4vw;
|
||||
height: 4px;
|
||||
background: #3372FE;
|
||||
border-radius: 999px;
|
||||
margin: 10px auto;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,178 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="title">
|
||||
<span contenteditable="true" @blur="edit('title', $event)">
|
||||
{{ data.title }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="divider"></div>
|
||||
<div class="list">
|
||||
<div class="item" v-for=" (i,k) in data.list">
|
||||
<i class="del el-icon-circle-close" @click="data.list.splice(k, 1);"></i>
|
||||
<div class="img1">
|
||||
<div class="img">
|
||||
<UploadEl :data="i" field="img"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="title1" contenteditable="true" @blur="edit1('value', k,$event)">{{ i.title }}</div>
|
||||
<i class="el-icon-right icon" @click="setLink(i,k)"></i>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div style="width:100%;height:100%;"
|
||||
@click="data.list.push({title:'设备名',img: '',toLink: []})">
|
||||
<i class="el-icon-circle-plus" style="font-size: 3vw; line-height: 16.7vw"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog
|
||||
title="跳转到"
|
||||
:visible.sync="linkDialogVisible"
|
||||
width="50%">
|
||||
|
||||
<el-cascader
|
||||
style="width:40vw"
|
||||
@change="pageChange"
|
||||
size="small"
|
||||
v-model="linkDialogForm.toLink"
|
||||
:props="{checkStrictly: true, value: 'id', label: 'name', children: 'list'}"
|
||||
:options="productData"></el-cascader>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="linkDialogVisible = false">关 闭</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import UploadEl from "@/components/editEl/uploadEl.vue";
|
||||
import {getHwWeb} from "@/api/hwWeb";
|
||||
|
||||
export default {
|
||||
name: "El1",
|
||||
components: {UploadEl},
|
||||
props: ['data'],
|
||||
data() {
|
||||
return {
|
||||
productData: [],
|
||||
linkDialogVisible: false,
|
||||
index: -1,
|
||||
linkDialogForm: {}
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
getHwWeb(7).then(res => {
|
||||
this.productData = JSON.parse(res?.data?.webJsonString || '{}').productList || []
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
edit(key, e) {
|
||||
this.$props.data[key] = e.target.innerText
|
||||
},
|
||||
edit1(key, index, e) {
|
||||
this.$props.data.list[index][key] = e.target.innerText
|
||||
},
|
||||
setLink(e, index) {
|
||||
this.linkDialogVisible = true
|
||||
this.linkDialogForm = e || {}
|
||||
this.index = index
|
||||
console.log(e)
|
||||
},
|
||||
|
||||
pageChange(e) {
|
||||
this.linkDialogForm.toLink = e
|
||||
this.$props.data.list[this.index].toLink = e
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
.title {
|
||||
margin-top: 5vw;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
font-size: 1.9vw;
|
||||
letter-spacing: 2px;
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.divider {
|
||||
width: 4vw;
|
||||
height: 4px;
|
||||
background: #3372FE;
|
||||
border-radius: 999px;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
|
||||
.list {
|
||||
width: 62vw;
|
||||
margin: 3vw auto 0;
|
||||
|
||||
.item {
|
||||
margin-right: 3vw;
|
||||
width: calc(50% - 3vw);
|
||||
display: inline-block;
|
||||
margin-bottom: 1.4vw;
|
||||
vertical-align: top;
|
||||
position: relative;
|
||||
|
||||
&:hover {
|
||||
|
||||
.img1 {
|
||||
.img {
|
||||
transform: scale(1.2);
|
||||
}
|
||||
}
|
||||
|
||||
.icon {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.img1 {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
height: calc((90vw * 0.33 - 3vw) * 1080 / 1920);
|
||||
|
||||
.img {
|
||||
transition: all .5s;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.title1 {
|
||||
margin-top: 1vw;
|
||||
font-size: 1.3vw;
|
||||
padding-left: 2vw;
|
||||
position: relative;
|
||||
text-align: left;
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 2px;
|
||||
height: 100%;
|
||||
background: blue;
|
||||
}
|
||||
}
|
||||
|
||||
.icon {
|
||||
font-size: 1.3vw;
|
||||
position: absolute;
|
||||
right: 2vw;
|
||||
bottom: 1vw;
|
||||
transform: translateY(50%);
|
||||
transition: all .5s;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&:nth-child(2n) {
|
||||
margin-right: 0%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Loading…
Reference in New Issue