mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-17 23:06:47 +08:00
Merge branch 'develop' of http://gitlab.dongwu-inc.com:10080/BOE/fe-manage into develop
This commit is contained in:
@@ -4,9 +4,11 @@ export const USER_LIST_PAGE = '/userbasic/user/list post'
|
|||||||
export const USER_LIST = '/userbasic/user/searchList post'
|
export const USER_LIST = '/userbasic/user/searchList post'
|
||||||
export const ORG_LIST = '/userbasic/org/list post'
|
export const ORG_LIST = '/userbasic/org/list post'
|
||||||
export const ORG_CHILD_LIST = '/userbasic/org/info post'
|
export const ORG_CHILD_LIST = '/userbasic/org/info post'
|
||||||
export const AUDIENCE_LIST = '/userbasic/audience/list post'
|
// export const AUDIENCE_LIST = '/userbasic/audience/list post'
|
||||||
|
//当前用户可以查看的受众接口
|
||||||
|
export const AUDIENCE_LIST = '/userbasic/audience/userAudiencesFilter post'
|
||||||
export const USER_PERMISSION = '/userbasic/permission/listByUser post'
|
export const USER_PERMISSION = '/userbasic/permission/listByUser post'
|
||||||
export const CASE_PAGE = '/systemapi/xboe/m/boe/cases/pagelist post formData'
|
export const CASE_PAGE = '/systemapi/xboe/m/boe/cases/pagelist post formData'
|
||||||
export const EXAM_PAPER_PAGE = '/systemapi/xboe/m/exam/paper/querylist post formData'
|
export const EXAM_PAPER_PAGE = '/systemapi/xboe/m/exam/paper/querylist post formData'
|
||||||
export const TEST_PAGE = '/api/b1/system/quiz/quiz-list post formData'
|
export const TEST_PAGE = '/api/b1/system/quiz/quiz-list post formData'
|
||||||
export const ONLINE_PAGE = '/systemapi/xboe/m/course/manage/pagelist post formData'
|
export const ONLINE_PAGE = '/systemapi/xboe/m/course/manage/pagelist post formData'
|
||||||
@@ -826,7 +826,7 @@ export default {
|
|||||||
name: props.datasource?.name,
|
name: props.datasource?.name,
|
||||||
url:
|
url:
|
||||||
process.env.VUE_APP_BASE_API +
|
process.env.VUE_APP_BASE_API +
|
||||||
`/admin/student/studentSign?taskId=${props.datasource.routerTaskId
|
`/admin/student/studentSign?taskId=${props.datasource.id
|
||||||
}&taskType=${props.datasource.type}&type=${2}`,
|
}&taskType=${props.datasource.type}&type=${2}`,
|
||||||
};
|
};
|
||||||
console.log("codeInfo", state.codeInfo);
|
console.log("codeInfo", state.codeInfo);
|
||||||
@@ -855,7 +855,6 @@ export default {
|
|||||||
|
|
||||||
// 导出数据
|
// 导出数据
|
||||||
function exportTaskStu() {
|
function exportTaskStu() {
|
||||||
debugger
|
|
||||||
{/* debugger */ }
|
{/* debugger */ }
|
||||||
console.log("props.datasource此处的taskId 应该是router_task 表中主键", props.datasource);
|
console.log("props.datasource此处的taskId 应该是router_task 表中主键", props.datasource);
|
||||||
console.log("props.datasource", props.datasource);
|
console.log("props.datasource", props.datasource);
|
||||||
|
|||||||
@@ -84,7 +84,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<span style="margin-right: 2px">直播封面:</span>
|
<span style="margin-right: 2px">直播封面:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item_inp">
|
<div class="item_inp" style="background-color: #fff;">
|
||||||
<a-upload name="avatar" list-type="picture-card" class="avatar-uploader" :show-upload-list="false"
|
<a-upload name="avatar" list-type="picture-card" class="avatar-uploader" :show-upload-list="false"
|
||||||
:before-upload="beforeUpload">
|
:before-upload="beforeUpload">
|
||||||
<img class="i_upload_img" v-if="imageUrl" :src="imageUrl" alt="avatar" />
|
<img class="i_upload_img" v-if="imageUrl" :src="imageUrl" alt="avatar" />
|
||||||
@@ -258,6 +258,7 @@ const formData = ref({
|
|||||||
assessmentId: "",
|
assessmentId: "",
|
||||||
assessmentName: "",
|
assessmentName: "",
|
||||||
livePlayback: "",
|
livePlayback: "",
|
||||||
|
liveExplain: ""
|
||||||
});
|
});
|
||||||
const emit = defineEmits({});
|
const emit = defineEmits({});
|
||||||
const taskIndex = ref(-1);
|
const taskIndex = ref(-1);
|
||||||
@@ -325,6 +326,7 @@ const { resetFields, validate } = Form.useForm(formData, rulesRef);
|
|||||||
|
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
formData.value.liveCover = "";
|
formData.value.liveCover = "";
|
||||||
|
formData.value.livePlaybackLink = "";
|
||||||
imageUrl.value = "";
|
imageUrl.value = "";
|
||||||
visible.value = false;
|
visible.value = false;
|
||||||
taskIndex.value = -1;
|
taskIndex.value = -1;
|
||||||
@@ -374,9 +376,9 @@ async function confirm() {
|
|||||||
} else {
|
} else {
|
||||||
const data = props.taskList[taskIndex.value];
|
const data = props.taskList[taskIndex.value];
|
||||||
data.name = formData.value.liveName;
|
data.name = formData.value.liveName;
|
||||||
data.info = formData.value;
|
data.info = {...formData.value};
|
||||||
data.duration = dayjs(formData.value.liveEndTime).diff(formData.value.liveStartTime, 'minutes')
|
data.duration = dayjs(formData.value.liveEndTime).diff(formData.value.liveStartTime, 'minutes')
|
||||||
|
console.log(data)
|
||||||
}
|
}
|
||||||
emit("update:taskList", [...props.taskList]);
|
emit("update:taskList", [...props.taskList]);
|
||||||
closeDrawer();
|
closeDrawer();
|
||||||
@@ -430,6 +432,9 @@ const beforeUpload = (file) => {
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
.ant-upload {
|
||||||
|
background-color: #fff !important;
|
||||||
|
}
|
||||||
.ant-table-striped :deep(.table-striped) td {
|
.ant-table-striped :deep(.table-striped) td {
|
||||||
background-color: #fafafa !important;
|
background-color: #fafafa !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ export default {
|
|||||||
};
|
};
|
||||||
//获取作业详情
|
//获取作业详情
|
||||||
const getWorkDetail = () => {
|
const getWorkDetail = () => {
|
||||||
debugger
|
// debugger
|
||||||
console.log("props.workId, props.stuId", props.workId, props.stuId);
|
console.log("props.workId, props.stuId", props.workId, props.stuId);
|
||||||
getWorkSubmitInfo(props.workId, props.stuId)
|
getWorkSubmitInfo(props.workId, props.stuId)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
@change="handleChange" :showUploadList="false" :data="{
|
@change="handleChange" :showUploadList="false" :data="{
|
||||||
type: type,
|
type: type,
|
||||||
taskId: Number(id),
|
taskId: Number(id),
|
||||||
workId: datesource.info.id,
|
workId: datesource.info?datesource.info.id:id,
|
||||||
targetId: Number(id),
|
targetId: Number(id),
|
||||||
}">
|
}">
|
||||||
<p class="ant-upload-drag-icon">
|
<p class="ant-upload-drag-icon">
|
||||||
|
|||||||
@@ -358,6 +358,7 @@ export default {
|
|||||||
};
|
};
|
||||||
//把数据放到state里
|
//把数据放到state里
|
||||||
const getTableDataList = (tableData) => {
|
const getTableDataList = (tableData) => {
|
||||||
|
debugger
|
||||||
let data = tableData;
|
let data = tableData;
|
||||||
let array = [];
|
let array = [];
|
||||||
data.map((value) => {
|
data.map((value) => {
|
||||||
@@ -546,7 +547,7 @@ export default {
|
|||||||
function exportGroupMember() {
|
function exportGroupMember() {
|
||||||
console.log("props.datasource", props);
|
console.log("props.datasource", props);
|
||||||
window.open(
|
window.open(
|
||||||
`${process.env.VUE_APP_BASE_API}/admin/studentGroup/exportGroupMember/${props.projectId}/${props.chooseGroupId}`
|
`${process.env.VUE_APP_BASE_API}/admin/studentGroup/exportGroupMember?pid=${props.projectId}&groupId=${props.chooseGroupId}&stageId=${-1}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -118,7 +118,7 @@
|
|||||||
preserveSelectedRowKeys: true,
|
preserveSelectedRowKeys: true,
|
||||||
}"
|
}"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="pa">
|
<div class="pa">
|
||||||
<a-pagination
|
<a-pagination
|
||||||
:showSizeChanger="false"
|
:showSizeChanger="false"
|
||||||
@@ -2243,4 +2243,4 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-drawer
|
<a-drawer
|
||||||
:visible="ProjPvisible"
|
:visible="ProjPvisible"
|
||||||
class="drawerStyle ProjPowerList"
|
class="drawerStyle ProjPowerList"
|
||||||
placement="right"
|
placement="right"
|
||||||
width="60%"
|
width="60%"
|
||||||
@after-visible-change="afterVisibleChange"
|
@after-visible-change="afterVisibleChange"
|
||||||
>
|
>
|
||||||
<div class="drawerMain">
|
<div class="drawerMain">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="headerTitle">授权名单</div>
|
<div class="headerTitle">授权名单</div>
|
||||||
<img
|
<img
|
||||||
style="width: 29px; height: 29px; cursor: pointer"
|
style="width: 29px; height: 29px; cursor: pointer"
|
||||||
src="../../assets/images/basicinfo/close.png"
|
src="../../assets/images/basicinfo/close.png"
|
||||||
@click="closeDrawer"
|
@click="closeDrawer"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
@@ -21,18 +21,18 @@
|
|||||||
<div class="namecon" style="margin-right: 30px">
|
<div class="namecon" style="margin-right: 30px">
|
||||||
<div class="name">姓名:</div>
|
<div class="name">姓名:</div>
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="name"
|
v-model:value="name"
|
||||||
style="width: 270px; height: 40px; border-radius: 8px"
|
style="width: 270px; height: 40px; border-radius: 8px"
|
||||||
placeholder="请输入姓名"
|
placeholder="请输入姓名"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="btns">
|
<div class="btns">
|
||||||
<div
|
<div
|
||||||
class="btn btn1"
|
class="btn btn1"
|
||||||
style="margin-right: 20px"
|
style="margin-right: 20px"
|
||||||
@click="searchAuth"
|
@click="searchAuth"
|
||||||
>
|
>
|
||||||
<div class="img1"></div>
|
<div class="img1"></div>
|
||||||
<div class="wz">搜索</div>
|
<div class="wz">搜索</div>
|
||||||
@@ -46,28 +46,28 @@
|
|||||||
|
|
||||||
<div class="tableBox" style="margin-top: 10px">
|
<div class="tableBox" style="margin-top: 10px">
|
||||||
<a-table
|
<a-table
|
||||||
style="border: 1px solid #f2f6fe"
|
style="border: 1px solid #f2f6fe"
|
||||||
:columns="tableDataFunc()"
|
:columns="tableDataFunc()"
|
||||||
:data-source="tableData"
|
:data-source="tableData"
|
||||||
:loading="tableDataTotal === -1 ? true : false"
|
:loading="tableDataTotal === -1 ? true : false"
|
||||||
expandRowByClick="true"
|
expandRowByClick="true"
|
||||||
@expand="expandTable"
|
@expand="expandTable"
|
||||||
:scroll="{ x: 900 }"
|
:scroll="{ x: 900 }"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="tableBox">
|
<div class="tableBox">
|
||||||
<div class="pa">
|
<div class="pa">
|
||||||
<a-pagination
|
<a-pagination
|
||||||
v-if="tableDataTotal > 10"
|
v-if="tableDataTotal > 10"
|
||||||
:showSizeChanger="false"
|
:showSizeChanger="false"
|
||||||
showQuickJumper="true"
|
showQuickJumper="true"
|
||||||
hideOnSinglePage="true"
|
hideOnSinglePage="true"
|
||||||
:pageSize="pageSize"
|
:pageSize="pageSize"
|
||||||
:current="currentPage"
|
:current="currentPage"
|
||||||
:total="tableDataTotal"
|
:total="tableDataTotal"
|
||||||
class="pagination"
|
class="pagination"
|
||||||
@change="changePagination"
|
@change="changePagination"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -93,11 +93,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 取消授权弹窗 -->
|
<!-- 取消授权弹窗 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
v-model:visible="cancelModal"
|
v-model:visible="cancelModal"
|
||||||
:footer="null"
|
:footer="null"
|
||||||
:closable="closeCancel"
|
:closable="closeCancel"
|
||||||
wrapClassName="DelModal"
|
wrapClassName="DelModal"
|
||||||
centered="true"
|
centered="true"
|
||||||
>
|
>
|
||||||
<div class="delete">
|
<div class="delete">
|
||||||
<div class="del_header"></div>
|
<div class="del_header"></div>
|
||||||
@@ -131,9 +131,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {toRefs, reactive} from "vue";
|
import { toRefs, reactive } from "vue";
|
||||||
import * as api from "../../api/index1";
|
import * as api from "../../api/index1";
|
||||||
import {message} from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "ProjPowerList",
|
name: "ProjPowerList",
|
||||||
@@ -218,13 +218,13 @@ export default {
|
|||||||
width: 70,
|
width: 70,
|
||||||
// align: "left",
|
// align: "left",
|
||||||
className: "classify",
|
className: "classify",
|
||||||
scopedSlots: {customRender: "action"}, //引入的插槽
|
scopedSlots: { customRender: "action" }, //引入的插槽
|
||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
// console.log(text.record.checked1);
|
// console.log(text.record.checked1);
|
||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<span> {text.record.name}</span>
|
<span> {text.record.name}</span>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -270,17 +270,20 @@ export default {
|
|||||||
key: "opacation",
|
key: "opacation",
|
||||||
width: 100,
|
width: 100,
|
||||||
align: "center",
|
align: "center",
|
||||||
scopedSlots: {customRender: "action"}, //引入的插槽
|
scopedSlots: { customRender: "action" }, //引入的插槽
|
||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
return (text.record.state === '归属权' ? '' : <div
|
return text.record.state === "归属权" ? (
|
||||||
className="opa"
|
""
|
||||||
onClick={() => {
|
) : (
|
||||||
console.log("text.record.id", text.record.id);
|
<div
|
||||||
showCancelModal(text.record);
|
className="opa"
|
||||||
}}
|
onClick={() => {
|
||||||
>
|
console.log("text.record.id", text.record.id);
|
||||||
取消授权
|
showCancelModal(text.record);
|
||||||
</div>
|
}}
|
||||||
|
>
|
||||||
|
取消授权
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -293,13 +296,13 @@ export default {
|
|||||||
let obj = {
|
let obj = {
|
||||||
keyWord: state.name ? state.name : "",
|
keyWord: state.name ? state.name : "",
|
||||||
type:
|
type:
|
||||||
props.classify === "learnPath"
|
props.classify === "learnPath"
|
||||||
? 1
|
? 1
|
||||||
: props.classify === "project"
|
: props.classify === "project"
|
||||||
? 2
|
? 2
|
||||||
: props.classify === "course"
|
: props.classify === "course"
|
||||||
? 3
|
? 3
|
||||||
: null,
|
: null,
|
||||||
tag: 1,
|
tag: 1,
|
||||||
opt: 1,
|
opt: 1,
|
||||||
refId: props.selectProjectId,
|
refId: props.selectProjectId,
|
||||||
@@ -308,34 +311,34 @@ export default {
|
|||||||
};
|
};
|
||||||
console.log("获取权限名单obj", obj);
|
console.log("获取权限名单obj", obj);
|
||||||
api
|
api
|
||||||
.optionAuthPerm(obj)
|
.optionAuthPerm(obj)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
// console.log("获取权限名单成功", res);
|
// console.log("获取权限名单成功", res);
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
console.log("获取权限名单成功", res.data.data.records);
|
console.log("获取权限名单成功", res.data.data.records);
|
||||||
let arr = res.data.data.records;
|
let arr = res.data.data.records;
|
||||||
let array = [];
|
let array = [];
|
||||||
arr.map((value) => {
|
arr.map((value) => {
|
||||||
let obj = {
|
let obj = {
|
||||||
key: value.memberId,
|
key: value.memberId,
|
||||||
id: value.memberId,
|
id: value.memberId,
|
||||||
|
|
||||||
name: value.memberName ? value.memberName : "-",
|
name: value.memberName ? value.memberName : "-",
|
||||||
|
|
||||||
com: value.orgName ? value.orgName : "-",
|
com: value.orgName ? value.orgName : "-",
|
||||||
gang: value.positionMgrLevel ? value.positionMgrLevel : "-",
|
gang: value.positionMgrLevel ? value.positionMgrLevel : "-",
|
||||||
number: value.memberNo ? value.memberNo : "-",
|
number: value.memberNo ? value.memberNo : "-",
|
||||||
state: value.tagName ? value.tagName : "-",
|
state: value.tagName ? value.tagName : "-",
|
||||||
};
|
};
|
||||||
array.push(obj);
|
array.push(obj);
|
||||||
});
|
});
|
||||||
state.tableData = array;
|
state.tableData = array;
|
||||||
state.tableDataTotal = res.data.data.total;
|
state.tableDataTotal = res.data.data.total;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log("获取权限名单失败", err);
|
console.log("获取权限名单失败", err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
//分页
|
//分页
|
||||||
@@ -360,21 +363,21 @@ export default {
|
|||||||
let obj = {
|
let obj = {
|
||||||
keyWord: "",
|
keyWord: "",
|
||||||
type:
|
type:
|
||||||
props.classify === "learnPath"
|
props.classify === "learnPath"
|
||||||
? 1
|
? 1
|
||||||
: props.classify === "project"
|
: props.classify === "project"
|
||||||
? 2
|
? 2
|
||||||
: props.classify === "course"
|
: props.classify === "course"
|
||||||
? 3
|
? 3
|
||||||
: null,
|
: null,
|
||||||
tag:
|
tag:
|
||||||
state.cancelAuthState === "归属权"
|
state.cancelAuthState === "归属权"
|
||||||
? 2
|
? 2
|
||||||
: state.cancelAuthState === "查看权"
|
: state.cancelAuthState === "查看权"
|
||||||
? 3
|
? 3
|
||||||
: state.cancelAuthState === "管理权"
|
: state.cancelAuthState === "管理权"
|
||||||
? 4
|
? 4
|
||||||
: null,
|
: null,
|
||||||
opt: 4,
|
opt: 4,
|
||||||
refId: props.selectProjectId,
|
refId: props.selectProjectId,
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
@@ -385,19 +388,19 @@ export default {
|
|||||||
};
|
};
|
||||||
console.log("取消权限名单obj", obj, state.cancelAuthState);
|
console.log("取消权限名单obj", obj, state.cancelAuthState);
|
||||||
api
|
api
|
||||||
.optionAuthPerm(obj)
|
.optionAuthPerm(obj)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
console.log("取消权限名单", res);
|
console.log("取消权限名单", res);
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
// console.log("取消授权成功", res.data.data);
|
// console.log("取消授权成功", res.data.data);
|
||||||
optionAuthPerm();
|
optionAuthPerm();
|
||||||
message.success("取消授权成功");
|
message.success("取消授权成功");
|
||||||
closeCancelModal();
|
closeCancelModal();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log("取消授权失败", err);
|
console.log("取消授权失败", err);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
@@ -443,8 +446,8 @@ export default {
|
|||||||
width: calc(100%);
|
width: calc(100%);
|
||||||
height: 40px;
|
height: 40px;
|
||||||
background: linear-gradient(
|
background: linear-gradient(
|
||||||
rgba(78, 166, 255, 0.2) 0%,
|
rgba(78, 166, 255, 0.2) 0%,
|
||||||
rgba(78, 166, 255, 0) 100%
|
rgba(78, 166, 255, 0) 100%
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -535,7 +538,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.ProjPowerList {
|
.ProjPowerList {
|
||||||
// width: 80%;
|
// width: 80%;
|
||||||
.ant-drawer-content-wrapper {
|
.ant-drawer-content-wrapper {
|
||||||
@@ -684,8 +686,8 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ant-table-tbody
|
.ant-table-tbody
|
||||||
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
|
||||||
> td {
|
> td {
|
||||||
background: #f6f9fd;
|
background: #f6f9fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -195,7 +195,7 @@ export default {
|
|||||||
console.log('我是传递过来的参数2', props.basicdata)
|
console.log('我是传递过来的参数2', props.basicdata)
|
||||||
api.QueryAssessmentDetail({
|
api.QueryAssessmentDetail({
|
||||||
"assessmentSubmitId": props.datasource.assessmentSubmitId?props.datasource.assessmentSubmitId:props.datasource.assessmentResultIds,
|
"assessmentSubmitId": props.datasource.assessmentSubmitId?props.datasource.assessmentSubmitId:props.datasource.assessmentResultIds,
|
||||||
"courseId": props.basicdata.id,
|
"courseId": props.datasource.courseId,
|
||||||
"studentId": props.datasource.studentId
|
"studentId": props.datasource.studentId
|
||||||
}).then(res=>{
|
}).then(res=>{
|
||||||
console.log(res)
|
console.log(res)
|
||||||
|
|||||||
@@ -1,26 +1,42 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-drawer :visible="ACertificate" class="drawerStyle AddCertificate" width="80%" title="添加证书" placement="right"
|
<a-drawer
|
||||||
@after-visible-change="afterVisibleChange">
|
:visible="ACertificate"
|
||||||
|
class="drawerStyle AddCertificate"
|
||||||
|
width="80%"
|
||||||
|
title="添加证书"
|
||||||
|
placement="right"
|
||||||
|
@after-visible-change="afterVisibleChange"
|
||||||
|
>
|
||||||
<div class="drawerMain">
|
<div class="drawerMain">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="headerTitle">
|
<div class="headerTitle">
|
||||||
{{ ACertificateEditId ? "编辑" : "添加" }}证书
|
{{ ACertificateEditId ? "编辑" : "添加" }}证书
|
||||||
</div>
|
</div>
|
||||||
<img style="width: 29px; height: 29px; cursor: pointer" src="../../../assets/images/basicinfo/close.png"
|
<img
|
||||||
@click="closeDrawer" />
|
style="width: 29px; height: 29px; cursor: pointer"
|
||||||
|
src="../../../assets/images/basicinfo/close.png"
|
||||||
|
@click="closeDrawer"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="contentMain">
|
<div class="contentMain">
|
||||||
<div class="main_left">
|
<div class="main_left">
|
||||||
<div class="main_item">
|
<div class="main_item">
|
||||||
<div class="signbox">
|
<div class="signbox">
|
||||||
<div class="sign">
|
<div class="sign">
|
||||||
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span style="margin-right: 3px">证书名称:</span>
|
<span style="margin-right: 3px">证书名称:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-input v-model:value="certificateName" style="width: 400px; height: 40px; border-radius: 8px"
|
<a-input
|
||||||
placeholder="请输入证书名称" maxlength="20" />
|
v-model:value="certificateName"
|
||||||
|
style="width: 400px; height: 40px; border-radius: 8px"
|
||||||
|
placeholder="请输入证书名称"
|
||||||
|
maxlength="20"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -47,14 +63,32 @@
|
|||||||
<div class="main_item" style="align-items: flex-start">
|
<div class="main_item" style="align-items: flex-start">
|
||||||
<div class="signbox">
|
<div class="signbox">
|
||||||
<div class="sign">
|
<div class="sign">
|
||||||
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span style="margin-right: 3px">证书封面:</span>
|
<span style="margin-right: 3px">证书封面:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox" style="flex-direction: column; align-items: flex-start">
|
<div
|
||||||
<a-upload v-model:file-list="fileList" name="file" style="width: 200px" list-type="picture-card"
|
class="btnbox"
|
||||||
class="avatar-uploader" :show-upload-list="false" :before-upload="beforeUpload">
|
style="flex-direction: column; align-items: flex-start"
|
||||||
<img v-if="imageUrl" :src="imageUrl" alt="avatar" />
|
>
|
||||||
|
<a-upload
|
||||||
|
v-model:file-list="fileList"
|
||||||
|
name="file"
|
||||||
|
style="width: 200px"
|
||||||
|
list-type="picture-card"
|
||||||
|
class="avatar-uploader"
|
||||||
|
:show-upload-list="false"
|
||||||
|
:before-upload="beforeUpload"
|
||||||
|
>
|
||||||
|
<img
|
||||||
|
v-if="imageUrl"
|
||||||
|
:src="imageUrl"
|
||||||
|
alt="avatar"
|
||||||
|
style="width: 170px; height: 200px"
|
||||||
|
/>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<loading-outlined v-if="loading"></loading-outlined>
|
<loading-outlined v-if="loading"></loading-outlined>
|
||||||
<plus-outlined v-else></plus-outlined>
|
<plus-outlined v-else></plus-outlined>
|
||||||
@@ -71,58 +105,90 @@
|
|||||||
<span style="margin-right: 3px">证书说明:</span>
|
<span style="margin-right: 3px">证书说明:</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="textarea" style="width: 400px">
|
<div class="textarea" style="width: 400px">
|
||||||
<a-textarea v-model:value="certificateRemark" placeholder="请输入证书说明" allow-clear :rows="8" show-count
|
<a-textarea
|
||||||
:maxlength="200" />
|
v-model:value="certificateRemark"
|
||||||
|
placeholder="请输入证书说明"
|
||||||
|
allow-clear
|
||||||
|
:rows="8"
|
||||||
|
show-count
|
||||||
|
:maxlength="200"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="main_item" style="margin-bottom: 16px">
|
<div class="main_item" style="margin-bottom: 16px">
|
||||||
<div class="signbox">
|
<div class="signbox">
|
||||||
<div class="sign">
|
<div class="sign">
|
||||||
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
|
<img
|
||||||
|
src="@/assets/images/coursewareManage/asterisk.png"
|
||||||
|
alt=""
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span style="
|
<span
|
||||||
margin-right: 3px;
|
style="
|
||||||
font-size: 16px;
|
margin-right: 3px;
|
||||||
color: #333;
|
font-size: 16px;
|
||||||
font-size: 14px;
|
color: #333;
|
||||||
">设置获得条件</span>
|
font-size: 14px;
|
||||||
|
"
|
||||||
|
>设置获得条件</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox"></div>
|
<div class="btnbox"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="main_item" style="
|
<div
|
||||||
border: 1px solid rgba(0, 0, 0, 0.1);
|
class="main_item"
|
||||||
width: ;
|
style="
|
||||||
margin-left: 35px;
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
||||||
padding-top: 30px;
|
width: ;
|
||||||
margin-top: 0px;
|
margin-left: 35px;
|
||||||
">
|
padding-top: 30px;
|
||||||
|
margin-top: 0px;
|
||||||
|
"
|
||||||
|
>
|
||||||
<div class="signbox" style="width: 30px">
|
<div class="signbox" style="width: 30px">
|
||||||
<span style="margin-right: 3px; font-size: 16px; color: #333"></span>
|
<span
|
||||||
|
style="margin-right: 3px; font-size: 16px; color: #333"
|
||||||
|
></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnbox">
|
<div class="btnbox">
|
||||||
<a-radio-group v-model:value="condition" @change="selectCondition">
|
<a-radio-group
|
||||||
|
v-model:value="condition"
|
||||||
|
@change="selectCondition"
|
||||||
|
>
|
||||||
<a-radio v-model:checked="checked" :value="1">
|
<a-radio v-model:checked="checked" :value="1">
|
||||||
完成项目
|
完成项目
|
||||||
<a-popover>
|
<a-popover>
|
||||||
<template #content>
|
<template #content>
|
||||||
<div style="font-size: 12px; color: rgba(153, 153, 153, 1)">
|
<div
|
||||||
|
style="font-size: 12px; color: rgba(153, 153, 153, 1)"
|
||||||
|
>
|
||||||
后续新增自动包括
|
后续新增自动包括
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<img style="width: 16px; height: 16px" src="../../../assets/images/project/tishi.png" />
|
<img
|
||||||
|
style="width: 16px; height: 16px"
|
||||||
|
src="../../../assets/images/project/tishi.png"
|
||||||
|
/>
|
||||||
</a-popover>
|
</a-popover>
|
||||||
</a-radio>
|
</a-radio>
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<div style="
|
<div
|
||||||
height: 60px;
|
style="
|
||||||
margin-left: 24px;
|
height: 60px;
|
||||||
display: flex;
|
margin-left: 24px;
|
||||||
align-items: center;
|
display: flex;
|
||||||
">
|
align-items: center;
|
||||||
<a-radio-group v-model:value="large" size="small" @change="selectlarge" :disabled="condition !== 1">
|
"
|
||||||
|
>
|
||||||
|
<a-radio-group
|
||||||
|
v-model:value="large"
|
||||||
|
size="small"
|
||||||
|
@change="selectlarge"
|
||||||
|
:disabled="condition !== 1"
|
||||||
|
>
|
||||||
<a-radio-button value="1">全部任务</a-radio-button>
|
<a-radio-button value="1">全部任务</a-radio-button>
|
||||||
<a-radio-button value="2">完成必修任务</a-radio-button>
|
<a-radio-button value="2">完成必修任务</a-radio-button>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
@@ -131,84 +197,132 @@
|
|||||||
完成阶段
|
完成阶段
|
||||||
</a-radio>
|
</a-radio>
|
||||||
<br />
|
<br />
|
||||||
<div style="
|
<div
|
||||||
height: 60px;
|
style="
|
||||||
margin-left: 24px;
|
height: 60px;
|
||||||
display: flex;
|
margin-left: 24px;
|
||||||
align-items: center;
|
display: flex;
|
||||||
">
|
align-items: center;
|
||||||
<a-select ref="select" size="small" placeholder="请选择阶段" v-model:value="selectStageName"
|
"
|
||||||
style="width: 120px" @focus="focus" @change="selectStage" :options="stageList" :fieldNames="{
|
>
|
||||||
|
<a-select
|
||||||
|
ref="select"
|
||||||
|
size="small"
|
||||||
|
placeholder="请选择阶段"
|
||||||
|
v-model:value="selectStageName"
|
||||||
|
style="width: 120px"
|
||||||
|
@focus="focus"
|
||||||
|
@change="selectStage"
|
||||||
|
:options="stageList"
|
||||||
|
:fieldNames="{
|
||||||
key: 'id',
|
key: 'id',
|
||||||
title: 'name',
|
title: 'name',
|
||||||
value: 'name',
|
value: 'name',
|
||||||
}" :disabled="condition !== 2">
|
}"
|
||||||
|
:disabled="condition !== 2"
|
||||||
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
<a-radio v-model:checked="checked" :value="3">
|
<a-radio v-model:checked="checked" :value="3">
|
||||||
完成任务
|
完成任务
|
||||||
</a-radio>
|
</a-radio>
|
||||||
<br />
|
<br />
|
||||||
<div style="
|
<div
|
||||||
height: 60px;
|
style="
|
||||||
margin-left: 24px;
|
height: 60px;
|
||||||
display: flex;
|
margin-left: 24px;
|
||||||
align-items: center;
|
display: flex;
|
||||||
">
|
align-items: center;
|
||||||
<a-select ref="select" size="small" placeholder="请选择任务" v-model:value="selectTaskName"
|
"
|
||||||
style="width: 120px" @focus="focus" @change="selectTask" :options="taskList" :fieldNames="{
|
>
|
||||||
|
<a-select
|
||||||
|
ref="select"
|
||||||
|
size="small"
|
||||||
|
placeholder="请选择任务"
|
||||||
|
v-model:value="selectTaskName"
|
||||||
|
style="width: 120px"
|
||||||
|
@focus="focus"
|
||||||
|
@change="selectTask"
|
||||||
|
:options="taskList"
|
||||||
|
:fieldNames="{
|
||||||
key: 'id',
|
key: 'id',
|
||||||
title: 'name',
|
title: 'name',
|
||||||
value: 'name',
|
value: 'name',
|
||||||
}" :disabled="condition !== 3">
|
}"
|
||||||
|
:disabled="condition !== 3"
|
||||||
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
<a-radio v-model:checked="checked" :value="4">
|
<a-radio v-model:checked="checked" :value="4">
|
||||||
考试合格
|
考试合格
|
||||||
</a-radio>
|
</a-radio>
|
||||||
<br />
|
<br />
|
||||||
<div style="
|
<div
|
||||||
height: 60px;
|
style="
|
||||||
margin-left: 24px;
|
height: 60px;
|
||||||
display: flex;
|
margin-left: 24px;
|
||||||
align-items: center;
|
display: flex;
|
||||||
">
|
align-items: center;
|
||||||
<a-select ref="select" size="small" placeholder="请选择考试" v-model:value="selectExamName"
|
"
|
||||||
style="width: 120px" @focus="focus" @change="selectExam" :options="examList" :fieldNames="{
|
>
|
||||||
|
<a-select
|
||||||
|
ref="select"
|
||||||
|
size="small"
|
||||||
|
placeholder="请选择考试"
|
||||||
|
v-model:value="selectExamName"
|
||||||
|
style="width: 120px"
|
||||||
|
@focus="focus"
|
||||||
|
@change="selectExam"
|
||||||
|
:options="examList"
|
||||||
|
:fieldNames="{
|
||||||
key: 'id',
|
key: 'id',
|
||||||
title: 'name',
|
title: 'name',
|
||||||
value: 'name',
|
value: 'name',
|
||||||
}" :disabled="condition !== 4">
|
}"
|
||||||
|
:disabled="condition !== 4"
|
||||||
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
<a-radio v-model:checked="checked" :value="5">
|
<a-radio v-model:checked="checked" :value="5">
|
||||||
获得积分
|
获得积分
|
||||||
</a-radio>
|
</a-radio>
|
||||||
<br />
|
<br />
|
||||||
<div style="
|
<div
|
||||||
height: 60px;
|
style="
|
||||||
margin-left: 24px;
|
height: 60px;
|
||||||
display: flex;
|
margin-left: 24px;
|
||||||
align-items: center;
|
display: flex;
|
||||||
">
|
align-items: center;
|
||||||
<div style="
|
"
|
||||||
font-size: 14px;
|
>
|
||||||
font-weight: 400;
|
<div
|
||||||
color: #333333;
|
style="
|
||||||
line-height: 20px;
|
font-size: 14px;
|
||||||
margin-right: 5px;
|
font-weight: 400;
|
||||||
">
|
color: #333333;
|
||||||
|
line-height: 20px;
|
||||||
|
margin-right: 5px;
|
||||||
|
"
|
||||||
|
>
|
||||||
高于
|
高于
|
||||||
</div>
|
</div>
|
||||||
<a-input-number id="inputNumber" v-model:value="score" :min="1" :max="projectPoints" style="width: 70px"
|
<a-input-number
|
||||||
:disabled="condition !== 5" />
|
id="inputNumber"
|
||||||
<div style="
|
v-model:value="score"
|
||||||
font-size: 14px;
|
:min="1"
|
||||||
font-weight: 400;
|
:max="projectPoints"
|
||||||
color: #333333;
|
style="width: 70px"
|
||||||
line-height: 20px;
|
:disabled="condition !== 5"
|
||||||
margin-left: 5px;
|
/>
|
||||||
">
|
<div
|
||||||
|
style="
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #333333;
|
||||||
|
line-height: 20px;
|
||||||
|
margin-left: 5px;
|
||||||
|
"
|
||||||
|
>
|
||||||
分可获得,当前项目积分为 {{ projectPoints }} 分
|
分可获得,当前项目积分为 {{ projectPoints }} 分
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -486,16 +600,14 @@ export default {
|
|||||||
formDatas.append("file", file);
|
formDatas.append("file", file);
|
||||||
fileUp(formDatas).then((res) => {
|
fileUp(formDatas).then((res) => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
console.log(file)
|
console.log(file);
|
||||||
state.imageUrl = process.env.VUE_APP_FILE_PATH + res.data.data;
|
state.imageUrl = process.env.VUE_APP_FILE_PATH + res.data.data;
|
||||||
state.imageName = process.env.VUE_APP_FILE_PATH + res.data.data;
|
state.imageName = process.env.VUE_APP_FILE_PATH + res.data.data;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//查看证书
|
//查看证书
|
||||||
const getcertificate = () => {
|
const getcertificate = () => {
|
||||||
let obj = {
|
let obj = {
|
||||||
@@ -578,14 +690,14 @@ export default {
|
|||||||
state.condition == 1
|
state.condition == 1
|
||||||
? state.large
|
? state.large
|
||||||
: state.condition == 2
|
: state.condition == 2
|
||||||
? state.selectStageId
|
? state.selectStageId
|
||||||
: state.condition == 3
|
: state.condition == 3
|
||||||
? state.selectTaskId
|
? state.selectTaskId
|
||||||
: state.condition == 4
|
: state.condition == 4
|
||||||
? state.selectExamId
|
? state.selectExamId
|
||||||
: state.condition == 5
|
: state.condition == 5
|
||||||
? state.score
|
? state.score
|
||||||
: "",
|
: "",
|
||||||
type: 1,
|
type: 1,
|
||||||
};
|
};
|
||||||
if (props.ACertificateEdit) {
|
if (props.ACertificateEdit) {
|
||||||
|
|||||||
@@ -169,13 +169,13 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
value: "10",
|
value: "9",
|
||||||
label: "未通过",
|
label: "已完成",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
value: "1",
|
value: "1",
|
||||||
label: "已通过",
|
label: "进行中",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
selectedRowKeys: [],
|
selectedRowKeys: [],
|
||||||
@@ -305,7 +305,7 @@ export default {
|
|||||||
align: "center",
|
align: "center",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
className: "h",
|
className: "h",
|
||||||
customRender: ({record:{finishStatus}}) => ({1:'通过',2:'未通过'}[finishStatus] || '未开始'),
|
customRender: ({record:{finishStatus}}) => ({1:'进行中',0:'未开始',9:'已完成'}[finishStatus] || '未开始'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "操作",
|
title: "操作",
|
||||||
|
|||||||
@@ -496,6 +496,9 @@ export default {
|
|||||||
if(props.datasource.type==1){
|
if(props.datasource.type==1){
|
||||||
{/* 在线课导出 */}
|
{/* 在线课导出 */}
|
||||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/online/manage/exportOnline?chapterId=${props.datasource.chapterId}&type=${1}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}`)
|
window.open(`${process.env.VUE_APP_BASE_API}/admin/online/manage/exportOnline?chapterId=${props.datasource.chapterId}&type=${1}&targetId=${props.datasource.routerId}&taskId=${props.datasource.courseId}`)
|
||||||
|
}else if(props.datasource.type==11){
|
||||||
|
{/* 评估导出 */}
|
||||||
|
window.open(`${process.env.VUE_APP_BASE_API}admin/assessment/manage/exportAssessmentMessage?chapterId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&courseId=${props.datasource.courseId}&taskId=${props.datasource.id}&taskType=${props.datasource.type}`)
|
||||||
}else{
|
}else{
|
||||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.id}&taskType=${props.datasource.type}`)
|
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?currentStageId=${props.datasource.stageId}&type=${1}&pid=${props.datasource.projectId}&taskId=${props.datasource.id}&taskType=${props.datasource.type}`)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -360,7 +360,7 @@
|
|||||||
"studentName": state.name,
|
"studentName": state.name,
|
||||||
"targetId":props.datasource.projectId,
|
"targetId":props.datasource.projectId,
|
||||||
"taskId": props.datasource.courseId,
|
"taskId": props.datasource.courseId,
|
||||||
"type": 2
|
"type": 1
|
||||||
});
|
});
|
||||||
api.QueryVoteManagementDetail({
|
api.QueryVoteManagementDetail({
|
||||||
"pageNo": state.currentPage,
|
"pageNo": state.currentPage,
|
||||||
@@ -370,7 +370,7 @@
|
|||||||
"studentName": state.name,
|
"studentName": state.name,
|
||||||
"targetId":props.datasource.routerId,
|
"targetId":props.datasource.routerId,
|
||||||
"taskId": props.datasource.courseId,
|
"taskId": props.datasource.courseId,
|
||||||
"type": 2
|
"type": 1
|
||||||
}).then(res=>{
|
}).then(res=>{
|
||||||
console.log('投票数据获取', res)
|
console.log('投票数据获取', res)
|
||||||
if(res.data.code==200){
|
if(res.data.code==200){
|
||||||
|
|||||||
@@ -128,16 +128,19 @@
|
|||||||
</div>-->
|
</div>-->
|
||||||
</div>
|
</div>
|
||||||
</a-drawer>
|
</a-drawer>
|
||||||
|
<view-assess v-model:Assessvisible="Assessvisible" :datasource="evalDataSource" :evalName="datasource.info?.assessmentName"
|
||||||
|
:basicdata="datasource.info" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
import { toRefs, reactive, onMounted, onUnmounted } from "vue";
|
||||||
import { message } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
|
import ViewAssess from "../ViewAssess";
|
||||||
// import * as api from "../../../api/index";
|
// import * as api from "../../../api/index";
|
||||||
import * as api from "../../../api/indexTaskManage";
|
import * as api from "../../../api/indexTaskManage";
|
||||||
export default {
|
export default {
|
||||||
name: "RouterCommonManage",
|
name: "RouterCommonManage",
|
||||||
|
components: { ViewAssess },
|
||||||
props: {
|
props: {
|
||||||
CommonModelVisible: {
|
CommonModelVisible: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@@ -200,6 +203,8 @@ export default {
|
|||||||
],
|
],
|
||||||
tabledata: [],
|
tabledata: [],
|
||||||
tableDataTotalLoading: true, // 表格loading加载配置
|
tableDataTotalLoading: true, // 表格loading加载配置
|
||||||
|
evalDataSource: "",
|
||||||
|
Assessvisible: false
|
||||||
});
|
});
|
||||||
const tableDataFunc = () => {
|
const tableDataFunc = () => {
|
||||||
const columns = [
|
const columns = [
|
||||||
@@ -317,9 +322,42 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
let obj = {
|
||||||
|
title: "操作",
|
||||||
|
dataIndex: "finishStatus",
|
||||||
|
key: "finishStatus",
|
||||||
|
width: 60,
|
||||||
|
align: "center",
|
||||||
|
ellipsis: true,
|
||||||
|
className: "h",
|
||||||
|
customRender: (text) => {
|
||||||
|
return (
|
||||||
|
<div class="racona">
|
||||||
|
<a
|
||||||
|
onClick={()=>{
|
||||||
|
console.log('iyiy', text.record)
|
||||||
|
showassess(text.record);
|
||||||
|
}}>查看</a>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
{/* 评估查看操作 */}
|
||||||
|
if(props.datasource.type==11){
|
||||||
|
columns.push(obj)
|
||||||
|
}
|
||||||
|
|
||||||
return columns;
|
return columns;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
{/* 查看评估弹框 */}
|
||||||
|
const showassess = (data) => {
|
||||||
|
state.evalDataSource = data;
|
||||||
|
state.Assessvisible = true;
|
||||||
|
};
|
||||||
|
|
||||||
const closeDrawer = () => {
|
const closeDrawer = () => {
|
||||||
ctx.emit("update:CommonModelVisible", false);
|
ctx.emit("update:CommonModelVisible", false);
|
||||||
state.currentPage = 1;
|
state.currentPage = 1;
|
||||||
@@ -477,6 +515,7 @@ export default {
|
|||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
selectProjectName,
|
selectProjectName,
|
||||||
closeDrawer,
|
closeDrawer,
|
||||||
|
showassess,
|
||||||
afterVisibleChange,
|
afterVisibleChange,
|
||||||
tableDataFunc,
|
tableDataFunc,
|
||||||
godie,
|
godie,
|
||||||
|
|||||||
@@ -286,7 +286,7 @@ export default {
|
|||||||
align: "center",
|
align: "center",
|
||||||
ellipsis: true,
|
ellipsis: true,
|
||||||
className: "h",
|
className: "h",
|
||||||
customRender: ({ record: { finishStatus } }) => ({ 1: '通过', 2: '未通过' }[finishStatus] || '未开始'),
|
customRender: ({record:{finishStatus}}) => ({1:'进行中',0:'未开始',9:'已完成'}[finishStatus] || '未开始'),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "操作",
|
title: "操作",
|
||||||
@@ -299,7 +299,7 @@ export default {
|
|||||||
customRender: (text) => {
|
customRender: (text) => {
|
||||||
{/* debugger */ }
|
{/* debugger */ }
|
||||||
console.log("text" + text.record)
|
console.log("text" + text.record)
|
||||||
if (text.record.finishStatus === 1 || text.record.finishStatus === 2) {
|
if (text.record.finishStatus === 1 || text.record.finishStatus === 9) {
|
||||||
return (
|
return (
|
||||||
<div class="racona">
|
<div class="racona">
|
||||||
<a-button
|
<a-button
|
||||||
|
|||||||
@@ -352,7 +352,12 @@ const props = defineProps({
|
|||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
activeKey1: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
console.log("props.activeKey1" + props.activeKey1)
|
||||||
// 获取项目学员;
|
// 获取项目学员;
|
||||||
const procurrentPage = ref(1);
|
const procurrentPage = ref(1);
|
||||||
const projectList = ref([]);
|
const projectList = ref([]);
|
||||||
@@ -386,7 +391,6 @@ const getStu = () => {
|
|||||||
console.log("获取项目学员", obj);
|
console.log("获取项目学员", obj);
|
||||||
getStuPage(obj).then((res) => {
|
getStuPage(obj).then((res) => {
|
||||||
console.log("获取项目学员", res);
|
console.log("获取项目学员", res);
|
||||||
if (res.data.code === 200) {
|
|
||||||
let arr = res.data.data.records;
|
let arr = res.data.data.records;
|
||||||
let array = [];
|
let array = [];
|
||||||
arr.map((value) => {
|
arr.map((value) => {
|
||||||
@@ -403,7 +407,6 @@ const getStu = () => {
|
|||||||
});
|
});
|
||||||
projectList.value = array;
|
projectList.value = array;
|
||||||
projectListTotal.value = res.data.data.total;
|
projectListTotal.value = res.data.data.total;
|
||||||
}
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
getStu();
|
getStu();
|
||||||
@@ -775,30 +778,33 @@ const submitAuth = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function handleStageOk() {
|
function handleStageOk() {
|
||||||
|
// debugger
|
||||||
// 判断添加人数是否已超过限制人数 限制 = 本次添加的人 + 原有的人
|
// 判断添加人数是否已超过限制人数 限制 = 本次添加的人 + 原有的人
|
||||||
if (props.type === 1) {
|
if (props.type === 1) {
|
||||||
let selectMember = 0;
|
if (props.groupMemberCount !== null) { // 只有添加组员的时候判断
|
||||||
if (activeKey.value === 4) { // 项目内选人
|
let selectMember = 0;
|
||||||
selectMember = selectsData.value.projectMemberList.length
|
if (activeKey.value === 4) { // 项目内选人
|
||||||
} else if (activeKey.value === 1) {
|
selectMember = selectsData.value.projectMemberList.length
|
||||||
selectMember = selectsData.value.studentList.length
|
} else if (activeKey.value === 1) {
|
||||||
} else if (activeKey.value === 2) {
|
selectMember = selectsData.value.studentList.length
|
||||||
selectMember = selectsData.value.groupList.length
|
} else if (activeKey.value === 2) {
|
||||||
} else if (activeKey.value === 3) {
|
selectMember = selectsData.value.groupList.length
|
||||||
selectMember = selectsData.value.deptList.length
|
} else if (activeKey.value === 3) {
|
||||||
}
|
selectMember = selectsData.value.deptList.length
|
||||||
if (props.groupMemberCount < selectMember + Number(props.groupMemberNumber)) {
|
}
|
||||||
return message.warning("添加小组学员超过最大值");
|
if (props.groupMemberCount < selectMember + Number(props.groupMemberNumber)) {
|
||||||
}
|
return message.warning("添加小组学员超过最大值");
|
||||||
// 判断是否是组长,组长不能添加
|
}
|
||||||
const leaderArray = selectsData.value.projectMemberList.filter(item => item.isLeader === '1');
|
// 判断是否是组长,组长不能添加
|
||||||
if (leaderArray.length > 0) {
|
const leaderArray = selectsData.value.projectMemberList.filter(item => item.isLeader === '1');
|
||||||
return message.warning("当前选中学员"+leaderArray[0].realName+"已是小组长,请勿重复选择。");
|
if (leaderArray.length > 0) {
|
||||||
}
|
return message.warning("当前选中学员"+leaderArray[0].realName+"已是小组长,请勿重复选择。");
|
||||||
// 对选中的人员进行判断是否已经分组了
|
}
|
||||||
let haveGroupNum = selectsData.value.projectMemberList.filter(item => item.groupId !== null);
|
// 对选中的人员进行判断是否已经分组了
|
||||||
if (haveGroupNum.length > 0) {
|
let haveGroupNum = selectsData.value.projectMemberList.filter(item => item.groupId !== null);
|
||||||
message.warning("部分学员已经有小组,再次添加会被添加到当前小组.");
|
if (haveGroupNum.length > 0) {
|
||||||
|
message.warning("部分学员已经有小组,再次添加会被添加到当前小组.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stageVisible.value = false;
|
stageVisible.value = false;
|
||||||
|
|||||||
@@ -1,51 +1,61 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="CommonStudent">
|
<div class="CommonStudent">
|
||||||
<a-drawer
|
<a-drawer
|
||||||
:visible="visiable"
|
:visible="visiable"
|
||||||
class="drawerStyle ProjCheckship"
|
class="drawerStyle ProjCheckship"
|
||||||
placement="right"
|
placement="right"
|
||||||
width="40%"
|
width="40%"
|
||||||
>
|
>
|
||||||
<div class="drawerMain" id="ProjCheckship" style="">
|
<div class="drawerMain" id="ProjCheckship" style="">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="headerTitle">
|
<div class="headerTitle">权限名单</div>
|
||||||
权限名单
|
|
||||||
</div>
|
|
||||||
<img
|
<img
|
||||||
style="width: 29px; height: 29px; cursor: pointer"
|
style="width: 29px; height: 29px; cursor: pointer"
|
||||||
src="../../assets/images/basicinfo/close.png"
|
src="../../assets/images/basicinfo/close.png"
|
||||||
@click="closeDrawer"
|
@click="closeDrawer"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="TableStudent">
|
<div class="TableStudent">
|
||||||
<a-row
|
<a-row
|
||||||
type="flex"
|
type="flex"
|
||||||
gutter="12"
|
gutter="12"
|
||||||
style="padding-left: 20px; margin-right: 0px"
|
style="padding-left: 20px; margin-right: 0px"
|
||||||
>
|
>
|
||||||
<a-col>
|
<a-col>
|
||||||
<a-form-item title="姓名:">
|
<a-form-item title="姓名:">
|
||||||
<a-input
|
<a-input
|
||||||
class="cus-input"
|
class="cus-input"
|
||||||
v-model:value="searchName"
|
v-model:value="searchName"
|
||||||
placeholder="请输入姓名"
|
placeholder="请输入姓名"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col>
|
<a-col>
|
||||||
<a-button
|
<a-button
|
||||||
class="cus-btn"
|
class="cus-btn"
|
||||||
style="background: #4ea6ff; color: #fff; width: 100px"
|
style="background: #4ea6ff; color: #fff; width: 100px"
|
||||||
@click="search"
|
@click="search"
|
||||||
>
|
>
|
||||||
<template #icon><img style="margin-right: 10px" src="../../assets/images/courseManage/search0.png"/>
|
<template #icon
|
||||||
|
><img
|
||||||
|
style="margin-right: 10px"
|
||||||
|
src="../../assets/images/courseManage/search0.png"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
搜索
|
搜索
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="2">
|
<a-col :span="2">
|
||||||
<a-button class="cus-btn white" style="width: 100px" @click="reset">
|
<a-button
|
||||||
<template #icon><img style="margin-right: 10px" src="../../assets/images/leveladd/reset.png"/>
|
class="cus-btn white"
|
||||||
|
style="width: 100px"
|
||||||
|
@click="reset"
|
||||||
|
>
|
||||||
|
<template #icon
|
||||||
|
><img
|
||||||
|
style="margin-right: 10px"
|
||||||
|
src="../../assets/images/leveladd/reset.png"
|
||||||
|
/>
|
||||||
</template>
|
</template>
|
||||||
重置
|
重置
|
||||||
</a-button>
|
</a-button>
|
||||||
@@ -53,16 +63,26 @@
|
|||||||
</a-row>
|
</a-row>
|
||||||
<div style="margin-top: 20px">
|
<div style="margin-top: 20px">
|
||||||
<a-table
|
<a-table
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:data-source="studentList"
|
:data-source="studentList"
|
||||||
:pagination="stuPagination"
|
:pagination="stuPagination"
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
row-key="id"
|
row-key="id"
|
||||||
>
|
>
|
||||||
<template #action="{ record }">
|
<template #action="{ record }">
|
||||||
<a-space :size="2">
|
<a-space :size="2">
|
||||||
<slot name="extension" v-bind:data="{ record }"></slot>
|
<slot name="extension" v-bind:data="{ record }"></slot>
|
||||||
<a-button v-if="record.type!==6 && record.type!==9 && record.type!==12" @click="del(record.id)" type="link" danger>删除</a-button>
|
<a-button
|
||||||
|
v-if="
|
||||||
|
record.type !== 6 &&
|
||||||
|
record.type !== 9 &&
|
||||||
|
record.type !== 12
|
||||||
|
"
|
||||||
|
@click="del(record.id)"
|
||||||
|
type="link"
|
||||||
|
danger
|
||||||
|
>删除</a-button
|
||||||
|
>
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
</a-table>
|
</a-table>
|
||||||
@@ -78,12 +98,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {computed, createVNode, defineProps, defineExpose, ref, watch} from "vue";
|
import {
|
||||||
import {usePage} from "@/api/request";
|
computed,
|
||||||
import {STUDENT_LIST} from "@/api/apis";
|
createVNode,
|
||||||
import {delStudentList} from "@/api/index1";
|
defineProps,
|
||||||
import {ExclamationCircleOutlined} from "@ant-design/icons-vue";
|
defineExpose,
|
||||||
import {Modal} from "ant-design-vue";
|
ref,
|
||||||
|
watch,
|
||||||
|
} from "vue";
|
||||||
|
import { usePage } from "@/api/request";
|
||||||
|
import { STUDENT_LIST } from "@/api/apis";
|
||||||
|
import { delStudentList } from "@/api/index1";
|
||||||
|
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||||
|
import { Modal } from "ant-design-vue";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
type: Number,
|
type: Number,
|
||||||
@@ -104,13 +131,13 @@ const initParams = {
|
|||||||
studentName: "",
|
studentName: "",
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
type: props.type || '',
|
type: props.type || "",
|
||||||
types: props.types,
|
types: props.types,
|
||||||
pid: props.id || '',
|
pid: props.id || "",
|
||||||
}
|
};
|
||||||
|
|
||||||
const searchParams = ref(initParams)
|
const searchParams = ref(initParams);
|
||||||
const searchName = ref('')
|
const searchName = ref("");
|
||||||
|
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
{
|
{
|
||||||
@@ -143,7 +170,18 @@ const columns = ref([
|
|||||||
key: "type",
|
key: "type",
|
||||||
width: 30,
|
width: 30,
|
||||||
align: "center",
|
align: "center",
|
||||||
customRender: ({record: {type}}) => ({4: "查看权", 5: "管理权", 6: "归属权",7: "查看权", 8: "管理权", 9: "归属权",10: "查看权", 11: "管理权", 12: "归属权"}[type])
|
customRender: ({ record: { type } }) =>
|
||||||
|
({
|
||||||
|
4: "查看权",
|
||||||
|
5: "管理权",
|
||||||
|
6: "归属权",
|
||||||
|
7: "查看权",
|
||||||
|
8: "管理权",
|
||||||
|
9: "归属权",
|
||||||
|
10: "查看权",
|
||||||
|
11: "管理权",
|
||||||
|
12: "归属权",
|
||||||
|
}[type]),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "操作",
|
title: "操作",
|
||||||
@@ -151,18 +189,23 @@ const columns = ref([
|
|||||||
key: "operation",
|
key: "operation",
|
||||||
width: 50,
|
width: 50,
|
||||||
align: "center",
|
align: "center",
|
||||||
slots: {customRender: "action"},
|
slots: { customRender: "action" },
|
||||||
},
|
},
|
||||||
])
|
]);
|
||||||
|
|
||||||
const {data: studentList, fetch: searchStu, total, loading} = usePage(STUDENT_LIST, searchParams)
|
const {
|
||||||
|
data: studentList,
|
||||||
|
fetch: searchStu,
|
||||||
|
total,
|
||||||
|
loading,
|
||||||
|
} = usePage(STUDENT_LIST, searchParams);
|
||||||
|
|
||||||
const stuPagination = computed(() => ({
|
const stuPagination = computed(() => ({
|
||||||
total:total.value,
|
total: total.value,
|
||||||
showSizeChanger: false,
|
showSizeChanger: false,
|
||||||
current: searchParams.value.pageNo,
|
current: searchParams.value.pageNo,
|
||||||
pageSize: searchParams.value.pageSize,
|
pageSize: searchParams.value.pageSize,
|
||||||
onChange: changePagination
|
onChange: changePagination,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const openDrawer = () => {
|
const openDrawer = () => {
|
||||||
@@ -173,22 +216,22 @@ const changePagination = (page) => {
|
|||||||
searchParams.value.pageNo = page;
|
searchParams.value.pageNo = page;
|
||||||
};
|
};
|
||||||
|
|
||||||
function search(){
|
function search() {
|
||||||
searchParams.value.studentName = searchName.value
|
searchParams.value.studentName = searchName.value;
|
||||||
searchParams.value.pageNo = 1
|
searchParams.value.pageNo = 1;
|
||||||
}
|
}
|
||||||
function del(id) {
|
function del(id) {
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
title: () => '确定删除?',
|
title: () => "确定删除?",
|
||||||
icon: () => createVNode(ExclamationCircleOutlined),
|
icon: () => createVNode(ExclamationCircleOutlined),
|
||||||
content: () => '数据删除后不可恢复!',
|
content: () => "数据删除后不可恢复!",
|
||||||
okText: () => '确定',
|
okText: () => "确定",
|
||||||
okType: 'danger',
|
okType: "danger",
|
||||||
cancelText: () => '取消',
|
cancelText: () => "取消",
|
||||||
onOk() {
|
onOk() {
|
||||||
if(id){
|
if (id) {
|
||||||
loading.value = true
|
loading.value = true;
|
||||||
delStudentList({ids: [id]}).then(() => searchStu())
|
delStudentList({ ids: [id] }).then(() => searchStu());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -198,20 +241,20 @@ const closeDrawer = () => {
|
|||||||
visiable.value = false;
|
visiable.value = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
function reset(){
|
function reset() {
|
||||||
searchParams.value = initParams
|
searchParams.value = initParams;
|
||||||
searchName.value=''
|
searchName.value = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(visiable, () => {
|
watch(visiable, () => {
|
||||||
visiable.value && searchStu()
|
visiable.value && searchStu();
|
||||||
searchParams.value = initParams
|
searchParams.value = initParams;
|
||||||
});
|
});
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
searchStu,
|
searchStu,
|
||||||
loading
|
loading,
|
||||||
})
|
});
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.cus-btn {
|
.cus-btn {
|
||||||
|
|||||||
@@ -1,9 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="TableStudent">
|
<div class="TableStudent">
|
||||||
<a-row type="flex" gutter="12" style="padding-left: 20px; margin-right: 0px">
|
<a-row
|
||||||
|
type="flex"
|
||||||
|
gutter="12"
|
||||||
|
style="padding-left: 20px; margin-right: 0px"
|
||||||
|
>
|
||||||
<a-col>
|
<a-col>
|
||||||
<a-form-item title="姓名:">
|
<a-form-item title="姓名:">
|
||||||
<a-input class="cus-input" v-model:value="tableParam.studentName" placeholder="请输入姓名" />
|
<a-input
|
||||||
|
class="cus-input"
|
||||||
|
v-model:value="tableParam.studentName"
|
||||||
|
placeholder="请输入姓名"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<!-- <a-col v-if="type === 1">
|
<!-- <a-col v-if="type === 1">
|
||||||
@@ -19,39 +27,73 @@
|
|||||||
<a-col v-if="type === 1">
|
<a-col v-if="type === 1">
|
||||||
<a-form-item title="部门:">
|
<a-form-item title="部门:">
|
||||||
<div class="select in" style="width: 270px">
|
<div class="select in" style="width: 270px">
|
||||||
<OrgClass v-model:value="tableParam.studentDepartId" v-model:name="tableParam.studentDepartName"></OrgClass>
|
<OrgClass
|
||||||
|
v-model:value="tableParam.studentDepartId"
|
||||||
|
v-model:name="tableParam.studentDepartName"
|
||||||
|
></OrgClass>
|
||||||
</div>
|
</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col v-if="type === 1">
|
<a-col v-if="type === 1">
|
||||||
<a-form-item title="优秀学员:">
|
<a-form-item title="优秀学员:">
|
||||||
<div class="select">
|
<div class="select">
|
||||||
<a-select v-model:value="tableParam.topFlag" style="width: 260px; height: 40px" placeholder="是否为优秀学员"
|
<a-select
|
||||||
:options="topFlagList" @change="selectProjectName" allowClear showSearch></a-select>
|
v-model:value="tableParam.topFlag"
|
||||||
|
style="width: 260px; height: 40px"
|
||||||
|
placeholder="是否为优秀学员"
|
||||||
|
:options="topFlagList"
|
||||||
|
@change="selectProjectName"
|
||||||
|
allowClear
|
||||||
|
showSearch
|
||||||
|
></a-select>
|
||||||
</div>
|
</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col>
|
<a-col>
|
||||||
<a-button class="cus-btn" style="background: #4ea6ff; color: #fff; width: 100px" @click="getStuList">
|
<a-button
|
||||||
|
class="cus-btn"
|
||||||
|
style="background: #4ea6ff; color: #fff; width: 100px"
|
||||||
|
@click="getStuList"
|
||||||
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<img style="margin-right: 10px" src="../../assets/images/courseManage/search0.png" /></template>
|
<img
|
||||||
|
style="margin-right: 10px"
|
||||||
|
src="../../assets/images/courseManage/search0.png"
|
||||||
|
/></template>
|
||||||
搜索
|
搜索
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="2">
|
<a-col :span="2">
|
||||||
<a-button class="cus-btn white" style="width: 100px" @click="reset">
|
<a-button class="cus-btn white" style="width: 100px" @click="reset">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<img style="margin-right: 10px" src="../../assets/images/leveladd/reset.png" /></template>
|
<img
|
||||||
|
style="margin-right: 10px"
|
||||||
|
src="../../assets/images/leveladd/reset.png"
|
||||||
|
/></template>
|
||||||
重置
|
重置
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|
||||||
<a-row type="flex" gutter="12" style="padding-left: 20px; margin-right: 0px" v-if="checkPer(permissions)">
|
<a-row
|
||||||
|
type="flex"
|
||||||
|
gutter="12"
|
||||||
|
style="padding-left: 20px; margin-right: 0px"
|
||||||
|
v-if="checkPer(permissions)"
|
||||||
|
>
|
||||||
<a-col :span="1.5">
|
<a-col :span="1.5">
|
||||||
<CommonStudent :type="type" :id="id" @finash="submitCall" :stage="stage">
|
<CommonStudent
|
||||||
|
:type="type"
|
||||||
|
:id="id"
|
||||||
|
@finash="submitCall"
|
||||||
|
:stage="stage"
|
||||||
|
>
|
||||||
<a-button class="cus-btn" style="background: #4ea6ff; color: #fff">
|
<a-button class="cus-btn" style="background: #4ea6ff; color: #fff">
|
||||||
<template #icon><img style="margin-right: 10px" src="../../assets/images/courseManage/add0.png" /></template>
|
<template #icon
|
||||||
|
><img
|
||||||
|
style="margin-right: 10px"
|
||||||
|
src="../../assets/images/courseManage/add0.png"
|
||||||
|
/></template>
|
||||||
添加学员
|
添加学员
|
||||||
</a-button>
|
</a-button>
|
||||||
</CommonStudent>
|
</CommonStudent>
|
||||||
@@ -59,7 +101,11 @@
|
|||||||
<!-- 新加导入学员 批量换组 导出学习信息 -->
|
<!-- 新加导入学员 批量换组 导出学习信息 -->
|
||||||
<a-col :span="1.5" v-if="type === 1 || type === 2">
|
<a-col :span="1.5" v-if="type === 1 || type === 2">
|
||||||
<a-button class="cus-btn white" @click="showImpStu">
|
<a-button class="cus-btn white" @click="showImpStu">
|
||||||
<template #icon><img style="margin-right: 10px" src="../../assets/images/basicinfo/in2.png" /></template>
|
<template #icon
|
||||||
|
><img
|
||||||
|
style="margin-right: 10px"
|
||||||
|
src="../../assets/images/basicinfo/in2.png"
|
||||||
|
/></template>
|
||||||
导入学员
|
导入学员
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -82,7 +128,11 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
<a-col :span="1.5">
|
<a-col :span="1.5">
|
||||||
<a-button class="cus-btn white" @click="bathDel">
|
<a-button class="cus-btn white" @click="bathDel">
|
||||||
<template #icon><img style="margin-right: 10px" src="../../assets/images/projectadd/delete.png" /></template>
|
<template #icon
|
||||||
|
><img
|
||||||
|
style="margin-right: 10px"
|
||||||
|
src="../../assets/images/projectadd/delete.png"
|
||||||
|
/></template>
|
||||||
批量删除
|
批量删除
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -97,10 +147,19 @@
|
|||||||
<div class="stmm_btn btn4" @click="hideShow">
|
<div class="stmm_btn btn4" @click="hideShow">
|
||||||
<div class="btn4_sub">
|
<div class="btn4_sub">
|
||||||
<span style="color: #4ea6ff; margin-right: 4px"> 批量操作 </span>
|
<span style="color: #4ea6ff; margin-right: 4px"> 批量操作 </span>
|
||||||
<div class="b_zk" :style="{ display: hideshow ? 'block' : 'none' }"></div>
|
<div
|
||||||
<div class="b_sq" :style="{ display: hideshow ? 'none' : 'block' }"></div>
|
class="b_zk"
|
||||||
|
:style="{ display: hideshow ? 'block' : 'none' }"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="b_sq"
|
||||||
|
:style="{ display: hideshow ? 'none' : 'block' }"
|
||||||
|
></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn4_sup" :style="{ display: hideshow ? 'none' : 'block' }">
|
<div
|
||||||
|
class="btn4_sup"
|
||||||
|
:style="{ display: hideshow ? 'none' : 'block' }"
|
||||||
|
>
|
||||||
<div class="btnsbox">
|
<div class="btnsbox">
|
||||||
<div class="btn4_tit" @click="showEScoreModal">
|
<div class="btn4_tit" @click="showEScoreModal">
|
||||||
<span>批量录入成绩</span>
|
<span>批量录入成绩</span>
|
||||||
@@ -121,14 +180,25 @@
|
|||||||
<div class="export"></div>
|
<div class="export"></div>
|
||||||
<div class="btnText">导出</div>
|
<div class="btnText">导出</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="stmm_btn btn5" style="margin-left: 15px" @click="exportHomeWorkShow">
|
<div
|
||||||
|
class="stmm_btn btn5"
|
||||||
|
style="margin-left: 15px"
|
||||||
|
@click="exportHomeWorkShow"
|
||||||
|
>
|
||||||
<div class="btnText">导出作业</div>
|
<div class="btnText">导出作业</div>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<div style="margin-top: 20px">
|
<div style="margin-top: 20px">
|
||||||
<a-table :columns="tablecolumns" :data-source="tableData.list" :pagination="stuPagination"
|
<a-table
|
||||||
:loading="tableData.loading" :scroll="{ x: 1500 }" row-key="id" :row-selection="stuRowSelection">
|
:columns="tablecolumns"
|
||||||
|
:data-source="tableData.list"
|
||||||
|
:pagination="stuPagination"
|
||||||
|
:loading="tableData.loading"
|
||||||
|
:scroll="{ x: 1500 }"
|
||||||
|
row-key="id"
|
||||||
|
:row-selection="stuRowSelection"
|
||||||
|
>
|
||||||
<template #action="{ record }">
|
<template #action="{ record }">
|
||||||
<!-- <div style="display:flex;justify-content: center;align-items: center;">-->
|
<!-- <div style="display:flex;justify-content: center;align-items: center;">-->
|
||||||
<!-- <div v-if="props.type == 1" @click="excellentStudent(record)"
|
<!-- <div v-if="props.type == 1" @click="excellentStudent(record)"
|
||||||
@@ -149,28 +219,57 @@
|
|||||||
<a-space :size="2">
|
<a-space :size="2">
|
||||||
<slot name="extension" v-bind:data="{ record }"></slot>
|
<slot name="extension" v-bind:data="{ record }"></slot>
|
||||||
|
|
||||||
<a-button v-if="type === 3 && record.status !== 0 && checkPer(permissions)"
|
<a-button
|
||||||
@click="updateStatus(0, record.id)" type="link">通过</a-button>
|
v-if="type === 3 && record.status !== 0 && checkPer(permissions)"
|
||||||
<a-button v-if="type === 3 && record.status !== 0 && checkPer(permissions)"
|
@click="updateStatus(0, record.id)"
|
||||||
@click="updateStatus(2, record.id)" type="link">拒绝</a-button>
|
type="link"
|
||||||
<a-button v-if="checkPer(permissions)" :disabled="record.isLeader === '1'" @click="del(record.id, record)"
|
>通过</a-button
|
||||||
type="link" danger>删除</a-button>
|
>
|
||||||
|
<a-button
|
||||||
|
v-if="type === 3 && record.status !== 0 && checkPer(permissions)"
|
||||||
|
@click="updateStatus(2, record.id)"
|
||||||
|
type="link"
|
||||||
|
>拒绝</a-button
|
||||||
|
>
|
||||||
|
<a-button
|
||||||
|
v-if="checkPer(permissions)"
|
||||||
|
:disabled="record.isLeader === '1'"
|
||||||
|
@click="del(record.id, record)"
|
||||||
|
type="link"
|
||||||
|
danger
|
||||||
|
>删除</a-button
|
||||||
|
>
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 批量调整关卡弹窗 -->
|
<!-- 批量调整关卡弹窗 -->
|
||||||
<ChangeLevelModal v-model:visiblene="visiblene" :stage="stage" :ids="stuSelectKeys" @finash="submitCall" />
|
<ChangeLevelModal
|
||||||
|
v-model:visiblene="visiblene"
|
||||||
|
:stage="stage"
|
||||||
|
:ids="stuSelectKeys"
|
||||||
|
@finash="submitCall"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- 换组弹窗 -->
|
<!-- 换组弹窗 -->
|
||||||
<ChangeGroupModal v-model:changegroupV="checkgroupParam.changegroupV" :groupList="groupList" :checkBatch="checkgroupParam.checkBatch"
|
<ChangeGroupModal
|
||||||
:checkgroupStuId="stuSelectKeys" />
|
v-model:changegroupV="checkgroupParam.changegroupV"
|
||||||
|
:groupList="groupList"
|
||||||
|
:checkBatch="checkgroupParam.checkBatch"
|
||||||
|
:checkgroupStuId="stuSelectKeys"
|
||||||
|
/>
|
||||||
<!-- 批量调整关卡弹窗 -->
|
<!-- 批量调整关卡弹窗 -->
|
||||||
<!-- 取消学员弹窗 -->
|
<!-- 取消学员弹窗 -->
|
||||||
<div>
|
<div>
|
||||||
<a-modal v-model:visible="canclestu" :footer="null" :closable="close" wrapClassName="canclestu" centered="true"
|
<a-modal
|
||||||
@cancel="closeModal1">
|
v-model:visible="canclestu"
|
||||||
|
:footer="null"
|
||||||
|
:closable="close"
|
||||||
|
wrapClassName="canclestu"
|
||||||
|
centered="true"
|
||||||
|
@cancel="closeModal1"
|
||||||
|
>
|
||||||
<div class="delete">
|
<div class="delete">
|
||||||
<div class="del_header"></div>
|
<div class="del_header"></div>
|
||||||
<div class="del_main">
|
<div class="del_main">
|
||||||
@@ -196,7 +295,13 @@
|
|||||||
<!-- 取消学员弹窗 -->
|
<!-- 取消学员弹窗 -->
|
||||||
<!-- 优秀学员弹窗 -->
|
<!-- 优秀学员弹窗 -->
|
||||||
<div>
|
<div>
|
||||||
<a-modal v-model:visible="canclestu1" :footer="null" :closable="close" wrapClassName="canclestu1" centered="true">
|
<a-modal
|
||||||
|
v-model:visible="canclestu1"
|
||||||
|
:footer="null"
|
||||||
|
:closable="close"
|
||||||
|
wrapClassName="canclestu1"
|
||||||
|
centered="true"
|
||||||
|
>
|
||||||
<div class="delete">
|
<div class="delete">
|
||||||
<div class="del_header"></div>
|
<div class="del_header"></div>
|
||||||
<div class="del_main">
|
<div class="del_main">
|
||||||
@@ -220,26 +325,74 @@
|
|||||||
</a-modal>
|
</a-modal>
|
||||||
</div>
|
</div>
|
||||||
<!-- 查看学员 传入查看学员的id-->
|
<!-- 查看学员 传入查看学员的id-->
|
||||||
<see-stu v-model:Seevisible="Seevisible" v-model:checkStuId="checkStuId" v-model:projectId="projectId" />
|
<see-stu
|
||||||
|
v-model:Seevisible="Seevisible"
|
||||||
|
v-model:checkStuId="checkStuId"
|
||||||
|
v-model:projectId="projectId"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- 导入作业成绩抽屉 -->
|
<!-- 导入作业成绩抽屉 -->
|
||||||
<EScore v-model:eScorevisible="eScorevisible" :type="3" :id="id" :pid="id" v-model:searchTaskList="getStuList" />
|
<EScore
|
||||||
|
v-model:eScorevisible="eScorevisible"
|
||||||
|
:type="3"
|
||||||
|
:id="id"
|
||||||
|
:pid="id"
|
||||||
|
v-model:searchTaskList="getStuList"
|
||||||
|
/>
|
||||||
<!-- 导出作业提示框 -->
|
<!-- 导出作业提示框 -->
|
||||||
<ExportHomeWork v-model:exportHomeWorkV="exportHomeWorkV" :downloadUrl="downloadUrl" />
|
<ExportHomeWork
|
||||||
|
v-model:exportHomeWorkV="exportHomeWorkV"
|
||||||
|
:downloadUrl="downloadUrl"
|
||||||
|
/>
|
||||||
|
|
||||||
<!-- 导入学员抽屉 -->
|
<!-- 导入学员抽屉 -->
|
||||||
<!-- :courseId="projectTaskInfo.courseId"
|
<!-- :courseId="projectTaskInfo.courseId"
|
||||||
:courseType="2" -->
|
:courseType="2" -->
|
||||||
<imp-stu v-model:AddImpStuvisible="AddImpStuvisible" @AddImpStuvisibleClose="AddImpStuvisibleClose" :courseId="id"
|
<imp-stu
|
||||||
:courseType="type" />
|
v-model:AddImpStuvisible="AddImpStuvisible"
|
||||||
|
@AddImpStuvisibleClose="AddImpStuvisibleClose"
|
||||||
|
:courseId="id"
|
||||||
|
:courseType="type"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 有重复添加的项目时的弹窗 -->
|
||||||
|
<a-modal
|
||||||
|
v-model:visible="deleteModalVisible"
|
||||||
|
:footer="null"
|
||||||
|
wrapClassName="deleteModal"
|
||||||
|
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>
|
||||||
|
<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>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed, createVNode, defineProps, onMounted, ref, watch } from "vue";
|
import { computed, defineProps, onMounted, ref, watch } from "vue";
|
||||||
import { delStudentList, getStuPage, batchUpdateStatus } from "@/api/index1";
|
import { delStudentList, getStuPage, batchUpdateStatus } from "@/api/index1";
|
||||||
import ChangeGroupModal from "@/components/student/ChangeGroupModal.vue";
|
import ChangeGroupModal from "@/components/student/ChangeGroupModal.vue";
|
||||||
import CommonStudent from "@/components/student/CommonStudent";
|
import CommonStudent from "@/components/student/CommonStudent";
|
||||||
import ChangeLevelModal from "./ChangeLevelModal.vue";
|
import ChangeLevelModal from "./ChangeLevelModal.vue";
|
||||||
import { message, Modal } from "ant-design-vue";
|
import { message } from "ant-design-vue";
|
||||||
// import { topStudent } from "../../api/indexProjStu";
|
// import { topStudent } from "../../api/indexProjStu";
|
||||||
import SeeStu from "../../components/drawers/SeeStu";
|
import SeeStu from "../../components/drawers/SeeStu";
|
||||||
import EScore from "../drawers/ExportScore.vue";
|
import EScore from "../drawers/ExportScore.vue";
|
||||||
@@ -247,7 +400,7 @@ import OrgClass from "@/components/project/OrgClass";
|
|||||||
import ExportHomeWork from "../Modals/ExportHomeWork.vue";
|
import ExportHomeWork from "../Modals/ExportHomeWork.vue";
|
||||||
import * as api from "../../api/index1";
|
import * as api from "../../api/index1";
|
||||||
import ImpStu from "../drawers/AddLevelImportStu";
|
import ImpStu from "../drawers/AddLevelImportStu";
|
||||||
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
// import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||||
import { checkPer } from "@/utils/utils";
|
import { checkPer } from "@/utils/utils";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@@ -256,6 +409,10 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: "",
|
default: "",
|
||||||
},
|
},
|
||||||
|
activeKey: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
id: String,
|
id: String,
|
||||||
columns: {
|
columns: {
|
||||||
type: Array,
|
type: Array,
|
||||||
@@ -276,7 +433,7 @@ const props = defineProps({
|
|||||||
groupList: {
|
groupList: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: () => [],
|
default: () => [],
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
const topFlagList = ref([
|
const topFlagList = ref([
|
||||||
{
|
{
|
||||||
@@ -357,16 +514,16 @@ const tablecolumns = ref([
|
|||||||
width: "10%",
|
width: "10%",
|
||||||
align: "center",
|
align: "center",
|
||||||
customRender: ({ record: { source } }) =>
|
customRender: ({ record: { source } }) =>
|
||||||
// ({ 1: "快速添加", 2: "组织", 3: "受众", 4: "报名" }[source]),
|
// ({ 1: "快速添加", 2: "组织", 3: "受众", 4: "报名" }[source]),
|
||||||
({
|
({
|
||||||
0: "导入",
|
0: "导入",
|
||||||
1: "手动加入",
|
1: "手动加入",
|
||||||
2: "手动加入",
|
2: "手动加入",
|
||||||
3: "手动加入",
|
3: "手动加入",
|
||||||
4: "导入",
|
4: "导入",
|
||||||
5: "报名",
|
5: "报名",
|
||||||
6: "导入",
|
6: "导入",
|
||||||
}[source]),
|
}[source]),
|
||||||
},
|
},
|
||||||
...props.columns,
|
...props.columns,
|
||||||
{
|
{
|
||||||
@@ -384,8 +541,8 @@ function allDepartShow(a, b) {
|
|||||||
a == "" || a == null || a == undefined
|
a == "" || a == null || a == undefined
|
||||||
? (a = "")
|
? (a = "")
|
||||||
: a.slice(0, 1) == "/"
|
: a.slice(0, 1) == "/"
|
||||||
? a.slice(1, a.length)
|
? a.slice(1, a.length)
|
||||||
: a;
|
: a;
|
||||||
let depart = b == "" || b == null || b == undefined ? (b = "") : b;
|
let depart = b == "" || b == null || b == undefined ? (b = "") : b;
|
||||||
let allname = org == "" && depart == "" ? "-" : org + depart;
|
let allname = org == "" && depart == "" ? "-" : org + depart;
|
||||||
return allname;
|
return allname;
|
||||||
@@ -407,7 +564,7 @@ const checkgroupParam = ref({
|
|||||||
changegroupV: false, //学员名称
|
changegroupV: false, //学员名称
|
||||||
checkgroupList: "", //学员小组
|
checkgroupList: "", //学员小组
|
||||||
checkgroupStuId: null,
|
checkgroupStuId: null,
|
||||||
checkBatch: true
|
checkBatch: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const stuSelectKeys = ref([]);
|
const stuSelectKeys = ref([]);
|
||||||
@@ -417,7 +574,6 @@ const tableData = ref({
|
|||||||
loading: false,
|
loading: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
const stuRowSelection = computed(() => ({
|
const stuRowSelection = computed(() => ({
|
||||||
columnWidth: 20,
|
columnWidth: 20,
|
||||||
selectedRowKeys: stuSelectKeys.value,
|
selectedRowKeys: stuSelectKeys.value,
|
||||||
@@ -427,9 +583,9 @@ const stuRowSelection = computed(() => ({
|
|||||||
|
|
||||||
//显示学员换组弹窗
|
//显示学员换组弹窗
|
||||||
function showChangeGroupModal() {
|
function showChangeGroupModal() {
|
||||||
console.log("批量")
|
console.log("批量");
|
||||||
const d = props.groupList
|
const d = props.groupList;
|
||||||
console.log("d" + d)
|
console.log("d" + d);
|
||||||
// debugger
|
// debugger
|
||||||
checkgroupParam.value.changegroupV = true;
|
checkgroupParam.value.changegroupV = true;
|
||||||
checkgroupParam.value.checkBatch = true;
|
checkgroupParam.value.checkBatch = true;
|
||||||
@@ -439,7 +595,8 @@ function showChangeGroupModal() {
|
|||||||
function exportTaskStu() {
|
function exportTaskStu() {
|
||||||
console.log("props.datasource", props);
|
console.log("props.datasource", props);
|
||||||
window.open(
|
window.open(
|
||||||
`${process.env.VUE_APP_BASE_API
|
`${
|
||||||
|
process.env.VUE_APP_BASE_API
|
||||||
}/admin/student/exportTaskStudent?type=${1}&pid=${props.id}`
|
}/admin/student/exportTaskStudent?type=${1}&pid=${props.id}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -447,12 +604,15 @@ function exportTaskStu() {
|
|||||||
function exportTaskStuRouter() {
|
function exportTaskStuRouter() {
|
||||||
console.log("props.datasource", props, props.id);
|
console.log("props.datasource", props, props.id);
|
||||||
window.open(
|
window.open(
|
||||||
`${process.env.VUE_APP_BASE_API
|
`${
|
||||||
|
process.env.VUE_APP_BASE_API
|
||||||
}/admin/student/exportTaskStudent?type=${2}&pid=${props.id}`
|
}/admin/student/exportTaskStudent?type=${2}&pid=${props.id}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
// debugger
|
||||||
|
console.log("props.activeKey1" + props.activeKey1);
|
||||||
getStuList();
|
getStuList();
|
||||||
});
|
});
|
||||||
watch(props.isgetStudent, () => {
|
watch(props.isgetStudent, () => {
|
||||||
@@ -496,8 +656,6 @@ function getStuList() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
tableParam.value.studentName = "";
|
tableParam.value.studentName = "";
|
||||||
tableParam.value.groupName = ""; //学员小组
|
tableParam.value.groupName = ""; //学员小组
|
||||||
@@ -513,34 +671,54 @@ function bathDel() {
|
|||||||
return message.warning("请先选中学员");
|
return message.warning("请先选中学员");
|
||||||
}
|
}
|
||||||
// 判断选择的人员中是否有小组长
|
// 判断选择的人员中是否有小组长
|
||||||
let arr = [...tableData.value.list].filter(x => [...stuSelectKeys.value].some(id => id === x.id)).filter(item => item.isLeader === '1');
|
let arr = [...tableData.value.list]
|
||||||
|
.filter((x) => [...stuSelectKeys.value].some((id) => id === x.id))
|
||||||
|
.filter((item) => item.isLeader === "1");
|
||||||
if (arr.length > 0) {
|
if (arr.length > 0) {
|
||||||
return message.warning("选择人员中:" + arr[0].studentName + "是小组长,请勿删除!");
|
return message.warning(
|
||||||
|
"选择人员中:" + arr[0].studentName + "是小组长,请勿删除!"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
tableData.value.loading = true;
|
tableData.value.loading = true;
|
||||||
delStudentList({ ids: stuSelectKeys.value }).then(() => getStuList());
|
delStudentList({ ids: stuSelectKeys.value }).then(() => getStuList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const deleteModalVisible = ref(false);
|
||||||
|
const deleteId = ref(null);
|
||||||
function del(id, row) {
|
function del(id, row) {
|
||||||
if (row.isLeader === '1') {
|
if (row.isLeader === "1") {
|
||||||
return message.warning("" + row.name + "是小组长,请勿删除!");
|
return message.warning("" + row.name + "是小组长,请勿删除!");
|
||||||
}
|
}
|
||||||
|
deleteModalVisible.value = true;
|
||||||
Modal.confirm({
|
deleteId.value = id;
|
||||||
title: () => "确定删除?",
|
// Modal.confirm({
|
||||||
icon: () => createVNode(ExclamationCircleOutlined),
|
// title: () => "确定删除?",
|
||||||
content: () => "数据删除后不可恢复!",
|
// icon: () => createVNode(ExclamationCircleOutlined),
|
||||||
okText: () => "确定",
|
// content: () => "数据删除后不可恢复!",
|
||||||
okType: "danger",
|
// okText: () => "确定",
|
||||||
cancelText: () => "取消",
|
// okType: "danger",
|
||||||
onOk() {
|
// class: "deleteModal",
|
||||||
if (id) {
|
// cancelText: () => "取消",
|
||||||
tableData.value.loading = true;
|
// onOk() {
|
||||||
delStudentList({ ids: [id] }).then(() => getStuList());
|
// if (id) {
|
||||||
}
|
// tableData.value.loading = true;
|
||||||
},
|
// delStudentList({ ids: [id] }).then(() => getStuList());
|
||||||
});
|
// }
|
||||||
|
// },
|
||||||
|
// });
|
||||||
}
|
}
|
||||||
|
//确定删除
|
||||||
|
const sureSameModal = () => {
|
||||||
|
if (deleteId.value) {
|
||||||
|
tableData.value.loading = true;
|
||||||
|
delStudentList({ ids: [deleteId.value] }).then(() => getStuList());
|
||||||
|
deleteModalVisible.value = false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//取消
|
||||||
|
const closeSameModal = () => {
|
||||||
|
deleteModalVisible.value = false;
|
||||||
|
};
|
||||||
|
|
||||||
function submitCall(flag) {
|
function submitCall(flag) {
|
||||||
tableData.value.loading = true;
|
tableData.value.loading = true;
|
||||||
@@ -659,7 +837,8 @@ const exportStu = () => {
|
|||||||
console.log("props.datasource", props);
|
console.log("props.datasource", props);
|
||||||
if (props.id != undefined) {
|
if (props.id != undefined) {
|
||||||
window.open(
|
window.open(
|
||||||
`${process.env.VUE_APP_BASE_API
|
`${
|
||||||
|
process.env.VUE_APP_BASE_API
|
||||||
}/admin/student/exportTaskStudent?type=${3}&pid=${props.id}&thirdType=2`
|
}/admin/student/exportTaskStudent?type=${3}&pid=${props.id}&thirdType=2`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -712,7 +891,6 @@ defineExpose({ getStuList, startLoading });
|
|||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.TableStudent {
|
.TableStudent {
|
||||||
|
|
||||||
table tr th.ant-table-selection-column,
|
table tr th.ant-table-selection-column,
|
||||||
table tr td.ant-table-selection-column {
|
table tr td.ant-table-selection-column {
|
||||||
padding-left: 3px;
|
padding-left: 3px;
|
||||||
@@ -787,8 +965,10 @@ defineExpose({ getStuList, startLoading });
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
width: calc(100%);
|
width: calc(100%);
|
||||||
height: 40px;
|
height: 40px;
|
||||||
background: linear-gradient(rgba(78, 166, 255, 0.2) 0%,
|
background: linear-gradient(
|
||||||
rgba(78, 166, 255, 0) 100%);
|
rgba(78, 166, 255, 0.2) 0%,
|
||||||
|
rgba(78, 166, 255, 0) 100%
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
.batchOpera {
|
.batchOpera {
|
||||||
@@ -889,6 +1069,132 @@ defineExpose({ getStuList, startLoading });
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.deleteModal {
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
/*.delete {
|
/*.delete {
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
width: 424px;
|
width: 424px;
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export function traverseArr(arr, traverseObj, saveOld = false) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const admin = [5, 6, 8, 9, 11, 12]
|
const admin = [5, 6, 8, 9, 11, 12]
|
||||||
|
//检查 管理权和归属权
|
||||||
export function checkPer(per) {
|
export function checkPer(per) {
|
||||||
if (store?.state?.userInfo?.roleList.some(t => t.code === 'learning-admin')) {
|
if (store?.state?.userInfo?.roleList.some(t => t.code === 'learning-admin')) {
|
||||||
return true
|
return true
|
||||||
@@ -39,6 +39,11 @@ export function checkPer(per) {
|
|||||||
}
|
}
|
||||||
return (per + "").split(',').some(t => admin.some(s => s == t))
|
return (per + "").split(',').some(t => admin.some(s => s == t))
|
||||||
}
|
}
|
||||||
|
const adminOwner = [6,9,12]
|
||||||
|
//单独检查是否有归属权
|
||||||
|
export function checkOwner(per) {
|
||||||
|
return (per + "").split(',').some(t => adminOwner.some(s => s == t))
|
||||||
|
}
|
||||||
export function checkMenu(path='') {
|
export function checkMenu(path='') {
|
||||||
return store?.state?.menus.some(t => path.split(',').some(s=>'/'+s===t));
|
return store?.state?.menus.some(t => path.split(',').some(s=>'/'+s===t));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -366,16 +366,14 @@
|
|||||||
type="link"
|
type="link"
|
||||||
>管理
|
>管理
|
||||||
</a-button>
|
</a-button>
|
||||||
<DropDown v-if="checkPer(record.permissions)" value="授权">
|
<DropDown v-if="checkPer(record.permissions) && checkOwner(record.permissions)" value="授权">
|
||||||
<OwnerTableModelStudent
|
<OwnerTableModelStudent :types="[10, 11, 12]" :id="record.id"
|
||||||
:types="[10, 11, 12]"
|
|
||||||
:id="record.offcourseId"
|
|
||||||
>权限名单</OwnerTableModelStudent
|
>权限名单</OwnerTableModelStudent
|
||||||
>
|
>
|
||||||
<CommonStudent :type="10" :id="record.offcourseId" title="查看权"
|
<CommonStudent :type="10" :id="record.id" title="查看权"
|
||||||
>查看权</CommonStudent
|
>查看权</CommonStudent
|
||||||
>
|
>
|
||||||
<CommonStudent :type="11" :id="record.offcourseId" title="管理权"
|
<CommonStudent :type="11" :id="record.id" title="管理权"
|
||||||
>管理权</CommonStudent
|
>管理权</CommonStudent
|
||||||
>
|
>
|
||||||
</DropDown>
|
</DropDown>
|
||||||
@@ -1690,6 +1688,7 @@ import ProjPowerList from "../../components/drawers/ProjPowerList";
|
|||||||
import ProjCheckShip from "../../components/drawers/ProjCheckPower";
|
import ProjCheckShip from "../../components/drawers/ProjCheckPower";
|
||||||
import AssessmentList from "../../components/drawers/AssessmentList.vue";
|
import AssessmentList from "../../components/drawers/AssessmentList.vue";
|
||||||
import dialog from "@/utils/dialog";
|
import dialog from "@/utils/dialog";
|
||||||
|
// import { queryAssessmentDetailList } from "@/api/indexResearch";
|
||||||
import {
|
import {
|
||||||
list,
|
list,
|
||||||
detail,
|
detail,
|
||||||
@@ -1732,7 +1731,7 @@ import FJUpload from "@/components/common/FJUpload";
|
|||||||
import { updateStudent } from "@/api/indexProjStu";
|
import { updateStudent } from "@/api/indexProjStu";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
import DropDown from "@/components/common/DropDown";
|
import DropDown from "@/components/common/DropDown";
|
||||||
import { checkPer } from "@/utils/utils";
|
import { checkPer,checkOwner } from "@/utils/utils";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
//列表表格
|
//列表表格
|
||||||
@@ -2148,6 +2147,13 @@ export default defineComponent({
|
|||||||
examInfo: {},
|
examInfo: {},
|
||||||
tableLoading: false,
|
tableLoading: false,
|
||||||
columns1: [
|
columns1: [
|
||||||
|
{
|
||||||
|
title: "课程编号",
|
||||||
|
width: 130,
|
||||||
|
dataIndex: "offcourseNumber",
|
||||||
|
key: "offcourseNumber",
|
||||||
|
align: "center",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: "名称",
|
title: "名称",
|
||||||
width: 400,
|
width: 400,
|
||||||
@@ -2159,13 +2165,7 @@ export default defineComponent({
|
|||||||
return text ? text : "-";
|
return text ? text : "-";
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: "课程编号",
|
|
||||||
width: 130,
|
|
||||||
dataIndex: "offcourseNumber",
|
|
||||||
key: "offcourseNumber",
|
|
||||||
align: "center",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: "内容分类",
|
title: "内容分类",
|
||||||
width: 130,
|
width: 130,
|
||||||
@@ -3655,8 +3655,8 @@ export default defineComponent({
|
|||||||
completeType: type,
|
completeType: type,
|
||||||
endTime: endTime,
|
endTime: endTime,
|
||||||
evalFlag: Number(state.assessmentId) > 0 && state.checked4 ? 1 : 0,
|
evalFlag: Number(state.assessmentId) > 0 && state.checked4 ? 1 : 0,
|
||||||
evaluateId: Number(state.assessmentId),
|
assessmentId: Number(state.assessmentId),
|
||||||
testId: state.EditTestId,
|
testId: state.examInfo.examinationName ? state.EditTestId : 0,
|
||||||
homeWorkId: state.EditWorkId,
|
homeWorkId: state.EditWorkId,
|
||||||
name: state.xjkkinputV1,
|
name: state.xjkkinputV1,
|
||||||
signFlag: state.xjkkradioV1 === 0 ? 1 : 0, //是否允许未报名的签到:1是0否
|
signFlag: state.xjkkradioV1 === 0 ? 1 : 0, //是否允许未报名的签到:1是0否
|
||||||
@@ -3712,7 +3712,11 @@ export default defineComponent({
|
|||||||
(res) => (state.examInfo = res.data.data)
|
(res) => (state.examInfo = res.data.data)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// if(item.evalFlag){
|
||||||
|
// queryAssessmentDetailList({assessmentId:item.assessmentId }).then(
|
||||||
|
// (res) => (state.examInfo = res.data.data)
|
||||||
|
// );
|
||||||
|
// }
|
||||||
console.log("获取面授课开课详情", item);
|
console.log("获取面授课开课详情", item);
|
||||||
state.xjkkinputV2 = item.address;
|
state.xjkkinputV2 = item.address;
|
||||||
state.checked1 = item.applyFlag === 1 ? true : false;
|
state.checked1 = item.applyFlag === 1 ? true : false;
|
||||||
@@ -4466,12 +4470,13 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
const handleCopy = async (id) => {
|
const handleCopy = async (id) => {
|
||||||
|
console.log("复制Id", id);
|
||||||
dialog({
|
dialog({
|
||||||
content: "确定复制该课程吗?",
|
content: "确定复制该课程吗?",
|
||||||
ok: async () => {
|
ok: async () => {
|
||||||
message.success("复制成功");
|
message.success("复制成功");
|
||||||
state.tableLoading = true;
|
state.tableLoading = true;
|
||||||
await copyCourse({ offcourseId: id });
|
await copyCourse({ courseId: id });
|
||||||
getTableDate();
|
getTableDate();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -4624,7 +4629,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
// 管理开课
|
// 管理开课
|
||||||
const handleGuan22 = (item) => {
|
const handleGuan22 = (item) => {
|
||||||
// console.log('点击面授课管理',item)
|
console.log("点击面授课管理", item);
|
||||||
// if (String(item.courseform) === "1") {
|
// if (String(item.courseform) === "1") {
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
@@ -4740,28 +4745,26 @@ export default defineComponent({
|
|||||||
//授权
|
//授权
|
||||||
//权限名单
|
//权限名单
|
||||||
const showPrower = (record) => {
|
const showPrower = (record) => {
|
||||||
// console.log("record", record);
|
console.log("权限名单", record);
|
||||||
state.selectCourseId = record.offcourseId;
|
state.selectCourseId = record.offcourseId;
|
||||||
state.corpowerlistvisible = true;
|
state.corpowerlistvisible = true;
|
||||||
};
|
};
|
||||||
//归属权
|
//归属权
|
||||||
const showOwnPrower = (record) => {
|
const showOwnPrower = (record) => {
|
||||||
// console.log("record", record);
|
console.log("归属权", record);
|
||||||
state.selectCourseId = record.offcourseId;
|
state.selectCourseId = record.offcourseId;
|
||||||
state.ownpowervisible = true;
|
state.ownpowervisible = true;
|
||||||
};
|
};
|
||||||
//查看权
|
//查看权
|
||||||
const showViewPrower = (record) => {
|
const showViewPrower = (record) => {
|
||||||
// console.log("record", record);
|
console.log("查看权", record);
|
||||||
state.selectCourseId = record.offcourseId;
|
state.selectCourseId = record.offcourseId;
|
||||||
state.authClassify = 1;
|
state.authClassify = 1;
|
||||||
state.viewpowervisible = true;
|
state.viewpowervisible = true;
|
||||||
};
|
};
|
||||||
//管理权
|
//管理权
|
||||||
const showManagePrower = (record) => {
|
const showManagePrower = (record) => {
|
||||||
// console.log("record", record);
|
console.log("管理权", record);
|
||||||
console.log(22222222);
|
|
||||||
console.log(record);
|
|
||||||
state.selectCourseId = record.offcourseId;
|
state.selectCourseId = record.offcourseId;
|
||||||
state.shipType = 1;
|
state.shipType = 1;
|
||||||
state.authClassify = 2;
|
state.authClassify = 2;
|
||||||
@@ -4988,6 +4991,7 @@ export default defineComponent({
|
|||||||
beforeUpload2,
|
beforeUpload2,
|
||||||
handleDel,
|
handleDel,
|
||||||
checkPer,
|
checkPer,
|
||||||
|
checkOwner,
|
||||||
handleSucessStu,
|
handleSucessStu,
|
||||||
handleRejectStu,
|
handleRejectStu,
|
||||||
handleDeleteStu,
|
handleDeleteStu,
|
||||||
|
|||||||
@@ -64,8 +64,8 @@
|
|||||||
style="width: 100px; height: 100px"
|
style="width: 100px; height: 100px"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="mbl_items">
|
<div class="mbl_items" style="align-items: flex-start">
|
||||||
<div class="item_nam" style="margin-bottom: 102px">
|
<div class="item_nam">
|
||||||
<div class="asterisk_icon">
|
<div class="asterisk_icon">
|
||||||
<img
|
<img
|
||||||
style="width: 10px; height: 10px"
|
style="width: 10px; height: 10px"
|
||||||
@@ -73,7 +73,9 @@
|
|||||||
alt=""
|
alt=""
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span style="margin-right: 14px">目标人群</span>
|
<span style="margin-right: 14px; margin-top: 3px"
|
||||||
|
>目标人群</span
|
||||||
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="item_inp">
|
<div class="item_inp">
|
||||||
<div class="i1_input">
|
<div class="i1_input">
|
||||||
@@ -883,5 +885,29 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.ant-select-disabled.ant-select:not(.ant-select-customize-input)
|
||||||
|
.ant-select-selector {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
.ant-select-disabled.ant-select:not(.ant-select-customize-input)
|
||||||
|
.ant-select-selector {
|
||||||
|
background-color: rgba(255, 255, 255, 0);
|
||||||
|
}
|
||||||
|
.ant-select:not(.ant-select-customize-input) .ant-select-selector {
|
||||||
|
border: 0px !important;
|
||||||
|
}
|
||||||
|
.select .ant-select-selector {
|
||||||
|
border: 0px !important;
|
||||||
|
}
|
||||||
|
.ant-select-arrow {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.ant-select-disabled.ant-select-multiple .ant-select-selection-item {
|
||||||
|
color: #000000;
|
||||||
|
border: 0px !important;
|
||||||
|
}
|
||||||
|
.ant-select-multiple .ant-select-selection-item {
|
||||||
|
background: rgba(255, 255, 255, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -593,9 +593,9 @@ export default defineComponent({
|
|||||||
selectBandName: [],
|
selectBandName: [],
|
||||||
selectBandId: [],
|
selectBandId: [],
|
||||||
//资源归属
|
//资源归属
|
||||||
sourceBelongId: [],
|
sourceBelongId: null,
|
||||||
sourceBelongName: [],
|
sourceBelongName: null,
|
||||||
sourceBelongFullName: [],
|
sourceBelongFullName: null,
|
||||||
});
|
});
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
console.log(store, 666);
|
console.log(store, 666);
|
||||||
@@ -606,7 +606,12 @@ export default defineComponent({
|
|||||||
const jobType = computed(() => store.state.job_type);
|
const jobType = computed(() => store.state.job_type);
|
||||||
//获取band
|
//获取band
|
||||||
const bandList = computed(() => store.state.band);
|
const bandList = computed(() => store.state.band);
|
||||||
|
const userInfo = computed(() => store.state.userInfo);
|
||||||
console.log("jobTypebandList", jobType, bandList);
|
console.log("jobTypebandList", jobType, bandList);
|
||||||
|
if (userInfo.value.departId && userInfo.value.departName) {
|
||||||
|
state.sourceBelongName = userInfo.value.departName;
|
||||||
|
state.sourceBelongId = userInfo.value.departId;
|
||||||
|
}
|
||||||
watch(
|
watch(
|
||||||
() => state.fen_lei,
|
() => state.fen_lei,
|
||||||
() => {
|
() => {
|
||||||
@@ -718,9 +723,9 @@ export default defineComponent({
|
|||||||
state.selectBandName = [];
|
state.selectBandName = [];
|
||||||
state.selectBandId = [];
|
state.selectBandId = [];
|
||||||
//资源归属
|
//资源归属
|
||||||
state.sourceBelongId = [];
|
state.sourceBelongId = null;
|
||||||
state.sourceBelongName = [];
|
state.sourceBelongName = null;
|
||||||
state.sourceBelongFullName = [];
|
state.sourceBelongFullName = null;
|
||||||
// valueHtml.value = "";
|
// valueHtml.value = "";
|
||||||
console.log("清空");
|
console.log("清空");
|
||||||
};
|
};
|
||||||
@@ -754,7 +759,15 @@ export default defineComponent({
|
|||||||
fileUp(formData).then((res) => {
|
fileUp(formData).then((res) => {
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
// 最后插入图片 url alt href
|
// 最后插入图片 url alt href
|
||||||
insertFn(res.data.data, file.name, res.data.data);
|
console.log(
|
||||||
|
"上传图片结果",
|
||||||
|
process.env.VUE_APP_FILE_PATH + res.data.data
|
||||||
|
);
|
||||||
|
insertFn(
|
||||||
|
process.env.VUE_APP_FILE_PATH + res.data.data,
|
||||||
|
file.name,
|
||||||
|
res.data.data
|
||||||
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -692,7 +692,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
|
|
||||||
<a-tab-pane key="2" tab="共享文档">
|
<a-tab-pane key="2" tab="共享文档" v-if="checkPer(permissions)">
|
||||||
<div class="sametab">
|
<div class="sametab">
|
||||||
<div class="Gcon">
|
<div class="Gcon">
|
||||||
<div class="pad"></div>
|
<div class="pad"></div>
|
||||||
@@ -713,7 +713,7 @@
|
|||||||
v-if="docChecked == true"
|
v-if="docChecked == true"
|
||||||
v-model:file-list="fileList"
|
v-model:file-list="fileList"
|
||||||
name="file"
|
name="file"
|
||||||
action="/manageApi/file/upload"
|
action="/manageApi/file/uploadunlimit"
|
||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
|||||||
@@ -261,7 +261,7 @@
|
|||||||
size="small" active-color="red"/>
|
size="small" active-color="red"/>
|
||||||
<div class="showt clearfix">
|
<div class="showt clearfix">
|
||||||
<div class="bi" :style="{
|
<div class="bi" :style="{
|
||||||
'z-index': element.checked1 ? 999 : 998,
|
'z-index': element.flag ? 999 : 998,
|
||||||
}">
|
}">
|
||||||
必修
|
必修
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -623,7 +623,7 @@
|
|||||||
v-if="attachSwitch == true"
|
v-if="attachSwitch == true"
|
||||||
v-model:file-list="fileList"
|
v-model:file-list="fileList"
|
||||||
name="file"
|
name="file"
|
||||||
action="/manageApi/file/upload"
|
action="/manageApi/file/uploadunlimit"
|
||||||
@change="handleChange2"
|
@change="handleChange2"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
|
|||||||
@@ -160,13 +160,8 @@
|
|||||||
type="link"
|
type="link"
|
||||||
>撤回发布</a-button
|
>撤回发布</a-button
|
||||||
>
|
>
|
||||||
<a-button
|
<a-button v-if="record.type === 3" @click="baseInfo(record)" type="link">管理</a-button>
|
||||||
v-if="record.type === 3"
|
<DropDown v-if="checkPer(record.permissions) && checkOwner(record.permissions)" value="授权">
|
||||||
@click="baseInfo(record)"
|
|
||||||
type="link"
|
|
||||||
>管理</a-button
|
|
||||||
>
|
|
||||||
<DropDown v-if="checkPer(record.permissions)" value="授权">
|
|
||||||
<OwnerTableModelStudent
|
<OwnerTableModelStudent
|
||||||
:types="[4, 5, 6]"
|
:types="[4, 5, 6]"
|
||||||
:id="record.id"
|
:id="record.id"
|
||||||
@@ -959,7 +954,7 @@ import { validateName } from "@/api/index1";
|
|||||||
import CommonStudent from "@/components/student/CommonStudent";
|
import CommonStudent from "@/components/student/CommonStudent";
|
||||||
import OwnerTableModelStudent from "@/components/student/OwnerTableModelStudent";
|
import OwnerTableModelStudent from "@/components/student/OwnerTableModelStudent";
|
||||||
import DropDown from "@/components/common/DropDown";
|
import DropDown from "@/components/common/DropDown";
|
||||||
import { checkPer } from "@/utils/utils";
|
import { checkPer,checkOwner } from "@/utils/utils";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "projectManage",
|
name: "projectManage",
|
||||||
@@ -1707,6 +1702,7 @@ export default {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
...toRefs(state),
|
...toRefs(state),
|
||||||
|
checkOwner,
|
||||||
dayjs,
|
dayjs,
|
||||||
handleEdit,
|
handleEdit,
|
||||||
baseInfo,
|
baseInfo,
|
||||||
|
|||||||
@@ -1679,5 +1679,6 @@ const cancelStorage = async () => {
|
|||||||
.footBox {
|
.footBox {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
z-index: 99999;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -262,7 +262,6 @@
|
|||||||
</div> -->
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 概览(无数据) -->
|
|
||||||
<!-- 概览(有数据) -->
|
<!-- 概览(有数据) -->
|
||||||
<div v-if="hasTask">
|
<div v-if="hasTask">
|
||||||
<div class="onerow">
|
<div class="onerow">
|
||||||
@@ -757,6 +756,7 @@
|
|||||||
:permissions="permissions"
|
:permissions="permissions"
|
||||||
:type="1"
|
:type="1"
|
||||||
:id="projectId"
|
:id="projectId"
|
||||||
|
:activeKey1="activeKey1"
|
||||||
:columns="stuColumns"
|
:columns="stuColumns"
|
||||||
:stage="stage"
|
:stage="stage"
|
||||||
:visable="tabFlag"
|
:visable="tabFlag"
|
||||||
@@ -766,11 +766,12 @@
|
|||||||
<a-button @click="showStudent(record)" type="link"
|
<a-button @click="showStudent(record)" type="link"
|
||||||
>查看
|
>查看
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button @click="settingTopFlag(record)" type="link"
|
<a-button @click="settingTopFlag(record)" v-if="checkPer(permissions)" type="link"
|
||||||
>{{ record.topFlag ? "取消优秀" : "优秀学员" }}
|
>{{ record.topFlag ? "取消优秀" : "优秀学员" }}
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button
|
<a-button
|
||||||
type="link"
|
type="link"
|
||||||
|
v-if="checkPer(permissions)"
|
||||||
:disabled="record.isLeader === '1'"
|
:disabled="record.isLeader === '1'"
|
||||||
@click="showChangeGroupModal(record)"
|
@click="showChangeGroupModal(record)"
|
||||||
>换组
|
>换组
|
||||||
@@ -1072,7 +1073,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<!-- 有证书显示的页面 -->
|
<!-- 有证书显示的页面 -->
|
||||||
<div v-else class="certificate1">
|
<div v-else class="certificate1">
|
||||||
<div class="addcertificate1" @click="addCertificate">
|
<div class="addcertificate1" @click="addCertificate" v-if="checkPer(permissions)">
|
||||||
<div class="addcertext">+添加证书</div>
|
<div class="addcertext">+添加证书</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@@ -1082,9 +1083,9 @@
|
|||||||
>
|
>
|
||||||
<div class="certificatelistMain">
|
<div class="certificatelistMain">
|
||||||
<img
|
<img
|
||||||
@click="previewPic"
|
@click="previewPic"
|
||||||
style="cursor: pointer; width: 140px; height: 200px"
|
style="cursor: pointer; width: 140px; height: 200px"
|
||||||
:src="fileUrl + item.url"
|
:src="item.url"
|
||||||
alt=""
|
alt=""
|
||||||
srcset=""
|
srcset=""
|
||||||
/>
|
/>
|
||||||
@@ -1298,7 +1299,7 @@
|
|||||||
v-if="docChecked == true"
|
v-if="docChecked == true"
|
||||||
v-model:file-list="fileList"
|
v-model:file-list="fileList"
|
||||||
name="file"
|
name="file"
|
||||||
action="/manageApi/file/upload"
|
action="/manageApi/file/uploadunlimit"
|
||||||
@change="handleChange"
|
@change="handleChange"
|
||||||
>
|
>
|
||||||
<span
|
<span
|
||||||
@@ -2315,8 +2316,8 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "最近学习时间",
|
title: "最近学习时间",
|
||||||
dataIndex: "lastStudyTime",
|
dataIndex: "lastLearnTime",
|
||||||
key: "lastStudyTime",
|
key: "lastLearnTime",
|
||||||
width: 120,
|
width: 120,
|
||||||
align: "center",
|
align: "center",
|
||||||
className: "h",
|
className: "h",
|
||||||
@@ -2907,10 +2908,7 @@ export default {
|
|||||||
let objtl = {
|
let objtl = {
|
||||||
projectId: state.projectId,
|
projectId: state.projectId,
|
||||||
};
|
};
|
||||||
apitl
|
apitl.getProjectDetail(objtl).then((res) => {
|
||||||
.getProjectDetail(objtl)
|
|
||||||
.then((res) => {
|
|
||||||
if (res.status == 200) {
|
|
||||||
console.log("阶段列表", res);
|
console.log("阶段列表", res);
|
||||||
for (let i = 0; i < res.data.data.stageList.length; i++) {
|
for (let i = 0; i < res.data.data.stageList.length; i++) {
|
||||||
for (
|
for (
|
||||||
@@ -2925,7 +2923,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
levelList.stageList = res.data.data.stageList;
|
levelList.stageList = res.data.data.stageList;
|
||||||
if (levelList.stageList.length == 1) {
|
if (levelList.stageList.length === 1) {
|
||||||
// 无解段任务
|
// 无解段任务
|
||||||
state.rankjieduan = [{ value: 0, label: "无阶段" }];
|
state.rankjieduan = [{ value: 0, label: "无阶段" }];
|
||||||
state.valuestu2 = 0;
|
state.valuestu2 = 0;
|
||||||
@@ -2946,10 +2944,6 @@ export default {
|
|||||||
state.valuestu2 = arrStage[0].value;
|
state.valuestu2 = arrStage[0].value;
|
||||||
state.choosedStageName = levelList.stageList[0].name;
|
state.choosedStageName = levelList.stageList[0].name;
|
||||||
}
|
}
|
||||||
console.log(
|
|
||||||
"----------------------------------->",
|
|
||||||
res.data.data.stageList
|
|
||||||
);
|
|
||||||
//暂时传个固定的id用 到时候看数据里面是否有在更换
|
//暂时传个固定的id用 到时候看数据里面是否有在更换
|
||||||
// state.projectTaskId = res.data.data.stageList[0].taskList[0].projectTaskId
|
// state.projectTaskId = res.data.data.stageList[0].taskList[0].projectTaskId
|
||||||
let leng = res.data.data.stageList.length;
|
let leng = res.data.data.stageList.length;
|
||||||
@@ -2957,17 +2951,13 @@ export default {
|
|||||||
let taskarr = res.data.data.stageList;
|
let taskarr = res.data.data.stageList;
|
||||||
console.log("11-22-33", taskarr);
|
console.log("11-22-33", taskarr);
|
||||||
if (taskarr.length == 1) {
|
if (taskarr.length == 1) {
|
||||||
if (taskarr[0].stageId == "0") {
|
if (taskarr[0].id == "0") {
|
||||||
taskarr[0].name = "无阶段任务";
|
taskarr[0].name = "无阶段任务";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state.taskSyllabus = taskarr;
|
state.taskSyllabus = taskarr;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
|
||||||
console.log("获取任务列表失败", err);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
//学员学员管理渲染
|
//学员学员管理渲染
|
||||||
// const getTableDate = () => {
|
// const getTableDate = () => {
|
||||||
@@ -3106,6 +3096,7 @@ export default {
|
|||||||
state.stugroup = false;
|
state.stugroup = false;
|
||||||
state.groupInfo = {};
|
state.groupInfo = {};
|
||||||
state.groupMemberCountContrast = null;
|
state.groupMemberCountContrast = null;
|
||||||
|
getGroup();
|
||||||
};
|
};
|
||||||
//点击确定创建小组
|
//点击确定创建小组
|
||||||
const createG = () => {
|
const createG = () => {
|
||||||
@@ -3725,7 +3716,7 @@ export default {
|
|||||||
gangw: value.userInfoBo.jobName, //岗位
|
gangw: value.userInfoBo.jobName, //岗位
|
||||||
completeStageCnt: value.completeStageCnt, //当前完成阶段数
|
completeStageCnt: value.completeStageCnt, //当前完成阶段数
|
||||||
totalStageCnt: value.totalStageCnt, //总阶段数
|
totalStageCnt: value.totalStageCnt, //总阶段数
|
||||||
excellent: value.topFlag == 1 ? true : false, //是否优秀学员
|
excellent: value.topFlag == 1, //是否优秀学员
|
||||||
progress: value.completeStageCnt + "/" + value.totalStageCnt,
|
progress: value.completeStageCnt + "/" + value.totalStageCnt,
|
||||||
putin:
|
putin:
|
||||||
value.source == 0
|
value.source == 0
|
||||||
@@ -3907,6 +3898,8 @@ export default {
|
|||||||
state.hasTask = !!res.data.data?.stageList.some(
|
state.hasTask = !!res.data.data?.stageList.some(
|
||||||
({ taskList }) => taskList.length
|
({ taskList }) => taskList.length
|
||||||
);
|
);
|
||||||
|
console.log(111111111111);
|
||||||
|
console.log(state.hasTask);
|
||||||
// state.attach = info.attach;
|
// state.attach = info.attach;
|
||||||
// state.templateId = info.templateId;
|
// state.templateId = info.templateId;
|
||||||
state.sourceBelong =
|
state.sourceBelong =
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ export default {
|
|||||||
|
|
||||||
allFormsData: [],
|
allFormsData: [],
|
||||||
valueMore: "",
|
valueMore: "",
|
||||||
loading:false
|
loading: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
// 详情
|
// 详情
|
||||||
@@ -485,7 +485,7 @@ export default {
|
|||||||
if (!checkVal(filterData)) {
|
if (!checkVal(filterData)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
state.loading = true
|
state.loading = true;
|
||||||
|
|
||||||
if (state.assessmentId) {
|
if (state.assessmentId) {
|
||||||
resultPost = {
|
resultPost = {
|
||||||
@@ -499,7 +499,7 @@ export default {
|
|||||||
"assessmentMinScore",
|
"assessmentMinScore",
|
||||||
]);
|
]);
|
||||||
editResearchMessage(resultPost).then((res) => {
|
editResearchMessage(resultPost).then((res) => {
|
||||||
state.loading = false
|
state.loading = false;
|
||||||
if (res.data.code === 200) {
|
if (res.data.code === 200) {
|
||||||
message.success("编辑成功");
|
message.success("编辑成功");
|
||||||
router.push({
|
router.push({
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
<div class="search"></div>
|
<div class="search"></div>
|
||||||
<div class="btnText">搜索</div>
|
<div class="btnText">搜索</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="btnn btn2" @click="handleRest" style="width: 103px">
|
<div class="btnn btn2" @click="handleRest" style="width: 105px">
|
||||||
<div class="search"></div>
|
<div class="search"></div>
|
||||||
<div class="btnText">重置</div>
|
<div class="btnText">重置</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -165,14 +165,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btnbox">
|
<div class="del_btnbox">
|
||||||
<div class="del_btn btn1">
|
<div class="del_btn btn1" @click="handleCancelModal">
|
||||||
<div class="btnText" @click="handleCancelModal">取消</div>
|
<div class="btnText">取消</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="del_btn btn2">
|
<div class="del_btn btn2" v-if="!addLoading" @click="handleSure">
|
||||||
<div class="btnText" v-if="!addLoading" @click="handleSure">
|
<div class="btnText">确定</div>
|
||||||
确定
|
</div>
|
||||||
</div>
|
<div class="del_btn btn2" v-else>
|
||||||
<div class="btnText" v-else>确定</div>
|
<div class="btnText">确定</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
<div class="addimg">+添加图片</div>
|
<div class="addimg">+添加图片</div>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
<div v-show="curItem.imgVal" class="picture" style="position: relative">
|
<div v-show="curItem.imgVal" class="picture" style="position: relative">
|
||||||
<img class="pictureimg" :src="curItem.imgVal" />
|
<img class="pictureimg" :src="VUE_APP_FILE_PATH + curItem.imgVal" />
|
||||||
<div class="picturename" v-show="hasImgName">{{ hasImgName }}</div>
|
<div class="picturename" v-show="hasImgName">{{ hasImgName }}</div>
|
||||||
<img
|
<img
|
||||||
style="
|
style="
|
||||||
@@ -63,8 +63,20 @@ export default {
|
|||||||
},
|
},
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
const curItem = ref(props.item);
|
const curItem = ref(props.item);
|
||||||
console.log("选项信息", curItem.value, process.env.VUE_APP_FILE_PATH);
|
const VUE_APP_FILE_PATH = ref(process.env.VUE_APP_FILE_PATH);
|
||||||
curItem.value.imgVal = process.env.VUE_APP_FILE_PATH + curItem.value.imgVal;
|
// console.log(
|
||||||
|
// "选项信息",
|
||||||
|
// curItem.value,
|
||||||
|
// curItem.value.imgVal.indexOf(process.env.VUE_APP_FILE_PATH)
|
||||||
|
// );
|
||||||
|
// if (
|
||||||
|
// curItem.value.imgVal &&
|
||||||
|
// curItem.value.imgVal.indexOf(process.env.VUE_APP_FILE_PATH) == -1
|
||||||
|
// ) {
|
||||||
|
// curItem.value.imgVal =
|
||||||
|
// process.env.VUE_APP_FILE_PATH + curItem.value.imgVal;
|
||||||
|
// }
|
||||||
|
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
hasImgName: "",
|
hasImgName: "",
|
||||||
});
|
});
|
||||||
@@ -117,6 +129,7 @@ export default {
|
|||||||
handleDel,
|
handleDel,
|
||||||
handleCancel,
|
handleCancel,
|
||||||
beforeUpload,
|
beforeUpload,
|
||||||
|
VUE_APP_FILE_PATH,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user