-- 附件

This commit is contained in:
yuping
2022-12-08 00:53:10 +08:00
parent 806cb101b9
commit 90304e4e01
2 changed files with 155 additions and 250 deletions

View File

@@ -88,8 +88,8 @@ watch(files, () => {
watch(props, init)
function init() {
if (props.value && props.value !== files.value.map(e => e.url).join(',')) {
files.value = props.value.split(',').map(e => ({name: e, url: e}))
if (props.value !== files.value.map(e => e.url).join(',')) {
files.value = props.value ? props.value.split(',').map(e => ({name: e, url: e})) : []
}
}

View File

@@ -1,29 +1,29 @@
<!-- 确定新建面授课弹窗 -->
<!-- 确定新建面授课弹窗 -->
<template>
<a-modal
v-model:visible="ft_hs"
title="Title"
:footer="null"
:closable="false"
wrapClassName="modalStyle facteachModal"
width="80%"
@cancel="visibleClose"
@ok="handlePush"
v-model:visible="ft_hs"
title="Title"
:footer="null"
:closable="false"
wrapClassName="modalStyle facteachModal"
width="80%"
@cancel="visibleClose"
@ok="handlePush"
>
<div class="modalHeader">
<div class="headerLeft">
<img
style="width: 17px; height: 18px; margin-right: 8px"
src="@/assets/images/basicinfo/add.png"
style="width: 17px; height: 18px; margin-right: 8px"
src="@/assets/images/basicinfo/add.png"
/>
<span v-if="ft_eidt" class="headerLeftText">编辑面授课</span>
<span v-else class="headerLeftText">新建面授课</span>
</div>
<div style="margin-right: 57px; cursor: pointer">
<img
@click="visibleClose"
style="width: 22px; height: 22px"
src="@/assets/images/basicinfo/close22.png"
@click="visibleClose"
style="width: 22px; height: 22px"
src="@/assets/images/basicinfo/close22.png"
/>
</div>
</div>
@@ -42,8 +42,8 @@
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div>
<span style="margin-right: 14px">课程名称</span>
@@ -51,10 +51,10 @@
<div class="item_inp">
<div class="i1_input">
<a-input
v-model:value="qdms_inputV1"
maxlength="90"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入课程名称"
v-model:value="qdms_inputV1"
maxlength="90"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入课程名称"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
@@ -70,19 +70,19 @@
<span style="color: #999ba3">课程命名规则</span>
</div>
<div
class="i2_right"
@click="hideShow"
style="cursor: pointer"
class="i2_right"
@click="hideShow"
style="cursor: pointer"
>
<div
class="b_zk"
:style="{ display: hideshow ? 'block' : 'none' }"
class="b_zk"
:style="{ display: hideshow ? 'block' : 'none' }"
>
<span style="color: #4ea6ff">收起</span>
</div>
<div
class="b_sq"
:style="{ display: hideshow ? 'none' : 'block' }"
class="b_sq"
:style="{ display: hideshow ? 'none' : 'block' }"
>
<span style="color: #4ea6ff">展开</span>
</div>
@@ -90,14 +90,14 @@
</div>
</div>
<div
class="i2_detail"
:style="{ display: hideshow ? 'block' : 'none' }"
class="i2_detail"
:style="{ display: hideshow ? 'block' : 'none' }"
>
<span style="color: #999ba3">
1课程名称统一不加书名号<br />
1课程名称统一不加书名号<br/>
2项目名称属地等信息如需体现在课程名称中请放在课程名称信息
之后时间管理GROW180项目时间管理B*确保首先
看到的是课程内容主题<br />
看到的是课程内容主题<br/>
3同一课程如先后有多个版本原则上仅开放最新版本旧版本应停用
版本如必须以年份标明请以沟通技巧2022的方式呈现
</span>
@@ -107,32 +107,32 @@
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">封面图</span>
</div>
<div class="item_inp">
<a-select
:getPopupContainer="
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="feng_mian_1"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="optionsUrl"
allowClear
showSearch
v-model:value="feng_mian_1"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="optionsUrl"
allowClear
showSearch
/>
<img
class="i_upload_img"
v-if="feng_mian_1"
:src="feng_mian_1"
alt="avatar"
class="i_upload_img"
v-if="feng_mian_1"
:src="feng_mian_1"
alt="avatar"
/>
<div class="i_bottom">
<span style="color: #999ba3">
@@ -145,9 +145,9 @@
<div class="item_nam">
<div class="asterisk_icon">
<img
style="width: 10px; height: 10px"
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
style="width: 10px; height: 10px"
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span style="margin-right: 14px">目标人群</span>
@@ -155,10 +155,10 @@
<div class="item_inp">
<div class="i1_input">
<a-input
v-model:value="qdms_inputV2"
maxlength="50"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入目标人群"
v-model:value="qdms_inputV2"
maxlength="50"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入目标人群"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
@@ -175,10 +175,10 @@
<div class="item_inp">
<div class="i1_input">
<a-input
v-model:value="qdms_inputV3"
maxlength="200"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入课程价值"
v-model:value="qdms_inputV3"
maxlength="200"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入课程价值"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
@@ -192,8 +192,8 @@
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div>
<span style="margin-right: 14px">内容分类</span>
@@ -201,18 +201,18 @@
<div class="item_inp">
<div class="select i6_input">
<a-select
:getPopupContainer="
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="fen_lei"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="options2"
allowClear
showSearch
v-model:value="fen_lei"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="options2"
allowClear
showSearch
/>
</div>
</div>
@@ -224,18 +224,18 @@
<div class="item_inp">
<div class="select i7_input">
<a-select
:getPopupContainer="
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="chang_jin"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="options3"
allowClear
showSearch
v-model:value="chang_jin"
dropdownClassName="dropdown-style"
style="width: 440px"
placeholder="请选择"
:options="options3"
allowClear
showSearch
/>
</div>
</div>
@@ -246,17 +246,17 @@
</div>
<div class="item_inp">
<a-input
v-model:value="tags_val_single"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入按回车键创建成功"
@pressEnter="handleTagChange"
v-model:value="tags_val_single"
style="width: 440px; height: 40px; border-radius: 8px"
placeholder="请输入按回车键创建成功"
@pressEnter="handleTagChange"
/>
<div class="tag-content">
<a-tag
v-for="(item, index) in tags_val"
:key="index"
closable
@close="handleTagClose(item)"
v-for="(item, index) in tags_val"
:key="index"
closable
@close="handleTagClose(item)"
>
{{ item }}
</a-tag>
@@ -269,8 +269,8 @@
<div class="item_nam">
<div class="asterisk_icon">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
src="@/assets/images/coursewareManage/asterisk.png"
alt="asterisk"
/>
</div>
<!-- 授课教师1 -->
@@ -279,8 +279,8 @@
<div class="item_inp">
<div class="i1_input">
<ProjectManager
v-model:value="member.value"
v-model:name="member.name"
v-model:value="member.value"
v-model:name="member.name"
/>
</div>
</div>
@@ -292,10 +292,10 @@
<div class="item_inp">
<div class="i10_textarea">
<a-textarea
v-model:value="qdms_inputV6"
maxlength="150"
style="width: 440px; height: 100px; border-radius: 8px"
placeholder="请输入"
v-model:value="qdms_inputV6"
maxlength="150"
style="width: 440px; height: 100px; border-radius: 8px"
placeholder="请输入"
/>
<div class="inp_num">
<span style="color: #c7cbd2">
@@ -310,52 +310,7 @@
<span style="margin-right: 10px">附件</span>
</div>
<div class="item_inp">
<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"></div>
<div class="file_detail">
<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>
<!-- 条件渲染 e -->
</div>
<div class="file_operation">
<div class="fobox">
<span style="color: #4ea6ff" @click="handleDel(index)">
删除
</span>
</div>
</div>
<FJUpload v-model:value="attach"></FJUpload>
</div>
</div>
</div>
@@ -367,17 +322,17 @@
<div class="fotarea">
<div style="border: 1px solid #ccc">
<Toolbar
style="border-bottom: 1px solid #ccc"
:editor="editorRef"
:defaultConfig="toolbarConfig"
:mode="mode"
style="border-bottom: 1px solid #ccc"
:editor="editorRef"
:defaultConfig="toolbarConfig"
:mode="mode"
/>
<Editor
style="height: 250px; overflow-y: hidden"
v-model="valueHtml"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
style="height: 250px; overflow-y: hidden"
v-model="valueHtml"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
/>
</div>
</div>
@@ -408,29 +363,32 @@ import {
onMounted,
onBeforeUnmount,
} from "vue";
import { message } from "ant-design-vue";
import { edit, detail, handle } from "@/api/indexCourse";
import { fileUp } from "../../api/indexEval";
import {message} from "ant-design-vue";
import {edit, detail, handle} from "@/api/indexCourse";
import {fileUp} from "../../api/indexEval";
import * as api1 from "../../api/index1";
import "@wangeditor/editor/dist/css/style.css";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import {Editor, Toolbar} from "@wangeditor/editor-for-vue";
import ProjectManager from "@/components/project/ProjectManagerNew";
import FJUpload from "@/components/common/FJUpload";
import * as moment from "moment";
export default defineComponent({
components: {
Editor,
Toolbar,
FJUpload,
ProjectManager,
},
setup(props, { expose, emit }) {
setup(props, {expose, emit}) {
const state = reactive({
hideshow: true,
attach: '',
ft_hs: false,
addLoading: false,
statusJuJue: 0,
statusTingQi: 1,
member: { name: "", value: "" },
member: {name: "", value: ""},
offcourseId: null,
qdms_inputV1: "",
@@ -471,7 +429,7 @@ export default defineComponent({
state.addLoading = false;
state.statusJuJue = 0;
state.statusTingQi = 1;
state.member = { name: "", value: "" };
state.member = {name: "", value: ""};
state.offcourseId = null;
state.qdms_inputV1 = "";
@@ -484,6 +442,7 @@ export default defineComponent({
state.tags_val = [];
state.qdms_inputV6 = "";
state.imgList = [];
state.attach = '';
valueHtml.value = "";
};
@@ -509,7 +468,7 @@ export default defineComponent({
const toolbarConfig = {
excludeKeys: ["insertVideo", "insertImage"],
};
const editorConfig = { placeholder: "请输入内容...", MENU_CONF: {} };
const editorConfig = {placeholder: "请输入内容...", MENU_CONF: {}};
editorConfig.MENU_CONF["uploadImage"] = {
// 自定义上传
async customUpload(file, insertFn) {
@@ -534,45 +493,6 @@ export default defineComponent({
});
// 富文本 eeeeeeeeeeeeee
const beforeUpload2 = (file) => {
const fileType = [
"jpg",
"jpeg",
"png",
"gif",
"pdf",
"ppt",
"pptx",
"doc",
"docx",
"xls",
"xlsx",
"zip",
];
if (!fileType.includes(file.name.split(".")[1])) {
message.error(
"仅支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip格式!"
);
return false;
}
const formData = new FormData();
formData.append("file", file);
fileUp(formData).then((res) => {
if (res.data.code === 200) {
state.imgList.push({
img: res.data.data,
name: file.name,
size: file.size,
});
}
});
return false;
};
const handleDel = (index) => {
state.imgList.splice(index, 1);
};
//获取分类、场景、封面图、-----------字典配置-------------------------------
const optionsUrl = ref([]);
const options2 = ref([]);
@@ -585,48 +505,48 @@ export default defineComponent({
setCode: param,
};
api1
.getDict(obj)
.then((res) => {
console.log("获取字典成功", res);
if (res.data.code === 200) {
if (param === "faceclassPic") {
let arr = res.data.data.rows;
let newArr = [];
arr.forEach((item) => {
newArr.push({
value: item.dictValue,
label: item.dictName,
.getDict(obj)
.then((res) => {
console.log("获取字典成功", res);
if (res.data.code === 200) {
if (param === "faceclassPic") {
let arr = res.data.data.rows;
let newArr = [];
arr.forEach((item) => {
newArr.push({
value: item.dictValue,
label: item.dictName,
});
});
});
optionsUrl.value = newArr;
}
if (param === "faceclassClass") {
let arr = res.data.data.rows;
let newArr = [];
arr.forEach((item) => {
newArr.push({
value: item.dictCode,
label: item.dictName,
optionsUrl.value = newArr;
}
if (param === "faceclassClass") {
let arr = res.data.data.rows;
let newArr = [];
arr.forEach((item) => {
newArr.push({
value: item.dictCode,
label: item.dictName,
});
});
});
options2.value = newArr;
}
if (param === "faceclassScene") {
let arr = res.data.data.rows;
let newArr = [];
arr.forEach((item) => {
newArr.push({
value: item.dictCode,
label: item.dictName,
options2.value = newArr;
}
if (param === "faceclassScene") {
let arr = res.data.data.rows;
let newArr = [];
arr.forEach((item) => {
newArr.push({
value: item.dictCode,
label: item.dictName,
});
});
});
options3.value = newArr;
options3.value = newArr;
}
}
}
})
.catch((err) => {
console.log("获取字典失败", err);
});
})
.catch((err) => {
console.log("获取字典失败", err);
});
};
getDictList("faceclassClass");
getDictList("faceclassScene");
@@ -672,7 +592,7 @@ export default defineComponent({
teacherId: state.member.value,
teacher: state.member.name,
intro: state.qdms_inputV6,
attach: files,
attach: state.attach,
outline: valueHtml.value,
};
console.log("postData");
@@ -728,21 +648,9 @@ export default defineComponent({
state.chang_jin = String(item.sceneId);
state.tags_val = item.tips ? item.tips.split(",") : [];
state.qdms_inputV6 = item.intro;
state.member = { value: item.teacherId, name: item.teacher };
if (item.attach === "") {
state.imgList = [];
} else {
if (item.attach.indexOf(",")) {
const arr = item.attach.split(",");
arr.forEach((item) => {
state.imgList.push({ img: item });
});
} else {
state.imgList = [{ img: item.attach }];
}
}
state.member = {value: item.teacherId, name: item.teacher};
valueHtml.value = item.outline;
state.attach = item.attach;
state.ft_hs = true;
};
@@ -794,12 +702,9 @@ export default defineComponent({
handleTagChange,
handleTagClose,
handleCreated,
beforeUpload2,
handleDel,
handlePush,
submitReview,
reviewClick,
editorRef,
valueHtml,
mode: "simple", // 或 'simple'