|
@@ -1,5 +1,11 @@
|
|
|
<template>
|
|
|
- <el-form :rules="rules" :model="data" ref="form" class="sub-form">
|
|
|
+ <el-form
|
|
|
+ :rules="rules"
|
|
|
+ :model="data"
|
|
|
+ ref="form"
|
|
|
+ class="sub-form"
|
|
|
+ :validate-on-rule-change="false"
|
|
|
+ >
|
|
|
<!--<el-input v-model="form.orderNo" :value="index" type="hidden"></el-input>-->
|
|
|
<!-- <el-form-item label="是否属于诊断依据:" prop="isReason" label-width="160px">
|
|
|
<el-select v-model="data.isReason" placeholder="请选择">
|
|
@@ -103,29 +109,7 @@ export default {
|
|
|
},
|
|
|
positions: [], //位置列表
|
|
|
rules: {
|
|
|
- // isReason: [
|
|
|
- // { required: true, message: '请选择是否属于诊断', trigger: 'change' }
|
|
|
- // ],
|
|
|
- position: [
|
|
|
- { required: true, message: '请选择内容类型', trigger: 'blur' }
|
|
|
- ],
|
|
|
- title: [
|
|
|
- { required: true, message: '请输入段落标题', trigger: 'change' },
|
|
|
- { max: 30, message: '标题名称不能超过30字', trigger: 'change' }
|
|
|
- // {
|
|
|
- // validator: (rule, value, callback) => {
|
|
|
- // if (value.length > 30) {
|
|
|
- // callback(new Error('标题名称不能超过30字'));
|
|
|
- // } else {
|
|
|
- // callback();
|
|
|
- // }
|
|
|
- // },
|
|
|
- // trigger: 'change'
|
|
|
- // }
|
|
|
- ],
|
|
|
- content: [
|
|
|
- { required: true, message: '请输入段落内容', trigger: 'change' }
|
|
|
- ]
|
|
|
+
|
|
|
}
|
|
|
};
|
|
|
},
|
|
@@ -134,7 +118,10 @@ export default {
|
|
|
if (this.data.content !== '') {
|
|
|
this.$refs.editor && this.$refs.editor.clearValidate(); // 清除校验
|
|
|
}
|
|
|
-
|
|
|
+ if (this.data.content === ''){
|
|
|
+ // console.log('内容为空');
|
|
|
+ this.$refs['form'].validateField('content') // 手动校验
|
|
|
+ }
|
|
|
this.data.text = this.$refs.quillEditor.quill.root.innerText;
|
|
|
}
|
|
|
},
|
|
@@ -143,26 +130,40 @@ export default {
|
|
|
this.editorOption.modules.toolbar.container = this.toolbars[
|
|
|
this.toolbarMode
|
|
|
];
|
|
|
- },
|
|
|
- mounted() {
|
|
|
- //显示位置枚举列表
|
|
|
- const pos = localStorage.getItem('knowledgeEnumsData');
|
|
|
- let positions = config.contentTypes;
|
|
|
- if (this.showType == 1) {
|
|
|
- // 诊断
|
|
|
- this.positions = positions.filter(item => item.key !== 2);
|
|
|
- } else if (this.showType == 3 || this.showType == 4 || this.showType == 5) {
|
|
|
- // 检验/检查
|
|
|
- this.positions = positions.filter(item => {
|
|
|
- return item.key <= 2;
|
|
|
- });
|
|
|
- } else if (this.showType == 2 || this.showType == 6) {
|
|
|
- // 药品/手术
|
|
|
- this.positions = positions.filter(item => item.key === 1);
|
|
|
- } else {
|
|
|
- this.positions = positions;
|
|
|
+ this.renderPositions();
|
|
|
+ if (this.isEdit) {
|
|
|
+ setTimeout(() => {
|
|
|
+ this.rules = {
|
|
|
+ position: [
|
|
|
+ { required: true, message: '请选择内容类型', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ title: [
|
|
|
+ { required: true, message: '请输入段落标题', trigger: 'change' },
|
|
|
+ { max: 30, message: '标题名称不能超过30字', trigger: 'change' }
|
|
|
+
|
|
|
+ ],
|
|
|
+ content: [
|
|
|
+ { required: true, message: '请输入段落内容', trigger: 'change' }
|
|
|
+ ]
|
|
|
+ };
|
|
|
+ }, 100);
|
|
|
+ }else{
|
|
|
+ this.rules = {
|
|
|
+ position: [
|
|
|
+ { required: true, message: '请选择内容类型', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ title: [
|
|
|
+ { required: true, message: '请输入段落标题', trigger: 'change' },
|
|
|
+ { max: 30, message: '标题名称不能超过30字', trigger: 'change' }
|
|
|
+
|
|
|
+ ],
|
|
|
+ content: [
|
|
|
+ { required: true, message: '请输入段落内容', trigger: 'change' }
|
|
|
+ ]
|
|
|
+ };
|
|
|
}
|
|
|
},
|
|
|
+ mounted() {},
|
|
|
methods: {
|
|
|
reOrder(i) {
|
|
|
this.$emit('reOrder', i, this.index);
|
|
@@ -172,6 +173,30 @@ export default {
|
|
|
},
|
|
|
delEmit() {
|
|
|
this.$emit('del', this.index);
|
|
|
+ },
|
|
|
+ // 渲染内容类型
|
|
|
+ renderPositions() {
|
|
|
+ //显示位置枚举列表
|
|
|
+ const pos = localStorage.getItem('knowledgeEnumsData');
|
|
|
+ let positions = config.contentTypes;
|
|
|
+ if (this.showType == 1) {
|
|
|
+ // 诊断
|
|
|
+ this.positions = positions.filter(item => item.key !== 2);
|
|
|
+ } else if (
|
|
|
+ this.showType == 3 ||
|
|
|
+ this.showType == 4 ||
|
|
|
+ this.showType == 5
|
|
|
+ ) {
|
|
|
+ // 检验/检查
|
|
|
+ this.positions = positions.filter(item => {
|
|
|
+ return item.key <= 2;
|
|
|
+ });
|
|
|
+ } else if (this.showType == 2 || this.showType == 6) {
|
|
|
+ // 药品/手术
|
|
|
+ this.positions = positions.filter(item => item.key === 1);
|
|
|
+ } else {
|
|
|
+ this.positions = positions;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*emitVal(){
|
|
@@ -192,6 +217,7 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style lang="less">
|
|
|
+
|
|
|
.quill-editor.ql-editor {
|
|
|
padding-left: 0 !important;
|
|
|
}
|
|
@@ -224,16 +250,19 @@ export default {
|
|
|
/**富文本编辑器样式修改***/
|
|
|
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
|
|
|
.ql-snow .ql-picker.ql-size .ql-picker-item::before,
|
|
|
-.ql-snow .ql-picker.ql-header .ql-picker-label::before,
|
|
|
-.ql-snow .ql-picker.ql-header .ql-picker-item::before,
|
|
|
-.ql-snow .ql-picker.ql-font .ql-picker-label::before,
|
|
|
-.ql-snow .ql-picker.ql-font .ql-picker-item::before,
|
|
|
-.ql-snow .ql-color-picker .ql-picker-label svg,
|
|
|
-.ql-snow .ql-icon-picker .ql-picker-label svg {
|
|
|
- vertical-align: top;
|
|
|
+.ql-snow .ql-picker.ql-header .ql-picker-label::before,it
|
|
|
+.ql-editor,.quill-editor{
|
|
|
+ padding-top: 0px !important;
|
|
|
+ margin-top: -8px;
|
|
|
+ min-height: 48px;
|
|
|
+ p{
|
|
|
+ padding-top: 8px;
|
|
|
+ }
|
|
|
}
|
|
|
-
|
|
|
-.btns {
|
|
|
- margin-top: 24px;
|
|
|
+.ql-editor.ql-blank::before{
|
|
|
+ padding-top: 0px
|
|
|
+}
|
|
|
+.btns{
|
|
|
+ margin-top: 20px;
|
|
|
}
|
|
|
</style>
|