You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.5 KiB
Vue
139 lines
4.5 KiB
Vue
<template>
|
|
<div class="rgzn_top app-container2" v-loading="loading" element-loading-text="Loading..." :element-loading-spinner="svg" element-loading-svg-view-box="-10, -10, 50, 50" element-loading-background="rgba(122, 122, 122, 0.8)">
|
|
<div class="top_item">
|
|
<el-button :class="{ active: isActive === 1 }" @click="activeIndex(1)">用户数据库</el-button>
|
|
<el-button :class="{ active: isActive === 2 }" @click="activeIndex(2)">描述性统计</el-button>
|
|
<el-button :class="{ active: isActive === 3 }" @click="activeIndex(3)">聚类分析</el-button>
|
|
<el-button :class="{ active: isActive === 4 }" @click="activeIndex(4)">关联规则挖掘</el-button>
|
|
<el-button :class="{ active: isActive === 5 }" @click="activeIndex(5)">回归分析</el-button>
|
|
<el-button :class="{ active: isActive === 6 }" @click="activeIndex(6)">情感分析/文本挖掘</el-button>
|
|
</div>
|
|
<div>
|
|
<component v-if="component" :is="component"></component>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script setup>
|
|
import * as portraitModel from "@/api/portraitModel";
|
|
import useAlgorithmStore from "@/store/modules/algorithm.js";
|
|
import { getUserInfo } from "@/utils/auth";
|
|
const algorithmStore = useAlgorithmStore();
|
|
const userInfo = JSON.parse(getUserInfo());
|
|
const route = useRoute();
|
|
const pageData = [defineAsyncComponent(() => import("./components/bigData.vue")), defineAsyncComponent(() => import("./components/descriptiveStatistics.vue")), defineAsyncComponent(() => import("./components/clusterAnalysis.vue")), defineAsyncComponent(() => import("./components/associationRuleMining.vue")), defineAsyncComponent(() => import("./components/regressionAnalysis.vue")), defineAsyncComponent(() => import("./components/emotion-analysis.vue"))];
|
|
const component = ref(pageData[0]);
|
|
const isActive = ref(1);
|
|
const loading = ref(false);
|
|
const activeIndex = (index) => {
|
|
isActive.value = index;
|
|
component.value = pageData[index - 1];
|
|
};
|
|
const map = {
|
|
用户数据库: 1,
|
|
描述性统计: 2,
|
|
关联规则挖掘: 3,
|
|
聚类分析: 4,
|
|
回归分析: 5,
|
|
情感分析: 6,
|
|
};
|
|
const selectZJ = (item) => {
|
|
loading.value = true;
|
|
portraitModel.getUserTableInfo({ userId: userInfo.userId }).then((res) => {
|
|
algorithmStore.userDataLabel = [...res?.data.tableNames, ...res.data.selfBuiltTable].filter((item) => item !== "用户评论表");
|
|
if (algorithmStore.userDataLabel.length > 0) {
|
|
setTimeout(() => {
|
|
loading.value = false;
|
|
}, 500);
|
|
} else {
|
|
setTimeout(() => {
|
|
loading.value = false;
|
|
}, 1000);
|
|
}
|
|
});
|
|
};
|
|
onMounted(() => {
|
|
isActive.value = map[route.meta.title];
|
|
component.value = pageData[map[route.meta.title] - 1];
|
|
selectZJ();
|
|
});
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.content {
|
|
color: #fff;
|
|
}
|
|
.rgzn_top {
|
|
margin-top: 20px;
|
|
height: calc(100vh - 100px);
|
|
.top_item {
|
|
img {
|
|
margin-right: 5px;
|
|
}
|
|
.el-button {
|
|
padding-left: 49px !important;
|
|
}
|
|
.el-button:nth-child(1) {
|
|
width: 170px;
|
|
height: 50px;
|
|
background: url("../../assets/images/11.png");
|
|
color: #ffffff;
|
|
border-color: #ffffff00;
|
|
padding: 8px 5px 8px 47px;
|
|
}
|
|
.el-button:nth-child(2) {
|
|
width: 170px;
|
|
height: 50px;
|
|
background: url("../../assets/images/22.png");
|
|
color: #ffffff;
|
|
border-color: #ffffff00;
|
|
padding: 8px 5px 8px 47px;
|
|
}
|
|
.el-button:nth-child(3) {
|
|
width: 170px;
|
|
height: 50px;
|
|
background: url("../../assets/images/33.png");
|
|
color: #ffffff;
|
|
border-color: #ffffff00;
|
|
padding: 8px 5px 8px 47px;
|
|
}
|
|
.el-button:nth-child(4) {
|
|
width: 170px;
|
|
height: 50px;
|
|
background: url("../../assets/images/44.png");
|
|
color: #ffffff;
|
|
border-color: #ffffff00;
|
|
padding: 8px 5px 8px 30px;
|
|
}
|
|
.el-button:nth-child(5) {
|
|
width: 170px;
|
|
height: 50px;
|
|
background: url("../../assets/images/55.png");
|
|
color: #ffffff;
|
|
border-color: #ffffff00;
|
|
padding: 8px 5px 8px 25px;
|
|
}
|
|
.el-button:nth-child(6) {
|
|
width: 190px;
|
|
height: 50px;
|
|
background: url("../../assets/images/66.png");
|
|
color: #ffffff;
|
|
border-color: #ffffff00;
|
|
padding: 8px 20px 8px 30px;
|
|
background-size: 100% 100%;
|
|
}
|
|
.el-button:nth-child(7) {
|
|
width: 170px;
|
|
height: 50px;
|
|
background: url("../../assets/images/77.png");
|
|
color: #ffffff;
|
|
border-color: #ffffff00;
|
|
padding: 8px 5px 8px 20px;
|
|
}
|
|
.active {
|
|
transform: scale(1.1);
|
|
transition: all 0.3s;
|
|
}
|
|
}
|
|
}
|
|
</style>
|