Merge remote-tracking branch 'origin/master'

This commit is contained in:
yujicun
2023-05-16 14:33:41 +08:00
10 changed files with 235 additions and 243 deletions

View File

@@ -34,7 +34,7 @@ import {USER_PERMISSION} from "@/api/ThirdApi";
const store = useStore(); const store = useStore();
const isLogin = ref(false); const isLogin = ref(false);
console.log("版本3.0.3------------"); console.log("版本3.0.4------------");

View File

@@ -37,19 +37,19 @@
:placeholder="[' 开始时间', ' 结束时间']" /> :placeholder="[' 开始时间', ' 结束时间']" />
</div> </div>
</div> </div>
<!-- <div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
</div> </div>
<span style="margin-right: 3px">活动时长</span> <span style="margin-right: 3px">持续时间</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input-number :min="0" :max="999999" :precision="0" style="width: 400px; height: 40px; border-radius: 8px" <a-input-number :min="0" :max="999999" :precision="0" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="formData.activityDuration" /> v-model:value="formData.activityDuration" />
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
</div> --> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">

View File

@@ -52,19 +52,19 @@
valueFormat="YYYY-MM-DD HH:mm" @change="timeChange" :placeholder="[' 开始时间', ' 结束时间']" /> valueFormat="YYYY-MM-DD HH:mm" @change="timeChange" :placeholder="[' 开始时间', ' 结束时间']" />
</div> </div>
</div> </div>
<!-- <div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
</div> </div>
<span style="margin-right: 3px">直播时长</span> <span style="margin-right: 3px">持续时间</span>
</div> </div>
<div class="btnbox"> <div class="btnbox">
<a-input-number :min="0" :max="999999" :precision="0" style="width: 400px; height: 40px; border-radius: 8px" <a-input-number :min="0" :max="999999" :precision="0" style="width: 400px; height: 40px; border-radius: 8px"
v-model:value="formData.liveDuration"></a-input-number> v-model:value="formData.liveDuration"></a-input-number>
<span style="color: #999999; margin-left: 8px">分钟</span> <span style="color: #999999; margin-left: 8px">分钟</span>
</div> </div>
</div> --> </div>
<div class="main_item"> <div class="main_item">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">

View File

@@ -74,7 +74,7 @@ const columns = ref([
key: "type", key: "type",
width: "100px", width: "100px",
align: "center", align: "center",
customRender: ({ record: { type } }) => ({ 10: "微课", 21: "直播", 20: "录播", 30: "面授", 90: "混合" }[type]), customRender: () => <span>在线课</span>,
}, },
{ {
title: "创建人", title: "创建人",
@@ -83,13 +83,13 @@ const columns = ref([
width: "100px", width: "100px",
align: "center", align: "center",
}, },
{ // {
title: "时长", // title: "时长",
dataIndex: "studyTime", // dataIndex: "studyTime",
key: "studyTime", // key: "studyTime",
width: "80px", // width: "80px",
align: "center", // align: "center",
}, // },
{ {
title: "发布时间", title: "发布时间",
dataIndex: "publishTime", dataIndex: "publishTime",

View File

@@ -113,24 +113,6 @@
></NameInput> ></NameInput>
</div> </div>
</div> </div>
<div class="cstm_items">
<div class="signbox">
<div class="sign">
</div>
<span style="margin-right: 3px">地点</span>
</div>
<div class="b_input">
<a-input
v-model:value="formData.address"
maxlength="50"
style="width: 88%; height: 40px; border-radius: 8px"
placeholder="请输入详细地点"
/>
<div class="inp_num" style="right: 90px">
<span style="color: #c7cbd2">{{ formData.address.length || 0 }}/50</span>
</div>
</div>
</div>
<div class="cstm_items"> <div class="cstm_items">
<div class="signbox"> <div class="signbox">
<div class="sign"> <div class="sign">
@@ -172,6 +154,49 @@
v-model:name="formData.teacher" v-model:name="formData.teacher"
></ProjectManager> ></ProjectManager>
</div> </div>
</div>
<div class="cstm_items">
<div class="signbox">
<div class="sign">
<img src="@/assets/images/coursewareManage/asterisk.png" alt=""/>
</div>
<span style="margin-right: 3px">持续时间</span>
</div>
<div class="b_input">
<a-input-number
:min="0"
:max="999999"
:precision="0"
placeholder="请输入持续时间"
style="
width: 88%;
height: 32px;
border-radius: 8px;
overflow: hidden;"
v-model:value="formData.duration"
></a-input-number>
<div class="inp_num" style="right: 96px;line-height: 12px">
<span style="color: #c7cbd2">分钟</span>
</div>
</div>
</div>
<div class="cstm_items">
<div class="signbox">
<div class="sign">
</div>
<span style="margin-right: 3px">地点</span>
</div>
<div class="b_input">
<a-input
v-model:value="formData.address"
maxlength="50"
style="width: 88%; height: 40px; border-radius: 8px"
placeholder="请输入详细地点"
/>
<div class="inp_num" style="right: 90px">
<span style="color: #c7cbd2">{{ formData.address.length || 0 }}/50</span>
</div>
</div>
</div> </div>
<div class="cstm_items"> <div class="cstm_items">
<div class="signbox"> <div class="signbox">
@@ -451,6 +476,7 @@ const formData = useResetRef({
evalFlag: 0, evalFlag: 0,
assessmentName: "", assessmentName: "",
assessmentId: "", assessmentId: "",
duration: "",
workInfo: {}, workInfo: {},
examInfo: {}, examInfo: {},
attach: "", attach: "",
@@ -490,6 +516,12 @@ const formDataRule = {
message: "请选择教师", message: "请选择教师",
}, },
], ],
duration: [
{
required: true,
message: "请输入持续时间",
},
],
}; };
const { validate } = Form.useForm(formData, formDataRule); const { validate } = Form.useForm(formData, formDataRule);

View File

@@ -307,7 +307,7 @@ export default {
state.CWvisible = true state.CWvisible = true
}} }}
> >
查看作业2 查看作业
</a-button>} </a-button>}
{value.examStatus===1 && <a-button {value.examStatus===1 && <a-button
type="link" type="link"
@@ -317,7 +317,7 @@ export default {
state.CQvisible = true state.CQvisible = true
}} }}
> >
查看答卷3 查看答卷
</a-button>} </a-button>}
</div>) </div>)
); );

