完成学生作业成绩查询页面一半左右部分,优化删除了部分不需要的路由(自己之前写的)
由于部分页面设计调用了ElementUI库,在拉取代码后请记得重新下载新的依赖: 控制台输入pnpm i即可。
This commit is contained in:
parent
17213b11e7
commit
4903141e28
|
|
@ -24,6 +24,8 @@ export default {
|
|||
|
||||
|
||||
//作业题目部分
|
||||
getExamList: (config) =>request.get('/problem/getExamList',config)//学生获取作业列表
|
||||
getExamList: (config) => request.get('/problem/getExamList',config),//学生获取作业列表
|
||||
|
||||
getStudentRank:(config) => request.get('/problem/getStudentRank', config),//获取学生当前报告成绩排名
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@ import '@/styles/reset.css'
|
|||
import 'uno.css'
|
||||
import '@/styles/global.scss'
|
||||
import 'virtual:svg-icons-register'
|
||||
|
||||
import ElementPlus from 'element-plus'
|
||||
import 'element-plus/dist/index.css'
|
||||
import { createApp } from 'vue'
|
||||
import { setupRouter } from '@/router'
|
||||
import { setupStore } from '@/store'
|
||||
|
|
@ -21,6 +22,7 @@ async function setupApp() {
|
|||
|
||||
await setupRouter(app)
|
||||
app.use(dispatchEventStrage)
|
||||
app.use(ElementPlus)
|
||||
app.mount('#app')
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,54 +39,42 @@ const paginationReactive = reactive({
|
|||
})
|
||||
|
||||
const onStartExam = async (exam) => {//点击进入控件的逻辑
|
||||
const { status, id, type } = exam
|
||||
const { id } = exam
|
||||
|
||||
try {
|
||||
await api.addExamInfo({ id })
|
||||
if (type == 'iTraining') {
|
||||
router.push({ name: 'TrainingIndex', params: { examId: id } })
|
||||
} else {
|
||||
router.push({ name: 'ContestIndex', params: { examId: id } })
|
||||
}
|
||||
// await api.addExamInfo({ id })
|
||||
const examId = exam.id
|
||||
router.push({ name: 'ReportSubmit', params: { examId } })
|
||||
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
|
||||
const onViewScore = (exam) => {//点击成绩控件的逻辑
|
||||
var trainingViewScore = ''
|
||||
if (exam.type == 'iTraining') {
|
||||
trainingViewScore = 'iTraining'
|
||||
} else {
|
||||
trainingViewScore = exam.studentViewScore
|
||||
}
|
||||
// var trainingViewScore = ''
|
||||
// if (exam.type == 'iTraining') { //貌似是?测试模式
|
||||
// trainingViewScore = 'iTraining'
|
||||
// } else {
|
||||
// trainingViewScore = exam.studentViewScore
|
||||
// }
|
||||
|
||||
const examId = exam.id
|
||||
const problemNum = exam.problemNum
|
||||
switch (trainingViewScore) {
|
||||
case 'System':
|
||||
if (parseInt(problemNum) <= 10) {
|
||||
router.push({ name: 'ContestScoreRankStatus', params: { examId }, query: { fromclient: false } })
|
||||
} else {
|
||||
router.push({ name: 'ContestScoreTop10', params: { examId }, query: { fromclient: false } })
|
||||
}
|
||||
break
|
||||
case 'RankAndStatus':
|
||||
router.push({ name: 'ContestScoreRankStatus', params: { examId }, query: { fromclient: false } })
|
||||
break
|
||||
case 'OnlyRank':
|
||||
router.push({ name: 'ContestScoreOnlyRank', params: { examId }, query: { fromclient: false } })
|
||||
break
|
||||
case 'Top10':
|
||||
router.push({ name: 'ContestScoreTop10', params: { examId }, query: { fromclient: false } })
|
||||
break
|
||||
case 'iTraining':
|
||||
router.push({ name: 'TrainingScoreTrainRank', params: { examId }, query: { fromclient: false } })
|
||||
break
|
||||
case 'NoScorePage':
|
||||
$message.warning("当前作业不能查看成绩");
|
||||
break
|
||||
default:
|
||||
}
|
||||
|
||||
router.push({ name: 'UserScoreAndRank', params: { examId }, query: { fromclient: false } });
|
||||
|
||||
// switch (trainingViewScore) {
|
||||
// case 'NewScorePage': // 直接转向成绩排名页面
|
||||
// router.push({ name: 'UserScoreAndRank', params: { examId }, query: { fromclient: false } });
|
||||
// break
|
||||
// case 'iTraining':
|
||||
// router.push({ name: 'TrainingScoreTrainRank', params: { examId }, query: { fromclient: false } })
|
||||
// break
|
||||
// case 'NoScorePage':
|
||||
// $message.warning("当前作业不能查看成绩");
|
||||
// break
|
||||
// default:
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -153,7 +141,6 @@ const columns = [
|
|||
|
||||
]
|
||||
|
||||
|
||||
const queryByPage = async (currentPage) => {//进入页面加载逻辑
|
||||
loading.value = true
|
||||
//先清理所有定时器
|
||||
|
|
|
|||
|
|
@ -0,0 +1,92 @@
|
|||
<template>
|
||||
<p>Basic link button</p>
|
||||
<div class="mb-4">
|
||||
<el-button
|
||||
v-for="button in buttons"
|
||||
:key="button.text"
|
||||
:type="button.type"
|
||||
link
|
||||
>
|
||||
{{ button.text }}
|
||||
</el-button>
|
||||
</div>
|
||||
|
||||
<p>Disabled link button</p>
|
||||
<div>
|
||||
<el-button
|
||||
v-for="button in buttons"
|
||||
:key="button.text"
|
||||
:type="button.type"
|
||||
link
|
||||
disabled
|
||||
>
|
||||
{{ button.text }}
|
||||
</el-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import api from '@/api/user';
|
||||
import {useRoute} from 'vue-router';
|
||||
const route = useRoute()
|
||||
const { examId } = route.params
|
||||
const loading = ref(true);
|
||||
const examScores = ref([]);
|
||||
const examName = ref("");
|
||||
const notifyMsg = ref("");
|
||||
|
||||
const paginationReactive = reactive({
|
||||
page: 1,
|
||||
pageSize: 50,
|
||||
showSizePicker: true,
|
||||
pageSizes: [50, 100, 150],
|
||||
itemCount: 0,
|
||||
prefix: () => {
|
||||
return '查询出 ' + total + '条记录';
|
||||
},
|
||||
onChange: (page) => {
|
||||
paginationReactive.page = page;
|
||||
queryExamScores()
|
||||
},
|
||||
onUpdatePageSize: (pageSize) => {
|
||||
paginationReactive.pageSize = pageSize;
|
||||
paginationReactive.page = 1;
|
||||
queryExamScores()
|
||||
}
|
||||
});
|
||||
// 列配置
|
||||
const columns = [
|
||||
// ... 列配置
|
||||
];
|
||||
|
||||
// 查询成绩的函数
|
||||
const queryExamScores = async () => {
|
||||
// ... 查询逻辑
|
||||
};
|
||||
|
||||
// 行键函数
|
||||
const rowKey = (rowData) => {
|
||||
return rowData.id;
|
||||
};
|
||||
|
||||
// 生命周期钩子
|
||||
onMounted(() => {
|
||||
console.log('Received examId:', examId); // 输出接收到的 examId
|
||||
// ... 挂载逻辑
|
||||
});
|
||||
|
||||
|
||||
const buttons = [
|
||||
{ type: '', text: 'plain' },
|
||||
{ type: 'primary', text: 'primary' },
|
||||
{ type: 'success', text: 'success' },
|
||||
{ type: 'info', text: 'info' },
|
||||
{ type: 'warning', text: 'warning' },
|
||||
{ type: 'danger', text: 'danger' },
|
||||
]
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* 样式可以根据需要添加 */
|
||||
</style>
|
||||
|
|
@ -112,5 +112,31 @@ export default {
|
|||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'ReportSubmit',
|
||||
path: 'report-submit',
|
||||
component: () => import('./report-submit/index.vue'),
|
||||
meta: {
|
||||
title: '作业详情',
|
||||
icon: 'ic:baseline-table-view',
|
||||
role: ['student', 'teacher', 'admin'],
|
||||
requireAuth: true,
|
||||
keepAlive: true,
|
||||
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'UserScoreAndRank',
|
||||
path: 'score-rank/:examId',
|
||||
component: () => import('./score-rank/index.vue'),
|
||||
meta: {
|
||||
title: '作业成绩',
|
||||
icon: 'ic:baseline-table-view',
|
||||
role: ['student', 'teacher', 'admin'],
|
||||
requireAuth: true,
|
||||
keepAlive: true,
|
||||
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,11 @@
|
|||
<template>
|
||||
<p>此处布置班级排名表格</p>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
<template xmlns:dark="http://www.w3.org/1999/xhtml">
|
||||
<div class="page-content">
|
||||
<h2 class="title">
|
||||
{{ title }}成绩列表
|
||||
</h2>
|
||||
<div class="score-info">
|
||||
<p class="personal-score">个人成绩:</p>
|
||||
<p>成绩:{{ score }}</p>
|
||||
<p>排名:{{ rank }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import api from '@/api/user';
|
||||
import {useRoute} from 'vue-router';
|
||||
const route = useRoute()
|
||||
const examId = route.params.examId;
|
||||
const title = ref(""); // 从API获取的作业名称
|
||||
const score = ref(0); // 个人得分
|
||||
const rank = ref(0); // 个人排名
|
||||
|
||||
const paginationReactive = reactive({
|
||||
page: 1,
|
||||
pageSize: 50,
|
||||
showSizePicker: true,
|
||||
pageSizes: [50, 100, 150],
|
||||
itemCount: 0,
|
||||
prefix: () => {
|
||||
return '查询出 ' + total + '条记录';
|
||||
},
|
||||
onChange: (page) => {
|
||||
paginationReactive.page = page;
|
||||
queryExamScores()
|
||||
},
|
||||
onUpdatePageSize: (pageSize) => {
|
||||
paginationReactive.pageSize = pageSize;
|
||||
paginationReactive.page = 1;
|
||||
queryExamScores()
|
||||
}
|
||||
});
|
||||
// 列配置
|
||||
const columns = [
|
||||
// ... 列配置
|
||||
];
|
||||
|
||||
// 查询个人成绩的函数
|
||||
const queryExamScores = async () => {
|
||||
const res = await api.getStudentRank({
|
||||
params: { examId }
|
||||
});
|
||||
title.value = res.data.title; // 更新作业名称
|
||||
score.value = res.data.score; // 更新个人得分
|
||||
rank.value = res.data.rank; // 更新个人排名
|
||||
|
||||
|
||||
};
|
||||
|
||||
// 行键函数
|
||||
const rowKey = (rowData) => {
|
||||
return rowData.id;
|
||||
};
|
||||
|
||||
// 生命周期钩子
|
||||
onMounted(() => {
|
||||
queryExamScores(); // 挂载时查询成绩
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.page-content {
|
||||
width: 40%;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.title {
|
||||
padding-left: 0px;
|
||||
font-size: 22px;
|
||||
font-weight: normal;
|
||||
color: #333;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.score-info {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.score-info p {
|
||||
margin: 10px 0;
|
||||
}
|
||||
.score-info .personal-score {
|
||||
font-size: 18px; /* 更大的字体大小 */
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<template>
|
||||
<CommonPage show-footer :show-header="false">
|
||||
<div class="layout-container">
|
||||
<UserPersonalRank class="personal-rank" />
|
||||
<ClassScore class="class-score" />
|
||||
</div>
|
||||
</CommonPage>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import UserPersonalRank from '@/views/user/score-rank/components/personal-rank.vue'
|
||||
import ClassScore from '@/views/user/score-rank/components/class-score.vue'
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.layout-container {
|
||||
display: flex; /* 使用 Flexbox 布局 */
|
||||
height: 100%; /* 设置容器高度为 100% */
|
||||
}
|
||||
|
||||
.personal-rank {
|
||||
flex: 0 0 40%; /* UserPersonalRank 占据 40% 的空间 */
|
||||
/* 其他样式,例如 padding, margin 等 */
|
||||
}
|
||||
|
||||
.class-score {
|
||||
flex: 0 0 60%; /* ClassScore 占据 60% 的空间 */
|
||||
/* 其他样式,例如 padding, margin 等 */
|
||||
}
|
||||
</style>
|
||||
|
|
@ -22,7 +22,6 @@ public class HttpInterceptorConfig extends WebMvcConfigurationSupport {
|
|||
.excludePathPatterns("/api/login/student","/api/login/admin","/api/login","/api/user/signUser",
|
||||
"/api/user" +
|
||||
"/findStudentByusername","/api/user/findStudentByStudentNo","/api/adminusers/findAdminuserByno","/api/adminusers/findAdminuserByAccountInRePwInfo",
|
||||
"/api/problem/getExamList",
|
||||
"/api/adminusers" +
|
||||
"/signTeacher",
|
||||
"/api/adminusers" +
|
||||
|
|
|
|||
|
|
@ -207,5 +207,18 @@ public class ProblemController {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
//根据作业id和学生id获取学生当前报告成绩排名
|
||||
@GetMapping("/getStudentRank")
|
||||
public RespBean getStudentRank(Integer examId,HttpServletRequest request){
|
||||
DecodeToken decodeToken = new DecodeToken(request);
|
||||
String UserId = decodeToken.getUserId();
|
||||
int userId=Integer.parseInt(UserId);
|
||||
UReportSubmitted ureportsubmitted=
|
||||
problemServiceI.findScoreAndRankByIds(examId,userId);
|
||||
if (ureportsubmitted != null) {
|
||||
return RespBean.ok("查询成绩排名成功!",ureportsubmitted);
|
||||
} else {
|
||||
return RespBean.error("查询成绩排名失败!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
package com.example.aes.problem.dao;
|
||||
|
||||
|
||||
import com.example.aes.problem.model.PMProblem;
|
||||
import com.example.aes.problem.model.PMScoringRubric;
|
||||
import com.example.aes.problem.model.Problem;
|
||||
import com.example.aes.problem.model.ReportSubmitted;
|
||||
import com.example.aes.problem.model.*;
|
||||
import com.example.aes.user.dao.BaseDaoI;
|
||||
import com.example.aes.user.model.Classstudents;
|
||||
import com.example.aes.user.model.Course;
|
||||
|
|
@ -22,6 +19,9 @@ public interface ProblemDaoI extends BaseDaoI<Problem> {
|
|||
|
||||
List<ReportSubmitted> findPMProblemStatusesByStudentIdAndProblemsIds(List<Integer> problemIds, Integer studentId);
|
||||
|
||||
UReportSubmitted getScoreAndRankByIds(int problemId, int userId);
|
||||
|
||||
|
||||
public String findProblemByTitle(String title);
|
||||
public String findProblemByTitle(String title,Integer id);
|
||||
public List<Problem> findProblemIdByTitle(String title);
|
||||
|
|
@ -33,4 +33,5 @@ public interface ProblemDaoI extends BaseDaoI<Problem> {
|
|||
public boolean editProblem(String title,
|
||||
String description,Integer id);
|
||||
public void deleteProblem(Integer id);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,7 @@ package com.example.aes.problem.dao.impl;
|
|||
|
||||
import cn.hutool.poi.excel.cell.CellSetter;
|
||||
import com.example.aes.problem.dao.ProblemDaoI;
|
||||
import com.example.aes.problem.model.PMProblem;
|
||||
import com.example.aes.problem.model.PMScoringRubric;
|
||||
import com.example.aes.problem.model.Problem;
|
||||
import com.example.aes.problem.model.ReportSubmitted;
|
||||
import com.example.aes.problem.model.*;
|
||||
import com.example.aes.problem.model.ReportSubmitted;
|
||||
import com.example.aes.user.dao.BaseDaoI;
|
||||
import com.example.aes.user.dao.impl.BaseDaoImpl;
|
||||
|
|
@ -101,6 +98,24 @@ public class ProblemDaoImpl extends BaseDaoImpl<Problem> implements ProblemDaoI{
|
|||
|
||||
}
|
||||
|
||||
@Override //根据作业id和学生id获取学生当前报告成绩排名
|
||||
public UReportSubmitted getScoreAndRankByIds(int problemId, int userId) {
|
||||
|
||||
String sql = "SELECT sr.*, p.title " +
|
||||
"FROM submitreport sr " +
|
||||
"JOIN problem p ON sr.problemId = p.id " +
|
||||
"WHERE sr.studentId = ? AND sr.problemId = ?";
|
||||
|
||||
List<UReportSubmitted> queryResults = jdbcTemplate.query(
|
||||
sql,
|
||||
new Object[]{userId, problemId},
|
||||
new BeanPropertyRowMapper<>(UReportSubmitted.class)
|
||||
);
|
||||
|
||||
// 查询假定只有唯一一条数据,返回第一条记录
|
||||
return queryResults.isEmpty() ? null : queryResults.get(0);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String findProblemByTitle(String title){
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
package com.example.aes.problem.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
//继承ReportSubmitted子类,用于学生成绩查询页面
|
||||
public class UReportSubmitted extends ReportSubmitted implements java.io.Serializable{
|
||||
String title;//作业标题
|
||||
int StudentId;//学生id
|
||||
String StudentNo;//学号
|
||||
|
||||
int rank;//排名
|
||||
}
|
||||
|
|
@ -168,6 +168,11 @@ public class ProblemServiceImpl implements ProblemServiceI {
|
|||
}
|
||||
}
|
||||
}
|
||||
@Override //根据作业id和学生id获取学生当前报告成绩排名
|
||||
public UReportSubmitted findScoreAndRankByIds(int problemId, int userId) {
|
||||
UReportSubmitted uReportSubmitted = problemDao.getScoreAndRankByIds(problemId, userId);
|
||||
return uReportSubmitted;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ScoringStandard> findStandardIdNoProblemId(){
|
||||
|
|
|
|||
|
|
@ -37,4 +37,6 @@ public interface ProblemServiceI {
|
|||
DataGrid dataGrid(List<PMProblem> pMproblems, PMProblem pMproblem);
|
||||
|
||||
public void findStatusByStudentIdAndProblems(Integer studentId, List<PMProblem> pMproblems);
|
||||
|
||||
UReportSubmitted findScoreAndRankByIds(int ProblemId, int userId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"name": "AUTO_SCORE",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"element-plus": "^2.9.7"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,376 @@
|
|||
lockfileVersion: '9.0'
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
element-plus:
|
||||
specifier: ^2.9.7
|
||||
version: 2.9.7(vue@3.5.13)
|
||||
|
||||
packages:
|
||||
|
||||
'@babel/helper-string-parser@7.25.9':
|
||||
resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@babel/helper-validator-identifier@7.25.9':
|
||||
resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@babel/parser@7.26.10':
|
||||
resolution: {integrity: sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
hasBin: true
|
||||
|
||||
'@babel/types@7.26.10':
|
||||
resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
'@ctrl/tinycolor@3.6.1':
|
||||
resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
'@element-plus/icons-vue@2.3.1':
|
||||
resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==}
|
||||
peerDependencies:
|
||||
vue: ^3.2.0
|
||||
|
||||
'@floating-ui/core@1.6.9':
|
||||
resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
|
||||
|
||||
'@floating-ui/dom@1.6.13':
|
||||
resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
|
||||
|
||||
'@floating-ui/utils@0.2.9':
|
||||
resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.0':
|
||||
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
|
||||
|
||||
'@sxzz/popperjs-es@2.11.7':
|
||||
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
|
||||
|
||||
'@types/lodash-es@4.17.12':
|
||||
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
|
||||
|
||||
'@types/lodash@4.17.16':
|
||||
resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==}
|
||||
|
||||
'@types/web-bluetooth@0.0.16':
|
||||
resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
|
||||
|
||||
'@vue/compiler-core@3.5.13':
|
||||
resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
|
||||
|
||||
'@vue/compiler-dom@3.5.13':
|
||||
resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
|
||||
|
||||
'@vue/compiler-sfc@3.5.13':
|
||||
resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
|
||||
|
||||
'@vue/compiler-ssr@3.5.13':
|
||||
resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
|
||||
|
||||
'@vue/reactivity@3.5.13':
|
||||
resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
|
||||
|
||||
'@vue/runtime-core@3.5.13':
|
||||
resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==}
|
||||
|
||||
'@vue/runtime-dom@3.5.13':
|
||||
resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==}
|
||||
|
||||
'@vue/server-renderer@3.5.13':
|
||||
resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==}
|
||||
peerDependencies:
|
||||
vue: 3.5.13
|
||||
|
||||
'@vue/shared@3.5.13':
|
||||
resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
|
||||
|
||||
'@vueuse/core@9.13.0':
|
||||
resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
|
||||
|
||||
'@vueuse/metadata@9.13.0':
|
||||
resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
|
||||
|
||||
'@vueuse/shared@9.13.0':
|
||||
resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
|
||||
|
||||
async-validator@4.2.5:
|
||||
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
|
||||
|
||||
csstype@3.1.3:
|
||||
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
|
||||
|
||||
dayjs@1.11.13:
|
||||
resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
|
||||
|
||||
element-plus@2.9.7:
|
||||
resolution: {integrity: sha512-6vjZh5SXBncLhUwJGTVKS5oDljfgGMh6J4zVTeAZK3YdMUN76FgpvHkwwFXocpJpMbii6rDYU3sgie64FyPerQ==}
|
||||
peerDependencies:
|
||||
vue: ^3.2.0
|
||||
|
||||
entities@4.5.0:
|
||||
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
|
||||
engines: {node: '>=0.12'}
|
||||
|
||||
escape-html@1.0.3:
|
||||
resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
|
||||
|
||||
estree-walker@2.0.2:
|
||||
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
|
||||
|
||||
lodash-es@4.17.21:
|
||||
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
|
||||
|
||||
lodash-unified@1.0.3:
|
||||
resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
|
||||
peerDependencies:
|
||||
'@types/lodash-es': '*'
|
||||
lodash: '*'
|
||||
lodash-es: '*'
|
||||
|
||||
lodash@4.17.21:
|
||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||
|
||||
magic-string@0.30.17:
|
||||
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
|
||||
|
||||
memoize-one@6.0.0:
|
||||
resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
|
||||
|
||||
nanoid@3.3.11:
|
||||
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
|
||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||
hasBin: true
|
||||
|
||||
normalize-wheel-es@1.2.0:
|
||||
resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
|
||||
|
||||
picocolors@1.1.1:
|
||||
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
||||
|
||||
postcss@8.5.3:
|
||||
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
|
||||
engines: {node: ^10 || ^12 || >=14}
|
||||
|
||||
source-map-js@1.2.1:
|
||||
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
vue-demi@0.14.10:
|
||||
resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@vue/composition-api': ^1.0.0-rc.1
|
||||
vue: ^3.0.0-0 || ^2.6.0
|
||||
peerDependenciesMeta:
|
||||
'@vue/composition-api':
|
||||
optional: true
|
||||
|
||||
vue@3.5.13:
|
||||
resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
|
||||
snapshots:
|
||||
|
||||
'@babel/helper-string-parser@7.25.9': {}
|
||||
|
||||
'@babel/helper-validator-identifier@7.25.9': {}
|
||||
|
||||
'@babel/parser@7.26.10':
|
||||
dependencies:
|
||||
'@babel/types': 7.26.10
|
||||
|
||||
'@babel/types@7.26.10':
|
||||
dependencies:
|
||||
'@babel/helper-string-parser': 7.25.9
|
||||
'@babel/helper-validator-identifier': 7.25.9
|
||||
|
||||
'@ctrl/tinycolor@3.6.1': {}
|
||||
|
||||
'@element-plus/icons-vue@2.3.1(vue@3.5.13)':
|
||||
dependencies:
|
||||
vue: 3.5.13
|
||||
|
||||
'@floating-ui/core@1.6.9':
|
||||
dependencies:
|
||||
'@floating-ui/utils': 0.2.9
|
||||
|
||||
'@floating-ui/dom@1.6.13':
|
||||
dependencies:
|
||||
'@floating-ui/core': 1.6.9
|
||||
'@floating-ui/utils': 0.2.9
|
||||
|
||||
'@floating-ui/utils@0.2.9': {}
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.0': {}
|
||||
|
||||
'@sxzz/popperjs-es@2.11.7': {}
|
||||
|
||||
'@types/lodash-es@4.17.12':
|
||||
dependencies:
|
||||
'@types/lodash': 4.17.16
|
||||
|
||||
'@types/lodash@4.17.16': {}
|
||||
|
||||
'@types/web-bluetooth@0.0.16': {}
|
||||
|
||||
'@vue/compiler-core@3.5.13':
|
||||
dependencies:
|
||||
'@babel/parser': 7.26.10
|
||||
'@vue/shared': 3.5.13
|
||||
entities: 4.5.0
|
||||
estree-walker: 2.0.2
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@vue/compiler-dom@3.5.13':
|
||||
dependencies:
|
||||
'@vue/compiler-core': 3.5.13
|
||||
'@vue/shared': 3.5.13
|
||||
|
||||
'@vue/compiler-sfc@3.5.13':
|
||||
dependencies:
|
||||
'@babel/parser': 7.26.10
|
||||
'@vue/compiler-core': 3.5.13
|
||||
'@vue/compiler-dom': 3.5.13
|
||||
'@vue/compiler-ssr': 3.5.13
|
||||
'@vue/shared': 3.5.13
|
||||
estree-walker: 2.0.2
|
||||
magic-string: 0.30.17
|
||||
postcss: 8.5.3
|
||||
source-map-js: 1.2.1
|
||||
|
||||
'@vue/compiler-ssr@3.5.13':
|
||||
dependencies:
|
||||
'@vue/compiler-dom': 3.5.13
|
||||
'@vue/shared': 3.5.13
|
||||
|
||||
'@vue/reactivity@3.5.13':
|
||||
dependencies:
|
||||
'@vue/shared': 3.5.13
|
||||
|
||||
'@vue/runtime-core@3.5.13':
|
||||
dependencies:
|
||||
'@vue/reactivity': 3.5.13
|
||||
'@vue/shared': 3.5.13
|
||||
|
||||
'@vue/runtime-dom@3.5.13':
|
||||
dependencies:
|
||||
'@vue/reactivity': 3.5.13
|
||||
'@vue/runtime-core': 3.5.13
|
||||
'@vue/shared': 3.5.13
|
||||
csstype: 3.1.3
|
||||
|
||||
'@vue/server-renderer@3.5.13(vue@3.5.13)':
|
||||
dependencies:
|
||||
'@vue/compiler-ssr': 3.5.13
|
||||
'@vue/shared': 3.5.13
|
||||
vue: 3.5.13
|
||||
|
||||
'@vue/shared@3.5.13': {}
|
||||
|
||||
'@vueuse/core@9.13.0(vue@3.5.13)':
|
||||
dependencies:
|
||||
'@types/web-bluetooth': 0.0.16
|
||||
'@vueuse/metadata': 9.13.0
|
||||
'@vueuse/shared': 9.13.0(vue@3.5.13)
|
||||
vue-demi: 0.14.10(vue@3.5.13)
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
- vue
|
||||
|
||||
'@vueuse/metadata@9.13.0': {}
|
||||
|
||||
'@vueuse/shared@9.13.0(vue@3.5.13)':
|
||||
dependencies:
|
||||
vue-demi: 0.14.10(vue@3.5.13)
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
- vue
|
||||
|
||||
async-validator@4.2.5: {}
|
||||
|
||||
csstype@3.1.3: {}
|
||||
|
||||
dayjs@1.11.13: {}
|
||||
|
||||
element-plus@2.9.7(vue@3.5.13):
|
||||
dependencies:
|
||||
'@ctrl/tinycolor': 3.6.1
|
||||
'@element-plus/icons-vue': 2.3.1(vue@3.5.13)
|
||||
'@floating-ui/dom': 1.6.13
|
||||
'@popperjs/core': '@sxzz/popperjs-es@2.11.7'
|
||||
'@types/lodash': 4.17.16
|
||||
'@types/lodash-es': 4.17.12
|
||||
'@vueuse/core': 9.13.0(vue@3.5.13)
|
||||
async-validator: 4.2.5
|
||||
dayjs: 1.11.13
|
||||
escape-html: 1.0.3
|
||||
lodash: 4.17.21
|
||||
lodash-es: 4.17.21
|
||||
lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21)
|
||||
memoize-one: 6.0.0
|
||||
normalize-wheel-es: 1.2.0
|
||||
vue: 3.5.13
|
||||
transitivePeerDependencies:
|
||||
- '@vue/composition-api'
|
||||
|
||||
entities@4.5.0: {}
|
||||
|
||||
escape-html@1.0.3: {}
|
||||
|
||||
estree-walker@2.0.2: {}
|
||||
|
||||
lodash-es@4.17.21: {}
|
||||
|
||||
lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21):
|
||||
dependencies:
|
||||
'@types/lodash-es': 4.17.12
|
||||
lodash: 4.17.21
|
||||
lodash-es: 4.17.21
|
||||
|
||||
lodash@4.17.21: {}
|
||||
|
||||
magic-string@0.30.17:
|
||||
dependencies:
|
||||
'@jridgewell/sourcemap-codec': 1.5.0
|
||||
|
||||
memoize-one@6.0.0: {}
|
||||
|
||||
nanoid@3.3.11: {}
|
||||
|
||||
normalize-wheel-es@1.2.0: {}
|
||||
|
||||
picocolors@1.1.1: {}
|
||||
|
||||
postcss@8.5.3:
|
||||
dependencies:
|
||||
nanoid: 3.3.11
|
||||
picocolors: 1.1.1
|
||||
source-map-js: 1.2.1
|
||||
|
||||
source-map-js@1.2.1: {}
|
||||
|
||||
vue-demi@0.14.10(vue@3.5.13):
|
||||
dependencies:
|
||||
vue: 3.5.13
|
||||
|
||||
vue@3.5.13:
|
||||
dependencies:
|
||||
'@vue/compiler-dom': 3.5.13
|
||||
'@vue/compiler-sfc': 3.5.13
|
||||
'@vue/runtime-dom': 3.5.13
|
||||
'@vue/server-renderer': 3.5.13(vue@3.5.13)
|
||||
'@vue/shared': 3.5.13
|
||||
Loading…
Reference in New Issue