diff --git a/package-lock.json b/package-lock.json
index 379ccd42..fc6622f3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,8 +15,10 @@
"element-plus": "^2.2.17",
"jquery": "^3.6.1",
"qs": "^6.11.0",
+ "sortablejs": "^1.15.0",
"vue": "^3.2.13",
"vue-router": "^4.0.3",
+ "vuedraggable": "^4.1.0",
"vuex": "^4.0.0"
},
"devDependencies": {
@@ -9522,6 +9524,11 @@
"websocket-driver": "^0.7.4"
}
},
+ "node_modules/sortablejs": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz",
+ "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w=="
+ },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
@@ -10447,6 +10454,22 @@
"node": ">=0.10.0"
}
},
+ "node_modules/vuedraggable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz",
+ "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
+ "dependencies": {
+ "sortablejs": "1.14.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.1"
+ }
+ },
+ "node_modules/vuedraggable/node_modules/sortablejs": {
+ "version": "1.14.0",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz",
+ "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w=="
+ },
"node_modules/vuex": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz",
@@ -14906,9 +14929,9 @@
}
},
"dayjs": {
- "version": "1.11.6",
- "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.6.tgz",
- "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ=="
+ "version": "1.11.5",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz",
+ "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
},
"debug": {
"version": "4.3.4",
diff --git a/src/api/indexCourse.js b/src/api/indexCourse.js
index 3cf89f13..e393ab50 100644
--- a/src/api/indexCourse.js
+++ b/src/api/indexCourse.js
@@ -3,19 +3,52 @@ import http from "./config";
/**
* 1
*/
+//添加课程学员
+export const addStudent = (obj) =>
+ http.post("/admin/offcourse/addStudent", obj);
//删除开课
export const deletePlan = (obj) =>
- http.delete("/admin/offcourse/deletePlan", obj);
+ http.delete(
+ "/admin/offcourse/deletePlan",
+ { params: obj },
+ {
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
+ }
+ );
+//获取面授课详情
+export const detail = (obj) =>
+ http.post("/admin/offcourse/detail", obj, {
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
+ });
+//获取面授课开课详情
+export const detailPlan = (obj) =>
+ http.post("/admin/offcourse/detailPlan", obj, {
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
+ });
//新建或编辑面授课
export const edit = (obj) => http.post("/admin/offcourse/edit", obj);
//新建或编辑面授课开课
export const editPlan = (obj) => http.post("/admin/offcourse/editPlan", obj);
-//操作面授课(发布,撤回,删除)
+//课程导出
+export const exportP = (obj) => http.post("/admin/offcourse/export", obj);
+//操作面授课(发布,撤回,删除,审核,停用)
export const handle = (obj) => http.post("/admin/offcourse/handle", obj);
+//学员操作-支持批量
+export const handleStudent = (obj) =>
+ http.post("/admin/offcourse/handleStudent", obj);
//获取面授课列表
export const list = (obj) => http.post("/admin/offcourse/list", obj);
+//获取面授课已审核列表
+export const listReview = (obj) =>
+ http.post("/admin/offcourse/listReview", obj);
//面授课开课列表
export const planList = (obj) => http.post("/admin/offcourse/planList", obj);
+//学员导出
+export const studentExport = (obj) =>
+ http.post("/admin/offcourse/studentExport", obj);
//获取学员列表
export const studentList = (obj) =>
http.post("/admin/offcourse/studentList", obj);
+//学习记录列表
+export const studyRecordList = (obj) =>
+ http.post("/admin/offcourse/studyRecordList", obj);
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 319cf1ec..b21c2078 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -84,3 +84,36 @@ export function filterCommon(arr, key) {
});
return newData;
}
+
+export function getdateToTime(date) {
+ let now = new Date(parseInt(date)),
+ y = now.getFullYear(),
+ m = now.getMonth() + 1,
+ d = now.getDate(),
+ hh = now.getHours(),
+ mm = now.getMinutes();
+ return `${y}-${m < 10 ? "0" + m : m}-${d < 10 ? "0" + d : d} ${hh}:${mm}`;
+}
+
+//计算两个时间之间的时间差 多少天时分秒
+export function intervalTime(startTime) {
+ const curTime = new Date().getTime(); //计算当前时间戳
+ const date3 = curTime - startTime; //时间差的毫秒数
+ //计算出相差天数
+ const days = Math.floor(date3 / (24 * 3600 * 1000));
+ //计算出小时数
+ const leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数
+ const hours = Math.floor(leave1 / (3600 * 1000));
+ //计算相差分钟数
+ const leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数
+ const minutes = Math.floor(leave2 / (60 * 1000));
+ //计算相差秒数
+ const leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
+ const seconds = Math.round(leave3 / 1000);
+ return {
+ days,
+ hours,
+ minutes,
+ seconds,
+ };
+}
diff --git a/src/views/courselibrary/CoursewareManage.vue b/src/views/courselibrary/CoursewareManage.vue
index 2e46199b..7aa81834 100644
--- a/src/views/courselibrary/CoursewareManage.vue
+++ b/src/views/courselibrary/CoursewareManage.vue
@@ -7,9 +7,9 @@
+
+ 支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip
+
@@ -690,7 +688,387 @@
expandRowByClick="true"
@expand="expandTable"
:pagination="false"
- />
+ >
+
+
+
+ {
+ handleStart(record, String(record.courseform));
+ }
+ "
+ >
+ 开课
+
+ {
+ if (String(record.courseform) === '1') {
+ return;
+ }
+ if (String(record.courseform) === ('1' || '线上')) {
+ om_1 = true;
+ ft_1 = false;
+ } else if (String(record.courseform) === ('2' || '面授')) {
+ om_1 = true;
+ ft_1 = true;
+ }
+ }
+ "
+ >
+ 管理
+
+ {
+ handleCopy(record, String(record.courseform));
+ }
+ "
+ >
+ 复制
+
+
+
+
+ {
+ if (String(record.courseform) === '1') {
+ return;
+ }
+ corpowerlistvisible = true;
+ }
+ "
+ >
+ 权限名单
+
+ {
+ if (String(record.courseform) === '1') {
+ return;
+ }
+ ownpowervisible = true;
+ }
+ "
+ >
+ 归属权
+
+ 查看权
+ 管理权
+
+
+
+ 授权
+
+
+
+
+ {
+ handleStop(record, String(record.courseform));
+ }
+ "
+ >
+ 停用
+
+ {
+ handleOpen(record, String(record.courseform));
+ }
+ "
+ >
+ 启用
+
+
+
+
+
+
+
+ {
+ handleRejectExit(record, String(record.courseform));
+ }
+ "
+ >
+ 撤回
+
+ {
+ handleCopy(record, String(record.courseform));
+ }
+ "
+ >
+ 复制
+
+
+
+
+ {
+ if (String(record.courseform) === '1') {
+ return;
+ }
+ corpowerlistvisible = true;
+ }
+ "
+ >
+ 权限名单
+
+ {
+ if (String(record.courseform) === '1') {
+ return;
+ }
+ ownpowervisible = true;
+ }
+ "
+ >
+ 归属权
+
+ 查看权
+ 管理权
+
+
+
+ 授权
+
+
+
+
+
+
+
+ {
+ handleEdit(record, String(record.courseform));
+ }
+ "
+ >
+ 编辑
+
+ {
+ handleCopy(record, String(record.courseform));
+ }
+ "
+ >
+ 复制
+
+
+
+
+ {
+ if (String(record.courseform) === '1') {
+ return;
+ }
+ corpowerlistvisible = true;
+ }
+ "
+ >
+ 权限名单
+
+ {
+ if (String(record.courseform) === '1') {
+ return;
+ }
+ ownpowervisible = true;
+ }
+ "
+ >
+ 归属权
+
+ 查看权
+ 管理权
+
+
+
+ 授权
+
+
+
+ {
+ handleDelete(record, String(record.courseform));
+ }
+ "
+ >
+ 删除
+
+
+
+
+
+ {
+ handleEdit(record, String(record.courseform));
+ }
+ "
+ >
+ 编辑
+
+ {
+ handleCopy(record, String(record.courseform));
+ }
+ "
+ >
+ 复制
+
+
+
+
+ {
+ if (String(record.courseform) === '1') {
+ return;
+ }
+ corpowerlistvisible = true;
+ }
+ "
+ >
+ 权限名单
+
+ {
+ if (String(record.courseform) === '1') {
+ return;
+ }
+ ownpowervisible = true;
+ }
+ "
+ >
+ 归属权
+
+ 查看权
+ 管理权
+
+
+
+ 授权
+
+
+
+ {
+ handleDelete(record, String(record.courseform));
+ }
+ "
+ >
+ 删除
+
+
+
+
+
状态
已通过
- 未审核
- 管理员拒绝
+
+ 未审核
+
+
+ 管理员拒绝
+
@@ -985,10 +1363,7 @@
-
+
-
+
-
+ >
+
+
+
+ {
+ QR_hs = true;
+ ftsQR_hs = true;
+ }
+ "
+ >
+ 签到
+
+ {
+ handelEditStu(record);
+ }
+ "
+ >
+ 编辑
+
+ {
+ handleOpenStu(record);
+ }
+ "
+ >
+ 管理
+
+
+
+
+ {
+ handleCopyP(record);
+ }
+ "
+ >
+ 复制
+
+ {
+ handleDeleteKaike(record);
+ }
+ "
+ >
+ 删除
+
+ {
+ QR_hs = true;
+ vipftQR_hs = true;
+ }
+ "
+ >
+ 二维码
+
+
+
+
+ 更多
+
+
+
+
+
+
+
+
- 授课教师:王雪han
+ 授课教师:王雪
@@ -1381,7 +1825,7 @@
@expand="expandTable"
:pagination="false"
/>
-
+
{
- //{ text, record, index, column }
return index + 1;
},
},
@@ -1734,6 +2181,13 @@ const columns1 = [
dataIndex: "content",
key: "1",
align: "center",
+ customRender: ({ record }) => {
+ // switch (String(record.content)) {
+ // case "0":
+ // return "未提交";
+ // }
+ return record.content;
+ },
},
{
title: "课程形式",
@@ -1741,6 +2195,14 @@ const columns1 = [
dataIndex: "courseform",
key: "2",
align: "center",
+ customRender: ({ record }) => {
+ switch (String(record.courseform)) {
+ case "1":
+ return "线上";
+ case "2":
+ return "线下";
+ }
+ },
},
{
title: " 所属项目",
@@ -1760,7 +2222,7 @@ const columns1 = [
key: "4",
align: "center",
customRender: ({ text }) => {
- return text ? text : "-";
+ return text ? text : "0";
},
},
{
@@ -1770,7 +2232,7 @@ const columns1 = [
key: "5",
align: "center",
customRender: ({ text }) => {
- return text ? text : "-";
+ return text ? text : "0";
},
},
{
@@ -1780,7 +2242,7 @@ const columns1 = [
key: "6",
align: "center",
customRender: ({ record }) => {
- switch (record.auditStatus) {
+ switch (String(record.status)) {
case "0":
return "未提交";
case "1":
@@ -1799,7 +2261,7 @@ const columns1 = [
key: "7",
align: "center",
customRender: ({ record }) => {
- switch (record.publishStatus) {
+ switch (String(record.ynpub)) {
case "0":
return "未发布";
case "1":
@@ -1824,7 +2286,7 @@ const columns1 = [
key: "9",
align: "center",
customRender: ({ text }) => {
- return text ? text : "-";
+ return text ? getdateToTime(text * 1000) : "-";
},
},
{
@@ -1834,15 +2296,23 @@ const columns1 = [
key: "10",
align: "center",
customRender: ({ text }) => {
- return text ? text : "-";
+ return text ? getdateToTime(text * 1000) : "-";
},
},
{
title: "是否停用",
width: 100,
key: "either",
- dataIndex: "ynuse",
+ dataIndex: "kkty",
align: "center",
+ customRender: ({ record }) => {
+ switch (String(record.kkty)) {
+ case "0":
+ return "停用";
+ case "1":
+ return "启用";
+ }
+ },
},
{
title: "操作",
@@ -1963,7 +2433,7 @@ const columns6 = [
width: "18%",
align: "center",
customRender: ({ text }) => {
- return text ? text : "-";
+ return text ? getdateToTime(text * 1000) : "-";
},
},
{
@@ -1973,7 +2443,7 @@ const columns6 = [
width: "18%",
align: "center",
customRender: ({ text }) => {
- return text ? text : "-";
+ return text ? getdateToTime(text * 1000) : "-";
},
},
{
@@ -2271,6 +2741,105 @@ export default defineComponent({
status: "已通过",
},
],
+ //列表表格
+ tableData5: [
+ {
+ key: "1",
+ num: 1,
+ name: "时间管理",
+ content: "领导力",
+ courseform: "线上",
+ project: "管理者进阶-腾飞班1",
+ stunum: "50",
+ grade: "5",
+ status: "未提交",
+ ynpub: "未发布",
+ creator: "管理员",
+ createtime: "2022-07-20 9:30",
+ pubtime: "2022-07-20 9:30",
+ kkty: false,
+ },
+ {
+ key: "2",
+ num: 2,
+ name: "智能制造初级课程",
+ content: "专业力",
+ courseform: "线上",
+ project: "-",
+ stunum: "200",
+ grade: "5",
+ status: "待审核",
+ ynpub: "未发布",
+ creator: "管理员",
+ createtime: "2022-07-20 9:30",
+ pubtime: "2022-07-20 9:30",
+ kkty: true,
+ },
+ {
+ key: "3",
+ num: 3,
+ name: "产业必备技能",
+ content: "专业力",
+ courseform: "线上",
+ project: "-",
+ stunum: "200",
+ grade: "5",
+ status: "已审核",
+ ynpub: "已发布",
+ creator: "管理员",
+ createtime: "2022-07-20 9:30",
+ pubtime: "2022-07-20 9:30",
+ kkty: true,
+ },
+ {
+ key: "4",
+ num: 4,
+ name: "B11入模培训",
+ content: "专业力",
+ courseform: "线上",
+ project: "-",
+ stunum: "200",
+ grade: "5",
+ status: "审核未通过",
+ ynpub: "未发布",
+ creator: "管理员",
+ createtime: "2022-07-20 9:30",
+ pubtime: "2022-07-20 9:30",
+ kkty: true,
+ },
+ {
+ key: "5",
+ num: 5,
+ name: "入职培训",
+ content: "通用力",
+ courseform: "面授",
+ project: "-",
+ stunum: "5",
+ grade: "5",
+ status: "未提交",
+ ynpub: "未发布",
+ creator: "管理员",
+ createtime: "2022-07-20 9:30",
+ pubtime: "2022-07-20 9:30",
+ kkty: true,
+ },
+ {
+ key: "6",
+ num: 6,
+ name: "入职培训",
+ content: "通用力",
+ courseform: "面授",
+ project: "-",
+ stunum: "5",
+ grade: "6",
+ status: "已审核",
+ ynpub: "已发布",
+ creator: "管理员",
+ createtime: "2022-07-20 9:30",
+ pubtime: "2022-07-20 9:30",
+ kkty: true,
+ },
+ ],
//开课
tableData6: [
{
@@ -2451,7 +3020,7 @@ export default defineComponent({
qdms_inputV3: "",
qdms_inputV4: [],
tagsOptions: [],
- qdms_inputV5: "",
+ qdms_inputV5: null,
fen_lei: null,
chang_jin: null,
tags_val: undefined,
@@ -2471,7 +3040,7 @@ export default defineComponent({
xjkkinputV1: "",
xjkkinputV2: "",
xjkkinputV3: "",
- xjkkinputV4: "",
+ xjkkinputV4: null,
//开课学员管理
xygl_inputV1: "",
//录入成绩
@@ -2504,7 +3073,7 @@ export default defineComponent({
const editorRef = shallowRef();
// 内容 HTML
const valueHtml = ref("");
- // 模拟 ajax 异步获取内容
+ // // 模拟 ajax 异步获取内容
onMounted(() => {
// setTimeout(() => {
// valueHtml.value = "模拟 Ajax 异步设置内容
";
@@ -2584,15 +3153,24 @@ export default defineComponent({
const beforeUpload2 = (file) => {
console.log(6765555);
console.log(file);
- const isJpgOrPng =
- file.type === "image/jpg" ||
- file.type === "image/jpeg" ||
- file.type === "image/png" ||
- file.type === "image/svg" ||
- file.type === "image/bmp" ||
- file.type === "image/gif";
- if (!isJpgOrPng) {
- message.error("仅支持jpg、gif、png、jpeg、svg、bmp格式!");
+ const fileType = [
+ "jpg",
+ "jpeg",
+ "png",
+ "gif",
+ "pdf",
+ "ppt",
+ "pptx",
+ "doc",
+ "docx",
+ "xls",
+ "xlsx",
+ "zip",
+ ];
+ if (!fileType.includes(file.name.split(".")[1])) {
+ message.error(
+ "仅支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip格式!"
+ );
return false;
}
@@ -2624,404 +3202,52 @@ export default defineComponent({
// 渲染列表1操作
const getTableDate = async () => {
- let datas = state.tableData1;
- // // let startTime = "";
- // // let endTime = "";
- // if (state.projectTime) {
- // // startTime = toDate(
- // // new Date(state.projectTime[0].$d).getTime() / 1000,
- // // "Y-M-D"
- // // );
- // // endTime = toDate(
- // // new Date(state.projectTime[1].$d).getTime() / 1000,
- // // "Y-M-D"
- // // );
- // }
- // let res = await list({
- // pageNo: state.currentPage1,
- // pageSize: state.pageSize1,
- // auditStatus: state.auditStatus,
- // categoryId: state.categoryId,
- // projectName: state.projectName,
- // name: state.name,
- // createName: state.createName,
- // // endTime: endTime,
- // // beginTime: startTime,
- // });
- // const { rows, total } = res.data.data;
- // state.tableDataTotal1 = total;
- // const datas = traverseArr(rows, {
- // key: "createId",
- // num: "createId",
- // name: "name",
- // content: "categoryId",
- // courseform: "",
- // project: "projectName",
- // stunum: "studentCnt",
- // grade: "score",
- // status: "auditStatus",
- // ynpub: "publishStatus",
- // creator: "createName",
- // createtime: "createTime",
- // pubtime: "publishTime",
- // kkty: "",
- // offcourseId: "offcourseId",
- // });
- datas.map((value) => {
- {
- //单层项目
- value.operation = (
-
-
- {value.status === "2" || value.status === "已审核" ? (
-
-
-
{
- handleStart(value);
- }}
- >
- 开课
-
-
-
-
{
- if (value.courseform === "线上") {
- state.om_1 = true;
- state.ft_1 = false;
- } else if (value.courseform === "面授") {
- state.om_1 = true;
- state.ft_1 = true;
- }
- }}
- >
- 管理
-
-
-
-
{
- state.delete_hs = true;
- state.copy_hs = true;
- }}
- style={{ width: "30px" }}
- >
- 复制
-
-
-
-
-
- {
- state.corpowerlistvisible = true;
- }}
- >
- 权限名单
-
- {
- state.ownpowervisible = true;
- }}
- >
- 归属权
-
-
- 查看权
-
-
- 管理权
-
-
-
-
-
-
-
- {
- if (value.courseform === "线上") {
- state.QR_hs = true;
- state.olQR_hs = true;
- } else if (value.courseform === "面授") {
- state.QR_hs = true;
- state.ftQR_hs = true;
- }
- }}
- >
- 二维码
-
- {
- console.log("点击了");
- }}
- >
- 取消
-
-
-
-
-
- ) : (
-
- )}
- {value.status === "1" || value.status === "待审核" ? (
-
-
-
{
- handleStart(value);
- }}
- >
- 开课
-
-
-
-
-
-
-
- {
- state.corpowerlistvisible = true;
- }}
- >
- 权限名单
-
- {
- state.ownpowervisible = true;
- }}
- >
- 归属权
-
-
- 查看权
-
-
- 管理权
-
-
-
-
-
-
{
- handleRejectExit(value);
- }}
- >
- 撤回
-
-
-
- ) : (
-
- )}
- {value.status === "0" || value.status === "未提交" ? (
-
-
-
{
- handleStart(value);
- }}
- >
- 开课
-
-
-
-
{
- handleEdit(value);
- }}
- >
- 编辑
-
-
-
-
{
- state.delete_hs = true;
- state.copy_hs = true;
- }}
- style={{ width: "30px" }}
- >
- 复制
-
-
-
- ) : (
-
- )}
- {value.status === "-1" || value.status === "审核未通过" ? (
-
-
-
{
- handleStart(value);
- }}
- >
- 开课
-
-
-
-
{
- handleEdit(value);
- }}
- >
- 编辑
-
-
-
-
{
- state.delete_hs = true;
- state.copy_hs = true;
- }}
- style={{ width: "30px" }}
- >
- 复制
-
-
-
-
-
- {
- state.corpowerlistvisible = true;
- }}
- >
- 权限名单
-
- {
- state.ownpowervisible = true;
- }}
- >
- 归属权
-
-
- 查看权
-
-
- 管理权
-
-
-
-
-
-
{
- handleDelete(value);
- }}
- style="margin-left:22px"
- >
- 删除
-
-
-
- ) : (
-
- )}
-
-
- );
- }
+ // let datas = state.tableData1;
+ let startTime = "";
+ let endTime = "";
+ if (state.projectTime) {
+ startTime = parseInt(
+ new Date(state.projectTime[0].$d).getTime() / 1000
+ );
+ endTime = parseInt(new Date(state.projectTime[1].$d).getTime() / 1000);
+ }
+ let res = await list({
+ pageNo: state.currentPage1,
+ pageSize: state.pageSize1,
+ auditStatus: state.auditStatus,
+ categoryId: state.categoryId,
+ projectName: state.projectName,
+ name: state.name,
+ createName: state.createName,
+ endTime: endTime,
+ beginTime: startTime,
});
- state.tableData = datas;
+ const { rows, total } = res.data.data;
+ state.tableDataTotal1 = total;
+ const datas = traverseArr(
+ rows,
+ {
+ key: "offcourseId",
+ num: "offcourseId",
+ name: "name",
+ content: "categoryId",
+ courseform: "type",
+ project: "projectName",
+ stunum: "studentCnt",
+ grade: "score",
+ status: "auditStatus",
+ ynpub: "publishStatus",
+ creator: "createName",
+ createtime: "createTime",
+ pubtime: "publishTime",
+ kkty: "status",
+ offcourseId: "offcourseId",
+ },
+ true
+ );
+ console.log("datas");
+ console.log(datas);
+ state.tableData1 = datas;
};
getTableDate();
const handelChangePage1 = (page, pageSize) => {
@@ -3043,30 +3269,34 @@ export default defineComponent({
};
//渲染学员管理操作
- const getTableDate2 = async() => {
- let data2 = state.tableData7;
- // let res = await studentList({
- // pageNo: state.currentPage3,
- // pageSize: state.pageSize3,
- // offcoursePlanId: state.offcoursePlanId,
- // name: state.xygl_inputV1,
- // });
- // const { rows, total } = res.data.data;
- // state.tableDataTotal3 = total;
- // const data2 = traverseArr(rows, {
- // key: "",
- // num: "",
- // name: "name",
- // number: "",
- // department: "",
- // postion: "",
- // band: "",
- // status: "",
- // join: "source",
- // signstatus: "",
- // evastatus: "",
- // overstatus: "",
- // });
+ const getTableDate2 = async () => {
+ // let data2 = state.tableData7;
+ let res = await studentList({
+ pageNo: state.currentPage3,
+ pageSize: state.pageSize3,
+ offcoursePlanId: state.offcoursePlanId,
+ name: state.xygl_inputV1,
+ });
+ const { rows, total } = res.data.data;
+ state.tableDataTotal3 = total;
+ const data2 = traverseArr(
+ rows,
+ {
+ key: "",
+ num: "",
+ name: "name",
+ number: "",
+ department: "",
+ postion: "",
+ band: "",
+ status: "",
+ join: "source",
+ signstatus: "",
+ evastatus: "",
+ overstatus: "",
+ },
+ true
+ );
data2.map((value) => {
{
//单层项目
@@ -3151,120 +3381,40 @@ export default defineComponent({
);
}
});
- state.tableData = data2;
+ state.tableData7 = data2;
};
- getTableDate2();
+
// 渲染开课操作
const getTableDate3 = async () => {
- let datas = state.tableData6;
- // let startTime = "";
- // if (state.selectTime) {
- // startTime = toDate(
- // new Date(state.selectTime.$d).getTime() / 1000,
- // "Y-M-D"
- // );
- // }
- // console.log(startTime);
- // let res = await planList({
- // pageNo: state.currentPage2,
- // pageSize: state.pageSize2,
- // teacher: state.kk_inputV2,
- // // createName: state.kk_inputV1,
- // // beginTime: startTime,
- // offcourseId: state.offcourseId,
- // });
- // const { rows, total } = res.data.data;
- // state.tableDataTotal2 = total;
- // const datas = traverseArr(rows, {
- // key: "offcoursePlanId",
- // num: "offcoursePlanId",
- // organization: "assessmentName",
- // address: "address",
- // starttime: "beginTime",
- // createtime: "", //?
- // });
- datas.map((value) => {
- {
- //单层项目
- value.operation = (
-
-
-
-
{
- state.QR_hs = true;
- state.ftsQR_hs = true;
- }}
- >
- 签到
-
-
{
- handelEditStu(value);
- }}
- >
- 编辑
-
-
{
- state.sm_hs = true;
- }}
- >
- 管理
-
-
-
- {
- state.delete_hs = true;
- state.copy_hs = true;
- }}
- >
- 复制
-
- {
- handleDeleteKaike(value);
- }}
- >
- 删除
-
- {
- state.QR_hs = true;
- state.vipftQR_hs = true;
- }}
- >
- 二维码
-
-
-
-
-
-
- );
- }
+ // let datas = state.tableData6;
+ let startTime = 0;
+ if (state.selectTime) {
+ startTime = parseInt(new Date(state.selectTime.$d).getTime() / 1000);
+ }
+ console.log(startTime);
+ let res = await planList({
+ pageNo: state.currentPage2,
+ pageSize: state.pageSize2,
+ teacher: state.kk_inputV2,
+ beginTime: startTime,
+ offcourseId: state.offcourseId,
});
- state.tableData = datas;
+ const { rows, total } = res.data.data;
+ state.tableDataTotal2 = total;
+ const datas = traverseArr(
+ rows,
+ {
+ key: "offcoursePlanId",
+ num: "offcoursePlanId",
+ organization: "assessmentName",
+ address: "address",
+ starttime: "beginTime",
+ createtime: "createTime",
+ },
+ true
+ );
+ state.tableData6 = datas;
};
- getTableDate3();
//渲染学员管理结业状态
const getTableDate4 = async () => {
let data2 = state.tableData7;
@@ -3289,7 +3439,7 @@ export default defineComponent({
// signstatus: "",
// evastatus: "",
// overstatus: "",
- // });
+ // },true);
data2.map((value) => {
{
//单层项目
@@ -3353,12 +3503,49 @@ export default defineComponent({
);
}
});
- state.tableData = data2;
+ state.tableData7 = data2;
};
getTableDate4();
//渲染列表是否停用
- const getTableDate5 = () => {
- let data2 = state.tableData1;
+ const getTableDate5 = async () => {
+ // let data2 = state.tableData5;
+ let data2 = [];
+ // // let startTime = "";
+ // // let endTime = "";
+ // let res = await list({
+ // pageNo: state.currentPage1,
+ // pageSize: state.pageSize1,
+ // auditStatus: state.auditStatus,
+ // categoryId: state.categoryId,
+ // projectName: state.projectName,
+ // name: state.name,
+ // createName: state.createName,
+ // // endTime: endTime,
+ // // beginTime: startTime,
+ // });
+ // const { rows, total } = res.data.data;
+ // console.log("rows333333333");
+ // console.log(rows);
+ // console.log(total);
+ // state.tableDataTotal1 = total;
+ // const data2 = traverseArr(rows, {
+ // key: "offcourseId",
+ // num: "offcourseId",
+ // name: "name",
+ // content: "categoryId",
+ // courseform: "",
+ // project: "projectName",
+ // stunum: "studentCnt",
+ // grade: "score",
+ // status: "auditStatus",
+ // ynpub: "publishStatus",
+ // creator: "createName",
+ // createtime: "createTime",
+ // pubtime: "publishTime",
+ // kkty: "",
+ // offcourseId: "offcourseId",
+ // },true);
+ // console.log(data2);
data2.map((value) => {
{
//单层项目
@@ -3388,9 +3575,10 @@ export default defineComponent({
);
}
});
- state.tableData = data2;
+ state.tableData5 = data2;
};
getTableDate5();
+
const options1 = ref([
{
value: "value1",
@@ -3484,12 +3672,22 @@ export default defineComponent({
state.fen_lei = null;
state.chang_jin = null;
state.tags_val = undefined;
- state.qdms_inputV5 = "";
+ state.qdms_inputV5 = null;
state.qdms_inputV6 = "";
state.imgList = [];
valueHtml.value = "";
};
const handlePush = () => {
+ console.log("state.imgList");
+ console.log(state.imgList);
+ let files = "";
+ if (state.imgList.length) {
+ state.imgList.forEach((item) => {
+ files += item.img + ",";
+ });
+ }
+ files = files.slice(0, files.length - 1);
+ console.log(files);
const postData = {
offcourseId: state.offcourseId, //不传代表新增
name: state.qdms_inputV1,
@@ -3498,17 +3696,19 @@ export default defineComponent({
meaning: state.qdms_inputV3,
categoryId: state.fen_lei,
sceneId: state.chang_jin,
- tips: state.tags_val,
- teacherId: state.qdms_inputV5, //?
+ tips: state.tags_val ? state.tags_val.join(",") : null,
+ teacherId: state.qdms_inputV5 ? state.qdms_inputV5 : 0, //?
intro: state.qdms_inputV6,
- attach: state.imgList.join(","),
+ attach: files,
outline: valueHtml.value,
};
+ console.log("postData");
console.log(postData);
edit(postData).then((res) => {
- console.log(787878);
- console.log(res);
- ft_exit();
+ if (res.data.code === 200) {
+ getTableDate();
+ ft_exit();
+ }
});
};
const om_exit = () => {
@@ -3535,64 +3735,83 @@ export default defineComponent({
state.xjkkinputV1 = "";
state.xjkkinputV2 = "";
state.xjkkinputV3 = "";
- state.xjkkinputV4 = "";
+ state.xjkkinputV4 = null;
state.checked1 = false;
state.checked4 = false;
};
const handleSureStu = () => {
let startTime,
- endTime = "";
+ endTime = 0;
if (state.xjkkinputV3) {
- // startTime = toDate(
- // new Date(state.xjkkinputV3[0].$d).getTime() / 1000,
- // "Y-M-D"
- // );
- // endTime = toDate(
- // new Date(state.xjkkinputV3[1].$d).getTime() / 1000,
- // "Y-M-D"
- // );
- startTime = new Date(state.xjkkinputV3[0].$d).valueOf()
- endTime =new Date(state.xjkkinputV3[1].$d).valueOf()
+ startTime = parseInt(state.xjkkinputV3[0].$d.getTime() / 1000);
+ endTime = parseInt(state.xjkkinputV3[1].$d.getTime() / 1000);
}
- // console.log('state.xjkkinputV3');
- // console.log(state.xjkkinputV3);
- // console.log(startTime);
- // console.log(new Date(state.xjkkinputV3[0].$d).valueOf());
-
const obj = {
+ offcourseId: state.offcourseId,
+ offcoursePlanId: state.offcoursePlanId, //开课ID,不传代表新增
+
address: state.xjkkinputV2,
- applyFlag: state.checked1,
- attach: state.filesList.join(","),
+ applyFlag: state.checked1 ? 1 : 0,
+ attach: state.filesList.length ? state.filesList.join(",") : "",
beginTime: startTime,
completeType: state.xjkkradioV2,
endTime: endTime,
- evalFlag: state.checked4,
+ evalFlag: state.checked4 ? 1 : 0,
name: state.xjkkinputV1,
- offcourseId: state.offcourseId,
- offcoursePlanId: state.offcoursePlanId, //开课ID,不传代表新增
- signFlag: state.xjkkradioV1,
- signWordFlag: state.xjkkradioV1,
- teacherId: 1,
+ signFlag: state.xjkkradioV1 === 0 ? 1 : 0, //是否允许未报名的签到:1是0否
+ signWordFlag: state.xjkkradioV1 === 1 ? 1 : 0, //签到是否需要口令:1是0否
+ teacherId: state.xjkkinputV4 ? state.xjkkinputV4 : 1,
};
console.log(obj);
editPlan(obj).then((res) => {
- console.log(res);
- // handleCancelStu();
+ if (res.data.code === 200) {
+ getTableDate3();
+ handleCancelStu();
+ }
});
};
- const handelEditStu = (item) => {
+ const handleOpenStu = (item) => {
console.log(item);
- state.offcourseId = item.offcourseId;
state.offcoursePlanId = item.offcoursePlanId;
- state.filesList = item.attach.split(",");
- state.checked1 = item.applyFlag;
- state.xjkkinputV2 = item.completeType;
- state.checked4 = item.name;
- state.xjkkradioV1 = item.signWordFlag;
+
+ state.sm_hs = true;
+ getTableDate2();
+ };
+ const handelEditStu = async (itm) => {
+ console.log(itm);
+ state.offcourseId = itm.offcourseId;
+ state.offcoursePlanId = itm.offcoursePlanId;
+
+ const item = await detailPlan({
+ offcoursePlanId: Number(state.offcoursePlanId),
+ }).then((res) => {
+ if (res.data.code === 200) return res.data.data;
+ });
+ console.log("res");
+ console.log(item);
+
+ state.xjkkinputV2 = item.address;
+ state.checked1 = item.applyFlag === 1 ? true : false;
+ state.filesList = item.attach ? item.attach.split(",") : [];
+ state.xjkkinputV3 = [
+ dayjs(item.beginTime, "YYYY/MM/DD"),
+ dayjs(item.endTime, "YYYY/MM/DD"),
+ ];
+ state.xjkkradioV2 = item.completeType;
+ state.checked4 = item.evalFlag === 1 ? true : false;
+ state.xjkkinputV1 = item.name;
+ if (item.signFlag === 1) {
+ //是否允许未报名的签到:1是0否
+ state.xjkkradioV1 = 0;
+ }
+ if (item.signWordFlag === 1) {
+ //签到是否需要口令:1是0否
+ state.xjkkradioV1 = 1;
+ }
+ if (item.signFlag === 0 && item.signWordFlag === 0) {
+ state.xjkkradioV1 = "";
+ }
state.xjkkinputV4 = item.teacherId;
- state.xjkkradioV1 = item.signFlag;
- // state.startTime = item.beginTime;
- // state.endTime = item.endTime;
state.cstm_hs = true;
state.kk_eidt = true;
@@ -3645,40 +3864,132 @@ export default defineComponent({
state.rejectstudy_hs = false;
};
const delete_exit1 = () => {
+ state.offcoursePlanId = null;
state.delete_hs = false;
state.del_hs = false;
state.copy_hs = false;
state.nouse_hs = false;
};
- const handleRejectExit = (value) => {
- state.offcoursePlanId = value.offcoursePlanId;
- // handle({
- // offcourseId:state.offcourseId
- // type:0
- // }).then(res=>{
- // console.log(89898)
- // console.log(res)
- // })
+ const handleRejectExit = (itm, type) => {
+ if (type === "1") {
+ return;
+ }
+ state.offcourseId = itm.offcourseId;
+
+ handle({
+ offcourseId: state.offcourseId,
+ type: 0,
+ }).then((res) => {
+ if (res.data.code === 200) {
+ getTableDate();
+ }
+ });
};
- const handleDeleteExit = () => {
- // handle({
- // offcourseId:state.offcourseId
- // type:1
- // }).then(res=>{
- // console.log(89898)
- // console.log(res)
- // delete_exit1()
- // })
+ const handleDeleteExit = async () => {
+ if (state.del_hs) {
+ console.log(11111111);
+ if (state.offcourseId && state.offcoursePlanId) {
+ console.log(87887);
+ deletePlan({
+ offcoursePlanId: state.offcoursePlanId,
+ });
+ getTableDate3();
+ delete_exit1();
+ } else if (state.offcourseId) {
+ console.log(87887);
+ handle({
+ offcourseId: state.offcourseId,
+ type: 1,
+ }).then((res) => {
+ if (res.data.code === 200) {
+ getTableDate();
+ delete_exit1();
+ }
+ });
+ }
+ }
+ if (state.copy_hs) {
+ console.log(2222222);
+ if (state.offcourseId && state.offcoursePlanId) {
+ console.log(87887);
+ // 拿数据
+ const item = await detailPlan({
+ offcoursePlanId: Number(state.offcoursePlanId),
+ }).then((res) => {
+ if (res.data.code === 200) return res.data.data;
+ });
+ const obj = {
+ offcourseId: item.offcourseId,
+ offcoursePlanId: null, //开课ID,不传代表新增
+
+ address: item.address,
+ applyFlag: item.applyFlag,
+ attach: item.attach,
+ beginTime: new Date(item.beginTime) / 1000,
+ completeType: item.completeType,
+ endTime: new Date(item.endTime) / 1000,
+ evalFlag: item.evalFlag,
+ name: item.name,
+ signFlag: item.signFlag, //是否允许未报名的签到:1是0否
+ signWordFlag: item.signWordFlag, //签到是否需要口令:1是0否
+ teacherId: item.teacherId,
+ };
+ console.log(obj);
+ editPlan(obj).then((res) => {
+ if (res.data.code === 200) {
+ getTableDate3();
+ delete_exit1();
+ }
+ });
+ } else if (state.offcourseId) {
+ console.log(87887);
+ // 拿数据
+ const item = await detail({
+ offcourseId: Number(state.offcourseId),
+ }).then((res) => {
+ if (res.data.code === 200) return res.data.data;
+ });
+ const postData = {
+ offcourseId: null, //不传代表新增
+ name: item.name,
+ picUrl: item.picUrl,
+ targetUser: item.targetUser,
+ meaning: item.meaning,
+ categoryId: item.categoryId,
+ sceneId: item.sceneId,
+ tips: item.tips,
+ teacherId: item.teacherId, //?
+ intro: item.intro,
+ attach: item.attach,
+ outline: item.outline,
+ };
+ edit(postData).then((res) => {
+ if (res.data.code === 200) {
+ getTableDate();
+ delete_exit1();
+ }
+ });
+ }
+ }
+ if (state.nouse_hs) {
+ console.log(3333333333);
+ if (state.offcourseId) {
+ console.log(87887);
+ handle({
+ offcourseId: state.offcourseId,
+ type: -2,
+ }).then((res) => {
+ if (res.data.code === 200) {
+ getTableDate();
+ delete_exit1();
+ }
+ });
+ }
+ }
};
const handleDeleteKaike = (value) => {
state.offcoursePlanId = value.offcoursePlanId;
- // deletePlan({
- // offcoursePlanId:state.offcoursePlanId
- // }).then(res=>{
- // console.log(89898)
- // console.log(res)
- // delete_exit1()
- // })
+
state.delete_hs = true;
state.del_hs = true;
};
@@ -3690,50 +4001,124 @@ export default defineComponent({
const faceManageChange = (e) => {
state.faceManageTab = e;
};
- const key = "updatable";
+
const openMessage = () => {
- message.loading({
- content: "Loading...",
- key,
+ let startTime = "";
+ let endTime = "";
+ if (state.projectTime) {
+ startTime = parseInt(
+ new Date(state.projectTime[0].$d).getTime() / 1000
+ );
+ endTime = parseInt(new Date(state.projectTime[1].$d).getTime() / 1000);
+ }
+ exportP({
+ pageNo: state.currentPage1,
+ pageSize: state.pageSize1,
+ auditStatus: state.auditStatus,
+ categoryId: state.categoryId,
+ projectName: state.projectName,
+ name: state.name,
+ createName: state.createName,
+ endTime: endTime,
+ beginTime: startTime,
+ }).then((res) => {
+ if (res.data.code === 200) {
+ message.success("导出成功");
+ }
});
- setTimeout(() => {
- message.success({
- content: "导出成功",
- key,
- duration: 2,
- });
- }, 1000);
};
- const handleEdit = (item) => {
+ const handleEdit = async (itm, type) => {
console.log(45555);
+ console.log(itm);
+ if (type === "1") {
+ return;
+ }
+ state.offcourseId = itm.offcourseId;
+
+ const item = await detail({
+ offcourseId: Number(state.offcourseId),
+ }).then((res) => {
+ if (res.data.code === 200) return res.data.data;
+ });
+ console.log("res");
console.log(item);
- // state.offcourseId = item.offcourseId;
- // state.qdms_inputV1 = item.name;
- // state.imageUrl = item.picUrl;
- // state.qdms_inputV2 = item.targetUser;
- // state.qdms_inputV3 = item.meaning;
- // state.fen_lei = item.content;
- // state.chang_jin = item.sceneId;
- // state.tags_val = item.tips;
- // state.qdms_inputV5 = item.teacherId;
- // state.qdms_inputV6 = item.intro;
- // state.imgList = item.attach;
- // valueHtml.value = item.outline;
+
+ state.qdms_inputV1 = item.name;
+ state.imageUrl = item.picUrl;
+ state.qdms_inputV2 = item.targetUser;
+ state.qdms_inputV3 = item.meaning;
+ state.fen_lei = item.content;
+ state.chang_jin = item.sceneId;
+ state.tags_val = item.tips;
+ state.qdms_inputV5 = item.teacherId;
+ state.qdms_inputV6 = item.intro;
+ state.imgList = item.attach;
+ valueHtml.value = item.outline;
state.ft_hs = true;
state.ft_eidt = true;
};
- const handleDelete = (item) => {
+ const handleDelete = (item, type) => {
console.log(item);
+ if (type === "1") {
+ return;
+ }
state.offcourseId = item.offcourseId;
state.delete_hs = true;
state.del_hs = true;
};
- const handleStart = (item) => {
+ const handleCopy = async (itm, type) => {
+ console.log(itm);
+ if (type === "1") {
+ return;
+ }
+ state.offcourseId = itm.offcourseId;
+
+ state.delete_hs = true;
+ state.copy_hs = true;
+ };
+ const handleCopyP = async (itm) => {
+ console.log(itm);
+ state.offcourseId = itm.offcourseId;
+ state.offcoursePlanId = itm.offcoursePlanId;
+
+ state.delete_hs = true;
+ state.copy_hs = true;
+ };
+ const handleStop = async (itm, type) => {
+ console.log(itm);
+ if (type === "1") {
+ return;
+ }
+ state.offcourseId = itm.offcourseId;
+
+ state.delete_hs = true;
+ state.nouse_hs = true;
+ };
+ const handleOpen = async (itm, type) => {
+ console.log(itm);
+ if (type === "1") {
+ return;
+ }
+ state.offcourseId = itm.offcourseId;
+
+ handle({
+ offcourseId: state.offcourseId,
+ type: 2,
+ }).then((res) => {
+ if (res.data.code === 200) {
+ getTableDate();
+ }
+ });
+ };
+ const handleStart = (item, type) => {
console.log(item);
+ if (type === "1") {
+ return;
+ }
state.offcourseId = item.offcourseId;
- // getTableDate3();
+ getTableDate3();
state.stm_hs = true;
};
@@ -3772,20 +4157,21 @@ export default defineComponent({
};
const beforeUpload3 = (file) => {
- const isJpgOrPng =
- file.type === "file/pdf" ||
- file.type === "file/ppt" ||
- file.type === "file/pptx" ||
- file.type === "file/doc" ||
- file.type === "file/docx" ||
- file.type === "file/xlsx" ||
- file.type === "file/zip" ||
- file.type === "image/jpg" ||
- file.type === "image/jpeg" ||
- file.type === "image/png" ||
- file.type === "image/gif" ||
- file.type === "file/xls";
- if (!isJpgOrPng) {
+ const fileType = [
+ "jpg",
+ "jpeg",
+ "png",
+ "gif",
+ "pdf",
+ "ppt",
+ "pptx",
+ "doc",
+ "docx",
+ "xls",
+ "xlsx",
+ "zip",
+ ];
+ if (!fileType.includes(file.name.split(".")[1])) {
message.error(
"仅支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip格式!"
);
@@ -3806,6 +4192,7 @@ export default defineComponent({
return {
...toRefs(state),
handleDeleteKaike,
+ handleOpenStu,
handelEditStu,
beforeUpload3,
handleSearchStu,
@@ -3815,6 +4202,10 @@ export default defineComponent({
handleSearchTable,
handleRestTable,
handleStart,
+ handleCopyP,
+ handleCopy,
+ handleStop,
+ handleOpen,
handleEdit,
handleDelete,
columns1,
@@ -3857,7 +4248,7 @@ export default defineComponent({
editorRef,
valueHtml,
- mode: "default", // 或 'simple'
+ mode: "simple", // 或 'simple'
toolbarConfig,
editorConfig,
handleCreated,
@@ -5860,6 +6251,14 @@ export default defineComponent({
}
}
}
+
+.disabled {
+ a {
+ color: #999ba3;
+ cursor: not-allowed;
+ }
+}
+
.pa {
width: 100%;
display: flex;
@@ -5882,4 +6281,26 @@ export default defineComponent({
.ant-upload.ant-upload-select-picture-card {
border: none;
}
+
+.mgTop {
+ margin-top: 50px !important;
+}
+// .tableSelect {
+// position: relative;
+// .hoverList {
+// display: none;
+// }
+// &:hover {
+// .hoverList {
+// display: block;
+// position: absolute;
+// top: 20px;
+// left: -20px;
+// background: #fff;
+// box-sizing: border-box;
+// // padding: 20px;
+// color: #000000;
+// }
+// }
+// }
diff --git a/src/views/research/ResearchAdd copy.vue b/src/views/research/ResearchAdd copy.vue
deleted file mode 100644
index b2ad3d38..00000000
--- a/src/views/research/ResearchAdd copy.vue
+++ /dev/null
@@ -1,760 +0,0 @@
-
-
-
-
-
-
创建评估类型
-
单选题
-
多选题
-
问答题
-
评分题
-
-
-
-
-
-
-
-
-
-
-
-
-