diff --git a/.env b/.env index 2843407d..f02adc52 100644 --- a/.env +++ b/.env @@ -7,7 +7,7 @@ VUE_APP_FILE_PATH=/upload/ # 代理url 本地调试,不可以用在其他地方 VUE_APP_PROXY_URL=//43.143.139.204/manageApi # 登录url -VUE_APP_LOGIN_URL=//u-pre.boe.com/web +VUE_APP_LOGIN_URL=//u-pre.boe.com/web?returnUrl= # boe域名 VUE_APP_BOE_API_URL=//u-pre.boe.com #打包路径 @@ -36,4 +36,6 @@ VUE_APP_EXAM_DETAIL_URL=//u-pre.boe.com/mobile/pages/exam/exam?id= #h5的基本url VUE_APP_H5=//u-pre.boe.com/student-h5 #用户头像 -VUE_APP_AVATAR_PATH=/upload/ \ No newline at end of file +VUE_APP_AVATAR_PATH=/upload/ +# 旧版管理员界面 +VUE_APP_OLD_MANAGE=//u-pre.boe.com/resource/index.html \ No newline at end of file diff --git a/.env.boe b/.env.boe index cce03937..dff531eb 100644 --- a/.env.boe +++ b/.env.boe @@ -2,7 +2,7 @@ NODE_ENV=boe VUE_APP_BASE=/manage VUE_APP_BASE_API=/manageApi -VUE_APP_LOGIN_URL=//u-pre.boe.com/web +VUE_APP_LOGIN_URL=//u-pre.boe.com/web?returnUrl= VUE_APP_BOE_API_URL=//u-pre.boe.com diff --git a/.env.prod b/.env.prod index 95f57361..54f6aaed 100644 --- a/.env.prod +++ b/.env.prod @@ -4,7 +4,7 @@ VUE_APP_BASE_API=/manageApi VUE_APP_PROXY_URL=//u.boe.com/ -VUE_APP_LOGIN_URL=//u.boe.com/web +VUE_APP_LOGIN_URL=//u.boe.com/web?returnUrl= VUE_APP_BOE_API_URL=//u.boe.com @@ -27,4 +27,6 @@ VUE_APP_H5=//u.boe.com/student-h5 #文件基础路径调试 只在生产做了变更 VUE_APP_FILE_PATH=/upload/boe/file/ #用户头像 -VUE_APP_AVATAR_PATH=/upload/ \ No newline at end of file +VUE_APP_AVATAR_PATH=/upload/ +# 旧版管理员界面 +VUE_APP_OLD_MANAGE=//u.boe.com/resource/index.html \ No newline at end of file diff --git a/.env.release b/.env.release index d6f1580a..95765bc6 100644 --- a/.env.release +++ b/.env.release @@ -3,7 +3,7 @@ VUE_APP_BASE=/manage-release VUE_APP_BASE_API=/manageApi-release VUE_APP_PROXY_URL=//u-pre.boe.com/ -VUE_APP_LOGIN_URL=//u.boe.com/web-release +VUE_APP_LOGIN_URL=//u.boe.com/web-release?returnUrl= VUE_APP_BOE_API_URL=//u.boe.com @@ -23,4 +23,6 @@ VUE_APP_EXAM_DETAIL_URL=//u.boe.com/mobile-release/pages/exam/exam?id= #h5的基本url VUE_APP_H5=//u.boe.com/student-h5-release #用户头像 -VUE_APP_AVATAR_PATH=/upload/ \ No newline at end of file +VUE_APP_AVATAR_PATH=/upload/ +# 旧版管理员界面 +VUE_APP_OLD_MANAGE=//u-pre.boe.com/resource/index.html \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index bc766a13..8d61be82 100644 --- a/src/App.vue +++ b/src/App.vue @@ -33,7 +33,7 @@ import {USER_PERMISSION} from "@/api/ThirdApi"; const store = useStore(); const isLogin = ref(false); -console.log("版本2.1.6------------"); +console.log("版本2.1.7------------"); // 监听关闭浏览器 let time1 = ref(0); diff --git a/src/api/apis.js b/src/api/apis.js index 443a84ae..2686d436 100644 --- a/src/api/apis.js +++ b/src/api/apis.js @@ -1,10 +1,25 @@ -export const STUDENT_LIST = '/admin/student/getStudent'; -export const ONLINE_COURSE_PAGE = '/onlineClasses/queryOnlineList'; -export const ASSESSMENT_PAGE = '/assessment/queryAssessmentDetailList post'; -export const PROJECT_AUDIT_PAGE = '/admin/project/auditedlistV2 post'; -export const ROUTER_DETAIL_MODIFY = '/admin/router/routerInfoTemp post'; -export const PROJECT_DETAIL_MODIFY = '/admin/project/projectInfoTemp post'; -export const PROJECT_TEMPLATE_DETAIL_MODIFY = '/admin/project/template/editStageAndTask post'; -export const PROJECT_RELEASE = '/admin/project/realease'; -export const ASYNC_STUDENT_STATUS = '/admin/cache/getStudentAsyncStatus'; -export const ONLINE_COURSE_TEACHER = '/admin/offcourse/getTeacherNamesByCourseId'; +export const STUDENT_LIST = "/admin/student/getStudent"; +export const TASK_STUDENT_LIST = "/admin/student/getTaskStudent"; +export const ONLINE_COURSE_PAGE = "/onlineClasses/queryOnlineList"; +export const ASSESSMENT_PAGE = "/assessment/queryAssessmentDetailList post"; +export const PROJECT_AUDIT_PAGE = "/admin/project/auditedlistV2 post"; +export const ROUTER_DETAIL_MODIFY = "/admin/router/routerInfoTemp post"; +export const PROJECT_DETAIL_MODIFY = "/admin/project/projectInfoTemp post"; +export const PROJECT_TEMPLATE_DETAIL_MODIFY = "/admin/project/template/editStageAndTask post"; +export const PROJECT_RELEASE = "/admin/project/realease"; +export const ASYNC_STUDENT_STATUS = "/admin/cache/getStudentAsyncStatus"; +export const ONLINE_COURSE_TEACHER = "/admin/offcourse/getTeacherNamesByCourseId"; +//开课列表 +export const COURSE_PLAN_PAGE = "/admin/offcourse/planList post"; +//开课所有列表 +export const COURSE_PLAN_LIST = "/admin/offcourse/allPlanList post"; +//开课保存/编辑 +export const COURSE_PLAN_EDIT = "/admin/offcourse/editPlan post"; +//删除开课 +export const DEL_PLAN = id => `/admin/offcourse/deletePlan?offcoursePlanId=${id} delete`; +//作业详情 +export const WORK_DETAIL = "/work/queryWorkDetailById post"; +//考试 +export const EXAM_DETAIL = "/examination/queryExaminationDetailById post"; +//评估 +export const ASSESSMENT_DETAIL = "/assessment/queryAssessmentDetailById post"; diff --git a/src/api/config.js b/src/api/config.js index 74e67963..f7faae2f 100644 --- a/src/api/config.js +++ b/src/api/config.js @@ -58,7 +58,9 @@ http.interceptors.response.use( return response; } if (code === 1000) { - (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'alpine') ? router.push({path: 'login'}) : (window.location.href = process.env.VUE_APP_LOGIN_URL) + (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'alpine') ? + router.push({path: 'login', query: { returnUrl: router.currentRoute.value.fullPath }}) : + (window.location.href = process.env.VUE_APP_LOGIN_URL + encodeURIComponent(window.location.protocol + import.meta.env.VUE_APP_BOE_API_URL + import.meta.env.VUE_APP_BASE + router.currentRoute.value.fullPath)) return Promise.reject(response); } show && message.error(msg); diff --git a/src/api/request.js b/src/api/request.js index 18d527f0..75b20d7f 100644 --- a/src/api/request.js +++ b/src/api/request.js @@ -1,298 +1,350 @@ import {isRef, reactive, ref, toRefs, unref, watch, watchEffect} from "vue"; import {getCookieForName, throttle} from "@/api/method"; -import JSONBigInt from 'json-bigint'; +import JSONBigInt from "json-bigint"; -const JSONBigIntStr = JSONBigInt({storeAsString: true}); +const JSONBigIntStr = JSONBigInt({ storeAsString: true }); + +export function useBoeApiAuditPage(_url, params = {}) { + return useBoeApiPage(_url, params, { + init: true, + result: (res) => res.result.audienceList.map((e) => ({ ...e, id: e.id + "" })), + totalPage: (res) => res.result.totalPage, + total: (res) => res.result.totalElement, + }); +} + +export function useBoeApiUserInfoPage(_url, params = {}) { + return useBoeApiPage(_url, params, { + init: false, + result: (res) => res.result.userInfoList, + totalPage: (res) => res.result.totalPage, + total: (res) => res.result.totalElement, + }); +} export function useBoeApiPage(_url, params = {}, config = { - init: true, - result: res => res.result, - totalPage: res => res.result.totalPage, - total: res => res.result.totalElement + init: true, + result: res => res.result, + totalPage: res => res.result.totalPage, + total: res => res.result.totalElement }) { - const state = reactive({ - data: [], - loading: false, - page: 1, - pageSize: 10, - totalPage: 0, - total: 0 - }) + const state = reactive({ + data: [], + loading: false, + page: 1, + pageSize: 10, + totalPage: 0, + total: 0 + }); - if (isRef(params)) { - watch(params.value, () => { - fetch() - }) - } + if (isRef(params)) { + watch(params.value, () => { + fetch(); + }); + } - if (isRef(_url)) { - watchEffect(fetch) - } else { - fetch() - } + if (isRef(_url)) { + watchEffect(fetch); + } else { + fetch(); + } - function fetch() { - state.loading = true - return boeRequest(unref(_url), unref(params)).then(r => { - state.data = config.result(r) - state.totalPage = config.totalPage(r) - state.total = config.total(r) - state.loading = false - state.page = params.page - }) - } + function fetch() { + state.loading = true; + return boeRequest(unref(_url), unref(params)).then(r => { + state.data = config.result(r); + state.totalPage = config.totalPage(r); + state.total = config.total(r); + state.loading = false; + state.page = params.page; + }); + } - function reset() { - state.data = [] - state.loading = false - state.page = 1 - state.totalPage = 0 - state.total = 0 - } + function reset() { + state.data = []; + state.loading = false; + state.page = 1; + state.totalPage = 0; + state.total = 0; + } - config.init && fetch() - return { - ...toRefs(state), - fetch, - reset - }; + config.init && fetch(); + return { + ...toRefs(state), + fetch, + reset + }; } export function useBoeApi(_url, params = {}, config = { - init: true, - result: res => res.result, + init: true, + result: res => res.result, }) { - const state = reactive({ - data: [], - loading: false, - }) - watch(() => params, () => { - fetch() - }) + const state = reactive({ + data: [], + loading: false, + }); + watch(() => params, () => { + fetch(); + }); - function fetch() { - state.loading = true - return boeRequest(_url, params).then(r => { - state.data = config.result(r) - state.loading = false - }) - } + function fetch() { + state.loading = true; + return boeRequest(_url, params).then(r => { + state.data = config.result(r); + state.loading = false; + }); + } - config.init && fetch() - return { - ...toRefs(state), - fetch, - }; + config.init && fetch(); + return { + ...toRefs(state), + fetch, + }; } export function useBoeUserListPage(_url, params = {}, init = true) { - const state = reactive({ - data: [], - loading: false, - total: 0, - totalPage: 0, - page: 1, - ...params - }) + const state = reactive({ + data: [], + loading: false, + total: 0, + totalPage: 0, + page: 1, + ...params + }); - watch(() => params.keyword, throttle(fetch, 600)) - watch(() => params.page, fetch) + watch(() => params.keyword, throttle(fetch, 600)); + watch(() => params.page, fetch); - function fetch() { - state.loading = true - if (!params.keyword) { - state.loading = false - return - } - return boeRequest(_url, params).then(r => { - state.data = params.page === 1 ? r.result.userInfoList : [...state.data, ...r.result.userInfoList] - state.totalPage = r.result.totalPage - state.total = r.result.totalElement - state.loading = false - }) + function fetch() { + state.loading = true; + if (!params.keyword) { + state.loading = false; + return; } + return boeRequest(_url, params).then(r => { + state.data = params.page === 1 ? r.result.userInfoList : [...state.data, ...r.result.userInfoList]; + state.totalPage = r.result.totalPage; + state.total = r.result.totalElement; + state.loading = false; + }); + } - init && fetch() - return { - ...toRefs(state), - fetch, - }; + init && fetch(); + return { + ...toRefs(state), + fetch, + }; +} + +export function useRowsPageNoInit(_url, params) { + const state = reactive({ + data: [], + total: 1, + current: 1, + pages: 1, + loading: false + }); + + function reset() { + state.data = []; + state.loading = false; + } + + function fetch() { + state.loading = true; + return request(unref(_url), unref(params)).then(r => { + state.data = r.data.rows || r.data.records; + state.current = r.data.current || r.data.current; + state.pages = r.data.pages; + state.total = r.data.total; + state.loading = false; + }); + } + + return { + ...toRefs(state), + fetch, + reset, + }; } export function useRowsPage(_url, params, init = true) { - const state = reactive({ - data: [], - total: 1, - current: 1, - pages: 1, - loading: false - }) + const state = reactive({ + data: [], + total: 1, + current: 1, + pages: 1, + loading: false + }); - if (isRef(params)) { - watch(params.value, () => { - fetch() - }) - } + if (isRef(params)) { + watch(params.value, () => { + fetch(); + }); + } - if (isRef(_url)) { - watchEffect(fetch) - } else { - init && fetch() - } + if (isRef(_url)) { + watchEffect(fetch); + } else { + init && fetch(); + } - function reset() { - state.data = [] - state.loading = false - } + function reset() { + state.data = []; + state.loading = false; + } - function fetch() { - state.loading = true - return request(unref(_url), unref(params)).then(r => { - state.data = r.data.rows - state.current = r.data.current - state.pages = r.data.pages - state.total = r.data.total - state.loading = false - }) - } + function fetch() { + state.loading = true; + return request(unref(_url), unref(params)).then(r => { + state.data = r.data.rows; + state.current = r.data.current; + state.pages = r.data.pages; + state.total = r.data.total; + state.loading = false; + }); + } - return { - ...toRefs(state), - fetch, - reset, - }; + return { + ...toRefs(state), + fetch, + reset, + }; } export function usePage(_url, params, init = true) { - const state = reactive({ - data: [], - total: 1, - current: 1, - pages: 1, - loading: false - }) + const state = reactive({ + data: [], + total: 1, + current: 1, + pages: 1, + loading: false + }); - if (isRef(params)) { - watch(params.value, () => { - fetch() - }) - } + if (isRef(params)) { + watch(params.value, () => { + fetch(); + }); + } - if (isRef(_url)) { - watchEffect(fetch) - } else { - init && fetch() - } + if (isRef(_url)) { + watchEffect(fetch); + } else { + init && fetch(); + } - function reset() { - state.data = [] - state.loading = false - } + function reset() { + state.data = []; + state.loading = false; + } - function fetch() { - state.loading = true - return request(unref(_url), unref(params)).then(r => { - state.data = r.data.records - state.current = r.data.current - state.pages = r.data.pages - state.total = r.data.total - state.loading = false - }) - } + function fetch() { + state.loading = true; + return request(unref(_url), unref(params)).then(r => { + state.data = r.data.records; + state.current = r.data.current; + state.pages = r.data.pages; + state.total = r.data.total; + state.loading = false; + }); + } - return { - ...toRefs(state), - fetch, - reset, - }; + return { + ...toRefs(state), + fetch, + reset, + }; } -export function useRequest(_url, params = {}, init = true) { +export function useRequest(_url, params, init = true) { - const data = ref({}) - const loading = ref(false) + const data = ref({}); + const loading = ref(false); - watch(params, () => { - fetchData() - }) + if (isRef(params)) { + watch(params.value, () => { + fetchData(); + }); + } - function fetchData() { - loading.value = true - request(_url, params).then(r => { - data.value = r - loading.value = false - }) - } + function fetchData() { + loading.value = true; + request(_url, unref(params)).then(r => { + data.value = r.data; + loading.value = false; + }); + } - init && fetchData() - return { - data, - loading, - fetchData, - }; + init && fetchData(); + return { + data, + loading, + fetchData, + }; } export async function boeRequest(_url, params = {}) { - const s = _url.split(' ') - let url = s[0] - const method = s[1]?.toLowerCase() || 'get' - if (method === 'get') { - url.includes('?') ? (url.endsWith('&') || (url += '&')) : (url += '?') - url += Object.keys(params).map(key => key + '=' + params[key]).join('&') - } - const body = method !== 'get' ? s[2] === 'formData' ? formatFormData(params) : params : {} - url = process.env.NODE_ENV === 'development' ? url : window.location.protocol + process.env.VUE_APP_BOE_API_URL + url - return fetch(url, { - method, - headers: { - token: getCookieForName('token'), - ...method !== 'get' && s[2] !== 'formData' ? {'Content-Type': 'application/json'} : {} - }, - ...method !== 'get' ? {body: s[2] === 'formData' ? body : JSON.stringify(body)} : {} - }).then(res => { - return res.text() - }).then(res => { - return JSONBigIntStr.parse(res) - }) + const s = _url.split(" "); + let url = s[0]; + const method = s[1]?.toLowerCase() || "get"; + if (method === "get") { + url.includes("?") ? (url.endsWith("&") || (url += "&")) : (url += "?"); + url += Object.keys(params).map(key => key + "=" + params[key]).join("&"); + } + const body = method !== "get" ? s[2] === "formData" ? formatFormData(params) : params : {}; + url = process.env.NODE_ENV === "development" ? url : window.location.protocol + process.env.VUE_APP_BOE_API_URL + url; + return fetch(url, { + method, + headers: { + token: getCookieForName("token"), + ...method !== "get" && s[2] !== "formData" ? { "Content-Type": "application/json" } : {} + }, + ...method !== "get" ? { body: s[2] === "formData" ? body : JSON.stringify(body) } : {} + }).then(res => { + return res.text(); + }).then(res => { + return JSONBigIntStr.parse(res); + }); } function formatFormData(data) { - const formData = new FormData(); - Object.keys(data).forEach(k => formData.append(k, data[k])) - return formData + const formData = new FormData(); + Object.keys(data).forEach(k => formData.append(k, data[k])); + return formData; } export async function request(_url, params) { - const s = _url.split(' ') - let url = s[0] - const method = s[1]?.toLowerCase() || 'get' - if (method === 'get') { - let paramsArray = []; - if (params) { - Object.keys(params).forEach(key => paramsArray.push(key + '=' + params[key])) - if (url.search(/\?/) === -1) { - url += '?' + paramsArray.join('&') - } else { - url += '&' + paramsArray.join('&') - } - } + const s = _url.split(" "); + let url = s[0]; + const method = s[1]?.toLowerCase() || "get"; + if (method === "get") { + let paramsArray = []; + if (params) { + Object.keys(params).forEach(key => paramsArray.push(key + "=" + params[key])); + if (url.search(/\?/) === -1) { + url += "?" + paramsArray.join("&"); + } else { + url += "&" + paramsArray.join("&"); + } } - const body = method !== 'get' ? params || {} : {} - return fetch(process.env.VUE_APP_BASE_API + url, { - method, - headers: { - token: getCookieForName('token'), - ...method !== 'get' ? {'Content-Type': 'application/json'} : {} - }, - ...method !== 'get' ? {body: JSON.stringify(body)} : {} - }).then(res => { - return res.text() - }).then(res => { - return JSONBigIntStr.parse(res) - }) + } + const body = method !== "get" ? params || {} : {}; + return fetch(process.env.VUE_APP_BASE_API + url, { + method, + headers: { + token: getCookieForName("token"), + ...method !== "get" ? { "Content-Type": "application/json" } : {} + }, + ...method !== "get" ? { body: JSON.stringify(body) } : {} + }).then(res => { + return res.text(); + }).then(res => { + return JSONBigIntStr.parse(res); + }); } \ No newline at end of file diff --git a/src/assets/images/courseManage/persion.png b/src/assets/images/courseManage/persion.png new file mode 100644 index 00000000..049decd5 Binary files /dev/null and b/src/assets/images/courseManage/persion.png differ diff --git a/src/assets/images/courseManage/position.png b/src/assets/images/courseManage/position.png new file mode 100644 index 00000000..9b2233c8 Binary files /dev/null and b/src/assets/images/courseManage/position.png differ diff --git a/src/assets/images/courseManage/time.png b/src/assets/images/courseManage/time.png new file mode 100644 index 00000000..1e5a0e94 Binary files /dev/null and b/src/assets/images/courseManage/time.png differ diff --git a/src/components/NavLeft.vue b/src/components/NavLeft.vue index 6737e480..ad43b991 100644 --- a/src/components/NavLeft.vue +++ b/src/components/NavLeft.vue @@ -436,7 +436,7 @@ src="../assets/images/navleft/review.png" /> - 旧版管理员界面 + 旧版管理员界面 @@ -807,6 +807,7 @@ export default { pagename: "字典管理", }, ], + oldManage: window.location.protocol + process.env.VUE_APP_OLD_MANAGE }); // console.log(state.openKeys, state.selectedKeys); diff --git a/src/components/common/BaseTable.vue b/src/components/common/BaseTable.vue new file mode 100644 index 00000000..7a6c627b --- /dev/null +++ b/src/components/common/BaseTable.vue @@ -0,0 +1,134 @@ + + diff --git a/src/components/common/CheckBox.vue b/src/components/common/CheckBox.vue new file mode 100644 index 00000000..0c34bd54 --- /dev/null +++ b/src/components/common/CheckBox.vue @@ -0,0 +1,24 @@ + + diff --git a/src/components/common/CommonImport.vue b/src/components/common/CommonImport.vue new file mode 100644 index 00000000..44966b06 --- /dev/null +++ b/src/components/common/CommonImport.vue @@ -0,0 +1,489 @@ + + + + + diff --git a/src/components/common/FJUpload.vue b/src/components/common/FJUpload.vue index a9f9bffc..c46c161b 100644 --- a/src/components/common/FJUpload.vue +++ b/src/components/common/FJUpload.vue @@ -23,7 +23,11 @@ {{ item.name.indexOf('http')!==-1? item.name.slice(item.name.lastIndexOf('/') + 1) - :item.name.indexOf('-')!==-1?item.name.slice(0,item.name.indexOf('-')) + item.name.slice(item.name.indexOf('.')) :item.name + :item.name.indexOf('-')!==-1? + item.name.indexOf('/')!==-1? + item.name.slice(item.name.lastIndexOf('/') + 1).slice(0,item.name.slice(item.name.lastIndexOf('/') + 1).indexOf('-')) + item.name.slice(item.name.indexOf('.')) + :item.name.slice(0,item.name.indexOf('-')) + item.name.slice(item.name.indexOf('.')) + :item.name }} diff --git a/src/components/common/QrCode.vue b/src/components/common/QrCode.vue new file mode 100644 index 00000000..1bf006a9 --- /dev/null +++ b/src/components/common/QrCode.vue @@ -0,0 +1,266 @@ + + + + \ No newline at end of file diff --git a/src/components/common/RangePicker.vue b/src/components/common/RangePicker.vue new file mode 100644 index 00000000..e43eba33 --- /dev/null +++ b/src/components/common/RangePicker.vue @@ -0,0 +1,47 @@ + + + \ No newline at end of file diff --git a/src/components/drawers/ActiveAttendance.vue b/src/components/drawers/ActiveAttendance.vue index 60467d03..78ec3de6 100644 --- a/src/components/drawers/ActiveAttendance.vue +++ b/src/components/drawers/ActiveAttendance.vue @@ -126,6 +126,21 @@ }" /> +
+
+ +
+
@@ -459,6 +474,13 @@ export default { } }; + //分页 + const changePagination = (page) => { + state.tableDataTotalLoading = true; + state.currentPage = page; + getTableData(); + }; + const getTableData = () => { // debugger console.log("当前是项目还是路径图 1 项目 2 路径图", props); @@ -510,6 +532,7 @@ export default { .catch((err) => { console.log(err); state.tableDataTotalLoading = false; + state.tableDataTotal = 0; state.tableData = []; }); } else if ( @@ -560,10 +583,12 @@ export default { console.log(err); state.tableDataTotalLoading = false; state.tableData = []; + state.tableDataTotal = 0; }); } else { state.tableDataTotalLoading = false; state.tableData = []; + state.tableDataTotal = 0; } // let arr = state.tableData; @@ -1047,6 +1072,7 @@ export default { searchTaskList, resetTaskList, exportTaskStu, + changePagination }; }, }; diff --git a/src/components/drawers/AddFaceClass.vue b/src/components/drawers/AddFaceClass.vue new file mode 100644 index 00000000..3cf84403 --- /dev/null +++ b/src/components/drawers/AddFaceClass.vue @@ -0,0 +1,271 @@ + + + + \ No newline at end of file diff --git a/src/components/drawers/AddOpenCourse.vue b/src/components/drawers/AddOpenCourse.vue new file mode 100644 index 00000000..8b7cad30 --- /dev/null +++ b/src/components/drawers/AddOpenCourse.vue @@ -0,0 +1,1202 @@ + + + + \ No newline at end of file diff --git a/src/components/drawers/FeaceClassAll.vue b/src/components/drawers/FeaceClassAll.vue new file mode 100644 index 00000000..d9543ac3 --- /dev/null +++ b/src/components/drawers/FeaceClassAll.vue @@ -0,0 +1,470 @@ + + + + + \ No newline at end of file diff --git a/src/components/drawers/MemberList.vue b/src/components/drawers/MemberList.vue index a1611ca4..a774b1f2 100644 --- a/src/components/drawers/MemberList.vue +++ b/src/components/drawers/MemberList.vue @@ -50,6 +50,8 @@
-
- 当前设计下,学员可以获得 {{ scoresum }}积分 -
+
- 完成【必修/选修】获得 {{ score1 }} 积分 + 每完成一项任务则可获得 {{ score1 }} 积分,除此以外:
+ + +
- {{ four1 }}名学完在线课程获得 - {{ four2 }}积分 作业:最早完成任意一项目作业的前{{ four3 }}名提交作业且成绩不低于 + >名学员且成绩不低于 {{ four4 }}分获得 {{ four5 }}积分
- 考试成绩高于在线:最早完成任意一门课程的{{ four1 }}名学员获得 + {{ four2 }}积分 + +
+
+ 考试:完成任意一场考试且成绩高于{{ five1 }}分获得 {{ five2 }}积分
- 考勤正常学员获得 面授、直播、活动:完成任意一面授课、直播、活动且考勤正常学员获得 {{ six1 }}积分
+
成为小组长获得{{ seven1 }}积分 + >积分(同一项目只加一次) +
优秀学员可获得 {{ seven2 }}积分 + >积分(同一项目只加一次)
-
- 当前设计下,学员可以获得 {{ scoresum }}积分 -
+
- 完成【必修/选修】获得 每完成一项任务则可获得 积分 + >积分,除此以外:
- 完成作业成绩不低于 分获得 - 积分 -
-
- 名学完在线课程获得 - 积分 - 作业:最早完成任意一项作业的名提交作业且成绩不低于名学员且成绩不低于 分获得
- 考试成绩高于在线:最早完成任意一门课程的名学完在线课程获得 + 积分 + +
+
+ 考试:完成任意一场考试且成绩高于分获得 @@ -259,20 +254,21 @@ >
- 考勤正常学员获得 面授、直播、活动:完成任意一面授课、直播、活动且考勤正常学员获得 积分
+
成为小组长获得积分 + >积分(同一项目只加一次)
优秀学员可获得 积分积分(同一项目只加一次)
diff --git a/src/components/drawers/ViewAssess.vue b/src/components/drawers/ViewAssess.vue index 810ff844..dbd0f227 100644 --- a/src/components/drawers/ViewAssess.vue +++ b/src/components/drawers/ViewAssess.vue @@ -167,6 +167,10 @@ export default { return {}; }, }, + assessmentId: { + type: Number, + default: null, + }, datasource: { type: Object, default: function () { @@ -204,7 +208,7 @@ export default { console.log('我是传递过来的参数2', props.basicdata) api.QueryAssessmentDetail({ "assessmentSubmitId": props.datasource.assessmentSubmitId?props.datasource.assessmentSubmitId:props.datasource.assessmentResultIds, - "courseId": props.datasource.courseId, + "courseId": props.assessmentId, "studentId": props.datasource.studentId }).then(res=>{ console.log(res) diff --git a/src/components/drawers/project/ImpoterGroupLeader.vue b/src/components/drawers/project/ImpoterGroupLeader.vue index 1be2f913..73e3a37f 100644 --- a/src/components/drawers/project/ImpoterGroupLeader.vue +++ b/src/components/drawers/project/ImpoterGroupLeader.vue @@ -36,7 +36,6 @@ :action="uploadUrl" @change="handleChange" v-model:file-list="fileList" - :before-upload="beforeUpload" >

diff --git a/src/components/drawers/project/ProjectFaceStu.vue b/src/components/drawers/project/ProjectFaceStu.vue index a8bd86ff..802c7568 100644 --- a/src/components/drawers/project/ProjectFaceStu.vue +++ b/src/components/drawers/project/ProjectFaceStu.vue @@ -1,14 +1,14 @@ -