View File

@@ -43,7 +43,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="search"> <div class="search" v-if="data?.length">
<div class="leftchoose"> <div class="leftchoose">
<div class="namecon" style="margin-right: 30px"> <div class="namecon" style="margin-right: 30px">
<div class="name">姓名</div> <div class="name">姓名</div>
@@ -81,7 +81,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)"> <div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId) && data?.length">
<div <div
class="btn btn1" class="btn btn1"
style="margin-right: 20px" style="margin-right: 20px"
@@ -297,10 +297,11 @@ const columns = ref([
key: "opacation", key: "opacation",
width: 100, width: 100,
align: "center", align: "center",
customRender: ({record:{workStatus,answerId,examinationScore,studentId}}) => customRender: ({record:{workStatus,answerId,examinationScore,studentId,finishStatus}}) =>
<div style="display:flex;justify-content:center;"> <div style="display:flex;justify-content:center;">
<a class="opa" style={{color:examinationScore?'':'#666',marginRight:'12px'}} onClick={() =>examinationScore && showExamAnswer(answerId)}>查看答卷</a> {examinationScore?<a className="opa" style={{color: examinationScore ? '' : '#666', marginRight: '12px'}} onClick={() => examinationScore && showExamAnswer(answerId)}>查看答卷</a>:''}
<a class="opa" style={{color:workStatus?'':'#666'}} onClick={() => workStatus && showCWvisible(studentId)}>查看作业</a> {workStatus ? <a class="opa" style={{color:workStatus?'':'#666'}} onClick={() => workStatus && showCWvisible(studentId)}>查看作业</a>:''}
{finishStatus != 1 ? <a className="opa" onClick={() => finishTask(studentId)}>标记为完成</a> : ''}
</div> </div>
}, },
]); ]);
@@ -339,6 +340,23 @@ const batchFinish = () => {
}); });
}; };
const finishTask = (stuId) => dialog({
content: "确定标注完成吗?",
ok: async () => {
message.success("标注完成成功");
tableRef.value.toLoading();
await api.batchFinishTask({
ids: [stuId],
type: 3,
taskId: props.datasource.routerTaskId,
pid: offcoursePlanId.value,
taskType: props.datasource.type,
currentStageId: props.datasource.currentStageId,
});
tableRef.value.fetch();
},
});
const answerId = ref(''); const answerId = ref('');
const showExamAnswer = (id) => { const showExamAnswer = (id) => {
answerId.value = id; answerId.value = id;

View File

@@ -43,7 +43,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="search"> <div class="search" v-if="data?.length">
<div class="leftchoose"> <div class="leftchoose">
<div class="namecon" style="margin-right: 30px"> <div class="namecon" style="margin-right: 30px">
<div class="name">姓名</div> <div class="name">姓名</div>
@@ -81,7 +81,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId)"> <div class="btnss" style="margin-top: 20px" v-if="checkPer(permissions,createId) && data?.length">
<div <div
class="btn btn1" class="btn btn1"
style="margin-right: 20px" style="margin-right: 20px"
@@ -89,6 +89,14 @@
> >
<div class="wz">签到二维码</div> <div class="wz">签到二维码</div>
</div> </div>
<div
class="btn btn1"
style="margin-right: 20px"
v-if="data[coursePlanIndex]?.assessmentId"
@click="qrcodeAssement()"
>
<div class="wz">评估二维码</div>
</div>
<div <div
class="btn btn1" class="btn btn1"
style="margin-right: 20px" style="margin-right: 20px"
@@ -119,9 +127,13 @@
<div class="btn btn1" @click="batchSign" style="margin-right: 20px"> <div class="btn btn1" @click="batchSign" style="margin-right: 20px">
<div class="wz">批量签到</div> <div class="wz">批量签到</div>
</div> </div>
<div class="btn btn1" @click="exportTaskStu"> <div class="btn btn1" @click="exportTaskStu" style="margin-right: 20px">
<div class="img2"></div> <div class="img2"></div>
<div class="wz">导出数据</div> <div class="wz">导出签到数据</div>
</div>
<div class="btn btn1" @click="exportAssessment" v-if="data[coursePlanIndex]?.assessmentId">
<div class="img2"></div>
<div class="wz">导出评估数据</div>
</div> </div>
</div> </div>
<div class="tableBox" style="margin-top: 30px"> <div class="tableBox" style="margin-top: 30px">
@@ -151,6 +163,7 @@ import {useRequest} from "@/api/request";
import CommonImport from "@/components/common/CommonImport"; import CommonImport from "@/components/common/CommonImport";
import CommonStudent from "@/components/student/CommonStudent"; import CommonStudent from "@/components/student/CommonStudent";
import dayjs from "dayjs"; import dayjs from "dayjs";
import {delStudentList} from "@/api/index1";
const coursePlanIndex = ref(0); const coursePlanIndex = ref(0);
const tableRef = ref(); const tableRef = ref();
@@ -291,6 +304,19 @@ const columns = ref([
<a-radio checked={text.record.leaveStatus} onClick={() => stuSign(text)}>请假</a-radio> <a-radio checked={text.record.leaveStatus} onClick={() => stuSign(text)}>请假</a-radio>
</div> </div>
}, },
{
title: "操作",
ellipsis: true,
className: "h",
dataIndex: "opacation",
key: "opacation",
width: 130,
align: "center",
customRender: (text) =>
<div class="opa">
<a className="opa" style={{color: '#666'}} onClick={()=>removeStu(text.record.id)}>删除</a>
</div>
},
]); ]);
const { data = [], loading, fetchData } = useRequest(COURSE_PLAN_LIST, planParams, false); const { data = [], loading, fetchData } = useRequest(COURSE_PLAN_LIST, planParams, false);
@@ -309,6 +335,11 @@ const ChoiceCourse = (n) => {
tableRef.value.fetch(); tableRef.value.fetch();
}; };
const removeStu=(id)=> dialog({
content: "确定删除该学员吗?",
ok: () => delStudentList({ ids: [id] }).then(() => fetchData())
})
const closeDrawer = () => emit("update:FSvisible", false); const closeDrawer = () => emit("update:FSvisible", false);
//批量签到 //批量签到
const batchSign = () => { const batchSign = () => {
@@ -369,6 +400,8 @@ function exportTaskStu() {
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?type=3&pid=${offcoursePlanId.value}&thirdType=2`); window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportTaskStudent?type=3&pid=${offcoursePlanId.value}&thirdType=2`);
} }
const exportAssessment = () =>window.open(`${process.env.VUE_APP_BASE_API}/admin/assessment/manage/exportAssessmentMessage?chapterId=${props.type === 1 ? props.datasource.stageId : props.datasource.chapterId}&type=${props.type}&pid=${props.type === 1 ? props.datasource.projectId : props.datasource.routerId}&courseId=${data.value[coursePlanIndex.value].assessmentId}&taskId=${props.datasource.id}&taskType=${props.datasource.type}`);
function afterVisibleChange(bool) { function afterVisibleChange(bool) {
bool && fetchData() bool && fetchData()
} }
@@ -396,6 +429,14 @@ const qrcodeVisibleSign = () => {
}); });
}; };
const qrcodeAssement = () =>{
qrCode({
title: "【评估】二维码",
name: data.value[coursePlanIndex.value]?.assessmentName,
url: `${location.protocol}//${location.host}${process.env.VUE_APP_BASE_API}/student-h5/investigatpage?id=${data.value[coursePlanIndex.value]?.id}&type=3&infoId=${data.value[coursePlanIndex.value]?.id}&courseId=${data.value[coursePlanIndex.value].assessmentId}&chapterOrStageId=0`,
});
}
const change = (e) => { const change = (e) => {
console.log(e) console.log(e)
if(e==="end"){ if(e==="end"){

View File

@@ -3202,26 +3202,22 @@ export default defineComponent({
console.log(val); console.log(val);
rest(); rest();
getTea();
}; };
const handelChangePageTea1 = (page, pageSize) => { const handelChangePageTea1 = (page, pageSize) => {
state.currentPageTea1 = page; state.currentPageTea1 = page;
state.pageSizeTea1 = pageSize; state.pageSizeTea1 = pageSize;
rest(); rest();
getTea();
}; };
const handleChangeTea2 = (val) => { const handleChangeTea2 = (val) => {
console.log(787877); console.log(787877);
console.log(val); console.log(val);
options4CurName.value = val; options4CurName.value = val;
rest(); rest();
getTea();
}; };
const handelChangePageTea2 = (page, pageSize) => { const handelChangePageTea2 = (page, pageSize) => {
state.currentPageTea2 = page; state.currentPageTea2 = page;
state.pageSizeTea2 = pageSize; state.pageSizeTea2 = pageSize;
rest(); rest();
getTea();
}; };
//获取分类、场景、封面图、-----------字典配置------------------------------- //获取分类、场景、封面图、-----------字典配置-------------------------------
@@ -3476,7 +3472,6 @@ export default defineComponent({
const options4CurName = ref("张"); const options4CurName = ref("张");
const of_hShow = () => { const of_hShow = () => {
state.offcourseId = ""; state.offcourseId = "";
getTea();
if (state.of_hs == false) { if (state.of_hs == false) {
state.of_hs = true; state.of_hs = true;
} }
@@ -3546,7 +3541,6 @@ export default defineComponent({
state.qdms_inputV1 = state.xzinputV1; state.qdms_inputV1 = state.xzinputV1;
state.xzinputV1 = ""; state.xzinputV1 = "";
getTea();
} }
if (state.bs_hs && state.valueE1 == 1) { if (state.bs_hs && state.valueE1 == 1) {
state.addOnlineCoursevisible = true; state.addOnlineCoursevisible = true;
@@ -4325,50 +4319,6 @@ export default defineComponent({
// }); */ // }); */
// } // }
}; };
//获取教师
const getTea = async () => {
options4CurName.value = state.teacher;
options4CurId.value = state.teacherId;
const item1 = await getMemberInfoApi({
pageNo: state.currentPageTea1,
pageSize: state.pageSizeTea1,
keyWord: options4CurName.value,
id: options4CurId.value ? options4CurId.value : null,
})
.then((res) => {
console.log("获取授课教师", res);
if (res.data.code === 200) return res.data.data;
})
.catch((err) => {
console.log("获取授课教师失败", err);
});
const { rows, total } = item1;
state.tableDataTotalTea1 = total;
state.tableDataTotalTea2 = total;
let newArr = [];
for (let item of rows) {
if (options4CurId.value === item.id) {
if (state.offcoursePlanId && state.offcourseId) {
options4CurName.value = item.realName;
state.xjkkinputV4 = item.realName;
state.teacherId = item.id;
} else if (state.offcourseId) {
options4CurName.value = item.realName;
state.qdms_inputV5 = item.realName;
state.teacher = item.realName;
state.teacherId = item.id;
console.log("那个老师", item);
}
}
newArr.push({
value: item.id,
label: item.realName,
});
}
options4.value = newArr;
console.log("options4.value");
console.log(options4.value);
};
//编辑面授课 //编辑面授课
const handleEdit = async (itm, type) => { const handleEdit = async (itm, type) => {
if (type === "1") { if (type === "1") {
@@ -4423,7 +4373,6 @@ export default defineComponent({
// state.ft_hs = true; // state.ft_hs = true;
CourseModalRef.value.visibleOpen(state.offcourseId, null); CourseModalRef.value.visibleOpen(state.offcourseId, null);
state.ft_eidt = true; state.ft_eidt = true;
// getTea();
}; };
// handleTagChange // handleTagChange

View File

@@ -12,12 +12,8 @@
> >
<div class="modalHeader"> <div class="modalHeader">
<div class="headerLeft"> <div class="headerLeft">
<img
style="width: 17px; height: 18px; margin-right: 8px"
src="@/assets/images/basicinfo/add.png"
/>
<span v-if="ft_eidt" class="headerLeftText">编辑面授课</span> <span v-if="ft_eidt" class="headerLeftText">编辑面授课</span>
<span v-else class="headerLeftText"></span> <span v-else class="headerLeftText">新建面授课</span>
</div> </div>
<div style="margin-right: 57px; cursor: pointer"> <div style="margin-right: 57px; cursor: pointer">
<img <img
@@ -35,7 +31,6 @@
</div> </div>
<div class="faceteach" :style="{ display: ft_hs ? 'block' : 'none' }"> <div class="faceteach" :style="{ display: ft_hs ? 'block' : 'none' }">
<div class="ft_main"> <div class="ft_main">
<div class="m_title">课程信息</div>
<div class="m_body"> <div class="m_body">
<div class="mb_left"> <div class="mb_left">
<div class="mbl_items"> <div class="mbl_items">
@@ -133,21 +128,16 @@
align-items: center; align-items: center;
" "
> >
<img <div v-for="(item, index) in optionsUrl"
v-for="(item, index) in optionsUrl" :key="index"
:key="index" class="choiceoptionurl"
class="choiceoptionurl" :style="{
:style="{ border:pathBgId === item.id? '3px solid rgba(78, 166, 255, 1)': '1px solid #ccc',
border: display: index >= 3 ? 'none' : 'flex',
pathBgId === item.id background: `url(${item.value}) center center / 100% no-repeat`,
? '3px solid rgba(78, 166, 255, 1)' }"
: '1px solid #ccc', @click="chooseImg(item)"
display: index >= 3 ? 'none' : 'flex', />
}"
:src="item.value"
:alt="item.name"
@click="chooseImg(item)"
/>
<div <div
@click="showLearnBgMore" @click="showLearnBgMore"
class="learnBgItem learnBgMore" class="learnBgItem learnBgMore"
@@ -306,137 +296,104 @@
</div> </div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam" style="margin-bottom: 110px"> <div class="item_nam" style="margin-top: 8px">
<span style="margin-right: 14px">课程价值</span> <div class="asterisk_icon">
</div> <img
<div class="item_inp"> src="@/assets/images/coursewareManage/asterisk.png"
<div class="i1_input"> alt="asterisk"
<a-textarea />
v-model:value="qdms_inputV3" </div>
maxlength="200" <span style="margin-right: 14px">课程简介</span>
style="width: 440px; height: 140px; border-radius: 8px"
placeholder="请输入课程价值"
/>
<div class="inp_num" style="top: 110px">
<span style="color: #c7cbd2">
{{ qdms_inputV3.length }}/200
</span>
</div> </div>
</div> <div class="item_inp">
</div> <div class="i10_textarea">
</div> <a-textarea
v-model:value="qdms_inputV6"
<div class="mbl_items"> :maxlength="200"
<div class="item_nam"> style="width: 440px; height: 100px; border-radius: 8px"
<span style="margin-right: 14px">场景</span> placeholder="请输入"/>
</div> <div class="inp_num">
<div class="item_inp"> <span style="color: #c7cbd2">
<div class="i1_input"> {{ qdms_inputV6.length }}/200
<a-input </span>
v-model:value="chang_jin" </div>
maxlength="50" </div>
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入场景"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
{{ chang_jin.length }}/50
</span>
</div> </div>
</div>
</div> </div>
<!-- <div class="item_inp">
<div class="select i7_input">
<a-select :getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
" v-model:value="chang_jin" dropdownClassName="dropdown-style" style="width: 440px" placeholder="请选择"
:options="options3" allowClear showSearch />
</div>
</div> -->
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">内容标签</span>
</div>
<div class="item_inp">
<div
style="cursor: pointer"
@click="handleTagChange"
>
<a-input
v-model:value="tags_val_single"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入内容标签按回车键添加内容标签,可添加多个内容标签。"
@pressEnter="handleTagChange"
/>
<img
style="width: 20px; height: 20px;margin-left: 20px; "
src="../../assets/images/courseManage/add1.png"
/>
</div>
<div class="tag-content">
<a-tag
v-for="(item, index) in tags_val"
:key="index"
closable
@close="handleTagClose(item)"
>
{{ item }}
</a-tag>
</div>
</div>
</div>
</div> </div>
<div class="mb_right"> <div class="mb_right">
<!-- <div class="mbl_items">
<div class="mbl_items"> <div class="item_nam">
<div class="item_nam" style="margin-top:5px;"> <span style="margin-right: 14px">内容标签</span>
<div class="asterisk_icon"> </div>
<img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk" /> <div class="item_inp">
</div>
<span style="margin-right: 14px">授课教师</span>
</div>
<div class="item_inp">
<div class="select" style="width:88%;">
<ProjectManager v-model:value="member.value" v-model:name="member.name" />
</div>
</div>
</div>
-->
<div class="mbl_items2"> <div
<div class="item_nam" style="margin-top: 8px"> style="cursor: pointer"
<div class="asterisk_icon"> @click="handleTagChange"
<img >
src="@/assets/images/coursewareManage/asterisk.png" <a-input
alt="asterisk" v-model:value="tags_val_single"
/> style="width: 440px; height: 40px; border-radius: 8px"
</div> placeholder="请输入内容标签按回车键添加内容标签,可添加多个内容标签。"
<span style="margin-right: 14px">课程简介</span> @pressEnter="handleTagChange"
/>
<img
style="width: 20px; height: 20px;margin-left: 20px; "
src="../../assets/images/courseManage/add1.png"
/>
</div>
<div class="tag-content">
<a-tag
v-for="(item, index) in tags_val"
:key="index"
closable
@close="handleTagClose(item)"
>
{{ item }}
</a-tag>
</div>
</div>
</div> </div>
<div class="item_inp">
<div class="i10_textarea"> <div class="mbl_items">
<a-textarea <div class="item_nam">
v-model:value="qdms_inputV6" <span style="margin-right: 14px">场景</span>
maxlength="150" </div>
style="width: 440px; height: 100px; border-radius: 8px" <div class="item_inp">
placeholder="请输入" <div class="i1_input">
/> <a-textarea
<div class="inp_num"> v-model:value="chang_jin"
<span style="color: #c7cbd2"> :maxlength="200"
{{ qdms_inputV6.length }}/150 style="width: 440px; height: 80px; border-radius: 8px"
</span> placeholder="请输入场景"/>
<div class="inp_num">
<span style="color: #c7cbd2"> {{ chang_jin.length }}/200 </span>
</div>
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam" style="margin-bottom: 110px">
<span style="margin-right: 14px">课程价值</span>
</div>
<div class="item_inp">
<div class="i1_input">
<a-textarea
v-model:value="qdms_inputV3"
:maxlength="200"
style="width: 440px; height: 140px; border-radius: 8px"
placeholder="请输入课程价值"/>
<div class="inp_num" style="top: 110px">
<span style="color: #c7cbd2">{{ qdms_inputV3.length }}/200</span>
</div>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam" style="margin-top: 8px"> <div class="item_nam" style="margin-top: 8px">
<span style="margin-right: 10px">附件</span> <span style="margin-right: 10px">附件</span>
@@ -515,11 +472,8 @@
:key="item.id" :key="item.id"
class="learnBgItem" class="learnBgItem"
:style="{ :style="{
border: border: pathBgId === item.id? '3px solid rgba(78, 166, 255, 1)' : '1px solid #ccc',
pathBgId === item.id 'background': `url(${item.value}) center center / 100% no-repeat`,
? '3px solid rgba(78, 166, 255, 1)'
: '1px solid #ccc',
'background-image': 'url(' + item.value + ')',
}" }"
> >
<!-- <img class="im" :src="item.source" /> --> <!-- <img class="im" :src="item.source" /> -->
@@ -1568,8 +1522,6 @@ export default defineComponent({
width: 100px; width: 100px;
height: 100px; height: 100px;
background-size: 100%; background-size: 100%;
background-repeat: no-repeat;
// margin-bottom: 20px;
margin-right: 6px; margin-right: 6px;
} }