Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
yuping
2022-12-20 13:28:55 +08:00
8 changed files with 3090 additions and 2908 deletions

View File

@@ -1,30 +1,18 @@
<template>
<a-drawer
:visible="addinvistVisible"
class="drawerStyle addinvistDrawer"
width="70%"
title="添加评估"
placement="right"
@after-visible-change="afterVisibleChange"
>
<a-drawer :visible="addinvistVisible" class="drawerStyle addinvistDrawer" width="70%" title="添加评估" placement="right"
@after-visible-change="afterVisibleChange">
<div class="drawerMain">
<div class="header">
<div v-if="edit" class="headerTitle">编辑评估</div>
<div v-else class="headerTitle">添加评估</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" />
</div>
<div class="contentMain">
<div class="main">
<div class="main_left">
<AssessmentAll
v-model:assessmentVisible="assessmentVisible"
v-model:assessmentId="assessmentId"
v-model:assessmentName="assessmentName"
/>
<AssessmentAll v-model:assessmentVisible="assessmentVisible" v-model:assessmentId="assessmentId"
v-model:assessmentName="assessmentName" />
</div>
</div>
</div>
@@ -264,7 +252,7 @@ export default {
IsExistenceProjectTemplate({
courseTaskId: l_data_id,
projectTemplateId: props.projectTemplateId,
stageId: props.chooseStageId || 0,
templateStageId: props.chooseStageId || 0,
type: 11,
}).then((res) => {
console.log(res);
@@ -320,6 +308,7 @@ export default {
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
}
.addinvistDrawer {
.drawerMain {
.header {
@@ -328,6 +317,7 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
.headerTitle {
font-size: 18px;
font-weight: 600;
@@ -336,12 +326,15 @@ export default {
margin-left: 24px;
}
}
.contentMain {
.main {
width: 100%;
.main_left {
padding-right: 30px;
margin-top: 32px;
.main_item {
display: flex;
align-items: center;
@@ -349,6 +342,7 @@ export default {
.fi_input {
margin-right: 20px;
}
.btns {
margin-right: 20px;
padding: 0px 26px 0px 26px;
@@ -362,12 +356,14 @@ export default {
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.search {
width: 15px;
height: 17px;
background-image: url("../../assets/images/courseManage/search0.png");
background-size: 100% 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
@@ -376,6 +372,7 @@ export default {
margin-left: 5px;
}
}
.btnsn {
padding: 0px 26px 0px 26px;
height: 38px;
@@ -388,12 +385,14 @@ export default {
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.search {
width: 16px;
height: 18px;
background-image: url("../../assets/images/courseManage/reset1.png");
background-size: 100% 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
@@ -403,6 +402,7 @@ export default {
}
}
}
.main_notice {
display: flex;
justify-content: space-between;
@@ -410,16 +410,20 @@ export default {
margin-bottom: 3px;
height: 40px;
background-color: #e9f6fe;
.mntc_left {
display: flex;
align-items: center;
.title {
color: rgba(0, 0, 0, 0.65);
margin-right: 17px;
}
.data {
color: #4ea6ff;
}
.notice_icon {
width: 14px;
height: 14px;
@@ -429,6 +433,7 @@ export default {
background-size: 100% 100%;
}
}
.mntc_right {
cursor: pointer;
}
@@ -447,6 +452,7 @@ export default {
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
@@ -456,6 +462,7 @@ export default {
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;

View File

@@ -1,21 +1,12 @@
<template>
<a-drawer
:visible="addonlineVisible"
class="drawerStyle addonlineDrawer"
width="80%"
title="添加在线"
placement="right"
@after-visible-change="afterVisibleChange"
>
<a-drawer :visible="addonlineVisible" class="drawerStyle addonlineDrawer" width="80%" title="添加在线" placement="right"
@after-visible-change="afterVisibleChange">
<div class="drawerMain">
<div class="header">
<div v-if="edit" class="headerTitle">编辑在线</div>
<div v-else class="headerTitle">添加在线</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer"
/>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer" />
</div>
<div class="contentMain">
<div class="main_items">
@@ -23,17 +14,12 @@
<div class="mii_ipt">
<div class="ipt_name"></div>
<div class="fi_input">
<a-input
v-model:value="inputV1"
style="
<a-input v-model:value="inputV1" style="
width: 280px;
height: 40px;
border-radius: 8px;
padding-right: 49px;
"
placeholder="请输入课程名称"
maxlength="20"
/>
" placeholder="请输入课程名称" maxlength="20" />
<div class="inp_num" style="position: absolute; right: 7px">
<span style="color: #c7cbd2">
@@ -93,37 +79,23 @@
<!-- 编辑的表格 -->
<div>
<div>
<a-table
class="ant-table-striped"
:row-class-name="
<a-table class="ant-table-striped" :row-class-name="
(_record, index) => (index % 2 === 1 ? 'table-striped' : null)
"
:row-selection="{
" :row-selection="{
type: 'radio',
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
:columns="tableDataFunc()"
:data-source="tableData"
:loading="tableDataTotal === -1 ? true : false"
:pagination="false"
/>
}" :columns="tableDataFunc()" :data-source="tableData" :loading="tableDataTotal === -1 ? true : false"
:pagination="false" />
<div class="tableBox" style="margin-top:85px;">
<div class="pa">
<a-pagination
v-if="tableDataTotal > 10"
:showSizeChanger="false"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
:current="currentPage"
:total="tableDataTotal"
class="pagination"
@change="handelChangePage"
/>
<a-pagination v-if="tableDataTotal > 10" :showSizeChanger="false" showQuickJumper="true"
hideOnSinglePage="true" :pageSize="pageSize" :current="currentPage" :total="tableDataTotal"
class="pagination" @change="handelChangePage" />
</div>
</div>
</div>
</div>
</div></div>
<!-- <div v-else>
<a-table
class="ant-table-striped"
@@ -607,7 +579,7 @@ export default {
IsExistenceProjectTemplate({
courseTaskId: p_data_id,
projectTemplateId: props.projectTemplateId,
stageId: props.chooseStageId || 0,
templateStageId: props.chooseStageId || 0,
type: 1,
}).then((res) => {
console.log("项目中是否包含此在线课了", res);
@@ -700,6 +672,7 @@ export default {
.ant-table-striped :deep(.table-striped) td {
background-color: #fafafa !important;
}
.addonlineDrawer {
.drawerMain {
.header {
@@ -709,6 +682,7 @@ export default {
justify-content: space-between;
align-items: center;
flex-shrink: 0;
.headerTitle {
font-size: 18px;
font-weight: 600;
@@ -717,31 +691,38 @@ export default {
margin-left: 24px;
}
}
.contentMain {
padding-right: 12px;
.main_items {
display: flex;
margin-top: 32px;
margin-bottom: 12px;
flex-wrap: wrap;
.mi_ipts {
display: flex;
margin-bottom: 20px;
.mii_ipt {
display: flex;
align-items: center;
margin-right: 24px;
.ipt_name {
white-space: nowrap;
}
}
}
.mi_btns {
display: flex;
margin-left: 38px;
margin-bottom: 20px;
cursor: pointer;
.btn {
padding: 0px 26px 0px 26px;
height: 38px;
@@ -752,9 +733,11 @@ export default {
justify-content: center;
margin-left: 14px;
flex-shrink: 0;
.search {
background-size: 100%;
}
.btnText {
font-size: 14px;
font-weight: 400;
@@ -762,48 +745,61 @@ export default {
margin-left: 5px;
}
}
.btn1 {
background: rgb(64, 158, 255);
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/coursewareManage/search0.png");
}
.btnText {
color: rgb(255, 255, 255);
}
}
.btn2 {
background: rgb(255, 255, 255);
.search {
width: 15px;
height: 17px;
background-image: url("@/assets/images/coursewareManage/reset1.png");
}
.btnText {
color: rgb(64, 158, 255);
}
}
.btn1:hover {
background: rgb(255, 255, 255);
.search {
background-image: url("@/assets/images/courseManage/search1.png");
}
.btnText {
color: #4ea6ff;
}
}
.btn2:hover {
background: rgba(64, 158, 255, 1);
.search {
background-image: url("@/assets/images/courseManage/reset0.png");
}
.btnText {
color: #ffffff;
}
}
}
}
.main_notice {
display: flex;
justify-content: space-between;
@@ -811,9 +807,11 @@ export default {
margin-bottom: 3px;
height: 40px;
background-color: #e9f6fe;
.mntc_left {
display: flex;
align-items: center;
.notice_icon {
width: 14px;
height: 14px;
@@ -823,32 +821,38 @@ export default {
background-size: 100% 100%;
}
}
.mntc_right {
cursor: pointer;
}
}
.main_table {
position: relative;
padding-bottom: 80px;
.ant-checkbox-wrapper {
align-items: center;
margin-top: -2px;
}
.ant-table-selection-column {
padding: 0px !important;
padding-left: 5px !important;
}
.ant-table-thead>tr>th {
background-color: rgba(239, 244, 252, 1);
}
th.h {
background-color: #eff4fc !important;
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td {
background: #f6f9fd;
}
.pa {
left: 0;
width: 100%;
@@ -859,6 +863,7 @@ export default {
}
}
}
.main_btns {
height: 72px;
width: 100%;
@@ -868,6 +873,7 @@ export default {
align-items: center;
justify-content: center;
box-shadow: 0px 1px 35px 0px rgba(118, 136, 166, 0.16);
.btn1 {
width: 100px;
height: 40px;
@@ -877,6 +883,7 @@ export default {
background-color: #fff;
cursor: pointer;
}
.btn2 {
cursor: pointer;
width: 100px;

View File

@@ -1,19 +1,11 @@
<template>
<a-drawer
:visible="addtestVisible"
class="drawerStyle addtestDrawer"
width="80%"
placement="right"
@after-visible-change="afterVisibleChange"
>
<a-drawer :visible="addtestVisible" class="drawerStyle addtestDrawer" width="80%" placement="right"
@after-visible-change="afterVisibleChange">
<div class="drawerMain">
<div class="header">
<div class="headerTitle">{{ edit ? "编辑" : "添加" }}考试</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
src="../../assets/images/basicinfo/close.png"
@click="closeDrawer2"
/>
<img style="width: 29px; height: 29px; cursor: pointer" src="../../assets/images/basicinfo/close.png"
@click="closeDrawer2" />
</div>
<!-- 2022-11-30注释 后面放开 修改div的padding-topL:32 -->
<div style="display: flex; flex-direction: row; padding-top: 0px">
@@ -39,30 +31,20 @@
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
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="test.examinationName"
style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入考试名称"
:maxlength="20"
/>
<a-input v-model:value="test.examinationName" style="width: 400px; height: 40px; border-radius: 8px"
placeholder="请输入考试名称" :maxlength="20" />
</div>
</div>
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
</div>
<span style="margin-right: 3px">选择试卷</span>
</div>
@@ -80,11 +62,8 @@
</div>
<!-- 选择面授侧弹窗 -->
<div>
<sel-facet
v-model:selfacetVisible="selfacetvisible"
v-model:chooseCourse="chooseCourse"
v-model:chooseCourseName="chooseCourseName"
/>
<sel-facet v-model:selfacetVisible="selfacetvisible" v-model:chooseCourse="chooseCourse"
v-model:chooseCourseName="chooseCourseName" />
</div>
<!-- 选择面授侧弹窗 -->
</div>
@@ -92,41 +71,25 @@
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
</div>
<span style="margin-right: 3px">考试时间</span>
</div>
<div class="btnbox">
<a-range-picker
style="width: 400px; height: 40px; border-radius: 8px"
show-time
format="YYYY/MM/DD HH:mm"
v-model:value="test.chooseTime"
:placeholder="[' 开始时间', ' 结束时间']"
/>
<a-range-picker style="width: 400px; height: 40px; border-radius: 8px" show-time format="YYYY/MM/DD HH:mm"
v-model:value="test.chooseTime" :placeholder="[' 开始时间', ' 结束时间']" />
</div>
</div>
<div class="main_item">
<div class="signbox">
<div class="sign">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
</div>
<span style="margin-right: 3px">考试时长</span>
</div>
<div class="select">
<a-input-number
:min="0"
:max="300"
:precision="0"
style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="test.examinationDuration"
></a-input-number>
<a-input-number :min="0" :max="300" :precision="0" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="test.examinationDuration"></a-input-number>
<span style="color: #999999; margin-left: 8px">分钟</span>
</div>
</div>
@@ -135,14 +98,8 @@
<span style="margin-right: 3px">考试说明</span>
</div>
<div class="textarea">
<a-textarea
v-model:value="test.examinationExplain"
placeholder="请输入考试说明"
allow-clear
show-count
:maxlength="200"
:rows="6"
/>
<a-textarea v-model:value="test.examinationExplain" placeholder="请输入考试说明" allow-clear show-count
:maxlength="200" :rows="6" />
</div>
</div>
<div class="main_item2">
@@ -153,21 +110,13 @@
<div class="setbox">
<div class="timerbox">
<span>允许重复考试</span>
<a-input-number
:min="-1"
:max="300"
:precision="0"
style="
<a-input-number :min="-1" :max="300" :precision="0" style="
width: 100px;
height: 32px;
border-radius: 8px;
overflow: hidden;
"
v-model:value="test.examinationLimit"
></a-input-number>
<span style="color: #999999; margin-left: 8px"
>,-1表示无限制</span
>
" v-model:value="test.examinationLimit"></a-input-number>
<span style="color: #999999; margin-left: 8px">,-1表示无限制</span>
</div>
</div>
</div>
@@ -178,15 +127,10 @@
<span style="margin-right: 3px">显示答案</span>
</div>
<div class="btnbox">
<a-radio-group
style="margin-right: 12px"
v-model:value="test.showAnswers"
>
<a-radio v-model:checked="checked" :value="1" @click="cloradio1"
>允许查看
<a-radio-group style="margin-right: 12px" v-model:value="test.showAnswers">
<a-radio v-model:checked="checked" :value="1" @click="cloradio1">允许查看
</a-radio>
<a-radio v-model:checked="checked" :value="2" @click="cloradio1"
>不允许查看
<a-radio v-model:checked="checked" :value="2" @click="cloradio1">不允许查看
</a-radio>
</a-radio-group>
</div>
@@ -196,15 +140,10 @@
<span style="margin-right: 3px">显示解析</span>
</div>
<div class="btnbox">
<a-radio-group
style="margin-right: 12px"
v-model:value="test.showAnalysis"
>
<a-radio v-model:checked="checked" :value="1" @click="cloradio2"
>允许查看
<a-radio-group style="margin-right: 12px" v-model:value="test.showAnalysis">
<a-radio v-model:checked="checked" :value="1" @click="cloradio2">允许查看
</a-radio>
<a-radio v-model:checked="checked" :value="2" @click="cloradio2"
>不允许查看
<a-radio v-model:checked="checked" :value="2" @click="cloradio2">不允许查看
</a-radio>
</a-radio-group>
</div>
@@ -214,15 +153,10 @@
<span style="margin-right: 3px">评分模式</span>
</div>
<div class="btnbox">
<a-radio-group
style="margin-right: 12px"
v-model:value="test.scoringModel"
>
<a-radio v-model:checked="checked" :value="1" @click="cloradio3"
>最高一次
<a-radio-group style="margin-right: 12px" v-model:value="test.scoringModel">
<a-radio v-model:checked="checked" :value="1" @click="cloradio3">最高一次
</a-radio>
<a-radio v-model:checked="checked" :value="2" @click="cloradio3"
>最后一次
<a-radio v-model:checked="checked" :value="2" @click="cloradio3">最后一次
</a-radio>
</a-radio-group>
</div>
@@ -232,11 +166,8 @@
<span style="margin-right: 3px">及格线</span>
</div>
<div class="btnbox">
<a-input
v-model:value="test.passLine"
type="number"
style="width: 400px; height: 40px; border-radius: 8px"
/>
<a-input v-model:value="test.passLine" type="number"
style="width: 400px; height: 40px; border-radius: 8px" />
<span style="color: #999999; margin-left: 8px"></span>
</div>
@@ -247,33 +178,14 @@
<span style="margin-right: 3px">试题排列</span>
</div>
<div class="btnbox">
<a-radio-group
style="margin-right: 12px"
v-model:value="test.questionArrangement"
>
<a-radio
v-model:checked="checked"
:value="1"
@click="cloradio4"
>试题乱序
<a-radio-group style="margin-right: 12px" v-model:value="test.questionArrangement">
<a-radio v-model:checked="checked" :value="1" @click="cloradio4">试题乱序
</a-radio>
<a-radio
v-model:checked="checked"
:value="2"
@click="cloradio4"
>选项乱序
<a-radio v-model:checked="checked" :value="2" @click="cloradio4">选项乱序
</a-radio>
<a-radio
v-model:checked="checked"
:value="3"
@click="cloradio4"
>全部乱序
<a-radio v-model:checked="checked" :value="3" @click="cloradio4">全部乱序
</a-radio>
<a-radio
v-model:checked="checked"
:value="4"
@click="cloradio4"
>不乱序
<a-radio v-model:checked="checked" :value="4" @click="cloradio4">不乱序
</a-radio>
</a-radio-group>
</div>
@@ -415,6 +327,7 @@ export default {
clearAll();
};
const closeDrawer2 = () => {
state.paperName = "";
state.statechoosedTime = "";
ctx.emit("update:edit", false);
ctx.emit("update:addtestVisible", false);
@@ -522,7 +435,7 @@ export default {
state.EditTestId = res.data.data.examinationId;
if (props.faceLevel) {
state.EditTestId = res.data.data.examinationId;
state.paperName = "";
closeDrawer();
} else {
if (props.isLevel == 1) {
@@ -544,7 +457,7 @@ export default {
console.log("props.edit", props.edit);
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
state.paperName = "";
closeDrawer();
})
.catch(() => {
@@ -565,6 +478,7 @@ export default {
.then(() => {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
state.paperName = "";
closeDrawer();
})
.catch(() => {
@@ -583,6 +497,7 @@ export default {
.then(() => {
message.success(`${props.edit ? "编辑" : "新增"}任务成功`);
ctx.emit("changeData", false);
state.paperName = "";
closeDrawer();
})
.catch(() => {
@@ -826,28 +741,33 @@ export default {
}
}
}
.main_table {
position: relative;
padding-bottom: 80px;
.ant-checkbox-wrapper {
align-items: center;
margin-top: -2px;
}
.ant-table-selection-column {
padding: 0px !important;
padding-left: 5px !important;
}
.ant-table-thead>tr>th {
background-color: rgba(239, 244, 252, 1);
}
th.h {
background-color: #eff4fc !important;
}
.ant-table-tbody
> tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)
> td {
.ant-table-tbody>tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected)>td {
background: #f6f9fd;
}
.pa {
left: 0;
width: 100%;
@@ -857,6 +777,7 @@ export default {
bottom: 20px;
}
}
.main_btns {
height: 72px;
width: 100%;

View File

@@ -1,10 +1,12 @@
<!-- eslint-disable vue/no-parsing-error -->
<!-- eslint-disable vue/require-v-for-key -->
<template>
<div>
<a-drawer
:visible="visiable"
class="drawerStyle ProjCheckship"
placement="right"
width="55%"
width="60%"
>
<div class="drawerMain" id="ProjCheckship">
<div class="header">
@@ -18,7 +20,7 @@
/>
</div>
<div style="width:100%;display: grid;grid-template-columns: 750px auto;">
<div class="tabs">
<div class="tabs" style="min-height:800px;" >
<a-tabs v-model:activeKey="activeKey">
<a-tab-pane :key="1" tab="快速选人">
<div :style="{ height: screenHeight - 235 + 'px' }">
@@ -39,7 +41,8 @@
</a-form-item>
</div>
<div class="chooseLeft" style="display: grid;grid-template-columns: 250px auto">
<div :style="{ height: screenHeight - 235 + 'px' ,overflowY:'auto'}">
<div :style="{ height: screenHeight - 180 + 'px' ,overflowY:'auto'}" style="border: 1px solid #f0f0f0; ;">
<div class="tree" style="margin: 10px 4px 220px 10px;">
<a-tree
allow-clear
tree-default-expand-all
@@ -54,7 +57,8 @@
>
</a-tree>
</div>
<div class="tableBox tabb">
</div>
<div class="tableBox tabb" style="margin: 0px 4px 120px 10px; border: 1px solid #f0f0f0;">
<a-table
:columns="stuColumns"
:data-source="stuData"
@@ -140,13 +144,108 @@
</a-tab-pane>
</a-tabs>
</div>
<div style="padding:100px 0 0 20px;display: grid;grid-template-rows: auto auto auto;">
<div class="right1">
<div class="onerow">
<div class="onleft">
<div class="already">已选</div>
</div>
</div>
<div
class="selecteds"
:style="{ 'max-height': screenHeight - 235 + 'px' }"
style="overflow-y: auto"
>
<div class="person">快速选人</div>
<div v-for="(item,i) in selectsData.studentList" >
<div v-if="i<11">
<div class="chose">
{{ item.realName }}
<div class="ch" @click="stuDel(i)"></div>
</div>
</div>
<div v-else>
<div v-if ="person">
<div class="chose">
{{ item.realName }}
<div class="ch" @click="stuDel(i)"></div>
</div>
</div>
</div>
</div>
<div v-if="!person && selectsData.studentList.length >10" class="ifsw"><div @click="person = !person" class=sw>查看更多></div></div>
<div v-if="person && selectsData.studentList.length >10" class="ifsw" ><div @click="person = !person" class="sw"> 收起&lt; </div></div>
<!--组织-->
<div class="dept">添加组织</div>
<div v-for="(item,i) in selectsData.deptList" >
<div v-if="i<11">
<div class="chose1">
<div class="span"> {{ item.name }}</div>
<div class="ch1" @click="orgDel(i)"></div>
</div>
</div>
<div v-else>
<div v-if ="dept">
<div class="chose1">
<div class="span"> {{ item.name }}</div>
<div class="ch1" @click="orgDel(i)"></div>
</div>
</div>
</div>
</div>
<div v-if="!dept && selectsData.deptList.length >10" class="ifsw"><div @click="dept = !dept" class=sw>查看更多></div></div>
<div v-if="dept && selectsData.deptList.length >10" class="ifsw" ><div @click="dept = !dept" class="sw"> 收起&lt; </div></div>
<!--受众-->
<div class="group">受众关联</div>
<div v-for="(item,i) in selectsData.groupList" >
<div v-if="i<11">
<div class="chose2">
<div class="span"> {{ item.audienceName }}</div>
<div class="ch2" @click="AuditDel(i)"></div>
</div>
</div>
<div v-else>
<div v-if ="group">
<div class="chose2">
<div class="span"> {{ item.audienceName }}</div>
<div class="ch2" @click="AuditDel(i)"></div>
</div>
</div>
</div>
</div>
<div v-if="!group && selectsData.groupList.length >10" class="ifsw"><div @click="group = !group" class=sw>查看更多></div></div>
<div v-if="group && selectsData.groupList >10" class="ifsw" ><div @click="group = !group" class="sw"> 收起&lt; </div></div>
</div>
</div>
<!-- <div style="padding:100px 0 0 20px;display: grid;grid-template-rows: auto auto auto;">
<div>
<div style="margin-top: 20px">快速选人</div>
<a-tag :closable="true" color="#4ea6ff" @close="stuDel(i)" v-for="(item,i) in selectsData.studentList"
// eslint-disable-next-line vue/require-v-for-key
<div v-for="(item,i) in selectsData.studentList" >
<a-tag v-if="i < 10" :closable="true" color="#4ea6ff" @close="stuDel(i)"
:key="i" style="margin-top:20px">
{{ item.realName }}
</a-tag>
<a-tag v-else :closable="true" color="#4ea6ff" @close="stuDel(i)"
style="margin-top:20px">
{{ item.realName }}
</a-tag>
<div></div>
</div>
</div>
<div>
<div style="margin-top: 20px">组织添加</div>
@@ -163,7 +262,7 @@
{{ item.audienceName }}
</a-tag>
</div>
</div>
</div>-->
</div>
<div class="btnn">
<button class="btn1" @click="closeDrawer">取消</button>
@@ -205,6 +304,9 @@ const props = defineProps({
default: () => []
}
})
const person =ref(false)
const dept =ref(false)
const group =ref(false)
const visiable = ref(false)
const activeKey = ref(1)
const stageVisible = ref(false)
@@ -404,12 +506,17 @@ function stuDel(i) {
selectsData.value.studentList.splice(i, 1)
}
function orgDel(i) {
orgSelectKeys.value = orgSelectKeys.value.filter(e => e !== selectsData.value.deptList[i].id)
selectsData.value.deptList.splice(i, 1)
}
function AuditDel(i) {
auditSelectKeys.value = auditSelectKeys.value.filter(e => e !== selectsData.value.groupList[i].id)
selectsData.value.groupList.splice(i, 1)
}
//
// function orgSelect(key, obj) {
// console.log(obj)
//request(ORG_CHILD_LIST, {orgId: null}).then(res => {
@@ -516,7 +623,7 @@ watch(visiable, () => {
})
</script>
<style>
<style lang="scss">
.ant-btn-primary {
background-color: #4ea6ff !important;
}
@@ -525,4 +632,196 @@ watch(visiable, () => {
height: 40px;
border-radius: 8px;
}
.tableBox .ant-table-row .ant-table-cell {
height: 48px;
font-size: 12px;
font-weight: 400;
color: #4F5156;
line-height: 29px;
padding: 0px;
}
.tableBox .ant-table-thead tr th {
font-size: 12px;
}
.ant-tabs-tabpane{
height: 100%;
}
.ant-tabs{
overflow:visible;
}
.right1 {
border-left: 1px solid #f2f6fe;
width: 100%;
margin-left: 20px;
.onerow {
display: flex;
justify-content: space-between;
align-items: center;
margin-right: 40px;
flex-wrap: wrap;
width: 100%;
.onleft {
display: flex;
text-align: center;
.already {
color: rgba(51, 51, 51, 1);
font-size: 16px;
font-weight: 500;
margin-left: 32px;
white-space: nowrap;
// margin-bottom: 20px;
}
.count {
color: #4ea6ff;
font-size: 16px;
margin: 0 6px;
}
.peo {
color: rgba(51, 51, 51, 1);
font-size: 16px;
font-weight: 500;
}
}
.clbox {
margin-right: 50px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
width: 104px;
height: 32px;
border-radius: 4px;
background: #4ea6ff;
.colose {
width: 16px;
height: 16px;
// border-radius: 8px;
// background: #ffffff;
// position: relative;
background-image: url(../../assets/images/basicinfo/ch.png);
background-size: 100%;
margin-right: 4px;
}
.allclear {
color: rgba(255, 255, 255, 1);
font-size: 14px;
}
}
}
.selecteds {
display: flex;
flex-wrap: wrap;
margin-left: 32px;
.person{
width:100%;
margin-top: 20px;
border-top: 1px solid #f2f6fe;
}
.chose {
width: 64px;
height: 24px;
margin-top: 25px;
margin-right: 25px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 2px;
border: 1px solid rgba(56, 139, 225, 1);
color: rgba(56, 139, 225, 1);
font-size: 12px;
position: relative;
.ch {
position: absolute;
width: 18px;
height: 18px;
background-image: url(../../assets/images/basicinfo/ch.png);
right: -8px;
top: -8px;
}
}
.ifsw{
display:flex;
align-items:end;
justify-content: center;
color:#4ea6ff;
}
.sw{
display:flex;
align-items:center;
justify-content: center;
text-align: justify;
color:#4ea6ff;
margin-top: 23px;
margin-left:10px;
}
.dept{
width:100%;
margin-top: 30px;
border-top: 1px solid #f2f6fe;
}
.chose1 {
//width: 90px;
height: 24px;
margin-top: 25px;
margin-right: 25px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 2px;
border: 1px solid rgba(56, 139, 225, 1);
color: rgba(56, 139, 225, 1);
font-size: 12px;
position: relative;
.span{
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
.ch1 {
position: absolute;
width: 18px;
height: 18px;
background-image: url(../../assets/images/basicinfo/ch.png);
right: -8px;
top: -8px;
}
}
.group{
width:100%;
margin-top: 30px;
border-top: 1px solid #f2f6fe;
}
.chose2 {
//width: 120px;
height: 24px;
margin-top: 25px;
margin-right: 25px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 2px;
border: 1px solid rgba(56, 139, 225, 1);
color: rgba(56, 139, 225, 1);
font-size: 12px;
position: relative;
.span{
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
.ch2 {
position: absolute;
width: 18px;
height: 18px;
background-image: url(../../assets/images/basicinfo/ch.png);
right: -8px;
top: -8px;
}
}
}
}
</style>

View File

@@ -118,7 +118,7 @@ const tablecolumns = ref([
title: "姓名",
dataIndex: "studentName",
key: "studentName",
width: "20%",
width: "10%",
align: "left",
className: "h",
},
@@ -126,7 +126,7 @@ const tablecolumns = ref([
title: "工号",
dataIndex: "studentUserNo",
key: "studentUserNo",
width: "10%",
width: "20%",
align: "center",
className: "h",
ellipsis: true,
@@ -135,7 +135,7 @@ const tablecolumns = ref([
title: "部门",
dataIndex: "studentDepartName",
key: "studentDepartName",
width: "10%",
width: "20%",
align: "center",
className: "h",
ellipsis: true,
@@ -144,7 +144,7 @@ const tablecolumns = ref([
title: "加入方式",
dataIndex: "source",
key: "source",
width: "10%",
width: "20%",
align: "center",
customRender: ({record: {source}}) =>
({1: "快速添加", 2: "组织", 3: "受众"}[source]),
@@ -174,7 +174,7 @@ const tableData = ref({
});
const stuRowSelection = computed(() => ({
columnWidth: 20,
columnWidth: 10,
selectedRowKeys: stuSelectKeys.value,
onChange: onStuSelectChange,
preserveSelectedRowKeys: true,

View File

@@ -143,7 +143,7 @@
placeholder="请输入课程名称"
v-model:value="xzinputV1"
v-model:validate="validate"
v-model:finished="finished"
:maxlength="20"
show-count
:type="2"
@@ -364,7 +364,7 @@
placeholder="请输入课程名称"
v-model:value="qdms_inputV1"
v-model:validate="validate"
v-model:finished="finished"
:maxlength="20"
show-count
:type="2"
@@ -3732,7 +3732,7 @@ export default defineComponent({
codevisible: false, //二维码弹窗
codeInfo: null, //二维码内容
codeUrl: codeUrl,
finished: false,
// 课程三级分类
options2222: [
{
@@ -4658,11 +4658,9 @@ export default defineComponent({
}
console.log("state.validate", state.validate);
if (!state.finished) {
return;
}
if (!state.validate && state.finished) {
if (!state.validate) {
message.destroy();
return message.warning("该课程名称已存在");
}

View File

@@ -1,30 +1,15 @@
<!-- 课件管理页面 -->
<template>
<!-- 预览弹窗 -->
<a-modal
:visible="visible"
title="查看"
:footer="null"
:closable="false"
wrapClassName="modalStyle lookCourseModal"
width="80%"
@cancel="handleCancel"
@ok="handleCancel"
>
<a-modal :visible="visible" title="查看" :footer="null" :closable="false" wrapClassName="modalStyle lookCourseModal"
width="80%" @cancel="handleCancel" @ok="handleCancel">
<div class="modalHeader">
<div class="headerLeft">
<img
style="width: 17px; height: 18px; margin-right: 8px"
src="@/assets/images/basicinfo/add.png"
/>
<img style="width: 17px; height: 18px; margin-right: 8px" src="@/assets/images/basicinfo/add.png" />
<span class="headerLeftText">预览</span>
</div>
<div style="margin-right: 57px; cursor: pointer">
<img
@click="handleCancel"
style="width: 22px; height: 22px"
src="@/assets/images/basicinfo/close22.png"
/>
<img @click="handleCancel" style="width: 22px; height: 22px" src="@/assets/images/basicinfo/close22.png" />
</div>
</div>
<div class="modalMain">
@@ -35,10 +20,7 @@
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="img"
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="img" />
</div>
<span style="margin-right: 14px">课程名称</span>
</div>
@@ -51,27 +33,17 @@
<div class="mbl_items2">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="img"
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="img" />
</div>
<span style="margin-right: 14px">封面图</span>
</div>
<img
:src="detail.picUrl"
alt="img"
style="width: 100px; height: 100px"
/>
<img :src="detail.picUrl" alt="img" style="width: 100px; height: 100px" />
</div>
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
style="width: 10px; height: 10px"
src="@/assets/images/coursewareManage/asterisk.png"
alt="img"
/>
<img style="width: 10px; height: 10px" src="@/assets/images/coursewareManage/asterisk.png"
alt="img" />
</div>
<span style="margin-right: 14px">目标人群</span>
</div>
@@ -94,10 +66,7 @@
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="img"
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="img" />
</div>
<span style="margin-right: 14px">内容分类</span>
</div>
@@ -130,10 +99,7 @@
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk" />
</div>
<span style="margin-right: 14px">授课教师</span>
</div>
@@ -154,50 +120,25 @@
</div>
</div>
<div class="mbl_items12">
<div
class="i12_box1"
style="position: relative"
v-for="(item, index) in detail.attach"
:key="index"
>
<div class="i12_box1" style="position: relative" v-for="(item, index) in detail.attach" :key="index">
<div class="file_img">
<img
v-if="
<img v-if="
item.indexOf('jpg') !== -1 ||
item.indexOf('jpeg') !== -1 ||
item.indexOf('png') !== -1
"
src="@/assets/images/coursewareManage/pngpic.png"
/>
" src="@/assets/images/coursewareManage/pngpic.png" />
<div v-else>
<img
v-if="item.indexOf('doc') !== -1"
src="@/assets/images/coursewareManage/docpic.png"
/>
<img v-if="item.indexOf('doc') !== -1" src="@/assets/images/coursewareManage/docpic.png" />
<div v-else>
<img
v-if="item.indexOf('xls') !== -1"
src="@/assets/images/coursewareManage/xlspic.png"
/>
<img v-if="item.indexOf('xls') !== -1" src="@/assets/images/coursewareManage/xlspic.png" />
<div v-else>
<img
v-if="item.indexOf('ppt') !== -1"
src="@/assets/images/coursewareManage/pptpic.png"
/>
<img v-if="item.indexOf('ppt') !== -1" src="@/assets/images/coursewareManage/pptpic.png" />
<div v-else>
<img
v-if="item.indexOf('pdf') !== -1"
src="@/assets/images/coursewareManage/pdfpic.png"
/>
<img v-if="item.indexOf('pdf') !== -1" src="@/assets/images/coursewareManage/pdfpic.png" />
<div v-else>
<img
v-if="item.indexOf('zip') !== -1"
src="@/assets/images/coursewareManage/zippic.png"
/>
<img
v-else
src="@/assets/images/coursewareManage/docpic.png"
/>
<img v-if="item.indexOf('zip') !== -1"
src="@/assets/images/coursewareManage/zippic.png" />
<img v-else src="@/assets/images/coursewareManage/docpic.png" />
</div>
</div>
</div>
@@ -207,8 +148,7 @@
<div class="file_detail">
<div class="file_name">
<!-- http://111.231.196.214:12016/7.231.196.214:12016/7-1670486854017.jpg -->
<span
style="
<span style="
color: #6f6f6f;
width: 200px;
display: block;
@@ -218,8 +158,7 @@
position: absolute;
top: 4px;
left: 72px;
"
>
">
{{
item.indexOf("-") !== -1
? item.slice(
@@ -243,7 +182,7 @@
</div>
</div>
</div>
<a :href="item" style="margin-left: 5px">下载</a>
<a :href="item.indexOf('http') !== -1 ? item : locationHref + item" style="margin-left: 5px">下载</a>
</div>
</div>
</div>
@@ -412,6 +351,7 @@ export default defineComponent({
],
ceshi: "https://u-pre.boe.com/upload/测试下载ppt2-1671002026755.pptx",
ceshi2: "http://111.231.196.214:12016/测试下载ppt3-1671001683026.pptx",
locationHref: location.href.indexOf('http://') !== -1 ? 'http://111.231.196.214:12016/' : location.href.slice(0, location.href.indexOf('/m')) + '/upload/'
});
// item.slice(
@@ -513,6 +453,7 @@ export default defineComponent({
.lookCourseModal {
.ant-modal {
.ant-modal-content {
// width:1358px !important;
.ant-modal-body {
.modalHeader {
@@ -848,9 +789,11 @@ export default defineComponent({
.fotarea {
width: calc(100% - 150px);
position: relative;
img {
max-width: 100%;
}
.fuwenben {
width: 90%;
height: 20px;

View File

@@ -110,7 +110,7 @@
placeholder="请输入评估名称"
v-model:value="assessmentName"
v-model:validate="validate"
v-model:finished="finished"
:maxlength="15"
show-count
:type="4"
@@ -199,6 +199,7 @@ import { toDate } from "../../api/method.js";
import store from "@/store";
import { message } from "ant-design-vue";
import NameInput from "@/components/project/NameInput";
import {validateName} from "@/api/index1";
export default {
name: "learningPath",
components: {
@@ -312,7 +313,7 @@ export default {
copy_hs: false,
back_hs: false,
pub_hs: false,
finished:false,
validate: true,
});
const tableDataFunc = () => {
@@ -590,20 +591,26 @@ export default {
state.assessmentName = item.assessmentName;
state.newNext = true;
};
const handleNext = () => {
const handleNext = async() => {
if (!state.assessmentId) {
if (!state.assessmentName) {
message.error("请输入评估名称");
return false;
}
if (!state.finished) {
return;
}
if (!state.validate && state.finished) {
if (!state.validate ) {
message.destroy();
return message.warning("该评估名称已存在");
}
const offName = await validateName({name: state.assessmentName, type:4, id:state.assessmentId}).then(res => {
return res.data.data == 1;
});
if(offName){
message.destroy();
return message.warning("课程名称重复,请重新填写");
}
store.commit("SET_assessmentName", state.assessmentName);
router.push("/researchadd");
handleCancel();