Compare commits

..

No commits in common. "eab46ec7f48cb04ca6e0c9b8fd462c5d39dfd597" and "db20978575546d5aa259f5d17fd5f86a81eb365e" have entirely different histories.

12 changed files with 23 additions and 91 deletions

View File

@ -26,13 +26,3 @@ export class imChat {
// 获取腾讯im-chat appid 签名
static getTxCloudSign = data => ApiService.publicHttp('/system/user/txCloudSign', data)
}
// zdg: url跳转-后端存储
export class toLink {
// 设置链接-返回key(默认15分钟有效时间)
static setLink = url => ApiService.publicHttp(`/smarttalk/toLink`, {url}, 'post', null, 'form')
// 获取链接
static getLink = key => ApiService.publicHttp(`/smarttalk/toLink/${key}`)
// 删除链接-缓存
static delLink = key => ApiService.publicHttp(`/smarttalk/toLink/${key}`, null, 'delete')
}

View File

@ -27,15 +27,6 @@ export function listClassworkdata(query) {
})
}
// 新接口---查询classworkdata列表 班级作业列表
export function listClassworkdataNew(query) {
return request({
url: '/education/classworkdata/new/list',
method: 'get',
params: query
})
}
// 查询entpcoursework列表 课程作业列表
export function listEntpcoursework(query) {
return request({

View File

@ -122,8 +122,7 @@ const outerAi = [
title: '教学大模型',
secondTit: '中小学基础教学大模型',
img: new URL('../../../src/assets/images/ai-02.png', import.meta.url).href,
path: '/ais/aimoss'
disabled: true,
},
{
id: 3,

View File

@ -57,7 +57,7 @@ function stateSyncWatch(storeName, newState) {
const diffData = findDifferences(oldState, newState)
if(!_.keys(diffData).length) return // 没有变化就终止执行
// 数据处理: 找出差异
// console.log('state-change-diffData', diffData)
console.log('state-change-diffData', diffData)
try {
let pinaValue = {} // store pina状态管理需要的数据格式
// 数据转换处理
@ -116,7 +116,7 @@ function stateSyncInit(wid, store) {
function sessionWatch(store) {
const unsubscribe = sessionStore.onDidAnyChange((newV, oldV) => {
if (newV !== oldV) {
// console.log('session-change', newV, oldV)
console.log('session-change', newV, oldV)
// 通知主线程更新
// ipcRenderer?.invoke('pinia-state-change', storeName, jsonStr)
}
@ -129,7 +129,7 @@ function stateChange(store) {
const storeName = store.$id
ipcRenderer?.on('pinia-state-set', (e, sName, jsonStr) => {
if (sName == storeName) { // 更新对应数据
// console.log('state-set', jsonStr, sName)
console.log('state-set', jsonStr, sName)
const curJson = circularSafeStringify(store.$state) // 当前数据
const isUp = curJson != jsonStr // 不同的时候才写入,不然会导致触发数据变化监听,导致死循环
if (!isUp) return

View File

@ -266,9 +266,6 @@ const btnSave = () => {
}
//
const addGroup = () => {
//
groupForm.groupname = ''
groupForm.orderidx = 0
groupVisible.value = true
}
const btnGroupSave = () => {

View File

@ -4,7 +4,7 @@
<el-descriptions-item label="班级名称">{{ classInfo.caption }}</el-descriptions-item>
<el-descriptions-item label="教师">
<template v-if="classInfo.teacher.length > 0">
<el-tag style="margin-right: 5px;margin-bottom: 5px;" type="primary" v-for="(item, index) in classInfo.teacher" :key="index">{{item.name}}</el-tag>
<el-tag type="primary" v-for="(item, index) in classInfo.teacher" :key="index">{{item.name}}</el-tag>
</template>
<template v-else>{{ classInfo.teachername }}</template>
</el-descriptions-item>

View File

@ -63,7 +63,7 @@
<script setup>
import { ref, onMounted, onUnmounted, computed, watch } from 'vue'
import { listByDeadDate, listClassworkdata, listClassworkdataNew } from '@/api/classTask'
import { listByDeadDate, listClassworkdata } from '@/api/classTask'
import TaskItem from '@/views/classTask/container/task-item.vue'
// import ItemDialog from '@/views/classTask/container/item-dialog.vue'
@ -119,7 +119,7 @@ const getData = async () => {
classWorkList.value = []
loading.value = true
// 1
//getClassList()
getClassList()
// 2
await getClassWorkList()
// 3
@ -140,11 +140,10 @@ const getClassList = () => {
* 2获取班级作业
*/
const getClassWorkList = async () => {
//if(classTaskStore.classListIds.length>0){
{
if(classTaskStore.classListIds.length>0){
// homeworklist
const response = await listByDeadDate({
//classidarray: classTaskStore.classListIds.join(','),
classidarray: classTaskStore.classListIds.join(','),
edituserid: userStore.userId, // id
edustage: userStore.edustage, //
edusubject: userStore.edusubject,//
@ -219,7 +218,7 @@ const getClassWorkList = async () => {
const getStudentClassWorkData = async() => {
// const { chapterId } = await useGetHomework(props.bookobj.node)
// this.entpcourseid = chapterId
//if(classTaskStore.classListIds.length>0){
if(classTaskStore.classListIds.length>0){
// listClassworkdataByDeadDate({
// edituserid: userStore.userId, // id
// classids: classTaskStore.classListIds.join(','),
@ -229,21 +228,7 @@ const getStudentClassWorkData = async() => {
// orderby: "deaddate DESC",// TODO deaddate
// pageSize: 1000,
// })
// listClassworkdataNew({
// classworkids: ids, // id
// edituserid: userStore.userId, // id
// edusubject: userStore.edusubject,//
// evalStatus: 1,
// pageSize: 1000,
// })
{
const ids = classWorkList.value.map((item) => item.id).join(',');
if (ids == '') {
return;
}
listClassworkdata({
classworkids: ids,
pageSize: 1000,

View File

@ -349,7 +349,7 @@ const getClassWorkStudentList = (rowId) => {
// .replace(/"(\[.*\])"/g, '$1'); eg: "feedcontent\":\"[{\"name\":\"Bliss.jpg\",\"url\":\"https://wzyzoss.3b8daa474.jpg\"}]\",
// json .replace(/""/g, '"') eg: """"
response.rows[i].classworkevallist = escapeHtmlQuotes(response.rows[i].classworkevallist)
//console.log('classworkevallist', response.rows[i].classworkevallist)
console.log('学生完成情况分析classworkevallist', response.rows[i].classworkevallist)
const evalarray = JSON.parse('[' + response.rows[i].classworkevallist + ']')
var scoingCount = 0
var feedcount = 0
@ -362,7 +362,7 @@ const getClassWorkStudentList = (rowId) => {
}
}
}
//console.log(evalarray, 'evalarray------------------------------------')
console.log(evalarray, 'evalarray------------------------------------')
if (feedcount > 0) {
// : /*100
response.rows[i].scoingRate = ((scoingCount / feedcount) * 100).toFixed(0) + '%'

View File

@ -345,7 +345,6 @@ watchEffect(() => { initData() })
}
.t-left{width: 160px;text-align: left;}
.c-respond{
text-align: left;
.el-tag{margin: 0 5px;}
}
}

View File

@ -341,7 +341,7 @@ const getClassWorkStudentList = (rowId) => {
// .replace(/"(\[.*\])"/g, '$1'); eg: "feedcontent\":\"[{\"name\":\"Bliss.jpg\",\"url\":\"https://wzyzoss.3b8daa474.jpg\"}]\",
// json .replace(/""/g, '"') eg: """"
response.rows[i].classworkevallist = escapeHtmlQuotes(response.rows[i].classworkevallist)
//console.log('classworkevallist', response.rows[i].classworkevallist)
console.log('学生完成情况分析classworkevallist', response.rows[i].classworkevallist)
const evalarray = JSON.parse('[' + response.rows[i].classworkevallist + ']')
var scoingCount = 0
var feedcount = 0
@ -354,7 +354,7 @@ const getClassWorkStudentList = (rowId) => {
}
}
}
//console.log(evalarray, 'evalarray------------------------------------')
console.log(evalarray, 'evalarray------------------------------------')
if (feedcount > 0) {
// : /*100
response.rows[i].scoingRate = ((scoingCount / feedcount) * 100).toFixed(0) + '%'
@ -531,7 +531,6 @@ const workHandle = (type) => {
classWorkAnalysis.view = type
const isClose = type != 'quizStats' && !! classWorkActiveData.timerId
const isOpen = type == 'quizStats' && !classWorkActiveData.timerId
//
if(type == 'quizStats') {
getWorkFeedList();
}

View File

@ -85,14 +85,12 @@ import vueQr from 'vue-qr/src/packages/vue-qr.vue' // 插件: 二维码
import imChat from '@/views/tool/components/imChat.vue' // im-chat-
import MsgEnum from '@/plugins/imChat/msgEnum' // -(nuem)
import * as commUtil from '@/utils/comm' // -
import { toLinkWeb, getStaticUrl } from '@/utils/tool' // -
import { toLinkWeb, getStaticUrl } from '@/utils/tool'
import * as Http_ClassManage from '@/api/classManage' // api
import * as Http_Classcourse from '@/api/teaching/classcourse' // api
import * as Http_Entpcoursefile from '@/api/education/entpcoursefile' // api
import * as Http_api from '@/api/apiService' // api
import * as Http_Entpcoursefile from '@/api/education/entpcoursefile' // api
import useUserStore from "@/store/modules/user" // user
import CryptoJS from 'crypto-js'
const baseUrl = import.meta.env.VITE_APP_BUILD_BASE_PATH
const userStore = useUserStore()
@ -191,9 +189,9 @@ const getClassList = async () => {
})
if (res.code == 200) {
listData.classList = (res.rows || []).map(o => {
// if(!!o.classstudentlist) { //
// o.classstudentlist = JSON.parse('[' + o.classstudentlist + ']')
// }
if(!!o.classstudentlist) { //
o.classstudentlist = JSON.parse('[' + o.classstudentlist + ']')
}
return o
});
//
@ -279,34 +277,11 @@ const classTeachingStart = async () => {
}
}
//
const getQrUrl = async() => {
const getQrUrl = () => {
const { classcourseid:id } = teacherForm.form
const { userName, userId } = userStore.user
const { userName } = userStore.user
if (!id||!userName) return
// (wx)
// const qrCodeUrl = `wxlogin?username=${userName}&nextaction=classteaching&id=${id}`
// teacherForm.form.qrUrl = baseUrl + qrCodeUrl
// const baseUrl = 'https://localhost:7860'
// token
const url = `/teaching/classteachingonmobile?classcourseid=${id}` // -
let qrCodeUrl = '' // -
try {
// url
const res = await Http_api.toLink.setLink(url) // -
if (res.code == 200) {
const redisKey = res.data
const base64Key = CryptoJS.enc.Utf8.parse(redisKey).toString(CryptoJS.enc.Base64) // base64
const enStrUrl = encodeURIComponent(base64Key) // url
qrCodeUrl = `?_server=${enStrUrl}`
teacherForm.form.qrUrl = baseUrl + qrCodeUrl
}
} catch (error) { // , token
const jsonStr = JSON.stringify({ url, token: userStore.token }) // json{url, token}
const key = `Ax19i14Ga6qEDOkGTo` // AES-key
const enStr = CryptoJS.AES.encrypt(jsonStr, key).toString() // AES-
const enStrUrl = encodeURIComponent(enStr) // url
qrCodeUrl = `?_web=${enStrUrl}`
}
const qrCodeUrl = `wxlogin?username=${userName}&nextaction=classteaching&id=${id}`
teacherForm.form.qrUrl = baseUrl + qrCodeUrl
}

View File

@ -711,10 +711,7 @@ export default {
.page-center-wrap{
flex: 1;
height: 100%;
padding: 0 5px;
margin: 0 5px;
border-radius: 10px;
background-color: white;
padding: 0 10px;
.prepare-center-jxkj{
height: 100%;
display: flex;