Browse Source

活动规则

panhui 4 years ago
parent
commit
6dbb7ef3c3

+ 87 - 7
src/main/vue/src/components/RichText.vue

@@ -32,11 +32,93 @@ import 'tinymce/skins/ui/oxide/skin.css';
 import 'tinymce/icons/default/index';
 
 export default {
-    props: ['value', 'disabled'],
-    created() {},
+    props: {
+        value: {
+            type: String,
+            default: ''
+        },
+        disabled: {
+            type: Boolean,
+            default: false
+        },
+        onlyText: {
+            type: Boolean,
+            default: false
+        }
+    },
     data() {
         return {
-            init: {
+            editor: null,
+            content: ''
+        };
+    },
+    computed: {
+        init() {
+            if (this.onlyText) {
+                return {
+                    language: 'zh_CN',
+                    theme: 'silver',
+                    skin: 'oxide',
+                    menubar: false,
+                    branding: false,
+                    statusbar: false,
+                    height: 400,
+                    toolbar:
+                        'undo redo | styleselect bold italic strikethrough forecolor backcolor  | formatselect | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat | preview fullscreen code help',
+                    plugins: [
+                        'advlist autolink lists link image charmap print preview anchor textcolor',
+                        'searchreplace visualblocks code fullscreen',
+                        'insertdatetime media table contextmenu paste code help imagetools'
+                    ],
+                    images_upload_url: this.$baseUrl + '/upload/file',
+                    images_upload_handler: (blobInfo, success, failure) => {
+                        let formData = new FormData();
+                        formData.append('file', blobInfo.blob(), blobInfo.filename());
+                        this.$axios
+                            .post('/upload/file', formData)
+                            .then(res => {
+                                success(res.data);
+                            })
+                            .catch(e => {
+                                failure(e);
+                            });
+                    },
+                    init_instance_callback: editor => {
+                        this.editor = editor;
+                    },
+                    file_picker_types: 'media',
+                    relative_urls: false,
+                    remove_script_host: false,
+                    convert_urls: true,
+                    file_picker_callback: (cb, value, meta) => {
+                        var input = document.createElement('input');
+                        input.setAttribute('type', 'file');
+                        input.setAttribute('accept', 'video/*');
+                        input.onchange = e => {
+                            var file = input.files[0];
+
+                            var reader = new FileReader();
+                            reader.readAsDataURL(file);
+                            reader.onload = () => {
+                                let formData = new FormData();
+                                formData.append('file', file);
+                                this.$axios
+                                    .post('/upload/file', formData)
+                                    .then(res => {
+                                        cb(res.data);
+                                    })
+                                    .catch(e => {
+                                        console.log(e);
+                                    });
+                            };
+                        };
+
+                        input.click();
+                    }
+                };
+            }
+
+            return {
                 language: 'zh_CN',
                 theme: 'silver',
                 skin: 'oxide',
@@ -96,10 +178,8 @@ export default {
 
                     input.click();
                 }
-            },
-            editor: null,
-            content: ''
-        };
+            };
+        }
     },
     methods: {
         onInput(val) {

+ 3 - 0
src/main/vue/src/views/BlindBoxEdit.vue

@@ -270,6 +270,9 @@
                     <el-form-item label="注册海报" v-if="formData.assignment > 0">
                         <single-upload v-model="formData.registerBg"></single-upload>
                     </el-form-item>
+                    <el-form-item label="活动规则" v-if="formData.assignment > 0">
+                         <rich-text style="width:500px" onlyText v-model="formData.rule"></rich-text>
+                    </el-form-item>
                     <el-form-item class="form-submit">
                         <el-button @click="onSave" :loading="saving" type="primary" v-if="!formData.id">
                             保存

+ 3 - 0
src/main/vue/src/views/CollectionEdit.vue

@@ -317,6 +317,9 @@
                     <el-form-item label="注册海报" v-if="formData.assignment > 0">
                         <single-upload v-model="formData.registerBg"></single-upload>
                     </el-form-item>
+                    <el-form-item label="活动规则" v-if="formData.assignment > 0">
+                         <rich-text style="width:500px" onlyText v-model="formData.rule"></rich-text>
+                    </el-form-item>
 
                     <el-form-item class="form-submit">
                         <el-button @click="onSave" :loading="saving" type="primary"> 保存 </el-button>