|
@@ -2,7 +2,10 @@
|
|
|
<!-- 新建 -->
|
|
|
<div class="demo-collapse">
|
|
|
<el-collapse class="custom-collapse" v-model="activeNames" @change="handleChange">
|
|
|
- <el-collapse-item title="新建工程" name="1">
|
|
|
+ <el-collapse-item name="1">
|
|
|
+ <template #title>
|
|
|
+ <span style="font-size: 14px;">新建工程</span>
|
|
|
+ </template>
|
|
|
<div class="collapse-list" >
|
|
|
<div class="list" @click="newclick()">
|
|
|
<el-image :src="s0" fit="contain" ></el-image>
|
|
@@ -10,33 +13,56 @@
|
|
|
</div>
|
|
|
|
|
|
</el-collapse-item>
|
|
|
- <el-collapse-item title="函数优化模板" name="2">
|
|
|
+ <el-collapse-item name="2">
|
|
|
+ <template #title>
|
|
|
+ <span style="font-size: 14px;">函数优化模板</span>
|
|
|
+ </template>
|
|
|
<div class="collapse-list">
|
|
|
- <div v-for="(item, index) in collapselist" :key="index" @click="clickimg(item,'2',index)">
|
|
|
- <div class="list" >
|
|
|
- <el-image :src="item.image" fit="contain" ></el-image>
|
|
|
+ <div v-for="(item, index) in collapselist_1" :key="index" @click="clickimg(item,'2',index)"
|
|
|
+ @mouseenter="handleMouseEnter(index, '2')"
|
|
|
+ @mouseleave="handleMouseLeave('2')"
|
|
|
+ class="showImgDiv">
|
|
|
+ <div class="list">
|
|
|
+ <el-image :src="item.image" fit="contain" ></el-image>
|
|
|
+ <!-- 鼠标悬停时显示的图片容器 -->
|
|
|
+ <div v-if="hoveredIndexes['2'] === index && !!item.image2" class="hoveredImageContainer">
|
|
|
+ <el-image :src="item.image2 || ''" fit="contain" class="hoveredImage"></el-image>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <p style="text-align: center;">{{item.name}}</p>
|
|
|
+ <p class="modelStyle">{{item.name}}</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-collapse-item>
|
|
|
- <el-collapse-item title="翼型优化模板" name="3">
|
|
|
+ <el-collapse-item name="3">
|
|
|
+ <template #title>
|
|
|
+ <span style="font-size: 14px;">翼型优化模板</span>
|
|
|
+ </template>
|
|
|
<div class="collapse-list">
|
|
|
- <div v-for="(item, index) in collapselist" :key="index" @click="clickimg(item,'2',index)">
|
|
|
- <div class="list" >
|
|
|
- <el-image :src="item.image" fit="contain" ></el-image>
|
|
|
+ <div v-for="(item, index) in collapselist_2" :key="index" @click="clickimg(item,'3',index)"
|
|
|
+ @mouseenter="handleMouseEnter(index, '3')"
|
|
|
+ @mouseleave="handleMouseLeave('3')"
|
|
|
+ class="showImgDiv">
|
|
|
+ <div class="list">
|
|
|
+ <el-image :src="item.image" fit="contain"></el-image>
|
|
|
+ <!-- 鼠标悬停时显示的图片容器 -->
|
|
|
+ <div v-show="hoveredIndexes['3'] === index && !!item.image2" class="hoveredImageContainer">
|
|
|
+ <el-image :src="item.image2 || ''" fit="contain" class="hoveredImage"></el-image>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <p style="text-align: center;">{{item.name}}</p>
|
|
|
+ <p class="modelStyle">{{item.name}}</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-collapse-item>
|
|
|
- <el-collapse-item title="机翼优化模板" name="4">
|
|
|
+ <el-collapse-item name="4">
|
|
|
+ <template #title>
|
|
|
+ <span style="font-size: 14px;">机翼优化模板</span>
|
|
|
+ </template>
|
|
|
<div class="collapse-list">
|
|
|
- <div v-for="(item, index) in collapselist" :key="index" @click="clickimg(item,'2',index)">
|
|
|
+ <div v-for="(item, index) in collapselist_3" :key="index" @click="clickimg(item,'4',index)">
|
|
|
<div class="list" >
|
|
|
- <el-image :src="item.image" fit="contain" ></el-image>
|
|
|
+ <el-image :src="item.image" fit="contain" ></el-image>
|
|
|
</div>
|
|
|
- <p style="text-align: center;">{{item.name}}</p>
|
|
|
+ <p class="modelStyle">{{item.name}}</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</el-collapse-item>
|
|
@@ -81,7 +107,7 @@ import open2 from "@/assets/img/open2.png";
|
|
|
import open3 from "@/assets/img/open3.png";
|
|
|
let router = useRouter();
|
|
|
let eldialog=ref(false);
|
|
|
-const activeNames = ref(['1','2']);
|
|
|
+const activeNames = ref(['1','2', '3', '4']);
|
|
|
let mid=ref('');
|
|
|
let modelflow=ref();
|
|
|
let gcid=ref('');//工程模版
|
|
@@ -108,8 +134,23 @@ const newclick = () => {
|
|
|
|
|
|
let collapselist = ref([
|
|
|
{img:open2},{img:open3},
|
|
|
-
|
|
|
])
|
|
|
+
|
|
|
+let collapselist_1 = ref([]); // 1-函数优化模版
|
|
|
+let collapselist_2 = ref([]); // 2-翼型优化模版
|
|
|
+let collapselist_3 = ref([]); // 3-机翼优化模版
|
|
|
+// 记录当前悬停的项目索引
|
|
|
+const hoveredIndexes = ref({});
|
|
|
+
|
|
|
+// 定义处理鼠标进入的方法
|
|
|
+const handleMouseEnter = (index, section) => {
|
|
|
+ hoveredIndexes.value[section] = index;
|
|
|
+};
|
|
|
+
|
|
|
+// 定义处理鼠标离开的方法
|
|
|
+const handleMouseLeave = (section) => {
|
|
|
+ delete hoveredIndexes.value[section];
|
|
|
+};
|
|
|
const openclick=()=>{
|
|
|
// router.replace({ path: key })
|
|
|
}
|
|
@@ -165,13 +206,32 @@ const newbaocun=()=>{
|
|
|
const modelget=()=>{
|
|
|
const params = {
|
|
|
transCode: 'MDO0005',
|
|
|
- count:5,
|
|
|
+ count:'',
|
|
|
page:1,
|
|
|
searchtag:''
|
|
|
}
|
|
|
request(params)
|
|
|
.then((res) => {
|
|
|
- collapselist.value=res.rows;
|
|
|
+ // 清空原有的数据
|
|
|
+ collapselist_1.value = [];
|
|
|
+ collapselist_2.value = [];
|
|
|
+ collapselist_3.value = [];
|
|
|
+ // 遍历 res.rows 并根据 type 分配到对应的 collapselist
|
|
|
+ res.rows.forEach(item => {
|
|
|
+ switch (item.type) {
|
|
|
+ case 1:
|
|
|
+ collapselist_1.value.push(item);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ collapselist_2.value.push(item);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ collapselist_3.value.push(item);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ console.log(`Unknown type: ${item.type}`);
|
|
|
+ }
|
|
|
+ });
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
ElMessage.error(err.returnMsg)
|
|
@@ -212,39 +272,57 @@ eldialog.value=true;
|
|
|
.collapse-list{
|
|
|
display: flex;
|
|
|
.list{
|
|
|
- width: 110px;
|
|
|
- height: 110px;
|
|
|
- border: 2px solid #71AAFF;
|
|
|
- display: flex;
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- text-align: center;
|
|
|
- margin: 0 5px;
|
|
|
+ width: 110px;
|
|
|
+ height: 110px;
|
|
|
+ border: 2px solid #71AAFF;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ text-align: center;
|
|
|
+ margin: 0 5px;
|
|
|
}
|
|
|
}
|
|
|
+.hoveredImageContainer {
|
|
|
+ height: 220px;
|
|
|
+ width: 180px;
|
|
|
+ position: absolute;
|
|
|
+ left: calc(100% + 5px); /* 或者调整到合适的距离 */
|
|
|
+ top: -10px;
|
|
|
+ z-index: 10; /* 确保悬浮图片在其他内容之上 */
|
|
|
+}
|
|
|
+
|
|
|
+.showImgDiv {
|
|
|
+ position: relative; /* 确保 .hoveredImageContainer 相对于 .showImgDiv 定位 */
|
|
|
+}
|
|
|
+.modelStyle{
|
|
|
+ font-family: 'Source Sans-Regular';
|
|
|
+ font-size: 12px;
|
|
|
+ color: #333333;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
</style>
|
|
|
<style>
|
|
|
.custom-collapse .el-collapse-item__header {
|
|
|
- font-family: Inter, Inter;
|
|
|
-font-weight: 500;
|
|
|
-font-size: 16px;
|
|
|
-color: #383838;
|
|
|
-line-height: 24px;
|
|
|
-text-align: left;
|
|
|
-font-style: normal;
|
|
|
-text-transform: none;
|
|
|
+ font-family: 'Source Sans-Regular';
|
|
|
+ font-weight: 500;
|
|
|
+ font-size: 14px;
|
|
|
+ color: #383838;
|
|
|
+ line-height: 24px;
|
|
|
+ text-align: left;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
}
|
|
|
.custom-collapse .el-collapse-item__header {
|
|
|
align-items: center;
|
|
|
border: none;
|
|
|
height: 20px;
|
|
|
- margin: 4px;
|
|
|
+ margin: 6px 6px 6px 0;
|
|
|
}
|
|
|
|
|
|
.custom-collapse .el-collapse-item__arrow {
|
|
|
order: -1; /* 将箭头元素的顺序设置为最前 */
|
|
|
- margin-right: 10px;
|
|
|
- margin-left: 10px; /* 根据需要调整箭头与标题的间距 */
|
|
|
+ margin-right: 5px;
|
|
|
+ margin-left: 6px; /* 根据需要调整箭头与标题的间距 */
|
|
|
}
|
|
|
.custom-collapse .el-collapse-item__wrap,.custom-collapse{
|
|
|
border: none;
|