Kaynağa Gözat

发布文章页面的开发

xiaoming_global 6 yıl önce
ebeveyn
işleme
a57bf51b41

+ 2 - 1
config/dev.env.js Dosyayı Görüntüle

@@ -1,6 +1,7 @@
1 1
 module.exports = {
2 2
   NODE_ENV: '"development"',
3 3
   ENV_CONFIG: '"dev"',
4
-  BASE_API: '"http://api.test1.sgjyun.com"', // // http://localhost:8090
4
+  //BASE_API:'"http://api.test1.sgjyun.com"',//'"http://localhost:9534"'
5
+  BASE_API:'"http://localhost:9534"'
5 6
 }
6 7
 

+ 2 - 1
config/index.js Dosyayı Görüntüle

@@ -19,7 +19,8 @@ module.exports = {
19 19
 
20 20
     // host: 'test1.sgjyun.com',
21 21
     // host: 'jk.kuyicloud.com',
22
-    host: 'test1.sgjyun.com',
22
+    //host: 'test1.sgjyun.com',
23
+    host:'localhost',
23 24
     port: 8090, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
24 25
     autoOpenBrowser: true,
25 26
     errorOverlay: true,

+ 30 - 11
package-lock.json Dosyayı Görüntüle

@@ -4706,7 +4706,8 @@
4706 4706
         "ansi-regex": {
4707 4707
           "version": "2.1.1",
4708 4708
           "bundled": true,
4709
-          "dev": true
4709
+          "dev": true,
4710
+          "optional": true
4710 4711
         },
4711 4712
         "aproba": {
4712 4713
           "version": "1.2.0",
@@ -4727,12 +4728,14 @@
4727 4728
         "balanced-match": {
4728 4729
           "version": "1.0.0",
4729 4730
           "bundled": true,
4730
-          "dev": true
4731
+          "dev": true,
4732
+          "optional": true
4731 4733
         },
4732 4734
         "brace-expansion": {
4733 4735
           "version": "1.1.11",
4734 4736
           "bundled": true,
4735 4737
           "dev": true,
4738
+          "optional": true,
4736 4739
           "requires": {
4737 4740
             "balanced-match": "^1.0.0",
4738 4741
             "concat-map": "0.0.1"
@@ -4747,17 +4750,20 @@
4747 4750
         "code-point-at": {
4748 4751
           "version": "1.1.0",
4749 4752
           "bundled": true,
4750
-          "dev": true
4753
+          "dev": true,
4754
+          "optional": true
4751 4755
         },
4752 4756
         "concat-map": {
4753 4757
           "version": "0.0.1",
4754 4758
           "bundled": true,
4755
-          "dev": true
4759
+          "dev": true,
4760
+          "optional": true
4756 4761
         },
4757 4762
         "console-control-strings": {
4758 4763
           "version": "1.1.0",
4759 4764
           "bundled": true,
4760
-          "dev": true
4765
+          "dev": true,
4766
+          "optional": true
4761 4767
         },
4762 4768
         "core-util-is": {
4763 4769
           "version": "1.0.2",
@@ -4874,7 +4880,8 @@
4874 4880
         "inherits": {
4875 4881
           "version": "2.0.3",
4876 4882
           "bundled": true,
4877
-          "dev": true
4883
+          "dev": true,
4884
+          "optional": true
4878 4885
         },
4879 4886
         "ini": {
4880 4887
           "version": "1.3.5",
@@ -4886,6 +4893,7 @@
4886 4893
           "version": "1.0.0",
4887 4894
           "bundled": true,
4888 4895
           "dev": true,
4896
+          "optional": true,
4889 4897
           "requires": {
4890 4898
             "number-is-nan": "^1.0.0"
4891 4899
           }
@@ -4900,6 +4908,7 @@
4900 4908
           "version": "3.0.4",
4901 4909
           "bundled": true,
4902 4910
           "dev": true,
4911
+          "optional": true,
4903 4912
           "requires": {
4904 4913
             "brace-expansion": "^1.1.7"
4905 4914
           }
@@ -4907,12 +4916,14 @@
4907 4916
         "minimist": {
4908 4917
           "version": "0.0.8",
4909 4918
           "bundled": true,
4910
-          "dev": true
4919
+          "dev": true,
4920
+          "optional": true
4911 4921
         },
4912 4922
         "minipass": {
4913 4923
           "version": "2.3.5",
4914 4924
           "bundled": true,
4915 4925
           "dev": true,
4926
+          "optional": true,
4916 4927
           "requires": {
4917 4928
             "safe-buffer": "^5.1.2",
4918 4929
             "yallist": "^3.0.0"
@@ -4931,6 +4942,7 @@
4931 4942
           "version": "0.5.1",
4932 4943
           "bundled": true,
4933 4944
           "dev": true,
4945
+          "optional": true,
4934 4946
           "requires": {
4935 4947
             "minimist": "0.0.8"
4936 4948
           }
@@ -5011,7 +5023,8 @@
5011 5023
         "number-is-nan": {
5012 5024
           "version": "1.0.1",
5013 5025
           "bundled": true,
5014
-          "dev": true
5026
+          "dev": true,
5027
+          "optional": true
5015 5028
         },
5016 5029
         "object-assign": {
5017 5030
           "version": "4.1.1",
@@ -5023,6 +5036,7 @@
5023 5036
           "version": "1.4.0",
5024 5037
           "bundled": true,
5025 5038
           "dev": true,
5039
+          "optional": true,
5026 5040
           "requires": {
5027 5041
             "wrappy": "1"
5028 5042
           }
@@ -5108,7 +5122,8 @@
5108 5122
         "safe-buffer": {
5109 5123
           "version": "5.1.2",
5110 5124
           "bundled": true,
5111
-          "dev": true
5125
+          "dev": true,
5126
+          "optional": true
5112 5127
         },
5113 5128
         "safer-buffer": {
5114 5129
           "version": "2.1.2",
@@ -5144,6 +5159,7 @@
5144 5159
           "version": "1.0.2",
5145 5160
           "bundled": true,
5146 5161
           "dev": true,
5162
+          "optional": true,
5147 5163
           "requires": {
5148 5164
             "code-point-at": "^1.0.0",
5149 5165
             "is-fullwidth-code-point": "^1.0.0",
@@ -5163,6 +5179,7 @@
5163 5179
           "version": "3.0.1",
5164 5180
           "bundled": true,
5165 5181
           "dev": true,
5182
+          "optional": true,
5166 5183
           "requires": {
5167 5184
             "ansi-regex": "^2.0.0"
5168 5185
           }
@@ -5206,12 +5223,14 @@
5206 5223
         "wrappy": {
5207 5224
           "version": "1.0.2",
5208 5225
           "bundled": true,
5209
-          "dev": true
5226
+          "dev": true,
5227
+          "optional": true
5210 5228
         },
5211 5229
         "yallist": {
5212 5230
           "version": "3.0.3",
5213 5231
           "bundled": true,
5214
-          "dev": true
5232
+          "dev": true,
5233
+          "optional": true
5215 5234
         }
5216 5235
       }
5217 5236
     },

+ 10 - 0
src/api/act/submitinfo.js Dosyayı Görüntüle

@@ -0,0 +1,10 @@
1
+import request from '@/utils/request'
2
+
3
+export function submitForm (params){
4
+    console.log("文章列表",params)
5
+    return request({
6
+        url: '/api/acticle/createacticle',
7
+        method: 'Get',
8
+        params: params
9
+    })
10
+}

+ 81 - 21
src/scrm_pages/article/createArticle.vue Dosyayı Görüntüle

@@ -7,17 +7,17 @@
7 7
     <div class="app-container">
8 8
     <el-tabs type="border-card">
9 9
       <el-tab-pane label="文章">
10
-        <el-form label-width="80px" class="clearfix">
10
+        <el-form label-width="80px" class="clearfix" :model="form" ref="form" v-loading="formloading" :element-loading-text="loadingText">
11 11
           <el-row>
12 12
             <el-col :span="24">
13 13
                 <el-form-item label="文章标题:">
14
-                    <el-input placeholder="文章标题"></el-input>
14
+                    <el-input v-model="form.act_name"  placeholder="文章标题"></el-input>
15 15
                 </el-form-item>
16
-              <el-form-item label="文章内容:" prop="org_introduction">
16
+              <el-form-item label="文章内容:">
17 17
                 <keep-alive>
18 18
                   <neditor ref="neditor"
19 19
                            id="editor"
20
-                           v-bind:r_content="form.org_introduction">
20
+                           v-bind:r_content="form.act_content">
21 21
                   </neditor>
22 22
                 </keep-alive>
23 23
               </el-form-item>
@@ -25,18 +25,19 @@
25 25
                   <el-radio v-model="radio" label="1" @click.native.prevent="select()" >单图</el-radio>
26 26
                   <el-radio v-model="radio" label="2" @click.native.prevent="clickitem()" >三图</el-radio>
27 27
               </el-form-item>
28
-              <el-form-item>
28
+              <el-form-item prop="org_logo">
29 29
                 <el-col :span="3">
30 30
                   <div>
31
-                    <el-upload  class="avatar-uploader":show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
32
-                      <img v-if="imageUrl" :src="imageUrl" class="avatar">
33
-                      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
34
-                    </el-upload>
35
-                  </div>
36
-                </el-col>
37
-                <el-col :span="3">
38
-                  <div class="elupload" v-if="show">
39
-                    <el-upload  class="avatar-uploader":show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
31
+                    <el-upload  
32
+                      v-loading="uploading"
33
+                      :element-loading-text="loadingText"
34
+                      class="avatar-uploader"
35
+                      :data="uploadData"
36
+                      action="https://upload.qiniup.com"
37
+                      :show-file-list="false"
38
+                      :on-error="handleAvatarError"
39
+                      :on-success="handleAvatarSuccess"
40
+                      :before-upload="beforeAvatarUpload">
40 41
                       <img v-if="imageUrl" :src="imageUrl" class="avatar">
41 42
                       <i v-else class="el-icon-plus avatar-uploader-icon"></i>
42 43
                     </el-upload>
@@ -44,7 +45,11 @@
44 45
                 </el-col>
45 46
                 <el-col :span="3">
46 47
                   <div v-if="show">
47
-                    <el-upload  class="avatar-uploader":show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
48
+                    <el-upload 
49
+                     class="avatar-uploader" 
50
+                     :show-file-list="false" 
51
+                     :on-success="handleAvatarSuccess" 
52
+                     :before-upload="beforeAvatarUpload">
48 53
                       <img v-if="imageUrl" :src="imageUrl" class="avatar">
49 54
                       <i v-else class="el-icon-plus avatar-uploader-icon"></i>
50 55
                     </el-upload>
@@ -67,7 +72,7 @@
67 72
           <el-row :span="24">
68 73
             <el-col :span="24">
69 74
                 <el-form-item>
70
-                      <el-button size="small" type="primary" style="width: 100px">发布</el-button>
75
+                      <el-button size="small" type="primary" style="width: 100px"  @click="submitForm">发布</el-button>
71 76
                       <el-button size="small" style="width: 100px">预览</el-button>
72 77
                       <el-button size="small" style="width: 100px">保存草稿</el-button>
73 78
                   <el-button size="small" style="width: 100px">取消</el-button>
@@ -112,7 +117,7 @@
112 117
                  </el-form-item>
113 118
                  <el-form-item label="视频封面:"></el-form-item>
114 119
                  <el-form-item>
115
-                   <el-upload  class="avatar-uploader":show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
120
+                   <el-upload  class="avatar-uploader" :show-file-list="false" :on-success="handleAvatarSuccess" :before-upload="beforeAvatarUpload">
116 121
                      <img v-if="imageUrl" :src="imageUrl" class="avatar">
117 122
                      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
118 123
                    </el-upload>
@@ -153,6 +158,9 @@
153 158
   import 'quill/dist/quill.snow.css'
154 159
   import 'quill/dist/quill.bubble.css'
155 160
   import Neditor from '@/components/Neditor'
161
+  import {submitForm} from '@/api/act/submitinfo'
162
+  import { getToken } from '@/api/qiniu'
163
+  import { getFileExtension} from '@/utils/tools'
156 164
   export default {
157 165
     name: 'createArticle',
158 166
     components:{
@@ -188,13 +196,28 @@
188 196
         company:"",
189 197
         fileList: [{name: '123', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}],
190 198
         form:{
191
-          org_introduction:'',
192
-        }
199
+          act_name:'',
200
+          act_content:'',
201
+          act_picture:'',
202
+          act_category:'',
203
+          org_logo:'',
204
+        },
205
+         formloading:false,
206
+         qiniuDomain: 'https://images.shengws.com/',
207
+         uploading:false,
208
+         loadingText:'',
209
+         uploadData: { token: '', key: '' },
193 210
       }
194 211
     },
195 212
     methods: {
196 213
       handleAvatarSuccess(res, file) {
197
-        this.imageUrl = URL.createObjectURL(file.raw);
214
+        //this.imageUrl = URL.createObjectURL(file.raw);
215
+        this.form.org_logo = this.qiniuDomain + res.url;
216
+      },
217
+       handleAvatarError(err, file, fileList) {
218
+            this.$message.error(err);
219
+            this.uploading = false;
220
+            return false
198 221
       },
199 222
       beforeAvatarUpload(file) {
200 223
         const isJPG = file.type === 'image/jpeg';
@@ -206,7 +229,27 @@
206 229
         if (!isLt2M) {
207 230
           this.$message.error('上传头像图片大小不能超过 2MB!');
208 231
         }
209
-        return isJPG && isLt2M;
232
+        
233
+            var date = new Date()
234
+            var ext = getFileExtension(file.name)
235
+            var key = date.getFullYear() + (date.getMonth() + 1) + date.getDate() + date.getHours()  + date.getMinutes()  + date.getSeconds()  +'_o_' + file.uid + '.' + ext;
236
+            this.uploading = true;
237
+            this.loadingText = '封面图片上传中'
238
+
239
+            const _self = this
240
+            return new Promise((resolve, reject) => {
241
+                getToken().then(response => {
242
+                    const token = response.data.data.uptoken
243
+                    _self._data.uploadData.token = token
244
+                    _self._data.uploadData.key = key
245
+                    resolve(true)
246
+                }).catch(err => {
247
+                    reject(false)
248
+                    this.uploading = false;
249
+                })
250
+            })
251
+        
252
+          //return isJPG && isLt2M;
210 253
       },
211 254
       beforeUpload(file) {
212 255
         var testmsg=file.name.substring(file.name.lastIndexOf('.')+1)
@@ -245,6 +288,23 @@
245 288
       beforeRemove(file, fileList) {
246 289
         return this.$confirm(`确定移除 ${ file.name }?`);
247 290
       },
291
+      submitForm(){
292
+        var params  = new Object()
293
+        params.act_name = this.form.act_name
294
+        params.act_content = this.$refs.neditor.content
295
+        this.formloading=true
296
+        console.log("文章标题",params.act_name)
297
+        console.log("文章内容",params.act_content)
298
+        console.log("富文本编辑器的内容",params.act_content)
299
+        submitForm(params).then(response => {
300
+           if(response.data.state === 1){
301
+             this.$message({
302
+               type: 'success',
303
+               message: '成功!'
304
+             })
305
+           }
306
+        })
307
+      },
248 308
 
249 309
     },
250 310
   }

+ 8 - 13
src/xt_permission.js Dosyayı Görüntüle

@@ -10,19 +10,14 @@ const permissionWhiteList = loginWhiteList.concat(['/']) // 权限验证白名
10 10
 
11 11
 router.beforeEach((to, from, next) => {
12 12
   // 线上注释
13
-  // if (!store.getters.configlist || store.getters.configlist === undefined || store.getters.configlist.length <= 0) {
14
-  //   store.dispatch('VerifyConfigList', []).then(() => {
15
-  //     next()
16
-  //   })
17
-  // }
18
-  // if (store.getters.permission_routers === undefined) {
19
-  //   store.dispatch('xt_GenerateRoutes', []).then(() => {
20
-  //     next()
21
-  //   })
22
-  // } else {
23
-  //   next()
24
-  // }
25
-  // return
13
+  if (store.getters.permission_routers === undefined) {
14
+    store.dispatch('xt_GenerateRoutes', []).then(() => {
15
+      next()
16
+    })
17
+  } else {
18
+    next()
19
+  }
20
+  return
26 21
   // 线上注释
27 22
 
28 23
   NProgress.start()

+ 1 - 1
static/neditor/neditor.config.js Dosyayı Görüntüle

@@ -40,7 +40,7 @@
40 40
         scrawlUrlPrefix: "https://images.shengws.com/",
41 41
         videoUrlPrefix: "https://images.shengws.com/",
42 42
         fileUrlPrefix: "https://images.shengws.com/",
43
-        uptokenUrl:"http://api.xt.test.sgjyun.com/api/qiniu/uptoken",
43
+        uptokenUrl:"http://api.test1.sgjyun.com/api/qiniu/uptoken",
44 44
         catcherLocalDomain: "",
45 45
         //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义
46 46
         toolbars: [