mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-06 09:26:44 +08:00
提交
This commit is contained in:
1
.env.boe
1
.env.boe
@@ -1,6 +1,7 @@
|
||||
NODE_ENV=boe
|
||||
VUE_APP_BASE=/manage
|
||||
VUE_APP_BASE_API=/manageApi
|
||||
# 专业力必修API前缀
|
||||
VUE_APP_BASE_API_GROWTH=/growth
|
||||
VUE_APP_LOGIN_URL=//u-pre.boe.com/web?returnUrl=
|
||||
VUE_APP_BOE_API_URL=//u-pre.boe.com
|
||||
|
||||
@@ -9,195 +9,197 @@
|
||||
title="添加活动"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain" v-if="visible">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}活动</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain" v-if="visible">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}活动</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">活动名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.activityName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入活动名称"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">活动名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.activityName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入活动名称"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">活动时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="dateTime"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<!-- <div class="sign">-->
|
||||
<!-- <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />-->
|
||||
<!-- </div>-->
|
||||
<span style="margin-right: 3px">持续时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
:placeholder="durationText"
|
||||
v-model:value="formData.info.activityDuration"
|
||||
/>
|
||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">活动地点:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.activityAddress"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入活动地点"
|
||||
maxlength="100"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">活动公告:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.activityNotice"
|
||||
placeholder="请输入活动公告"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">活动说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.activityExplain"
|
||||
placeholder="请输入活动说明"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">考勤设置:</span>
|
||||
</div>
|
||||
<div class="kqszbox">
|
||||
<div class="qdqtbox">
|
||||
<div class="qdbtn">
|
||||
<div class="btntext">签到</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setbox">
|
||||
<div class="timerbox">
|
||||
<span>活动开始前:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.beforeSignIn"
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>
|
||||
</div>
|
||||
<div class="timerbox">
|
||||
<span>活动开始后:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.afterSignIn"
|
||||
<span style="margin-right: 3px">活动时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="dateTime"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<!-- <div class="sign">-->
|
||||
<!-- <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />-->
|
||||
<!-- </div>-->
|
||||
<span style="margin-right: 3px">持续时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
:placeholder="durationText"
|
||||
v-model:value="formData.info.activityDuration"
|
||||
/>
|
||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>
|
||||
</div>
|
||||
<span style="margin-right: 3px">活动地点:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.activityAddress"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入活动地点"
|
||||
maxlength="100"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">活动公告:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.activityNotice"
|
||||
placeholder="请输入活动公告"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">活动说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.activityExplain"
|
||||
placeholder="请输入活动说明"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">考勤设置:</span>
|
||||
</div>
|
||||
<div class="kqszbox">
|
||||
<div class="qdqtbox">
|
||||
<div class="qdbtn">
|
||||
<div class="btntext">签到</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setbox">
|
||||
<div class="timerbox">
|
||||
<span>活动开始前:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.beforeSignIn"
|
||||
/>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>
|
||||
</div>
|
||||
<div class="timerbox">
|
||||
<span>活动开始后:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.afterSignIn"
|
||||
/>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item" style="height: 40px">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px"></span>
|
||||
<div class="main_item" style="height: 40px">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px"></span>
|
||||
</div>
|
||||
<div class="btnbox"></div>
|
||||
</div>
|
||||
<div class="btnbox"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -300,7 +302,7 @@ function timeChange(time, timeStr) {
|
||||
const disabledDate = (current) => {
|
||||
return current && current < dayjs().startOf("day");
|
||||
};
|
||||
|
||||
const spinning = ref(false);
|
||||
async function confirm() {
|
||||
// debugger
|
||||
await validate().catch(({ errorFields }) => {
|
||||
@@ -326,24 +328,30 @@ async function confirm() {
|
||||
} else {
|
||||
formData.value.duration = formData.value.info.activityDuration;
|
||||
}
|
||||
saveTask(formData.value).then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
spinning.value = true;
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
message.error(res.msg);
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
closeDrawer();
|
||||
});
|
||||
closeDrawer();
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
function openDrawer(row) {
|
||||
row && (formData.value = reactive(row));
|
||||
row && (row = JSON.parse(JSON.stringify(row)));
|
||||
row && (formData.value = row);
|
||||
row &&
|
||||
(dateTime.value = [
|
||||
dayjs(row.info.activityStartTime, "YYYY-MM-DD HH:mm"),
|
||||
|
||||
@@ -139,10 +139,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<!-- <div class="btnn">
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="closeDrawer">确定</button>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</a-drawer>
|
||||
<!-- 批量签到弹窗 -->
|
||||
|
||||
@@ -9,80 +9,82 @@
|
||||
title="添加案例"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div v-if="taskIndex >= 0" class="headerTitle">编辑案例</div>
|
||||
<div v-else class="headerTitle">添加案例</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_items">
|
||||
<div class="mi_ipts">
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name"></div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.keyWord"
|
||||
style="
|
||||
width: 200px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 24px;
|
||||
"
|
||||
placeholder="请输入案例标题"
|
||||
/>
|
||||
</div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.authorName"
|
||||
style="width: 200px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入作者名字"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mi_btns">
|
||||
<div class="btn btn1" @click="search">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">重置</div>
|
||||
</div>
|
||||
</div>
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div v-if="taskIndex >= 0" class="headerTitle">编辑案例</div>
|
||||
<div v-else class="headerTitle">添加案例</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="main_table">
|
||||
<a-table
|
||||
class="ant-table-striped"
|
||||
:row-class-name="
|
||||
(_, index) => (index % 2 === 1 ? 'table-striped' : null)
|
||||
"
|
||||
row-key="id"
|
||||
:columns="columns"
|
||||
:data-source="data"
|
||||
:loading="loading"
|
||||
:pagination="pagination"
|
||||
>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.dataIndex === 'select'">
|
||||
<a
|
||||
:style="{
|
||||
color: selectedRows?.taskId == record.id ? '#999' : null,
|
||||
}"
|
||||
@click="confirm(record)"
|
||||
>选择</a
|
||||
>
|
||||
<div class="contentMain">
|
||||
<div class="main_items">
|
||||
<div class="mi_ipts">
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name"></div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.keyWord"
|
||||
style="
|
||||
width: 200px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 24px;
|
||||
"
|
||||
placeholder="请输入案例标题"
|
||||
/>
|
||||
</div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.authorName"
|
||||
style="width: 200px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入作者名字"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mi_btns">
|
||||
<div class="btn btn1" @click="search">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">重置</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_table">
|
||||
<a-table
|
||||
class="ant-table-striped"
|
||||
:row-class-name="
|
||||
(_, index) => (index % 2 === 1 ? 'table-striped' : null)
|
||||
"
|
||||
row-key="id"
|
||||
:columns="columns"
|
||||
:data-source="data"
|
||||
:loading="loading"
|
||||
:pagination="pagination"
|
||||
>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.dataIndex === 'select'">
|
||||
<a
|
||||
:style="{
|
||||
color: selectedRows?.taskId == record.id ? '#999' : null,
|
||||
}"
|
||||
@click="confirm(record)"
|
||||
>选择</a
|
||||
>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -157,7 +159,7 @@ function search() {
|
||||
}
|
||||
|
||||
function reset() {
|
||||
params.reset()
|
||||
params.reset();
|
||||
fetch();
|
||||
}
|
||||
|
||||
@@ -167,29 +169,43 @@ const closeDrawer = () => {
|
||||
reset();
|
||||
};
|
||||
|
||||
const spinning = ref(false);
|
||||
function confirm(row) {
|
||||
dialog({
|
||||
content: "确定选择该案例吗?",
|
||||
ok: async () => {
|
||||
// 新增
|
||||
spinning.value = true;
|
||||
if (!selectedRows?.value?.id) {
|
||||
await saveTask({
|
||||
saveTask({
|
||||
growthId: props.growId,
|
||||
taskName: row.title,
|
||||
taskType: props.type,
|
||||
taskId: row.id,
|
||||
type: props.activeKey,
|
||||
});
|
||||
message.success("添加成功");
|
||||
})
|
||||
.then((res) => {
|
||||
message.success("添加成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
} else {
|
||||
// 编辑
|
||||
selectedRows.value.taskName = row.title;
|
||||
selectedRows.value.taskId = row.id;
|
||||
await saveTask(selectedRows.value);
|
||||
message.success("编辑成功");
|
||||
saveTask(selectedRows.value)
|
||||
.then((res) => {
|
||||
message.success("编辑成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,23 +1,65 @@
|
||||
<!-- eslint-disable vue/no-parsing-error -->
|
||||
<!-- eslint-disable vue/require-v-for-key -->
|
||||
<template>
|
||||
<div class="CommonStudent">
|
||||
<div class="drawer-content" style="">
|
||||
<div class="tabs" style="min-width: 800px">
|
||||
<a-tabs v-model:activeKey="activeKey">
|
||||
<template v-if="type == 2">
|
||||
<a-tab-pane :key="2" tab="项目内学员">
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="CommonStudent">
|
||||
<div class="drawer-content" style="">
|
||||
<div class="tabs" style="min-width: 800px">
|
||||
<a-tabs v-model:activeKey="activeKey">
|
||||
<template v-if="type == 2">
|
||||
<a-tab-pane :key="2" tab="项目内学员">
|
||||
<div :style="{ height: screenHeight - 235 + 'px' }">
|
||||
<div>
|
||||
<a-form-item label="姓名:">
|
||||
<a-input
|
||||
v-model:value="projectParams.userNickName"
|
||||
style="width: 260px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
<a-button
|
||||
type="primary"
|
||||
@click="getProjectStu"
|
||||
style="margin-left: 20px; border-radius: 4px"
|
||||
>
|
||||
<template #icon>
|
||||
<SearchOutlined />
|
||||
</template>
|
||||
搜索
|
||||
</a-button>
|
||||
<a-button
|
||||
type="primary"
|
||||
@click="resetProjectStu"
|
||||
style="margin-left: 20px; border-radius: 4px"
|
||||
>重置
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="tableBox tabb">
|
||||
<BaseTable
|
||||
ref="projectStuTableRef"
|
||||
:columns="projectStuColumns"
|
||||
:url="GROWTH_STUDENT_LIST"
|
||||
v-model:params="projectParams"
|
||||
v-model:selectedRows="projectSelectRows"
|
||||
:request="growthRequest"
|
||||
type="checkbox"
|
||||
></BaseTable>
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
</template>
|
||||
<a-tab-pane :key="1" tab="快速选人">
|
||||
<div :style="{ height: screenHeight - 235 + 'px' }">
|
||||
<div>
|
||||
<a-form-item label="姓名:">
|
||||
<div class="tab1">
|
||||
<a-form-item label="姓名">
|
||||
<a-input
|
||||
v-model:value="projectParams.userNickName"
|
||||
style="width: 260px; height: 40px; border-radius: 8px"
|
||||
v-model:value="nameSearch.keyword"
|
||||
style="width: 270px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
<a-button
|
||||
type="primary"
|
||||
@click="getProjectStu"
|
||||
@click="onSearchStu"
|
||||
style="margin-left: 20px; border-radius: 4px"
|
||||
>
|
||||
<template #icon>
|
||||
@@ -27,181 +69,151 @@
|
||||
</a-button>
|
||||
<a-button
|
||||
type="primary"
|
||||
@click="resetProjectStu"
|
||||
@click="resetStu"
|
||||
style="margin-left: 20px; border-radius: 4px"
|
||||
>重置
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div class="tableBox tabb">
|
||||
<BaseTable
|
||||
ref="projectStuTableRef"
|
||||
:columns="projectStuColumns"
|
||||
:url="GROWTH_STUDENT_LIST"
|
||||
v-model:params="projectParams"
|
||||
v-model:selectedRows="projectSelectRows"
|
||||
:request="growthRequest"
|
||||
type="checkbox"
|
||||
></BaseTable>
|
||||
<div
|
||||
class="chooseLeft"
|
||||
style="display: grid; grid-template-columns: 250px auto"
|
||||
>
|
||||
<a-spin :spinning="treeSpin">
|
||||
<div
|
||||
style="border: 1px solid #f0f0f0"
|
||||
:style="{
|
||||
height: screenHeight - 180 + 'px',
|
||||
overflowY: 'auto',
|
||||
}"
|
||||
>
|
||||
<a-input-search
|
||||
v-model:value="nameSearch.departName"
|
||||
placeholder="请输入部门名称"
|
||||
@search="getOrgList"
|
||||
allowClear
|
||||
/>
|
||||
|
||||
<div
|
||||
class="tree"
|
||||
style="margin: 10px 4px 0 10px"
|
||||
v-if="!treeSpin"
|
||||
>
|
||||
<a-tree
|
||||
allow-clear
|
||||
tree-default-expand-all
|
||||
:tree-data="treeData"
|
||||
:load-data="onLoadData"
|
||||
v-model:selectedKeys="stuTreeSelectKeys"
|
||||
v-model:expandedKeys="stuTreeExpandedKeys"
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
key: 'id',
|
||||
title: 'name',
|
||||
value: 'name',
|
||||
}"
|
||||
@select="stuStuOrgSelect"
|
||||
>
|
||||
</a-tree>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
|
||||
<div
|
||||
class="tableBox tabb"
|
||||
style="margin: 0px 4px 0 10px; border: 1px solid #f0f0f0"
|
||||
>
|
||||
<BaseTable
|
||||
ref="stuTableRef"
|
||||
:columns="stuColumns"
|
||||
:url="USER_LIST_PAGE"
|
||||
pageKey="pageNo"
|
||||
v-model:params="nameSearch"
|
||||
:request="useNewRowsPageNoInit"
|
||||
v-model:selectedRows="stuSelectRows"
|
||||
type="checkbox"
|
||||
></BaseTable>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
</template>
|
||||
<a-tab-pane :key="1" tab="快速选人">
|
||||
<div :style="{ height: screenHeight - 235 + 'px' }">
|
||||
<div class="tab1">
|
||||
<a-form-item label="姓名">
|
||||
<a-input
|
||||
v-model:value="nameSearch.keyword"
|
||||
style="width: 270px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入姓名"
|
||||
/>
|
||||
<a-button
|
||||
type="primary"
|
||||
@click="onSearchStu"
|
||||
style="margin-left: 20px; border-radius: 4px"
|
||||
>
|
||||
<template #icon>
|
||||
<SearchOutlined />
|
||||
</template>
|
||||
搜索
|
||||
</a-button>
|
||||
<a-button
|
||||
type="primary"
|
||||
@click="resetStu"
|
||||
style="margin-left: 20px; border-radius: 4px"
|
||||
>重置
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<div
|
||||
class="chooseLeft"
|
||||
style="display: grid; grid-template-columns: 250px auto"
|
||||
>
|
||||
<a-spin :spinning="treeSpin">
|
||||
<div
|
||||
style="border: 1px solid #f0f0f0"
|
||||
:style="{
|
||||
height: screenHeight - 180 + 'px',
|
||||
overflowY: 'auto',
|
||||
}"
|
||||
>
|
||||
<a-input-search
|
||||
v-model:value="nameSearch.departName"
|
||||
placeholder="请输入部门名称"
|
||||
@search="getOrgList"
|
||||
allowClear
|
||||
/>
|
||||
|
||||
<div class="tree" style="margin: 10px 4px 0 10px" v-if="!treeSpin">
|
||||
<a-tree
|
||||
allow-clear
|
||||
tree-default-expand-all
|
||||
:tree-data="treeData"
|
||||
:load-data="onLoadData"
|
||||
v-model:selectedKeys="stuTreeSelectKeys"
|
||||
v-model:expandedKeys="stuTreeExpandedKeys"
|
||||
:fieldNames="{
|
||||
children: 'treeChildList',
|
||||
key: 'id',
|
||||
title: 'name',
|
||||
value: 'name',
|
||||
}"
|
||||
@select="stuStuOrgSelect"
|
||||
>
|
||||
</a-tree>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
|
||||
<div
|
||||
class="tableBox tabb"
|
||||
style="margin: 0px 4px 0 10px; border: 1px solid #f0f0f0"
|
||||
>
|
||||
<BaseTable
|
||||
ref="stuTableRef"
|
||||
:columns="stuColumns"
|
||||
:url="USER_LIST_PAGE"
|
||||
pageKey="pageNo"
|
||||
v-model:params="nameSearch"
|
||||
:request="useNewRowsPageNoInit"
|
||||
v-model:selectedRows="stuSelectRows"
|
||||
type="checkbox"
|
||||
></BaseTable>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</div>
|
||||
<div class="right1" style="min-width: 200px">
|
||||
<div class="onerow">
|
||||
<div class="onleft">
|
||||
<div class="already">已选</div>
|
||||
</div>
|
||||
</a-tabs>
|
||||
</div>
|
||||
<div
|
||||
:style="{ 'max-height': screenHeight - 235 + 'px' }"
|
||||
style="overflow-y: auto; padding-bottom: 10px"
|
||||
>
|
||||
<div class="selecteds" v-if="type == 2">
|
||||
<div class="person">项目内学员</div>
|
||||
<div v-for="(item, i) in projectSelectRows" :key="i">
|
||||
<div v-if="i < 11">
|
||||
<div class="chose">
|
||||
{{ item.userNickName }}
|
||||
<div class="ch" @click="projectStuTableRef.remove(i)"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-if="person">
|
||||
<div class="right1" style="min-width: 200px">
|
||||
<div class="onerow">
|
||||
<div class="onleft">
|
||||
<div class="already">已选</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
:style="{ 'max-height': screenHeight - 235 + 'px' }"
|
||||
style="overflow-y: auto; padding-bottom: 10px"
|
||||
>
|
||||
<div class="selecteds" v-if="type == 2">
|
||||
<div class="person">项目内学员</div>
|
||||
<div v-for="(item, i) in projectSelectRows" :key="i">
|
||||
<div v-if="i < 11">
|
||||
<div class="chose">
|
||||
{{ item.userNickName }}
|
||||
<div class="ch" @click="projectStuTableRef.remove(i)"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!member && projectSelectRows?.length > 10" class="ifsw">
|
||||
<div @click="member = !member" class="“sw”">查看更多></div>
|
||||
</div>
|
||||
<div v-if="member && projectSelectRows?.length > 10" class="ifsw">
|
||||
<div @click="member = !member" class="sw">收起<</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="selecteds">
|
||||
<div class="person">快速选人</div>
|
||||
<div v-for="(item, i) in stuSelectRows" :key="i">
|
||||
<div v-if="i < 11">
|
||||
<div class="chose">
|
||||
{{ item.realName }}
|
||||
<div class="ch" @click="stuTableRef.remove(i)"></div>
|
||||
<div v-else>
|
||||
<div v-if="person">
|
||||
<div class="chose">
|
||||
{{ item.userNickName }}
|
||||
<div
|
||||
class="ch"
|
||||
@click="projectStuTableRef.remove(i)"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-if="person">
|
||||
<div
|
||||
v-if="!member && projectSelectRows?.length > 10"
|
||||
class="ifsw"
|
||||
>
|
||||
<div @click="member = !member" class="“sw”">查看更多></div>
|
||||
</div>
|
||||
<div v-if="member && projectSelectRows?.length > 10" class="ifsw">
|
||||
<div @click="member = !member" class="sw">收起<</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="selecteds">
|
||||
<div class="person">快速选人</div>
|
||||
<div v-for="(item, i) in stuSelectRows" :key="i">
|
||||
<div v-if="i < 11">
|
||||
<div class="chose">
|
||||
{{ item.realName }}
|
||||
<div class="ch" @click="stuTableRef.remove(i)"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<div v-if="person">
|
||||
<div class="chose">
|
||||
{{ item.realName }}
|
||||
<div class="ch" @click="stuTableRef.remove(i)"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!person && stuSelectRows.length > 10" class="ifsw">
|
||||
<div @click="person = !person" class="“sw”">查看更多></div>
|
||||
</div>
|
||||
<div v-if="person && stuSelectRows.length > 10" class="ifsw">
|
||||
<div @click="person = !person" class="sw">收起<</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!person && stuSelectRows.length > 10" class="ifsw">
|
||||
<div @click="person = !person" class="“sw”">查看更多></div>
|
||||
</div>
|
||||
<div v-if="person && stuSelectRows.length > 10" class="ifsw">
|
||||
<div @click="person = !person" class="sw">收起<</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</template>
|
||||
<script setup>
|
||||
import { message } from "ant-design-vue";
|
||||
@@ -232,7 +244,12 @@ const props = defineProps({
|
||||
type: [String, Number],
|
||||
default: 1,
|
||||
},
|
||||
autoClose: {
|
||||
type: Boolean,
|
||||
default: true,
|
||||
},
|
||||
});
|
||||
const spinning = ref(false)
|
||||
const projectStuTableRef = ref(null);
|
||||
// 项目内学员获取列表
|
||||
const getProjectStu = () => projectStuTableRef.value.fetch();
|
||||
@@ -394,7 +411,9 @@ const confirm = () => {
|
||||
}
|
||||
visiable.value = false;
|
||||
emit("confirm", stuSelectRows.value, projectSelectRows.value);
|
||||
closeDrawer();
|
||||
if (props.autoClose) {
|
||||
closeDrawer();
|
||||
}
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
@@ -410,6 +429,10 @@ onMounted(() => {
|
||||
stuTableRef.value && stuTableRef.value.reset({ keyword: "", departId: "" });
|
||||
}
|
||||
});
|
||||
|
||||
defineExpose({
|
||||
spinning
|
||||
})
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.CommonStudent > .ant-drawer-content-wrapper {
|
||||
|
||||
@@ -8,77 +8,79 @@
|
||||
width="800"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}讨论</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}讨论</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">讨论名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.discussName"
|
||||
style="width: 424px; height: 32px"
|
||||
placeholder="请输入讨论名称"
|
||||
show-count
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">讨论名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.discussName"
|
||||
style="width: 424px; height: 32px"
|
||||
placeholder="请输入讨论名称"
|
||||
show-count
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">讨论说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.discussExplain"
|
||||
placeholder="请输入讨论说明"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">讨论说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.discussExplain"
|
||||
placeholder="请输入讨论说明"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">讨论设置:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-checkbox
|
||||
v-model:checked="formData.info.discussSettings"
|
||||
@click="discussSettings"
|
||||
>允许评论</a-checkbox
|
||||
>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">讨论设置:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-checkbox
|
||||
v-model:checked="formData.info.discussSettings"
|
||||
@click="discussSettings"
|
||||
>允许评论</a-checkbox
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -130,7 +132,7 @@ const closeDrawer = () => {
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
const spinning = ref(false);
|
||||
async function confirm() {
|
||||
await validate().catch(({ errorFields }) => {
|
||||
message.warning(errorFields[0].errors.join());
|
||||
@@ -144,22 +146,28 @@ async function confirm() {
|
||||
formData.value.type = props.activeKey;
|
||||
// 任务名称
|
||||
formData.value.taskName = formData.value.info.discussName;
|
||||
saveTask(formData.value).then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
spinning.value = true;
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
message.error(res.msg);
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
closeDrawer();
|
||||
});
|
||||
closeDrawer();
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
function openDrawer(row) {
|
||||
row && (row = JSON.parse(JSON.stringify(row)));
|
||||
row && (formData.value = row);
|
||||
row &&
|
||||
(formData.value.info.discussSettings =
|
||||
|
||||
@@ -6,19 +6,21 @@
|
||||
destroyOnClose
|
||||
:width="width"
|
||||
>
|
||||
<div class="drawerMain" style="">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ { 1: "添加学员", 2: "添加学员", 3: "添加学员" }[type] || title }}
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain" style="">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ { 1: "添加学员", 2: "添加学员", 3: "添加学员" }[type] || title }}
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
<slot></slot>
|
||||
</div>
|
||||
<slot></slot>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -35,7 +37,7 @@ const props = defineProps({
|
||||
},
|
||||
});
|
||||
const visiable = ref(false);
|
||||
|
||||
const spinning = ref(false);
|
||||
const openDrawer = () => {
|
||||
visiable.value = true;
|
||||
};
|
||||
@@ -45,5 +47,6 @@ const closeDrawer = () => {
|
||||
defineExpose({
|
||||
openDrawer,
|
||||
closeDrawer,
|
||||
spinning
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -10,116 +10,118 @@
|
||||
placement="right"
|
||||
destroyOnClose
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ title }}
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ title }}
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<template v-if="step == 1">
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<template v-if="step == 1">
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">测评名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.evaluationName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入测评名称"
|
||||
show-count
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">测评名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.evaluationName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入测评名称"
|
||||
show-count
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">测评:</span>
|
||||
</div>
|
||||
<span style="margin-right: 3px">测评:</span>
|
||||
</div>
|
||||
<div class="btnbox" @click="selectEval">
|
||||
<button class="checkEval">
|
||||
{{ formData.info.evaluationTypeName ? "修改" : "选择" }}测评
|
||||
</button>
|
||||
<div class="btnbox" @click="selectEval">
|
||||
<button class="checkEval">
|
||||
{{ formData.info.evaluationTypeName ? "修改" : "选择" }}测评
|
||||
</button>
|
||||
|
||||
<div
|
||||
v-if="formData.info.evaluationTypeName"
|
||||
style="margin-left: 20px"
|
||||
>
|
||||
<a-tag closable @close="delTag" color="processing">
|
||||
<span style="font-size: 14px; line-height: 33px">{{
|
||||
formData.info.evaluationTypeName
|
||||
}}</span>
|
||||
</a-tag>
|
||||
<div
|
||||
v-if="formData.info.evaluationTypeName"
|
||||
style="margin-left: 20px"
|
||||
>
|
||||
<a-tag closable @close="delTag" color="processing">
|
||||
<span style="font-size: 14px; line-height: 33px">{{
|
||||
formData.info.evaluationTypeName
|
||||
}}</span>
|
||||
</a-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">有效期:</span>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">有效期:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="dateTime"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
valueFormat="YYYY-MM-DD HH:mm"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="dateTime"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
valueFormat="YYYY-MM-DD HH:mm"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">测评说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
show-count
|
||||
:maxlength="200"
|
||||
v-model:value="formData.info.evaluationExplain"
|
||||
placeholder="请输入测评说明"
|
||||
style="width: 400px"
|
||||
allowClear
|
||||
:rows="6"
|
||||
/>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">测评说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
show-count
|
||||
:maxlength="200"
|
||||
v-model:value="formData.info.evaluationExplain"
|
||||
placeholder="请输入测评说明"
|
||||
style="width: 400px"
|
||||
allowClear
|
||||
:rows="6"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</template>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<div v-show="step == 2">
|
||||
<EvList
|
||||
:selectId="formData.info.evaluationTypeId"
|
||||
ref="EvListRef"
|
||||
@confirm="selectEvalConfirm"
|
||||
>
|
||||
</EvList>
|
||||
<div v-show="step == 2">
|
||||
<EvList
|
||||
:selectId="formData.info.evaluationTypeId"
|
||||
ref="EvListRef"
|
||||
@confirm="selectEvalConfirm"
|
||||
>
|
||||
</EvList>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -239,6 +241,7 @@ function delTag() {
|
||||
}
|
||||
// 验证方法
|
||||
let validate = null;
|
||||
const spinning = ref(false);
|
||||
async function confirm() {
|
||||
await validate().catch(({ errorFields }) => {
|
||||
message.warning(errorFields[0].errors.join());
|
||||
@@ -252,22 +255,28 @@ async function confirm() {
|
||||
formData.value.type = props.activeKey;
|
||||
// 任务名称
|
||||
formData.value.taskName = formData.value.info.evaluationName;
|
||||
saveTask(formData.value).then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
spinning.value = true;
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
message.error(res.msg);
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
closeDrawer();
|
||||
});
|
||||
closeDrawer();
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
function openDrawer(row) {
|
||||
row && (row = JSON.parse(JSON.stringify(row)));
|
||||
row && (formData.value = row);
|
||||
if (row && row.info.evaluationEndTime) {
|
||||
dateTime.value = [
|
||||
|
||||
@@ -9,102 +9,105 @@
|
||||
placement="right"
|
||||
destroyOnClose
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ title }}
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<template v-if="step == 1">
|
||||
<div
|
||||
style="
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
padding-top: 0px;
|
||||
margin-top: 20px;
|
||||
margin-left: 32px;
|
||||
"
|
||||
>
|
||||
<div>
|
||||
<button
|
||||
v-show="formData.info.examType === 1 || !formData.id"
|
||||
@click="changeExamType(1)"
|
||||
style="width: 100px; cursor: pointer"
|
||||
:class="formData.info.examType === 1 ? 'outer' : 'notOuter'"
|
||||
>
|
||||
系统考试
|
||||
</button>
|
||||
<button
|
||||
v-show="formData.info.examType === 2 || !formData.id"
|
||||
@click="changeExamType(2)"
|
||||
style="width: 100px; cursor: pointer"
|
||||
:class="formData.info.examType === 2 ? 'outer' : 'notOuter'"
|
||||
>
|
||||
外部考试
|
||||
</button>
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ title }}
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div v-if="formData.info.examType === 1" class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">考试名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.examinationName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入考试名称"
|
||||
:maxlength="20"
|
||||
showCount
|
||||
/>
|
||||
</div>
|
||||
<template v-if="step == 1">
|
||||
<div
|
||||
style="
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
padding-top: 0px;
|
||||
margin-top: 20px;
|
||||
margin-left: 32px;
|
||||
"
|
||||
>
|
||||
<div>
|
||||
<button
|
||||
v-show="formData.info.examType === 1 || !formData.id"
|
||||
@click="changeExamType(1)"
|
||||
style="width: 100px; cursor: pointer"
|
||||
:class="formData.info.examType === 1 ? 'outer' : 'notOuter'"
|
||||
>
|
||||
系统考试
|
||||
</button>
|
||||
<button
|
||||
v-show="formData.info.examType === 2 || !formData.id"
|
||||
@click="changeExamType(2)"
|
||||
style="width: 100px; cursor: pointer"
|
||||
:class="formData.info.examType === 2 ? 'outer' : 'notOuter'"
|
||||
>
|
||||
外部考试
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<div v-if="formData.info.examType === 1" class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">考试名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.examinationName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入考试名称"
|
||||
:maxlength="20"
|
||||
showCount
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">选择试卷:</span>
|
||||
</div>
|
||||
|
||||
<div v-if="formData.info.examinationPaperId">
|
||||
<a-tag
|
||||
closable
|
||||
color="processing"
|
||||
@close="delTag"
|
||||
:closeIcon="true"
|
||||
>
|
||||
<span style="font-size: 14px; line-height: 33px">{{
|
||||
formData.info.examinationTestName
|
||||
}}</span>
|
||||
</a-tag>
|
||||
</div>
|
||||
<template v-if="!formData.id">
|
||||
<div class="btnbox" @click="selectTest">
|
||||
<button class="xkbtn" style="margin: 0">
|
||||
{{ formData.info.examinationPaperId ? "重选" : "选择" }}试卷
|
||||
</button>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">选择试卷:</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- <GrowthSelectTest
|
||||
<div v-if="formData.info.examinationPaperId">
|
||||
<a-tag
|
||||
closable
|
||||
color="processing"
|
||||
@close="delTag"
|
||||
:closeIcon="true"
|
||||
>
|
||||
<span style="font-size: 14px; line-height: 33px">{{
|
||||
formData.info.examinationTestName
|
||||
}}</span>
|
||||
</a-tag>
|
||||
</div>
|
||||
<template v-if="!formData.id">
|
||||
<div class="btnbox" @click="selectTest">
|
||||
<button class="xkbtn" style="margin: 0">
|
||||
{{
|
||||
formData.info.examinationPaperId ? "重选" : "选择"
|
||||
}}试卷
|
||||
</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<!-- <GrowthSelectTest
|
||||
v-if="taskIndex < 0 || (taskIndex >= 0 && isEdit == false)"
|
||||
v-model:id="formData.examinationPaperId"
|
||||
v-model:name="formData.examinationTestName"
|
||||
@@ -115,269 +118,270 @@
|
||||
</button>
|
||||
</div>
|
||||
</GrowthSelectTest> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">考试时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
:show-time="{ format: 'hh:mm' }"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
valueFormat="YYYY-MM-DD HH:mm"
|
||||
v-model:value="dateTime"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">考试时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
:show-time="{ format: 'hh:mm' }"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
valueFormat="YYYY-MM-DD HH:mm"
|
||||
v-model:value="dateTime"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">考试时长:</span>
|
||||
</div>
|
||||
<span style="margin-right: 3px">考试时长:</span>
|
||||
</div>
|
||||
<div class="select">
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:disabled="formData.id"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="formData.info.examinationDuration"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
<div class="select">
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:disabled="formData.id"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="formData.info.examinationDuration"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||
</div>
|
||||
<span style="margin-right: 3px">及格线:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input-number
|
||||
min="0"
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.passLine"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
/>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">及格线:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input-number
|
||||
min="0"
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.passLine"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
/>
|
||||
|
||||
<span style="color: #999999; margin-left: 8px">分</span>
|
||||
<span style="color: #999999; margin-left: 8px">分</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">考试说明:</span>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">考试说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.examinationExplain"
|
||||
placeholder="请输入考试说明"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.examinationExplain"
|
||||
placeholder="请输入考试说明"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px; margin-top: 10px"
|
||||
>考试限制:</span
|
||||
>
|
||||
</div>
|
||||
<div class="kqszbox">
|
||||
<div class="setbox">
|
||||
<div class="timerbox">
|
||||
<span>允许重复考试:</span>
|
||||
<a-input-number
|
||||
:min="-1"
|
||||
:disabled="formData.id"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 100px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.examinationLimit"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>次,-1表示无限制</span
|
||||
>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px; margin-top: 10px"
|
||||
>考试限制:</span
|
||||
>
|
||||
</div>
|
||||
<div class="kqszbox">
|
||||
<div class="setbox">
|
||||
<div class="timerbox">
|
||||
<span>允许重复考试:</span>
|
||||
<a-input-number
|
||||
:min="-1"
|
||||
:disabled="formData.id"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 100px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.examinationLimit"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>次,-1表示无限制</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">显示答案:</span>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">显示答案:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="formData.info.showAnswers"
|
||||
:disabled="formData.id"
|
||||
>
|
||||
<a-radio :value="'1'">允许查看</a-radio>
|
||||
<a-radio :value="'2'">不允许查看</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
v-model:value="formData.info.showAnswers"
|
||||
:disabled="formData.id"
|
||||
>
|
||||
<a-radio :value="'1'">允许查看</a-radio>
|
||||
<a-radio :value="'2'">不允许查看</a-radio>
|
||||
</a-radio-group>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">显示解析:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.showAnalysis"
|
||||
>
|
||||
<a-radio :value="'1'">允许查看</a-radio>
|
||||
<a-radio :value="'2'">不允许查看</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">显示解析:</span>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">评分模式:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.scoringModel"
|
||||
>
|
||||
<a-radio :value="'1'">最高一次</a-radio>
|
||||
<a-radio :value="'2'">最后一次</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.showAnalysis"
|
||||
>
|
||||
<a-radio :value="'1'">允许查看</a-radio>
|
||||
<a-radio :value="'2'">不允许查看</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">评分模式:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.scoringModel"
|
||||
>
|
||||
<a-radio :value="'1'">最高一次</a-radio>
|
||||
<a-radio :value="'2'">最后一次</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">试题排列:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.questionArrangement"
|
||||
>
|
||||
<a-radio :value="'1'">试题乱序</a-radio>
|
||||
<a-radio :value="'2'">选项乱序</a-radio>
|
||||
<a-radio :value="'3'">全部乱序</a-radio>
|
||||
<a-radio :value="'4'">不乱序</a-radio>
|
||||
</a-radio-group>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">试题排列:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group
|
||||
style="margin-right: 12px"
|
||||
:disabled="formData.id"
|
||||
v-model:value="formData.info.questionArrangement"
|
||||
>
|
||||
<a-radio :value="'1'">试题乱序</a-radio>
|
||||
<a-radio :value="'2'">选项乱序</a-radio>
|
||||
<a-radio :value="'3'">全部乱序</a-radio>
|
||||
<a-radio :value="'4'">不乱序</a-radio>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item" style="height: 20px"></div>
|
||||
</div>
|
||||
<div class="main_item" style="height: 20px"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<div v-else class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">考试名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.examinationName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入考试名称"
|
||||
:maxlength="20"
|
||||
showCount
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">考试名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.examinationName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入考试名称"
|
||||
:maxlength="20"
|
||||
showCount
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">数据来源:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.source"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入数据来源"
|
||||
show-count
|
||||
:maxlength="420"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">数据来源:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.source"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入数据来源"
|
||||
show-count
|
||||
:maxlength="420"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">考试说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.examinationExplain"
|
||||
placeholder="请输入考试说明"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">考试说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.examinationExplain"
|
||||
placeholder="请输入考试说明"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_btns">
|
||||
<a-button class="btn2" @click="closeDrawer">取消</a-button>
|
||||
<a-button class="btn2" @click="confirm">确定</a-button>
|
||||
<div class="main_btns">
|
||||
<a-button class="btn2" @click="closeDrawer">取消</a-button>
|
||||
<a-button class="btn2" @click="confirm">确定</a-button>
|
||||
</div>
|
||||
</template>
|
||||
<div v-show="step == 2">
|
||||
<GrowthSelectTest
|
||||
ref="GrowthSelectTestRef"
|
||||
:selectId="formData.info.examinationPaperId"
|
||||
@confirm="selectTestConfirm"
|
||||
@addTest="addTest"
|
||||
>
|
||||
</GrowthSelectTest>
|
||||
</div>
|
||||
<!-- 新建考试 -->
|
||||
<div class="iframe-container" v-if="step == 3">
|
||||
<iframe
|
||||
id="iframe"
|
||||
style="width: 100%; height: 100%; border: none"
|
||||
:src="iframeUrl + '/exam/papers?addnew=true'"
|
||||
name="myframe"
|
||||
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
|
||||
></iframe>
|
||||
</div>
|
||||
</template>
|
||||
<div v-show="step == 2">
|
||||
<GrowthSelectTest
|
||||
ref="GrowthSelectTestRef"
|
||||
:selectId="formData.info.examinationPaperId"
|
||||
@confirm="selectTestConfirm"
|
||||
@addTest="addTest"
|
||||
>
|
||||
</GrowthSelectTest>
|
||||
</div>
|
||||
<!-- 新建考试 -->
|
||||
<div class="iframe-container" v-if="step == 3">
|
||||
<iframe
|
||||
id="iframe"
|
||||
style="width: 100%; height: 100%; border: none"
|
||||
:src="iframeUrl + '/exam/papers?addnew=true'"
|
||||
name="myframe"
|
||||
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
|
||||
></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -538,6 +542,7 @@ function timeChange(time, timeStr) {
|
||||
formData.value.info.examinationEndTime = timeStr[1];
|
||||
}
|
||||
|
||||
const spinning = ref(false);
|
||||
// 系统考试
|
||||
async function confirm() {
|
||||
console.log(formData.value);
|
||||
@@ -569,22 +574,28 @@ async function confirm() {
|
||||
formData.value.taskName = formData.value.info.examinationName;
|
||||
// 任务时长
|
||||
formData.value.duration = formData.value.info.examinationDuration;
|
||||
saveTask(formData.value).then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
|
||||
spinning.value = true;
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
message.error(res.msg);
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
closeDrawer();
|
||||
});
|
||||
closeDrawer();
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
function openDrawer(row) {
|
||||
console.log(row, "irow");
|
||||
row && (row = JSON.parse(JSON.stringify(row)));
|
||||
row &&
|
||||
(dateTime.value = [
|
||||
row.info.examinationStartTime,
|
||||
|
||||
@@ -9,39 +9,41 @@
|
||||
title="添加面授"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ title }}</div>
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ title }}</div>
|
||||
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main">
|
||||
<div class="main_left">
|
||||
<div v-show="step == 1">
|
||||
<FaceClassAll
|
||||
ref="FaceClassAllRef"
|
||||
v-model:id="formData.taskId"
|
||||
v-model:name="formData.taskName"
|
||||
@addData="addData"
|
||||
@select="confirm"
|
||||
/>
|
||||
</div>
|
||||
<div v-show="step == 2">
|
||||
<GrowthCourseModal
|
||||
@noEdit="noEdit"
|
||||
@visibleClose="visibleClose"
|
||||
ref="CourseModalRef"
|
||||
/>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main">
|
||||
<div class="main_left">
|
||||
<div v-show="step == 1">
|
||||
<FaceClassAll
|
||||
ref="FaceClassAllRef"
|
||||
v-model:id="formData.taskId"
|
||||
v-model:name="formData.taskName"
|
||||
@addData="addData"
|
||||
@select="confirm"
|
||||
/>
|
||||
</div>
|
||||
<div v-show="step == 2">
|
||||
<GrowthCourseModal
|
||||
@noEdit="noEdit"
|
||||
@visibleClose="visibleClose"
|
||||
ref="CourseModalRef"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -96,27 +98,40 @@ const closeDrawer = () => {
|
||||
formData.reset();
|
||||
}
|
||||
};
|
||||
|
||||
const spinning = ref(false);
|
||||
async function confirm(row) {
|
||||
// 新增
|
||||
spinning.value = true;
|
||||
if (!formData.value?.id) {
|
||||
await saveTask({
|
||||
saveTask({
|
||||
growthId: props.growId,
|
||||
taskName: row.name,
|
||||
taskType: props.type,
|
||||
taskId: row.id,
|
||||
type: props.activeKey,
|
||||
});
|
||||
message.success("添加成功");
|
||||
})
|
||||
.then((res) => {
|
||||
message.success("添加成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
} else {
|
||||
// 编辑
|
||||
formData.value.taskName = row.name;
|
||||
formData.value.taskId = row.id;
|
||||
await saveTask(formData.value);
|
||||
message.success("编辑成功");
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
message.success("编辑成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
}
|
||||
|
||||
function openDrawer(row) {
|
||||
|
||||
@@ -8,100 +8,102 @@
|
||||
width="800"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}作业</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}作业</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">作业名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.workName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入作业名称"
|
||||
autocomplete="off"
|
||||
show-count
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">作业名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.workName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入作业名称"
|
||||
autocomplete="off"
|
||||
show-count
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">开始时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
:show-time="{ format: 'hh:mm' }"
|
||||
v-model:value="dateTime"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">开始时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
:show-time="{ format: 'hh:mm' }"
|
||||
v-model:value="dateTime"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">作业要求:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.workRequirement"
|
||||
placeholder="请输入作业要求"
|
||||
autocomplete="off"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">作业要求:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.workRequirement"
|
||||
placeholder="请输入作业要求"
|
||||
autocomplete="off"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<span style="margin-right: 10px"></span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<FJUpload v-model:value="formData.info.workEnclosureAddress" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%; height: 80px"></div>
|
||||
</div>
|
||||
<div class="mbl_items">
|
||||
<div class="item_nam">
|
||||
<span style="margin-right: 10px"></span>
|
||||
</div>
|
||||
<div class="item_inp">
|
||||
<FJUpload v-model:value="formData.info.workEnclosureAddress" />
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%; height: 80px"></div>
|
||||
</div>
|
||||
<div class="main_btns" style="background: #fff">
|
||||
<a-button class="btn2" @click="closeDrawer">取消</a-button>
|
||||
<a-button class="btn2" html-type="submit" @click="confirm"
|
||||
>确定</a-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns" style="background: #fff">
|
||||
<a-button class="btn2" @click="closeDrawer">取消</a-button>
|
||||
<a-button class="btn2" html-type="submit" @click="confirm"
|
||||
>确定</a-button
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -117,7 +119,7 @@ const props = defineProps({
|
||||
activeKey: String,
|
||||
});
|
||||
const visible = ref(false);
|
||||
const formData = useResetRef({
|
||||
const formData = ref({
|
||||
info: {
|
||||
workName: "",
|
||||
submitStartTime: "",
|
||||
@@ -156,8 +158,14 @@ const rulesRef = ref({
|
||||
|
||||
const closeDrawer = () => {
|
||||
visible.value = false;
|
||||
formData.reset();
|
||||
formData.value.info = {};
|
||||
formData.value = {
|
||||
info: {
|
||||
workName: "",
|
||||
submitStartTime: "",
|
||||
submitEndTime: "",
|
||||
workRequirement: "",
|
||||
},
|
||||
};
|
||||
dateTime.value = [];
|
||||
};
|
||||
|
||||
@@ -165,7 +173,7 @@ function timeChange(time, timeStr) {
|
||||
formData.value.info.submitStartTime = timeStr[0];
|
||||
formData.value.info.submitEndTime = timeStr[1];
|
||||
}
|
||||
|
||||
const spinning = ref(false);
|
||||
async function confirm() {
|
||||
// 表单校验
|
||||
await validate().catch(({ errorFields }) => {
|
||||
@@ -190,24 +198,28 @@ async function confirm() {
|
||||
formData.value.info.submitStartTime,
|
||||
"minutes"
|
||||
);
|
||||
|
||||
saveTask(formData.value).then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
spinning.value = true
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
}
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
message.error(res.msg);
|
||||
}
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
});
|
||||
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
let validate = null;
|
||||
function openDrawer(row) {
|
||||
row && (row = JSON.parse(JSON.stringify(row)));
|
||||
row && (formData.value = row);
|
||||
row &&
|
||||
(dateTime.value = [
|
||||
|
||||
@@ -9,73 +9,75 @@
|
||||
title="添加评估"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div v-if="formData.id" class="headerTitle">编辑评估</div>
|
||||
<div v-else class="headerTitle">添加评估</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_item">
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.assessmentName"
|
||||
style="width: 424px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入评估名称"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
<div class="btns" @click="search">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">搜索</div>
|
||||
</div>
|
||||
<div class="btnsn" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">重置</div>
|
||||
</div>
|
||||
<div class="btnsn" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">刷新</div>
|
||||
</div>
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div v-if="formData.id" class="headerTitle">编辑评估</div>
|
||||
<div v-else class="headerTitle">添加评估</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_item">
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.assessmentName"
|
||||
style="width: 424px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入评估名称"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
<div class="btns" @click="search">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">搜索</div>
|
||||
</div>
|
||||
<div class="btnsn" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">重置</div>
|
||||
</div>
|
||||
<div class="btnsn" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">刷新</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<button class="xkbtn" style="margin: 0" @click="goResearchmanage">
|
||||
新建评估
|
||||
</button>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<button class="xkbtn" style="margin: 0" @click="goResearchmanage">
|
||||
新建评估
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="main_table">
|
||||
<a-table
|
||||
class="ant-table-striped"
|
||||
:row-class-name="
|
||||
(_, index) => (index % 2 === 1 ? 'table-striped' : null)
|
||||
"
|
||||
row-key="id"
|
||||
:columns="columns"
|
||||
:data-source="data"
|
||||
:loading="loading"
|
||||
:pagination="pagination"
|
||||
>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.dataIndex === 'select'">
|
||||
<a
|
||||
:style="{
|
||||
color: formData.taskId == record.id ? '#999' : null,
|
||||
}"
|
||||
@click="confirm(record)"
|
||||
>选择</a
|
||||
>
|
||||
<div class="main_table">
|
||||
<a-table
|
||||
class="ant-table-striped"
|
||||
:row-class-name="
|
||||
(_, index) => (index % 2 === 1 ? 'table-striped' : null)
|
||||
"
|
||||
row-key="id"
|
||||
:columns="columns"
|
||||
:data-source="data"
|
||||
:loading="loading"
|
||||
:pagination="pagination"
|
||||
>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.dataIndex === 'select'">
|
||||
<a
|
||||
:style="{
|
||||
color: formData.taskId == record.id ? '#999' : null,
|
||||
}"
|
||||
@click="confirm(record)"
|
||||
>选择</a
|
||||
>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup lang="jsx">
|
||||
@@ -194,29 +196,42 @@ const closeDrawer = () => {
|
||||
visible.value = false;
|
||||
formData.reset();
|
||||
};
|
||||
|
||||
const spinning = ref(false);
|
||||
async function confirm(record) {
|
||||
dialog({
|
||||
content: "确定选择该评估吗?",
|
||||
ok: async () => {
|
||||
spinning.value = true;
|
||||
if (!formData?.value?.id) {
|
||||
await saveTask({
|
||||
saveTask({
|
||||
growthId: props.growId,
|
||||
taskName: record.assessmentName,
|
||||
taskType: props.type,
|
||||
taskId: record.id,
|
||||
type: props.activeKey,
|
||||
});
|
||||
message.success("添加成功");
|
||||
})
|
||||
.then((res) => {
|
||||
message.success("添加成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
} else {
|
||||
// 编辑
|
||||
formData.value.taskName = record.assessmentName;
|
||||
formData.value.taskId = record.id;
|
||||
await saveTask(formData.value);
|
||||
message.success("编辑成功");
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
message.success("编辑成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -9,26 +9,30 @@
|
||||
title="添加在线"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ selectData.id ? "编辑" : "添加" }}在线</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">
|
||||
{{ selectData.id ? "编辑" : "添加" }}在线
|
||||
</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<iframe
|
||||
id="iframe"
|
||||
style="width: 100%; height: 100%; border: none"
|
||||
:src="`${iframeUrl}/course/manages?f=choose&refId=${
|
||||
props.id
|
||||
}&refType=${14}&courseIds=&projectId=${props.growId}`"
|
||||
name="myframe"
|
||||
security="restricted"
|
||||
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
|
||||
></iframe>
|
||||
</div>
|
||||
<iframe
|
||||
id="iframe"
|
||||
style="width: 100%; height: 100%; border: none"
|
||||
:src="`${iframeUrl}/course/manages?f=choose&refId=${
|
||||
props.id
|
||||
}&refType=${14}&courseIds=&projectId=${props.growId}`"
|
||||
name="myframe"
|
||||
security="restricted"
|
||||
sandbox="allow-forms allow-downloads allow-scripts allow-same-origin allow-popups"
|
||||
></iframe>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup lang="jsx">
|
||||
@@ -50,27 +54,47 @@ const closeDrawer = () => {
|
||||
visible.value = false;
|
||||
selectData.value = {};
|
||||
};
|
||||
const spinning = ref(false);
|
||||
async function confirm(row) {
|
||||
console.log(row);
|
||||
// 新增
|
||||
if (!selectData.value?.id) {
|
||||
await saveTask({
|
||||
growthId: props.growId,
|
||||
taskName: row.name,
|
||||
taskType: props.type,
|
||||
taskId: row.id,
|
||||
type: props.activeKey,
|
||||
});
|
||||
message.success("添加成功");
|
||||
} else {
|
||||
// 编辑
|
||||
selectData.value.taskName = row.name;
|
||||
selectData.value.taskId = row.id;
|
||||
await saveTask(selectData.value);
|
||||
message.success("编辑成功");
|
||||
}
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
|
||||
dialog({
|
||||
content: "确定选择该案例吗?",
|
||||
ok: async () => {
|
||||
// 新增
|
||||
spinning.value = true;
|
||||
if (!selectData.value?.id) {
|
||||
saveTask({
|
||||
growthId: props.growId,
|
||||
taskName: row.name,
|
||||
taskType: props.type,
|
||||
taskId: row.id,
|
||||
type: props.activeKey,
|
||||
})
|
||||
.then((res) => {
|
||||
message.success("添加成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
} else {
|
||||
// 编辑
|
||||
selectData.value.taskName = row.name;
|
||||
selectData.value.taskId = row.id;
|
||||
saveTask(selectData.value)
|
||||
.then((res) => {
|
||||
message.success("编辑成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function selectCourse(row) {
|
||||
|
||||
@@ -10,319 +10,321 @@
|
||||
title="添加直播"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}直播</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<template v-if="step == 1">
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.liveName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入直播名称"
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item" style="margin-top: -10px">
|
||||
<div class="signbox">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播链接:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.liveLink"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入直播链接"
|
||||
:maxlength="100"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="dateTime"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
valueFormat="YYYY-MM-DD HH:mm"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<!-- <div class="sign">-->
|
||||
<!-- <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />-->
|
||||
<!-- </div>-->
|
||||
<span style="margin-right: 3px">持续时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
:placeholder="durationText"
|
||||
v-model:value="formData.info.liveDuration"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">授课老师:</span>
|
||||
</div>
|
||||
<div class="select" style="width: 400px">
|
||||
<ProjectManager
|
||||
v-model:value="formData.info.liveTeacherId"
|
||||
v-model:name="formData.info.liveTeacherName"
|
||||
>
|
||||
</ProjectManager>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items2">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 2px">直播封面:</span>
|
||||
</div>
|
||||
<div class="item_inp" style="background-color: #fff">
|
||||
<a-upload
|
||||
name="avatar"
|
||||
list-type="picture-card"
|
||||
class="avatar-uploader"
|
||||
:show-upload-list="false"
|
||||
:headers="headers"
|
||||
:before-upload="beforeUpload"
|
||||
>
|
||||
<img
|
||||
class="i_upload_img"
|
||||
v-if="imageUrl"
|
||||
:src="imageUrl"
|
||||
alt="avatar"
|
||||
/>
|
||||
<div class="i_upload" v-else>
|
||||
<div class="addimg">
|
||||
<div class="heng"></div>
|
||||
<div class="shu"></div>
|
||||
</div>
|
||||
</div>
|
||||
</a-upload>
|
||||
<div class="i_bottom">
|
||||
<div class="tip">
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>支持图片格式为jpg/jpeg/png 图片最大为2MB</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播公告:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.liveNotice"
|
||||
placeholder="请输入直播公告"
|
||||
allow-clear
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">回放设置:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-switch
|
||||
v-model:checked="formData.info.livePlayback"
|
||||
@change="getchange(formData.livePlayback)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="formData.info.livePlayback">
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}直播</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<template v-if="step == 1">
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">回放链接:</span>
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.livePlaybackLink"
|
||||
v-model:value="formData.info.liveName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入回放链接"
|
||||
placeholder="请输入直播名称"
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item" style="margin-top: -10px">
|
||||
<div class="signbox">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播链接:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.liveLink"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入直播链接"
|
||||
:maxlength="100"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">直播说明:</span>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
v-model:value="dateTime"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
valueFormat="YYYY-MM-DD HH:mm"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.liveExplain"
|
||||
placeholder="请输入直播说明"
|
||||
allow-clear
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<!-- <div class="sign">-->
|
||||
<!-- <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />-->
|
||||
<!-- </div>-->
|
||||
<span style="margin-right: 3px">持续时间:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
:placeholder="durationText"
|
||||
v-model:value="formData.info.liveDuration"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">授课老师:</span>
|
||||
</div>
|
||||
<div class="select" style="width: 400px">
|
||||
<ProjectManager
|
||||
v-model:value="formData.info.liveTeacherId"
|
||||
v-model:name="formData.info.liveTeacherName"
|
||||
>
|
||||
</ProjectManager>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mbl_items2">
|
||||
<div class="item_nam">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 2px">直播封面:</span>
|
||||
</div>
|
||||
<div class="item_inp" style="background-color: #fff">
|
||||
<a-upload
|
||||
name="avatar"
|
||||
list-type="picture-card"
|
||||
class="avatar-uploader"
|
||||
:show-upload-list="false"
|
||||
:headers="headers"
|
||||
:before-upload="beforeUpload"
|
||||
>
|
||||
<img
|
||||
class="i_upload_img"
|
||||
v-if="imageUrl"
|
||||
:src="imageUrl"
|
||||
alt="avatar"
|
||||
/>
|
||||
<div class="i_upload" v-else>
|
||||
<div class="addimg">
|
||||
<div class="heng"></div>
|
||||
<div class="shu"></div>
|
||||
</div>
|
||||
</div>
|
||||
</a-upload>
|
||||
<div class="i_bottom">
|
||||
<div class="tip">
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>支持图片格式为jpg/jpeg/png 图片最大为2MB</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<div class="asterisk_icon">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">直播公告:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.liveNotice"
|
||||
placeholder="请输入直播公告"
|
||||
allow-clear
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">考勤设置:</span>
|
||||
</div>
|
||||
<div class="kqszbox">
|
||||
<div class="qdqtbox">
|
||||
<div class="qdbtn">
|
||||
<div class="btntext">签到</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">回放设置:</span>
|
||||
</div>
|
||||
<div class="setbox">
|
||||
<div class="timerbox">
|
||||
<span>直播开始前:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.beforeSignIn"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>
|
||||
<div class="btnbox">
|
||||
<a-switch
|
||||
v-model:checked="formData.info.livePlayback"
|
||||
@change="getchange(formData.livePlayback)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="formData.info.livePlayback">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">回放链接:</span>
|
||||
</div>
|
||||
<div class="timerbox">
|
||||
<span>直播开始后:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.afterSignIn"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.livePlaybackLink"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入回放链接"
|
||||
:maxlength="100"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">评估:</span>
|
||||
</div>
|
||||
<div class="btnbox2">
|
||||
<a-checkbox
|
||||
v-model:checked="formData.info.isEvaluate"
|
||||
@change="getchanges(formData.info.isEvaluate)"
|
||||
>需要评估
|
||||
</a-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="formData.info.isEvaluate" class="main_item">
|
||||
<div class="signbox"></div>
|
||||
<div class="btnbox">
|
||||
<button class="xkbtn" @click="step = 2">选择评估</button>
|
||||
<div v-if="formData.info.assessmentId">
|
||||
<a-tag closable @close="removePG" color="processing">
|
||||
<span style="font-size: 14px; line-height: 33px">{{
|
||||
formData.info.assessmentName
|
||||
}}</span>
|
||||
</a-tag>
|
||||
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">直播说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.liveExplain"
|
||||
placeholder="请输入直播说明"
|
||||
allow-clear
|
||||
show-count
|
||||
:maxlength="200"
|
||||
:rows="6"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item" style="height: 30px">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px"></span>
|
||||
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">考勤设置:</span>
|
||||
</div>
|
||||
<div class="kqszbox">
|
||||
<div class="qdqtbox">
|
||||
<div class="qdbtn">
|
||||
<div class="btntext">签到</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setbox">
|
||||
<div class="timerbox">
|
||||
<span>直播开始前:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.beforeSignIn"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>
|
||||
</div>
|
||||
<div class="timerbox">
|
||||
<span>直播开始后:</span>
|
||||
<a-input-number
|
||||
:min="0"
|
||||
:max="999999"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="formData.info.afterSignIn"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟允许签到</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">评估:</span>
|
||||
</div>
|
||||
<div class="btnbox2">
|
||||
<a-checkbox
|
||||
v-model:checked="formData.info.isEvaluate"
|
||||
@change="getchanges(formData.info.isEvaluate)"
|
||||
>需要评估
|
||||
</a-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="formData.info.isEvaluate" class="main_item">
|
||||
<div class="signbox"></div>
|
||||
<div class="btnbox">
|
||||
<button class="xkbtn" @click="step = 2">选择评估</button>
|
||||
<div v-if="formData.info.assessmentId">
|
||||
<a-tag closable @close="removePG" color="processing">
|
||||
<span style="font-size: 14px; line-height: 33px">{{
|
||||
formData.info.assessmentName
|
||||
}}</span>
|
||||
</a-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item" style="height: 30px">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px"></span>
|
||||
</div>
|
||||
<div class="btnbox"></div>
|
||||
</div>
|
||||
<div class="btnbox"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="step == 2">
|
||||
<GrowthInvistRoot
|
||||
v-model:id="formData.info.assessmentId"
|
||||
v-model:name="formData.info.assessmentName"
|
||||
@confirm="step = 1"
|
||||
>
|
||||
</GrowthInvistRoot>
|
||||
</template>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="step == 2">
|
||||
<GrowthInvistRoot
|
||||
v-model:id="formData.info.assessmentId"
|
||||
v-model:name="formData.info.assessmentName"
|
||||
@confirm="step = 1"
|
||||
>
|
||||
</GrowthInvistRoot>
|
||||
</template>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -482,6 +484,7 @@ function timeChange(time, timeStr) {
|
||||
const disabledDate = (current) => {
|
||||
return current && current < dayjs().startOf("day");
|
||||
};
|
||||
const spinning = ref(false);
|
||||
async function confirm() {
|
||||
// debugger;
|
||||
console.log("确定按钮:");
|
||||
@@ -505,23 +508,28 @@ async function confirm() {
|
||||
} else {
|
||||
formData.value.duration = formData.value.info.liveDuration;
|
||||
}
|
||||
|
||||
saveTask(formData.value).then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
spinning.value = true;
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
}
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
message.error(res.msg);
|
||||
}
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
function openDrawer(row) {
|
||||
row && (row = JSON.parse(JSON.stringify(row)));
|
||||
row && (formData.value = row);
|
||||
row && (dateTime.value = [row.info.liveStartTime, row.info.liveEndTime]);
|
||||
row && (imageUrl.value = row.info.liveCover);
|
||||
|
||||
@@ -8,101 +8,103 @@
|
||||
width="1300"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div v-if="selectData.id" class="headerTitle">编辑项目</div>
|
||||
<div v-else class="headerTitle">添加项目</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_items">
|
||||
<div class="mi_ipts">
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name"></div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.name"
|
||||
style="width: 210px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入项目名称"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name"></div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.manager"
|
||||
style="width: 210px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入项目经理"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name"></div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.createName"
|
||||
style="width: 210px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入创建人"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mi_btns" style="margin-left: 0px">
|
||||
<div class="btn btn1" @click="search">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">重置</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">刷新</div>
|
||||
</div>
|
||||
</div>
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div v-if="selectData.id" class="headerTitle">编辑项目</div>
|
||||
<div v-else class="headerTitle">添加项目</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_items">
|
||||
<div class="mi_ipts">
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name"></div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.name"
|
||||
style="width: 210px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入项目名称"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name"></div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.manager"
|
||||
style="width: 210px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入项目经理"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mii_ipt">
|
||||
<div class="ipt_name"></div>
|
||||
<div class="fi_input">
|
||||
<a-input
|
||||
v-model:value="params.createName"
|
||||
style="width: 210px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入创建人"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mi_btns" style="margin-left: 0px">
|
||||
<div class="btn btn1" @click="search">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">搜索</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">重置</div>
|
||||
</div>
|
||||
<div class="btn btn2" @click="reset">
|
||||
<div class="search"></div>
|
||||
<div class="btnText">刷新</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main_item">
|
||||
<button class="xkbtn" @click="goProjectmanage">新建项目</button>
|
||||
</div>
|
||||
<div class="main_table">
|
||||
<div class="drawerbox">
|
||||
<a-table
|
||||
class="ant-table-striped"
|
||||
:row-class-name="
|
||||
(_, index) => (index % 2 === 1 ? 'table-striped' : null)
|
||||
"
|
||||
row-key="id"
|
||||
:columns="columns"
|
||||
:data-source="data"
|
||||
:loading="loading"
|
||||
:pagination="pagination"
|
||||
>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.dataIndex === 'select'">
|
||||
<a
|
||||
:style="{
|
||||
color: selectData.taskId == record.id ? '#999' : null,
|
||||
}"
|
||||
@click="confirm(record)"
|
||||
>选择</a
|
||||
>
|
||||
<div class="main_item">
|
||||
<button class="xkbtn" @click="goProjectmanage">新建项目</button>
|
||||
</div>
|
||||
<div class="main_table">
|
||||
<div class="drawerbox">
|
||||
<a-table
|
||||
class="ant-table-striped"
|
||||
:row-class-name="
|
||||
(_, index) => (index % 2 === 1 ? 'table-striped' : null)
|
||||
"
|
||||
row-key="id"
|
||||
:columns="columns"
|
||||
:data-source="data"
|
||||
:loading="loading"
|
||||
:pagination="pagination"
|
||||
>
|
||||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.dataIndex === 'select'">
|
||||
<a
|
||||
:style="{
|
||||
color: selectData.taskId == record.id ? '#999' : null,
|
||||
}"
|
||||
@click="confirm(record)"
|
||||
>选择</a
|
||||
>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup lang="jsx">
|
||||
@@ -235,30 +237,43 @@ const closeDrawer = () => {
|
||||
visible.value = false;
|
||||
reset();
|
||||
};
|
||||
|
||||
const spinning = ref(false);
|
||||
async function confirm(record) {
|
||||
dialog({
|
||||
content: "确定选择该项目吗?",
|
||||
ok: async () => {
|
||||
spinning.value = true;
|
||||
// 新增
|
||||
if (!selectData?.value?.id) {
|
||||
await saveTask({
|
||||
saveTask({
|
||||
growthId: props.growId,
|
||||
taskName: record.name,
|
||||
taskType: props.type,
|
||||
taskId: record.id,
|
||||
type: props.activeKey,
|
||||
});
|
||||
message.success("添加成功");
|
||||
})
|
||||
.then((res) => {
|
||||
message.success("添加成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
} else {
|
||||
// 编辑
|
||||
selectData.value.taskName = record.name;
|
||||
selectData.value.taskId = record.id;
|
||||
await saveTask(selectData.value);
|
||||
message.success("编辑成功");
|
||||
await saveTask(selectData.value)
|
||||
.then((res) => {
|
||||
message.success("编辑成功");
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
closeDrawer();
|
||||
emit("refresh");
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -8,79 +8,81 @@
|
||||
width="1000"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}外链</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ formData.id ? "编辑" : "添加" }}外链</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">外链名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.linkName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入外链名称"
|
||||
show-count
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">外链名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.linkName"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入外链名称"
|
||||
show-count
|
||||
:maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">链接:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.linkAddress"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入链接"
|
||||
show-count
|
||||
:maxlength="100"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">链接:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.linkAddress"
|
||||
style="width: 400px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入链接"
|
||||
show-count
|
||||
:maxlength="100"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">外链说明:</span>
|
||||
</div>
|
||||
<div class="textarea" style="width: 400px">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.linkDescription"
|
||||
placeholder="请输入外链说明"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">外链说明:</span>
|
||||
</div>
|
||||
<div class="textarea" style="width: 400px">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.linkDescription"
|
||||
placeholder="请输入外链说明"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
show-count
|
||||
:maxlength="200"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -135,6 +137,7 @@ const closeDrawer = () => {
|
||||
};
|
||||
};
|
||||
|
||||
const spinning = ref(false);
|
||||
async function confirm() {
|
||||
await validate().catch(({ errorFields }) => {
|
||||
message.warning(errorFields[0].errors.join());
|
||||
@@ -148,22 +151,28 @@ async function confirm() {
|
||||
formData.value.type = props.activeKey;
|
||||
// 任务名称
|
||||
formData.value.taskName = formData.value.info.linkName;
|
||||
saveTask(formData.value).then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
spinning.value = true;
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
message.error(res.msg);
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
closeDrawer();
|
||||
});
|
||||
closeDrawer();
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
function openDrawer(row) {
|
||||
row && (row = JSON.parse(JSON.stringify(row)));
|
||||
row && (formData.value = row);
|
||||
validate = Form.useForm(formData.value.info, rulesRef).validate;
|
||||
visible.value = true;
|
||||
|
||||
@@ -273,7 +273,7 @@ export default {
|
||||
state.fileList = [];
|
||||
state.uploadpercent = -1;
|
||||
message.destroy();
|
||||
message.error(`当前开课暂无作业,无法导入成绩`);
|
||||
// message.error(`当前开课暂无作业,无法导入成绩`);
|
||||
clearInterval(timer);
|
||||
clearTimeout(timeouts);
|
||||
return;
|
||||
|
||||
@@ -9,115 +9,117 @@
|
||||
title="添加投票"
|
||||
placement="right"
|
||||
>
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ title }}</div>
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="drawerMain">
|
||||
<div class="header">
|
||||
<div class="headerTitle">{{ title }}</div>
|
||||
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<template v-if="step == 1">
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
src="../../assets/images/basicinfo/close.png"
|
||||
@click="closeDrawer"
|
||||
/>
|
||||
</div>
|
||||
<template v-if="step == 1">
|
||||
<div class="contentMain">
|
||||
<div class="main_left">
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">任务名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.voteName"
|
||||
style="width: 424px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入投票任务名称"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">任务名称:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-input
|
||||
v-model:value="formData.info.voteName"
|
||||
style="width: 424px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入投票任务名称"
|
||||
maxlength="20"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">起止时间:</span>
|
||||
</div>
|
||||
<div class="select">
|
||||
<a-range-picker
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
style="width: 424px"
|
||||
v-model:value="dateTime"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
<span style="margin-right: 3px">起止时间:</span>
|
||||
</div>
|
||||
<div class="select">
|
||||
<a-range-picker
|
||||
:show-time="{ format: 'HH:mm' }"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
style="width: 424px"
|
||||
v-model:value="dateTime"
|
||||
@change="timeChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
<div class="main_item">
|
||||
<div class="signbox">
|
||||
<div class="sign">
|
||||
<img
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
</div>
|
||||
<span>创建投票题干:</span>
|
||||
</div>
|
||||
<span>创建投票题干:</span>
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<button class="xkbtn" @click="step = 2">
|
||||
{{
|
||||
formData.info.voteStemDtoList.length ? "编辑" : "创建"
|
||||
}}投票题干
|
||||
</button>
|
||||
<div class="btnbox">
|
||||
<button class="xkbtn" @click="step = 2">
|
||||
{{
|
||||
formData.info.voteStemDtoList.length ? "编辑" : "创建"
|
||||
}}投票题干
|
||||
</button>
|
||||
|
||||
<div v-if="formData.info.voteStemDtoList.length">
|
||||
<a-tag closable color="processing" @close="handleDel">
|
||||
<span style="font-size: 14px; line-height: 33px"
|
||||
>删除投票题干</span
|
||||
>
|
||||
</a-tag>
|
||||
<div v-if="formData.info.voteStemDtoList.length">
|
||||
<a-tag closable color="processing" @close="handleDel">
|
||||
<span style="font-size: 14px; line-height: 33px"
|
||||
>删除投票题干</span
|
||||
>
|
||||
</a-tag>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">投票说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.voteExplain"
|
||||
placeholder="请输入投票说明"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
maxlength="150"
|
||||
/>
|
||||
<div class="main_item2">
|
||||
<div class="signbox">
|
||||
<span style="margin-right: 3px">投票说明:</span>
|
||||
</div>
|
||||
<div class="textarea">
|
||||
<a-textarea
|
||||
v-model:value="formData.info.voteExplain"
|
||||
placeholder="请输入投票说明"
|
||||
allow-clear
|
||||
:rows="6"
|
||||
maxlength="150"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="step == 2">
|
||||
<CreateVote
|
||||
v-model:options="formData.info.voteStemDtoList"
|
||||
@close="step = 1"
|
||||
@confirm="step = 1"
|
||||
>
|
||||
</CreateVote>
|
||||
</template>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="confirm">确定</button>
|
||||
</div>
|
||||
</template>
|
||||
<template v-if="step == 2">
|
||||
<CreateVote
|
||||
v-model:options="formData.info.voteStemDtoList"
|
||||
@close="step = 1"
|
||||
@confirm="step = 1"
|
||||
>
|
||||
</CreateVote>
|
||||
</template>
|
||||
</div>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script setup>
|
||||
@@ -210,7 +212,7 @@ function timeChange(time, timeStr) {
|
||||
const disabledDate = (current) => {
|
||||
return current && current < dayjs().startOf("day");
|
||||
};
|
||||
|
||||
const spinning = ref(false);
|
||||
async function confirm() {
|
||||
await validate().catch(({ errorFields }) => {
|
||||
message.warning(errorFields[0].errors.join());
|
||||
@@ -228,22 +230,28 @@ async function confirm() {
|
||||
formData.value.type = props.activeKey;
|
||||
// 任务名称
|
||||
formData.value.taskName = formData.value.info.voteName;
|
||||
saveTask(formData.value).then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
spinning.value = true;
|
||||
saveTask(formData.value)
|
||||
.then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
if (formData.value.id) {
|
||||
message.success("编辑成功");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.success("添加成功");
|
||||
message.error(res.msg);
|
||||
}
|
||||
emit("refresh");
|
||||
} else {
|
||||
message.error(res.msg);
|
||||
}
|
||||
closeDrawer();
|
||||
});
|
||||
closeDrawer();
|
||||
})
|
||||
.finally(() => {
|
||||
spinning.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
function openDrawer(row) {
|
||||
row && (row = JSON.parse(JSON.stringify(row)));
|
||||
row && (formData.value = row);
|
||||
row &&
|
||||
(dateTime.value = [
|
||||
|
||||
@@ -276,7 +276,6 @@
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 查看学员 传入查看学员的id-->
|
||||
<see-stu :permissions="permissions" ref="seeStuRef" />
|
||||
|
||||
@@ -294,6 +293,7 @@
|
||||
:growthId="growId"
|
||||
@confirm="confirmDrawer"
|
||||
@close="closeDrawer"
|
||||
:autoClose="false"
|
||||
></GrowthCommonStudent>
|
||||
</GrowthDrawer>
|
||||
</template>
|
||||
@@ -704,7 +704,7 @@ function closeDrawer() {
|
||||
GrowthDrawerRef.value.closeDrawer();
|
||||
}
|
||||
function confirmDrawer(selectList) {
|
||||
closeDrawer();
|
||||
GrowthDrawerRef.value.spinning = true
|
||||
tableData.value.loading = true;
|
||||
addLearners({
|
||||
growthId: props.id,
|
||||
@@ -712,11 +712,14 @@ function confirmDrawer(selectList) {
|
||||
})
|
||||
.then((res) => {
|
||||
tableData.value.loading = false;
|
||||
GrowthDrawerRef.value.spinning = false
|
||||
message.success("添加成功");
|
||||
closeDrawer();
|
||||
getStuList();
|
||||
})
|
||||
.catch((err) => {
|
||||
tableData.value.loading = false;
|
||||
GrowthDrawerRef.value.spinning = false
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -14,20 +14,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="rightt">
|
||||
<router-link
|
||||
:to="{
|
||||
path: '/pathmanage',
|
||||
query: { id: growId, routerEdit: true, pre: pre },
|
||||
}"
|
||||
>
|
||||
<div style="display: flex">
|
||||
<img
|
||||
class="img2"
|
||||
src="../../assets/images/leveladd/back.png"
|
||||
/>
|
||||
<div class="return">返回</div>
|
||||
</div>
|
||||
</router-link>
|
||||
<div style="display: flex" @click="goBack">
|
||||
<img
|
||||
class="img2"
|
||||
src="../../assets/images/leveladd/back.png"
|
||||
/>
|
||||
<div class="return">返回</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -230,7 +223,10 @@
|
||||
</template>
|
||||
<template v-else>
|
||||
<span
|
||||
v-if="element.status == '1' && checkMenu('growthTaskWithdraw')"
|
||||
v-if="
|
||||
element.status == '1' &&
|
||||
checkMenu('growthTaskWithdraw')
|
||||
"
|
||||
style="color: #4ea6ff; cursor: pointer"
|
||||
@click="withdraw(element, index)"
|
||||
>
|
||||
@@ -302,6 +298,7 @@ import {
|
||||
withdrawTask,
|
||||
deleteTask,
|
||||
} from "@/api/growthpath";
|
||||
import router from "@/router";
|
||||
const {
|
||||
query: { growId, pre, name },
|
||||
} = useRoute();
|
||||
@@ -400,7 +397,10 @@ const getBasicInfoData = () => {
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// 返回
|
||||
const goBack = () => {
|
||||
router.go(-1);
|
||||
};
|
||||
// 发布
|
||||
const published = (element) => {
|
||||
// if(basicData.value.isPublished){
|
||||
|
||||
@@ -757,9 +757,6 @@ export default {
|
||||
listDatas();
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error(err.data.msg);
|
||||
});
|
||||
} else {
|
||||
saveGrowth(params)
|
||||
.then((res) => {
|
||||
@@ -769,9 +766,6 @@ export default {
|
||||
listDatas();
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error(err.data.msg);
|
||||
});
|
||||
}
|
||||
};
|
||||
const of_exit = () => {
|
||||
|
||||
@@ -578,6 +578,8 @@
|
||||
:id="routerId"
|
||||
:growId="routerId"
|
||||
:visable="tabFlag"
|
||||
@loading="spinning = true"
|
||||
@closeLoading="spinning = false"
|
||||
:permissions="preId"
|
||||
>
|
||||
<template #extension="{ data: { record } }">
|
||||
|
||||
@@ -18,16 +18,16 @@ module.exports = defineConfig({
|
||||
overlay: false,// 解决代码抛出异常
|
||||
},
|
||||
proxy: {
|
||||
"/professional": {
|
||||
target: 'http://192.168.31.211:32002',
|
||||
// target: 'http://192.168.50.195:32002',
|
||||
// target: 'http://192.168.86.195:32002',
|
||||
changeOrigin: true,
|
||||
},
|
||||
// "/growth": {
|
||||
// target: 'https:' + process.env.VUE_APP_BOE_API_URL,
|
||||
// "/professional": {
|
||||
// target: 'http://192.168.31.211:32002',
|
||||
// // target: 'http://192.168.50.195:32002',
|
||||
// // target: 'http://192.168.86.195:32002',
|
||||
// changeOrigin: true,
|
||||
// },
|
||||
"/growth": {
|
||||
target: 'https:' + process.env.VUE_APP_BOE_API_URL,
|
||||
changeOrigin: true,
|
||||
},
|
||||
"/manageApi": {
|
||||
target: 'https:' + process.env.VUE_APP_PROXY_URL,
|
||||
changeOrigin: true, //表示是否改变原域名
|
||||
|
||||
Reference in New Issue
Block a user