tanyanfei 4 年之前
父節點
當前提交
9ef9ece752

+ 8 - 7
src/views/activity/Activity.vue

@@ -112,7 +112,7 @@ a {
       <el-table
         class="table"
         :data="list"
-        height="50vh"
+        height="57vh"
         border
         v-loading="loading"
         default-expand-all
@@ -125,17 +125,17 @@ a {
           </template>
         </el-table-column>
         <el-table-column prop="name" label="活动名称" width="300px"></el-table-column>
-        <el-table-column prop="journal_name" label="发布单位"></el-table-column>
-        <el-table-column prop="publish_time" label="主办方"></el-table-column>
-        <el-table-column prop="" label="承办方"></el-table-column>
-        <el-table-column prop="begin_time" label="活动时间"></el-table-column>
-        <el-table-column prop="address" label="活动地址"></el-table-column>
+        <el-table-column prop="journal_name" label="发布单位" width="150"></el-table-column>
+        <el-table-column prop="the_host" label="主办方" width="150"></el-table-column>
+        <el-table-column prop="to_undertake" label="承办方" width="150"></el-table-column>
+        <el-table-column prop="begin_time" label="活动时间"  width="170"></el-table-column>
+        <el-table-column prop="address" label="活动地址" width="200"></el-table-column>
         <el-table-column prop="desc" label="活动简介" width="500">
                     <template slot-scope="scope">
                         <div class="desc">{{scope.row.desc}}</div>
                     </template>
         </el-table-column>
-        <el-table-column prop="zip" width="150" label="操作" fixed="right">
+        <el-table-column prop="zip" width="150" label="操作" fixed="right" align="center">
           <template slot-scope="scope">
             <el-button class="edit" type="text" @click="edit(scope.row)"
               >编辑</el-button
@@ -201,6 +201,7 @@ export default {
       parm.type = 0;
       this.$api.getActivityList(parm).then((res) => {
         this.list = res.data.data.list;
+        this.total=res.data.data.total
         this.loading = false;
       });
     },

+ 130 - 50
src/views/activity/AddActivity.vue

@@ -1,12 +1,27 @@
 <style lang="scss" scoped>
 .preview {
-    .el-form-item {
-        margin-bottom: 15px;
-    }
-    label,
-    p {
-        line-height: 25px !important;
+  .aname{
+    text-align: center;
+    margin-bottom: 20px;
+    color: #333;
+    font-size: 16px;
+  }
+  .ainfo{
+    display: flex;
+    margin-bottom: 10px;
+    p{
+      width: 60%;
+      margin-left: 15px;
+      line-height: 26px;
     }
+  }
+  b{
+    color: #333;
+  }
+  div{
+    line-height: 26px;
+    margin-bottom: 10px;
+  }
 }
 .content .title {
     height: 32px;
@@ -98,10 +113,10 @@
 <template>
     <section>
         <p><span>活动管理></span>新增活动</p>
-        <div class="content">
+        <div class="content" v-loading='loading' element-loading-background="rgba(0, 0, 0, 0)">
             <!-- <div class="title">新增会议</div> -->
-            <el-form size="small" label-width="140px" class='over_y'>
-              <el-form-item label="发布单位:">
+            <el-form size="small" label-width="140px" class='over_y' ref="form" :model="form" :rules="rules">
+              <el-form-item label="发布单位:" prop='journal_id' >
                     <el-select placeholder="请选择发布单位" v-model="form.journal_id" filterable>
                         <el-option
                             v-for="(item, index) in journalList"
@@ -111,7 +126,7 @@
                         ></el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="活动名称:">
+                <el-form-item label="活动名称:"  prop='name' >
                     <el-input
                         placeholder="请输入活动名称"
                         v-model="form.name"
@@ -138,7 +153,7 @@
                         </el-form-item>
                     </el-col>
                     <el-col :span="12" >
-                        <el-form-item label="会议时间:">
+                        <el-form-item label="会议时间:" prop='time'>
                             <el-date-picker
                                 v-model="form.time"
                                 type="daterange" value-format="yyyy-MM-dd"
@@ -150,7 +165,7 @@
                         </el-form-item>
                     </el-col>
                     <el-col :span="12">
-                        <el-form-item label="城市:">
+                        <el-form-item label="城市:" prop='citys' >
                             <el-cascader style="width:100%;"
                                 v-model="form.citys" :props='props'
                                 :options="cityList"
@@ -162,7 +177,7 @@
                 <el-row>
                     
                     <el-col :span="24" >
-                        <el-form-item label="地址">
+                        <el-form-item label="地址" prop='address' >
                             <el-input placeholder="请输入详细地址" v-model="form.address"></el-input>
                         </el-form-item>
                     </el-col>
@@ -197,11 +212,12 @@
                     </el-col>
      
                 </el-row>
-                <el-form-item label='封面图:'>
+                <el-form-item label='封面图:'  prop='img' >
                     <el-upload
                         class="avatar-uploader"
                         action="/api/admin/uploadfile"
                         :show-file-list="false"
+                        :on-progress='handleAvatarProgress'
                         :on-success="handleAvatarSuccess">
                         <img v-if="form.img" :src="form.img" class="avatar">
                         <i v-else class="el-icon-plus avatar-uploader-icon"></i>
@@ -232,6 +248,7 @@
                                                 class="avatar-uploader speaker_avatar"
                                                 action="/api/admin/uploadfile"
                                                 :show-file-list="false"
+                                                :on-progress='handleAvatarProgress'
                                                 :on-success="(res,file)=>{handleAvatarSuccess1(index,res,file)}">
                                                 <img v-if="item.img" :src="item.img" class="avatar">
                                                 <i v-else class="el-icon-plus avatar-uploader-icon"></i>
@@ -250,7 +267,7 @@
                     </el-tabs>
                 </el-form-item>
                 <el-form-item style="position:fixed;bottom:20px;right:60px;">
-                    <!-- <el-button type='primary'>预览</el-button> -->
+                    <el-button type="primary" @click="view">预览</el-button>
                     <el-button @click="save" type='success'>发布</el-button>
                     <!-- <el-button type='default'>保存并新增</el-button> -->
                     <!-- <el-button v-if='id' type="danger" plain>删除</el-button> -->
@@ -258,6 +275,27 @@
                 </el-form-item>
             </el-form>
         </div>
+        <el-dialog
+        title=""
+        :visible.sync="open"
+        width="414px">
+        <div class="preview">
+            <p class="aname">{{form.name}}</p>
+            <div class="ainfo">
+            <img width="100" :src="form.img" alt="">
+            <p>
+                发布单位:{{journal_name}} <br>
+                主办方:{{form.the_host}} <br>
+                承办方:{{form.to_undertake}} <br>
+                活动时间:{{form.begin_time}} 
+            </p>
+            </div>
+            <b>活动简介</b>
+            <div class="adesc">{{form.desc}}</div>
+            <b>活动内容</b>
+            <div v-html="form.content"></div>
+        </div>
+        </el-dialog>
     </section>
 </template>
 <script>
@@ -268,6 +306,7 @@ export default {
     },
     data() {
         return {
+            open:false,
             signup_fields:[
                     { name: "姓名", id: "name" },
                     { name: "性别", id: "sex" },
@@ -287,7 +326,8 @@ export default {
                 speaker:[
                     {name:'',intruduce:''}
                 ],
-                img:''
+                img:'',
+                journal_id:''
             },
             optionList: [
                 { name: "成都交通", id: "1" },
@@ -300,10 +340,36 @@ export default {
             imageUrl:"",
             props:{
                 value:'name'
-            }
+            },
+            loading:false,
+            journal_name:'',
+            rules: {
+                name: [{ required: true, message: "请输入名称", trigger: "blur" }],
+                journal_id: [
+                { required: true, message: "请选择发布单位", trigger: "change" },
+                ],
+                time: [
+                { required: true, message: "请选择会议时间", trigger: "blur" },
+                ],
+                citys: [
+                { required: true, message: "请选择城市", trigger: "change" },
+                ],
+                address: [{ required: true, message: "请输入地址", trigger: "blur" }],
+                img: [{ required: true, message: "请上传封面图", trigger: "blur" }],
+            },
         };
     },
     methods: {
+        /**预览 */
+        view(){
+            var content=this.$refs.editor.getEditor()
+            this.form.content=content;
+            let journal=this.journalList.filter(item=>item.id == this.form.journal_id)
+            if(journal.length>0){
+                this.journal_name=journal[0].name
+            }
+            this.open=true;
+        },
         save(){
             var content=this.$refs.editor.getEditor()
             var form=this.form;
@@ -314,53 +380,60 @@ export default {
                 form.end_time=form.time[1]
             }
             let type = this.$route.query.type;
-            form.type = type;
+            form.type = type?type:0;
             // form.organizer_name=this.organizerList.filter(item=>item.id==form.organizer_id)[0].name
             console.log(form)
-            if(this.id){
-                this.$api.updateActivity(form).then(res=>{
-                    if(res.data.code == 0){
-                        this.$message({
-                            message: '修改成功',
-                            type: 'success'
-                        })
-                        this.$router.push({path:'/learning/activity'})
-                    }else{
-                        this.$message({
-                            message: res.data.message,
-                            type: 'error'
-                        })
-                    }
-                })
-            }else{
-                this.$api.addActivity(form).then(res=>{
-                    if(res.data.code == 0){
-                        this.$message({
-                            message: '发布成功',
-                            type: 'success'
+            this.$refs["form"].validate((valid) => {
+                
+                if (valid) {
+                    if(this.id){
+                        this.$api.updateActivity(form).then(res=>{
+                            if(res.data.code == 0){
+                                this.$message({
+                                    message: '修改成功',
+                                    type: 'success'
+                                })
+                                this.$router.push({path:this.$route.matched[0].path})
+                            }else{
+                                this.$message({
+                                    message: res.data.message,
+                                    type: 'error'
+                                })
+                            }
                         })
-                        this.$router.push({path:'/learning/activity'})
                     }else{
-                        this.$message({
-                            message: res.data.message,
-                            type: 'error'
+                        this.$api.addActivity(form).then(res=>{
+                            if(res.data.code == 0){
+                                this.$message({
+                                    message: '发布成功',
+                                    type: 'success'
+                                })
+                                this.$router.push({path:this.$route.matched[0].path})
+                            }else{
+                                this.$message({
+                                    message: res.data.message,
+                                    type: 'error'
+                                })
+                            }
                         })
                     }
-                })
-            }
-            
+                }
+            })
         },
         //封面
+        handleAvatarProgress(){
+        this.loading=true
+        },
         handleAvatarSuccess(res, file) {
-            this.form.img = file.response.data;
-            console.log(this.form.img)
+            this.$set(this.form,'img',file.response.data)
+            this.loading=false
         },
         //主讲人
         handleAvatarSuccess1(index,res, file) {
             var speaker=this.form.speaker[index];
-            speaker.img = file.response.data;
+            this.$set(speaker,'img',file.response.data)
             this.$set(this.form.speaker,index,speaker)
-            // console.log(this.form.img)
+            this.loading=false
         },
         beforeAvatarUpload(){
 
@@ -407,6 +480,13 @@ export default {
         if(this.$route.query.id){
             this.id=this.$route.query.id;
             this.$api.getActivity({id:this.id}).then(res=>{
+                if(res.data.code != 0){
+                    this.$message({
+                            message: res.data.message,
+                            type: 'error'
+                    })
+                    return
+                }
                 this.form=res.data.data
                 this.form.is_popular=Boolean(this.form.is_popular)
                 this.form.is_recommend=Boolean(this.form.is_recommend)

+ 8 - 7
src/views/activity/OldActivity.vue

@@ -112,7 +112,7 @@ a {
       <el-table
         class="table"
         :data="list"
-        height="50vh"
+        height="57vh"
         border
         v-loading="loading"
         default-expand-all
@@ -125,17 +125,17 @@ a {
           </template>
         </el-table-column>
         <el-table-column prop="name" label="活动名称" width="300px"></el-table-column>
-        <el-table-column prop="journal_name" label="发布单位"></el-table-column>
-        <el-table-column prop="publish_time" label="主办方"></el-table-column>
-        <el-table-column prop="" label="承办方"></el-table-column>
-        <el-table-column prop="begin_time" label="活动时间"></el-table-column>
-        <el-table-column prop="address" label="活动地址"></el-table-column>
+        <el-table-column prop="journal_name" label="发布单位"  width="150"></el-table-column>
+        <el-table-column prop="the_host" label="主办方" width="150"></el-table-column>
+        <el-table-column prop="to_undertake" label="承办方" width="150"></el-table-column>
+        <el-table-column prop="begin_time" label="活动时间"  width="170"></el-table-column>
+        <el-table-column prop="address" label="活动地址"  width="200"></el-table-column>
         <el-table-column prop="desc" label="活动简介" width="500">
                     <template slot-scope="scope">
                         <div class="desc">{{scope.row.desc}}</div>
                     </template>
         </el-table-column>
-        <el-table-column prop="zip" width="150" label="操作" fixed="right">
+        <el-table-column prop="zip" width="150" label="操作" fixed="right"  align="center">
           <template slot-scope="scope">
             <el-button class="edit" type="text" @click="edit(scope.row)"
               >编辑</el-button
@@ -201,6 +201,7 @@ export default {
       parm.type = 1
       this.$api.getActivityList(parm).then((res) => {
         this.list = res.data.data.list;
+        this.total=res.data.data.total
         this.loading = false;
       });
     },

+ 80 - 18
src/views/article/AddArticle.vue

@@ -1,11 +1,26 @@
 <style lang="scss" scoped>
 .preview {
-  .el-form-item {
-    margin-bottom: 15px;
+  .aname{
+    text-align: center;
+    margin-bottom: 20px;
+    color: #333;
+    font-size: 16px;
+  }
+  .ainfo{
+    display: flex;
+    margin-bottom: 10px;
+    p{
+      width: 60%;
+      margin-left: 15px;
+      line-height: 26px;
+    }
+  }
+  b{
+    color: #333;
   }
-  label,
-  p {
-    line-height: 25px !important;
+  div{
+    line-height: 26px;
+    margin-bottom: 10px;
   }
 }
 .content .title {
@@ -97,7 +112,7 @@
 <template>
   <section>
     <p><span>会议管理></span>新增文章</p>
-    <div class="content">
+    <div class="content" v-loading='loading' element-loading-background="rgba(0, 0, 0, 0)">
       <!-- <div class="title">新增会议</div> -->
       <el-form
         ref="form"
@@ -162,6 +177,7 @@
             class="avatar-uploader"
             action="/api/admin/uploadfile"
             :show-file-list="false"
+            :on-progress='handleAvatarProgress'
             :on-success="handleAvatarSuccess"
           >
             <img v-if="form.img" :src="form.img" class="avatar" />
@@ -172,16 +188,39 @@
           >
         </el-form-item>
         <el-form-item label="文章详情:">
-          <fuEditor :value="form.content"></fuEditor>
+          <fuEditor :value="form.content" ref="editor"></fuEditor>
         </el-form-item>
         <el-form-item style="position: fixed; bottom: 20px; right: 60px">
-          <el-button type="primary">预览</el-button>
-          <el-button type="success">发布</el-button>
-          <el-button type="default" @click="save">保存</el-button>
+          <el-button type="primary" @click="view">预览</el-button>
+          <el-button type="success" @click="save(2)">发布</el-button>
+          <el-button type="default" @click="save(1)">保存</el-button>
           <!-- <el-button type="danger" plain>删除</el-button> -->
         </el-form-item>
       </el-form>
     </div>
+    <el-dialog
+      title=""
+      :visible.sync="open"
+      width="414px">
+      <div class="preview">
+        <p class="aname">{{form.name}}</p>
+        <div class="ainfo">
+          <img width="100" :src="form.img" alt="">
+          <p>
+            发布单位:{{journal_name}} <br>
+            作者:{{form.author}} <br>
+            发表时间:{{form.publish_time}} 
+          </p>
+        </div>
+        <b>文章简介</b>
+        <div class="adesc">{{form.desc}}</div>
+        <b>文章内容</b>
+        <div v-html="form.content"></div>
+      </div>
+      <!-- <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="open = false">确 定</el-button>
+      </span> -->
+    </el-dialog>
   </section>
 </template>
 <script>
@@ -194,7 +233,10 @@ export default {
     return {
       form: {},
       journalList: [],
+      journal_name:'',
       imageUrl: "",
+      open:false,
+      loading:false,
       rules: {
         name: [{ required: true, message: "请输入标题", trigger: "blur" }],
         journal_id: [
@@ -210,9 +252,13 @@ export default {
   },
   methods: {
     //封面
+    handleAvatarProgress(){
+      this.loading=true
+    },
     handleAvatarSuccess(res, file) {
-      this.form.img = file.response.data;
-      console.log(this.form.img);
+      // this.form.img = file.response.data;
+      this.$set(this.form,'img',file.response.data)
+      this.loading=false
     },
     //主讲人
     handleAvatarSuccess1(index, res, file) {
@@ -234,20 +280,34 @@ export default {
       this.getData();
     },
     getData() {
-      this.loading = true;
       this.$api.searchJournalList().then((res) => {
         this.journalList = res.data.data;
       });
       let id = this.$route.query.id;
       if (id) {
+        this.loading = true;
         this.$api.getArticle({ id: id }).then((res) => {
           this.form = res.data.data;
+          this.loading = false;
         });
       }
     },
-    save() {
+    /**预览 */
+    view(){
+      var content=this.$refs.editor.getEditor()
+      this.form.content=content;
+      let journal=this.journalList.filter(item=>item.id == this.form.journal_id)
+      if(journal.length>0){
+        this.journal_name=journal[0].name
+      }
+      this.open=true;
+    },
+    save(status) {
       let id = this.$route.query.id;
       let parm = this.form;
+      parm.status=status
+      var content=this.$refs.editor.getEditor()
+      parm.content=content;
       this.$refs["form"].validate((valid) => {
         if (valid) {
           if (id) {
@@ -256,10 +316,11 @@ export default {
               if (res.data.code == 0) {
                 this.$message({
                   type: "success",
-                  message: "保存成功!",
+                  message: status==1?"保存成功!":"发布成功!",
                 });
+                this.$router.push({path:'/article/article'})
               } else {
-                this.$message.error("保存失败!");
+                this.$message.error(status==1?"保存失败!":"发布失败!");
               }
             });
           } else {
@@ -267,10 +328,11 @@ export default {
               if (res.data.code == 0) {
                 this.$message({
                   type: "success",
-                  message: "保存成功!",
+                  message: status==1?"保存成功!":"发布成功!",
                 });
+                this.$router.push({path:'/article/article'})
               } else {
-                this.$message.error("保存失败!");
+                this.$message.error(status==1?"保存失败!":"发布失败!");
               }
             });
           }

+ 3 - 1
src/views/article/Article.vue

@@ -207,7 +207,8 @@ export default {
         name: [{ required: true, message: "请输入标题", trigger: "blur" }],
       },
       dialogVisible:false,
-      journalLogo:""
+      journalLogo:"",
+      multipleSelection:''
     };
   },
   methods: {
@@ -247,6 +248,7 @@ export default {
       this.$api.getArticleList(parm).then((res) => {
         console.log(res);
         this.list = res.data.data.list;
+        this.total=res.data.data.total
         this.loading = false;
       });
     },

+ 4 - 0
src/views/system/Account.vue

@@ -280,6 +280,10 @@ export default {
             this.$refs["form1"].validate((valid)=>{
                 console.log(valid)
                 if(valid){
+                    if(this.form1.rePassword != this.form1.password){
+                        this.$message.error('两次密码不一致');
+                        return
+                    }
                     if(this.form1.id){
                         this.$api.editUser(this.form1).then(res=>{
                             if(res.data.code==0){

+ 7 - 0
src/views/system/Role.vue

@@ -107,6 +107,13 @@ export default {
     }
   },
   methods:{
+        gopage(size) {
+            if (size) {
+                this.form.page_size = size;
+            }
+            this.form.page = this.$refs.pageButton.page;
+            this.getData();
+        },
         getPermissions(){
             this.$api.getUserPermissions().then(res=>{
                 this.data = res.data.data

+ 6 - 2
src/views/system/SenWord.vue

@@ -97,7 +97,7 @@ export default {
       form: { name: "", page: 1, page_size: 20 },
       form1: {},
       total: 1,
-      list: [{ name: "2333" }],
+      list: [],
       loading: false,
       input: "",
       dialogVisible: false,
@@ -116,10 +116,14 @@ export default {
       var parm = this.form;
       this.loading = true;
       this.$api.getSenWordList(parm).then((res) => {
+        this.loading = false;
+        if(res.data.code != 0){
+          return
+        }
         let list = res.data.data.list;
         this.list = list;
         this.total = res.data.data.total;
-        this.loading = false;
+        
       });
     },
     gopage(size) {