mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-12 04:16:47 +08:00
合并
This commit is contained in:
40
src/App.vue
40
src/App.vue
@@ -42,18 +42,50 @@ export default defineComponent({
|
||||
});
|
||||
|
||||
const currentRouteName = computed(() => route.name);
|
||||
|
||||
//获取组织树
|
||||
const orgTree = () => {
|
||||
let obj = {
|
||||
id: 0,
|
||||
keyWord: "",
|
||||
pageNo: 0,
|
||||
pageSize: 20,
|
||||
};
|
||||
api
|
||||
.orgtree()
|
||||
.getOrgInfo(obj)
|
||||
.then((res) => {
|
||||
console.log("获取集团组织成功", res);
|
||||
if (res.status === 200) {
|
||||
store.commit("getOrgtreeList", res.data.data);
|
||||
// console.log("获取组织树成功", res.data.data);
|
||||
// state.orgtreeList = res.data.data;
|
||||
if (res.status === 200) {
|
||||
let arr = res.data.data.rows;
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
let object = {
|
||||
keyWord: "",
|
||||
id: arr[i].id,
|
||||
pageNo: 1,
|
||||
pageSize: 20,
|
||||
};
|
||||
api
|
||||
.getOrgInfo(object)
|
||||
.then((res) => {
|
||||
// console.log("获取子元素", res);
|
||||
if (res.status === 200) {
|
||||
arr[i].treeChildList = res.data.data.rows;
|
||||
if (i === arr.length - 1) {
|
||||
store.commit("getOrgtreeList", arr);
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("获取子元素失败", err);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("获取集团组织失败", err);
|
||||
console.log("获取组织树失败", err);
|
||||
});
|
||||
};
|
||||
orgTree();
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-04 22:45:31
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2022-11-22 18:04:47
|
||||
* @LastEditTime: 2022-11-24 15:11:25
|
||||
* @FilePath: /fe-manage/src/api/index1.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
@@ -44,7 +44,7 @@ import qs from "qs";
|
||||
|
||||
//上传文件
|
||||
export const uploadFile = (obj) =>
|
||||
http.post("/test/testRequest", qs.stringify({ obj }));
|
||||
http.post("/test/testRequest", qs.stringify({ obj }));
|
||||
|
||||
// 接口-请求
|
||||
|
||||
@@ -56,7 +56,7 @@ export const getLearnPath = (obj) => http.post("/admin/router/list", obj);
|
||||
export const handleLearnPath = (obj) => http.post("/admin/router/handle", obj);
|
||||
//获取路径图统计数据
|
||||
export const getLearnCount = (routerId) =>
|
||||
http.get("/admin/router/getCount", { params: { routerId: routerId } });
|
||||
http.get("/admin/router/getCount", { params: { routerId: routerId } });
|
||||
|
||||
//新建或编辑关卡
|
||||
export const editChapter = (obj) => http.post("/admin/router/editChapter", obj);
|
||||
@@ -66,19 +66,19 @@ export const setConfig = (obj) => http.post("/admin/router/setConfig", obj);
|
||||
export const getStudent = (obj) => http.post("/admin/router/studentList", obj);
|
||||
//获取路径图详情-包含关卡及任务列表
|
||||
export const getRouterDetail = (routerId) =>
|
||||
http.get("/admin/router/detail", {
|
||||
params: {
|
||||
routerId: routerId,
|
||||
},
|
||||
});
|
||||
http.get("/admin/router/detail", {
|
||||
params: {
|
||||
routerId: routerId,
|
||||
},
|
||||
});
|
||||
//添加学员
|
||||
export const addStudent = (obj) => http.post("/admin/router/addStudent", obj);
|
||||
//删除学员
|
||||
export const delStudent = (obj) =>
|
||||
http.post("/admin/router/deleteStudent", obj);
|
||||
http.post("/admin/router/deleteStudent", obj);
|
||||
// 获取学员路径图进度明细
|
||||
export const stuProgress = (obj) =>
|
||||
http.post("/admin/router/studentProcess", obj);
|
||||
http.post("/admin/router/studentProcess", obj);
|
||||
|
||||
//项目基础信息-----------------------------------
|
||||
//项目积分榜单
|
||||
@@ -88,20 +88,35 @@ export const billboard = (obj) => http.post("/admin/project/billboard", obj);
|
||||
//项目基础信息-----------------------------------
|
||||
|
||||
//获取字典信息
|
||||
export const getDict = (obj) => http.post("/dict/getList", obj);
|
||||
//获取组织树
|
||||
export const getOrgTree = (obj) => http.post("/admin/router/orgList", obj);
|
||||
export const getDict = (obj) => http.post('/dict/getList', obj)
|
||||
//获取组织树一级列表
|
||||
export const getOrgTree = (obj) => http.post('/admin/router/orgList', obj)
|
||||
//根据id获取组织树一级元素下所有子元素
|
||||
export const orgTreeList = (obj) => http.post('/admin/router/orgTreeList', obj)
|
||||
//根据id获取部门下学员
|
||||
export const searchUsersByOrgId = (obj) => http.post('/admin/router/searchUsersByOrgId', obj)
|
||||
|
||||
//获取组织信息(修改版)
|
||||
export const getOrgInfo = (obj) => http.post('/admin/orgStruct/getOrgInfo', obj)
|
||||
//获取员工(修改版)
|
||||
export const getMemberInfo = (obj) => http.post('/admin/orgStruct/getMemberInfo', obj)
|
||||
//获取受众(修改版)
|
||||
export const getAudienceInfo = (obj) => http.post('/admin/orgStruct/getAudienceInfo', obj)
|
||||
//获取授权(修改版)
|
||||
export const optionAuthPerm = (obj) => http.post('/admin/AuthPerm/optionAuthPerm', obj)
|
||||
|
||||
|
||||
|
||||
// 获取组织结构树
|
||||
export const orgtree = () => http.get("/org/tree");
|
||||
|
||||
//获取积分列表
|
||||
export const noticeList = (projectId) =>
|
||||
http.post(
|
||||
`http://localhost:8080/api/admin/project/noticeList?projectId=` +
|
||||
projectId +
|
||||
``
|
||||
);
|
||||
http.post(
|
||||
`http://localhost:8080/api/admin/project/noticeList?projectId=` +
|
||||
projectId +
|
||||
``
|
||||
);
|
||||
|
||||
// 测试方法
|
||||
// import * as api from '../../api/index'
|
||||
|
||||
@@ -16,4 +16,7 @@ export const courseListView = (obj) => http.post('/admin/offcourse/listReview',
|
||||
export const auditList = (obj) => http.post('/admin/project/auditList', obj)
|
||||
|
||||
//项目审核
|
||||
export const auditView = (obj) => http.post('/admin/project/auditView', obj)
|
||||
export const auditView = (obj) => http.post('/admin/project/auditView', obj)
|
||||
|
||||
//面授课审核
|
||||
export const courseAuditView = (obj) => http.post('/admin/offcourse/auditView', obj)
|
||||
@@ -38,16 +38,15 @@ import http from "./config";
|
||||
// 接口-请求
|
||||
|
||||
//创建评估
|
||||
export const createAppraiseMessage = (obj) => http.post('/survey/createAppraiseMessage', obj,);
|
||||
|
||||
//删除评估信息
|
||||
export const deleteAppraise = (obj) => http.post('/survey/deleteAppraise', { params: obj })
|
||||
|
||||
//根据ID获取评估信息详情
|
||||
export const queryAppraiseDetailById = (obj) => http.post('/survey/queryAppraiseDetailById', { params: obj })
|
||||
|
||||
//修改评估信息
|
||||
export const updateAppraiseMessage = (obj) => http.post('/survey/updateAppraiseMessage', obj)
|
||||
export const queryAppraiseDetailById = (obj) => http.post('/assessment/queryAssessmentDetailById', obj,{
|
||||
headers: {
|
||||
'token': '123',
|
||||
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
|
||||
}
|
||||
})
|
||||
|
||||
//获取全部评估信息接口
|
||||
export const queryAssessmentDetailList = (obj) => http.post('/assessment/queryAssessmentDetailList', obj)
|
||||
|
||||
@@ -25,4 +25,6 @@ export const setScoreRule = (obj) => http.post('/admin/project/setScoreRule', ob
|
||||
export const planList = (obj) => http.post('/admin/offcourse/planList', obj)
|
||||
|
||||
//获取面授课列表
|
||||
export const list = (obj) => http.post('/admin/offcourse/list', obj)
|
||||
export const list = (obj) => http.post('/admin/offcourse/list', obj)
|
||||
|
||||
export const addTempTask = (obj) => http.post('/admin/project//template/editTask', obj)
|
||||
@@ -19,3 +19,6 @@ export const editTask = (obj) => http.post('/admin/project/template/editTask',ob
|
||||
export const handleTemplates = (obj) => http.post('/admin/project/template/handle',obj);
|
||||
// 模板库列表
|
||||
export const templateList = (obj) => http.post(`/admin/project/template/list`,obj);
|
||||
// 发布项目公告
|
||||
export const publishNotice = (obj) => http.post(`/admin/project/template/publishNotice`,obj);
|
||||
|
||||
|
||||
@@ -162,6 +162,7 @@ function autoComma(number) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
//新建延迟
|
||||
const commonData = {
|
||||
timeout: 50
|
||||
}
|
||||
@@ -368,6 +369,8 @@ const commonData = {
|
||||
|
||||
//组织树
|
||||
const organizationalTree = []
|
||||
|
||||
const iframeUrl = "https://u-pre.boe.com/pc/iframe"
|
||||
export {
|
||||
toDate,
|
||||
getWeek,
|
||||
@@ -375,4 +378,5 @@ export {
|
||||
formatNumber,
|
||||
commonData,
|
||||
organizationalTree,
|
||||
iframeUrl,
|
||||
}
|
||||
68
src/components/Modals/addOnlineCourse.vue
Normal file
68
src/components/Modals/addOnlineCourse.vue
Normal file
@@ -0,0 +1,68 @@
|
||||
<!--
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-24 16:39:48
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2022-11-24 16:53:00
|
||||
* @FilePath: /fe-manage/src/components/Modals/addOnlineCourse.vue
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
-->
|
||||
<template>
|
||||
<!-- 新建在线课弹窗 -->
|
||||
<div>
|
||||
<a-modal
|
||||
:visible="addOnlineCoursevisible"
|
||||
:footer="null"
|
||||
:closable="false"
|
||||
wrapClassName="modalStyle addOnlineCourseStyle"
|
||||
:zIndex="9999"
|
||||
@cancel="closeModal"
|
||||
>
|
||||
<iframe
|
||||
id="iframe"
|
||||
style="width: 100%; height: 100%"
|
||||
:src="iframeUrl + 'course/noapproved'"
|
||||
name="myframe"
|
||||
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
|
||||
></iframe>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { reactive, toRefs } from "vue";
|
||||
// import {getTask} from "../../api/indexTaskadd"
|
||||
// import dayjs from "dayjs";
|
||||
// import {message} from "ant-design-vue"
|
||||
import { iframeUrl } from "@/api/method";
|
||||
|
||||
export default {
|
||||
name: "addOnlineCourse",
|
||||
props: {
|
||||
addOnlineCoursevisible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
// console.log("学习路径", props.addOnlineCoursevisible, ctx);
|
||||
const state = reactive({
|
||||
iframeUrl: iframeUrl,
|
||||
});
|
||||
const closeModal = () => {
|
||||
ctx.emit("update:addOnlineCoursevisible", false);
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
closeModal,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" >
|
||||
.addOnlineCourseStyle {
|
||||
.ant-modal {
|
||||
width: 80% !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -86,6 +86,10 @@ export default {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
titleTag: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
}
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
@@ -100,9 +104,10 @@ export default {
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:assessmentVisible", false);
|
||||
ctx.emit("update:titleTag", true);
|
||||
};
|
||||
const afterVisibleChange = (bool) => {
|
||||
console.log("state getAllInvistText", bool);
|
||||
console.log("state getAllInvistText", bool,"======",props.titleTag);
|
||||
if (props.assessmentVisible) {
|
||||
getAllInvistText();
|
||||
}
|
||||
|
||||
@@ -380,6 +380,23 @@ export default {
|
||||
message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`);
|
||||
});
|
||||
} else if (props.isLevel == 3) {
|
||||
apiTask
|
||||
.addTempTask({
|
||||
courseId: res.data.data.activityId,
|
||||
duration: res.data.data.activityDuration,
|
||||
name: res.data.data.activityName,
|
||||
projectTemplateId: props.projectTemplateId,
|
||||
projectTaskId: props.projectTaskId || 0,
|
||||
stageId: props.chooseStageId,
|
||||
type: 9,
|
||||
})
|
||||
.then(() => {
|
||||
message.success(`${props.edit ? "编辑" : "新增"}阶段任务成功`);
|
||||
})
|
||||
.catch(() => {
|
||||
message.error(`${props.edit ? "编辑" : "新增"}阶段任务失败`);
|
||||
});
|
||||
|
||||
console.log("");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -192,10 +192,12 @@ export default {
|
||||
});
|
||||
} else if (props.isLevel == 2) {
|
||||
apiTask.addTask({
|
||||
courseId: res.data.data.discussId,
|
||||
name: res.data.data.discussName,
|
||||
routerId: props.routerId,
|
||||
routerTaskId: props.routerTaskId || 0,
|
||||
courseId: res.data.data.discussId,
|
||||
duration: res.data.data.discussExplain,
|
||||
name: res.data.data.discussName,
|
||||
projectId: props.projectId,
|
||||
projectTaskId: props.projectTaskId || 0,
|
||||
stageId: props.chooseStageId,
|
||||
type: 8,
|
||||
});
|
||||
} else if (props.isLevel == 3) {
|
||||
|
||||
@@ -385,6 +385,7 @@ import { queryFaceDetailById, editPlan } from "../../api/indexFace";
|
||||
import dayjs from "dayjs";
|
||||
import AssessmentList from "../drawers/ AssessmentList.vue";
|
||||
// import { toDate } from "../../api/method";
|
||||
import { queryWorkDetailById } from "../../api/indexWork";
|
||||
export default {
|
||||
name: "AddFaceteach",
|
||||
components: {
|
||||
@@ -465,6 +466,7 @@ export default {
|
||||
face: true, //面授传给配置作业的标识
|
||||
chooseWork: null, //配置的work
|
||||
chooseWorkName: null, //配置的work名字
|
||||
chooseWorkId: null, //配置的work ID
|
||||
chooseMent: null,
|
||||
chooseMentName: null,
|
||||
assessmentVisible: false,
|
||||
@@ -486,7 +488,10 @@ export default {
|
||||
state.checkedAssessment = false;
|
||||
state.chooseMent = null;
|
||||
state.chooseWork = null;
|
||||
state.chooseWorkId = null;
|
||||
state.chooseWorkName = null;
|
||||
state.chooseCourse = null;
|
||||
state.chooseCourseName = null;
|
||||
};
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:addfaceteachVisible", false);
|
||||
@@ -501,7 +506,6 @@ export default {
|
||||
// 该页面显示同时 edit为true 时,发送查询请求,
|
||||
queryFaceTeach();
|
||||
}
|
||||
// queryFaceTeach();
|
||||
};
|
||||
const showDrawerSelFacet = () => {
|
||||
state.selfacetvisible = true;
|
||||
@@ -546,6 +550,7 @@ export default {
|
||||
state.inputV6 = result.afterStart;
|
||||
state.inputV7 = result.beforeEnd;
|
||||
state.fileList = JSON.parse(result.attach);
|
||||
state.chooseWorkId = result.homeWorkId;
|
||||
// state.radioV1 = result.
|
||||
state.checkedHolidy =
|
||||
result.completeType == 1
|
||||
@@ -568,6 +573,12 @@ export default {
|
||||
state.radioV1 = "2";
|
||||
}
|
||||
state.checkedAssessment = result.evalFlag == 1 ? true : false;
|
||||
if (state.chooseWorkId) {
|
||||
queryWorkDetailById({ workId: state.chooseWorkId }).then((res) => {
|
||||
state.chooseWork = res.data.data;
|
||||
state.chooseWorkName = res.data.data.workName;
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
@@ -603,7 +614,7 @@ export default {
|
||||
evalFlag: state.checkedAssessment == true ? 1 : 0,
|
||||
evaluateId:
|
||||
state.chooseMent == null ? 0 : state.chooseMent.assessmentId,
|
||||
homeWorkId: 0,
|
||||
homeWorkId: state.chooseWorkId || 0,
|
||||
name: state.inputV1,
|
||||
noProjectMember: state.radioV2 == "1" ? 0 : 1,
|
||||
offcourseId: 0,
|
||||
@@ -613,6 +624,7 @@ export default {
|
||||
signWordFlag: 0,
|
||||
teacherId: 0,
|
||||
testId: 0,
|
||||
teacher: state.inputV2,
|
||||
};
|
||||
|
||||
if (props.edit) {
|
||||
@@ -697,12 +709,15 @@ export default {
|
||||
const closeTagWork = () => {
|
||||
state.chooseWork = null;
|
||||
state.chooseWorkName = null;
|
||||
state.chooseWorkId = null;
|
||||
};
|
||||
const getWork = (value) => {
|
||||
console.log("getWork", value);
|
||||
state.chooseWork = value;
|
||||
state.chooseWorkName = value.workName;
|
||||
console.log("getWorkName", value.workName);
|
||||
state.chooseWorkId = value.workId;
|
||||
|
||||
// console.log("getWorkName", value.workName);
|
||||
};
|
||||
const handleChange = ({ file, fileList }) => {
|
||||
if (file.status !== "uploading") {
|
||||
|
||||
@@ -368,8 +368,18 @@ export default {
|
||||
|
||||
const cle = () => {
|
||||
console.log("xx", formState);
|
||||
let obj = {
|
||||
submitEndTime: dayjs(formState.choosedTime[1]).format("YYYY-MM-DD"),
|
||||
submitStartTime: dayjs(formState.choosedTime[0]).format("YYYY-MM-DD"),
|
||||
workEnclosureAddress: "",
|
||||
workId: props.edit ? props.EditWorkId : 0,
|
||||
workName: formState.workName,
|
||||
workRequirement: formState.workRequirement,
|
||||
};
|
||||
if (props.face) {
|
||||
ctx.emit("getWork", formState);
|
||||
createWorkTask(obj).then((res) => {
|
||||
ctx.emit("getWork", res.data.data);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -23,27 +23,54 @@
|
||||
<div class="main_notice">
|
||||
<div class="mntc_left">
|
||||
<div class="notice_icon"></div>
|
||||
<div v-if="assessment == null">
|
||||
<div v-if="assessment == null && assessment1 == null">
|
||||
<span class="title"
|
||||
>已选择 <span class="data">0</span> 条</span
|
||||
>
|
||||
</div>
|
||||
<div v-else>
|
||||
<span class="title"
|
||||
>已选择 <span class="data">1</span> 条;</span
|
||||
>
|
||||
<span class="title"
|
||||
>名称: <span class="data">{{ assessment.name }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>题数: <span class="data">{{ assessment.num }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建人: <span class="data">{{ assessment.creator }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建时间: <span class="data">{{ assessment.time }}</span>
|
||||
</span>
|
||||
<div v-if="assessment1 == null">
|
||||
<span class="title"
|
||||
>已选择 <span class="data">1</span> 条;</span
|
||||
>
|
||||
<span class="title"
|
||||
>名称: <span class="data">{{ assessment.name }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>题数: <span class="data">{{ assessment.num }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建人:
|
||||
<span class="data">{{ assessment.creator }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建时间:
|
||||
<span class="data">{{ assessment.time }}</span>
|
||||
</span>
|
||||
</div>
|
||||
<div v-else>
|
||||
<span class="title"
|
||||
>已选择 <span class="data">1</span> 条;</span
|
||||
>
|
||||
<span class="title"
|
||||
>名称:
|
||||
<span class="data">{{ assessment1.createName }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>题数:
|
||||
<span class="data">{{
|
||||
assessment1.essayQuestionVoList.length
|
||||
}}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建人:
|
||||
<span class="data">{{ assessment1.createUser }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建时间:
|
||||
<span class="data">{{ assessment1.createTime }}</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -55,6 +82,7 @@
|
||||
<div class="main_item2">
|
||||
<AssessmentList
|
||||
v-model:assessmentVisible="assessmentVisible"
|
||||
v-model:titleTag="titleTag"
|
||||
@checkedAss="getCheckedAss"
|
||||
/>
|
||||
</div>
|
||||
@@ -77,6 +105,7 @@ import * as apiTask from "../../api/indexTaskadd";
|
||||
import { message } from "ant-design-vue";
|
||||
import AssessmentList from "./ AssessmentList.vue";
|
||||
import { RouterEditTask } from "@/api/indexTask";
|
||||
import * as api from "../../api/indexInvist";
|
||||
export default {
|
||||
name: "AddInvist",
|
||||
components: {
|
||||
@@ -139,10 +168,13 @@ export default {
|
||||
assessmentId: null,
|
||||
assessmentName: "",
|
||||
assessment: null,
|
||||
assessment1: null,
|
||||
assessmentVisible: false,
|
||||
titleTag: false,
|
||||
});
|
||||
const getCheckedAss = (ass) => {
|
||||
state.assessment = ass;
|
||||
state.assessment1 = null;
|
||||
};
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:addinvistVisible", false);
|
||||
@@ -159,8 +191,21 @@ export default {
|
||||
state.assessmentId = null;
|
||||
state.assessmentName = "";
|
||||
state.assessment = null;
|
||||
queryInfo();
|
||||
};
|
||||
const queryInfo = () => {
|
||||
if (props.edit) {
|
||||
state.titleTg = false;
|
||||
//编辑讨
|
||||
api
|
||||
.queryAppraiseDetailById({ assessmentId: props.EditInvistId })
|
||||
.then((res) => {
|
||||
//更新讨论信息
|
||||
state.assessment1 = res.data.data;
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
};
|
||||
|
||||
const updateTask = () => {
|
||||
if (state.assessment == null) {
|
||||
return message.warning("请选择评估");
|
||||
|
||||
890
src/components/drawers/AddProject.vue
Normal file
890
src/components/drawers/AddProject.vue
Normal file
@@ -0,0 +1,890 @@
|
||||
<template>
|
||||
<a-drawer
|
||||
:visible="addprojvisible"
|
||||
class="drawerStyle addonlineDrawer"
|
||||
width="80%"
|
||||
title="添加在线"
|
||||
placement="right"
|
||||
@after-visible-change="afterVisibleChange"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div v-if="edit" class="headerTitle">编辑项目</div>
|
||||
<div v-else class="headerTitle">添加项目</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_items">
|
||||
<div class="mi_ipts">
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name">项目名称:</div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="inputV1"
|
||||
style="width: 240px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入项目名称"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name">项目经理:</div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="inputV2"
|
||||
style="width: 240px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入项目经理"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name">创建人:</div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="inputV3"
|
||||
style="width: 240px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入创建人"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mi_btns">
|
||||
<div class="btn btn1">
|
||||
<div class="search"></div>
|
||||
<div class="btnText" @click="searchProjectList()">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="resetProjectList()">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">重置</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_notice" v-if="edit">
|
||||
<div class="mntc_left">
|
||||
<div class="notice_icon"></div>
|
||||
<div v-if="selectedRows.length == 0">
|
||||
<span class="title"
|
||||
>已选择
|
||||
<span class="data" style="color: #4ea6ff">{{ 0 }}</span>
|
||||
条</span
|
||||
>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div>
|
||||
<span class="title"
|
||||
>已选择
|
||||
<span class="data" style="color: #4ea6ff">{{
|
||||
selectedRows.length
|
||||
}}</span>
|
||||
条 </span
|
||||
>
|
||||
<span class="title"
|
||||
>名称:
|
||||
<span
|
||||
class="data"
|
||||
style="color: #4ea6ff; margin-right: 15px"
|
||||
>{{ selectedRows[0].name }}</span
|
||||
>
|
||||
</span>
|
||||
<span class="title"
|
||||
>项目经理:
|
||||
<span
|
||||
class="data"
|
||||
style="color: #4ea6ff; margin-right: 15px"
|
||||
>{{ selectedRows[0].manager }}</span
|
||||
>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建人:
|
||||
<span
|
||||
class="data"
|
||||
style="color: #4ea6ff; margin-right: 15px"
|
||||
>{{ selectedRows[0].creater }}</span
|
||||
>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建时间:
|
||||
<span class="data" style="color: #4ea6ff">{{
|
||||
selectedRows[0].time
|
||||
}}</span>
|
||||
</span>
|
||||
</div>
|
||||
<!-- <div v-else>
|
||||
<span class="title"
|
||||
>已选择 <span class="data">1</span> 条;</span
|
||||
>
|
||||
<span class="title"
|
||||
>名称:
|
||||
<span class="data">{{ assessment1.createName }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>题数:
|
||||
<span class="data">{{
|
||||
assessment1.essayQuestionVoList.length
|
||||
}}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建人:
|
||||
<span class="data">{{ assessment1.createUser }}</span>
|
||||
</span>
|
||||
<span class="title"
|
||||
>创建时间:
|
||||
<span class="data">{{ assessment1.createTime }}</span>
|
||||
</span>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="">
|
||||
<div class="drawerbox">
|
||||
<!-- 添加的时候显示多选的表 -->
|
||||
<a-table
|
||||
v-if="!edit"
|
||||
:columns="tableDataFunc()"
|
||||
:data-source="drawertableData"
|
||||
:row-selection="{
|
||||
selectedRowKeys: selectedRowKeys,
|
||||
onChange: onSelectChange,
|
||||
}"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:scroll="{ x: 700 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
>
|
||||
</a-table>
|
||||
<!-- 编辑的时候显示单选的表 -->
|
||||
<a-table
|
||||
v-else
|
||||
:columns="tableDataFunc()"
|
||||
:data-source="drawertableData"
|
||||
:row-selection="{
|
||||
selectedRowKeys: selectedRowKeys,
|
||||
onChange: onSelectChange,
|
||||
type: 'radio',
|
||||
}"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:scroll="{ x: 700 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
>
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button @click="closeDrawer" class="btn1">取消</button>
|
||||
<button @click="updateTaskList" class="btn2">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 有重复添加的项目时的弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="sameModal"
|
||||
:footer="null"
|
||||
:closable="sameCopy"
|
||||
wrapClassName="sameModal"
|
||||
centered="true"
|
||||
>
|
||||
<div class="delete">
|
||||
<div class="del_header"></div>
|
||||
<div class="del_main">
|
||||
<div class="header">
|
||||
<div class="icon"></div>
|
||||
<span>提示</span>
|
||||
<div class="close_exit" @click="closeSameModal"></div>
|
||||
</div>
|
||||
<div class="body">
|
||||
<span>项目已存在,是否重复添加?</span>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1" @click="closeSameModal">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2" @click="sureSameModal">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs } from "vue";
|
||||
|
||||
import * as apiTask from "../../api/indexTaskadd";
|
||||
import { RouterEditTask } from "@/api/indexTask";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as apiProj from "../../api/index.js";
|
||||
import dayjs from "dayjs";
|
||||
export default {
|
||||
name: "AddProject",
|
||||
props: {
|
||||
addprojvisible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
EditProjectId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
edit: {
|
||||
// 是否为编辑
|
||||
type: Boolean,
|
||||
default: null,
|
||||
},
|
||||
projectId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
chooseStageId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
routerTaskId: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
},
|
||||
isLevel: {
|
||||
// 是否是关卡页面触发
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
|
||||
projectTaskId: {
|
||||
// 要编辑的projectId
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
routerId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
isactive: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
// 路径图里选择的阶段下的任务列表
|
||||
chooseProjectList: {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
inputV1: "",
|
||||
inputV2: "",
|
||||
inputV3: "",
|
||||
textV1: "",
|
||||
statu: 0,
|
||||
checkedC1: false,
|
||||
discussSettings: "",
|
||||
addLoading: false,
|
||||
sameModal: false,
|
||||
sameCopy: false,
|
||||
sameProj: null,
|
||||
tableData: [
|
||||
{
|
||||
key: 1,
|
||||
parentId: 1,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
children: [
|
||||
{
|
||||
key: 5,
|
||||
parentId: 1,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 2,
|
||||
parentId: 2,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
children: [
|
||||
{
|
||||
key: 7,
|
||||
parentId: 1,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
children: [
|
||||
{
|
||||
key: 9,
|
||||
parentId: 1,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 3,
|
||||
parentId: 3,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
},
|
||||
],
|
||||
selectedRowKeys: [],
|
||||
selectedRows: [],
|
||||
currentPage: 1,
|
||||
tableDataTotal: 0,
|
||||
pageSize: 10,
|
||||
//项目抽屉、列表参数
|
||||
drawertableData: [
|
||||
{
|
||||
key: 1,
|
||||
parentId: 1,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
children: [
|
||||
{
|
||||
key: 5,
|
||||
parentId: 1,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 2,
|
||||
parentId: 2,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
children: [
|
||||
{
|
||||
key: 7,
|
||||
parentId: 1,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
children: [
|
||||
{
|
||||
key: 9,
|
||||
parentId: 1,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
key: 3,
|
||||
parentId: 3,
|
||||
name: "123",
|
||||
manager: "afssfa",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
const tableDataFunc = () => {
|
||||
const drawercolumns = [
|
||||
{
|
||||
title: "项目名称",
|
||||
dataIndex: "name",
|
||||
key: "projectName",
|
||||
width: 200,
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "项目经理",
|
||||
dataIndex: "manager",
|
||||
key: "manager",
|
||||
width: 100,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "创建人",
|
||||
dataIndex: "creater",
|
||||
key: "creater",
|
||||
width: 100,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "创建时间",
|
||||
dataIndex: "time",
|
||||
key: "time",
|
||||
width: 180,
|
||||
align: "center",
|
||||
},
|
||||
];
|
||||
return drawercolumns;
|
||||
};
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:addprojvisible", false);
|
||||
ctx.emit("update:edit", false);
|
||||
ctx.emit("changeData", false);
|
||||
state.selectedRows = [];
|
||||
state.selectedRowKeys = [];
|
||||
};
|
||||
// const rowSelection =()=> ref({
|
||||
// checkStrictly: false,
|
||||
// onChange: (selectedRowKeys, selectedRows) => {
|
||||
// console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
|
||||
// },
|
||||
// onSelect: (record, selected, selectedRows) => {
|
||||
// console.log(record, selected, selectedRows);
|
||||
// },
|
||||
// onSelectAll: (selected, selectedRows, changeRows) => {
|
||||
// console.log(selected, selectedRows, changeRows);
|
||||
// },
|
||||
// });
|
||||
const start = () => {
|
||||
state.loading = true;
|
||||
// ajax request after empty completing
|
||||
setTimeout(() => {
|
||||
state.loading = false;
|
||||
state.selectedRowKeys = [];
|
||||
}, 1000);
|
||||
};
|
||||
// const onSelectChange = (selectedRowKeys, selectedRows) => {
|
||||
// console.log("selectedRowKeys changed: ", selectedRowKeys);
|
||||
// state.selectedRowKeys = selectedRowKeys;
|
||||
// this.selectedRows = selectedRows;
|
||||
// };
|
||||
const searchProjectList = () => {
|
||||
getAllProjText();
|
||||
};
|
||||
const resetProjectList = () => {
|
||||
state.inputV1 = "";
|
||||
state.inputV2 = "";
|
||||
state.inputV1 = "";
|
||||
getAllProjText();
|
||||
};
|
||||
|
||||
//获取全部项目信息接口
|
||||
const getAllProjText = () => {
|
||||
apiProj
|
||||
.getProjectList({
|
||||
createName: state.inputV1,
|
||||
manager: state.inputV2,
|
||||
name: state.inputV3,
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
status: state.status,
|
||||
})
|
||||
.then((res) => {
|
||||
let arr = res.data.data.rows;
|
||||
if (res.status === 200) {
|
||||
state.drawertableData = getTableDate(arr);
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
message.destroy();
|
||||
message.error("获取全部项目信息接口失败");
|
||||
});
|
||||
};
|
||||
const afterVisibleChange = (bool) => {
|
||||
console.log("哈哈,我进来了");
|
||||
if (bool) {
|
||||
getAllProjText();
|
||||
}
|
||||
};
|
||||
|
||||
const handelChangePage = (page, pageSize) => {
|
||||
state.currentPage = page;
|
||||
state.pageSize = pageSize;
|
||||
getAllProjText();
|
||||
};
|
||||
const getTableDate = (data) => {
|
||||
let array = [];
|
||||
data.map((value) => {
|
||||
if (value.type == 3) {
|
||||
let obj = {
|
||||
key: value.projectId,
|
||||
parentId: value.parentId,
|
||||
projectId: value.projectId,
|
||||
name: value.name,
|
||||
manager: value.manager,
|
||||
time: dayjs(value.createTime).format("YYYY-MM-DD"),
|
||||
creater: value.createName,
|
||||
};
|
||||
array.push(obj);
|
||||
} else {
|
||||
let obj = {
|
||||
key: value.projectId,
|
||||
parentId: value.parentId,
|
||||
name: value.name,
|
||||
manager: value.manager,
|
||||
time: dayjs(value.createTime).format("YYYY-MM-DD"),
|
||||
children: value.subList ? getTableDate(value.subList) : [],
|
||||
};
|
||||
array.push(obj);
|
||||
}
|
||||
});
|
||||
return array;
|
||||
};
|
||||
//项目抽屉用的
|
||||
const updateTaskList = () => {
|
||||
//const resultArr = [];
|
||||
state.selectedRows.forEach((item) => {
|
||||
let origin = JSON.parse(props.chooseProjectList);
|
||||
console.log("ccxx", origin);
|
||||
if (origin.length == 0) {
|
||||
//可以直接添加到任务列表里
|
||||
updateTask(item);
|
||||
closeDrawer();
|
||||
} else {
|
||||
//需要先判断是否含有之前的
|
||||
//根据courseId判断
|
||||
let re = origin.filter((it) => {
|
||||
return it.courseId == item.key;
|
||||
});
|
||||
console.log("re", re);
|
||||
if (re.length == 0) {
|
||||
updateTask(item);
|
||||
} else {
|
||||
state.sameProj = item;
|
||||
//询问是否重复添加
|
||||
showSameModal();
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const updateTask = (res) => {
|
||||
if (props.isLevel == 1) {
|
||||
RouterEditTask({
|
||||
chapterId: props.isactive,
|
||||
courseId: res.key,
|
||||
name: res.name,
|
||||
routerId: props.routerId,
|
||||
routerTaskId: props.routerTaskId || 0,
|
||||
type: 13,
|
||||
})
|
||||
.then(() => {
|
||||
message.success(`${props.edit ? "编辑" : "新增"}关卡任务成功`);
|
||||
})
|
||||
.catch(() => {
|
||||
message.error(`${props.edit ? "编辑" : "新增"}关卡任务失败`);
|
||||
});
|
||||
} else if (props.isLevel == 2) {
|
||||
apiTask.addTask({
|
||||
courseId: res.data.data.discussId,
|
||||
duration: res.data.data.discussExplain,
|
||||
name: res.data.data.discussName,
|
||||
projectId: props.projectId,
|
||||
projectTaskId: props.projectTaskId || 0,
|
||||
stageId: props.chooseStageId,
|
||||
type: 13,
|
||||
});
|
||||
} else if (props.isLevel == 3) {
|
||||
console.log("");
|
||||
}
|
||||
};
|
||||
const onSelectChange = (selectedRowKeys, selectRow) => {
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys, selectRow);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.selectedRows = selectRow;
|
||||
};
|
||||
|
||||
const showSameModal = () => {
|
||||
state.sameModal = true;
|
||||
};
|
||||
const closeSameModal = () => {
|
||||
state.sameProj = null;
|
||||
state.sameModal = false;
|
||||
};
|
||||
const sureSameModal = () => {
|
||||
// updateTask(state.sameProj);
|
||||
state.selectedRows.forEach((item) => {
|
||||
updateTask(item);
|
||||
});
|
||||
state.sameProj = null;
|
||||
state.sameModal = false;
|
||||
closeDrawer();
|
||||
ctx.emit("changeData", false);
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
afterVisibleChange,
|
||||
closeDrawer,
|
||||
getTableDate,
|
||||
start,
|
||||
getAllProjText,
|
||||
onSelectChange,
|
||||
tableDataFunc,
|
||||
updateTaskList,
|
||||
searchProjectList,
|
||||
resetProjectList,
|
||||
handelChangePage,
|
||||
showSameModal,
|
||||
closeSameModal,
|
||||
sureSameModal,
|
||||
// rowSelection,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.ant-table-striped :deep(.table-striped) td {
|
||||
background-color: #fafafa !important;
|
||||
}
|
||||
.sameModal {
|
||||
.ant-modal {
|
||||
width: 424px !important;
|
||||
height: 258px !important;
|
||||
.ant-modal-content {
|
||||
width: 424px !important;
|
||||
height: 258px !important;
|
||||
.ant-modal-body {
|
||||
width: 424px !important;
|
||||
height: 258px !important;
|
||||
padding: 0 !important;
|
||||
.delete {
|
||||
z-index: 999;
|
||||
width: 424px;
|
||||
height: 258px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
|
||||
border-radius: 4px;
|
||||
// position: absolute;
|
||||
// left: 50%;
|
||||
// top: 10%;
|
||||
// transform: translate(-50%, -50%);
|
||||
.del_header {
|
||||
position: absolute;
|
||||
width: calc(100%);
|
||||
height: 68px;
|
||||
background: linear-gradient(
|
||||
rgba(78, 166, 255, 0.2) 0%,
|
||||
rgba(78, 166, 255, 0) 100%
|
||||
);
|
||||
}
|
||||
.del_main {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
.header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-top: 20px;
|
||||
padding-left: 26px;
|
||||
font-size: 16px;
|
||||
.icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 10px;
|
||||
background-image: url(@/assets/images/taskpage/gan.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%;
|
||||
}
|
||||
}
|
||||
.body {
|
||||
width: 100%;
|
||||
margin: 34px auto 56px auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
// background-color: red;
|
||||
position: relative;
|
||||
.back {
|
||||
position: absolute;
|
||||
top: 30px;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
color: #666666;
|
||||
}
|
||||
}
|
||||
.del_btnbox {
|
||||
display: flex;
|
||||
margin: 30px auto;
|
||||
justify-content: center;
|
||||
.del_btn {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
background: rgba(64, 158, 255, 0);
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
flex-shrink: 0;
|
||||
cursor: pointer;
|
||||
.btnText {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 40px;
|
||||
}
|
||||
}
|
||||
.btn1 {
|
||||
border: 1px solid rgba(64, 158, 255, 1);
|
||||
color: #4ea6ff;
|
||||
margin-right: 14px;
|
||||
}
|
||||
.btn2 {
|
||||
background-color: #4ea6ff;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.addrefDrawer {
|
||||
.drawerMain {
|
||||
// .main_notice {
|
||||
// display: flex;
|
||||
// justify-content: space-between;
|
||||
// align-items: center;
|
||||
// margin-bottom: 32px;
|
||||
// height: 40px;
|
||||
// background-color: #e9f6fe;
|
||||
// .mntc_left {
|
||||
// display: flex;
|
||||
// align-items: center;
|
||||
// .title {
|
||||
// color: rgba(0, 0, 0, 0.65);
|
||||
// margin-right: 17px;
|
||||
// }
|
||||
// .data {
|
||||
// color: #388be1;
|
||||
// }
|
||||
// .notice_icon {
|
||||
// width: 14px;
|
||||
// height: 14px;
|
||||
// margin-right: 9px;
|
||||
// margin-left: 9px;
|
||||
// background-image: url(@/assets/images/coursewareManage/gan.png);
|
||||
// background-size: 100% 100%;
|
||||
// }
|
||||
// }
|
||||
// .mntc_right {
|
||||
// cursor: pointer;
|
||||
// }
|
||||
// }
|
||||
.header {
|
||||
height: 73px;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-shrink: 0;
|
||||
.headerTitle {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
line-height: 25px;
|
||||
margin-left: 24px;
|
||||
}
|
||||
}
|
||||
.contentMain {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
.main_left {
|
||||
margin-top: 32px;
|
||||
padding-right: 30px;
|
||||
flex: 1;
|
||||
border-right: 1px solid #e8e8e8;
|
||||
.main_item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 32px;
|
||||
margin-bottom: 32px;
|
||||
.signbox {
|
||||
width: 120px;
|
||||
display: flex;
|
||||
justify-content: end;
|
||||
align-items: center;
|
||||
.sign {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
.btnbox {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
align-items: center;
|
||||
.ant-input {
|
||||
height: 100%;
|
||||
}
|
||||
.xkbtn {
|
||||
cursor: pointer;
|
||||
width: 130px;
|
||||
height: 40px;
|
||||
background: #388be1;
|
||||
border-radius: 8px;
|
||||
border: 0;
|
||||
margin-right: 8px;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.main_item2 {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 32px;
|
||||
.signbox {
|
||||
width: 120px;
|
||||
display: flex;
|
||||
justify-content: end;
|
||||
align-items: center;
|
||||
.sign {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
.textarea {
|
||||
width: 423px;
|
||||
.ant-input {
|
||||
width: 100%;
|
||||
}
|
||||
.ant-input-textarea-show-count {
|
||||
position: relative;
|
||||
}
|
||||
.ant-input-textarea-show-count::after {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 0px;
|
||||
}
|
||||
.ant-input {
|
||||
border-radius: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.main_btns {
|
||||
height: 72px;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||
.btn1 {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border: 1px solid #4ea6ff;
|
||||
border-radius: 8px;
|
||||
color: #4ea6ff;
|
||||
background-color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn2 {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
background: #4ea6ff;
|
||||
border-radius: 8px;
|
||||
border: 0;
|
||||
margin-left: 15px;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -69,7 +69,7 @@ export default {
|
||||
};
|
||||
noticeList(obj)
|
||||
.then((res) => {
|
||||
console.log("获取公告列表成功");
|
||||
console.log("获取公告列表成功", res.data.data);
|
||||
let result = res.data.data;
|
||||
if (result.total > 0) {
|
||||
setNoticeData(result.rows);
|
||||
|
||||
@@ -493,7 +493,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 确认添加部门弹窗 -->
|
||||
<!-- 确认添加部门弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="showOrgModal"
|
||||
:footer="null"
|
||||
@@ -527,10 +527,11 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { reactive, toRefs, onMounted, onUnmounted } from "vue";
|
||||
import { reactive, toRefs, onMounted, onUnmounted, computed } from "vue";
|
||||
import elementResizeDetectorMaker from "element-resize-detector";
|
||||
import { message } from "ant-design-vue";
|
||||
import { toDate } from "../../api/method";
|
||||
import { useStore } from "vuex";
|
||||
export default {
|
||||
name: "ProjCheckShip",
|
||||
props: {
|
||||
@@ -540,8 +541,9 @@ export default {
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const store = useStore();
|
||||
const state = reactive({
|
||||
screenHeight: document.body.clientHeight, // 屏幕高度
|
||||
screenHeight: document.body.clientHeight, // 屏幕高度
|
||||
pageSize: 10,
|
||||
currentPage: 1,
|
||||
tableDataTotal: 50,
|
||||
@@ -1042,11 +1044,15 @@ export default {
|
||||
selectedRowKeys2: [], //表格选中的key
|
||||
//受众关联-------------------------------------
|
||||
});
|
||||
//获取组织树
|
||||
state.treeData = computed(() => {
|
||||
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
state.activeKey = "1";
|
||||
ctx.emit("update:ProjCheckvisible", false);
|
||||
};
|
||||
const afterVisibleChange = (bool) => {
|
||||
const afterVisibleChange = (bool) => {
|
||||
console.log("state", bool);
|
||||
};
|
||||
|
||||
@@ -1393,7 +1399,7 @@ export default {
|
||||
};
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
...toRefs(state),
|
||||
afterVisibleChange,
|
||||
closeDrawer,
|
||||
onSelectChange,
|
||||
|
||||
@@ -100,30 +100,30 @@
|
||||
详情{{ showDetail ? "折叠" : "展开" }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="audit">
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>审核:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-radio-group v-model:value="valuePass">
|
||||
<a-radio value="1">通过</a-radio>
|
||||
<a-radio value="2">不通过</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>审核意见:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-textarea v-model:value="valueSuggest" :rows="4" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detaile" @click="subMit">
|
||||
<button class="debtn">提交</button>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="修改记录"> </a-tab-pane>
|
||||
</a-tabs>
|
||||
<div class="audit">
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>审核:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-radio-group v-model:value="valuePass">
|
||||
<a-radio value="1">通过</a-radio>
|
||||
<a-radio value="2">不通过</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>审核意见:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-textarea v-model:value="valueSuggest" :rows="4" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="detaile">
|
||||
<button class="can" @click="closeDrawer">取消</button>
|
||||
<button class="debtn" @click="subMit">提交</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
@@ -196,6 +196,7 @@ export default {
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:ProjAuditvisible", false);
|
||||
state.valueSuggest = null;
|
||||
state.valuePass = "1";
|
||||
};
|
||||
|
||||
//获取项目信息
|
||||
@@ -405,11 +406,22 @@ export default {
|
||||
// background-color: blue;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.can {
|
||||
width: 130px;
|
||||
height: 40px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #387df7;
|
||||
color: #387df7;
|
||||
background-color: #fff;
|
||||
margin-right: 30px;
|
||||
}
|
||||
.debtn {
|
||||
width: 130px;
|
||||
height: 40px;
|
||||
background: #388be1;
|
||||
border-radius: 8px;
|
||||
border: 0;
|
||||
border-radius: 4px;
|
||||
color: #ffffff;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,8 +82,14 @@
|
||||
allow-clear
|
||||
:tree-data="treeData"
|
||||
@select="departmentSelect"
|
||||
v-model:selectedKeys="selectedKeys"
|
||||
:selectedKeys="selectedKeys"
|
||||
v-model:expandedKeys="openKeys"
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
key: 'id',
|
||||
title: 'name',
|
||||
value: 'name',
|
||||
}"
|
||||
>
|
||||
<template #suffixIcon></template>
|
||||
</a-tree>
|
||||
@@ -150,7 +156,7 @@
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn1">取消</button>
|
||||
<button class="btn2">确定</button>
|
||||
<button class="btn2" @click="addAuth">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -188,10 +194,11 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { reactive, toRefs, onMounted, onUnmounted } from "vue";
|
||||
import { reactive, toRefs, onMounted, onUnmounted, computed } from "vue";
|
||||
import elementResizeDetectorMaker from "element-resize-detector";
|
||||
// import { message } from "ant-design-vue";
|
||||
import * as api from "../../api/index1";
|
||||
import { useStore } from "vuex";
|
||||
export default {
|
||||
name: "ProjOwnerShip",
|
||||
props: {
|
||||
@@ -199,13 +206,21 @@ export default {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
selectProjectId: {
|
||||
type: Number,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
setup(props, ctx) {
|
||||
const store = useStore();
|
||||
|
||||
const state = reactive({
|
||||
screenHeight: document.body.clientHeight, // 屏幕高度
|
||||
//快速选人分页-----
|
||||
pageSize: 10,
|
||||
currentPage: 1,
|
||||
tableDataTotal: 50,
|
||||
tableDataTotal: -1,
|
||||
//快速选人分页------
|
||||
pageSize1: 10,
|
||||
currentPage1: 1,
|
||||
tableDataTotal1: 50,
|
||||
@@ -462,180 +477,186 @@ export default {
|
||||
],
|
||||
//快速选人的table
|
||||
tabledata: [
|
||||
{
|
||||
key: 1,
|
||||
name: "小李小李小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 2,
|
||||
name: "小刘小刘小刘",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 3,
|
||||
name: "小李小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 4,
|
||||
name: "小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 5,
|
||||
name: "小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 6,
|
||||
name: "小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 7,
|
||||
name: "小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 8,
|
||||
name: "小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 9,
|
||||
name: "小小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 10,
|
||||
name: "小小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 11,
|
||||
name: "小小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
{
|
||||
key: 12,
|
||||
name: "小小李",
|
||||
bum: "产研部",
|
||||
numb: "000000",
|
||||
guishu: "产品部",
|
||||
},
|
||||
// {
|
||||
// key: 1,
|
||||
// name: "小李小李小李",
|
||||
// bum: "产研部",
|
||||
// numb: "000000",
|
||||
// guishu: "产品部",
|
||||
// },
|
||||
],
|
||||
tablecolumns: [
|
||||
{
|
||||
title: "姓名",
|
||||
dataIndex: "name",
|
||||
key: "name",
|
||||
// width: 30,
|
||||
align: "left",
|
||||
width: 80,
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "工号",
|
||||
dataIndex: "numb",
|
||||
key: "numb",
|
||||
// width: 30,
|
||||
width: 80,
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "归属组织",
|
||||
dataIndex: "guishu",
|
||||
key: "guishu",
|
||||
// width: 30,
|
||||
width: 80,
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: "部门",
|
||||
dataIndex: "bum",
|
||||
key: "bum",
|
||||
// width: 30,
|
||||
width: 80,
|
||||
align: "center",
|
||||
className: "h",
|
||||
ellipsis: true,
|
||||
},
|
||||
],
|
||||
|
||||
//快速选人-------------------------------------
|
||||
valueSelectboe: null, //快速选人的选择组织
|
||||
choosepeople: [], //总的数组
|
||||
selectedKeys: [], //选中部门
|
||||
selectedKeys: [], //选中部门的key
|
||||
selectDepartment: null, //选中部门名称
|
||||
showMore: false, //是否显示快速选人的查看更多
|
||||
showHidden: false, //是否显示收回
|
||||
selectedRowKeys: [], //表格选中的key
|
||||
selectPeopleArr: [], //表格选中的人
|
||||
//快速选人-------------------------------------
|
||||
});
|
||||
|
||||
//获取组织树
|
||||
const getOrgTree = () => {
|
||||
let obj = {
|
||||
keyword: "",
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
};
|
||||
api
|
||||
.getOrgTree(obj)
|
||||
.then((res) => {
|
||||
if (res.status === 200) {
|
||||
console.log("获取组织树成功", res);
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("获取组织树失败", err);
|
||||
});
|
||||
};
|
||||
|
||||
const closeDrawer = () => {
|
||||
state.activeKey = "1";
|
||||
ctx.emit("update:ProjOwnervisible", false);
|
||||
};
|
||||
|
||||
const afterVisibleChange = (bool) => {
|
||||
console.log("state", bool);
|
||||
console.log("state", bool, props);
|
||||
if (bool) {
|
||||
getPeoples();
|
||||
optionAuthPerm();
|
||||
}
|
||||
};
|
||||
|
||||
const getClientHeight = () => {
|
||||
state.screenHeight = document.body.clientHeight;
|
||||
};
|
||||
// //监测快速选人的高度
|
||||
// const getClientHeightSelecteds = () => {
|
||||
// state.selectedsHeight = document.getElementById('selecteds').offsetHeight
|
||||
// console.log('selectedsHeight',state.selectedsHeight)
|
||||
//获取组织树
|
||||
state.treeData = computed(() => {
|
||||
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
||||
});
|
||||
//获取选中部门的人员信息
|
||||
const getPeoples = () => {
|
||||
let obj = {
|
||||
keyWord: "",
|
||||
id: 0,
|
||||
org: state.selectedKeys[0],
|
||||
pageNo: state.currentPage,
|
||||
pageSize: state.pageSize,
|
||||
};
|
||||
if (!state.selectedKeys[0]) {
|
||||
state.tableDataTotal = 0;
|
||||
return;
|
||||
}
|
||||
// console.log("obj", obj);
|
||||
api
|
||||
.getMemberInfo(obj)
|
||||
.then((res) => {
|
||||
// console.log("获取学员成功", res.data);
|
||||
if (res.data.code === 200) {
|
||||
let arr = res.data.data.rows;
|
||||
let array = [];
|
||||
arr.map((value) => {
|
||||
// console.log("学员信息", value);
|
||||
let obj = {
|
||||
key: value.id,
|
||||
id: value.id,
|
||||
name: value.realName ? value.realName : "-",
|
||||
bum: state.selectDepartment ? state.selectDepartment : "-",
|
||||
numb: value.userNo ? value.userNo : "-",
|
||||
guishu: state.selectDepartment ? state.selectDepartment : "-",
|
||||
};
|
||||
array.push(obj);
|
||||
});
|
||||
state.tabledata = array;
|
||||
state.tableDataTotal = res.data.data.total;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("获取学员失败", err);
|
||||
});
|
||||
};
|
||||
|
||||
//分页
|
||||
const changePagination = () => {
|
||||
getPeoples();
|
||||
};
|
||||
//获取授权
|
||||
const optionAuthPerm = () => {
|
||||
let obj = {
|
||||
keyWord: "",
|
||||
tag: 1, //归属权
|
||||
opt: 1, //查询
|
||||
type: 2, //项目
|
||||
// refId: props.selectProjectId, //项目id
|
||||
refId: 64,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
studentList: [],
|
||||
};
|
||||
console.log("obj", obj);
|
||||
api
|
||||
.optionAuthPerm(obj)
|
||||
.then((res) => {
|
||||
console.log("获取授权成功", res);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("获取授权失败", err);
|
||||
});
|
||||
};
|
||||
//修改归属权
|
||||
const changeOwnership = () => {
|
||||
let obj = {
|
||||
keyWord: "",
|
||||
tag: 2, //归属权
|
||||
opt: 3, //修改
|
||||
type: 2, //项目
|
||||
// refId: props.selectProjectId, //项目id
|
||||
refId: 64,
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
// studentList: state.selectPeopleArr,
|
||||
studentList: [{ id: "966733333637632000", name: "何丹" }],
|
||||
};
|
||||
console.log("修改归属权obj", obj);
|
||||
api
|
||||
.optionAuthPerm(obj)
|
||||
.then((res) => {
|
||||
console.log("修改授权成功", res);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("修改授权失败", err);
|
||||
});
|
||||
};
|
||||
//确认修改归属权
|
||||
const addAuth = () => {
|
||||
changeOwnership();
|
||||
};
|
||||
|
||||
// };
|
||||
onMounted(() => {
|
||||
// console.log("11111", 1);
|
||||
window.addEventListener("resize", getClientHeight, false);
|
||||
// window.addEventListener("resize", getClientHeightSelecteds, false);
|
||||
// judgeUrl();
|
||||
|
||||
getOrgTree();
|
||||
});
|
||||
onUnmounted(() => {
|
||||
window.removeEventListener("resize", getClientHeight, false);
|
||||
@@ -645,15 +666,35 @@ export default {
|
||||
// 开始 快速选人------------------------------------------------------------------
|
||||
//选中部门
|
||||
const departmentSelect = (e, k) => {
|
||||
console.log("选中的部门", e, k);
|
||||
state.selectedKeys = [k.node.key];
|
||||
if (k.node.treeChildList === null) {
|
||||
state.selectedKeys = [k.node.key];
|
||||
state.selectDepartment = k.node.name;
|
||||
getPeoples();
|
||||
}
|
||||
// console.log("kkkkkk", k);
|
||||
// state.selectedKeys = [k.node.key];
|
||||
// state.selectDepartment = k.node.name;
|
||||
// getPeoples();
|
||||
};
|
||||
//快速选人 选中的数组
|
||||
const onSelectChange = (selectedRowKeys, item) => {
|
||||
// console.log("selectedRowKeys changed: ", selectedRowKeys,item);
|
||||
console.log("selectedRowKeys changed: ", selectedRowKeys, item);
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.choosepeople = item.reverse();
|
||||
selectedsHeight();
|
||||
|
||||
//选中的人
|
||||
let arr = [];
|
||||
for (let i = 0; i < item.length; i++) {
|
||||
console.log("item[i]", item[i]);
|
||||
let obj = {
|
||||
id: item[i].id,
|
||||
name: item[i].name,
|
||||
};
|
||||
arr.push(obj);
|
||||
}
|
||||
state.selectPeopleArr = arr;
|
||||
|
||||
// selectedsHeight();
|
||||
};
|
||||
//单个删除选中的人
|
||||
const deleteChoosePeople = (item) => {
|
||||
@@ -752,6 +793,10 @@ export default {
|
||||
|
||||
deleteAll,
|
||||
expandTree,
|
||||
changePagination,
|
||||
optionAuthPerm,
|
||||
changeOwnership,
|
||||
addAuth,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -1016,6 +1061,14 @@ export default {
|
||||
// }
|
||||
}
|
||||
.tabb {
|
||||
flex: 1;
|
||||
// .ant-table-wrapper {
|
||||
// min-height: 500px;
|
||||
// }
|
||||
.ant-radio {
|
||||
margin-left: 8px;
|
||||
// margin-right: 3px;
|
||||
}
|
||||
.ant-table-thead > tr > th {
|
||||
background-color: rgba(240, 246, 252, 1);
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
|
||||
@@ -1,466 +1,497 @@
|
||||
<template>
|
||||
<a-drawer
|
||||
:visible="STvisible"
|
||||
class="drawerStyle TimeManage"
|
||||
placement="right"
|
||||
width="60%"
|
||||
@after-visible-change="afterVisibleChange"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">选择考试</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
<a-drawer
|
||||
:visible="STvisible"
|
||||
class="drawerStyle TimeManage"
|
||||
placement="right"
|
||||
width="60%"
|
||||
@after-visible-change="afterVisibleChange"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">选择考试</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="search">
|
||||
<div class="sealeft">
|
||||
<div class="namecon" style="margin-right: 30px">
|
||||
<div class="name">试卷名称:</div>
|
||||
<a-input
|
||||
v-model:value="inputPname"
|
||||
style="width: 270px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入试卷名称或序号"
|
||||
/>
|
||||
</div>
|
||||
<div class="namecon" style="margin-right: 30px">
|
||||
<div class="name">创建人:</div>
|
||||
<a-input
|
||||
v-model:value="inputCname"
|
||||
style="width: 240px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入创建人"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btns">
|
||||
<div
|
||||
class="btn btn1"
|
||||
style="margin-right: 20px"
|
||||
@click="searchTaskList"
|
||||
>
|
||||
<div class="img1"></div>
|
||||
<div class="wz">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="resetTaskList">
|
||||
<div class="img2"></div>
|
||||
<div class="wz">重置</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnss" style="margin-top: 20px">
|
||||
<div class="btn btn1" @click="newTest()" style="margin-right: 20px">
|
||||
<div class="wz">新建考试</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab" style="margin-top: 20px; margin-bottom: 100px">
|
||||
<a-table
|
||||
style="border: 1px solid #f2f6fe"
|
||||
:columns="tableDataFunc()"
|
||||
:data-source="tableData"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:row-selection="{
|
||||
selectedRowKeys: selectedRowKeys,
|
||||
onChange: onSelectChange,
|
||||
hideSelectAll: true,
|
||||
}"
|
||||
:scroll="{ x: 900 }"
|
||||
:pagination="false"
|
||||
/>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="search">
|
||||
<div class="sealeft">
|
||||
<div class="namecon" style="margin-right: 30px">
|
||||
<div class="name">试卷名称:</div>
|
||||
<a-input
|
||||
v-model:value="inputPname"
|
||||
style="width: 270px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入试卷名称或序号"
|
||||
/>
|
||||
</div>
|
||||
<div class="namecon" style="margin-right: 30px">
|
||||
<div class="name">创建人:</div>
|
||||
<a-input
|
||||
v-model:value="inputCname"
|
||||
style="width: 240px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入创建人"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btns">
|
||||
<div
|
||||
class="btn btn1"
|
||||
style="margin-right: 20px"
|
||||
@click="searchTaskList"
|
||||
>
|
||||
<div class="img1"></div>
|
||||
<div class="wz">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="resetTaskList">
|
||||
<div class="img2"></div>
|
||||
<div class="wz">重置</div>
|
||||
</div>
|
||||
<div class="tableBox">
|
||||
<div class="pa">
|
||||
<a-pagination
|
||||
showSizeChanger="true"
|
||||
showQuickJumper="true"
|
||||
hideOnSinglePage="true"
|
||||
:pageSize="pageSize"
|
||||
:current="currentPage"
|
||||
:total="tableDataTotal"
|
||||
class="pagination"
|
||||
@change="onChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnss" style="margin-top: 20px">
|
||||
<div class="btn btn1" @click="newTest()" style="margin-right: 20px">
|
||||
<div class="wz">新建考试</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab" style="margin-top: 20px; margin-bottom: 100px">
|
||||
<a-table
|
||||
style="border: 1px solid #f2f6fe"
|
||||
:columns="tableDataFunc()"
|
||||
:data-source="tableData"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
:row-selection="{selectedRowKeys:selectedRowKeys, onChange:onSelectChange, hideSelectAll:true}"
|
||||
:scroll="{ x: 900 }"
|
||||
:pagination="false"
|
||||
/>
|
||||
<div class="tableBox">
|
||||
<div class="pa">
|
||||
<a-pagination
|
||||
showSizeChanger="true"
|
||||
showQuickJumper="true"
|
||||
hideOnSinglePage="true"
|
||||
:pageSize="pageSize"
|
||||
:current="currentPage"
|
||||
:total="tableDataTotal"
|
||||
class="pagination"
|
||||
@change="onChange"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn1">取消</button>
|
||||
<button class="btn2" @click="CreatSTText()">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<div class="btnn">
|
||||
<button class="btn1">取消</button>
|
||||
<button class="btn2" @click="CreatSTText()">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
|
||||
<!-- 新建考试 -->
|
||||
<a-modal
|
||||
v-model:visible="addExamVisible"
|
||||
:footer="null"
|
||||
:closable="false"
|
||||
wrapClassName="modalStyle addExamModal"
|
||||
:zIndex="9999"
|
||||
>
|
||||
<iframe
|
||||
id="iframe"
|
||||
style="width: 100%; height: 100%"
|
||||
:src="iframeUrl + '/exam/tests'"
|
||||
name="myframe"
|
||||
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
|
||||
></iframe>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { toRefs, reactive } from "vue";
|
||||
import * as api from "../../api/indexTest";
|
||||
import { message } from 'ant-design-vue';
|
||||
export default {
|
||||
name: "STest",
|
||||
props: {
|
||||
STvisible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
import { toRefs, reactive } from "vue";
|
||||
import * as api from "../../api/indexTest";
|
||||
import { message } from "ant-design-vue";
|
||||
import { iframeUrl } from "../../api/method";
|
||||
export default {
|
||||
name: "STest",
|
||||
props: {
|
||||
STvisible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
inputPname: "",
|
||||
inputCname: "",
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
currentPage: 1,
|
||||
tableDataTotal: 0,
|
||||
projectName: "",
|
||||
tableData: [],
|
||||
selectedRowKeys:[],
|
||||
//需要传给父亲的参数
|
||||
SelectTestData:{},
|
||||
},
|
||||
|
||||
});
|
||||
//点击确认后执行此方法将参数传给父亲
|
||||
const CreatSTText = ()=> {
|
||||
ctx.emit('getSTData',state.SelectTestData)
|
||||
closeDrawer()
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
inputPname: "",
|
||||
inputCname: "",
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
currentPage: 1,
|
||||
tableDataTotal: 0,
|
||||
projectName: "",
|
||||
tableData: [],
|
||||
selectedRowKeys: [],
|
||||
//需要传给父亲的参数
|
||||
SelectTestData: {},
|
||||
|
||||
addExamVisible: false, //新建考试弹窗
|
||||
iframeUrl: iframeUrl,
|
||||
});
|
||||
//点击确认后执行此方法将参数传给父亲
|
||||
const CreatSTText = () => {
|
||||
ctx.emit("getSTData", state.SelectTestData);
|
||||
closeDrawer();
|
||||
};
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:STvisible", false);
|
||||
};
|
||||
|
||||
const afterVisibleChange = (bol) => {
|
||||
if (bol == true) {
|
||||
getManageList();
|
||||
}
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:STvisible", false);
|
||||
};
|
||||
};
|
||||
|
||||
const afterVisibleChange = (bol) => {
|
||||
if (bol == true) {
|
||||
getManageList()
|
||||
}
|
||||
};
|
||||
|
||||
const tableDataFunc = ()=> {
|
||||
{
|
||||
const columns = [
|
||||
{
|
||||
title: "序号",
|
||||
dataIndex: "paperId",
|
||||
key: "paperId",
|
||||
width: 90,
|
||||
align: "center",
|
||||
className: "h head",
|
||||
},
|
||||
{
|
||||
title: "试卷名称",
|
||||
dataIndex: "testName",
|
||||
key: "testName",
|
||||
width: 110,
|
||||
align: "center",
|
||||
className: "h head",
|
||||
},
|
||||
{
|
||||
title: "随机模式",
|
||||
dataIndex: "paperMode",
|
||||
key: "paperMode",
|
||||
width: 110,
|
||||
align: "center",
|
||||
className: "h",
|
||||
},
|
||||
{
|
||||
title: "创建人",
|
||||
dataIndex: "sysCreateBy",
|
||||
key: "sysCreateBy",
|
||||
width: 90,
|
||||
align: "center",
|
||||
className: "h",
|
||||
},
|
||||
{
|
||||
title: "最近更新时间",
|
||||
dataIndex: "sysUpdateTime",
|
||||
key: "sysUpdateTime",
|
||||
width: 150,
|
||||
align: "center",
|
||||
className: "h",
|
||||
},
|
||||
]
|
||||
return columns;
|
||||
}
|
||||
};
|
||||
|
||||
const onChange = (pageNumber) => {
|
||||
console.log("Page: ", pageNumber);
|
||||
};
|
||||
|
||||
const onSelectChange = (selectedRowKeys,selectedRows) => {
|
||||
if(selectedRowKeys.length>1){
|
||||
return
|
||||
}
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.SelectTestData = selectedRows[0];
|
||||
console.log('state.SelectTestData---------------',state.SelectTestData);
|
||||
const tableDataFunc = () => {
|
||||
{
|
||||
const columns = [
|
||||
{
|
||||
title: "序号",
|
||||
dataIndex: "paperId",
|
||||
key: "paperId",
|
||||
width: 90,
|
||||
align: "center",
|
||||
className: "h head",
|
||||
},
|
||||
{
|
||||
title: "试卷名称",
|
||||
dataIndex: "testName",
|
||||
key: "testName",
|
||||
width: 110,
|
||||
align: "center",
|
||||
className: "h head",
|
||||
},
|
||||
{
|
||||
title: "随机模式",
|
||||
dataIndex: "paperMode",
|
||||
key: "paperMode",
|
||||
width: 110,
|
||||
align: "center",
|
||||
className: "h",
|
||||
},
|
||||
{
|
||||
title: "创建人",
|
||||
dataIndex: "sysCreateBy",
|
||||
key: "sysCreateBy",
|
||||
width: 90,
|
||||
align: "center",
|
||||
className: "h",
|
||||
},
|
||||
{
|
||||
title: "最近更新时间",
|
||||
dataIndex: "sysUpdateTime",
|
||||
key: "sysUpdateTime",
|
||||
width: 150,
|
||||
align: "center",
|
||||
className: "h",
|
||||
},
|
||||
];
|
||||
return columns;
|
||||
}
|
||||
};
|
||||
|
||||
const newTest = ()=> {
|
||||
console.log('创建考试没设计图');
|
||||
const onChange = (pageNumber) => {
|
||||
console.log("Page: ", pageNumber);
|
||||
};
|
||||
|
||||
const onSelectChange = (selectedRowKeys, selectedRows) => {
|
||||
if (selectedRowKeys.length > 1) {
|
||||
return;
|
||||
}
|
||||
const getTableDate = (tableData) => {
|
||||
state.selectedRowKeys = selectedRowKeys;
|
||||
state.SelectTestData = selectedRows[0];
|
||||
console.log("state.SelectTestData---------------", state.SelectTestData);
|
||||
};
|
||||
|
||||
const newTest = () => {
|
||||
console.log("创建考试没设计图");
|
||||
state.addExamVisible = true;
|
||||
};
|
||||
const getTableDate = (tableData) => {
|
||||
let data = tableData;
|
||||
let array = [];
|
||||
data.map((value, index) => {
|
||||
let obj = {
|
||||
key: index+1,
|
||||
key: index + 1,
|
||||
sysCreateBy: value.sysCreateBy,
|
||||
paperId: value.paperId,
|
||||
testName:value.testName,
|
||||
paperMode:value.paperMode,
|
||||
testName: value.testName,
|
||||
paperMode: value.paperMode,
|
||||
sysUpdateTime: value.sysUpdateTime,
|
||||
};
|
||||
array.push(obj);
|
||||
});
|
||||
state.tableData = array;
|
||||
};
|
||||
//获取任务管理列表
|
||||
const getManageList = () => {
|
||||
let obj = {
|
||||
// "keyWord": "",
|
||||
// "pageIndex": 0,
|
||||
// "pageSize": 0,
|
||||
// "published": true,
|
||||
"keyWord": "",
|
||||
"orderAsc": true,
|
||||
"orderFiled": "",
|
||||
"pageIndex": 0,
|
||||
"pageSize": 0
|
||||
};
|
||||
api
|
||||
.queryExaminationPaper(obj)
|
||||
.then((res) => {
|
||||
getTableDate(res.data.data)
|
||||
})
|
||||
.catch(() => {
|
||||
message.destroy()
|
||||
message.error("获取选择考试列表失败")
|
||||
});
|
||||
//获取任务管理列表
|
||||
const getManageList = () => {
|
||||
let obj = {
|
||||
// "keyWord": "",
|
||||
// "pageIndex": 0,
|
||||
// "pageSize": 0,
|
||||
// "published": true,
|
||||
keyWord: "",
|
||||
orderAsc: true,
|
||||
orderFiled: "",
|
||||
pageIndex: 0,
|
||||
pageSize: 0,
|
||||
};
|
||||
|
||||
//搜索任务列表 没接口
|
||||
const searchTaskList = () => {
|
||||
let objser = {
|
||||
name: "",
|
||||
pageNo: state.pageNo,
|
||||
pageSize: state.pageSize,
|
||||
projectId: 27,
|
||||
api
|
||||
.queryExaminationPaper(obj)
|
||||
.then((res) => {
|
||||
getTableDate(res.data.data);
|
||||
})
|
||||
.catch(() => {
|
||||
message.destroy();
|
||||
message.error("获取选择考试列表失败");
|
||||
});
|
||||
};
|
||||
|
||||
//搜索任务列表 没接口
|
||||
const searchTaskList = () => {
|
||||
let objser = {
|
||||
name: "",
|
||||
pageNo: state.pageNo,
|
||||
pageSize: state.pageSize,
|
||||
projectId: 27,
|
||||
// projectTaskId: props.projectTaskId,
|
||||
projectTaskId: 370,
|
||||
status: -1,
|
||||
};
|
||||
if (state.name !== "" || state.projectName !== "") {
|
||||
api
|
||||
.taskStudentList(objser)
|
||||
.then((res) => {
|
||||
state.pageNo = res.data.data.pageNo;
|
||||
state.pageSize = res.data.data.pageSize;
|
||||
state.pageSize = res.data.data.pageSize;
|
||||
let newArr = [];
|
||||
for (let i = 0; i < res.data.data.rows.length; i++) {
|
||||
if (res.data.data.rows[i].userInfoBo.userName == state.name)
|
||||
newArr.push(res.data.data.rows[i].userInfoBo);
|
||||
}
|
||||
state.tabledata = newArr;
|
||||
})
|
||||
.catch(() => {
|
||||
});
|
||||
}
|
||||
projectTaskId: 370,
|
||||
status: -1,
|
||||
};
|
||||
|
||||
//重置任务列表
|
||||
const resetTaskList = () => {
|
||||
state.inputPname = "";
|
||||
state.inputCname = "";
|
||||
state.tableData = [];
|
||||
state.selectedRowKeys = [];
|
||||
state.SelectTestData = [];
|
||||
state.currentPage = 1;
|
||||
getManageList();
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
closeDrawer,
|
||||
afterVisibleChange,
|
||||
getTableDate,
|
||||
onSelectChange,
|
||||
CreatSTText,
|
||||
newTest,
|
||||
tableDataFunc,
|
||||
onChange,
|
||||
getManageList,
|
||||
searchTaskList,
|
||||
resetTaskList,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
if (state.name !== "" || state.projectName !== "") {
|
||||
api
|
||||
.taskStudentList(objser)
|
||||
.then((res) => {
|
||||
state.pageNo = res.data.data.pageNo;
|
||||
state.pageSize = res.data.data.pageSize;
|
||||
state.pageSize = res.data.data.pageSize;
|
||||
let newArr = [];
|
||||
for (let i = 0; i < res.data.data.rows.length; i++) {
|
||||
if (res.data.data.rows[i].userInfoBo.userName == state.name)
|
||||
newArr.push(res.data.data.rows[i].userInfoBo);
|
||||
}
|
||||
state.tabledata = newArr;
|
||||
})
|
||||
.catch(() => {});
|
||||
}
|
||||
};
|
||||
|
||||
//重置任务列表
|
||||
const resetTaskList = () => {
|
||||
state.inputPname = "";
|
||||
state.inputCname = "";
|
||||
state.tableData = [];
|
||||
state.selectedRowKeys = [];
|
||||
state.SelectTestData = [];
|
||||
state.currentPage = 1;
|
||||
getManageList();
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
closeDrawer,
|
||||
afterVisibleChange,
|
||||
getTableDate,
|
||||
onSelectChange,
|
||||
CreatSTText,
|
||||
newTest,
|
||||
tableDataFunc,
|
||||
onChange,
|
||||
getManageList,
|
||||
searchTaskList,
|
||||
resetTaskList,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.TimeManage {
|
||||
.drawerMain {
|
||||
min-width: 550px;
|
||||
margin: 0px 32px 0px 32px;
|
||||
overflow-x: auto;
|
||||
.TimeManage {
|
||||
.drawerMain {
|
||||
min-width: 550px;
|
||||
margin: 0px 32px 0px 32px;
|
||||
overflow-x: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.header {
|
||||
height: 73px;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.header {
|
||||
height: 73px;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
display: flex;
|
||||
flex-shrink: 0;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
.headerTitle {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
line-height: 25px;
|
||||
}
|
||||
flex-shrink: 0;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
.headerTitle {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
line-height: 25px;
|
||||
}
|
||||
.main {
|
||||
}
|
||||
.main {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
padding-right: 10px;
|
||||
.search {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
padding-right: 10px;
|
||||
.search {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 20px;
|
||||
justify-content: space-between;
|
||||
|
||||
.sealeft {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 20px;
|
||||
justify-content: space-between;
|
||||
|
||||
.sealeft {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
.namecon {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
margin-bottom: 10px;
|
||||
.name {
|
||||
margin-top: 8px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
.btns {
|
||||
.namecon {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
|
||||
.btn {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.img1 {
|
||||
width: 15px;
|
||||
height: 17px;
|
||||
background-image: url(../../assets/images/courseManage/search0.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
.img2 {
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
background-image: url(../../assets/images/courseManage/reset1.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
}
|
||||
|
||||
.btn1 {
|
||||
background: #409eff;
|
||||
|
||||
color: #ffffff;
|
||||
}
|
||||
.btn2 {
|
||||
background: #ffffff;
|
||||
|
||||
color: #388be1;
|
||||
border: 1px solid #388be1;
|
||||
margin-bottom: 10px;
|
||||
.name {
|
||||
margin-top: 8px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
.btnss {
|
||||
.btns {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
|
||||
|
||||
.btn {
|
||||
cursor: pointer;
|
||||
width: 130px;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.img1 {
|
||||
width: 15px;
|
||||
height: 17px;
|
||||
background-image: url(../../assets/images/courseManage/search0.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
.img2 {
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
background-image: url(../../assets/images/courseManage/reset1.png);
|
||||
background-size: 100% 100%;
|
||||
margin-right: 7px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.btn1 {
|
||||
background: #409eff;
|
||||
|
||||
color: #ffffff;
|
||||
}
|
||||
.btn2 {
|
||||
background: #ffffff;
|
||||
|
||||
color: #388be1;
|
||||
border: 1px solid #388be1;
|
||||
}
|
||||
}
|
||||
.tab {
|
||||
th,th.h {
|
||||
background-color: #eff4fc !important;
|
||||
}
|
||||
|
||||
.ant-table-tbody
|
||||
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||
> td {
|
||||
background: #f6f9fd;
|
||||
}
|
||||
.tableBox {
|
||||
.pa {
|
||||
margin-top: 15px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.ant-pagination-prev,
|
||||
.ant-pagination-next,
|
||||
.ant-pagination-item,
|
||||
.ant-pagination-options {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
.btnss {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
|
||||
.btn {
|
||||
cursor: pointer;
|
||||
width: 130px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.btn1 {
|
||||
background: #409eff;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
.tab {
|
||||
th,
|
||||
th.h {
|
||||
background-color: #eff4fc !important;
|
||||
}
|
||||
|
||||
.ant-table-tbody
|
||||
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||
> td {
|
||||
background: #f6f9fd;
|
||||
}
|
||||
.tableBox {
|
||||
.pa {
|
||||
margin-top: 15px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.ant-pagination-prev,
|
||||
.ant-pagination-next,
|
||||
.ant-pagination-item,
|
||||
.ant-pagination-options {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btnn {
|
||||
height: 72px;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.btnn {
|
||||
height: 72px;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||
.btn1 {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border: 1px solid #4ea6ff;
|
||||
border-radius: 8px;
|
||||
color: #4ea6ff;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
|
||||
.btn1 {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
border: 1px solid #4ea6ff;
|
||||
border-radius: 8px;
|
||||
color: #4ea6ff;
|
||||
background-color: #fff;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn2 {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
background: #409eff;
|
||||
border-radius: 8px;
|
||||
border: 0;
|
||||
margin-left: 15px;
|
||||
color: #fff;
|
||||
}
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn2 {
|
||||
cursor: pointer;
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
background: #409eff;
|
||||
border-radius: 8px;
|
||||
border: 0;
|
||||
margin-left: 15px;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
}
|
||||
|
||||
.addExamModal {
|
||||
.ant-modal {
|
||||
width: 80% !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-09 09:26:26
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2022-11-21 17:43:07
|
||||
* @LastEditTime: 2022-11-23 17:25:31
|
||||
* @FilePath: /fe-manage/src/store/index.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
import { createStore } from "vuex";
|
||||
|
||||
// import * as api from '../api/index1'
|
||||
export default createStore({
|
||||
state: {
|
||||
openpages: localStorage.getItem("openpages")
|
||||
@@ -22,7 +22,7 @@ export default createStore({
|
||||
|
||||
assessmentName: "",
|
||||
routerId: null,
|
||||
projectTemplateId:null,
|
||||
projectTemplateId: null,
|
||||
orgtreeList: [],
|
||||
},
|
||||
getters: {},
|
||||
@@ -41,12 +41,15 @@ export default createStore({
|
||||
console.log("state.assessmentName");
|
||||
console.log(state.assessmentName);
|
||||
},
|
||||
getOrgtreeList(state, orgtreeList) {
|
||||
state.orgtreeList = orgtreeList;
|
||||
//获取组织树
|
||||
getOrgtreeList(state, data) {
|
||||
state.orgtreeList = data
|
||||
},
|
||||
SET_projectTemplateId (state,projectTemplateId) {
|
||||
SET_projectTemplateId(state, projectTemplateId) {
|
||||
state.projectTemplateId = projectTemplateId;
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
actions: {},
|
||||
modules: {},
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-09 09:26:26
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2022-11-22 20:13:01
|
||||
* @LastEditTime: 2022-11-24 16:16:10
|
||||
* @FilePath: /fe-manage/src/views/courselibrary/CourseManage.vue
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
-->
|
||||
@@ -11,8 +11,8 @@
|
||||
<div class="courseManage">
|
||||
<iframe
|
||||
id="iframe"
|
||||
style="width: 100%l; height: 100%"
|
||||
src="https://u-pre.boe.com/pc/iframe/course/coursewares"
|
||||
style="width: 100%; height: 100%"
|
||||
:src="iframeUrl + '/course/coursewares'"
|
||||
name="myframe"
|
||||
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
|
||||
></iframe>
|
||||
@@ -20,12 +20,14 @@
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, onMounted } from "vue";
|
||||
|
||||
import { iframeUrl } from "../../api/method";
|
||||
export default {
|
||||
name: "CourseManage",
|
||||
|
||||
setup() {
|
||||
const state = reactive({});
|
||||
const state = reactive({
|
||||
iframeUrl: iframeUrl,
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
// console.log("执行");
|
||||
|
||||
@@ -2118,6 +2118,9 @@
|
||||
<!-- 添加授权侧弹窗 -->
|
||||
<corpowerlist v-model:corpowerlistVisible="corpowerlistvisible" />
|
||||
<!-- 添加授权侧弹窗 -->
|
||||
<!-- 新建在线课弹窗 -->
|
||||
<addOnlineCourse v-model:addOnlineCoursevisible="addOnlineCoursevisible" />
|
||||
<!-- 新建在线课弹窗 -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
@@ -2133,6 +2136,7 @@ import {
|
||||
import { message } from "ant-design-vue";
|
||||
import OwnPower from "../../components/drawers/OwnPower.vue";
|
||||
import Corpowerlist from "../../components/drawers/CorPowerlist.vue";
|
||||
import addOnlineCourse from "../../components/Modals/addOnlineCourse.vue";
|
||||
import {
|
||||
list,
|
||||
edit,
|
||||
@@ -2601,6 +2605,7 @@ export default defineComponent({
|
||||
Corpowerlist,
|
||||
Editor,
|
||||
Toolbar,
|
||||
addOnlineCourse,
|
||||
},
|
||||
setup() {
|
||||
const state = reactive({
|
||||
@@ -3067,6 +3072,7 @@ export default defineComponent({
|
||||
checked4: false,
|
||||
offcoursePlanId: 0,
|
||||
filesList: [],
|
||||
addOnlineCoursevisible: false, //新建面授弹窗
|
||||
});
|
||||
|
||||
// 富文本 sssssssssssssss
|
||||
@@ -3655,6 +3661,9 @@ export default defineComponent({
|
||||
state.qdms_inputV1 = state.xzinputV1;
|
||||
state.xzinputV1 = "";
|
||||
}
|
||||
if (state.bs_hs&& state.valueE1 != "") {
|
||||
state.addOnlineCoursevisible = true;
|
||||
}
|
||||
};
|
||||
const ft_exit = () => {
|
||||
state.ft_hs = false;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* @Author: lixg lixg@dongwu-inc.com
|
||||
* @Date: 2022-11-16 20:59:33
|
||||
* @LastEditors: lixg lixg@dongwu-inc.com
|
||||
* @LastEditTime: 2022-11-16 21:09:01
|
||||
* @LastEditTime: 2022-11-24 16:21:04
|
||||
* @FilePath: /fe-manage/src/views/examine/CourseReviewedN.vue
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
-->
|
||||
@@ -86,16 +86,334 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 审核弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="courAuditModal"
|
||||
:footer="null"
|
||||
:closable="closeBack"
|
||||
wrapClassName="courAuditModal"
|
||||
centered="true"
|
||||
>
|
||||
<div class="delete">
|
||||
<div class="del_header"></div>
|
||||
<div class="del_main">
|
||||
<div class="header">
|
||||
<div class="icon"></div>
|
||||
<span>审核</span>
|
||||
<div class="close_exit" @click="closeCourAuditModal"></div>
|
||||
</div>
|
||||
<div class="body">
|
||||
<div class="item">
|
||||
<div class="left">审核:</div>
|
||||
<div class="rig">
|
||||
<a-radio-group name="radioGroup" v-model:value="valuepass">
|
||||
<a-radio value="1">通过</a-radio>
|
||||
<a-radio value="2" style="margin-left: 40px">不通过</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="margin-top: 20px">
|
||||
<div class="left">审核意见:</div>
|
||||
<div class="rig">
|
||||
<a-textarea v-model:value="valueSugg" :rows="4" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="del_btnbox">
|
||||
<div class="del_btn btn1" @click="closeCourAuditModal">
|
||||
<div class="btnText">取消</div>
|
||||
</div>
|
||||
<div class="del_btn btn2" @click="sureCourAuditModal">
|
||||
<div class="btnText">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<!-- 预览弹窗 -->
|
||||
<a-modal
|
||||
v-model:visible="lookCourseModal"
|
||||
title="Title"
|
||||
@ok="handlePush"
|
||||
:footer="null"
|
||||
:closable="false"
|
||||
wrapClassName="modalStyle lookCourseModal"
|
||||
width="80%"
|
||||
@cancel="ft_exit"
|
||||
>
|
||||
<div class="modalHeader">
|
||||
<div class="headerLeft">
|
||||
<img
|
||||
style="width: 17px; height: 18px; margin-right: 8px"
|
||||
src="../../assets/images/basicinfo/add.png"
|
||||
/>
|
||||
<span class="headerLeftText">预览</span>
|
||||
</div>
|
||||
<div style="margin-right: 57px; cursor: pointer">
|
||||
<img
|
||||
@click="ft_exit"
|
||||
style="width: 22px; height: 22px"
|
||||
src="../../assets/images/basicinfo/close22.png"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modalMain">
|
||||
<div class="faceteach">
|
||||
<div class="ft_main">
|
||||
<div class="m_body">
|
||||
<div class="mb_left">
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 14px">课程名称:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="i1_input">fefewf</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="i2_cz">
|
||||
<div class="i2_top">
|
||||
<div
|
||||
class="i2_right"
|
||||
@click="hideShow"
|
||||
style="cursor: pointer"
|
||||
>
|
||||
<div class="b_icon"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items2">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 14px">封面图:</span>
|
||||
</div>
|
||||
<div class="item_inp">fefw</div>
|
||||
</div>
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
style="width: 10px; height: 10px"
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 14px">目标人群:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="i1_input"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<span style="margin-right: 14px">课程价值:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="i1_input"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 14px">资源归属:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="select i6_input"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 14px">内容分类:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="select i6_input"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<span style="margin-right: 14px">场景:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="select i7_input"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<span style="margin-right: 14px">内容标签:</span>
|
||||
</div>
|
||||
<div class="item_inp"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb_right">
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt="asterisk"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 14px">授课教师:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="i1_input"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items2">
|
||||
<div class="item_nam">
|
||||
<span style="margin-right: 14px">课程简介:</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<div class="i10_textarea"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<span style="margin-right: 10px">附件</span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<a-upload
|
||||
multiple
|
||||
:show-upload-list="false"
|
||||
:before-upload="beforeUpload2"
|
||||
>
|
||||
<div class="accessory" style="cursor: pointer">
|
||||
<div class="accessory_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/enclosure.png"
|
||||
alt="enclosure"
|
||||
/>
|
||||
</div>
|
||||
<span style="color: #4ea6ff">添加附件</span>
|
||||
</div>
|
||||
</a-upload>
|
||||
<span>
|
||||
支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items12">
|
||||
<div
|
||||
class="i12_box1"
|
||||
v-for="(item, index) in imgList"
|
||||
:key="index"
|
||||
>
|
||||
<div class="file_img">
|
||||
<img :src="item.img" />
|
||||
</div>
|
||||
<div class="file_detail">
|
||||
<div class="file_name">
|
||||
<span style="color: #6f6f6f">{{ item.name }}</span>
|
||||
</div>
|
||||
|
||||
<div class="file_updata">
|
||||
<div class="updatabox">
|
||||
<div class="updatacolor"></div>
|
||||
<div class="updataxq">上传完成</div>
|
||||
</div>
|
||||
<div class="upjd">
|
||||
<span style="margin: auto 5px">100%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="file_operation">
|
||||
<div class="fobox">
|
||||
<span style="color: #4ea6ff" @click="handleDel(index)">
|
||||
删除
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="m_footer">
|
||||
<div class="fotnam">
|
||||
<span>课程大纲</span>
|
||||
</div>
|
||||
<div class="fotarea">
|
||||
<div style="border: 1px solid #ccc">
|
||||
<Toolbar
|
||||
style="border-bottom: 1px solid #ccc"
|
||||
:editor="editorRef"
|
||||
:defaultConfig="toolbarConfig"
|
||||
:mode="mode"
|
||||
/>
|
||||
<Editor
|
||||
style="height: 500px; overflow-y: hidden"
|
||||
v-model="valueHtml"
|
||||
:defaultConfig="editorConfig"
|
||||
:mode="mode"
|
||||
@onCreated="handleCreated"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="m_btn">
|
||||
<div class="btn btn5">
|
||||
<div class="btnText" @click="ft_exit">取消</div>
|
||||
</div>
|
||||
<div class="btn btn6">
|
||||
<div class="btnText" @click="handlePush">确定</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
<!-- 审核在线课 -->
|
||||
<a-modal
|
||||
v-model:visible="onlineClassesVisible"
|
||||
:footer="null"
|
||||
:closable="false"
|
||||
wrapClassName="modalStyle onlineClassesStyle"
|
||||
:zIndex="9999"
|
||||
>
|
||||
<iframe
|
||||
id="iframe"
|
||||
style="width: 100%; height: 100%"
|
||||
:src="iframeUrl + 'course/noapproved'"
|
||||
name="myframe"
|
||||
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
|
||||
></iframe>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, onMounted } from "vue";
|
||||
import { list } from "../../api/indexAudit";
|
||||
import { list, courseAuditView } from "../../api/indexAudit";
|
||||
import { toDate } from "../../api/method";
|
||||
|
||||
import { message } from "ant-design-vue";
|
||||
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
|
||||
import { iframeUrl } from "../../api/method";
|
||||
export default {
|
||||
name: "CoursereViewedN",
|
||||
|
||||
components: {
|
||||
Editor,
|
||||
Toolbar,
|
||||
},
|
||||
setup() {
|
||||
const state = reactive({
|
||||
optionsproj: [
|
||||
@@ -115,6 +433,14 @@ export default {
|
||||
currentPage: 1,
|
||||
total: null,
|
||||
pageSize: 10,
|
||||
courAuditModal: false, //审核弹窗
|
||||
closeBack: false,
|
||||
valuepass: "1",
|
||||
valueSugg: null,
|
||||
chooseId: null,
|
||||
chooseCreater: null,
|
||||
chooseOffId: null,
|
||||
lookCourseModal: false, //预览
|
||||
columns1: [
|
||||
{
|
||||
title: "序号",
|
||||
@@ -170,38 +496,34 @@ export default {
|
||||
dataIndex: "opt",
|
||||
key: "opt",
|
||||
align: "center",
|
||||
customRender: () => {
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
<span style="cursor:pointer">审核</span>
|
||||
<span
|
||||
style="cursor:pointer"
|
||||
onClick={() => {
|
||||
showAudit(
|
||||
value.record.createId,
|
||||
value.record.creater,
|
||||
value.record.offId
|
||||
);
|
||||
}}
|
||||
>
|
||||
审核
|
||||
</span>
|
||||
|
||||
<span style="cursor:pointer">预览</span>
|
||||
</div>
|
||||
);
|
||||
},
|
||||
},
|
||||
],
|
||||
tableData1: [
|
||||
{
|
||||
number: "1",
|
||||
name: "课程1",
|
||||
type: "在线",
|
||||
content: "领导力/领导业务",
|
||||
status: "待审核",
|
||||
change: "",
|
||||
creater: "-",
|
||||
time: "-",
|
||||
},
|
||||
{
|
||||
number: "2",
|
||||
name: "面授课程",
|
||||
type: "在线",
|
||||
content: "领导力/领导业务",
|
||||
status: "待审核",
|
||||
change: "已转审",
|
||||
creater: "-",
|
||||
time: "-",
|
||||
},
|
||||
],
|
||||
// 待审核课程的数据
|
||||
tableData1: [],
|
||||
|
||||
//审核在线课嵌套页面
|
||||
onlineClassesVisible: false,
|
||||
iframeUrl: iframeUrl,
|
||||
});
|
||||
|
||||
const getFaceList = (obj) => {
|
||||
@@ -242,6 +564,8 @@ export default {
|
||||
change: "-",
|
||||
creater: item.createName,
|
||||
time: toDate(item.createTime, "Y-M-D h-m"),
|
||||
createrId: item.createId,
|
||||
offId: item.offcourseId,
|
||||
};
|
||||
array.push(obj);
|
||||
});
|
||||
@@ -271,6 +595,40 @@ export default {
|
||||
state.currentPage = pagina;
|
||||
getFaceList();
|
||||
};
|
||||
const showAudit = (id, creater, offId) => {
|
||||
state.courAuditModal = true;
|
||||
state.chooseId = id;
|
||||
state.chooseCreater = creater;
|
||||
state.chooseOffId = offId;
|
||||
};
|
||||
const closeCourAuditModal = () => {
|
||||
state.courAuditModal = false;
|
||||
state.valueSugg = null;
|
||||
state.valuepass = "1";
|
||||
state.chooseId = null;
|
||||
state.chooseCreater = null;
|
||||
state.chooseOffId = null;
|
||||
};
|
||||
const sureCourAuditModal = () => {
|
||||
courseAuditView({
|
||||
createId: state.chooseId,
|
||||
createName: state.chooseCreater,
|
||||
description: state.valueSugg,
|
||||
offcourseId: state.chooseOffId,
|
||||
pass: state.valuepass == "1" ? 1 : 0,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
state.courAuditModal = false;
|
||||
message.destroy();
|
||||
return message.success("审核提交成功");
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
message.destroy();
|
||||
return message.warning("审核提交失败");
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
getFaceList();
|
||||
});
|
||||
@@ -281,11 +639,468 @@ export default {
|
||||
search,
|
||||
reset,
|
||||
changePagination,
|
||||
showAudit,
|
||||
closeCourAuditModal,
|
||||
sureCourAuditModal,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.courAuditModal {
|
||||
.ant-modal {
|
||||
width: 640px !important;
|
||||
height: 400px !important;
|
||||
.ant-modal-content {
|
||||
width: 640px !important;
|
||||
height: 400px !important;
|
||||
.ant-modal-body {
|
||||
width: 640px !important;
|
||||
height: 400px !important;
|
||||
padding: 0 !important;
|
||||
.delete {
|
||||
z-index: 999;
|
||||
width: 640px;
|
||||
height: 400px;
|
||||
background: #ffffff;
|
||||
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.21);
|
||||
border-radius: 4px;
|
||||
// position: absolute;
|
||||
// left: 50%;
|
||||
// top: 10%;
|
||||
// transform: translate(-50%, -50%);
|
||||
.del_header {
|
||||
position: absolute;
|
||||
width: calc(100%);
|
||||
height: 68px;
|
||||
background: linear-gradient(
|
||||
rgba(78, 166, 255, 0.2) 0%,
|
||||
rgba(78, 166, 255, 0) 100%
|
||||
);
|
||||
}
|
||||
.del_main {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
.header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-top: 20px;
|
||||
padding-left: 26px;
|
||||
font-size: 16px;
|
||||
.icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 10px;
|
||||
background-image: url(@/assets/images/taskpage/gan.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%;
|
||||
}
|
||||
}
|
||||
.body {
|
||||
width: 100%;
|
||||
margin: 34px auto 56px auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
// background-color: red;
|
||||
position: relative;
|
||||
.item {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
.left {
|
||||
width: 110px;
|
||||
text-align: right;
|
||||
}
|
||||
.rig {
|
||||
width: 450px;
|
||||
.ant-input {
|
||||
border-radius: 8px;
|
||||
resize: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.del_btnbox {
|
||||
display: flex;
|
||||
margin: 30px auto;
|
||||
justify-content: center;
|
||||
.del_btn {
|
||||
width: 100px;
|
||||
height: 40px;
|
||||
background: rgba(64, 158, 255, 0);
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
flex-shrink: 0;
|
||||
cursor: pointer;
|
||||
.btnText {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 40px;
|
||||
}
|
||||
}
|
||||
.btn1 {
|
||||
border: 1px solid rgba(64, 158, 255, 1);
|
||||
color: #4ea6ff;
|
||||
margin-right: 14px;
|
||||
}
|
||||
.btn2 {
|
||||
background-color: #4ea6ff;
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.lookCourseModal {
|
||||
.ant-modal {
|
||||
.ant-modal-content {
|
||||
// width:1358px !important;
|
||||
.ant-modal-body {
|
||||
.modalHeader {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
.headerLeft {
|
||||
margin-left: 27px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.headerLeftText {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
color: #000000;
|
||||
line-height: 36px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.modalMain {
|
||||
.m_title {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.m_body {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
.mb_left {
|
||||
width: 50%;
|
||||
.mbl_items {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
margin-bottom: 10px;
|
||||
.item_nam {
|
||||
width: 100px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
white-space: nowrap;
|
||||
.asterisk_icon {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin-right: 5px;
|
||||
margin-top: -15px;
|
||||
}
|
||||
}
|
||||
.item_inp {
|
||||
flex: 1;
|
||||
position: relative;
|
||||
.inp_num {
|
||||
position: absolute;
|
||||
left: 398px;
|
||||
top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.mbl_items2 {
|
||||
display: flex;
|
||||
align-items: start;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
.item_nam {
|
||||
width: 100px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
white-space: nowrap;
|
||||
.asterisk_icon {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin-right: 5px;
|
||||
margin-top: -15px;
|
||||
}
|
||||
}
|
||||
.item_inp {
|
||||
flex: 1;
|
||||
.i_upload_img {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.i_upload {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border: 1px solid #4ea6ff;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
.addimg {
|
||||
position: relative;
|
||||
.heng {
|
||||
position: absolute;
|
||||
top: 50px;
|
||||
left: 25px;
|
||||
width: 50px;
|
||||
border: 1px solid #4ea6ff;
|
||||
}
|
||||
.shu {
|
||||
position: absolute;
|
||||
top: 25px;
|
||||
left: 50px;
|
||||
height: 50px;
|
||||
border: 1px solid #4ea6ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.i2_cz {
|
||||
width: 440px;
|
||||
margin-left: 100px;
|
||||
.i2_top {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
.i8_bottom {
|
||||
display: flex;
|
||||
width: 440px;
|
||||
margin-left: 100px;
|
||||
}
|
||||
}
|
||||
.mb_right {
|
||||
width: 50%;
|
||||
.mbl_items {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: flex-end;
|
||||
margin-bottom: 10px;
|
||||
.item_nam {
|
||||
width: 100px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
white-space: nowrap;
|
||||
.asterisk_icon {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin-top: -15px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
.item_inp {
|
||||
flex: 1;
|
||||
}
|
||||
.accessory {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.accessory_icon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-top: -8px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.mbl_items2 {
|
||||
display: flex;
|
||||
align-items: start;
|
||||
margin-bottom: 10px;
|
||||
.item_nam {
|
||||
width: 100px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
white-space: nowrap;
|
||||
.asterisk_icon {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
margin-right: 5px;
|
||||
margin-top: -15px;
|
||||
}
|
||||
}
|
||||
.item_inp {
|
||||
flex: 1;
|
||||
position: relative;
|
||||
.inp_num {
|
||||
position: absolute;
|
||||
left: 395px;
|
||||
bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.mbl_items12 {
|
||||
width: 440px;
|
||||
margin-left: 100px;
|
||||
.i12_box1 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 17px 0px 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: #388be1;
|
||||
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: #388be1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.file_operation {
|
||||
display: flex;
|
||||
.fobox {
|
||||
margin-right: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.m_footer {
|
||||
display: flex;
|
||||
margin: 20px 0;
|
||||
.fotnam {
|
||||
width: 100px;
|
||||
display: flex;
|
||||
justify-content: end;
|
||||
padding-right: 15px;
|
||||
}
|
||||
.fotarea {
|
||||
position: relative;
|
||||
.fuwenben {
|
||||
width: 90%;
|
||||
height: 20px;
|
||||
background-color: rgb(95, 95, 95);
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translate(-50%, 0);
|
||||
top: 3px;
|
||||
z-index: 9999;
|
||||
}
|
||||
}
|
||||
}
|
||||
.m_btn {
|
||||
width: 100%;
|
||||
margin-top: 25px;
|
||||
margin-bottom: 20px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-content: center;
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.coursereviewedn {
|
||||
width: 100%;
|
||||
.tmpl {
|
||||
|
||||
@@ -113,7 +113,6 @@
|
||||
:closable="closeBack"
|
||||
wrapClassName="projAuditModal"
|
||||
centered="true"
|
||||
@after-visible-change="changeAu"
|
||||
>
|
||||
<div class="delete">
|
||||
<div class="del_header"></div>
|
||||
@@ -130,6 +129,7 @@
|
||||
:data-source="tableDataAudit"
|
||||
:loading="tableDataTotalAudit === -1 ? true : false"
|
||||
expandRowByClick="true"
|
||||
:scroll="{ y: 150 }"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
/>
|
||||
@@ -423,9 +423,9 @@ export default {
|
||||
.then((res) => {
|
||||
console.log("获取到了审核日志列表", res);
|
||||
let result = res.data.data;
|
||||
if (result.total > 0) {
|
||||
setAudit(result.rows);
|
||||
}
|
||||
// if (result.total > 0) {
|
||||
setAudit(result.rows);
|
||||
// }
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("审核日志列表获取失败", err);
|
||||
|
||||
@@ -780,8 +780,8 @@
|
||||
支持:pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
v-for="item in docList"
|
||||
<!-- <div
|
||||
v-for="item in fileList"
|
||||
:key="item.src"
|
||||
style="margin-top: 20px"
|
||||
class="docListStyle"
|
||||
@@ -800,6 +800,30 @@
|
||||
item.name
|
||||
}}</span>
|
||||
<span style="color: #4ea6ff; float: right">删除</span>
|
||||
</div> -->
|
||||
<div
|
||||
v-for="item in fileList"
|
||||
:key="item.uid"
|
||||
class="docListStyle"
|
||||
>
|
||||
<img
|
||||
src="@/assets/images/basicinfo/download.png"
|
||||
style="
|
||||
cursor: pointer;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-right: 40px;
|
||||
"
|
||||
alt=""
|
||||
/>
|
||||
<span style="font: oblique bold 16px Sans-serif">{{
|
||||
item.name
|
||||
}}</span>
|
||||
<span
|
||||
style="color: #4ea6ff; float: right; cursor: pointer"
|
||||
@click="deFile(item.uid)"
|
||||
>删除</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1898,11 +1922,13 @@ export default {
|
||||
remark: state.remark,
|
||||
routerId: state.routerId,
|
||||
status: state.action,
|
||||
}).then((res) => {
|
||||
console.log(res)
|
||||
}).catch((err) => {
|
||||
console.log(err)
|
||||
})
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
});
|
||||
}
|
||||
|
||||
if (info.file.status === "done") {
|
||||
@@ -2003,6 +2029,32 @@ export default {
|
||||
message.error("编辑失败");
|
||||
});
|
||||
};
|
||||
const deFile = (id) => {
|
||||
console.log(id);
|
||||
let index = state.fileList.findIndex((item) => {
|
||||
item.uid == id;
|
||||
});
|
||||
state.fileList.splice(index, 1);
|
||||
let str = JSON.stringify(state.fileList);
|
||||
//要编辑路径图
|
||||
editRoutered({
|
||||
attach: str,
|
||||
name: state.styTitle,
|
||||
picUrl: state.picUrl,
|
||||
remark: state.remark,
|
||||
routerId: state.routerId,
|
||||
status: state.action,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
message.destroy();
|
||||
return message.success("删除成功");
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
message.warning("删除失败");
|
||||
});
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
...toRefs(levelList),
|
||||
@@ -2052,6 +2104,7 @@ export default {
|
||||
stageChange,
|
||||
pageChange,
|
||||
setconfig,
|
||||
deFile,
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -3924,6 +3977,11 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
.btnbox {
|
||||
.ant-upload-list {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.onemain {
|
||||
margin-top: 20px;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="line"></div>
|
||||
<router-link to="/manage/templatelibrary"
|
||||
<router-link to="/templatelibrary"
|
||||
><div style="display: flex">
|
||||
<img class="img2" src="../../assets/images/leveladd/back.png" />
|
||||
<div class="return">返回</div>
|
||||
@@ -333,51 +333,131 @@
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="btns">
|
||||
<div class="btn1" @click="edit = !edit">
|
||||
<div class="btn1" @click="editRule">
|
||||
<span class="btn1text">保存</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="edit" class="pjcb_content">
|
||||
<div class="content content1">
|
||||
<span>当前设计下,学员可以获得 </span
|
||||
><span class="scoretext">{{ scoresum }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content content2">
|
||||
<span>完成【必修/选修】获得 </span
|
||||
><span class="scoretext">{{ score1 }} </span><span>积分</span>
|
||||
</div>
|
||||
<div class="content content3">
|
||||
<span>优秀学员可获得 </span
|
||||
><span class="scoretext">{{ score2 }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content content1">
|
||||
<span>当前设计下,学员可以获得 </span
|
||||
><span class="scoretext">{{ scoresum }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div v-else class="pjcb_content">
|
||||
<div class="content content1">
|
||||
<span>当前设计下,学员可以获得 </span
|
||||
><span class="scoretext">{{ scoresum }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content content2">
|
||||
<span>完成【必修/选修】获得 </span
|
||||
><span
|
||||
><a-input
|
||||
v-model:value="score1"
|
||||
:bordered="false"
|
||||
@change="getScore"
|
||||
/> </span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content content3">
|
||||
<span>优秀学员可获得 </span
|
||||
><span
|
||||
><a-input v-model:value="score2" :bordered="false" /></span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content content2">
|
||||
<span>完成【必修/选修】获得 </span
|
||||
><span class="scoretext">{{ score1 }} </span><span>积分</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>完成作业成绩不低于 </span
|
||||
><span class="scoretext">{{ done2 }}</span
|
||||
><span>分获得</span> <span class="scoretext">{{ done3 }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>前</span><span class="scoretext">{{ four1 }}</span
|
||||
><span>名学完在线课程获得</span>
|
||||
<span class="scoretext">{{ four2 }}</span
|
||||
><span style="margin-right: 50px">积分</span> <span>前</span
|
||||
><span class="scoretext">{{ four3 }}</span
|
||||
><span>名提交作业且成绩不低于</span>
|
||||
<span class="scoretext">{{ four4 }}</span
|
||||
><span>分获得</span> <span class="scoretext">{{ four5 }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>考试成绩高于</span
|
||||
><span class="scoretext">{{ five1 }}</span
|
||||
><span>分获得</span> <span class="scoretext">{{ five2 }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>考勤正常学员获得 </span
|
||||
><span class="scoretext">{{ six1 }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>成为小组长获得</span
|
||||
><span class="scoretext">{{ seven1 }}</span
|
||||
><span style="margin-right: 50px">积分</span>
|
||||
<span>优秀学员可获得</span>
|
||||
<span class="scoretext">{{ seven2 }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="pjcb_content">
|
||||
<div class="content content1">
|
||||
<span>当前设计下,学员可以获得 </span
|
||||
><span class="scoretext">{{ scoresum }}</span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content content2">
|
||||
<span>完成【必修/选修】获得 </span
|
||||
><span
|
||||
><a-input
|
||||
v-model:value="score1"
|
||||
:bordered="false"
|
||||
@change="getScore"
|
||||
/> </span
|
||||
><span>积分</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>完成作业成绩不低于 </span
|
||||
><a-input v-model:value="done2" :bordered="false" /><span
|
||||
>分获得</span
|
||||
>
|
||||
<a-input v-model:value="done3" :bordered="false" /><span
|
||||
>积分</span
|
||||
>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>前</span
|
||||
><a-input v-model:value="four1" :bordered="false" /><span
|
||||
>名学完在线课程获得</span
|
||||
>
|
||||
<a-input v-model:value="four2" :bordered="false" /><span
|
||||
style="margin-right: 50px"
|
||||
>积分</span
|
||||
>
|
||||
<span>前</span
|
||||
><a-input v-model:value="four3" :bordered="false" /><span
|
||||
>名提交作业且成绩不低于</span
|
||||
>
|
||||
<a-input v-model:value="four4" :bordered="false" /><span
|
||||
>分获得</span
|
||||
>
|
||||
<a-input v-model:value="four5" :bordered="false" /><span
|
||||
>积分</span
|
||||
>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>考试成绩高于</span
|
||||
><a-input v-model:value="five1" :bordered="false" /><span
|
||||
>分获得</span
|
||||
>
|
||||
<a-input v-model:value="five2" :bordered="false" /><span
|
||||
>积分</span
|
||||
>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>考勤正常学员获得 </span
|
||||
><a-input v-model:value="six1" :bordered="false" /><span
|
||||
>积分</span
|
||||
>
|
||||
</div>
|
||||
<div class="content">
|
||||
<span>成为小组长获得</span
|
||||
><a-input v-model:value="seven1" :bordered="false" /><span
|
||||
style="margin-right: 50px"
|
||||
>积分</span
|
||||
>
|
||||
<span>优秀学员可获得</span>
|
||||
<a-input v-model:value="seven2" :bordered="false" /><span
|
||||
>积分</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
@@ -561,10 +641,11 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, reactive, defineComponent, toRefs, onMounted} from "vue";
|
||||
import { ref, reactive, defineComponent, toRefs, onMounted,computed} from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as api from "@/api/indexTemplate"
|
||||
import { useRouter } from "vue-router";
|
||||
import {scoreRule,setScoreRule} from "@/api/indexTaskadd"
|
||||
import { useStore } from "vuex";
|
||||
export default defineComponent({
|
||||
name: "LibraryAdd",
|
||||
@@ -688,8 +769,19 @@ export default defineComponent({
|
||||
value3: false,
|
||||
value4: false,
|
||||
hideshow: true,
|
||||
score1: 5,
|
||||
score2: 5,
|
||||
score1: null,
|
||||
done2: null,
|
||||
done3: null,
|
||||
four1: null,
|
||||
four2: null,
|
||||
four3: null,
|
||||
four4: null,
|
||||
four5: null,
|
||||
five1: null,
|
||||
five2: null,
|
||||
six1: null,
|
||||
seven1: null,
|
||||
seven2: null,
|
||||
edit: true,
|
||||
// 共享文档列表
|
||||
docList:[
|
||||
@@ -731,6 +823,23 @@ export default defineComponent({
|
||||
const changecheck2 = () => {
|
||||
state.checked2 = !state.checked2;
|
||||
};
|
||||
const scoresum = computed(() => {
|
||||
// console.log(Object.prototype.toString.call(Number(state.score1)));
|
||||
// if (Object.prototype.toString.call(state.score1) !== "[object Number]") {
|
||||
// message.destroy();
|
||||
// return message.warning("请输入合法数字");
|
||||
// }
|
||||
return (
|
||||
Number(state.score1) +
|
||||
Number(state.done3) +
|
||||
Number(state.four2) +
|
||||
Number(state.four5) +
|
||||
Number(state.five2) +
|
||||
Number(state.six1) +
|
||||
Number(state.seven1) +
|
||||
Number(state.seven2)
|
||||
);
|
||||
});
|
||||
const changecheck3 = () => {
|
||||
state.checked3 = !state.checked3;
|
||||
};
|
||||
@@ -760,7 +869,10 @@ export default defineComponent({
|
||||
];
|
||||
return typeRules[type];
|
||||
};
|
||||
onMounted(() => {getDetail()});
|
||||
onMounted(() => {
|
||||
getDetail();
|
||||
getScoreRule();
|
||||
});
|
||||
// 获取详情
|
||||
const getDetail = () => {
|
||||
api.templateDetail(store.state.projectTemplateId).then(res => {
|
||||
@@ -772,6 +884,7 @@ export default defineComponent({
|
||||
state.projectInfo.manager = res.data.data.projectTemplateInfo.manager
|
||||
state.projectInfo.notice = res.data.data.projectTemplateInfo.notice
|
||||
state.projectInfo.sourceBelongId = res.data.data.projectTemplateInfo.sourceBelongId
|
||||
state.projectInfo.managerId = res.data.data.projectTemplateInfo.managerId
|
||||
state.projectInfo.remark = res.data.data.stageList.remark
|
||||
state.projectInfo.courseSyncFlag = res.data.data.projectTemplateInfo.courseSyncFlag
|
||||
state.projectInfo.level = res.data.data.projectTemplateInfo.level
|
||||
@@ -802,25 +915,25 @@ export default defineComponent({
|
||||
// 发布公告
|
||||
const addNotice = () => {
|
||||
let obj = {
|
||||
"beginTime": 0,
|
||||
"boeFlag": 0,
|
||||
"category": 0,
|
||||
"courseSyncFlag": 0,
|
||||
"endTime": 0,
|
||||
"level": 0,
|
||||
"manager": "",
|
||||
"managerId": "",
|
||||
"name": "",
|
||||
"notice": state.projectInfo.notice,
|
||||
"noticeFlag": 0,
|
||||
"picUrl": "",
|
||||
"projectTemplateId": store.state.projectTemplateId,
|
||||
"remark": "",
|
||||
"sourceBelongId": 0,
|
||||
"status": 0,
|
||||
"systemId": 0
|
||||
};
|
||||
api.templateEdit(obj).methods(obj).then(res => {
|
||||
"name": state.projectInfo.name,
|
||||
"category": state.projectInfo.category,
|
||||
"picUrl": "x",
|
||||
"beginTime": Number(state. projectInfo.beginTime) || 1,
|
||||
"endTime": 1,
|
||||
"manager": state.projectInfo.manager,
|
||||
"managerId": state.projectInfo.managerId || 0,
|
||||
"sourceBelongId": state.projectInfo.sourceBelongId,
|
||||
"level": state.projectInfo.level,
|
||||
"systemId": state.projectInfo.systemId,
|
||||
"boeFlag": state.projectInfo.boeFlag ? 1:0,
|
||||
"courseSyncFlag": state.projectInfo.courseSyncFlag? 1:0,
|
||||
"notice": state.projectInfo.notice,
|
||||
"noticeFlag": 0,
|
||||
"projectTemplateId": store.state.projectTemplateId,
|
||||
"remark": "",
|
||||
"status": 0,
|
||||
};
|
||||
api.templateEdit(obj).then(res => {
|
||||
message.success("公告发布成功")
|
||||
console.log(res)
|
||||
}).catch(err => {
|
||||
@@ -895,6 +1008,94 @@ export default defineComponent({
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
const getScoreRule = () => {
|
||||
scoreRule({
|
||||
projectId: store.state.projectTemplateId,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log("获取了项目积分规则", res.data.data);
|
||||
let result = res.data.data;
|
||||
scoresum.value = result.totalScore; //Write operation failed: computed value is readonly
|
||||
state.seven1 = result.leaderScore;
|
||||
state.score1 = result.courseScore;
|
||||
state.done2 = result.homeworkItem[1].scoreLimit;
|
||||
state.done3 = result.homeworkItem[1].score;
|
||||
state.four1 = result.topCompleteCourseItem[0].numLimit;
|
||||
state.four2 = result.topCompleteCourseItem[0].score;
|
||||
state.four3 = result.homeworkItem[0].numLimit;
|
||||
state.four4 = result.homeworkItem[0].scoreLimit;
|
||||
state.four5 = result.homeworkItem[0].score;
|
||||
state.five1 = result.examItem[0].scoreLimit;
|
||||
state.five2 = result.examItem[0].score;
|
||||
state.six1 = result.signScore;
|
||||
state.seven1 = result.leaderScore;
|
||||
state.seven2 = result.topStudentScore;
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("获取项目积分规则失败了", err);
|
||||
});
|
||||
};
|
||||
//设置积分规则
|
||||
const editRule = () => {
|
||||
let obj = {
|
||||
courseScore: state.score1,
|
||||
examItem: [
|
||||
{
|
||||
numLimit: 0,
|
||||
score: state.five2,
|
||||
scoreLimit: state.five1,
|
||||
type: 3,
|
||||
},
|
||||
],
|
||||
|
||||
homeworkItem: [
|
||||
//有名次要求的提交作业
|
||||
{
|
||||
numLimit: state.four3,
|
||||
score: state.four5,
|
||||
scoreLimit: state.four4,
|
||||
type: 2,
|
||||
},
|
||||
//无名次要求的提交作业
|
||||
{
|
||||
numLimit: 0,
|
||||
score: state.done3,
|
||||
scoreLimit: state.done2,
|
||||
type: 2,
|
||||
},
|
||||
],
|
||||
leaderScore: state.seven1,
|
||||
projectId: store.state.projectTemplateId,
|
||||
signScore: state.six1,
|
||||
topCompleteCourseItem: [
|
||||
{
|
||||
numLimit: state.four1,
|
||||
score: state.four2,
|
||||
scoreLimit: 0,
|
||||
type: 1,
|
||||
},
|
||||
],
|
||||
topStudentScore: state.seven2,
|
||||
totalScore: scoresum.value,
|
||||
};
|
||||
console.log(obj);
|
||||
setScoreRule(obj)
|
||||
.then((res) => {
|
||||
console.log(res.data, "修改成功");
|
||||
message.destroy();
|
||||
return message.success("修改积分规则成功");
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err.data);
|
||||
message.destroy();
|
||||
return message.warning("修改积分规则失败");
|
||||
});
|
||||
// scoreRule({
|
||||
// projectId: props.projectId,
|
||||
// });
|
||||
|
||||
state.edit = true;
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
value,
|
||||
@@ -910,14 +1111,11 @@ export default defineComponent({
|
||||
stateEdit,
|
||||
taskEdit,
|
||||
toEdit,
|
||||
getScoreRule,
|
||||
editRule,
|
||||
scoresum,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
// 计算属性的 getter
|
||||
scoresum: function () {
|
||||
return Number(this.score1) + Number(this.score2);
|
||||
},
|
||||
},
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<style lang="scss">
|
||||
|
||||
@@ -1119,11 +1119,17 @@
|
||||
</a-modal>
|
||||
|
||||
<!-- 归属权抽屉 -->
|
||||
<proj-owner-ship v-model:ProjOwnervisible="ProjOwnervisible" />
|
||||
<proj-owner-ship
|
||||
v-model:ProjOwnervisible="ProjOwnervisible"
|
||||
:selectProjectId="selectProjectId"
|
||||
/>
|
||||
<!-- 授权名单抽屉 -->
|
||||
<proj-power-list v-model:ProjPvisible="ProjPvisible" />
|
||||
<!-- 查看权抽屉 -->
|
||||
<proj-check-ship v-model:ProjCheckvisible="ProjCheckvisible" />
|
||||
<proj-check-ship
|
||||
v-model:ProjCheckvisible="ProjCheckvisible"
|
||||
:selectProjectId="selectProjectId"
|
||||
/>
|
||||
<!-- 管理权抽屉 -->
|
||||
<proj-manage-ship v-model:ProjManagevisible="ProjManagevisible" />
|
||||
</div>
|
||||
@@ -1194,6 +1200,8 @@ export default {
|
||||
deleteProjectId: null, //删除的项目id
|
||||
templateProjectId: null, //存为模版的项目id
|
||||
copyProjectId: null, //复制项目id
|
||||
|
||||
selectProjectId: null, //选择的授权id
|
||||
});
|
||||
// 数据接入 - start -
|
||||
const router = useRouter();
|
||||
@@ -2172,9 +2180,6 @@ export default {
|
||||
width: 100,
|
||||
align: "center",
|
||||
customRender: (value) => {
|
||||
{
|
||||
console.log("获取项目", value);
|
||||
}
|
||||
return (
|
||||
<div>
|
||||
{value.record.type !== 3
|
||||
@@ -2258,7 +2263,7 @@ export default {
|
||||
<div
|
||||
onClick={() => {
|
||||
console.log("点击了111");
|
||||
showProjOwner();
|
||||
showProjOwner(value.record.projectId);
|
||||
}}
|
||||
>
|
||||
归属权
|
||||
@@ -3248,8 +3253,9 @@ export default {
|
||||
state.sonproject = false;
|
||||
};
|
||||
|
||||
const showProjOwner = () => {
|
||||
const showProjOwner = (id) => {
|
||||
state.ProjOwnervisible = true;
|
||||
state.selectProjectId = id;
|
||||
};
|
||||
const showProjPrower = () => {
|
||||
state.ProjPvisible = true;
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
v-model:projectId="projectId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
@changeData="updateTableData"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
/>
|
||||
</div>
|
||||
<!-- 添加面授侧弹窗 -->
|
||||
@@ -1854,7 +1855,7 @@ export default {
|
||||
state.addactivevisible = true;
|
||||
state.EditActiveId = id;
|
||||
state.projectTaskId = eleId;
|
||||
console.log("active=======", id);
|
||||
|
||||
};
|
||||
const showDrawerAddEval = (id, eleId) => {
|
||||
state.addevalvisible = true;
|
||||
@@ -1863,12 +1864,12 @@ export default {
|
||||
state.projectTaskId = eleId;
|
||||
};
|
||||
const showDrawerAddInvist = (id, eleId) => {
|
||||
console.log(id, eleId, "213312");
|
||||
state.EditInvistId = id;
|
||||
state.addinvistvisible = true;
|
||||
state.projectTaskId = eleId;
|
||||
};
|
||||
const showDrawerAddVote = (id, eleId) => {
|
||||
console.log(id, eleId, "95835325932953295325");
|
||||
|
||||
state.addvotevisible = true;
|
||||
state.EditVoteId = id;
|
||||
state.projectTaskId = eleId;
|
||||
|
||||
@@ -3650,6 +3650,7 @@ export default {
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("上传失败了", err);
|
||||
message.warning("删除失败");
|
||||
});
|
||||
};
|
||||
onMounted(() => {
|
||||
@@ -6124,9 +6125,9 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
.btnbox{
|
||||
.ant-upload-list{
|
||||
display:none !important;
|
||||
.btnbox {
|
||||
.ant-upload-list {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
.onemain {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
</div>
|
||||
<div class="inpbox1">
|
||||
<span>创建时间:</span>
|
||||
<a-date-picker v-model="selectTime" type="date" placeholder="创建时间" style="
|
||||
<a-date-picker v-model:value="time" type="date" placeholder="创建时间" style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
@@ -50,6 +50,7 @@ import { message } from "ant-design-vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { useStore } from "vuex";
|
||||
import * as api from "@/api/indexTemplate"
|
||||
|
||||
const columns1 = [
|
||||
{
|
||||
title: "模版名称",
|
||||
@@ -97,6 +98,10 @@ export default defineComponent({
|
||||
const router = useRouter();
|
||||
const state = reactive({
|
||||
value1: null,
|
||||
time:null,
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total:0,
|
||||
tableData1: [
|
||||
{
|
||||
key: "1",
|
||||
@@ -166,9 +171,9 @@ export default defineComponent({
|
||||
state.tableData = data;
|
||||
};
|
||||
const pagination = reactive({
|
||||
current: 1,
|
||||
total: 50,
|
||||
defaultPageSize: 10,
|
||||
current: state.currentPage,
|
||||
total: state.total,
|
||||
defaultPageSize: state.pageSize,
|
||||
onChange: (id) => { pagination.current = id; getLibraryList() },
|
||||
})
|
||||
getTableDate1();
|
||||
@@ -179,12 +184,14 @@ export default defineComponent({
|
||||
|
||||
// 获取模板列表
|
||||
const getLibraryList = () => {
|
||||
let date = Math.ceil(new Date(state.time).getTime() / 1000);
|
||||
|
||||
let obj = {
|
||||
"beginTime": 0,
|
||||
"name": "",
|
||||
// "create_time": state.time,
|
||||
"createTime" : date==0?null:date,
|
||||
"name": state.value1,
|
||||
"pageNo": pagination.current,
|
||||
"pageSize": 10,
|
||||
"status": 0
|
||||
"pageSize": state.pageSize
|
||||
}
|
||||
api.templateList(obj).then((res) => {
|
||||
state.tableData1 = []
|
||||
@@ -222,13 +229,16 @@ export default defineComponent({
|
||||
}
|
||||
const searchLevel = () => {
|
||||
getLibraryList();
|
||||
/*
|
||||
setTimeout(() => {
|
||||
const result = state.tableData1.filter(item => item.name.includes(state.value1))
|
||||
state.tableData1 = result;
|
||||
},100)
|
||||
*/
|
||||
};
|
||||
const resetLevel = () => {
|
||||
state.value1 = '';
|
||||
state.time = '';
|
||||
getLibraryList();
|
||||
getTableDate1()
|
||||
};
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
@changeData="updateTableData"
|
||||
:isLevel="isLevel"
|
||||
v-model:edit="edit"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
v-model:EditOnlineId="EditOnlineId"
|
||||
@@ -216,7 +216,7 @@
|
||||
@changeData="updateTableData"
|
||||
:isLevel="isLevel"
|
||||
v-model:edit="edit"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
v-model:EditCaseId="EditCaseId"
|
||||
@@ -239,7 +239,7 @@
|
||||
@changeData="updateTableData"
|
||||
v-model:isLevel="isLevel"
|
||||
v-model:edit="edit"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:EditWorkId="EditWorkId"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
@@ -262,7 +262,7 @@
|
||||
@changeData="updateTableData"
|
||||
:isLevel="isLevel"
|
||||
v-model:edit="edit"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:EditTestId="EditTestId"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
@@ -284,7 +284,7 @@
|
||||
v-model:addliveVisible="addlivevisible"
|
||||
:isLevel="isLevel"
|
||||
@changeData="updateTableData"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:edit="edit"
|
||||
v-model:EditLiveId="EditLiveId"
|
||||
@@ -307,7 +307,7 @@
|
||||
v-model:addrefVisible="addrefvisible"
|
||||
:isLevel="isLevel"
|
||||
@changeData="updateTableData"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:edit="edit"
|
||||
v-model:EditRefId="EditRefId"
|
||||
@@ -330,7 +330,7 @@
|
||||
v-model:adddiscussVisible="adddiscussvisible"
|
||||
v-model:edit="edit"
|
||||
:isLevel="isLevel"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:EditDiscussId="EditDiscussId"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
@@ -351,7 +351,7 @@
|
||||
<div>
|
||||
<add-active
|
||||
v-model:addactiveVisible="addactivevisible"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:EditActiveId="EditActiveId"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
v-model:edit="edit"
|
||||
@@ -377,7 +377,7 @@
|
||||
@changeData="updateTableData"
|
||||
v-model:edit="edit"
|
||||
:isLevel="isLevel"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
v-model:EditEvalId="EditEvalId"
|
||||
@@ -400,7 +400,7 @@
|
||||
@changeData="updateTableData"
|
||||
v-model:edit="edit"
|
||||
:isLevel="isLevel"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
v-model:EditInvistId="EditInvistId"
|
||||
@@ -423,7 +423,7 @@
|
||||
@getData="changeVData"
|
||||
v-model:edit="edit"
|
||||
:isLevel="isLevel"
|
||||
v-model:projectId="projectId"
|
||||
v-model:projectTemplateId="projectTemplateId"
|
||||
v-model:chooseStageId="chooseStageId"
|
||||
v-model:projectTaskId="projectTaskId"
|
||||
v-model:EditVoteId="EditVoteId"
|
||||
@@ -1114,7 +1114,7 @@
|
||||
chooseStageId: null,
|
||||
removeStageId: null,
|
||||
edit: false,
|
||||
isLevel: 2, //学习路径1项目2模板库3
|
||||
isLevel: 3, //学习路径1项目2模板库3
|
||||
// isRefEdit: 1, //外链编辑
|
||||
// isLiveEdit: 1, //直播编辑
|
||||
isRefEdit: false, //外链编辑
|
||||
@@ -1528,13 +1528,16 @@
|
||||
let stageList = res.data.data.stageList; //阶段数组
|
||||
let result = stageList.find((item) => item.templateStageId == stage);
|
||||
console.log("又找到了", result);
|
||||
changebgc(res.data.data.stageList[0].templateStageId);
|
||||
getTableData(result.taskList);
|
||||
|
||||
} else {
|
||||
let arr = res.data.data.stageList[0].taskList;
|
||||
console.log("任务列表", arr);
|
||||
changebgc(res.data.data.stageList[0].templateStageId);
|
||||
getTableData(arr);
|
||||
// state.isActive = true;
|
||||
changebgc(res.data.data.stageList[0].templateStageId);
|
||||
|
||||
}
|
||||
|
||||
// 每次都获取了第一条taskList
|
||||
@@ -1542,7 +1545,6 @@
|
||||
// console.log("任务列表", stage, arr);
|
||||
// getTableData(arr);
|
||||
}
|
||||
|
||||
let stagearr = res.data.data.stageList;
|
||||
let arrlist = state.curLevel;
|
||||
console.log(stagearr, 111111);
|
||||
@@ -1685,6 +1687,7 @@
|
||||
state.valuesname = "";
|
||||
state.valuesnotice = "";
|
||||
state.updateStageID = null;
|
||||
|
||||
};
|
||||
//显示添加阶段弹窗
|
||||
const showModal = (element) => {
|
||||
@@ -1964,7 +1967,6 @@
|
||||
|
||||
//打开测评的弹窗
|
||||
const showEditEvalDrawer = (id, eleId) => {
|
||||
console.log("222222222222222222222", id);
|
||||
state.addevalvisible = true;
|
||||
state.projectTaskId = eleId;
|
||||
state.EditRefId = id;
|
||||
|
||||
@@ -47,7 +47,6 @@
|
||||
}
|
||||
"
|
||||
v-model:value="projectInfo.category"
|
||||
placeholder="管理者"
|
||||
style="width: 100%"
|
||||
:options="classifyList"
|
||||
@change="classificationChange"
|
||||
@@ -121,7 +120,8 @@
|
||||
<a-range-picker
|
||||
separator="至"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
v-model:value="rangevalue"
|
||||
v-model:value="projectInfo.choosedTime"
|
||||
format="YYYY-MM-DD"
|
||||
style="width: 100%; height: 40px; border-radius: 5px"
|
||||
/>
|
||||
</div>
|
||||
@@ -141,7 +141,8 @@
|
||||
return triggerNode.parentNode || document.body;
|
||||
}
|
||||
"
|
||||
:value="projectInfo.manager"
|
||||
|
||||
:value="classifySelect1"
|
||||
mode="multiple"
|
||||
placeholder="请选择项目经理"
|
||||
style="width: 100%"
|
||||
@@ -319,6 +320,7 @@ import * as api from "../../api/indexTemplate";
|
||||
import { storage } from "../../api/storage";
|
||||
import {useStore} from "vuex";
|
||||
// import { toDate } from "../../api/method";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
export default {
|
||||
name: "projectAdd",
|
||||
@@ -344,7 +346,7 @@ export default {
|
||||
storage.remove("projectAddId");
|
||||
setTimeout(() => {
|
||||
router.push({
|
||||
path: "/manage/libraryAdd",
|
||||
path: "/libraryAdd",
|
||||
});
|
||||
}, 400);
|
||||
};
|
||||
@@ -358,7 +360,7 @@ export default {
|
||||
valueE: null,
|
||||
valueE1: null,
|
||||
valueE2: null,
|
||||
classifySelect1: [],
|
||||
classifySelect1: ['李俊国'],
|
||||
classifySelect2: [],
|
||||
classifySelect3: [],
|
||||
classifySelect4: [],
|
||||
@@ -370,16 +372,16 @@ export default {
|
||||
totalPages: 0, //总页数
|
||||
viewDetail: routers.query.viewDetail ? routers.query.viewDetail : null,
|
||||
projectInfo:{
|
||||
beginTime:null,
|
||||
endTime:null,
|
||||
choosedTime:'',
|
||||
name: null,
|
||||
manager: null,
|
||||
notice: null,
|
||||
sourceBelongId: null,
|
||||
sourceBelongId: 1,
|
||||
category:1,
|
||||
remark: "",
|
||||
courseSyncFlag: false,
|
||||
level: null,
|
||||
systemId: null,
|
||||
level: 1,
|
||||
systemId: 2,
|
||||
boeFlag: false,
|
||||
}
|
||||
});
|
||||
@@ -468,7 +470,7 @@ export default {
|
||||
}
|
||||
if (info.file.status === "error") {
|
||||
loading.value = false;
|
||||
message.error("upload error");
|
||||
message.error("upload error");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -628,9 +630,9 @@ export default {
|
||||
"name": state.projectInfo.name,
|
||||
"category": state.projectInfo.category,
|
||||
"picUrl": "x",
|
||||
"beginTime": state.projectInfo.rangevalue || 1,
|
||||
"endTime": state.projectInfo.rangevalue || 1,
|
||||
"manager": state.projectInfo.manager,
|
||||
"beginTime": Number(dayjs(state.projectInfo.choosedTime[0]).format("YYYY-MM-DD")) || 1,
|
||||
"endTime": Number(dayjs(state.projectInfo.choosedTime[1]).format("YYYY-MM-DD")) || 1,
|
||||
"manager": state.classifySelect1.toString(),
|
||||
"managerId": state.projectInfo.managerId || 0,
|
||||
"sourceBelongId": state.projectInfo.sourceBelongId,
|
||||
"level": state.projectInfo.level,
|
||||
|
||||
Reference in New Issue
Block a user