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/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/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 @@ + + + + + + + + {{ title }} + + + + + 请下载 + 模板 + ,按要求填写数据并导入 + + + 上传: + + + + + + + 点击或将文件拖拽到此处上传 + 支持扩展名:.xls/.xlsx + + + + + + + + {{ file.name }} + {{ + { + done: "上传成功", + uploading: "正在上传", + error: "上传失败", + removed: "正在上传", + }[file.status] + }} + + + + + + 下载失败数据 + + + + + + + + {{ file.uploadState?.successNum || 0 }}条数据导入成功,{{ + file.uploadState?.failedNum || 0 + }}条数据导入失败 + + + + + + + + + + + + 取消 + 确定 + + + + + + + + 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 @@ + + + + + + + {{ title }} + + + + + {{ name }} + + + + + 链接 + + + 复制链接 + + + + + + + + + \ 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/AddFaceClass.vue b/src/components/drawers/AddFaceClass.vue index 2b723175..3cf84403 100644 --- a/src/components/drawers/AddFaceClass.vue +++ b/src/components/drawers/AddFaceClass.vue @@ -1,278 +1,271 @@ - - - - - - - 编辑面授 - 添加面授 - - - - - - - + + + + + + + 编辑面授 + 添加面授 + + + + + + - - 取消 - 确定 - - - - - +} + \ No newline at end of file diff --git a/src/components/drawers/AddOpenCourse.vue b/src/components/drawers/AddOpenCourse.vue index 8e9ee1ba..8b7cad30 100644 --- a/src/components/drawers/AddOpenCourse.vue +++ b/src/components/drawers/AddOpenCourse.vue @@ -1,1382 +1,1202 @@ - - - - - 开课 - 开课 - + + + + + 开课 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + + + + 重置 + + - - - - - - - - - - - - - - - - - - - - + + 新建开课 + + + + + + + + + 取消 + 确定 + + + + + + + + + + {{ formData.id ? "编辑开课" : "新建开课" }} + + + + 面授名称:{{ courseName }} + + + + + + 开课名称 - - - - 搜索 + + + + + + + - - - 重置 + 地点 + + + + + {{ formData.address.length || 0 }}/50 - - - 新建开课 - - - - - - - - 已选择 - {{ 1 }} - 条 - 名称: - {{ selectedRows?.name }} - - 项目经理: - {{ selectedRows?.manager }} - - 创建人: - {{ selectedRows?.createName }} - - 创建时间: - {{ - selectedRows?.createTime - }} - - + + + + + 面授时间 - - - - + - - - 取消 - 确定 - - - - - - - - - - 提示 - - - - 项目已存在,是否重复添加? - - - - 取消 - - - 确定 + + + + + + 授课教师 + + + - - - - - - - - - - 编辑开课 - 新建开课 - + + + 考勤设置: - - 面授名称:{{ newCourseName }} - - - - - - - 开课名称 - - - - - - - - - - - 地点 - - - - - {{ xjkkinputV2.length }}/50 - - - - - - - - - 面授时间 - - - - - - - - - - - - 授课教师 - - - - - - - - 考勤设置: + + 签到 + + 开始前: + + 分钟 - 签到 - - 开始前: - - 分钟 - - - 开始后: - - 分钟 - + v-model:value="formData.afterStart" + > + 分钟 - - - 报名设置 - - - - 是否允许公开报名 - - + + + + 报名设置 + + + 是否允许公开报名 + + + - - - 现场参与 - - - - - 允许项目内人员临时到场参加(不在本场次培训的人员可以临时签到参加) - - - 允许项目外人员临时到场参加 - - + + + 现场参与 + + + 允许项目内人员临时到场参加(不在本场次培训的人员可以临时签到参加) + + + 允许项目外人员临时到场参加 + + + - - - 评估设置 - - - - 是否需要评估 - - + + + 评估设置 - - - - - - 选择评估 - - - - - - {{ assessmentName }} - - - - + + + 是否需要评估 + - - - - - - - 配置作业 - - - - - - {{ workInfo.workName }} - - - - - - - - - - - 配置考试 - - - - - - {{ examInfo.examinationName }} - - - - - - - - - - - - - - - - - 取消 - - + + + + - 确定 - + + 选择评估 + + + + + + {{ formData.assessmentName }} + + + - - - - - - +} + +.createschooltime { + z-index: 999; + width: 879px; + background: #ffffff; + box-shadow: 0 1px 35px 0 rgba(118, 136, 166, 0.21); + position: absolute; + left: 50%; + top: -100%; + transform: translate(-50%, -50%); + + .cst_header { + position: absolute; + width: 100%; + height: 40px; + background: linear-gradient( + rgba(78, 166, 255, 0.2) 0%, + rgba(78, 166, 255, 0) 100% + ); + } + + .cst_main { + width: 100%; + max-height: 700px; + overflow-y: auto; + position: relative; + + .cstm_header { + display: flex; + align-items: center; + padding-top: 20px; + padding-left: 26px; + font-size: 16px; + + .add_icon { + width: 16px; + height: 16px; + margin-right: 10px; + background-image: url(@/assets/images/coursewareManage/add1.png); + background-size: 100% 100%; + } + + .close_exit { + position: absolute; + right: 42px; + cursor: pointer; + width: 20px; + height: 20px; + background-image: url(@/assets/images/coursewareManage/close.png); + background-size: 100% 100%; + } + } + + .cstm_title { + margin: 10px auto 20px 51px; + font-weight: bold; + } + + .cstm_items { + display: flex; + width: 80%; + margin: auto; + align-items: center; + margin-bottom: 23px; + + .signbox { + display: flex; + justify-content: end; + width: 100px; + margin-right: 6px; + + .sign { + margin-top: -5px; + margin-right: 4px; + } + } + + .b_input { + flex: 1; + position: relative; + + .upload_box { + display: flex; + cursor: pointer; + + .upload_icon { + width: 16px; + height: 16px; + margin-right: 5px; + } + } + + .inp_num { + position: absolute; + top: 9px; + right: 10px; + } + } + } + + .items_fj { + margin-bottom: 1px; + + .fujian { + display: none; + } + + .mbl_items12 { + width: 440px; + margin-right: 56px; + + .i12_box1 { + display: flex; + align-items: center; + padding: 17px 0 17px 21px; + border: 1px solid #eff4fc; + border-radius: 8px; + margin-bottom: 10px; + + .file_img { + width: 27px; + height: 32px; + background-image: url(@/assets/images/coursewareManage/imgs.png); + margin-right: 22px; + + img { + width: 100%; + height: 100%; + } + } + + .file_detail { + width: 250px; + margin-right: 21px; + + .file_updata { + display: flex; + align-items: center; + + .updatabox { + position: relative; + width: 230px; + height: 5px; + background-color: rgba(192, 192, 192, 0.25); + border-radius: 3px; + + .updatacolor { + position: absolute; + left: 0; + width: 100%; + height: 5px; + background-color: #57c887; + border-radius: 3px; + } + + .updatacolor2 { + position: absolute; + left: 0; + width: 80%; + height: 5px; + background-color: #ff7474; + border-radius: 3px; + } + + .updatacolor3 { + position: absolute; + left: 0; + width: 60%; + height: 5px; + background-color: #4ea6ff; + border-radius: 3px; + } + + .updataxq { + position: absolute; + right: 2px; + top: -30px; + color: #57c887; + } + + .updataxq2 { + position: absolute; + right: 2px; + top: -30px; + color: #ff7474; + } + + .updataxq3 { + position: absolute; + right: 2px; + top: -30px; + color: #4ea6ff; + } + } + } + } + + .file_operation { + display: flex; + + .fobox { + margin-right: 5px; + cursor: pointer; + } + } + } + } + } + + .items_btn { + display: flex; + justify-content: center; + margin-top: 20px; + margin-bottom: 20px; + + .cstm_btn { + width: 100px; + height: 40px; + background: rgba(64, 158, 255, 0); + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + margin-right: 14px; + flex-shrink: 0; + cursor: pointer; + + .btnText { + font-size: 14px; + font-weight: 400; + line-height: 40px; + } + } + + .btn5 { + border: 1px solid rgba(64, 158, 255, 1); + color: #4ea6ff; + } + + .btn6 { + background-color: #4ea6ff; + color: #ffffff; + } + } + } +} + \ 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 @@ diff --git a/src/components/drawers/project/ProjectFaceTaskManage.vue b/src/components/drawers/project/ProjectFaceTaskManage.vue index fa6379c7..a9a61b54 100644 --- a/src/components/drawers/project/ProjectFaceTaskManage.vue +++ b/src/components/drawers/project/ProjectFaceTaskManage.vue @@ -1,14 +1,14 @@ - 【面授】{{ title }} + 【面授】{{ datasource?.name }} - - + + - - + - 第{{item}}次开课 - 2023年管理者面授课程({{item}}) + :style="{background:n===coursePlanIndex?'rgb(247, 251, 253)':'rgb(250, 250, 250)'}"> + 第{{ data.length - n }}次开课 + {{ item.name }} - - 2023.3.14 12:34 ~ 2023.3.17 12:34 + + {{ item.beginTime }} ~ {{ item.endTime }} - - 京东方大厦({{item}})号楼 + + {{ item.address }} - - 董瑞华 + + {{ item.teacher }} - - 姓名: - - - - 任务状态: - - + + + 姓名: + + + + 完成状态: + + + @@ -73,601 +75,445 @@ 搜索 - + 重置 - - + 催促学习 - - + 批量标注完成 - - 批量录入成绩 - - + + + + 批量录入成绩 + + + 导出数据 - + + 导出作业 - - - - - - - + + - - - - - - - - - - - - - diff --git a/src/components/drawers/router/RouterFaceStu.vue b/src/components/drawers/router/RouterFaceStu.vue index 802c7568..38f34d11 100644 --- a/src/components/drawers/router/RouterFaceStu.vue +++ b/src/components/drawers/router/RouterFaceStu.vue @@ -3,7 +3,7 @@ :visible="FSvisible" class="drawerStyle RouterFaceStu" placement="right" - width="80%" + width="1200" @after-visible-change="afterVisibleChange" > @@ -16,66 +16,51 @@ /> - - + + - - + - 第{{item}}次开课 - 2023年管理者面授课程({{item}}) + :style="{background:n===coursePlanIndex?'rgb(247, 251, 253)':'rgb(250, 250, 250)'}"> + 第{{ data.length - n }}次开课 + {{ item.name }} - - 2023.3.14 12:34 ~ 2023.3.17 12:34 + + {{ item.beginTime }} ~ {{ item.endTime }} - - 京东方大厦({{item}})号楼 + + {{ item.address }} - - 董瑞华 + + {{ item.teacher }} - 姓名: - - 考勤: - - - - 签到状态: @@ -90,7 +75,7 @@ 搜索 - + 重置 @@ -104,11 +89,27 @@ > 签到二维码 - - - 导入学员 - - + + + + + 添加学员 + + + + + + 导入学员 + + + 批量签到 @@ -116,747 +117,264 @@ 导出数据 - - - - - - - + - - - - - - - - - - - - - - - - 提示 - - - - 您确定要批量签到吗 - - - - 取消 - - - 确定 - - - - - - - + -
+ +
点击或将文件拖拽到此处上传
支持扩展名:.xls/.xlsx
diff --git a/src/components/drawers/project/ProjectFaceTaskManage.vue b/src/components/drawers/project/ProjectFaceTaskManage.vue index fa6379c7..a9a61b54 100644 --- a/src/components/drawers/project/ProjectFaceTaskManage.vue +++ b/src/components/drawers/project/ProjectFaceTaskManage.vue @@ -1,14 +1,14 @@ - 【面授】{{ title }} + 【面授】{{ datasource?.name }} - - + + - - + - 第{{item}}次开课 - 2023年管理者面授课程({{item}}) + :style="{background:n===coursePlanIndex?'rgb(247, 251, 253)':'rgb(250, 250, 250)'}"> + 第{{ data.length - n }}次开课 + {{ item.name }} - - 2023.3.14 12:34 ~ 2023.3.17 12:34 + + {{ item.beginTime }} ~ {{ item.endTime }} - - 京东方大厦({{item}})号楼 + + {{ item.address }} - - 董瑞华 + + {{ item.teacher }} - - 姓名: - - - - 任务状态: - - + + + 姓名: + + + + 完成状态: + + + @@ -73,601 +75,445 @@ 搜索 - + 重置 - - + 催促学习 - - + 批量标注完成 - - 批量录入成绩 - - + + + + 批量录入成绩 + + + 导出数据 - + + 导出作业 - - - - - - - + + - - - - - - - - - - - - - diff --git a/src/components/drawers/router/RouterFaceStu.vue b/src/components/drawers/router/RouterFaceStu.vue index 802c7568..38f34d11 100644 --- a/src/components/drawers/router/RouterFaceStu.vue +++ b/src/components/drawers/router/RouterFaceStu.vue @@ -3,7 +3,7 @@ :visible="FSvisible" class="drawerStyle RouterFaceStu" placement="right" - width="80%" + width="1200" @after-visible-change="afterVisibleChange" > @@ -16,66 +16,51 @@ /> - - + + - - + - 第{{item}}次开课 - 2023年管理者面授课程({{item}}) + :style="{background:n===coursePlanIndex?'rgb(247, 251, 253)':'rgb(250, 250, 250)'}"> + 第{{ data.length - n }}次开课 + {{ item.name }} - - 2023.3.14 12:34 ~ 2023.3.17 12:34 + + {{ item.beginTime }} ~ {{ item.endTime }} - - 京东方大厦({{item}})号楼 + + {{ item.address }} - - 董瑞华 + + {{ item.teacher }} - 姓名: - - 考勤: - - - - 签到状态: @@ -90,7 +75,7 @@ 搜索 - + 重置 @@ -104,11 +89,27 @@ > 签到二维码 - - - 导入学员 - - + + + + + 添加学员 + + + + + + 导入学员 + + + 批量签到 @@ -116,747 +117,264 @@ 导出数据 - - - - - - - + - - - - - - - - - - - - - - - - 提示 - - - - 您确定要批量签到吗 - - - - 取消 - - - 确定 - - - - - - - + -