dev-QQq
方佳 博 2 years ago
parent a0fba951f7
commit 6bae8f02a8

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 B

@ -96,6 +96,19 @@ export const constantRoutes = [
}, },
], ],
}, },
{
path: "",
component: Layout,
redirect: "/digitalMarketingAlgorithms",
children: [
{
path: "/digitalMarketingAlgorithms",
component: () => import("@/views/digitalMarketingAlgorithms/index"),
name: "digitalMarketingAlgorithms",
meta: { title: "数字营销算法", icon: "dashboard", affix: true },
},
],
},
{ {
path: "", path: "",
component: Layout, component: Layout,

@ -67,7 +67,6 @@
import { ref, reactive } from "vue"; import { ref, reactive } from "vue";
import * as AI from "@/api/AI.js"; import * as AI from "@/api/AI.js";
import {getAssetsFile} from "@/utils/index.js" import {getAssetsFile} from "@/utils/index.js"
import { getUserInfo } from '@/utils/auth'
const input = ref(""); const input = ref("");
const butFlag = ref(false); const butFlag = ref(false);
const messages = reactive([]); const messages = reactive([]);
@ -131,7 +130,7 @@ const sendText = async() => {
}, },
name: "", name: "",
role: "user", role: "user",
userId: JSON.parse(getUserInfo()).userId, userId: "512",
}, },
]; ];
const messageId = Date.now(); const messageId = Date.now();
@ -153,8 +152,8 @@ const sendText = async() => {
const decoder=new TextDecoder() const decoder=new TextDecoder()
const tet=decoder.decode(value) const tet=decoder.decode(value)
newMessage.displayContent+=tet newMessage.displayContent+=tet
console.log(tet);
} }
isRequestPending.value = false;
nextTick(() => { nextTick(() => {
setTimeout(() => { setTimeout(() => {
const scrollContainer = scrollbar.value?.$el.querySelector('.el-scrollbar__wrap'); const scrollContainer = scrollbar.value?.$el.querySelector('.el-scrollbar__wrap');
@ -163,7 +162,9 @@ const sendText = async() => {
} }
}, 10); }, 10);
}); });
isRequestPending.value = false;
}; };
const handleKeyDown = (event) => { const handleKeyDown = (event) => {
if (event.key === "Enter" && !event.shiftKey) { if (event.key === "Enter" && !event.shiftKey) {
event.preventDefault(); event.preventDefault();

@ -0,0 +1,159 @@
<template>
<div class="app-main">
<div class="main-left">
<div class="left-top">
<img style="width: 26px;height: 26px;" src="../../../assets/images/图标1.png" alt="">
<span>内置表</span>
</div>
<div class="left-item">
<div v-for="(item,index) in nzData" :key="index" class="item" :class="{ 'is-active': nzIndex === index}" @click="goNZ(index)">
<span>{{item}}</span>
</div>
</div>
<div class="left-top" style="margin-top:35px">
<img style="width: 26px;height: 26px;" src="../../../assets/images/图标.png" alt="">
<span>自建表</span>
</div>
<div class="left-item">
<div v-for="(item,index) in zjData" :key="index" class="item" :class="{ 'is-active': zjIndex === index}" @click="goZJ(index)">
<span>{{item}}</span>
</div>
</div>
</div>
<div class="main-right">
<el-table :data="tableData" style="width: 94%" :header-cell-style="headerCellStyle">
<el-table-column v-for="column in tableLabel" :key="column.prop" :prop="column.prop" :label="column.label" align="center"/>
</el-table>
</div>
</div>
</template>
<script setup>
import { reactive } from "vue"
const nzIndex=ref(0)
const nzData=['用户属性表','用户登录活跃表','用户消费能力表','用户行为表','用户评论表']
const zjIndex=ref(-1)
const zjData=['用户属性表','用户登录活跃表','用户消费能力表','用户行为表','用户评论表']
const tableLabel=reactive([
{prop:'date',label:'用户ID'},
{prop:'name',label:'登录名'},
{prop:'name',label:'用户姓名'},
{prop:'name',label:'学号'},
{prop:'name',label:'班级'},
{prop:'name',label:'专业'},
{prop:'name',label:'学校'},
{prop:'name',label:'角色名称'},
{prop:'name',label:'角色性别'},
{prop:'name',label:'角色年龄'},
{prop:'name',label:'注册时间'},
{prop:'name',label:'所在地'}
])
const goNZ=(index)=>{
nzIndex.value=index
zjIndex.value=-1
}
const goZJ=(index)=>{
zjIndex.value=index
nzIndex.value=-1
}
const tableData = [
{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
]
const headerCellStyle=()=>{
return {
// backgroundColor: "#0087F9 !important", //
// background:"linear-gradient(0deg, #002651 0%, #0087F9 100%) !important;",
color: "#ffffff !important",
};
}
</script>
<style lang="scss" scoped>
.app-main {
// background-color: #f5f5f5;
margin: 20px 20px 0;
height: calc(100vh - 150px);
display: flex;
overflow: auto;
.main-left{
width: 205px;
height: 100%;
background: #041C49;
.left-top{
gap: 5px;
display: flex;
align-items: center;
padding: 10px 20px;
span{
font-weight: bold;
font-size: 18px;
color: #3596EB;
}
}
.left-item{
.item{
width: 195px;
height: 31px;
// background: #1983DD;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
span{
color: #9BD1FF;
font-weight: 400;
font-size: 14px;
}
}
.is-active{
background: #1983DD;
span{
color:#FFFFFF;
}
}
}
}
.main-right{
width: 1639px;
height: 100%;
padding: 20px;
// background: #001D40;
border: 1px solid #0452C6;
// opacity: 0.5;
}
}
:deep(.el-table__header){
.el-table__cell{
background:linear-gradient(0deg, #002651 0%, #0087F9 100%) !important;
}
}
:deep(.el-table) {
--el-table-row-hover-bg-color:#002651 !important;
--el-table-border-color: #002651;
.el-table__row{
background-color: #002652 !important;
color: #E6E6E6;
}
}
</style>

@ -0,0 +1,350 @@
<template>
<el-scrollbar height="800px">
<div class="main-top">
<span style="font-weight: bold;font-size: 18px;color: #3596EB;">任务描述</span>
<p style="font-weight: 400;font-size: 12px;color: #E6E6E6;">给出任务清单参考做哪些数据的统计分析Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar sic tempor. Sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus pronin sapien nunc accuan eget.</p>
</div>
<div class="main-but">
<el-button><img src="../../../assets/images/导入.png" alt="">算法知识导入</el-button>
<el-button @click="taskSubmit"><img src="../../../assets/images/提交.png" alt="">实训任务提交</el-button>
</div>
<div class="app-main">
<div class="main-left">
<div class="left-top">
<span>选择指标</span>
</div>
<div class="metrics">
<el-select v-model="input" placeholder="请选择数据" style="width: 180px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div class="metrics-table" style="margin-top: 10px">
<el-table border :data="tableData" style="width: 100%" :header-cell-style="headerCellStyle">
<el-table-column type="selection" prop="date" label="Date" align="center"/>
<el-table-column prop="name" label="指标" align="center"/>
</el-table>
<el-button>确定</el-button>
</div>
<div class="left-top">
<span>数据预处理</span>
</div>
<div class="metrics">
<el-select v-model="input" placeholder="请选择数据" style="width: 180px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div class="metrics" style="margin-top:15px">
<el-select v-model="input" placeholder="请选择数据" style="width: 180px">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</div>
<div class="left-top" style="margin-top: 10px">
<span>模型参数设置</span>
</div>
<div class="metrics-table" style="margin-top: 10px">
<el-table border :data="tableData" style="width: 100%" :header-cell-style="headerCellStyle">
<el-table-column type="selection" prop="date" label="Date" align="center"/>
<el-table-column prop="name" label="指标" align="center"/>
</el-table>
<el-button>计算</el-button>
</div>
<div class="startOver">
<img src="../../../assets/images/重新开始.png" alt="">
<span>重新开始</span>
</div>
</div>
<div class="main-right">
<div>
<span style="font-weight: bold;font-size: 18px;color: #3596EB;">分析数据</span>
<el-table :data="tableData" style="width: 94%;margin-top:10px" :header-cell-style="headerCellStyle" height="350">
<el-table-column v-for="column in tableLabel" :key="column.prop" :prop="column.prop" :label="column.label" align="center"/>
</el-table>
<el-pagination style="margin-top:10px" background layout="prev, pager, next" :total="1000" />
</div>
<div class="analysisResults" style="margin-top: 20px">
<span style="font-weight: bold;font-size: 18px;color: #3596EB;display: block;">分析结果</span>
<el-button>下载</el-button>
<el-table :data="tableData" style="width: 94%;margin-top:10px" :header-cell-style="headerCellStyle" height="350">
<el-table-column v-for="column in tableLabel" :key="column.prop" :prop="column.prop" :label="column.label" align="center"/>
</el-table>
<el-pagination style="margin-top:10px" background layout="prev, pager, next" :total="1000" />
</div>
</div>
</div>
</el-scrollbar>
<el-dialog
v-model="dialogVisible"
title="实训任务提交"
width="545"
custom-class="dialogClass"
:show-close="false"
>
<template #header="{ close, titleId, titleClass }">
<div class="my-header">
<span :id="titleId" :class="titleClass">实训任务提交</span>
<img class="gbImg" src="../../../assets/images/关闭.png" @click="close" alt="">
</div>
<img class="xtImg" src="../../../assets/images/线条.png" alt="">
</template>
This is dialog content.
<span>This is a message</span>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">Cancel</el-button>
<el-button type="primary" @click="dialogVisible = false">
Confirm
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup>
const dialogVisible=ref(false)
const tableLabel=reactive([
{prop:'date',label:'用户ID'},
{prop:'name',label:'登录名'},
{prop:'name',label:'用户姓名'},
{prop:'name',label:'学号'},
{prop:'name',label:'班级'},
{prop:'name',label:'专业'},
{prop:'name',label:'学校'},
{prop:'name',label:'角色名称'},
{prop:'name',label:'角色性别'},
{prop:'name',label:'角色年龄'},
{prop:'name',label:'注册时间'},
{prop:'name',label:'所在地'}
])
const input=ref()
const options = [
{
value: 'Option1',
label: 'Option1',
},
{
value: 'Option2',
label: 'Option2',
},
{
value: 'Option3',
label: 'Option3',
},
{
value: 'Option4',
label: 'Option4',
},
{
value: 'Option5',
label: 'Option5',
},
]
const taskSubmit=()=>{
dialogVisible.value=true
}
const tableData = [
{
date: '2016-05-03',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-02',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-04',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2016-05-01',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
]
const headerCellStyle=()=>{
return {
backgroundColor: "#1882DE !important", //
color: "#ffffff !important",
};
}
</script>
<style lang="scss" scoped>
.main-top {
margin: 20px 20px 0;
margin-top: 10px;
height: 85px;
background: #001d40;
border: 1px solid #0452c6;
padding: 5px 20px;
}
.main-but{
margin: 5px 20px 0;
display: flex;
.el-button:nth-child(1) {
width: 180px;
height: 56px;
background: url('../../../assets/images/011.png');
color:#FFFFFF;
border-color:#FFFFFF00;
}
.el-button:nth-child(2) {
width: 180px;
height: 56px;
background: url('../../../assets/images/022.png');
color:#FFFFFF;
border-color:#FFFFFF00;
}
}
.app-main {
// background-color: #f5f5f5;
margin: 5px 20px 0;
height: calc(117vh - 150px);
display: flex;
overflow: auto;
.main-left {
//
width: 205px;
height: 100%;
background: #041c49;
padding: 0px 10px;
.left-top {
padding: 10px;
span {
font-weight: bold;
font-size: 18px;
color: #3596eb;
}
}
.metrics-table{
.el-button {
width: 149px;
height: 48px;
background: url('../../../assets/images/确定.png');
color:#FFFFFF;
border-color:#FFFFFF00;
background-size: 100% 100%;
margin: 15px;
}
}
.startOver{
margin-top: 70px;
margin-left: -10px;
width: 205px;
height: 55px;
background: #00F4FF;
//
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
:deep(.el-table) {
--el-table-row-hover-bg-color:#002651 !important;
--el-table-border-color: #7AC1FF;
.el-table__row{
background-color: #002652 !important;
color: #E6E6E6;
}
}
}
.main-right {
width: 1639px;
height: 100%;
padding: 20px;
border: 1px solid #0452c6;
:deep(.el-table__header){
.el-table__cell{
background:linear-gradient(0deg, #5304BE 0%, #9126FE 100%) !important;
}
}
:deep(.el-table) {
--el-table-row-hover-bg-color:#002651 !important;
--el-table-border-color: #002651;
--el-table-bg-color:#FFFFFF00;
.el-table__row{
background-color: #002652 !important;
color: #E6E6E6;
}
}
}
.metrics{
:deep(.el-input){
.el-input__wrapper{
background-color:#FFFFFF00;
background-image:url('../../../assets/images/下拉框.png');
background-size: 100% 100%;
}
--el-input-text-color:#FFFFFF;
--el-input-border-color:#FFFFFF00;
--el-input-hover-border-color:#FFFFFF00;
--el-input-hover-border:#FFFFFF00;
--el-select-border-color-hover:#FFFFFF00;
--el-select-input-focus-border-color:#FFFFFF00;
--el-input-placeholder-color:#FFFFFF;
.el-input__inner{
color:#FFFFFF;
}
}
}
}
.analysisResults{
.el-button {
width: 89px;
height: 31px;
background: url('../../../assets/images/下载.png');
color:black;
border-color:#FFFFFF00;
// background-size: 100% 100%;
margin: 15px 0px 5px;
}
}
</style>
<style lang="scss">
.el-dialog{
background:url('../../../assets/images/弹框.png') !important;
.el-dialog__header{
padding: 5px 0px;
margin-right: -4px !important;
.gbImg{
cursor: pointer;
width: 51px;
height: 31px;
background-size: 100% 100%;
}
}
}
.my-header {
display: flex;
flex-direction: row;
justify-content: space-between;
gap: 16px;
text-align: center;
span{
color: #FFFFFF;
padding: 38px 20px 0;
}
.xtImg{
}
}
</style>

@ -0,0 +1,102 @@
<template>
<div class="rgzn_top">
<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)">AIGC</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>
<el-button :class="{'active':isActive===7}" @click="activeIndex(7)"></el-button>
</div>
<div>
<component :is="component"></component>
</div>
</div>
</template>
<script setup>
// import AIGC from './AIGCLargeModel/index.vue'
import big from './components/bigData.vue'
import descriptiveStatistics from './components/descriptiveStatistics.vue'
const component=ref(big)
const pageData=[big,descriptiveStatistics,null]
const isActive=ref(1)
const activeIndex=(index)=>{
isActive.value=index
component.value=pageData[index-1]
}
</script>
<style lang="scss" scoped>
.content{
color: #fff;
}
.rgzn_top{
.top_item{
img{
margin-right: 5px;
}
.el-button:nth-child(1) {
width: 170px;
height: 50px;
background: url('../../assets/images/11.png');
color:#FFFFFF;
border-color:#FFFFFF00;
}
.el-button:nth-child(2) {
width: 170px;
height: 50px;
background: url('../../assets/images/22.png');
color:#FFFFFF;
border-color:#FFFFFF00;
}
.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 5px 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{
// background: url('../../assets/images/.png');
// }
}
}
</style>

@ -349,7 +349,7 @@ import { onMounted } from "vue";
const mlistArray = Object.values(mlist.value); const mlistArray = Object.values(mlist.value);
const transformedData = { const transformedData = {
stuLearningAssessmentScoreDTO: { stuLearningAssessmentScoreDTO: {
userId: JSON.parse(getUserInfo()).userId,, userId: JSON.parse(getUserInfo()).userId,
learningProjects: "学习测评", learningProjects: "学习测评",
assessmentItems: "客观题测试", assessmentItems: "客观题测试",
stuLearningAssessmentDTOS: mlistArray.map((item) => { stuLearningAssessmentDTOS: mlistArray.map((item) => {

Loading…
Cancel
Save