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