多题干bug修复

This commit is contained in:
kclf
2022-12-05 16:27:51 +08:00
parent 437ba6e7f4
commit d45635ace1
5 changed files with 1074 additions and 141 deletions

View File

@@ -53,7 +53,7 @@
{{ ballotId ? "编辑" : "创建" }}投票 {{ ballotId ? "编辑" : "创建" }}投票
</button> </button>
<div v-if="ballotId > 0"> <div v-if="ballotId > 0">
<a-tag closable color="processing" @close="log"> <a-tag closable color="processing" @close="handlelog">
<span style="font-size: 14px; line-height: 33px"> <span style="font-size: 14px; line-height: 33px">
删除投票 删除投票
</span> </span>
@@ -438,7 +438,7 @@ export default {
const closeStem = () => { const closeStem = () => {
state.addStemVisible = false; state.addStemVisible = false;
}; };
const log = (e) => { const handlelog = (e) => {
state.ballotId = null; state.ballotId = null;
console.log(e); console.log(e);
}; };
@@ -454,7 +454,7 @@ export default {
closeStem, closeStem,
handleChange, handleChange,
beforeUpload, beforeUpload,
log, handlelog,
}; };
}, },
}; };

View File

@@ -90,17 +90,12 @@
</a-drawer> </a-drawer>
</template> </template>
<script> <script>
import { reactive, toRefs } from "vue"; import { reactive, toRefs, toRef, watch } from "vue";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
// import { createResearch } from "../../api/indexResearch"; // import { createResearch } from "../../api/indexResearch";
import VoteQuestion from "./VoteQuestion.vue"; import VoteQuestion from "./VoteQuestion.vue";
import { import { sortBy, traverseArr } from "../../utils/utils";
sortBy,
traverseArr,
//filterCommon,
// deepCloneFilterString,
} from "../../utils/utils";
//import store from "@/store"; //import store from "@/store";
import * as api from "@/api/indexVote"; import * as api from "@/api/indexVote";
@@ -129,11 +124,20 @@ export default {
}, },
}, },
setup(props, ctx) { setup(props, ctx) {
const ballotIdWatch = toRef(props, "ballotId");
const state = reactive({ const state = reactive({
ballotId: "", ballotId: "",
ballotName: "", ballotName: "",
allFormsData: [], allFormsData: [],
}); });
watch(ballotIdWatch, (newValue) => {
if (!newValue) {
state.ballotId = "";
state.ballotName = "";
state.allFormsData = [];
}
});
// const router = useRouter(); // const router = useRouter();
const afterVisibleChange = () => { const afterVisibleChange = () => {
if (props.ballotId) { if (props.ballotId) {
@@ -189,6 +193,7 @@ export default {
valueSingle: item.voteStemName, valueSingle: item.voteStemName,
optionDetailList: restList, optionDetailList: restList,
orderNumber: item.orderNumber, orderNumber: item.orderNumber,
voteStemId: item.voteStemId,
}; };
resultArr.push(obj); resultArr.push(obj);
}); });
@@ -223,6 +228,7 @@ export default {
voteStemName: item.valueSingle, voteStemName: item.valueSingle,
optionDetailList: restList, optionDetailList: restList,
orderNumber: item.orderNumber, orderNumber: item.orderNumber,
voteStemId: item.voteStemId,
}; };
resultArr.push(obj); resultArr.push(obj);
console.log("resultArr=======", resultArr); console.log("resultArr=======", resultArr);
@@ -334,15 +340,12 @@ export default {
const checkVal = (filterData) => { const checkVal = (filterData) => {
console.log("filterData.====", filterData); console.log("filterData.====", filterData);
filterData.forEach((item) => { for (let item of filterData) {
console.log("item===", item);
console.log("!item.voteStemName===", !item.voteStemName);
if (!item.voteStemName) { if (!item.voteStemName) {
console.log("item.voteStemName===", item.voteStemName); message.error("题干为必填 请确认");
message.error("题干为必填 请确认", item.voteStemName);
return false; return false;
} }
}); }
return true; return true;
}; };

View File

@@ -1319,8 +1319,9 @@
handleLook(record, String(record.courseform)); handleLook(record, String(record.courseform));
} }
" "
>查看</a
> >
查看
</a>
<a <a
@click=" @click="
() => { () => {
@@ -2922,6 +2923,8 @@
</div> </div>
</div> </div>
</a-modal> </a-modal>
<!-- 预览弹窗 -->
<!-- <SeeModal :show="lookCourseModal" /> -->
<!--删除 复制 停用弹窗 --> <!--删除 复制 停用弹窗 -->
<!-- 学员管理课程库-归属权抽屉 --> <!-- 学员管理课程库-归属权抽屉 -->
<!-- <own-power v-model:ownpowervisible="ownpowervisible" /> --> <!-- <own-power v-model:ownpowervisible="ownpowervisible" /> -->
@@ -3032,9 +3035,10 @@ import * as api1 from "../../api/index1";
import "@wangeditor/editor/dist/css/style.css"; import "@wangeditor/editor/dist/css/style.css";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue"; import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
// import { DomEditor } from "@wangeditor/editor";
import ProjectManager from "@/components/project/ProjectManager"; import ProjectManager from "@/components/project/ProjectManager";
// import SeeModal from "./components/seeModal.vue";
//列表表格 //列表表格
const columns1 = [ const columns1 = [
{ {
@@ -3662,6 +3666,9 @@ export default defineComponent({
ownpowervisible: false, ownpowervisible: false,
corpowerlistvisible: false, corpowerlistvisible: false,
lookCourseModal: false,
faceDetailObj: null,
offcourseId: null, offcourseId: null,
projectName: "", projectName: "",
name: "", name: "",
@@ -5062,8 +5069,25 @@ export default defineComponent({
state.ft_eidt = true; state.ft_eidt = true;
}; };
// 预览弹框 开启和关闭
// 内容分类 场景 -- 目前直接写死的
const sceneist11 = [
{ dictCode: "6", dictValue: "场景一" },
{ dictCode: "7", dictValue: "场景二" },
];
const contentList11 = [
{ dictCode: "8", dictValue: "分类一" },
{ dictCode: "5", dictValue: "分类二" },
];
// const heroImg = ref(null);
// // const valueHtmlRef = ref(null);
// const attachMap = ref([]);
const ft_exit_see = () => {
state.lookCourseModal = false;
};
const handleLook = async (itm, type) => { const handleLook = async (itm, type) => {
state.isEdit = 0; state.lookCourseModal = true;
// state.isEdit = 0;
console.log(45555); console.log(45555);
console.log(itm); console.log(itm);
if (type === "1") { if (type === "1") {
@@ -5076,40 +5100,42 @@ export default defineComponent({
}).then((res) => { }).then((res) => {
if (res.data.code === 200) return res.data.data; if (res.data.code === 200) return res.data.data;
}); });
console.log("res"); state.faceDetailObj = item;
// heroImg.value.src = item.picUrl;
// valueHtmlRef.value = item.outline;
// attachMap.value = item.attach == "" ? [] : item.attach.split(",");
console.log("res222222222");
console.log(item); console.log(item);
console.log(options2.value);
console.log(options3.value);
state.qdms_inputV1 = item.name; // state.qdms_inputV1 = item.name;
state.imageUrl = item.picUrl; // state.imageUrl = item.picUrl;
state.qdms_inputV2 = item.targetUser; // state.qdms_inputV2 = item.targetUser;
state.qdms_inputV3 = item.meaning; // state.qdms_inputV3 = item.meaning;
state.fen_lei = String(item.categoryId); // state.fen_lei = String(item.categoryId);
state.chang_jin = String(item.sceneId); // state.chang_jin = String(item.sceneId);
state.tags_val = item.tips ? item.tips.split(",") : []; // state.tags_val = item.tips ? item.tips.split(",") : [];
//state.qdms_inputV5 = item.teacherId; // //state.qdms_inputV5 = item.teacherId;
state.teacher = item.teacher; // state.teacher = item.teacher;
state.teacherId = item.teacherId; // state.teacherId = item.teacherId;
state.qdms_inputV6 = item.intro; // state.qdms_inputV6 = item.intro;
state.member = { value: item.teacherId, name: item.teacher }; // state.member = { value: item.teacherId, name: item.teacher };
if (item.attach == "") { // if (item.attach == "") {
state.imgList = []; // state.imgList = [];
} else { // } else {
if (item.attach.indexOf(",")) { // if (item.attach.indexOf(",")) {
const arr = item.attach.split(","); // const arr = item.attach.split(",");
arr.forEach((item) => { // arr.forEach((item) => {
state.imgList.push({ img: item }); // state.imgList.push({ img: item });
}); // });
} else { // } else {
state.imgList = [{ img: item.attach }]; // state.imgList = [{ img: item.attach }];
} // }
} // }
valueHtml.value = item.outline; // valueHtml.value = item.outline;
state.lookMs = true; // state.lookMs = true;
}; };
// const handleTea = async () => { // const handleTea = async () => {
// console.log("item22224444"); // console.log("item22224444");
@@ -5480,6 +5506,9 @@ export default defineComponent({
ckxq_hs, ckxq_hs,
ftsr_exit, ftsr_exit,
stm_exit, stm_exit,
ft_exit_see,
contentList11,
sceneist11,
createkk, createkk,
handleCancelStu, handleCancelStu,
handleSureStu, handleSureStu,

View File

@@ -0,0 +1,738 @@
<!-- 课件管理页面 -->
<template>
<!-- 预览弹窗 -->
<a-modal
v-model:visible="showM"
title="查看"
@ok="handleCancel"
:footer="null"
:closable="false"
wrapClassName="modalStyle lookCourseModal"
width="80%"
@cancel="handleCancel"
>
<div class="modalHeader">
<div class="headerLeft">
<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"
/>
</div>
</div>
<div class="modalMain">
<div class="faceteach">
<div class="ft_main">
<div class="m_body">
<div class="mb_left">
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">课程名称</span>
</div>
<div class="item_inp">
<div class="i1_input">
<!-- {{ faceDetailObj !== null ? faceDetailObj.name : "" }} -->
</div>
</div>
</div>
<div class="i2_cz">
<div class="i2_top">
<div
class="i2_right"
@click="hideShow"
style="cursor: pointer"
>
<div class="b_icon"></div>
</div>
</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: 14px">封面图</span>
</div>
<img
ref="heroImg"
alt="img"
style="width: 100px; height: 100px"
/>
<!-- <div class="item_inp"></div> -->
</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=""
/>
</div>
<span style="margin-right: 14px">目标人群</span>
</div>
<div class="item_inp">
<div class="i1_input">
<!-- {{
faceDetailObj !== null ? faceDetailObj.targetUser : ""
}} -->
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">课程价值</span>
</div>
<div class="item_inp">
<div class="i1_input">
<!-- {{ faceDetailObj !== null ? faceDetailObj.meaning : "" }} -->
</div>
</div>
</div>
<!-- <div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" />
</div>
<span style="margin-right: 14px">资源归属</span>
</div>
<div class="item_inp">
<div class="select i6_input">{{ faceDetailObj !== null ? faceDetailObj.projectId : "" }}</div>
</div>
</div> -->
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="img"
/>
</div>
<span style="margin-right: 14px">内容分类</span>
</div>
<div class="item_inp">
<!-- <div class="select i6_input">{{ faceDetailObj !== null ? faceDetailObj.categoryId : "" }}</div> -->
<div class="select i6_input">
<!-- {{
faceDetailObj !== null
? contentList11.find(
(e) => e.dictCode == faceDetailObj.categoryId
)?.dictValue
: ""
}} -->
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">场景</span>
</div>
<div class="item_inp">
<!-- <div class="select i7_input">{{ faceDetailObj !== null ? faceDetailObj.sceneId : "" }}</div> -->
<div class="select i7_input">
<!-- {{
faceDetailObj !== null
? sceneist11.find(
(e) => e.dictCode == faceDetailObj.sceneId
)?.dictValue
: ""
}} -->
</div>
</div>
</div>
<div class="mbl_items">
<div class="item_nam">
<span style="margin-right: 14px">内容标签</span>
</div>
<div class="item_inp">
<!-- {{ faceDetailObj !== null ? faceDetailObj.tips : "" }} -->
</div>
</div>
</div>
<div class="mb_right">
<div class="mbl_items">
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div>
<span style="margin-right: 14px">授课教师</span>
</div>
<div class="item_inp">
<div class="i1_input">
<!-- {{ faceDetailObj !== null ? faceDetailObj.teacher : "" }} -->
</div>
</div>
</div>
<div class="mbl_items2">
<div class="item_nam">
<span style="margin-right: 14px">课程简介</span>
</div>
<div class="item_inp">
<div class="i10_textarea">
<!-- {{ faceDetailObj !== null ? faceDetailObj.intro : "" }} -->
</div>
</div>
</div>
<div class="mbl_items">
<div v-if="attachMap.length > 0" class="item_nam">
<span style="margin-right: 10px">附件</span>
</div>
<div
class="item_inp"
v-for="(value, index) in attachMap"
:key="index"
>
<a>
{{
[
"附件一",
"附件二",
"附件三",
"附件四",
"附件五",
"附件六",
][index]
}}
</a>
<a style="margin-left: 120px" :src="value" :href="value">
查看
</a>
<!-- <a-upload multiple :show-upload-list="false" :before-upload="beforeUpload2">
<div class="accessory" style="cursor: pointer">
<div class="accessory_icon">
<img src="@/assets/images/coursewareManage/enclosure.png" alt="enclosure" />
</div>
<span style="color: #4ea6ff">添加附件</span>
</div>
</a-upload>
<span>
支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip
</span> -->
</div>
</div>
<div class="mbl_items12">
<div
class="i12_box1"
v-for="(item, index) in imgList"
:key="index"
>
<div class="file_img">
<img :src="item.img" />
</div>
<div class="file_detail">
<div class="file_name">
<span style="color: #6f6f6f">{{ item.name }}</span>
</div>
<div class="file_updata">
<div class="updatabox">
<div class="updatacolor"></div>
<div class="updataxq">上传完成</div>
</div>
<div class="upjd">
<span style="margin: auto 5px">100%</span>
</div>
</div>
</div>
<div class="file_operation">
<div class="fobox">
<span style="color: #4ea6ff" @click="handleDel(index)">
删除
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="m_footer">
<div class="fotnam">
<span>课程大纲</span>
</div>
<div class="fotarea">
<div style="border: 1px solid #ccc">
<!-- <Toolbar style="border-bottom: 1px solid #ccc;width:900px;height: 300px;" :defaultConfig="toolbarConfig"
:mode="mode" /> -->
<!-- <Editor
@focus="onEditorFocus"
style="
border-bottom: 1px solid #ccc;
width: 900px;
height: 300px;
"
v-model="valueHtml"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
/> -->
</div>
</div>
</div>
<div class="m_btn">
<!-- <div class="btn btn5" @click="handleCancel">
<div class="btnText">取消</div>
</div> -->
<div class="btn btn6" @click="handleCancel">
<div class="btnText">确定</div>
</div>
</div>
</div>
</div>
</div>
</a-modal>
</template>
<script>
import { reactive, toRefs, defineComponent } from "vue";
export default defineComponent({
props: {
show: {
type: Boolean,
default: false,
},
detail: {
type: Object,
default: () => {},
},
},
setup(props, { emit }) {
console.log(props);
// const showM = ref(props.show);
const state = reactive({
showM: false,
});
const filterTxt = (txt) => {
if (txt) {
return txt;
} else {
return "-";
}
};
const handleCancel = () => {
console.log(6767767);
emit("cancel");
};
return {
...toRefs(state),
filterTxt,
handleCancel,
};
},
});
</script>
<style lang="scss">
.lookCourseModal {
.ant-modal {
.ant-modal-content {
// width:1358px !important;
.ant-modal-body {
.modalHeader {
display: flex;
align-items: center;
justify-content: space-between;
.headerLeft {
margin-left: 27px;
display: flex;
align-items: center;
.headerLeftText {
font-size: 16px;
font-weight: 400;
color: #000000;
line-height: 36px;
}
}
}
.modalMain {
.m_title {
margin-bottom: 20px;
}
.m_body {
display: flex;
flex-wrap: wrap;
.mb_left {
width: 50%;
.mbl_items {
display: flex;
align-items: center;
justify-content: flex-end;
margin-bottom: 10px;
.item_nam {
width: 100px;
display: flex;
align-items: center;
justify-content: flex-end;
white-space: nowrap;
.asterisk_icon {
width: 10px;
height: 10px;
margin-right: 5px;
margin-top: -15px;
}
}
.item_inp {
flex: 1;
position: relative;
.inp_num {
position: absolute;
left: 398px;
top: 10px;
}
}
}
.mbl_items2 {
display: flex;
align-items: start;
margin-top: 10px;
margin-bottom: 10px;
.item_nam {
width: 100px;
display: flex;
align-items: center;
justify-content: flex-end;
white-space: nowrap;
.asterisk_icon {
width: 10px;
height: 10px;
margin-right: 5px;
margin-top: -15px;
}
}
.item_inp {
flex: 1;
.i_upload_img {
width: 100px;
height: 100px;
border-radius: 8px;
}
.i_upload {
width: 100px;
height: 100px;
border: 1px solid #4ea6ff;
border-radius: 8px;
text-align: center;
align-items: center;
cursor: pointer;
.addimg {
position: relative;
.heng {
position: absolute;
top: 50px;
left: 25px;
width: 50px;
border: 1px solid #4ea6ff;
}
.shu {
position: absolute;
top: 25px;
left: 50px;
height: 50px;
border: 1px solid #4ea6ff;
}
}
}
}
}
.i2_cz {
width: 440px;
margin-left: 100px;
.i2_top {
display: flex;
justify-content: space-between;
}
}
.i8_bottom {
display: flex;
width: 440px;
margin-left: 100px;
}
}
.mb_right {
width: 50%;
.mbl_items {
display: flex;
align-items: flex-start;
justify-content: flex-end;
margin-bottom: 10px;
.item_nam {
width: 100px;
display: flex;
align-items: center;
justify-content: flex-end;
white-space: nowrap;
.asterisk_icon {
width: 10px;
height: 10px;
margin-top: -15px;
margin-right: 5px;
}
}
.item_inp {
flex: 1;
}
.accessory {
display: flex;
align-items: center;
.accessory_icon {
width: 16px;
height: 16px;
margin-top: -8px;
margin-right: 5px;
}
}
}
.mbl_items2 {
display: flex;
align-items: start;
margin-bottom: 10px;
.item_nam {
width: 100px;
display: flex;
align-items: center;
justify-content: flex-end;
white-space: nowrap;
.asterisk_icon {
width: 10px;
height: 10px;
margin-right: 5px;
margin-top: -15px;
}
}
.item_inp {
flex: 1;
position: relative;
.inp_num {
position: absolute;
left: 395px;
bottom: 10px;
}
}
}
.mbl_items12 {
width: 440px;
margin-left: 100px;
.i12_box1 {
display: flex;
align-items: center;
padding: 17px 0px 17px 21px;
border: 1px solid #eff4fc;
border-radius: 8px;
margin-bottom: 10px;
.file_img {
width: 27px;
height: 32px;
// background-image: url(@/assets/images/coursewareManage/imgs.png);
margin-right: 22px;
img {
width: 100%;
height: 100%;
}
}
.file_detail {
width: 250px;
margin-right: 21px;
.file_updata {
display: flex;
align-items: center;
.updatabox {
position: relative;
width: 230px;
height: 5px;
background-color: rgba(192, 192, 192, 0.25);
border-radius: 3px;
.updatacolor {
position: absolute;
left: 0;
width: 100%;
height: 5px;
background-color: #57c887;
border-radius: 3px;
}
.updatacolor2 {
position: absolute;
left: 0;
width: 80%;
height: 5px;
background-color: #ff7474;
border-radius: 3px;
}
.updatacolor3 {
position: absolute;
left: 0;
width: 60%;
height: 5px;
background-color: #388be1;
border-radius: 3px;
}
.updataxq {
position: absolute;
right: 2px;
top: -30px;
color: #57c887;
}
.updataxq2 {
position: absolute;
right: 2px;
top: -30px;
color: #ff7474;
}
.updataxq3 {
position: absolute;
right: 2px;
top: -30px;
color: #388be1;
}
}
}
}
.file_operation {
display: flex;
.fobox {
margin-right: 5px;
cursor: pointer;
}
}
}
}
}
}
.m_footer {
display: flex;
margin: 20px 0;
.fotnam {
width: 100px;
display: flex;
justify-content: end;
padding-right: 15px;
}
.fotarea {
position: relative;
.fuwenben {
width: 90%;
height: 20px;
background-color: rgb(95, 95, 95);
position: absolute;
left: 50%;
transform: translate(-50%, 0);
top: 3px;
z-index: 9999;
}
}
}
.m_btn {
width: 100%;
margin-top: 25px;
margin-bottom: 20px;
display: flex;
justify-content: center;
align-content: center;
.btn {
width: 100px;
height: 40px;
background: rgba(64, 158, 255, 0);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.btnText {
font-size: 14px;
font-weight: 400;
line-height: 40px;
}
}
.btn5 {
border: 1px solid rgba(64, 158, 255, 1);
color: #4ea6ff;
}
.btn6 {
background-color: #4ea6ff;
color: #ffffff;
}
}
}
}
}
}
}
</style>

View File

@@ -14,23 +14,37 @@
<div class="tmplh_inp"> <div class="tmplh_inp">
<div class="inpbox"> <div class="inpbox">
<div class="inpbox1"> <div class="inpbox1">
<a-select v-model:value="valueproj" :options="[{ label: '请选择内容分类', value: '' }, ...calssifyList]" /> <a-select
v-model:value="valueproj"
:options="[
{ label: '请选择内容分类', value: '' },
...calssifyList,
]"
/>
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
<a-input v-model:value="valuecreater" style=" <a-input
v-model:value="valuecreater"
style="
width: 270px; width: 270px;
height: 40px; height: 40px;
border-radius: 8px; border-radius: 8px;
margin-right: 14px; margin-right: 14px;
" placeholder="请输入创建人" /> "
placeholder="请输入创建人"
/>
</div> </div>
<div class="inpbox1"> <div class="inpbox1">
<a-input v-model:value="valuename" style=" <a-input
v-model:value="valuename"
style="
width: 270px; width: 270px;
height: 40px; height: 40px;
border-radius: 8px; border-radius: 8px;
margin-right: 14px; margin-right: 14px;
" placeholder="请输入名称" /> "
placeholder="请输入名称"
/>
</div> </div>
</div> </div>
</div> </div>
@@ -47,20 +61,40 @@
</div> </div>
<div class="tmpl_body"> <div class="tmpl_body">
<div class="tmpl_tabbox"> <div class="tmpl_tabbox">
<a-table :columns="columns1" :data-source="tableData1" :loading="tableDataTotal === -1 ? true : false" <a-table
expandRowByClick="true" @expand="expandTable" :scroll="{ x: 1300 }" :pagination="false" /> :columns="columns1"
:data-source="tableData1"
:loading="tableDataTotal === -1 ? true : false"
expandRowByClick="true"
@expand="expandTable"
:scroll="{ x: 1300 }"
:pagination="false"
/>
</div> </div>
<div class="tableBox"> <div class="tableBox">
<div class="pa"> <div class="pa">
<a-pagination v-if="total > 10" showSizeChanger="true" show-quick-jumper :pageSize="pageSize" <a-pagination
v-model:current="currentPage" :total="total" class="pagination" @change="changePagination" /> v-if="total > 10"
showSizeChanger="true"
show-quick-jumper
:pageSize="pageSize"
v-model:current="currentPage"
:total="total"
class="pagination"
@change="changePagination"
/>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- 审核弹窗 --> <!-- 审核弹窗 -->
<a-modal v-model:visible="courAuditModal" :footer="null" :closable="closeBack" wrapClassName="courAuditModal" <a-modal
centered="true"> v-model:visible="courAuditModal"
:footer="null"
:closable="closeBack"
wrapClassName="courAuditModal"
centered="true"
>
<div class="delete"> <div class="delete">
<div class="del_header"></div> <div class="del_header"></div>
<div class="del_main"> <div class="del_main">
@@ -80,8 +114,14 @@
</div> </div>
</div> </div>
<div class="item" style="margin-top: 20px"> <div class="item" style="margin-top: 20px">
<div class="sign" style="position:relative;left:30px;top:-2px;"> <div
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> class="sign"
style="position: relative; left: 30px; top: -2px"
>
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<div class="left">审核意见</div> <div class="left">审核意见</div>
<div class="rig"> <div class="rig">
@@ -101,15 +141,30 @@
</div> </div>
</a-modal> </a-modal>
<!-- 预览弹窗 --> <!-- 预览弹窗 -->
<a-modal v-model:visible="lookCourseModal" title="Title" @ok="handlePush" :footer="null" :closable="false" <a-modal
wrapClassName="modalStyle lookCourseModal" width="80%" @cancel="ft_exit"> v-model:visible="lookCourseModal"
title="Title"
@ok="handlePush"
:footer="null"
:closable="false"
wrapClassName="modalStyle lookCourseModal"
width="80%"
@cancel="ft_exit"
>
<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" /> <img
style="width: 17px; height: 18px; margin-right: 8px"
src="../../assets/images/basicinfo/add.png"
/>
<span class="headerLeftText">预览</span> <span class="headerLeftText">预览</span>
</div> </div>
<div style="margin-right: 57px; cursor: pointer"> <div style="margin-right: 57px; cursor: pointer">
<img @click="ft_exit" style="width: 22px; height: 22px" src="../../assets/images/basicinfo/close22.png" /> <img
@click="ft_exit"
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close22.png"
/>
</div> </div>
</div> </div>
<div class="modalMain"> <div class="modalMain">
@@ -120,17 +175,26 @@
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 14px">课程名称</span> <span style="margin-right: 14px">课程名称</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i1_input">{{ faceDetailObj !== null ? faceDetailObj.name : "" }}</div> <div class="i1_input">
{{ faceDetailObj !== null ? faceDetailObj.name : "" }}
</div>
</div> </div>
</div> </div>
<div class="i2_cz"> <div class="i2_cz">
<div class="i2_top"> <div class="i2_top">
<div class="i2_right" @click="hideShow" style="cursor: pointer"> <div
class="i2_right"
@click="hideShow"
style="cursor: pointer"
>
<div class="b_icon"></div> <div class="b_icon"></div>
</div> </div>
</div> </div>
@@ -138,23 +202,37 @@
<div class="mbl_items2"> <div class="mbl_items2">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 14px">封面图</span> <span style="margin-right: 14px">封面图</span>
</div> </div>
<img ref="heroImg" alt="" style="width:100px;height:100px;" /> <img
ref="heroImg"
alt=""
style="width: 100px; height: 100px"
/>
<!-- <div class="item_inp"></div> --> <!-- <div class="item_inp"></div> -->
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img style="width: 10px; height: 10px" src="@/assets/images/coursewareManage/asterisk.png" <img
alt="" /> style="width: 10px; height: 10px"
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 14px">目标人群</span> <span style="margin-right: 14px">目标人群</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i1_input">{{ faceDetailObj !== null ? faceDetailObj.targetUser : "" }}</div> <div class="i1_input">
{{
faceDetailObj !== null ? faceDetailObj.targetUser : ""
}}
</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
@@ -162,7 +240,9 @@
<span style="margin-right: 14px">课程价值</span> <span style="margin-right: 14px">课程价值</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i1_input">{{ faceDetailObj !== null ? faceDetailObj.meaning : "" }}</div> <div class="i1_input">
{{ faceDetailObj !== null ? faceDetailObj.meaning : "" }}
</div>
</div> </div>
</div> </div>
<!-- <div class="mbl_items"> <!-- <div class="mbl_items">
@@ -179,15 +259,24 @@
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="" /> <img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div> </div>
<span style="margin-right: 14px">内容分类</span> <span style="margin-right: 14px">内容分类</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<!-- <div class="select i6_input">{{ faceDetailObj !== null ? faceDetailObj.categoryId : "" }}</div> --> <!-- <div class="select i6_input">{{ faceDetailObj !== null ? faceDetailObj.categoryId : "" }}</div> -->
<div class="select i6_input">{{ faceDetailObj !== null ? contentList11.find(e => e.dictCode == <div class="select i6_input">
faceDetailObj.categoryId)?.dictValue : "" {{
}}</div> faceDetailObj !== null
? contentList11.find(
(e) => e.dictCode == faceDetailObj.categoryId
)?.dictValue
: ""
}}
</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
@@ -196,29 +285,41 @@
</div> </div>
<div class="item_inp"> <div class="item_inp">
<!-- <div class="select i7_input">{{ faceDetailObj !== null ? faceDetailObj.sceneId : "" }}</div> --> <!-- <div class="select i7_input">{{ faceDetailObj !== null ? faceDetailObj.sceneId : "" }}</div> -->
<div class="select i7_input">{{ faceDetailObj !== null ? sceneist11.find(e => e.dictCode == <div class="select i7_input">
faceDetailObj.sceneId)?.dictValue {{
faceDetailObj !== null
? sceneist11.find(
(e) => e.dictCode == faceDetailObj.sceneId
)?.dictValue
: "" : ""
}}</div> }}
</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div class="item_nam"> <div class="item_nam">
<span style="margin-right: 14px">内容标签</span> <span style="margin-right: 14px">内容标签</span>
</div> </div>
<div class="item_inp">{{ faceDetailObj !== null ? faceDetailObj.tips : "" }}</div> <div class="item_inp">
{{ faceDetailObj !== null ? faceDetailObj.tips : "" }}
</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">
<div class="asterisk_icon"> <div class="asterisk_icon">
<img src="@/assets/images/coursewareManage/asterisk.png" alt="asterisk" /> <img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div> </div>
<span style="margin-right: 14px">授课教师</span> <span style="margin-right: 14px">授课教师</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i1_input">{{ faceDetailObj !== null ? faceDetailObj.teacher : "" }}</div> <div class="i1_input">
{{ faceDetailObj !== null ? faceDetailObj.teacher : "" }}
</div>
</div> </div>
</div> </div>
<div class="mbl_items2"> <div class="mbl_items2">
@@ -226,18 +327,35 @@
<span style="margin-right: 14px">课程简介</span> <span style="margin-right: 14px">课程简介</span>
</div> </div>
<div class="item_inp"> <div class="item_inp">
<div class="i10_textarea">{{ faceDetailObj !== null ? faceDetailObj.intro : "" }}</div> <div class="i10_textarea">
{{ faceDetailObj !== null ? faceDetailObj.intro : "" }}
</div>
</div> </div>
</div> </div>
<div class="mbl_items"> <div class="mbl_items">
<div v-if="(attachMap.length>0)" class="item_nam"> <div v-if="attachMap.length > 0" class="item_nam">
<span style="margin-right: 10px">附件</span> <span style="margin-right: 10px">附件</span>
</div> </div>
<div class="item_inp" v-for="(value, index) in attachMap" :key="index"> <div
class="item_inp"
v-for="(value, index) in attachMap"
:key="index"
>
<a> <a>
{{ ['附件一', '附件二', '附件三', '附件四', '附件五', '附件六'][index] }} {{
[
"附件一",
"附件二",
"附件三",
"附件四",
"附件五",
"附件六",
][index]
}}
</a> </a>
<a style="margin-left:120px;" :src="value" :href="value">查看</a> <a style="margin-left: 120px" :src="value" :href="value"
>查看</a
>
<!-- <a-upload multiple :show-upload-list="false" :before-upload="beforeUpload2"> <!-- <a-upload multiple :show-upload-list="false" :before-upload="beforeUpload2">
<div class="accessory" style="cursor: pointer"> <div class="accessory" style="cursor: pointer">
<div class="accessory_icon"> <div class="accessory_icon">
@@ -252,7 +370,11 @@
</div> </div>
</div> </div>
<div class="mbl_items12"> <div class="mbl_items12">
<div class="i12_box1" v-for="(item, index) in imgList" :key="index"> <div
class="i12_box1"
v-for="(item, index) in imgList"
:key="index"
>
<div class="file_img"> <div class="file_img">
<img :src="item.img" /> <img :src="item.img" />
</div> </div>
@@ -290,7 +412,18 @@
<div style="border: 1px solid #ccc"> <div style="border: 1px solid #ccc">
<!-- <Toolbar style="border-bottom: 1px solid #ccc;width:900px;height: 300px;" :defaultConfig="toolbarConfig" <!-- <Toolbar style="border-bottom: 1px solid #ccc;width:900px;height: 300px;" :defaultConfig="toolbarConfig"
:mode="mode" /> --> :mode="mode" /> -->
<Editor @focus="onEditorFocus" style="border-bottom: 1px solid #ccc;width:900px;height: 300px;" v-model="valueHtml" :defaultConfig="editorConfig" :mode="mode" @onCreated="handleCreated" /> <Editor
@focus="onEditorFocus"
style="
border-bottom: 1px solid #ccc;
width: 900px;
height: 300px;
"
v-model="valueHtml"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
/>
</div> </div>
</div> </div>
</div> </div>
@@ -308,10 +441,20 @@
</a-modal> </a-modal>
<!-- 审核在线课 --> <!-- 审核在线课 -->
<a-modal v-model:visible="onlineClassesVisible" :footer="null" :closable="false" <a-modal
wrapClassName="modalStyle onlineClassesStyle" :zIndex="9999"> v-model:visible="onlineClassesVisible"
<iframe id="iframe" style="width: 100%; height: 100%" :src="iframeUrl + 'course/noapproved'" name="myframe" :footer="null"
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"></iframe> :closable="false"
wrapClassName="modalStyle onlineClassesStyle"
:zIndex="9999"
>
<iframe
id="iframe"
style="width: 100%; height: 100%"
:src="iframeUrl + 'course/noapproved'"
name="myframe"
sandbox="allow-forms allow-scripts allow-same-origin allow-popups"
></iframe>
</a-modal> </a-modal>
</div> </div>
</template> </template>
@@ -382,7 +525,8 @@ export default {
dataIndex: "content", dataIndex: "content",
key: "content", key: "content",
align: "center", align: "center",
customRender: ({ text }) => state.calssifyList.find(e => e.value == text)?.label, customRender: ({ text }) =>
state.calssifyList.find((e) => e.value == text)?.label,
}, },
{ {
title: "状态", title: "状态",
@@ -434,9 +578,12 @@ export default {
onClick={() => { onClick={() => {
state.lookCourseModal = true; state.lookCourseModal = true;
getFaceDetail(value.record.offId); getFaceDetail(value.record.offId);
console.log(value.record) console.log(value.record);
}} }}
style="cursor:pointer;color:#387DF7">预览</span> style="cursor:pointer;color:#387DF7"
>
预览
</span>
</div> </div>
); );
}, },
@@ -454,11 +601,14 @@ export default {
* 获取字典列表 * 获取字典列表
* param faceclassPic | faceclassClass | faceclassScene * param faceclassPic | faceclassClass | faceclassScene
* */ * */
const getDictList = (param) => api1.getDict({ const getDictList = (param) =>
api1
.getDict({
pageNo: 1, pageNo: 1,
pageSize: 20, pageSize: 20,
setCode: param setCode: param,
}).then((res) => res.data.data.rows) })
.then((res) => res.data.data.rows);
const getFaceList = () => { const getFaceList = () => {
let objn = { let objn = {
@@ -468,7 +618,7 @@ export default {
name: state.valuename, name: state.valuename,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: 10, pageSize: 10,
projectName: "" projectName: "",
}; };
console.log(objn); console.log(objn);
@@ -503,20 +653,25 @@ export default {
console.log("获取面授详情信息成功", res); console.log("获取面授详情信息成功", res);
let result = res.data.data; let result = res.data.data;
state.faceDetailObj = result; state.faceDetailObj = result;
heroImg.value.src = result.picUrl heroImg.value.src = result.picUrl;
valueHtml.value = result.outline valueHtml.value = result.outline;
attachMap.value = result.attach==""?[]:result.attach.split(",") attachMap.value = result.attach == "" ? [] : result.attach.split(",");
console.log(result, attachMap.value); console.log(result, attachMap.value);
}) })
.catch((err) => { .catch((err) => {
console.log("获取面授详情信息失败", err); console.log("获取面授详情信息失败", err);
}); });
};
}
// 内容分类 场景 -- 目前直接写死的 // 内容分类 场景 -- 目前直接写死的
const sceneist11 = [{ dictCode: "6", dictValue: "场景一" }, { dictCode: "7", dictValue: "场景二" }] const sceneist11 = [
const contentList11 = [{ dictCode: "8", dictValue: "分类一" }, { dictCode: "5", dictValue: "分类二" }] { dictCode: "6", dictValue: "场景一" },
{ dictCode: "7", dictValue: "场景二" },
];
const contentList11 = [
{ dictCode: "8", dictValue: "分类一" },
{ dictCode: "5", dictValue: "分类二" },
];
// contentList11.find(e => e.dictCode == text)?.dictValue // contentList11.find(e => e.dictCode == text)?.dictValue
@@ -528,7 +683,7 @@ export default {
name: state.valuename, name: state.valuename,
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: 10, pageSize: 10,
projectName: "" projectName: "",
}; };
console.log(objn); console.log(objn);
@@ -547,22 +702,22 @@ export default {
.catch((err) => { .catch((err) => {
console.log("获取面授列表失败", err); console.log("获取面授列表失败", err);
}); });
} };
// 预览弹框 开启和关闭 // 预览弹框 开启和关闭
const ft_exit = () => { const ft_exit = () => {
state.lookCourseModal = false; state.lookCourseModal = false;
} };
const handlePush = () => { const handlePush = () => {
state.lookCourseModal = false; state.lookCourseModal = false;
} };
const setFaceData = (tableData) => { const setFaceData = (tableData) => {
if (!tableData || !tableData.length) { if (!tableData || !tableData.length) {
state.tableData1 = [] state.tableData1 = [];
return return;
} }
let data = tableData; let data = tableData;
let array = []; let array = [];
@@ -593,7 +748,7 @@ export default {
state.tableData1 = array; state.tableData1 = array;
}; };
const reset = () => { const reset = () => {
state.valueproj = ''; state.valueproj = "";
state.valuecreater = null; state.valuecreater = null;
state.valuename = null; state.valuename = null;
getFaceList(); getFaceList();
@@ -618,11 +773,15 @@ export default {
state.chooseOffId = null; state.chooseOffId = null;
}; };
const sureCourAuditModal = () => { const sureCourAuditModal = () => {
console.log(state.valueSugg) console.log(state.valueSugg);
if (state.valueSugg == null || state.valueSugg == undefined || state.valueSugg == "") { if (
state.valueSugg == null ||
state.valueSugg == undefined ||
state.valueSugg == ""
) {
message.destroy(); message.destroy();
message.error("请输入审核意见") message.error("请输入审核意见");
return return;
} }
courseAuditView({ courseAuditView({
@@ -638,7 +797,7 @@ export default {
message.destroy(); message.destroy();
message.success("审核提交成功"); message.success("审核提交成功");
state.valueSugg = null; state.valueSugg = null;
state.valuepass="1"; state.valuepass = "1";
getFaceList(); getFaceList();
}) })
.catch((err) => { .catch((err) => {
@@ -646,19 +805,22 @@ export default {
message.destroy(); message.destroy();
message.warning("审核提交失败"); message.warning("审核提交失败");
state.valueSugg = null; state.valueSugg = null;
state.valuepass="1"; state.valuepass = "1";
}); });
}; };
onMounted(async () => { onMounted(async () => {
getFaceList(); getFaceList();
//获取分类列表 //获取分类列表
state.calssifyList = (await getDictList("faceclassClass")).map(e => ({ label: e.dictName, value: e.dictCode })) state.calssifyList = (await getDictList("faceclassClass")).map((e) => ({
label: e.dictName,
value: e.dictCode,
}));
}); });
// 禁止用户编辑文本框内容 // 禁止用户编辑文本框内容
const onEditorFocus = (event) => { const onEditorFocus = (event) => {
event.enable(false); event.enable(false);
} };
return { return {
...toRefs(state), ...toRefs(state),
getFaceList, getFaceList,
@@ -677,7 +839,7 @@ export default {
attachMap, attachMap,
contentList11, contentList11,
sceneist11, sceneist11,
onEditorFocus onEditorFocus,
}; };
}, },
}; };
@@ -713,8 +875,10 @@ export default {
position: absolute; position: absolute;
width: calc(100%); width: calc(100%);
height: 68px; height: 68px;
background: linear-gradient(rgba(78, 166, 255, 0.2) 0%, background: linear-gradient(
rgba(78, 166, 255, 0) 100%); rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
} }
.del_main { .del_main {
@@ -822,7 +986,6 @@ export default {
.lookCourseModal { .lookCourseModal {
.ant-modal { .ant-modal {
.ant-modal-content { .ant-modal-content {
// width:1358px !important; // width:1358px !important;
.ant-modal-body { .ant-modal-body {
.modalHeader { .modalHeader {