MedicineInfoPg.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <el-form :rules="rules" :model="data" ref="form" class="sub-form">
  3. <!--<el-input v-model="form.orderNo" :value="index" type="hidden"></el-input>-->
  4. <el-form-item label="显示位置:" prop="position" label-width="160px">
  5. <el-checkbox-group v-model="data.position" :disabled="data.disabled">
  6. <el-checkbox v-for="it in positions" :key="it.key" :label="it.key">{{it.name}}</el-checkbox>
  7. </el-checkbox-group>
  8. </el-form-item>
  9. <el-form-item label="是否属于诊断依据:" prop="isReason" label-width="160px">
  10. <el-select v-model="data.isReason" placeholder="请选择" :disabled="data.disabled">
  11. <el-option label="否" :value="0"></el-option>
  12. <el-option label="是" :value="1"></el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item label="标题名称:" prop="title" label-width="160px">
  16. <el-input v-model="data.title" :disabled="data.disabled"></el-input>
  17. </el-form-item>
  18. <el-form-item label="内容" prop="content" label-width="160px">
  19. <quillEditor v-model="data.content"
  20. :options="editorOption"
  21. class="ql-editor"
  22. ref="quillEditor"></quillEditor>
  23. </el-form-item>
  24. <el-form-item label-width="130px">
  25. <el-button @click="addEmit">添加段落</el-button>
  26. <el-button @click="delEmit" type="info">删除本段落</el-button>
  27. </el-form-item>
  28. </el-form>
  29. </template>
  30. <script>
  31. import 'quill/dist/quill.core.css'
  32. import 'quill/dist/quill.snow.css'
  33. import 'quill/dist/quill.bubble.css'
  34. import {quillEditor, Quill} from 'vue-quill-editor'
  35. import config from '@api/config';
  36. import {container, ImageExtend, QuillWatch} from 'quill-image-extend-module';
  37. Quill.register('modules/ImageExtend', ImageExtend);
  38. export default{
  39. props:['data','index','isEdit'],
  40. name:'MedicineInfoParagraph',
  41. components:{
  42. quillEditor
  43. },
  44. data(){
  45. return {
  46. editorOption: {
  47. modules: {
  48. ImageExtend: {
  49. loading: true,
  50. name: 'upfile',
  51. action: config.urls.promptServer,
  52. response: (res) => {
  53. return config.imgHost+res.url;
  54. }
  55. },
  56. toolbar: {
  57. container: container,
  58. handlers: {
  59. 'image': function () {
  60. QuillWatch.emit(this.quill.id)
  61. }
  62. }
  63. }
  64. }
  65. },
  66. form:{
  67. position:[],
  68. orderNo:0
  69. },
  70. positions:[], //位置列表
  71. rules:{
  72. isReason: [
  73. { required: true, message: '请选择是否属于诊断', trigger: 'change' }
  74. ],
  75. position: [
  76. { required: true, message: '请选择显示位置', trigger: 'change' }
  77. ],
  78. title: [
  79. { required: true, message: '请输入段落标题', trigger: 'change' },
  80. { validator: (rule,value,callback)=>{
  81. if(value.length>30){
  82. callback(new Error('段落标题不能超过30字'));
  83. }else{
  84. callback();
  85. }}, trigger: 'change' }
  86. ],
  87. content: [
  88. { required: true, message: '请输入段落内容', trigger: 'change' }
  89. ],
  90. }
  91. }
  92. },
  93. watch:{
  94. 'data.content':function(){
  95. this.data.text = this.$refs.quillEditor.quill.root.innerText;
  96. }
  97. },
  98. mounted(){
  99. //显示位置枚举列表
  100. const pos = localStorage.getItem("knowledgeEnumsData");
  101. this.positions = JSON.parse(pos)&&JSON.parse(pos).positionTypeEnum;
  102. },
  103. methods:{
  104. addEmit(){
  105. this.$emit("add");
  106. },
  107. delEmit(){
  108. this.$emit("del",this.index);
  109. },
  110. /*emitVal(){
  111. let data = this.form;
  112. let pst=this.form.position;
  113. const content = this.form.content.replace(config.imgHost,'{imageUrlPrefix}');
  114. const text = this.$refs.quillEditor;console.log(text)
  115. pst = typeof pst=='string'?pst:pst.join(',');
  116. data = Object.assign({},data,{
  117. position:this.form.position?pst:'',
  118. orderNo:this.index,
  119. text:'',
  120. content:content});
  121. this.$emit("change",this.index,data);
  122. }*/
  123. }
  124. }
  125. </script>
  126. <style lang="less">
  127. .is-error .el-form-item__error{
  128. top:auto;
  129. }
  130. /**富文本编辑器样式修改***/
  131. .ql-snow .ql-picker.ql-size .ql-picker-label::before,
  132. .ql-snow .ql-picker.ql-size .ql-picker-item::before,
  133. .ql-snow .ql-picker.ql-header .ql-picker-label::before,
  134. .ql-snow .ql-picker.ql-header .ql-picker-item::before,
  135. .ql-snow .ql-picker.ql-font .ql-picker-label::before,
  136. .ql-snow .ql-picker.ql-font .ql-picker-item::before,
  137. .ql-snow .ql-color-picker .ql-picker-label svg,
  138. .ql-snow .ql-icon-picker .ql-picker-label svg{
  139. vertical-align: top;
  140. }
  141. </style>