From 740ad58897d6823f09b6c58a8da76195802564eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=B1=E8=BE=BE?= Date: Wed, 19 Nov 2025 15:46:20 +0800 Subject: [PATCH] =?UTF-8?q?feat):(course=20=E5=AE=9E=E7=8E=B0=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E5=88=9B=E5=BB=BA=E5=8A=9F=E8=83=BD=E5=8F=8A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=BA=91=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加创建课程页面,支持章节与节的嵌套结构 - 实现可折叠章节组件(dragCollapse),支持展开/收起与删除操作 - 实现可拖拽表格组件(dragTable),支持跨表格拖拽排序与编辑 - 引入文件云API模块,支持文件夹与文件的基本操作 - 添加文件类型图标样式文件(filetypes.css) - 新增文件选择弹窗组件(FileCloud),支持文件浏览与选择 - 优化common.scss样式文件,调整选择器缩进与渐变背景配置 --- src/api/modules/filecloud.js | 87 +++ src/api/modules/newApi.js | 8 + src/api/modules/newConfig.js | 107 ++++ src/api/modules/xajax.js | 187 ++++++ src/assets/images/filetypes.png | Bin 0 -> 113000 bytes src/assets/scss/common.scss | 65 ++- src/assets/scss/filetypes.css | 280 +++++++++ src/components/FileCloud/index.vue | 301 ++++++++++ src/hooks/useCourseData.js | 142 +++++ src/hooks/useCourseForm.js | 50 ++ src/hooks/useUpload.js | 65 +++ src/main.js | 213 +++---- src/views/courselibrary/OnlineManage.vue | 550 +++++++++--------- .../courselibrary/components/createCourse.vue | 105 ++++ .../courselibrary/components/dragCollapse.vue | 127 ++++ .../courselibrary/components/dragTable.vue | 508 ++++++++++++++++ .../components/professionalmode.vue | 410 +++++++++++++ 17 files changed, 2820 insertions(+), 385 deletions(-) create mode 100644 src/api/modules/filecloud.js create mode 100644 src/api/modules/newApi.js create mode 100644 src/api/modules/newConfig.js create mode 100644 src/api/modules/xajax.js create mode 100644 src/assets/images/filetypes.png create mode 100644 src/assets/scss/filetypes.css create mode 100644 src/components/FileCloud/index.vue create mode 100644 src/hooks/useCourseData.js create mode 100644 src/hooks/useCourseForm.js create mode 100644 src/hooks/useUpload.js create mode 100644 src/views/courselibrary/components/createCourse.vue create mode 100644 src/views/courselibrary/components/dragCollapse.vue create mode 100644 src/views/courselibrary/components/dragTable.vue create mode 100644 src/views/courselibrary/components/professionalmode.vue diff --git a/src/api/modules/filecloud.js b/src/api/modules/filecloud.js new file mode 100644 index 00000000..a6cae99f --- /dev/null +++ b/src/api/modules/filecloud.js @@ -0,0 +1,87 @@ +import ajax from "./xajax"; + +/** + * @param {文件夹} folder + */ +const list = function (folder) { + return ajax.post("/systemapi/api/m/xfile/base/all/list", { folder }); +}; + +const findByName = function (name) { + return ajax.post("/systemapi/api/m/xfile/base/all/find", { name }); +}; + +/** + * 文件夹树 + */ +const folderTree = function () { + return ajax.get("/systemapi/api/m/xfile/base/folder/tree"); +}; + +/** + * 创建文件夹 + * @param {*} data + */ +const folderCreate = function (data) { + return ajax.post("/systemapi/api/m/xfile/base/folder/create", data); +}; + +/** + * 重命名 + * @param {*} id + * @param {*} name + */ +const folderRename = function (id, name) { + return ajax.post("/systemapi/api/m/xfile/base/folder/rename", { id, name }); +}; + +/** + * 删除文件夹 + * @param {*} id + */ +const folderDelete = function (id) { + return ajax.del("/systemapi/api/m/xfile/base/folder/delete?id=" + id); +}; + +/** + * 文章分页查询 + * @param {*} data + */ +const filePageList = function (data) { + return ajax.post("/systemapi/api/m/xfile/base/file/pagelist", data); +}; + +const fileRename = function (id, name) { + return ajax.post("/systemapi/api/m/xfile/base/file/rename", { id, name }); +}; + +const fileDelete = function (id, path) { + return ajax.post("/systemapi/api/m/xfile/base/file/delete", { id, path }); +}; + +const fileMove = function (id, folderId) { + return ajax.post("/systemapi/api/m/xfile/base/file/rename", { id, folderId }); +}; + +const fileDetail = function (id) { + return ajax.get("/systemapi/api/m/xfile/base/file/detail?id=" + id); +}; + +const fileSetDelete = function (id) { + // return ajax.del("/systemapi/api/m/xfile/base/file/setdelete?id=" + id); +}; + +export default { + list, + folderTree, + folderCreate, + folderRename, + folderDelete, + filePageList, + fileRename, + fileDelete, + fileMove, + fileDetail, + fileSetDelete, + findByName, +}; diff --git a/src/api/modules/newApi.js b/src/api/modules/newApi.js new file mode 100644 index 00000000..65e8c19e --- /dev/null +++ b/src/api/modules/newApi.js @@ -0,0 +1,8 @@ +import http from "./newConfig"; + +// 课程内容 +export const getClassTree = function (sysResType) { + return http.get( + `/systemapi/xboe/type/tree-list?sysResType=${sysResType}&status=1` + ); +}; diff --git a/src/api/modules/newConfig.js b/src/api/modules/newConfig.js new file mode 100644 index 00000000..71f99b7c --- /dev/null +++ b/src/api/modules/newConfig.js @@ -0,0 +1,107 @@ +/* + * @Author: lixg lixg@dongwu-inc.com + * @Date: 2022-11-21 14:32:52 + * @LastEditors: lixg lixg@dongwu-inc.com + * @LastEditTime: 2023-01-04 13:49:54 + * @FilePath: /fe-manage/src/api/config.js + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { message } from "ant-design-vue"; +import axios from "axios"; +import router from "@/router"; +import { REFRESH_TOKEN_API } from "@/api/ThirdApi"; +import { boeRequest } from "@/api/request"; +// import { getCookie } from '../api/method' +// const Qs = require("qs"); + +// axios.defaults.headers.post["Content-Type"] = +// "application/x-www-form-urlencoded"; +export const FILE_UPLOAD_URL = process.env.VUE_APP_BASE_API + "/file/upload"; +export const BATCH_IMPORT_SCORE = + process.env.VUE_APP_BASE_API + "/admin/offcourse/batchImportScore"; +axios.defaults.withCredentials = true; +const http = axios.create({ + // baseURL: process.env.VUE_APP_BASE_API, + timeout: 1000 * 15, + // headers: { "Content-Type": "multipart/form-data" }, + headers: { "Content-Type": "application/json" }, +}); + +http.interceptors.request.use( + (config) => { + // console.log("config", config); + // const token = localStorage.getItem("token"); + // // const token = getCookie('token') + // // console.log('token', token) + // if (token) { + // config.headers.token = token; //测试1111 + // } else { + // console.log("当前请求页面无token,请执行操作!!!"); + + // // 此处测试默认配置token + // config.headers.token = + // "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC91LmJvZS5jb20iLCJpYXQiOjE2NzAxNTMxMDMsImV4cCI6MTY3MDE2MDMwMywiR2l2ZW5OYW1lIjoiYm9ldSIsInVzZXJJZCI6IjZCMDQ5RkFGLUMzMTQtN0NDRi0wRDI4LTBEMjNGNEM0MjUzMSIsInVJZCI6Ijk2NTM0MjAyNzQ5NzYwNzE2OCIsInBlcm1pc3Npb24iOiIifQ==.c937b2d3a59cbab2136fdde55fd38f06bdff041212aab0fa6741bc4be41e28a7"; + // // } + return config; + }, + (err) => { + console.log("登陆前拦截", err); + return Promise.reject(err); + } +); + +http.interceptors.response.use( + (response) => { + // console.log('response', response) + let { + data: { code, msg, show, status }, + } = response; + + if (!code && status) { + code = status; + } + if (code === 0 || code === 200) { + return response.data; + } + if (code === 1000) { + window.location.href = + process.env.VUE_APP_LOGIN_URL + + encodeURIComponent( + window.location.protocol + + process.env.VUE_APP_BOE_API_URL + + process.env.VUE_APP_BASE + + router.currentRoute.value.fullPath + ); + // TODO token过期后退出登录 清空当前用户标记 - 为了刷新页面使用 + localStorage.removeItem("refreshPage"); + return Promise.reject(response); + } + if (code === 1001) { + window.location.href = + process.env.VUE_APP_LOGIN_URL + + encodeURIComponent( + window.location.protocol + + process.env.VUE_APP_BOE_API_URL + + process.env.VUE_APP_BASE + + router.currentRoute.value.fullPath + ); + return Promise.reject(response); + } + show ? message.error(msg) : message.error("系统接口数据异常,请联系管理员"); + console.log("api %o", msg); + return Promise.reject(response); + }, + function (error) { + if (error.message == "timeout of 1ms exceeded") { + message.destroy(); + message.error("请求超时"); + } + console.log("api error %o", error); + return Promise.reject(error); + } +); + +export default http; +export function setHttpTimeout(newTimeout) { + http.defaults.timeout = newTimeout; +} diff --git a/src/api/modules/xajax.js b/src/api/modules/xajax.js new file mode 100644 index 00000000..1eb3777d --- /dev/null +++ b/src/api/modules/xajax.js @@ -0,0 +1,187 @@ +import axios from "axios"; +import qs from "qs"; +import { notification, Modal, message } from "ant-design-vue"; + +// 登录重定向 URL(可根据环境变量配置) +const ReLoginUrl = process.env.VUE_APP_LOGIN_URL || "/login"; +const TokenName = "XBOE-Access-Token"; + +// JSON 请求实例(Content-Type: application/json) +const jsonRequest = axios.create({ + headers: { "Content-Type": "application/json;charset=utf-8" }, + // baseURL: process.env.VUE_APP_BASE_API, + timeout: 60000, +}); + +// 请求拦截器 - 不再携带 token(你要求移除 getToken) +jsonRequest.interceptors.request.use( + (config) => { + // ⚠️ 已移除 getToken 相关逻辑 + // 如果后续需要手动加 token,可在此处添加: + // config.headers[TokenName] = 'your-token'; + return config; + }, + (error) => { + console.error("Request error:", error); + return Promise.reject(error); + } +); + +// 响应拦截器 +jsonRequest.interceptors.response.use( + (res) => { + const code = res.data.status || 200; + + if (code === 200) { + return res.data; + } else { + if (code === 6001 || code === 401 || code === 402) { + Modal.warning({ + title: "登录失效", + content: "您已被登出,可以取消继续留在该页面,或者重新登录", + okText: "重新登录", + onOk() { + window.location.href = ReLoginUrl; + }, + }); + } else if (code === 403) { + message.error("当前操作没有权限"); + } else if (code === 302) { + window.location.href = ReLoginUrl; + } else { + // 其他业务错误,直接返回数据供调用方处理 + return res.data; // 不 throw 错误,方便前端自定义处理 + } + } + }, + (error) => { + console.error("Response error:", error); + let msg = "未知错误,请稍后重试"; + + if (error.message === "Network Error") { + msg = "网络异常,请检查网络连接"; + } else if (error.message.includes("timeout")) { + msg = "系统接口请求超时"; + } else if (error.message.includes("Request failed with status code")) { + const statusCode = error.message.substr(-3); + msg = `系统接口 ${statusCode} 异常`; + if (statusCode === "500") { + notification.error({ + message: "服务错误", + description: "服务器内部错误,请联系管理员。", + duration: 5, + }); + } + } + + message.error(msg, 5); + return Promise.reject(error); + } +); + +// Form 请求实例(x-www-form-urlencoded) +const formRequest = axios.create({ + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + // baseURL: process.env.VUE_APP_BASE_API, + timeout: 10000, +}); + +// 请求拦截器(form) +formRequest.interceptors.request.use( + (config) => { + // 同样不带 token + return config; + }, + (error) => { + console.error("Form request error:", error); + return Promise.reject(error); + } +); + +// 响应拦截器(form) +formRequest.interceptors.response.use( + (res) => { + const code = res.data.status || 200; + + if (code === 200) { + return res.data; + } else { + if (code === 6001 || code === 401 || code === 402) { + Modal.warning({ + title: "登录已过期", + content: "登录状态无效,即将跳转至登录页", + okText: "确认", + onOk() { + window.location.href = ReLoginUrl; + }, + }); + } else if (code === 403) { + message.error("暂无权限执行此操作"); + } else if (code === 302) { + window.location.href = ReLoginUrl; + } else { + return res.data; // 返回原始数据供业务判断 + } + } + }, + (error) => { + console.error("Form response error:", error); + let msg = "请求失败"; + + if (error.message === "Network Error") { + msg = "网络连接失败"; + } else if (error.message.includes("timeout")) { + msg = "请求超时"; + } else if (error.message.includes("Request failed with status code")) { + msg = `服务端异常 (${error.message.slice(-3)})`; + } + + message.error(msg, 5); + return Promise.reject(error); + } +); + +// ================== API 方法封装 ================== + +const requestJson = jsonRequest.request; + +const get = (url, params, config) => { + const finalConfig = { ...config, params }; + return formRequest.get(url, finalConfig); +}; + +const post = (url, data, config) => { + return formRequest.post(url, qs.stringify(data), config); +}; + +const postForm = (url, data, config) => { + return formRequest.post(url, data, config); // 不 stringify,用于上传文件等 +}; + +const postJson = jsonRequest.post; +const put = (url, data, config) => { + return formRequest.put(url, qs.stringify(data), config); +}; +const putJson = jsonRequest.put; +const patch = (url, data, config) => { + return formRequest.patch(url, qs.stringify(data), config); +}; +const patchJson = jsonRequest.patch; +const del = (url, config) => { + return formRequest.delete(url, config); +}; + +// 导出统一接口 +export default { + request: jsonRequest.request, // 通用 request 方法 + requestJson, + get, + post, + postForm, + postJson, + put, + putJson, + patch, + patchJson, + del, +}; diff --git a/src/assets/images/filetypes.png b/src/assets/images/filetypes.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6c79b56dbc1a7acbb43992163cbdd5560dde3d GIT binary patch literal 113000 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�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

An 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

%^%-s10gm~c0AN#k;deJgC| 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�i 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 D46xad literal 0 HcmV?d00001 diff --git a/src/assets/scss/common.scss b/src/assets/scss/common.scss index 9fe41ec3..15ad4ecc 100644 --- a/src/assets/scss/common.scss +++ b/src/assets/scss/common.scss @@ -299,8 +299,8 @@ textarea { display: inline-block; .ant-select:not(.ant-select-customize-input) - .ant-select-selector - .ant-select-selection-search-input { + .ant-select-selector + .ant-select-selection-search-input { background-color: rgba(255, 255, 255, 0); border: none; } @@ -317,7 +317,7 @@ textarea { .ant-select-focused:not(.ant-select-disabled).ant-select:not( .ant-select-customize-input ) - .ant-select-selector { + .ant-select-selector { box-shadow: none; } @@ -561,8 +561,8 @@ textarea { } .ant-table-tbody - > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) - > td { + > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) + > td { background: #f6f9fd; } @@ -678,9 +678,9 @@ textarea { width: 100%; height: 68px; background: linear-gradient( - 0deg, - rgba(78, 166, 255, 0) 0%, - rgba(78, 166, 255, 0.2) 100% + 0deg, + rgba(78, 166, 255, 0) 0%, + rgba(78, 166, 255, 0.2) 100% ); } @@ -697,25 +697,25 @@ textarea { .ant-modal { .modalHeader { background: linear-gradient( - 180deg, - rgba(103, 64, 255, 0.2) 0%, - rgba(166, 168, 255, 0) 100% + 180deg, + rgba(103, 64, 255, 0.2) 0%, + rgba(166, 168, 255, 0) 100% ) !important; } .top { background: linear-gradient( - 180deg, - rgba(103, 64, 255, 0.2) 0%, - rgba(166, 168, 255, 0) 100% + 180deg, + rgba(103, 64, 255, 0.2) 0%, + rgba(166, 168, 255, 0) 100% ) !important; } .del_header { background: linear-gradient( - 180deg, - rgba(103, 64, 255, 0.2) 0%, - rgba(166, 168, 255, 0) 100% + 180deg, + rgba(103, 64, 255, 0.2) 0%, + rgba(166, 168, 255, 0) 100% ) !important; } } @@ -736,4 +736,33 @@ textarea { z-index: 100; } -//loading-------------------------------------------------------- +.el-select, +.el-cascader { + width: 100%; +} +////loading-------------------------------------------------------- +// +//.default-form { +// .ant-form-item { +// .ant-form-item-label { +// line-height: 40px; +// } +// .ant-form-item-control { +// .ant-input, +// .ant-select-selector { +// width: 100%; +// line-height: 40px; +// +// height: 40px; +// //border-radius: 8px; +// } +// .ant-form-item-control-input-content { +// line-height: 40px; +// } +// .ant-checkbox-group, +// .ant-radio-group { +// line-height: 40px; +// } +// } +// } +//} diff --git a/src/assets/scss/filetypes.css b/src/assets/scss/filetypes.css new file mode 100644 index 00000000..b850f76a --- /dev/null +++ b/src/assets/scss/filetypes.css @@ -0,0 +1,280 @@ +.ft { + display: block; + width: 64px; + height: 64px; + background: url(../images/filetypes.png) no-repeat 0 0; +} +.ft_small { + display: block; + width: 16px; + height: 16px; + float: left; + background: url(../images/filetypes.png) no-repeat 0 0; + margin-right: 3px; +} + +.ft_null { + background-position: 0 0px; +} +.ft_small_null { + background-position: -164px -48px; +} +.ft_folder { + background-position: 0 -124px; +} +.ft_small_folder { + background-position: -164px -172px; +} +.ft_ai { + background-position: 0 -248px; +} +.ft_small_ai { + background-position: -164px -296px; +} +.ft_aif { + background-position: 0 -372px; +} +.ft_small_aif { + background-position: -164px -420px; +} +.ft_aiff { + background-position: 0 -496px; +} +.ft_small_aiff { + background-position: -164px -544px; +} +.ft_asp { + background-position: 0 -620px; +} +.ft_small_asp { + background-position: -164px -668px; +} +.ft_apk { + background-position: 0 -744px; +} +.ft_small_apk { + background-position: -164px -792px; +} +.ft_avi { + background-position: 0 -868px; +} +.ft_small_avi { + background-position: -164px -916px; +} +.ft_bmp { + background-position: 0 -992px; +} +.ft_small_bmp { + background-position: -164px -1040px; +} +.ft_doc { + background-position: 0 -1116px; +} +.ft_small_doc { + background-position: -164px -1164px; +} +.ft_docx { + background-position: 0 -1116px; +} +.ft_small_docx { + background-position: -164px -1164px; +} +.ft_dvd { + background-position: 0 -1240px; +} +.ft_small_dvd { + background-position: -164px -1288px; +} +.ft_dwf { + background-position: 0 -1364px; +} +.ft_small_dwf { + background-position: -164px -1412px; +} +.ft_exe { + background-position: 0 -1488px; +} +.ft_small_exe { + background-position: -164px -1536px; +} +.ft_fla { + background-position: 0 -1612px; +} +.ft_small_fla { + background-position: -164px -1660px; +} +.ft_gif { + background-position: 0 -1736px; +} +.ft_small_gif { + background-position: -164px -1784px; +} +.ft_htc { + background-position: 0 -1860px; +} +.ft_small_htc { + background-position: -164px -1908px; +} +.ft_html { + background-position: 0 -1984px; +} +.ft_small_html { + background-position: -164px -2032px; +} +.ft_htm { + background-position: 0 -1984px; +} +.ft_small_htm { + background-position: -164px -2032px; +} + +.ft_ics { + background-position: 0 -2108px; +} +.ft_small_ics { + background-position: -164px -2156px; +} +.ft_ico { + background-position: 0 -2232px; +} +.ft_small_ico { + background-position: -164px -2280px; +} +.ft_java { + background-position: 0 -2357px; +} +.ft_small_java { + background-position: -164px -2404px; +} +.ft_jpg { + background-position: 0 -2480px; +} +.ft_small_jpg { + background-position: -164px -2528px; +} +.ft_png { + background-position: 0 -2480px; +} +.ft_small_png { + background-position: -164px -2528px; +} +.ft_jsp { + background-position: 0 -2604px; +} +.ft_small_jsp { + background-position: -164px -2652px; +} +.ft_mov { + background-position: 0 -2728px; +} +.ft_small_mov { + background-position: -164px -2776px; +} +.ft_mp3 { + background-position: 0 -2852px; +} +.ft_small_mp3 { + background-position: -164px -2900px; +} +.ft_mp4 { + background-position: 0 -2976px; +} +.ft_small_mp4 { + background-position: -164px -3024px; +} +.ft_pdf { + background-position: 0 -3100px; +} +.ft_small_pdf { + background-position: -164px -3148px; +} +.ft_ppt { + background-position: 0 -3224px; +} +.ft_small_ppt { + background-position: -164px -3272px; +} +.ft_pptx { + background-position: 0 -3224px; +} +.ft_small_pptx { + background-position: -164px -3272px; +} +.ft_psd { + background-position: 0 -3348px; +} +.ft_small_psd { + background-position: -164px -3396px; +} +.ft_rm { + background-position: 0 -3472px; +} +.ft_small_rm { + background-position: -164px -3520px; +} +.ft_rif { + background-position: 0 -3596px; +} +.ft_small_rif { + background-position: -164px -3644px; +} +.ft_rar { + background-position: 0 -3719px; +} +.ft_small_rar { + background-position: -164px -3768px; +} +.ft_swf { + background-position: 0 -3844px; +} +.ft_small_swf { + background-position: -164px -3892px; +} +.ft_tif { + background-position: 0 -3968px; +} +.ft_small_tif { + background-position: -164px -4016px; +} +.ft_txt { + background-position: 0 -4092px; +} +.ft_small_txt { + background-position: -164px -4140px; +} +.ft_wma { + background-position: 0 -4216px; +} +.ft_small_wma { + background-position: -164px -4264px; +} +.ft_wri { + background-position: 0 -4339px; +} +.ft_small_wri { + background-position: -164px -4387px; +} +.ft_xls { + background-position: 0 -4464px; +} +.ft_small_xls { + background-position: -164px -4512px; +} +.ft_xlsx { + background-position: 0 -4464px; +} +.ft_small_xlsx { + background-position: -164px -4512px; +} +.ft_xsl { + background-position: 0 -4587px; +} +.ft_small_xsl { + background-position: -164px -4635px; +} +.ft_zip { + background-position: 0 -4712px; +} +.ft_small_zip { + background-position: -164px -4760px; +} diff --git a/src/components/FileCloud/index.vue b/src/components/FileCloud/index.vue new file mode 100644 index 00000000..03bb3eb1 --- /dev/null +++ b/src/components/FileCloud/index.vue @@ -0,0 +1,301 @@ + + + + + + + diff --git a/src/hooks/useCourseData.js b/src/hooks/useCourseData.js new file mode 100644 index 00000000..3fa62b58 --- /dev/null +++ b/src/hooks/useCourseData.js @@ -0,0 +1,142 @@ +import { ref, reactive } from "vue"; +import { message } from "ant-design-vue"; + +/** + * 课程数据管理hook + * @returns + */ +export function useCourseData() { + // 课程元数据 + const courseMetadata = reactive({ + courseName: "", + createTime: "", + }); + + // 课程列表数据 + const courseList = ref([ + { + title: "课程1", + data: [ + { key: "1-1", name: "视频课件名称", type: "视频" }, + { key: "1-2", name: "音频课件名称", type: "音频" }, + { key: "1-3", name: "文档课件名称", type: "文档" }, + ], + }, + { + title: "课程2", + data: [ + { key: "2-1", name: "图文课件名称", type: "图文" }, + { key: "2-2", name: "外部链接", type: "链接" }, + ], + }, + { + title: "课程3", + data: [ + { key: "3-1", name: "SCORM", type: "SCORM" }, + { key: "3-2", name: "考试名称", type: "考试" }, + { key: "3-3", name: "自定义考试名称", type: "考试" }, + { key: "3-4", name: "作业名称", type: "作业" }, + ], + }, + ]); + + // 课程操作映射 + const courseOperations = { + addVideo: (index) => { + message.error("功能开发中"); + console.log("添加视频功能调用,索引:", index); + if (index !== undefined && courseList.value[index]) { + courseList.value[index].title = "课程4"; + } + }, + addAudio: () => { + console.log("添加音频功能调用"); + }, + addDocument: () => { + console.log("添加文档功能调用"); + }, + addImageText: () => { + console.log("添加图文功能调用"); + }, + addExternalLink: () => { + console.log("添加外部链接功能调用"); + }, + addScorm: () => { + console.log("添加SCORM功能调用"); + }, + addExam: () => { + console.log("添加考试功能调用"); + }, + addHomework: () => { + console.log("添加作业功能调用"); + }, + addAssessment: () => { + console.log("添加评估功能调用"); + }, + }; + + // 执行课程操作 + const executeCourseOperation = (operationName, data) => { + if (courseOperations[operationName]) { + courseOperations[operationName](data); + } else { + console.warn(`未找到操作: ${operationName}`); + } + }; + + // 课程操作按钮 + const courseActionButtons = [ + { + label: "添加视频", + icon: "", + fun: "addVideo", + }, + { + label: "添加音频", + icon: "", + fun: "addAudio", + }, + { + label: "添加文档", + icon: "", + fun: "addDocument", + }, + { + label: "添加图文", + icon: "", + fun: "addImageText", + }, + { + label: "外部链接", + icon: "", + fun: "addExternalLink", + }, + { + label: "SCORM", + icon: "", + fun: "addScorm", + }, + { + label: "添加考试", + icon: "", + fun: "addExam", + }, + { + label: "添加作业", + icon: "", + fun: "addHomework", + }, + { + label: "添加评估", + icon: "", + fun: "addAssessment", + }, + ]; + + return { + courseMetadata, + courseList, + courseActionButtons, + executeCourseOperation + }; +} \ No newline at end of file diff --git a/src/hooks/useCourseForm.js b/src/hooks/useCourseForm.js new file mode 100644 index 00000000..85f80bb8 --- /dev/null +++ b/src/hooks/useCourseForm.js @@ -0,0 +1,50 @@ +import { reactive, ref } from "vue"; + +/** + * 课程表单相关hook + * @returns + */ +export function useCourseForm() { + // 表单相关 + const formRef = ref(); + const formState = reactive({ + courseName: "", // 课程名称 + courseCategory: [], // 课程分类 + resourceBelong: undefined, // 资源归属 + lecturer: undefined, // 授课教师 + targetGroup: "", // 目标人群 + courseTags: [], // 课程标签 + audience: undefined, // 受众 + visibility: "Apple", // 可见性 + coverIntro: "", // 封面介绍 + courseValue: "", // 课程价值 + courseIntro: "", // 课程简介 + }); + + // 可见性选项 + const visibilityOptions = [ + { label: "PC端可见", value: "Apple" }, + { label: "移动端可见", value: "Pear" }, + { label: "多端可见", value: "Orange", disabled: false }, + ]; + + // 表单重置 + const resetForm = (courseCoverurl, fileList) => { + if (formRef.value) { + formRef.value.resetFields(); + } + if (courseCoverurl) { + courseCoverurl.value = ""; + } + if (fileList) { + fileList.value = []; + } + }; + + return { + formRef, + formState, + visibilityOptions, + resetForm + }; +} \ No newline at end of file diff --git a/src/hooks/useUpload.js b/src/hooks/useUpload.js new file mode 100644 index 00000000..555b8af7 --- /dev/null +++ b/src/hooks/useUpload.js @@ -0,0 +1,65 @@ +import { ref } from "vue"; +import { ElMessage } from "element-plus"; +import { Loading, Plus } from "@element-plus/icons-vue"; + +/** + * 文件上传相关hook + * @returns + */ +export function useUpload() { + // 上传相关 + const fileList = ref([]); + const loading = ref(false); + const courseCoverurl = ref(""); + + // 获取图片base64 + const getBase64 = (img, callback) => { + const reader = new FileReader(); + reader.addEventListener("load", () => callback(reader.result)); + reader.readAsDataURL(img); + }; + + // 上传状态变化处理 + const handleChange = (info) => { + if (info.file.status === "uploading") { + loading.value = true; + return; + } + if (info.file.status === "done") { + // Get this url from response in real world. + getBase64(info.file.originFileObj, (base64Url) => { + courseCoverurl.value = base64Url; + loading.value = false; + }); + } + if (info.file.status === "error") { + loading.value = false; + ElMessage.error("upload error"); + } + }; + + // 上传前检查 + const beforeUpload = (file) => { + const isJpgOrPng = file.type === "image/jpeg" || file.type === "image/png"; + if (!isJpgOrPng) { + ElMessage.error("You can only upload JPG file!"); + } + const isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + ElMessage.error("Image must smaller than 2MB!"); + } + return isJpgOrPng && isLt2M; + }; + + return { + // 数据 + fileList, + loading, + courseCoverurl, + + // 方法 + getBase64, + handleChange, + beforeUpload + }; +} \ No newline at end of file diff --git a/src/main.js b/src/main.js index 0ebeba8f..00db50f7 100644 --- a/src/main.js +++ b/src/main.js @@ -6,28 +6,33 @@ * @FilePath: /fe-manage/src/main.js * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ -import { createApp } from 'vue' -import App from './App.vue' -import router from './router' -import store from './store' +import { createApp } from "vue"; +import App from "./App.vue"; +import router from "./router"; +import store from "./store"; +import { message } from "ant-design-vue"; // import ElementPlus from 'element-plus' -import 'element-plus/dist/index.css' +import "element-plus/dist/index.css"; // import zhCn from 'element-plus/es/locale/lang/zh-cn' -import "@/assets/scss/common.scss" -import Antd from 'ant-design-vue'; -import 'ant-design-vue/dist/antd.css'; -import {request} from "@/api/request"; -import {USER_INFO, USER_PERMISSION, VALIDATE_TOKEN} from "@/api/apis"; +import "@/assets/scss/common.scss"; +import Antd from "ant-design-vue"; +import "ant-design-vue/dist/antd.css"; +import { request } from "@/api/request"; +import { USER_INFO, USER_PERMISSION, VALIDATE_TOKEN } from "@/api/apis"; import * as api1 from "@/api/index1"; -import {getCookieForName} from "@/api/method"; -import components from './components' -import axios from 'axios' +import { getCookieForName } from "@/api/method"; +import components from "./components"; +import axios from "axios"; import Cookies from "vue-cookies"; // axios.defaults.withCredentials = true; // import zhCN from 'ant-design-vue/es/locale/zh_CN'; -const app = createApp(App) +const app = createApp(App); //全局注册 -app.use(components) +app.use(components); +message.config({ + top: "250px", +}); + // 清理控制台warn信息 app.config.warnHandler = () => null; // app.use(ElementPlus, { @@ -35,102 +40,112 @@ app.config.warnHandler = () => null; // }) router.beforeEach(async (to, from, next) => { - if (!getCookieForName("token")) { - window.location.href = process.env.VUE_APP_LOGIN_URL + encodeURIComponent(window.location.protocol + process.env.VUE_APP_BOE_API_URL + process.env.VUE_APP_BASE + router.currentRoute.value.fullPath) - return + if (!getCookieForName("token")) { + window.location.href = + process.env.VUE_APP_LOGIN_URL + + encodeURIComponent( + window.location.protocol + + process.env.VUE_APP_BOE_API_URL + + process.env.VUE_APP_BASE + + router.currentRoute.value.fullPath + ); + return; + } + //第一次进入 没有用户信息 + if (!store.state.userInfo.userId) { + try { + await request(VALIDATE_TOKEN); + await getUserInfo(); + await getUserPermission(); + init(); + } catch (e) { + console.log("token失效 跳转到登录页"); } - //第一次进入 没有用户信息 - if(!store.state.userInfo.userId){ - try{ - await request(VALIDATE_TOKEN) - await getUserInfo() - await getUserPermission(); - init() - }catch (e){ - console.log('token失效 跳转到登录页') - } - } - next(); -}) + } + next(); +}); app.use(Antd); app.use(router); app.use(store); -app.mount('#app'); +app.mount("#app"); async function getUserPermission() { - return request(USER_PERMISSION, {permissionType: 'PAGE'}).then(res => { - store.commit("SET_PERMISSION", res.data?.map(s => s.url)); - }) + return request(USER_PERMISSION, { permissionType: "PAGE" }).then((res) => { + store.commit( + "SET_PERMISSION", + res.data?.map((s) => s.url) + ); + }); } async function getUserInfo() { - const userInfo = await request(USER_INFO); - store.commit("SET_USER", userInfo.data); - axios({ - method: "get", - url: "/userbasic/orgHrbp/reportOrgs", - params: { - workNum:userInfo.data.userNo - }, - headers: { - "XBOR-Access-token": Cookies.get("token"), - }, - }).then(res=>{ - store.commit("SET_USER_ORGS", res.data); - }) + const userInfo = await request(USER_INFO); + store.commit("SET_USER", userInfo.data); + axios({ + method: "get", + url: "/userbasic/orgHrbp/reportOrgs", + params: { + workNum: userInfo.data.userNo, + }, + headers: { + "XBOR-Access-token": Cookies.get("token"), + }, + }).then((res) => { + store.commit("SET_USER_ORGS", res.data); + }); } async function initDict(key) { - const list = await getDictList(key); - store.commit("SET_DICT", {key, data: list}); + const list = await getDictList(key); + store.commit("SET_DICT", { key, data: list }); } -const getDictList = (param) => api1.getDictTree({code: param,}).then((res) => res.data.data); +const getDictList = (param) => + api1.getDictTree({ code: param }).then((res) => res.data.data); const initDictTree = (key) => { - axios({ - method: "get", - url: "/systemapi/xboe/type/tree-list", - params: { - sysResType: "1", - status: "1", - }, - headers: { - "XBOR-Access-token": Cookies.get("token"), - }, - }).then( - (res) => { - console.log(res.data.result,'课程分类接口') - store.commit("SET_DICT", {key, data: res.data.result}); - //转化为map放到状态中 - let map=new Map(); - res.data.result.forEach(item=>{ - map.set(item.id, item.name); - if(item.children && item.children!=''){ - item.children.forEach(child=>{ - map.set(child.id, child.name); - if(child.children && child.children!=''){ - child.children.forEach(last=>{ - map.set(last.id, last.name); - }) - } - }) - } + axios({ + method: "get", + url: "/systemapi/xboe/type/tree-list", + params: { + sysResType: "1", + status: "1", + }, + headers: { + "XBOR-Access-token": Cookies.get("token"), + }, + }).then( + (res) => { + console.log(res.data.result, "课程分类接口"); + store.commit("SET_DICT", { key, data: res.data.result }); + //转化为map放到状态中 + let map = new Map(); + res.data.result.forEach((item) => { + map.set(item.id, item.name); + if (item.children && item.children != "") { + item.children.forEach((child) => { + map.set(child.id, child.name); + if (child.children && child.children != "") { + child.children.forEach((last) => { + map.set(last.id, last.name); + }); + } }); - store.commit("SET_SYSTYPEMAP", map); - }, - (err) => { - message.error(err); } - ); -} + }); + store.commit("SET_SYSTYPEMAP", map); + }, + (err) => { + message.error(err); + } + ); +}; async function init() { - - // initDict("content_type"); //内容分类 - initDictTree("content_type"); //内容分类,换成type/tree-list接口 - initDict("project_level"); //项目级别 - initDict("project_sys"); //培训分类 - initDict("project_pic"); //项目封面 - initDict("router_pic"); //路径图封面 - initDict("course_pic"); //课程封面 - initDict("job_type"); //岗位 - initDict("band"); //band - initDict("examine_cover") //讲师认证封面图 - initDict("project_number") //项目编号 -} \ No newline at end of file + // initDict("content_type"); //内容分类 + initDictTree("content_type"); //内容分类,换成type/tree-list接口 + initDict("project_level"); //项目级别 + initDict("project_sys"); //培训分类 + initDict("project_pic"); //项目封面 + initDict("router_pic"); //路径图封面 + initDict("course_pic"); //课程封面 + initDict("job_type"); //岗位 + initDict("band"); //band + initDict("examine_cover"); //讲师认证封面图 + initDict("project_number"); //项目编号 +} diff --git a/src/views/courselibrary/OnlineManage.vue b/src/views/courselibrary/OnlineManage.vue index 3d354710..0f90fa76 100644 --- a/src/views/courselibrary/OnlineManage.vue +++ b/src/views/courselibrary/OnlineManage.vue @@ -7,118 +7,122 @@

培训时间:
-
-
{{ showSecondFilter ? '收起' : '展开' }} ▼
+
+ {{ showSecondFilter ? "收起" : "展开" }} ▼ +
-
+
-
+
-
+
-
+
-
+
@@ -163,22 +167,28 @@
@@ -186,15 +196,15 @@
@@ -211,330 +221,330 @@ export default { // 控制第二排搜索项的显隐 showSecondFilter: false, searchParam: { - name: '', + name: "", category: undefined, - teacher: '', + teacher: "", valueDate: [], reviewStatus: undefined, publishStatus: undefined, enableStatus: undefined, // 新增:启用状态 - isPublic: undefined, // 新增:是否公开课 + isPublic: undefined, // 新增:是否公开课 resourceOwner: undefined, // 新增:资源归属 createSource: undefined, // 新增:创建来源 pageNo: 1, - pageSize: 10 + pageSize: 10, }, tableData: [ { - key: '1', - name: '《少走弯路的职场法则》-2021公开课', - teacher: '张三', + key: "1", + name: "《少走弯路的职场法则》-2021公开课", + teacher: "张三", courseDuration: 10, studyDuration: 10, studentCount: 1, rating: 5.0, - reviewStatus: '-', - publishStatus: '未发布' + reviewStatus: "-", + publishStatus: "未发布", }, { - key: '2', - name: 'PDCA循环工作法', - teacher: '张三', + key: "2", + name: "PDCA循环工作法", + teacher: "张三", courseDuration: 20, studyDuration: 20, studentCount: 2, rating: 4.0, - reviewStatus: '审核中', - publishStatus: '未发布' + reviewStatus: "审核中", + publishStatus: "未发布", }, { - key: '3', - name: 'BOE端到端的流程体系', - teacher: '张三', + key: "3", + name: "BOE端到端的流程体系", + teacher: "张三", courseDuration: 30, studyDuration: 30, studentCount: 3, rating: 3.0, - reviewStatus: '审核驳回', - publishStatus: '未发布' + reviewStatus: "审核驳回", + publishStatus: "未发布", }, { - key: '4', - name: '结构性思维与表达-2023年公开课', - teacher: '张三', + key: "4", + name: "结构性思维与表达-2023年公开课", + teacher: "张三", courseDuration: 40, studyDuration: 40, studentCount: 4, rating: 5.0, - reviewStatus: '审核通过', - publishStatus: '已发布' + reviewStatus: "审核通过", + publishStatus: "已发布", }, { - key: '5', - name: '标准化异常处理流程', - teacher: '张三', + key: "5", + name: "标准化异常处理流程", + teacher: "张三", courseDuration: 10, studyDuration: 10, studentCount: 6, rating: 4.0, - reviewStatus: '审核通过', - publishStatus: '已发布' + reviewStatus: "审核通过", + publishStatus: "已发布", }, { - key: '6', - name: '企业经营法则', - teacher: '张三', + key: "6", + name: "企业经营法则", + teacher: "张三", courseDuration: 20, studyDuration: 20, studentCount: 6, rating: 3.0, - reviewStatus: '审核通过', - publishStatus: '已发布' + reviewStatus: "审核通过", + publishStatus: "已发布", }, { - key: '7', - name: '京东方战略实践学习', - teacher: '张三', + key: "7", + name: "京东方战略实践学习", + teacher: "张三", courseDuration: 30, studyDuration: 30, studentCount: 7, rating: 5.0, - reviewStatus: '审核通过', - publishStatus: '已发布' + reviewStatus: "审核通过", + publishStatus: "已发布", }, { - key: '8', - name: '市场营销精要之《如何在新环境下做好新产品整合营销上市》', - teacher: '张三', + key: "8", + name: "市场营销精要之《如何在新环境下做好新产品整合营销上市》", + teacher: "张三", courseDuration: 40, studyDuration: 40, studentCount: 89, rating: 4.0, - reviewStatus: '审核中', - publishStatus: '已发布' + reviewStatus: "审核中", + publishStatus: "已发布", }, { - key: '9', - name: '2024热点论坛第三期:国际格局的基本结构及其相关问题', - teacher: '张三', + key: "9", + name: "2024热点论坛第三期:国际格局的基本结构及其相关问题", + teacher: "张三", courseDuration: 10, studyDuration: 10, studentCount: 1, rating: 3.0, - reviewStatus: '审核中', - publishStatus: '已发布' + reviewStatus: "审核中", + publishStatus: "已发布", }, { - key: '10', - name: '2024热点论坛2-《新“人机”时代的生存与发展》', - teacher: '张三', + key: "10", + name: "2024热点论坛2-《新“人机”时代的生存与发展》", + teacher: "张三", courseDuration: 20, studyDuration: 20, studentCount: 2, rating: 5.0, - reviewStatus: '审核驳回', - publishStatus: '已发布' - } + reviewStatus: "审核驳回", + publishStatus: "已发布", + }, ], tableDataTotal: 100, tableLoading: false, categoryList: [ - { value: 'all', label: '全部课程分类' }, - { value: 'tech', label: '技术类' }, - { value: 'manage', label: '管理类' }, - { value: 'sale', label: '销售类' } + { value: "all", label: "全部课程分类" }, + { value: "tech", label: "技术类" }, + { value: "manage", label: "管理类" }, + { value: "sale", label: "销售类" }, ], reviewStatusList: [ - { value: 'all', label: '全部审核状态' }, - { value: 'pending', label: '审核中' }, - { value: 'approved', label: '审核通过' }, - { value: 'rejected', label: '审核驳回' } + { value: "all", label: "全部审核状态" }, + { value: "pending", label: "审核中" }, + { value: "approved", label: "审核通过" }, + { value: "rejected", label: "审核驳回" }, ], publishStatusList: [ - { value: 'all', label: '全部发布状态' }, - { value: 'draft', label: '未发布' }, - { value: 'published', label: '已发布' } + { value: "all", label: "全部发布状态" }, + { value: "draft", label: "未发布" }, + { value: "published", label: "已发布" }, ], // 新增的下拉选项列表 enableStatusList: [ - { value: 'all', label: '全部启用状态' }, - { value: 'enabled', label: '已启用' }, - { value: 'disabled', label: '已禁用' } + { value: "all", label: "全部启用状态" }, + { value: "enabled", label: "已启用" }, + { value: "disabled", label: "已禁用" }, ], isPublicList: [ - { value: 'all', label: '是否公开课' }, - { value: 'yes', label: '是' }, - { value: 'no', label: '否' } + { value: "all", label: "是否公开课" }, + { value: "yes", label: "是" }, + { value: "no", label: "否" }, ], resourceOwnerList: [ - { value: 'all', label: '全部资源归属' }, - { value: 'self', label: '自有' }, - { value: 'third', label: '第三方' } + { value: "all", label: "全部资源归属" }, + { value: "self", label: "自有" }, + { value: "third", label: "第三方" }, ], createSourceList: [ - { value: 'all', label: '全部创建来源' }, - { value: 'manual', label: '手动创建' }, - { value: 'import', label: '批量导入' }, - { value: 'api', label: 'API创建' } + { value: "all", label: "全部创建来源" }, + { value: "manual", label: "手动创建" }, + { value: "import", label: "批量导入" }, + { value: "api", label: "API创建" }, ], columns: [ { - title: '课程名称', - dataIndex: 'name', - key: 'name', - className: 'h', + title: "课程名称", + dataIndex: "name", + key: "name", + className: "h", ellipsis: true, width: 200, sorter: true, - fixed: "left" + fixed: "left", }, { - title: '课程分类', - dataIndex: 'teacher', - className: 'h', - key: 'teacher', - align: 'center', + title: "课程分类", + dataIndex: "teacher", + className: "h", + key: "teacher", + align: "center", - sorter: true + sorter: true, }, { - title: '授课教师', - dataIndex: 'teacher', - className: 'h', - key: 'teacher', - align: 'center', + title: "授课教师", + dataIndex: "teacher", + className: "h", + key: "teacher", + align: "center", - sorter: true + sorter: true, }, { - title: '课程时长', - dataIndex: 'courseDuration', - className: 'h', - key: 'courseDuration', - align: 'center', + title: "课程时长", + dataIndex: "courseDuration", + className: "h", + key: "courseDuration", + align: "center", - sorter: true + sorter: true, }, { - title: '学习时长', - dataIndex: 'studyDuration', - className: 'h', - key: 'studyDuration', - align: 'center', + title: "学习时长", + dataIndex: "studyDuration", + className: "h", + key: "studyDuration", + align: "center", - sorter: true + sorter: true, }, { - title: '学习人数', - dataIndex: 'studentCount', - className: 'h', - key: 'studentCount', - align: 'center', + title: "学习人数", + dataIndex: "studentCount", + className: "h", + key: "studentCount", + align: "center", - sorter: true + sorter: true, }, { - title: '课程评分', - dataIndex: 'rating', - className: 'h', - key: 'rating', - align: 'center', + title: "课程评分", + dataIndex: "rating", + className: "h", + key: "rating", + align: "center", - sorter: true + sorter: true, }, { - title: '审核状态', - dataIndex: 'reviewStatus', - className: 'h', - key: 'reviewStatus', - align: 'center', + title: "审核状态", + dataIndex: "reviewStatus", + className: "h", + key: "reviewStatus", + align: "center", - sorter: true + sorter: true, }, { - title: '发布状态', - dataIndex: 'publishStatus', - className: 'h', - key: 'publishStatus', - align: 'center', + title: "发布状态", + dataIndex: "publishStatus", + className: "h", + key: "publishStatus", + align: "center", - sorter: true + sorter: true, }, { - title: '启停用状态', - dataIndex: 'publishStatus', - className: 'h', - key: 'publishStatus', - align: 'center', + title: "启停用状态", + dataIndex: "publishStatus", + className: "h", + key: "publishStatus", + align: "center", - sorter: true + sorter: true, }, { - title: '排序值', - dataIndex: 'publishStatus', - className: 'h', - key: 'publishStatus', - align: 'center', + title: "排序值", + dataIndex: "publishStatus", + className: "h", + key: "publishStatus", + align: "center", - sorter: true + sorter: true, }, { - title: '公开课', - dataIndex: 'publishStatus', - className: 'h', - key: 'publishStatus', - align: 'center', + title: "公开课", + dataIndex: "publishStatus", + className: "h", + key: "publishStatus", + align: "center", - sorter: true + sorter: true, }, { - title: '资源归属', - dataIndex: 'publishStatus', - className: 'h', - key: 'publishStatus', - align: 'center', + title: "资源归属", + dataIndex: "publishStatus", + className: "h", + key: "publishStatus", + align: "center", - sorter: true + sorter: true, }, { - title: '创建人', - dataIndex: 'publishStatus', - className: 'h', - key: 'publishStatus', - align: 'center', + title: "创建人", + dataIndex: "publishStatus", + className: "h", + key: "publishStatus", + align: "center", - sorter: true + sorter: true, }, { - title: '创建来源', - dataIndex: 'publishStatus', - className: 'h', - key: 'publishStatus', - align: 'center', + title: "创建来源", + dataIndex: "publishStatus", + className: "h", + key: "publishStatus", + align: "center", - sorter: true + sorter: true, }, { - title: '创建时间', - dataIndex: 'publishStatus', - className: 'h', - key: 'publishStatus', - align: 'center', + title: "创建时间", + dataIndex: "publishStatus", + className: "h", + key: "publishStatus", + align: "center", - sorter: true + sorter: true, }, { - title: '操作', - dataIndex: 'operation', - key: 'operation', - className: 'h', - align: 'right', - fixed: 'right', + title: "操作", + dataIndex: "operation", + key: "operation", + className: "h", + align: "right", + fixed: "right", width: 200, - scopedSlots: { customRender: 'action' }, - sorter: false + scopedSlots: { customRender: "action" }, + sorter: false, }, - ] + ], }; }, methods: { @@ -546,13 +556,17 @@ export default { searchSubmit() {}, searchReset() {}, showModal1() {}, - handleEdit() {}, + handleEdit() { + this.$router.push({ + path: "/ProfessionalMode", + }); + }, editMaterial() {}, grantPermission() {}, deleteRecord() {}, exportData() {}, - changePagination() {} - } + changePagination() {}, + }, }; diff --git a/src/views/courselibrary/components/createCourse.vue b/src/views/courselibrary/components/createCourse.vue new file mode 100644 index 00000000..0ec5aa05 --- /dev/null +++ b/src/views/courselibrary/components/createCourse.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/views/courselibrary/components/dragCollapse.vue b/src/views/courselibrary/components/dragCollapse.vue new file mode 100644 index 00000000..33d8be05 --- /dev/null +++ b/src/views/courselibrary/components/dragCollapse.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/views/courselibrary/components/dragTable.vue b/src/views/courselibrary/components/dragTable.vue new file mode 100644 index 00000000..d901d690 --- /dev/null +++ b/src/views/courselibrary/components/dragTable.vue @@ -0,0 +1,508 @@ + + + + + diff --git a/src/views/courselibrary/components/professionalmode.vue b/src/views/courselibrary/components/professionalmode.vue new file mode 100644 index 00000000..5e3bcfdc --- /dev/null +++ b/src/views/courselibrary/components/professionalmode.vue @@ -0,0 +1,410 @@ + + + + +