Commit ad73f2de by 裴梁博

Merge branch 'feature/v1/plb' into 'feature/v1/zmj'

Feature/v1/plb

See merge request !1
parents 837b90ca d4a680a5
......@@ -56,13 +56,19 @@ export default {
type: {
type: String,
default: "url",
}
},
iconType: {
type: Array,
default: () => {
return ["link", "image", "video"]; // 链接、图片、视频
},
},
},
data() {
return {
uploadUrl: process.env.VUE_APP_BASE_API + "/system/oss/upload", // 上传的图片服务器地址
headers: {
Authorization: "Bearer " + getToken()
Authorization: "Bearer " + getToken(),
},
Quill: null,
currentValue: "",
......@@ -73,16 +79,16 @@ export default {
modules: {
// 工具栏配置
toolbar: [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
[{ indent: "-1" }, { indent: "+1" }], // 缩进
[{ size: ["small", false, "large", "huge"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ align: [] }], // 对齐方式
["clean"], // 清除文本格式
["link", "image", "video"] // 链接、图片、视频
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
[{ indent: "-1" }, { indent: "+1" }], // 缩进
[{ size: ["small", false, "large", "huge"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ align: [] }], // 对齐方式
["clean"], // 清除文本格式
this.iconType, // 链接、图片、视频
],
},
placeholder: "请输入内容",
......@@ -126,7 +132,7 @@ export default {
const editor = this.$refs.editor;
this.Quill = new Quill(editor, this.options);
// 如果设置了上传地址则自定义图片上传事件
if (this.type == 'url') {
if (this.type == "url") {
let toolbar = this.Quill.getModule("toolbar");
toolbar.addHandler("image", (value) => {
this.uploadType = "image";
......@@ -191,7 +197,8 @@ export default {
</script>
<style>
.editor, .ql-toolbar {
.editor,
.ql-toolbar {
white-space: pre-wrap !important;
line-height: normal !important;
}
......
......@@ -237,7 +237,7 @@
></div>
<div class="app-container-list-item-footer">
<el-button icon="el-icon-edit-outline">编辑</el-button>
<el-button icon="el-icon-edit-delete">删除</el-button>
<el-button icon="el-icon-delete">删除</el-button>
</div>
</div>
</div>
......@@ -311,191 +311,215 @@
/>
<!-- 添加或修改题库主对话框 -->
<el-dialog :title="title" :visible.sync="open" width="70%" append-to-body>
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="120px"
label-position="top"
class="app-container-form"
<template v-if="open">
<el-dialog
:title="title"
:visible.sync="open"
width="70%"
append-to-body
destroy-on-close
>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="题库类别" prop="categoryId">
<el-select
clearable
v-model="form.categoryId"
placeholder="请选择题库类别"
>
<el-option
v-for="item in [
{ label: '集合', value: '1' },
{ label: '不等式', value: '2' },
{ label: '函数', value: '3' },
{ label: '数列', value: '4' },
{ label: '立体几何', value: '5' },
]"
:key="item.value"
:label="item.label"
:value="item.value"
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="120px"
label-position="top"
class="app-container-form"
>
<el-row :gutter="24">
<el-col :span="6">
<el-form-item label="题库类别" prop="categoryId">
<el-select
clearable
v-model="form.categoryId"
placeholder="请选择题库类别"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="年级阶段" prop="phaseId">
<el-select
clearable
v-model="form.phaseId"
placeholder="请选择阶段"
@change="handleQuery"
>
<el-option
v-for="item in [
{ label: '高一', value: '1' },
{ label: '高二', value: '2' },
{ label: '高三', value: '3' },
]"
:key="item.value"
:label="item.label"
:value="item.value"
<el-option
v-for="item in [
{ label: '集合', value: '1' },
{ label: '不等式', value: '2' },
{ label: '函数', value: '3' },
{ label: '数列', value: '4' },
{ label: '立体几何', value: '5' },
]"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="年级阶段" prop="phaseId">
<el-select
clearable
v-model="form.phaseId"
placeholder="请选择阶段"
@change="handleQuery"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="强度分类:" prop="intensity">
<!-- 1基础,2中等,3提高 -->
<el-select
clearable
v-model="form.intensity"
placeholder="请选择强度"
>
<el-option
v-for="item in [
{ label: '基础', value: '1' },
{ label: '中等', value: '2' },
{ label: '提高', value: '3' },
]"
:key="item.value"
:label="item.label"
:value="item.value"
<el-option
v-for="item in [
{ label: '高一', value: '1' },
{ label: '高二', value: '2' },
{ label: '高三', value: '3' },
]"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="强度分类:" prop="intensity">
<!-- 1基础,2中等,3提高 -->
<el-select
clearable
v-model="form.intensity"
placeholder="请选择强度"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="习题种类:" prop="species">
<!-- 1填空,2选择,3解答 -->
<el-select
clearable
v-model="form.species"
placeholder="请选择习题种类"
@change="changeSpecies"
>
<el-option
v-for="item in [
{ label: '填空', value: '1' },
{ label: '选择', value: '2' },
{ label: '解答', value: '3' },
]"
:key="item.value"
:label="item.label"
:value="item.value"
<el-option
v-for="item in [
{ label: '基础', value: '1' },
{ label: '中等', value: '2' },
{ label: '提高', value: '3' },
]"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="习题种类:" prop="species">
<!-- 1填空,2选择,3解答 -->
<el-select
clearable
v-model="form.species"
placeholder="请选择习题种类"
@change="changeSpecies"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="18">
<el-form-item label="题目" prop="topic">
<editor v-model="form.topic" :min-height="192" />
</el-form-item>
<template v-if="[1, '1', 3, '3'].includes(form.species)">
<el-form-item label="答案" prop="answer">
<editor v-model="form.answer" :min-height="192" />
<el-option
v-for="item in [
{ label: '填空', value: '1' },
{ label: '选择', value: '2' },
{ label: '解答', value: '3' },
]"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="答案图片" prop="rightAnswersPic">
<imageUpload :limit="9" v-model="form.rightAnswersPic" />
</el-col>
<el-col :span="18">
<el-form-item label="题目" prop="topic">
<editor
v-model="form.topic"
:min-height="192"
:iconType="['image']"
/>
</el-form-item>
</template>
<template v-if="[2, '2'].includes(form.species)">
<el-form-item label="选项" prop="checkList">
<div class="app-container-form-check">
<i
class="el-icon-circle-plus-outline app-container-form-check-add"
v-if="!form.checkList || !form.checkList.length"
@click="clickAddCheckList"
></i>
<div
v-for="(item, index) in form.checkList"
:key="index"
class="app-container-form-check-item"
>
<span class="app-container-form-check-item-type">{{
index | filterType(form.checkList)
}}</span
><i
v-if="index + 1 === form.checkList.length"
class="el-icon-circle-plus-outline app-container-form-check-item-add"
@click="clickCheckItemAdd(index)"
></i>
<template v-if="[1, '1', 3, '3'].includes(form.species)">
<el-form-item label="答案" prop="answer">
<editor
v-model="form.answer"
:min-height="192"
:iconType="['image']"
/>
</el-form-item>
<el-form-item label="答案图片" prop="rightAnswersPic">
<imageUpload :limit="9" v-model="form.rightAnswersPic" />
</el-form-item>
</template>
<template v-if="[2, '2'].includes(form.species)">
<el-form-item label="选项" prop="checkList">
<div class="app-container-form-check">
<i
class="el-icon-remove-outline app-container-form-check-item-del"
v-else
@click="clickCheckItemDel(index)"
class="el-icon-circle-plus-outline app-container-form-check-add"
v-if="!form.checkList || !form.checkList.length"
@click="clickAddCheckList"
></i>
<editor v-model="item.html" :min-height="192" />
<div
v-for="(item, index) in form.checkList"
:key="index"
class="app-container-form-check-item"
>
<span class="app-container-form-check-item-type">{{
index | filterType(form.checkList)
}}</span
><i
v-if="index + 1 === form.checkList.length"
class="el-icon-circle-plus-outline app-container-form-check-item-add"
@click="clickCheckItemAdd(index)"
></i>
<i
class="el-icon-remove-outline app-container-form-check-item-del"
v-else
@click="clickCheckItemDel(index)"
></i>
<editor
v-model="item.html"
:min-height="192"
:iconType="['image']"
/>
</div>
</div>
</div>
</el-form-item>
<el-form-item
label="标准答案"
prop="rightAnswers"
v-if="form.checkList && form.checkList.length"
>
<el-radio-group v-model="form.rightAnswers">
<el-radio
:label="index"
v-for="(item, index) in form.checkList"
:key="index"
>{{ index | filterType(form.checkList) }}</el-radio
>
</el-radio-group>
</el-form-item>
</template>
<el-form-item label="典例精讲" prop="explain">
<el-switch
@change="changeExplain"
v-model="form.explain"
active-color="#409eff"
>
</el-switch>
</el-form-item>
<template v-if="form.explain">
<el-form-item label="解答过程" prop="resolveCourse">
<editor v-model="form.resolveCourse" :min-height="192" />
</el-form-item>
<el-form-item label="解答视频" prop="resolveVideo">
<fileUpload
v-model="form.resolveVideo"
:limit="1"
:fileSize="10000"
:fileType="['mp4', 'mp3']"
/>
</el-form-item>
<el-form-item
label="标准答案"
prop="rightAnswers"
v-if="form.checkList && form.checkList.length"
>
<el-radio-group v-model="form.rightAnswers">
<el-radio
:label="index"
v-for="(item, index) in form.checkList"
:key="index"
>{{ index | filterType(form.checkList) }}</el-radio
>
</el-radio-group>
</el-form-item>
</template>
<el-form-item label="典例精讲" prop="explain">
<el-switch
@change="changeExplain"
v-model="form.explain"
active-color="#409eff"
>
</el-switch>
</el-form-item>
</template>
</el-col>
</el-row>
<!-- <el-form-item label="备注" prop="remark">
<template v-if="form.explain">
<el-form-item label="解答过程" prop="resolveCourse">
<editor
v-model="form.resolveCourse"
:min-height="192"
:iconType="['image']"
/>
</el-form-item>
<el-form-item label="解答视频" prop="resolveVideo">
<fileUpload
v-model="form.resolveVideo"
:limit="1"
:fileSize="1024"
:fileType="['mp4', 'mp3']"
/>
</el-form-item>
</template>
</el-col>
</el-row>
<!-- <el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item> -->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
</div>
</template>
......@@ -760,7 +784,7 @@ export default {
isKong = false;
if (index < 25) {
self.form.checkList.forEach((item, ik) => {
if (self.IsEmptyStr(self.getWangEditorText(item.html + '') + "")) {
if (self.IsEmptyStr(self.getWangEditorText(item.html + "") + "")) {
isKong = true;
}
});
......@@ -839,7 +863,7 @@ export default {
});
},
getWangEditorText(str) {
console.log(str,"========str")
console.log(str, "========str");
if (str) {
return str
.replace(/<[^<p>]+>/g, "") // 将所有<p>标签 replace ''
......@@ -859,18 +883,19 @@ export default {
},
/** 提交按钮 */
submitForm() {
let self = this,isKong = false;
let self = this,
isKong = false;
self.isEditor("topic");
if(self.form.checkList && self.form.checkList.length) {
if (self.form.checkList && self.form.checkList.length) {
self.form.checkList.forEach((item, ik) => {
console.log(item.html)
if (self.IsEmptyStr(self.getWangEditorText(item.html + '') + "")) {
console.log(item.html);
if (self.IsEmptyStr(self.getWangEditorText(item.html + "") + "")) {
isKong = true;
}
});
if (isKong) {
self.$message.warning("请填写选项内容");
self.$refs.form.validateField('checkList');
self.$refs.form.validateField("checkList");
}
}
if (self.form.explain) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment