|
@@ -14,18 +14,23 @@
|
|
</div>
|
|
</div>
|
|
<img style="width: 96px;height: 96px;" src="../assets/img/root.png" alt="">
|
|
<img style="width: 96px;height: 96px;" src="../assets/img/root.png" alt="">
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
|
|
+ <!-- 平台应用 -->
|
|
<div class="TabList">
|
|
<div class="TabList">
|
|
- <div class="TabListCon" @click="openApp(item)" v-for="(item,index) in appSignL(fromL.admin.index.list)" :key="index">
|
|
|
|
|
|
+ <div
|
|
|
|
+ @mouseenter="setHovered(index, true)"
|
|
|
|
+ @mouseleave="setHovered(index, false)"
|
|
|
|
+ style="position: relative;"
|
|
|
|
+ @click="openApp(item)"
|
|
|
|
+ v-for="(item,index) in appSignL(fromL.admin.index.list)"
|
|
|
|
+ :key="index+'1p'">
|
|
|
|
+ <div class="TabListCon">
|
|
<div v-for="(p,pin) in AppCon(item.url)" :key="pin+'p'">
|
|
<div v-for="(p,pin) in AppCon(item.url)" :key="pin+'p'">
|
|
- <img style="height: 25px;object-fit: contain;transform: scale(1.5);margin-bottom: 12px;"
|
|
|
|
- :src="p.icon"
|
|
|
|
- alt="">
|
|
|
|
|
|
+ <img class="imgApp" :src="hovList[index] ? p.hoverIcon : p.platformIcon" alt="">
|
|
<div class="TabListName">
|
|
<div class="TabListName">
|
|
{{ p.name }}
|
|
{{ p.name }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
-
|
|
|
|
<div class="TabListBri">
|
|
<div class="TabListBri">
|
|
<el-tooltip class="item" effect="light" :content="item.description" placement="bottom">
|
|
<el-tooltip class="item" effect="light" :content="item.description" placement="bottom">
|
|
<span>
|
|
<span>
|
|
@@ -33,18 +38,48 @@
|
|
</span>
|
|
</span>
|
|
</el-tooltip>
|
|
</el-tooltip>
|
|
</div>
|
|
</div>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+
|
|
|
|
+ <!-- 常见应用 -->
|
|
<div class="footCon">
|
|
<div class="footCon">
|
|
<div class="footConLeft">
|
|
<div class="footConLeft">
|
|
- <div><img style="margin-bottom: 12px;height: 41px;width: 36px;" src="../assets/img/sucai2.svg" alt=""></div>
|
|
|
|
- <div style="font-size: 20px;font-weight: 600;color: #1f2937;margin-bottom: 8px;">CocoFlow</div>
|
|
|
|
- <div style="color: #4b5563;font-size: 14px;">汇聚丰富的教育AI应用,搭建属于您的专属教育应用</div>
|
|
|
|
|
|
+ <img src="../assets/img/dong.png" alt="">
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="footList">
|
|
<div class="footList">
|
|
- <div class="footListCon" v-for="(item,index) in CocoFlowList" @click="openNewWindow(item)" :key="index">
|
|
|
|
- <div><img style="margin-bottom: 12px;height: 24px;width: 22px;" :src="JSON.parse(item.json).icon" alt=""></div>
|
|
|
|
|
|
+ <div class="footListCon" v-for="(item,index) in admincocoFlow" @click="openNewWindow(item)" :key="index+'2p'">
|
|
|
|
+ <div class="footListConimg"><img style="margin-bottom: 12px;height: 24px;width: 22px;" :src="JSON.parse(item.json).icon" alt=""></div>
|
|
|
|
+ <div class="TabListName">{{ item.name }}</div>
|
|
|
|
+ <div class="TabListBri">
|
|
|
|
+ <el-tooltip class="item" effect="light" :content="item.detail" placement="bottom">
|
|
|
|
+ <span>
|
|
|
|
+ {{ item.detail }}
|
|
|
|
+ </span>
|
|
|
|
+ </el-tooltip>
|
|
|
|
+ </div>
|
|
|
|
+ <!-- <div class="cha" @click.stop="delApp(item.lid)">
|
|
|
|
+ <img style="width: 20px;" src="../assets/img/cha.svg" alt="">
|
|
|
|
+ </div> -->
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="footList2">
|
|
|
|
+ <div class="footList2Tit">
|
|
|
|
+ 常见应用
|
|
|
|
+ </div>
|
|
|
|
+ <div v-for="(i,index) in (4 - CocoFlowList.length)" @click="openUsuallyApp"
|
|
|
|
+ :key="index+'3p'" class="footListCon2">
|
|
|
|
+ <div style="margin-bottom: 8px;font-size: 40px;color: #0354D7;">
|
|
|
|
+ <img src="../assets//img/add.svg" alt="">
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="footListCon" v-for="(item,index) in CocoFlowList" @click="openNewWindow(item)" :key="index+'4p'">
|
|
|
|
+ <div class="footListConimg">
|
|
|
|
+ <img style="margin-bottom: 12px;height: 24px;width: 22px;" :src="JSON.parse(item.json).icon" alt="">
|
|
|
|
+ </div>
|
|
<div class="TabListName">{{ item.name }}</div>
|
|
<div class="TabListName">{{ item.name }}</div>
|
|
<div class="TabListBri">
|
|
<div class="TabListBri">
|
|
<el-tooltip class="item" effect="light" :content="item.detail" placement="bottom">
|
|
<el-tooltip class="item" effect="light" :content="item.detail" placement="bottom">
|
|
@@ -57,11 +92,6 @@
|
|
<img style="width: 20px;" src="../assets/img/cha.svg" alt="">
|
|
<img style="width: 20px;" src="../assets/img/cha.svg" alt="">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <!-- v-if="userinfo.type == 1 && userinfo.role == 1" -->
|
|
|
|
- <div :style="{width : CocoFlowList.length ? '' : '187px'}" v-if="CocoFlowList.length < 4" @click="openUsuallyApp" class="footListCon footListCon2">
|
|
|
|
- <div style="margin-bottom: 8px;font-size: 40px;color: #0354D7;">+</div>
|
|
|
|
- <div class="TabListBri">添加常用应用</div>
|
|
|
|
- </div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
@@ -75,7 +105,7 @@
|
|
width="60%"
|
|
width="60%"
|
|
:before-close="handleClose">
|
|
:before-close="handleClose">
|
|
<div v-loading="loading" style="display: grid;grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));gap: 16px;height: 300px;overflow: auto;">
|
|
<div v-loading="loading" style="display: grid;grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));gap: 16px;height: 300px;overflow: auto;">
|
|
- <div v-for="(item,index) in isAdd(usuallyList)" class="tabCon" @click="addApp(item.id)" :key="index" style="min-width: 308px;">
|
|
|
|
|
|
+ <div v-for="(item,index) in isAdd(usuallyList)" class="tabCon" @click="addApp(item.id)" :key="index+'6p'" style="min-width: 308px;">
|
|
<div class="AppList">
|
|
<div class="AppList">
|
|
<img class="appImg" :src="JSON.parse(item.json).icon" alt="">
|
|
<img class="appImg" :src="JSON.parse(item.json).icon" alt="">
|
|
<div class="con">
|
|
<div class="con">
|
|
@@ -114,6 +144,7 @@ import { API_CONFIG } from "@/common/apiConfig";
|
|
AppCon(){
|
|
AppCon(){
|
|
return function(c) {
|
|
return function(c) {
|
|
let k = JSON.parse(JSON.stringify(c))
|
|
let k = JSON.parse(JSON.stringify(c))
|
|
|
|
+
|
|
let data = k.filter(e=>{
|
|
let data = k.filter(e=>{
|
|
return e.region == this.userinfo.schoolArea || e.region == this.userinfo.orgArea
|
|
return e.region == this.userinfo.schoolArea || e.region == this.userinfo.orgArea
|
|
})
|
|
})
|
|
@@ -133,34 +164,29 @@ import { API_CONFIG } from "@/common/apiConfig";
|
|
// 筛选是否为管理员可见,是否被删除
|
|
// 筛选是否为管理员可见,是否被删除
|
|
appSignL(){
|
|
appSignL(){
|
|
return function(val){
|
|
return function(val){
|
|
-
|
|
|
|
let data = []
|
|
let data = []
|
|
if (this.userinfo.type == 1 && this.userinfo.role == 1) {
|
|
if (this.userinfo.type == 1 && this.userinfo.role == 1) {
|
|
val.forEach( e =>{
|
|
val.forEach( e =>{
|
|
if (e.menuName || e.status == 0) {
|
|
if (e.menuName || e.status == 0) {
|
|
- data.push(e)
|
|
|
|
|
|
+ data.push(e)
|
|
}
|
|
}
|
|
})
|
|
})
|
|
} else {
|
|
} else {
|
|
val.forEach( e =>{
|
|
val.forEach( e =>{
|
|
if (e.menuName || (e.isAdmin == '0' && e.status == 0)) {
|
|
if (e.menuName || (e.isAdmin == '0' && e.status == 0)) {
|
|
- data.push(e)
|
|
|
|
|
|
+ data.push(e)
|
|
}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
}
|
|
return data
|
|
return data
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ // 判断是否被添加过
|
|
isAdd(){
|
|
isAdd(){
|
|
return function(val){
|
|
return function(val){
|
|
const difference = val.filter(item1 =>
|
|
const difference = val.filter(item1 =>
|
|
!this.CocoFlowList.some(item2 => item1.id === item2.id)
|
|
!this.CocoFlowList.some(item2 => item1.id === item2.id)
|
|
);
|
|
);
|
|
- // console.log('difference',difference);
|
|
|
|
-
|
|
|
|
- // let data = val.filter(e=>{
|
|
|
|
- // return !this.CocoFlowList.includes(e.id)
|
|
|
|
- // })
|
|
|
|
return difference
|
|
return difference
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -168,16 +194,23 @@ import { API_CONFIG } from "@/common/apiConfig";
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
dialogVisible:false,
|
|
dialogVisible:false,
|
|
- //常见ai应用列表
|
|
|
|
|
|
+ //常见ai应用列表(添加弹框)
|
|
usuallyList:[],
|
|
usuallyList:[],
|
|
loading:false,
|
|
loading:false,
|
|
//选中应用列表
|
|
//选中应用列表
|
|
tab:[],
|
|
tab:[],
|
|
- // 已添加ai应用数组
|
|
|
|
- CocoFlowList:[]
|
|
|
|
|
|
+ // 管理平台添加常见cocoFlow应用
|
|
|
|
+ admincocoFlow:[],
|
|
|
|
+ // 用户ai应用数组
|
|
|
|
+ CocoFlowList:[],
|
|
|
|
+
|
|
|
|
+ hovList:[],
|
|
}
|
|
}
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ setHovered(index, value) {
|
|
|
|
+ this.hovList.splice(index,1,value)
|
|
|
|
+ },
|
|
// 删除应用
|
|
// 删除应用
|
|
delApp(val){
|
|
delApp(val){
|
|
this.$confirm('确定删除吗', '提示', {
|
|
this.$confirm('确定删除吗', '提示', {
|
|
@@ -215,14 +248,14 @@ import { API_CONFIG } from "@/common/apiConfig";
|
|
this.tab= []
|
|
this.tab= []
|
|
this.dialogVisible = false
|
|
this.dialogVisible = false
|
|
},
|
|
},
|
|
- // 弹框选着添加应用
|
|
|
|
|
|
+ // 弹框选择添加应用
|
|
addApp(val){
|
|
addApp(val){
|
|
// let data = this.CocoFlowList.filter(e=>{
|
|
// let data = this.CocoFlowList.filter(e=>{
|
|
// return e.id == val
|
|
// return e.id == val
|
|
// })
|
|
// })
|
|
// if (data.length != 0) return this.$message.info('常用列表已添加')
|
|
// if (data.length != 0) return this.$message.info('常用列表已添加')
|
|
let kpl = [...this.tab,...this.CocoFlowList]
|
|
let kpl = [...this.tab,...this.CocoFlowList]
|
|
- console.log(kpl);
|
|
|
|
|
|
+ // console.log(kpl);
|
|
|
|
|
|
|
|
|
|
const index = this.tab.indexOf(val);
|
|
const index = this.tab.indexOf(val);
|
|
@@ -271,7 +304,7 @@ import { API_CONFIG } from "@/common/apiConfig";
|
|
this.getData()
|
|
this.getData()
|
|
this.handleClose()
|
|
this.handleClose()
|
|
},
|
|
},
|
|
- // 循环添加常见应用
|
|
|
|
|
|
+ // 循环添加用户选择常见应用
|
|
XAdd(val){
|
|
XAdd(val){
|
|
return new Promise((resolve) => {
|
|
return new Promise((resolve) => {
|
|
let params = [
|
|
let params = [
|
|
@@ -313,6 +346,29 @@ import { API_CONFIG } from "@/common/apiConfig";
|
|
this.$message.error("获取工具数据失败");
|
|
this.$message.error("获取工具数据失败");
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
+ getAdmincocoFlow(){
|
|
|
|
+ // console.log('getAdmincocoFlow',this.fromL);
|
|
|
|
+
|
|
|
|
+ // 如果后台预设常用ai工具为0则不执行
|
|
|
|
+ if (this.fromL.admin.cocoFlow.length == 0) return
|
|
|
|
+
|
|
|
|
+ let params = [
|
|
|
|
+ {
|
|
|
|
+ functionName: API_CONFIG.ajax_AdminApp.functionName,
|
|
|
|
+ con: this.fromL.admin.cocoFlow.join(','),
|
|
|
|
+ },
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ this.$ajax
|
|
|
|
+ .post(API_CONFIG.baseUrl, params)
|
|
|
|
+ .then((res) => {
|
|
|
|
+ this.admincocoFlow = res.data[0]
|
|
|
|
+ })
|
|
|
|
+ .catch((err) => {
|
|
|
|
+ console.log(err);
|
|
|
|
+ this.$message.error("获取工具数据失败");
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
|
|
// 打开平台应用
|
|
// 打开平台应用
|
|
async openApp(val){
|
|
async openApp(val){
|
|
@@ -391,159 +447,208 @@ import { API_CONFIG } from "@/common/apiConfig";
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
<style scoped>
|
|
-.moreDia >>> .el-dialog{
|
|
|
|
- border-radius: 10px;
|
|
|
|
|
|
+/* 顶部区域 */
|
|
|
|
+.topBlock{
|
|
|
|
+ display: flex;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ justify-content: space-between;
|
|
}
|
|
}
|
|
-.moreDia >>> .el-dialog__body{
|
|
|
|
- height: 345px;
|
|
|
|
- /* overflow: auto; */
|
|
|
|
- border-top: 1px #e7e7e7 solid;
|
|
|
|
|
|
+.topTit{
|
|
|
|
+ font-size: 30px;
|
|
|
|
+ height: 100%;
|
|
|
|
+ color: #000;
|
|
|
|
+ font-weight: 600;
|
|
}
|
|
}
|
|
-.conBlock{
|
|
|
|
- background-color: #fff;
|
|
|
|
|
|
+.topDetail{
|
|
|
|
+ color: #64748B;
|
|
|
|
+ margin-top: 16px;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/* 平台应用 */
|
|
|
|
+.TabList{
|
|
|
|
+ display: grid;
|
|
|
|
+ grid-template-columns: repeat(3, 1fr);
|
|
|
|
+ gap: 106px; /* 网格间距 */
|
|
|
|
+ margin-bottom: 16px;
|
|
|
|
+}
|
|
|
|
+.imgApp{
|
|
|
|
+ width: 120px;
|
|
|
|
+ height: 140px;
|
|
|
|
+ object-fit: contain;
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: 50%;
|
|
|
|
+ transform: translate(0,-50%);
|
|
|
|
+ left: -50px;
|
|
|
|
+}
|
|
|
|
+.TabListCon{
|
|
|
|
+ width: 170px;
|
|
|
|
+ height: 140px;
|
|
padding: 24px;
|
|
padding: 24px;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
- margin-bottom: 24px;
|
|
|
|
|
|
+ background-color: #fff;
|
|
border-radius: 10px;
|
|
border-radius: 10px;
|
|
-}
|
|
|
|
-.tabCon{
|
|
|
|
|
|
+ width: 100%;
|
|
transition: all 0.3s ease; /* 统一过渡效果 */
|
|
transition: all 0.3s ease; /* 统一过渡效果 */
|
|
- border-radius: 10px;
|
|
|
|
|
|
+ /* background-image: radial-gradient(#E6F0FF 1px, transparent 1px); */
|
|
|
|
+ background-size: 20px 20px;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
-}
|
|
|
|
-
|
|
|
|
-.con{
|
|
|
|
- flex: 1;
|
|
|
|
- margin-left: 12px;
|
|
|
|
|
|
+ box-shadow: 0px 4px 10px 0px #0000000D;
|
|
display: flex;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
- justify-content: center;
|
|
|
|
|
|
+ justify-content: flex-end;
|
|
|
|
+ align-items: end;
|
|
}
|
|
}
|
|
-.tit{
|
|
|
|
- color: #1f2937;font-size: 16px;height: 24px;line-height: 24px;
|
|
|
|
- -webkit-line-clamp: 1;
|
|
|
|
|
|
+.TabListCon:hover{
|
|
|
|
+ transform: translate(-5px,-10px); /* 向上位移 */
|
|
|
|
+ box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
|
|
+}
|
|
|
|
+.TabListCon:hover TabListBri{
|
|
|
|
+ -webkit-line-clamp: 2;
|
|
|
|
+ width: 150px;
|
|
|
|
+}
|
|
|
|
+.TabListName{
|
|
|
|
+ color: #1f2937;
|
|
|
|
+ font-size: 16px;
|
|
|
|
+ font-weight: 600;
|
|
|
|
+ padding: 5px 0;
|
|
|
|
+ margin-bottom: 4px;
|
|
|
|
+ -webkit-line-clamp: 2;
|
|
display: -webkit-box;
|
|
display: -webkit-box;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
text-overflow: ellipsis;
|
|
}
|
|
}
|
|
-.bri{
|
|
|
|
- color: #6b7280;font-size: 12px;height: 16px;line-height: 16px;
|
|
|
|
- overflow: hidden;
|
|
|
|
|
|
+.TabListBri{
|
|
|
|
+ color: #4b5563;
|
|
|
|
+ font-size: 12px;
|
|
-webkit-line-clamp: 1;
|
|
-webkit-line-clamp: 1;
|
|
display: -webkit-box;
|
|
display: -webkit-box;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
text-overflow: ellipsis;
|
|
}
|
|
}
|
|
-.appImg{
|
|
|
|
- width: 48px;
|
|
|
|
- height: 48px;
|
|
|
|
- border-radius: 50%;
|
|
|
|
- object-fit: cover;
|
|
|
|
-}
|
|
|
|
-.AppList{
|
|
|
|
- flex-wrap: wrap;display: flex;
|
|
|
|
- justify-content: space-between;
|
|
|
|
- border: 1px rgb(243 244 246 / var(--tw-border-opacity, 1)) solid;
|
|
|
|
- border-radius: 10px;padding: 16px;box-sizing: border-box;
|
|
|
|
- position: relative;
|
|
|
|
|
|
+
|
|
|
|
+.tabCon{
|
|
|
|
+ transition: all 0.3s ease; /* 统一过渡效果 */
|
|
|
|
+ border-radius: 10px;
|
|
|
|
+ cursor: pointer;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/* 常见应用样式 */
|
|
.footCon{
|
|
.footCon{
|
|
display: flex;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
- padding: 16px;
|
|
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
- background-color: #eff6ff;
|
|
|
|
border-radius: 10px;
|
|
border-radius: 10px;
|
|
- background-image: radial-gradient(#E6F0FF 1px, transparent 1px);
|
|
|
|
|
|
+ gap: 30px;
|
|
|
|
+ margin: 80px 0;
|
|
|
|
+ /* background-image: radial-gradient(#E6F0FF 1px, transparent 1px); */
|
|
background-size: 20px 20px;
|
|
background-size: 20px 20px;
|
|
}
|
|
}
|
|
-.footListCon2{
|
|
|
|
- display: flex;
|
|
|
|
- justify-content: center;
|
|
|
|
- flex-direction: column;
|
|
|
|
- align-items: center;
|
|
|
|
- max-width: 187px;
|
|
|
|
|
|
+
|
|
|
|
+/* 图片 */
|
|
|
|
+.footConLeft{
|
|
|
|
+ /* width: 360px; */
|
|
|
|
+ flex: 1;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+}
|
|
|
|
+.footConLeft img{
|
|
|
|
+ width: 100%;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* 中间后面设置应用 */
|
|
|
|
+.footList{
|
|
|
|
+ display: grid;
|
|
|
|
+ grid-template-columns: repeat(4, 1fr);
|
|
|
|
+ gap: 16px; /* 网格间距 */
|
|
|
|
+ flex: 2;
|
|
}
|
|
}
|
|
.footListCon{
|
|
.footListCon{
|
|
background-color: #fff;
|
|
background-color: #fff;
|
|
border-radius: 10px;
|
|
border-radius: 10px;
|
|
- padding: 24px;
|
|
|
|
|
|
+ padding: 16px;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
transition: all 0.3s ease; /* 统一过渡效果 */
|
|
transition: all 0.3s ease; /* 统一过渡效果 */
|
|
- min-height: 156px;
|
|
|
|
- max-width: 187px;
|
|
|
|
- background-image: radial-gradient(#E6F0FF 1px, transparent 1px);
|
|
|
|
|
|
+ height: 10vw;
|
|
|
|
+ width: 10vw;
|
|
|
|
+ min-height: 146px;
|
|
|
|
+ max-width: 175px;
|
|
|
|
+ max-height: 175px;
|
|
background-size: 20px 20px;
|
|
background-size: 20px 20px;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
position: relative;
|
|
position: relative;
|
|
}
|
|
}
|
|
.footListCon:hover{
|
|
.footListCon:hover{
|
|
- transform: translateY(-5px); /* 向上位移 */
|
|
|
|
|
|
+ transform: translate(-5px,-10px); /* 向上位移 */
|
|
|
|
+
|
|
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
}
|
|
}
|
|
|
|
+.footListConimg{
|
|
|
|
+ height: 40%;
|
|
|
|
+}
|
|
.cha{
|
|
.cha{
|
|
display: none;position: absolute;top: 10px;right: 10px;
|
|
display: none;position: absolute;top: 10px;right: 10px;
|
|
}
|
|
}
|
|
.footListCon:hover .cha{
|
|
.footListCon:hover .cha{
|
|
display: block;
|
|
display: block;
|
|
}
|
|
}
|
|
-.footConLeft{
|
|
|
|
- padding: 25px;
|
|
|
|
- min-width: 50px;
|
|
|
|
- box-sizing: border-box;
|
|
|
|
-}
|
|
|
|
-.footList{
|
|
|
|
|
|
+
|
|
|
|
+/* 添加常见应用区域 */
|
|
|
|
+.footList2{
|
|
display: grid;
|
|
display: grid;
|
|
- grid-template-columns: repeat(4, 1fr);
|
|
|
|
- gap: 16px; /* 网格间距 */
|
|
|
|
|
|
+ grid-template-columns: repeat(2, 1fr);
|
|
|
|
+ gap: 16px;
|
|
|
|
+ flex: 1;
|
|
|
|
+ position: relative;
|
|
}
|
|
}
|
|
-.TabList{
|
|
|
|
- display: grid;
|
|
|
|
- grid-template-columns: repeat(3, 1fr);
|
|
|
|
- gap: 16px; /* 网格间距 */
|
|
|
|
- margin-bottom: 16px;
|
|
|
|
|
|
+.footList2Tit{
|
|
|
|
+ position: absolute;
|
|
|
|
+ top: -30px;
|
|
|
|
+ left: 0;
|
|
|
|
+ font-family: PingFang SC;
|
|
|
|
+ color: #000;
|
|
}
|
|
}
|
|
|
|
|
|
-.TabListCon{
|
|
|
|
- width: 170px;
|
|
|
|
- height: 140px;
|
|
|
|
- padding: 24px;
|
|
|
|
- box-sizing: border-box;
|
|
|
|
- background-color: #fff;
|
|
|
|
- border-radius: 10px;
|
|
|
|
- width: 100%;
|
|
|
|
- box-shadow: 0 0 #0000, 0 0 #0000, 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
|
|
- transition: all 0.3s ease; /* 统一过渡效果 */
|
|
|
|
- background-image: radial-gradient(#E6F0FF 1px, transparent 1px);
|
|
|
|
- background-size: 20px 20px;
|
|
|
|
|
|
+.footListCon2{
|
|
|
|
+ display: flex;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ align-items: center;
|
|
|
|
+ border: 1px dashed #000000;
|
|
|
|
+ width: 10vw;
|
|
|
|
+ height: 10vw;
|
|
|
|
+ min-height: 146px;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+ max-width: 175px;
|
|
|
|
+ max-height: 175px;
|
|
|
|
+ border-radius: 12px;
|
|
|
|
+ border-width: 1px;
|
|
|
|
+ background-color: #E5E5E5;
|
|
}
|
|
}
|
|
-.TabListCon:hover{
|
|
|
|
- transform: translateY(-5px); /* 向上位移 */
|
|
|
|
- box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
|
|
|
|
-}
|
|
|
|
-.TabListName{
|
|
|
|
- color: #1f2937;
|
|
|
|
- font-size: 18px;
|
|
|
|
- font-weight: 600;
|
|
|
|
- margin-bottom: 4px;
|
|
|
|
- -webkit-line-clamp: 2;
|
|
|
|
- display: -webkit-box;
|
|
|
|
- -webkit-box-orient: vertical;
|
|
|
|
- overflow: hidden;
|
|
|
|
- text-overflow: ellipsis;
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/* 弹框 */
|
|
|
|
+.moreDia >>> .el-dialog{
|
|
|
|
+ border-radius: 10px;
|
|
}
|
|
}
|
|
-.TabListBri{
|
|
|
|
- color: #4b5563;
|
|
|
|
- font-size: 12px;
|
|
|
|
- -webkit-line-clamp: 2;
|
|
|
|
- display: -webkit-box;
|
|
|
|
- -webkit-box-orient: vertical;
|
|
|
|
- overflow: hidden;
|
|
|
|
- text-overflow: ellipsis;
|
|
|
|
|
|
+.moreDia >>> .el-dialog__body{
|
|
|
|
+ height: 345px;
|
|
|
|
+ /* overflow: auto; */
|
|
|
|
+ border-top: 1px #e7e7e7 solid;
|
|
}
|
|
}
|
|
|
|
+/* 对号 */
|
|
.top{
|
|
.top{
|
|
display: flex;
|
|
display: flex;
|
|
min-height: 144px;
|
|
min-height: 144px;
|
|
@@ -556,19 +661,43 @@ import { API_CONFIG } from "@/common/apiConfig";
|
|
border-radius: 10px;
|
|
border-radius: 10px;
|
|
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)
|
|
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)
|
|
}
|
|
}
|
|
-.topBlock{
|
|
|
|
|
|
+
|
|
|
|
+.AppList{
|
|
|
|
+ flex-wrap: wrap;display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ border: 1px rgb(243 244 246 / var(--tw-border-opacity, 1)) solid;
|
|
|
|
+ border-radius: 10px;padding: 16px;box-sizing: border-box;
|
|
|
|
+ position: relative;
|
|
|
|
+}
|
|
|
|
+.appImg{
|
|
|
|
+ width: 48px;
|
|
|
|
+ height: 48px;
|
|
|
|
+ border-radius: 50%;
|
|
|
|
+ object-fit: cover;
|
|
|
|
+}
|
|
|
|
+.con{
|
|
|
|
+ flex: 1;
|
|
|
|
+ margin-left: 12px;
|
|
display: flex;
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
- justify-content: space-between;
|
|
|
|
|
|
+ justify-content: center;
|
|
}
|
|
}
|
|
-.topTit{
|
|
|
|
- font-size: 30px;
|
|
|
|
- height: 100%;
|
|
|
|
- color: #000;
|
|
|
|
- font-weight: 600;
|
|
|
|
|
|
+.tit{
|
|
|
|
+ color: #1f2937;font-size: 16px;height: 24px;line-height: 24px;
|
|
|
|
+ -webkit-line-clamp: 1;
|
|
|
|
+ display: -webkit-box;
|
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ text-overflow: ellipsis;
|
|
}
|
|
}
|
|
-.topDetail{
|
|
|
|
- color: #64748B;
|
|
|
|
- margin-top: 16px;
|
|
|
|
|
|
+.bri{
|
|
|
|
+ color: #6b7280;font-size: 12px;height: 16px;line-height: 16px;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ -webkit-line-clamp: 1;
|
|
|
|
+ display: -webkit-box;
|
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ text-overflow: ellipsis;
|
|
}
|
|
}
|
|
|
|
+
|
|
</style>
|
|
</style>
|