|
|
@ -2,10 +2,6 @@
|
|
|
|
<div class="container">
|
|
|
|
<div class="container">
|
|
|
|
<!-- 顶部操作栏 -->
|
|
|
|
<!-- 顶部操作栏 -->
|
|
|
|
<div class="containertop">
|
|
|
|
<div class="containertop">
|
|
|
|
<div class="topleft">
|
|
|
|
|
|
|
|
<img src="../../../assets/images/detailsicon/1.png" alt="">
|
|
|
|
|
|
|
|
<span>项目图例</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="topright">
|
|
|
|
<div class="topright">
|
|
|
|
<el-button type="primary" size="medium" plain
|
|
|
|
<el-button type="primary" size="medium" plain
|
|
|
|
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="handleAdd">
|
|
|
|
style="border: none;background-color: rgba(43,98,241,0.1);color: #2B62F1;" @click="handleAdd">
|
|
|
@ -22,45 +18,18 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 内容区域 -->
|
|
|
|
|
|
|
|
<div class="main-content">
|
|
|
|
|
|
|
|
<!-- 上侧三张图 -->
|
|
|
|
|
|
|
|
<div class="image-row">
|
|
|
|
|
|
|
|
<div v-for="(item, index) in carousel1Items.slice(0, 3)" :key="index" class="image-item">
|
|
|
|
|
|
|
|
<img :src="item.imageUrl" :alt="'Image ' + (index + 1)" />
|
|
|
|
|
|
|
|
<div class="classify">
|
|
|
|
|
|
|
|
类型A
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<el-input v-if="dialogVisible" v-model="form.images[index]" placeholder="请输入图片URL"></el-input>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 下侧三张图 -->
|
|
|
|
|
|
|
|
<div class="image-row">
|
|
|
|
|
|
|
|
<div v-for="(item, index) in carousel2Items.slice(0, 3)" :key="index" class="image-item">
|
|
|
|
|
|
|
|
<img :src="item.imageUrl" :alt="'Image ' + (index + 1)" />
|
|
|
|
|
|
|
|
<div class="classify">
|
|
|
|
|
|
|
|
类型B
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<el-input v-if="dialogVisible" v-model="form.images[index + 3]" placeholder="请输入图片URL"></el-input>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 编辑/新增对话框 -->
|
|
|
|
<!-- 编辑/新增对话框 -->
|
|
|
|
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px">
|
|
|
|
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px">
|
|
|
|
<el-form :model="form" label-width="120px">
|
|
|
|
<el-form :model="form" label-width="120px" :rules="rules" ref="formRef">
|
|
|
|
<el-form-item label="类型">
|
|
|
|
<el-form-item label="类型" prop="imgType">
|
|
|
|
<el-select v-model="form.type" placeholder="请选择类型">
|
|
|
|
<el-select v-model="form.imgType" placeholder="请选择类型" @change="handleTypeChange">
|
|
|
|
<el-option v-for="dict in dict.type.tplx" :key="dict.value" :label="dict.label"
|
|
|
|
<el-option v-for="dict in dict.type.tplx" :key="dict.value" :label="dict.label"
|
|
|
|
:value="dict.value"></el-option>
|
|
|
|
:value="parseInt(dict.value)">
|
|
|
|
|
|
|
|
</el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
<el-form-item label="图片上传">
|
|
|
|
<el-form-item label="图片上传" prop="img">
|
|
|
|
<div v-for="(image, index) in form.images" :key="index" style="margin-bottom: 10px;">
|
|
|
|
<ImageUpload v-model="form.img" :file-list="currentTypeFileList" :multiple="true" />
|
|
|
|
<ImageUpload v-model="form.images[index]" />
|
|
|
|
|
|
|
|
<el-input v-model="form.images[index]" placeholder="请输入图片URL"></el-input>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form>
|
|
|
|
</el-form>
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
@ -68,12 +37,54 @@
|
|
|
|
<el-button type="primary" @click="handleSubmit">确定</el-button>
|
|
|
|
<el-button type="primary" @click="handleSubmit">确定</el-button>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</el-dialog>
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 图片展示区 - 默认轮播图样式 -->
|
|
|
|
|
|
|
|
<div class="main-content">
|
|
|
|
|
|
|
|
<template v-if="legendsData && legendsData.length > 0">
|
|
|
|
|
|
|
|
<div v-for="(legend, index) in legendsData" :key="index">
|
|
|
|
|
|
|
|
<!-- 类型1轮播图 -->
|
|
|
|
|
|
|
|
<div v-if="legend.type1 && legend.type1.images && legend.type1.images.length > 0">
|
|
|
|
|
|
|
|
<h3 class="type-title">类型1</h3>
|
|
|
|
|
|
|
|
<div class="fixed-carousel-container">
|
|
|
|
|
|
|
|
<el-carousel height="12.44rem" indicator-position="outside" class="fixed-carousel">
|
|
|
|
|
|
|
|
<el-carousel-item v-for="(img, imgIndex) in legend.type1.images"
|
|
|
|
|
|
|
|
:key="'type1-' + imgIndex">
|
|
|
|
|
|
|
|
<div class="carousel-item-wrapper">
|
|
|
|
|
|
|
|
<img :src="img" :alt="'类型1图片' + imgIndex" class="fixed-carousel-image">
|
|
|
|
|
|
|
|
<div class="classify">类型1</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</el-carousel-item>
|
|
|
|
|
|
|
|
</el-carousel>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 类型2轮播图 -->
|
|
|
|
|
|
|
|
<div v-if="legend.type2 && legend.type2.images && legend.type2.images.length > 0">
|
|
|
|
|
|
|
|
<h3 class="type-title">类型2</h3>
|
|
|
|
|
|
|
|
<div class="fixed-carousel-container">
|
|
|
|
|
|
|
|
<el-carousel height="12.44rem" indicator-position="outside" class="fixed-carousel">
|
|
|
|
|
|
|
|
<el-carousel-item v-for="(img, imgIndex) in legend.type2.images"
|
|
|
|
|
|
|
|
:key="'type2-' + imgIndex">
|
|
|
|
|
|
|
|
<div class="carousel-item-wrapper">
|
|
|
|
|
|
|
|
<img :src="img" :alt="'类型2图片' + imgIndex" class="fixed-carousel-image">
|
|
|
|
|
|
|
|
<div class="classify">类型2</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</el-carousel-item>
|
|
|
|
|
|
|
|
</el-carousel>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<div v-else class="no-data">
|
|
|
|
|
|
|
|
暂无图例数据
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
<script>
|
|
|
|
import ImageUpload from '@/components/ImageUpload';
|
|
|
|
import ImageUpload from '@/components/ImageUpload';
|
|
|
|
import { getxmtlPageByxmid, addxmtl, updatexmtll } from '@/api/ManageApi/index';
|
|
|
|
import { addxmtl, getxmtlPageByxmId } from '@/api/ManageApi/index';
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
export default {
|
|
|
|
components: { ImageUpload },
|
|
|
|
components: { ImageUpload },
|
|
|
@ -86,92 +97,157 @@ export default {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
data() {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
carousel1Items: [], // 类型A的图片
|
|
|
|
|
|
|
|
carousel2Items: [], // 类型B的图片
|
|
|
|
|
|
|
|
dialogVisible: false,
|
|
|
|
dialogVisible: false,
|
|
|
|
dialogTitle: '',
|
|
|
|
dialogTitle: '新增图例',
|
|
|
|
|
|
|
|
legendsData: [],
|
|
|
|
|
|
|
|
currentTypeFileList: [],
|
|
|
|
form: {
|
|
|
|
form: {
|
|
|
|
type: '',
|
|
|
|
imgType: 1,
|
|
|
|
images: ['', '', '', '', '', ''] // 用于绑定图片上传组件的值
|
|
|
|
img: [],
|
|
|
|
|
|
|
|
xmId: this.xmId
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
rules: {
|
|
|
|
|
|
|
|
imgType: [
|
|
|
|
|
|
|
|
{ required: true, message: '请选择类型', trigger: 'change' }
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
img: [
|
|
|
|
|
|
|
|
{ required: true, message: '请上传图片', trigger: 'blur' }
|
|
|
|
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
},
|
|
|
|
},
|
|
|
|
created() {
|
|
|
|
created() {
|
|
|
|
this.fetchProjectLegends();
|
|
|
|
this.fetchLegendsData();
|
|
|
|
},
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
methods: {
|
|
|
|
// 获取项目图例数据
|
|
|
|
// 获取图例数据
|
|
|
|
fetchProjectLegends() {
|
|
|
|
async fetchLegendsData() {
|
|
|
|
console.log('Fetching data for xmId:', this.xmId);
|
|
|
|
try {
|
|
|
|
if (this.xmId === null || this.xmId === undefined) {
|
|
|
|
if (!this.xmId) {
|
|
|
|
console.error('xmId is null or undefined');
|
|
|
|
this.$message.error('项目ID不能为空');
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
getxmtlPageByxmid({ xmId: this.xmId })
|
|
|
|
|
|
|
|
.then(response => {
|
|
|
|
const response = await getxmtlPageByxmId({
|
|
|
|
if (response.code === 200 && response.data.length > 0) {
|
|
|
|
xmId: this.xmId,
|
|
|
|
const data = response.data[0]; // 假设返回的数据在数组中
|
|
|
|
pageNum: 1,
|
|
|
|
// 映射类型A的图片
|
|
|
|
pageSize: 10
|
|
|
|
this.carousel1Items = data.type1.images.map(imageUrl => ({ imageUrl }));
|
|
|
|
|
|
|
|
// 映射类型B的图片
|
|
|
|
|
|
|
|
this.carousel2Items = data.type2.images.map(imageUrl => ({ imageUrl }));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
|
|
console.error("获取项目图例数据失败:", error);
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (response.code === 200) {
|
|
|
|
|
|
|
|
this.legendsData = response.data || [];
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.$message.error(response.msg || '获取图例数据失败');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
|
|
console.error('获取图例数据失败:', error);
|
|
|
|
|
|
|
|
this.$message.error('获取图例数据失败');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
updateCurrentTypeFileList() {
|
|
|
|
|
|
|
|
if (!this.legendsData || this.legendsData.length === 0) {
|
|
|
|
|
|
|
|
this.currentTypeFileList = [];
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const firstLegend = this.legendsData[0];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let images = [];
|
|
|
|
|
|
|
|
if (this.form.imgType === 1 && firstLegend.type1) {
|
|
|
|
|
|
|
|
images = firstLegend.type1.images || [];
|
|
|
|
|
|
|
|
} else if (this.form.imgType === 2 && firstLegend.type2) {
|
|
|
|
|
|
|
|
images = firstLegend.type2.images || [];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.currentTypeFileList = images.map(url => ({
|
|
|
|
|
|
|
|
url: url,
|
|
|
|
|
|
|
|
name: url.split('/').pop(),
|
|
|
|
|
|
|
|
status: 'success'
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.form.img = [...images];
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
handleTypeChange() {
|
|
|
|
|
|
|
|
this.updateCurrentTypeFileList();
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 打开新增对话框
|
|
|
|
|
|
|
|
handleAdd() {
|
|
|
|
handleAdd() {
|
|
|
|
this.dialogTitle = '新增';
|
|
|
|
this.dialogTitle = '新增图例';
|
|
|
|
this.form = { type: '', images: ['', '', '', '', '', ''] }; // 重置表单
|
|
|
|
this.form = {
|
|
|
|
|
|
|
|
imgType: 1,
|
|
|
|
|
|
|
|
img: [],
|
|
|
|
|
|
|
|
xmId: this.xmId
|
|
|
|
|
|
|
|
};
|
|
|
|
this.dialogVisible = true;
|
|
|
|
this.dialogVisible = true;
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
|
|
if (this.$refs.formRef) {
|
|
|
|
|
|
|
|
this.$refs.formRef.clearValidate();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
this.updateCurrentTypeFileList();
|
|
|
|
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 打开编辑对话框
|
|
|
|
|
|
|
|
handleEdit() {
|
|
|
|
handleEdit() {
|
|
|
|
this.dialogTitle = '编辑';
|
|
|
|
this.dialogTitle = '编辑图例';
|
|
|
|
// 假设编辑时填充当前数据
|
|
|
|
|
|
|
|
this.form = {
|
|
|
|
this.form = {
|
|
|
|
type: '', // 类型默认为空
|
|
|
|
imgType: 1,
|
|
|
|
images: [
|
|
|
|
img: [],
|
|
|
|
this.carousel1Items[0] ? this.carousel1Items[0].imageUrl : '',
|
|
|
|
xmId: this.xmId
|
|
|
|
this.carousel1Items[1] ? this.carousel1Items[1].imageUrl : '',
|
|
|
|
|
|
|
|
this.carousel1Items[2] ? this.carousel1Items[2].imageUrl : '',
|
|
|
|
|
|
|
|
this.carousel2Items[0] ? this.carousel2Items[0].imageUrl : '',
|
|
|
|
|
|
|
|
this.carousel2Items[1] ? this.carousel2Items[1].imageUrl : '',
|
|
|
|
|
|
|
|
this.carousel2Items[2] ? this.carousel2Items[2].imageUrl : ''
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
this.dialogVisible = true;
|
|
|
|
this.dialogVisible = true;
|
|
|
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
|
|
|
if (this.$refs.formRef) {
|
|
|
|
|
|
|
|
this.$refs.formRef.clearValidate();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
this.updateCurrentTypeFileList();
|
|
|
|
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
// 提交表单
|
|
|
|
|
|
|
|
handleSubmit() {
|
|
|
|
handleSubmit() {
|
|
|
|
if (this.dialogTitle === '新增') {
|
|
|
|
this.$refs.formRef.validate(valid => {
|
|
|
|
// 调用新增API
|
|
|
|
if (valid) {
|
|
|
|
addxmtl({ ...this.form, xmId: this.xmId })
|
|
|
|
this.submitForm();
|
|
|
|
.then(response => {
|
|
|
|
|
|
|
|
if (response.code === 200) {
|
|
|
|
|
|
|
|
this.$message.success('新增成功');
|
|
|
|
|
|
|
|
this.fetchProjectLegends(); // 刷新数据
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
|
|
console.error("新增失败:", error);
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} else if (this.dialogTitle === '编辑') {
|
|
|
|
},
|
|
|
|
// 调用编辑API
|
|
|
|
|
|
|
|
updatexmtll({ ...this.form, xmId: this.xmId })
|
|
|
|
async submitForm() {
|
|
|
|
.then(response => {
|
|
|
|
const loading = this.$loading({
|
|
|
|
if (response.code === 200) {
|
|
|
|
lock: true,
|
|
|
|
this.$message.success('编辑成功');
|
|
|
|
text: '提交中...',
|
|
|
|
this.fetchProjectLegends(); // 刷新数据
|
|
|
|
spinner: 'el-icon-loading',
|
|
|
|
}
|
|
|
|
background: 'rgba(0, 0, 0, 0.7)'
|
|
|
|
})
|
|
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
|
|
console.error("编辑失败:", error);
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
if (!this.xmId) {
|
|
|
|
|
|
|
|
this.$message.error('项目ID不能为空');
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const submitData = {
|
|
|
|
|
|
|
|
...this.form,
|
|
|
|
|
|
|
|
imgType: parseInt(this.form.imgType),
|
|
|
|
|
|
|
|
xmId: this.xmId
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const response = await addxmtl(submitData);
|
|
|
|
|
|
|
|
if (response.code === 200) {
|
|
|
|
|
|
|
|
this.$message.success(this.dialogTitle === '新增图例' ? '新增成功' : '更新成功');
|
|
|
|
this.dialogVisible = false;
|
|
|
|
this.dialogVisible = false;
|
|
|
|
|
|
|
|
await this.fetchLegendsData();
|
|
|
|
|
|
|
|
this.$emit('refresh');
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
this.$message.error(response.msg || '操作失败');
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|
|
|
this.$message.error('操作失败,请重试');
|
|
|
|
|
|
|
|
console.error('操作失败:', error);
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
loading.close();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -200,24 +276,35 @@ export default {
|
|
|
|
.main-content {
|
|
|
|
.main-content {
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
flex-direction: column;
|
|
|
|
gap: 1rem;
|
|
|
|
gap: 1.5rem;
|
|
|
|
padding: 1rem;
|
|
|
|
padding: 1rem;
|
|
|
|
|
|
|
|
width: 25rem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.image-row {
|
|
|
|
.type-title {
|
|
|
|
display: flex;
|
|
|
|
margin: 1rem 0 0.5rem;
|
|
|
|
justify-content: space-between;
|
|
|
|
font-size: 1rem;
|
|
|
|
gap: 1rem;
|
|
|
|
color: #333;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 默认轮播图样式 */
|
|
|
|
|
|
|
|
.block {
|
|
|
|
|
|
|
|
padding: 0 20px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.image-item {
|
|
|
|
.el-carousel {
|
|
|
|
|
|
|
|
border-radius: 4px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.carousel-content {
|
|
|
|
position: relative;
|
|
|
|
position: relative;
|
|
|
|
width: calc(33.33% - 0.67rem); /* 三张图片每张占三分之一减去间隔 */
|
|
|
|
height: 100%;
|
|
|
|
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.image-item img {
|
|
|
|
.carousel-image {
|
|
|
|
width: 100%;
|
|
|
|
width: 100%;
|
|
|
|
height: 12rem;
|
|
|
|
height: 100%;
|
|
|
|
object-fit: cover;
|
|
|
|
object-fit: cover;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -225,15 +312,74 @@ export default {
|
|
|
|
width: 2.81rem;
|
|
|
|
width: 2.81rem;
|
|
|
|
height: 1.38rem;
|
|
|
|
height: 1.38rem;
|
|
|
|
background-color: rgba(43, 98, 241, 0.8);
|
|
|
|
background-color: rgba(43, 98, 241, 0.8);
|
|
|
|
border-radius: 0.69rem 0.69rem 0.69rem 0.69rem;
|
|
|
|
border-radius: 0.69rem;
|
|
|
|
color: white;
|
|
|
|
color: white;
|
|
|
|
position: absolute;
|
|
|
|
position: absolute;
|
|
|
|
bottom: .5rem;
|
|
|
|
bottom: 1rem;
|
|
|
|
left: .5rem;
|
|
|
|
left: 1rem;
|
|
|
|
display: flex;
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
align-items: center;
|
|
|
|
font-size: .7rem;
|
|
|
|
font-size: .7rem;
|
|
|
|
z-index: 98;
|
|
|
|
z-index: 98;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.no-data {
|
|
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
padding: 2rem;
|
|
|
|
|
|
|
|
color: #999;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 轮播图指示器样式 */
|
|
|
|
|
|
|
|
.el-carousel__indicator {
|
|
|
|
|
|
|
|
padding: 8px 4px;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.el-carousel__button {
|
|
|
|
|
|
|
|
width: 8px;
|
|
|
|
|
|
|
|
height: 8px;
|
|
|
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
|
|
|
background-color: #c0c4cc;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.el-carousel__indicator.is-active .el-carousel__button {
|
|
|
|
|
|
|
|
background-color: #2B62F1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 轮播图箭头样式 */
|
|
|
|
|
|
|
|
.el-carousel__arrow {
|
|
|
|
|
|
|
|
background-color: rgba(43, 98, 241, 0.3);
|
|
|
|
|
|
|
|
color: #2B62F1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.el-carousel__arrow:hover {
|
|
|
|
|
|
|
|
background-color: rgba(43, 98, 241, 0.5);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 固定尺寸轮播图样式 */
|
|
|
|
|
|
|
|
.fixed-carousel-container {
|
|
|
|
|
|
|
|
width: 21.75rem;
|
|
|
|
|
|
|
|
height: 12.44rem;
|
|
|
|
|
|
|
|
margin: 0 auto;
|
|
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.fixed-carousel {
|
|
|
|
|
|
|
|
width: 21.75rem;
|
|
|
|
|
|
|
|
height: 12.44rem;
|
|
|
|
|
|
|
|
border-radius: 0.5rem;
|
|
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
|
|
box-shadow: 0 0.13rem 0.63rem rgba(177, 177, 177, 0.1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.fixed-carousel-image {
|
|
|
|
|
|
|
|
width: 21.75rem;
|
|
|
|
|
|
|
|
height: 12.44rem;
|
|
|
|
|
|
|
|
object-fit: cover;
|
|
|
|
|
|
|
|
display: block;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 调整指示器位置 */
|
|
|
|
|
|
|
|
.el-carousel__indicators {
|
|
|
|
|
|
|
|
bottom: -1.5rem;
|
|
|
|
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</style>
|