Procházet zdrojové kódy

Merge branch 'master' of http://118.190.145.217:3000/xiaojincai/zky-admin

xjc před 4 roky
rodič
revize
51a90d3fca

+ 18 - 0
src/api.js

@@ -255,9 +255,18 @@ export default {
 	getConferenceList: params => {
 		return axios.get(`${baseURL}/api/admin/conference/list`, { params: params });
 	},
+	addConference: params => {
+		return axios.post(`${baseURL}/api/admin/conference`, params);
+	},
+	getConference: params => {
+		return axios.get(`${baseURL}/api/admin/conference`, {params:params});
+	},
 	putConference: params => {
 		return axios.put(`${baseURL}/api/admin/conference`, params);
 	},
+	deleteConference: params => {
+		return axios.delete(`${baseURL}/api/admin/conference`, {params:params});
+	},
 	getSignupList: params => {
 		return axios.get(`${baseURL}/api/admin/signup/list`, { params: params });
 	},
@@ -286,6 +295,15 @@ export default {
 	getActivityList: params => {
 		return axios.get(`${baseURL}/api/admin/activity/list`, { params: params });
 	},
+	addActivity: params => {
+		return axios.post(`${baseURL}/api/admin/activity`, params);
+	},
+	getActivity: params => {
+		return axios.get(`${baseURL}/api/admin/activity`, {params:params});
+	},
+	putActivity: params => {
+		return axios.put(`${baseURL}/api/admin/activity`, params);
+	},
 	// 期刊管理相关
 	getJournalList: params => {
 		return axios.get(`${baseURL}/api/admin/journal/list`, { params: params });

+ 5 - 0
src/components/fuEditor/index.vue

@@ -41,8 +41,10 @@ export default {
       }
     },
     value: function(value) {
+      console.log(value)
       if (value !== this.editor.txt.html()) {
         this.editor.txt.html(this.value);
+        
       }
     }
     //value为编辑框输入的内容,这里我监听了一下值,当父组件调用得时候,如果给value赋值了,子组件将会显示父组件赋给的值
@@ -52,6 +54,9 @@ export default {
     this.editor.txt.html(this.value);
   },
   methods: {
+    getEditor(){
+      return this.editor.txt.html();
+    },
     seteditor() {
 
       // http://192.168.2.125:8080/admin/storage/create

+ 11 - 4
src/components/hotel.vue

@@ -20,17 +20,18 @@
         .img_list{
             li{
                 display: inline-block;
-                width: 148px;
-                height: 148px;
+                min-width: 140px;
+                height: 100px;
                 margin: 10px;
                 position: relative;
                 overflow: hidden;
                 img{
-                    width: 100%;
+                    height: 100%;
                 }
                 .el-icon-delete{
                     color: red;
                     font-size: 18px;
+                    cursor: pointer;
                 }
                 .move{
                     position: absolute;
@@ -40,9 +41,15 @@
                     text-align: center;
                     background: rgba(0, 0, 0, 0.527);
                     color: #fff;
+                    cursor: pointer;
                 }
             }
         }
+        .el-upload--picture-card{
+            width: 100px;
+            height: 100px;
+            line-height: 110px;
+        }
         #map {
             overflow: hidden;
             width: 100%;
@@ -103,7 +110,7 @@
                                     <i @click="left_right(index,1)">右移<i class="el-icon-caret-right"></i> </i></p>
                                 </li>
                                 <li>
-                                    <el-upload  :on-success='imgchange'  
+                                    <el-upload  :on-success='imgchange'   style="height:100px;"
                                         action="/api/admin/uploadfile" :show-file-list='false'
                                         list-type="picture-card">
                                         <i class="el-icon-plus"></i>

+ 15 - 3
src/views/activity/Activity.vue

@@ -74,6 +74,14 @@ a {
         font-weight: 600;
     }
 }
+  .desc{
+        overflow: hidden;
+        text-overflow: ellipsis;
+        display: -webkit-box;
+        -webkit-line-clamp: 3;
+        -webkit-box-orient: vertical;
+        white-space: normal;
+    }
 </style>
 <template>
   <section>
@@ -122,8 +130,12 @@ a {
         <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="desc" label="活动简介" width="500"></el-table-column>
-        <el-table-column prop="zip" width="150" label="操作">
+        <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">
           <template slot-scope="scope">
             <el-button class="edit" type="text" @click="edit(scope.row)"
               >编辑</el-button
@@ -205,7 +217,7 @@ export default {
       });
     },
     edit(row) {
-      this.$router.push({path:'/article/article/add',query:{id:row.id}})
+      this.$router.push({path:'/learning/activity/add',query:{id:row.id}})
     },
     save() {
       this.$refs["form1"].validate((valid) => {

+ 382 - 264
src/views/activity/AddActivity.vue

@@ -1,300 +1,418 @@
 <style lang="scss" scoped>
 .preview {
-  .el-form-item {
-    margin-bottom: 15px;
-  }
-  label,
-  p {
-    line-height: 25px !important;
-  }
+    .el-form-item {
+        margin-bottom: 15px;
+    }
+    label,
+    p {
+        line-height: 25px !important;
+    }
 }
 .content .title {
-  height: 32px;
-  font-size: 14px;
-  font-weight: bold;
-  color: #333333;
-  border-bottom: 1px solid #d8d8d8;
-  margin-bottom: 25px;
+    height: 32px;
+    font-size: 14px;
+    font-weight: bold;
+    color: #333333;
+    border-bottom: 1px solid #d8d8d8;
+    margin-bottom: 25px;
 }
-.el-form {
-  font-size: 14px;
-  font-weight: 400;
-  color: #666666;
-  .el-select,
-  .el-range-editor--small.el-input__inner {
-    width: 100%;
-  }
+.el-form{
+    font-size: 14px;
+    font-weight: 400;
+    color: #666666;
+    .el-select,.el-range-editor--small.el-input__inner{
+        width:100%;
+    }
 }
-/deep/.el-tabs__header {
-  margin: 0;
-  .el-tabs__active-bar {
-    height: 0px;
-  }
-  .el-tabs__item {
-    width: 160px;
-    height: 40px;
-    text-align: center;
-    border-radius: 8px 8px 0px 0px;
-    color: #333333;
-    background: #ececec;
-    margin-right: 10px;
-  }
-  .el-tabs__item.is-active {
-    background: #3895fe;
-
-    color: #ffffff;
-  }
+/deep/.el-tabs__header{
+    margin:0;
+    .el-tabs__active-bar{
+        height:0px;
+    }
+    .el-tabs__item{
+        width: 160px;
+        height: 40px;
+        text-align: center;
+        border-radius: 8px 8px 0px 0px;
+        color:#333333;
+        background: #ECECEC;
+        margin-right:10px;
+    }
+    .el-tabs__item.is-active{
+        background: #3895FE;
+        
+        color:#ffffff;
+        
+    }
 }
-.el-button {
-  width: 120px;
-  height: 36px;
+.el-button{
+    width:120px;
+    height:36px;
 }
 // 上传
 
 /deep/.avatar-uploader .el-upload {
-  width: 148px;
-  height: 148px;
-  line-height: 148px;
-  border: 1px dashed #d9d9d9;
-  border-radius: 6px;
-  cursor: pointer;
-  position: relative;
-  overflow: hidden;
-  .avatar {
-    width: 100%;
-    height: auto;
-  }
+    width: 148px;
+    height: 148px;
+    line-height: 148px;
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+    .avatar{
+        width: 100%;
+        height: auto;
+    }
 }
 .avatar-uploader .el-upload:hover {
-  border-color: #409eff;
+    border-color: #409EFF;
 }
 .avatar-uploader-icon {
-  font-size: 28px;
-  color: #8c939d;
-  width: 68px;
-  height: 68px;
-  line-height: 68px;
-  text-align: center;
+    font-size: 28px;
+    color: #8c939d;
+    width: 68px;
+    height: 68px;
+    line-height: 68px;
+    text-align: center;
 }
 .avatar {
-  width: 68px;
-  height: 68px;
-  display: block;
+    width: 68px;
+    height: 68px;
+    display: block;
 }
-/deep/.speaker_avatar .el-upload {
-  width: 80px;
-  height: 80px;
-  line-height: 80px;
+/deep/.speaker_avatar .el-upload{
+    width: 80px;
+    height: 80px;
+    line-height: 80px;
 }
 .hotel_imgs {
-  /deep/.el-upload--picture-card {
-    width: 79px;
+    /deep/.el-upload--picture-card{
+    width:79px;
     height: 79px;
     line-height: 79px;
-  }
+    }   
 }
+
 </style>
 <template>
-  <section>
-    <p><span>会议管理></span>新增活动</p>
-    <div class="content">
-      <!-- <div class="title">新增会议</div> -->
-      <el-form
-        ref="form"
-        size="small"
-        label-width="140px"
-        class="over_y"
-        :model="form"
-        :rules="rules"
-      >
-        <el-form-item label="文章名称:" prop="name">
-          <el-input
-            placeholder="请输入文章名称"
-            v-model="form.name"
-            clearable
-          ></el-input>
-        </el-form-item>
-        <el-row>
-          <el-col :span="5">
-            <el-form-item label="文章来源:" prop="journal_id">
-              <el-select
-                placeholder="请选择"
-                v-model="form.journal_id"
-                filterable
-              >
-                <el-option
-                  v-for="(item, index) in journalList"
-                  :key="index"
-                  :label="item.name"
-                  :value="item.id"
-                ></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5">
-            <el-form-item label="作者:" prop="author">
-              <el-input v-model="form.author" placeholder=""> </el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="12" :offset="2">
-            <el-form-item label="出版时间:" prop="publish_time">
-              <el-date-picker
-                v-model="form.publish_time"
-                type="date"
-                range-separator="至"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
-              >
-              </el-date-picker>
-            </el-form-item>
-          </el-col>
-        </el-row>
-        <el-form-item label="文章简介:">
-          <el-input
-            type="textarea"
-            v-model="form.desc"
-            :rows="3"
-            placeholder="请输入文章简介"
-          ></el-input>
-        </el-form-item>
-        <el-form-item label="封面图:" prop="img">
-          <el-upload
-            class="avatar-uploader"
-            action="/api/admin/uploadfile"
-            :show-file-list="false"
-            :on-success="handleAvatarSuccess"
-          >
-            <img v-if="form.img" :src="form.img" class="avatar" />
-            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
-          </el-upload>
-          <span style="font-size: 12px; color: #999999"
-            >建议图片尺寸为:210*160</span
-          >
-        </el-form-item>
-        <el-form-item label="文章详情:">
-          <fuEditor :value="form.content"></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="danger" plain>删除</el-button> -->
-        </el-form-item>
-      </el-form>
-    </div>
-  </section>
+    <section>
+        <p><span>活动管理></span>新增活动</p>
+        <div class="content">
+            <!-- <div class="title">新增会议</div> -->
+            <el-form size="small" label-width="140px" class='over_y'>
+              <el-form-item label="发布单位:">
+                    <el-input
+                        disabled
+                        v-model="form.journal_name"
+                        clearable
+                    ></el-input>
+                </el-form-item>
+                <el-form-item label="活动名称:">
+                    <el-input
+                        placeholder="请输入活动名称"
+                        v-model="form.name"
+                        clearable
+                    ></el-input>
+                </el-form-item>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="主办方:">
+                            <el-select placeholder="请选择主办方" v-model="form.organizer_id" filterable>
+                                <el-option
+                                    v-for="(item, index) in organizerList"
+                                    :key="index"
+                                    :label="item.name"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="承办方:">
+                            <el-select placeholder="请选择承办方" v-model="form.organizer_id" filterable>
+                                <el-option
+                                    v-for="(item, index) in organizerList"
+                                    :key="index"
+                                    :label="item.name"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" >
+                        <el-form-item label="会议时间:">
+                            <el-date-picker
+                                v-model="form.time"
+                                type="daterange" value-format="yyyy-MM-dd"
+                                range-separator="至"
+                                start-placeholder="开始日期"
+                                end-placeholder="结束日期"
+                            >
+                            </el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="城市:">
+                            <el-cascader style="width:100%;"
+                                v-model="form.citys" :props='props'
+                                :options="cityList"
+                                @change="handleChangeCity">
+                            </el-cascader>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    
+                    <el-col :span="24" >
+                        <el-form-item label="地址">
+                            <el-input placeholder="请输入详细地址" v-model="form.address"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                
+                <el-form-item label='活动简介:'>
+                    <el-input type='textarea' v-model="form.desc" :rows="3" placeholder="请输入活动介绍"></el-input>
+                </el-form-item>
+                <el-row>
+                  
+                    <el-col :span="8">
+                        <el-form-item label='是否热门:'>
+                            <el-switch
+                                v-model="form.is_popular"
+                                active-text="热门"
+                                inactive-text="不热门">
+                            </el-switch>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="8">
+                        <el-form-item label='是否推荐:'>
+                            <el-switch
+                                v-model="form.is_recommend"
+                                active-text="推荐"
+                                inactive-text="不推荐">
+                            </el-switch>
+                            <!-- <el-radio-group v-model='form.is_recommend'>
+                                <el-radio :label='0'>不推荐</el-radio>
+                                <el-radio :label='1'>推荐</el-radio>
+                            </el-radio-group> -->
+                        </el-form-item>
+                    </el-col>
+     
+                </el-row>
+                <el-form-item label='封面图:'>
+                    <el-upload
+                        class="avatar-uploader"
+                        action="/api/admin/uploadfile"
+                        :show-file-list="false"
+                        :on-success="handleAvatarSuccess">
+                        <img v-if="form.img" :src="form.img" class="avatar">
+                        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                    </el-upload>
+                    <span style='font-size:12px;color:#999999;'>建议图片尺寸为:210*160</span>
+                </el-form-item>
+                <el-form-item label=''>
+                    <el-tabs v-model="activeName" @tab-click="handleClick">
+                        <el-tab-pane label="活动详情" name="first">
+                            <fuEditor :value='form.content' ref="editor"></fuEditor>
+                        </el-tab-pane>
+                        <el-tab-pane label="主讲人" name="second">
+                            <section style="height:544px;padding:10px 0px;border:1px solid #ccc;">
+                                <div v-for='(item,index) in form.speaker' :key='index' class='speaker'>  
+                                <el-row>
+                                    <el-col :span="12">
+                                        <el-form-item label="主讲人姓名">
+                                            <el-input placeholder="请输入主讲人姓名" v-model="item.name"></el-input>
+                                        </el-form-item>
+                                        <el-form-item label="主讲人简介">
+                                            <el-input type="textarea" placeholder="请输入主讲人简介" v-model="item.intruduce"></el-input>
+                                        </el-form-item>
+                                    </el-col>
+                                  
+                                    <el-col :span="8">
+                                        <el-form-item label="主讲人头像">
+                                            <el-upload
+                                                class="avatar-uploader speaker_avatar"
+                                                action="/api/admin/uploadfile"
+                                                :show-file-list="false"
+                                                :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>
+                                            </el-upload>
+                                        </el-form-item>
+                                    </el-col>
+                                    
+                                    <el-col :span="4">
+                                        <el-button v-if='index==0' size="mini" type="primary" plain @click='addSpeaker' icon="el-icon-plus">添加主讲人</el-button>
+                                        <el-button v-else type="danger" size="mini" plain @click='clearSpeaker(index)'>删除</el-button>
+                                    </el-col>
+                                </el-row>
+                                </div>
+                            </section>
+                        </el-tab-pane>
+                    </el-tabs>
+                </el-form-item>
+                <el-form-item style="position:fixed;bottom:20px;right:60px;">
+                    <!-- <el-button type='primary'>预览</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> -->
+                     <el-button type='info' plain @click="$router.go(-1)">返回</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+    </section>
 </template>
 <script>
-import fuEditor from "../../components/fuEditor";
+import fuEditor from '../../components/fuEditor'
 export default {
-  components: {
-    fuEditor,
-  },
-  data() {
-    return {
-      form: {},
-      journalList: [],
-      imageUrl: "",
-      rules: {
-        name: [{ required: true, message: "请输入标题", trigger: "blur" }],
-        journal_id: [
-          { required: true, message: "请选择来源", trigger: "change" },
-        ],
-        author: [{ required: true, message: "请选择模板", trigger: "blur" }],
-        publish_time: [
-          { required: true, message: "发布时间", trigger: "blur" },
-        ],
-        img: [{ required: true, message: "封面图", trigger: "blur" }],
-      },
-    };
-  },
-  methods: {
-    //封面
-    handleAvatarSuccess(res, file) {
-      this.form.img = file.response.data;
-      console.log(this.form.img);
-    },
-    //主讲人
-    handleAvatarSuccess1(index, res, file) {
-      var speaker = this.form.speaker[index];
-      speaker.img = file.response.data;
-      this.$set(this.form.speaker, index, speaker);
-      // console.log(this.form.img)
+    components: {
+        fuEditor,
     },
-    beforeAvatarUpload() {},
-    handleClick() {},
-    addSpeaker() {
-      this.form.speaker.push({ name: "", intruduce: "" });
+    data() {
+        return {
+            signup_fields:[
+                    { name: "姓名", id: "name" },
+                    { name: "性别", id: "sex" },
+                    { name: "年龄", id: "age" },
+                    { name: "职务", id: "job" },
+                    { name: "职称", id: "title" },
+                    { name: "公司", id: "company" },
+                    { name: "电话", id: "phone" },
+                    { name: "邮箱", id: "email" }
+            ],
+            form: {
+                is_signup:0,
+                is_popular:0,
+                is_recommend:0,
+                citys:[],
+                signup_fields:[],
+                speaker:[
+                    {name:'',intruduce:''}
+                ],
+                img:''
+            },
+            optionList: [
+                { name: "成都交通", id: "1" },
+                { name: "成都交通", id: "1" },
+            ],
+            
+            organizerList:[],
+            cityList:[],
+            activeName:'first',
+            imageUrl:"",
+            props:{
+                value:'name'
+            }
+        };
     },
-    gopage(size) {
-      if (size) {
-        this.form.page_size = size;
-      }
-      this.form.page = this.$refs.pageButton.page;
-      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.$api.getArticle({ id: id }).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-    },
-    save() {
-      let id = this.$route.query.id;
-      let parm = this.form;
-      this.$refs["form"].validate((valid) => {
-        if (valid) {
-          if (id) {
-            parm.id = id;
-            this.$api.updateArticle(parm).then((res) => {
-              if (res.data.code == 0) {
-                this.$message({
-                  type: "success",
-                  message: "保存成功!",
-                });
-              } else {
-                this.$message.error("保存失败!");
-              }
+    methods: {
+        save(){
+            var content=this.$refs.editor.getEditor()
+            var form=this.form;
+            form.content=content;
+            form.city=form.citys.join(' ');
+            if(form.time){
+                form.begin_time=form.time[0]
+                form.end_time=form.time[1]
+            }
+            // form.organizer_name=this.organizerList.filter(item=>item.id==form.organizer_id)[0].name
+            console.log(form)
+            if(this.id){
+                this.$api.putActivity(form).then(res=>{
+                    if(res.data.code == 0){
+                        this.$message({
+                            message: '修改成功',
+                            type: 'success'
+                        })
+                        this.$router.push({path:'/conference/conference'})
+                    }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.$router.push({path:'/conference/conference'})
+                    }else{
+                        this.$message({
+                            message: res.data.message,
+                            type: 'error'
+                        })
+                    }
+                })
+            }
+            
+        },
+        //封面
+        handleAvatarSuccess(res, file) {
+            this.form.img = file.response.data;
+            console.log(this.form.img)
+        },
+        //主讲人
+        handleAvatarSuccess1(index,res, file) {
+            var speaker=this.form.speaker[index];
+            speaker.img = file.response.data;
+            this.$set(this.form.speaker,index,speaker)
+            // console.log(this.form.img)
+        },
+        beforeAvatarUpload(){
+
+        },
+        handleClick(){
+
+        },
+        addSpeaker(){
+            this.form.speaker.push({name:'',intruduce:''})
+        },
+        clearSpeaker(index){
+            this.form.speaker.splice(index,1)
+        },
+        addHotelType(){
+            this.form.hotel.type.push({})
+        },
+        handleChangeCity(value){
+            console.log(value,222222222)
+        },
+        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;
             });
-          } else {
-            this.$api.addArticle(parm).then((res) => {
-              if (res.data.code == 0) {
-                this.$message({
-                  type: "success",
-                  message: "保存成功!",
-                });
-              } else {
-                this.$message.error("保存失败!");
-              }
+        },
+        getData() {
+            this.$api.getAllOrganizer().then((res) => {
+                this.organizerList = res.data.data;
             });
-          }
-        } else {
-            this.$message.error("有必填项没有填!");
-        }
-      });
+            this.$api.getCityList().then((res) => {
+                this.cityList = res.data.data;
+            });
+        },
     },
-    del(id) {
-      this.$confirm("确定删除吗", "提示", {
-        type: "warning",
-      }).then(() => {
-        this.$api.deleteEnterprise({ id: id }).then((res) => {
-          this.$message({
-            message: "删除成功",
-            type: "success",
-          });
-          this.getData();
-        });
-      });
+    created() {
+        this.getData()
+        console.log(this.$route)
+        if(this.$route.query.id){
+            this.id=this.$route.query.id;
+            this.$api.getActivity({id:this.id}).then(res=>{
+                this.form=res.data.data
+                this.form.citys=this.form.city.split(' ')
+                this.form.time=[this.form.begin_time,this.form.end_time]
+            })
+        }
     },
-  },
-  created() {
-    this.getData();
-  },
 };
 </script>

+ 102 - 23
src/views/conference/AddConference.vue

@@ -111,7 +111,7 @@
                 <el-row>
                     <el-col :span="10">
                         <el-form-item label="主办方:">
-                            <el-select placeholder="请选择主办方" v-model="form.sponsor" filterable>
+                            <el-select placeholder="请选择主办方" v-model="form.organizer_id" filterable>
                                 <el-option
                                     v-for="(item, index) in organizerList"
                                     :key="index"
@@ -125,7 +125,7 @@
                         <el-form-item label="会议时间:">
                             <el-date-picker
                                 v-model="form.time"
-                                type="daterange"
+                                type="daterange" value-format="yyyy-MM-dd"
                                 range-separator="至"
                                 start-placeholder="开始日期"
                                 end-placeholder="结束日期"
@@ -138,7 +138,7 @@
                     <el-col :span="10">
                         <el-form-item label="城市:">
                             <el-cascader style="width:100%;"
-                                v-model="form.city"
+                                v-model="form.citys" :props='props'
                                 :options="cityList"
                                 @change="handleChangeCity">
                             </el-cascader>
@@ -152,7 +152,7 @@
                 </el-row>
                 
                 <el-form-item label='会议简介:'>
-                    <el-input type='textarea' v-model="form.introduce" :rows="3" placeholder="请输入会议介绍"></el-input>
+                    <el-input type='textarea' v-model="form.desc" :rows="3" placeholder="请输入会议介绍"></el-input>
                 </el-form-item>
                 <el-row>
                   <el-col :span="8">
@@ -190,7 +190,7 @@
                     <el-col :span="24">
                       <el-form-item label='报名需提交信息:'>
                         <el-checkbox-group v-model='form.signup_fields'>
-                            <el-checkbox v-for='(item,index) in form.signup_fields' :key='index' :label='item.id'>{{item.name}}</el-checkbox>
+                            <el-checkbox v-for='(item,index) in signup_fields' :key='index' :label='item.id'>{{item.name}}</el-checkbox>
                         </el-checkbox-group>
                     </el-form-item>
                   </el-col>
@@ -209,7 +209,7 @@
                 <el-form-item label=''>
                     <el-tabs v-model="activeName" @tab-click="handleClick">
                         <el-tab-pane label="会议详情" name="first">
-                            <fuEditor></fuEditor>
+                            <fuEditor :value='form.content' ref="editor"></fuEditor>
                         </el-tab-pane>
                         <el-tab-pane label="主讲人" name="second">
                             <section style="height:544px;padding:10px 0px;border:1px solid #ccc;">
@@ -378,12 +378,12 @@
                         </el-tab-pane> -->
                     </el-tabs>
                 </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'>保存并新增</el-button>
-                    <el-button type='default'>保存</el-button>
-                    <el-button type="danger" plain>删除</el-button>
+                <el-form-item style="position:fixed;bottom:10px;right:60px;">
+                    <!-- <el-button type='primary'>预览</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> -->
+                     <el-button type='info' plain @click="$router.go(-1)">返回</el-button>
                 </el-form-item>
             </el-form>
         </div>
@@ -397,19 +397,22 @@ export default {
     },
     data() {
         return {
+            signup_fields:[
+                    { name: "姓名", id: "name" },
+                    { name: "性别", id: "sex" },
+                    { name: "年龄", id: "age" },
+                    { name: "职务", id: "job" },
+                    { name: "职称", id: "title" },
+                    { name: "公司", id: "company" },
+                    { name: "电话", id: "phone" },
+                    { name: "邮箱", id: "email" }
+            ],
             form: {
                 is_signup:0,
                 is_popular:0,
                 is_recommend:0,
-                city:[],
-                signup_fields:[
-                    { name: "姓名", id: "1" },
-                    { name: "性别", id: "2" },
-                    { name: "年龄", id: "3" },
-                    { name: "职务", id: "4" },
-                    { name: "职称", id: "5" },
-                    { name: "职称", id: "5" },
-                ],
+                citys:[],
+                signup_fields:[],
                 speaker:[
                     {name:'',intruduce:''}
                 ],
@@ -423,10 +426,78 @@ export default {
             organizerList:[],
             cityList:[],
             activeName:'first',
-            imageUrl:""
+            imageUrl:"",
+            props:{
+                value:'name'
+            }
         };
     },
     methods: {
+        save(){
+            var content=this.$refs.editor.getEditor()
+            var form=this.form;
+            form.content=content;
+            form.city=form.citys.join(' ');
+            if(form.time){
+                form.begin_time=form.time[0]
+                form.end_time=form.time[1]
+            }
+            if(!form.name){
+                this.$message({
+                    message: '请输入会议名称',
+                    type: 'error'
+                })
+                return
+            }
+            if(!form.time){
+                this.$message({
+                    message: '请选择会议时间',
+                    type: 'error'
+                })
+                return
+            }
+            if(!form.address){
+                this.$message({
+                    message: '请输入会议地址',
+                    type: 'error'
+                })
+                return
+            }
+            // form.organizer_name=this.organizerList.filter(item=>item.id==form.organizer_id)[0].name
+            console.log(form)
+            if(this.id){
+                this.$api.putConference(form).then(res=>{
+                    if(res.data.code == 0){
+                        this.$message({
+                            message: '修改成功',
+                            type: 'success'
+                        })
+                        this.$router.push({path:'/conference/conference'})
+                    }else{
+                        this.$message({
+                            message: res.data.message,
+                            type: 'error'
+                        })
+                    }
+                })
+            }else{
+                this.$api.addConference(form).then(res=>{
+                    if(res.data.code == 0){
+                        this.$message({
+                            message: '发布成功',
+                            type: 'success'
+                        })
+                        this.$router.push({path:'/conference/conference'})
+                    }else{
+                        this.$message({
+                            message: res.data.message,
+                            type: 'error'
+                        })
+                    }
+                })
+            }
+            
+        },
         //封面
         handleAvatarSuccess(res, file) {
             this.form.img = file.response.data;
@@ -470,7 +541,6 @@ export default {
             });
         },
         getData() {
-            var parm = this.form;
             this.$api.getAllOrganizer().then((res) => {
                 this.organizerList = res.data.data;
             });
@@ -494,6 +564,15 @@ export default {
     },
     created() {
         this.getData()
+        console.log(this.$route)
+        if(this.$route.query.id){
+            this.id=this.$route.query.id;
+            this.$api.getConference({id:this.id}).then(res=>{
+                this.form=res.data.data
+                this.form.citys=this.form.city.split(' ')
+                this.form.time=[this.form.begin_time,this.form.end_time]
+            })
+        }
     },
 };
 </script>

+ 57 - 20
src/views/conference/Apply.vue

@@ -32,10 +32,24 @@
                             <el-input clearable placeholder="请输入姓名" v-model="form.name"></el-input>
                     </el-form-item>
                     <el-form-item label="">
-                            <el-select v-model="form.id" clearable placeholder="请选择会议"></el-select>
+                            <el-select v-model="form.conference_id" clearable placeholder="请选择会议">
+                                <el-option
+                                    v-for="(item, index) in conferenceList"
+                                    :key="index"
+                                    :label="item.name"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
                     </el-form-item>
                     <el-form-item label="">
-                            <el-select v-model="form.id" clearable placeholder="请选择酒店"></el-select>
+                            <el-select v-model="form.hotel_id" clearable placeholder="请选择酒店">
+                                <el-option
+                                    v-for="(item, index) in hotelList"
+                                    :key="index"
+                                    :label="item.name"
+                                    :value="item.id"
+                                ></el-option>
+                            </el-select>
                     </el-form-item>
                     <el-form-item>
                         <el-button @click="getData" type="primary">搜索</el-button>
@@ -56,11 +70,11 @@
              <el-table
                     class="table"
                     :data="list"
-                    height='50vh'
+                    height='52vh'
                     border  v-loading="loading"
                     default-expand-all row-key="id"
                     style="width: 100%">
-                    <el-table-column
+                    <el-table-column width="200"
                     prop="conference_name"  
                     label="会议名称">
                     </el-table-column>
@@ -84,14 +98,14 @@
                     </template>
                     </el-table-column>
                     <el-table-column
-                    prop="phone"  
+                    prop="phone"  width="120"
                     label="手机号">
                     </el-table-column>
                     <el-table-column
-                    prop="email"  
+                    prop="email"  width="120"
                     label="邮箱">
                     </el-table-column>
-                    <el-table-column
+                    <el-table-column width="200"
                     prop="organizer_unit"  
                     label="单位">
                     </el-table-column>
@@ -133,8 +147,8 @@
                     <template slot-scope="scope">
                         <el-button  @click="invoice=scope.row,dialogVisible2=true" class="edit"  type="text" >审核</el-button>
                         <el-button @click="invoice=scope.row,dialogVisible=true"  type="text">发票详情</el-button>
-                        <el-button    type="text" >入住凭证</el-button>
-                        <el-button @click="dialogVisible1=true"   type="text" >驳回原因</el-button>
+                        <el-button @click="proof_img=scope.row.proof_img,dialogVisible3=true"    type="text" >入住凭证</el-button>
+                        <el-button @click="dialogVisible1=true,getReason(scope.row)"   type="text" >驳回原因</el-button>
                     </template>
                     </el-table-column>
             </el-table>
@@ -178,25 +192,25 @@
         :visible.sync="dialogVisible1">
            <div class="bh">
                <label>会议名称</label>
-               建设世界一流科技期刊的思考与探索 ——中国科学院自然科学期刊编辑研究会 第29次年会暨研讨班 正式通知
+                {{reason.conference_name}}
                 <br>
-                <label>用户姓名</label>张三
+                <label>用户姓名</label>{{reason.name}}
            </div>
            <el-table
                     class="table"
-                    :data="reason"
-                    default-expand-all 
+                    :data="reason.reject_reason"
+                    default-expand-all height="300"
                     style="width: 100%">
                     <el-table-column
-                    prop="name"  
+                    prop="ctime"  
                     label="驳回时间">
                     </el-table-column>
                     <el-table-column
-                    prop="name"  
+                    prop="cname"  
                     label="驳回人">
                     </el-table-column>
                     <el-table-column
-                    prop="name"  
+                    prop="reason"  
                     label="驳回原因">
                     </el-table-column>
            </el-table>
@@ -244,6 +258,11 @@
                     </el-form-item>
            </el-form>
         </el-dialog>
+         <el-dialog class="hotel"
+        title="入住凭证" :close-on-click-modal='false'
+        :visible.sync="dialogVisible3">
+           <img width="100%" :src="proof_img" alt="">
+        </el-dialog>
     </section>
 </template>
 <script>
@@ -255,15 +274,18 @@ export default {
     data(){
         return{
             form:{order_status:'-3',},
-            
+            conferenceList:[],
+            hotelList:[],
             list:[{}],
-            reason:[],
+            reason:{},
             invoice:{},
             total:0,
             loading:false,
             dialogVisible:false,
             dialogVisible1:false,
-            dialogVisible2:false
+            dialogVisible2:false,
+            dialogVisible3:false,
+            proof_img:''
         }
     },
     methods:{
@@ -277,13 +299,28 @@ export default {
         tabClick(){
             this.getData()
         },
+        getReason(data){
+            if(data.reject_reason){
+                data.reject_reason=JSON.parse(data.reject_reason);
+            }else{
+               data.reject_reason=[] 
+            }
+            this.reason=data
+        },
         getData(){
             var parm=this.form;        
             this.loading=true
             this.$api.getSignupList(parm).then(res=>{
                 this.list=res.data.data.list;
                 this.total=res.data.data.total
-                this.loading=false
+                this.loading=false;
+            })
+
+            this.$api.getConferenceList().then(res=>{
+                this.conferenceList=res.data.data.list;
+            })
+             this.$api.getHotelList().then(res=>{
+                this.hotelList=res.data.data.list;
             })
         },
         check(status){

+ 1 - 1
src/views/conference/Checker.vue

@@ -29,7 +29,7 @@
              <el-table
                     class="table"
                     :data="list"
-                    height='50vh'
+                    height='59vh'
                     border  v-loading="loading"
                     default-expand-all row-key="id"
                     style="width: 100%">

+ 1 - 1
src/views/conference/Hotel.vue

@@ -51,7 +51,7 @@
              <el-table
                     class="table"
                     :data="list"
-                    height='50vh'
+                    height='59vh'
                     border  v-loading="loading"
                     default-expand-all row-key="id"
                     style="width: 100%">

+ 24 - 8
src/views/conference/Manage.vue

@@ -12,6 +12,14 @@
             margin-top: 30px !important;
         }
     }
+    .desc{
+        overflow: hidden;
+        text-overflow: ellipsis;
+        display: -webkit-box;
+        -webkit-line-clamp: 3;
+        -webkit-box-orient: vertical;
+        white-space: normal;
+    }
 </style>
 <template>
     <section>
@@ -33,7 +41,7 @@
             <el-table
                     class="table"
                     :data="list"
-                    height='50vh'
+                    height='59vh'
                     border  v-loading="loading"
                     default-expand-all row-key="id"
                     style="width: 100%">
@@ -42,7 +50,7 @@
                     label="会议名称">
                     </el-table-column>
                     <el-table-column
-                    prop="username"  
+                    prop="username" 
                     label="会议海报">
                     <template slot-scope="scope"><img width="100" :src="scope.row.img" alt=""></template>
                     </el-table-column>
@@ -51,16 +59,22 @@
                     label="主办方">
                     </el-table-column>
                     <el-table-column
-                    prop="username"  
+                    prop=""  
                     label="主讲人">
                     </el-table-column>
                     <el-table-column
-                    prop=""  
+                    width="350"
                     label="会议时间">
+                    <template slot-scope="scope">
+                        {{scope.row.begin_time}}-{{scope.row.end_time}}
+                    </template>
                     </el-table-column>
                     <el-table-column
-                    prop=""  
+                    prop="desc"   width="300"
                     label="会议简介">
+                    <template slot-scope="scope">
+                        <div class="desc">{{scope.row.desc}}</div>
+                    </template>
                     </el-table-column>
                     <el-table-column
                     prop=""  
@@ -71,11 +85,13 @@
                     label="状态">
                     </el-table-column>
                     <el-table-column  
-                    prop="zip"  width="150"
+                    prop="zip"  width="200" fixed="right"
                     label="操作">
                     <template slot-scope="scope">
                         <el-button  @click="dialogVisible=true,status='bind',cur_id=scope.row.id,name=scope.row.name"  type="text" >添加酒店</el-button>
-                        <el-button class="edit" type="text">查看酒店</el-button>
+                        <el-button @click="$router.push({path:'/conference/conference/add',query:{id:scope.row.id}})" class="edit" type="text">编辑</el-button>
+                        <el-button @click="del(scope.row.id)" type="text" class="del">删除</el-button>
+
                     </template>
                     </el-table-column>
             </el-table>
@@ -148,7 +164,7 @@ export default {
                 this.$confirm('确定删除吗', '提示', {
                         type: 'warning'
                     }).then(() => {
-                    this.$api.deleteEnterprise({id:id}).then((res)=>{
+                    this.$api.deleteConference({id:id}).then((res)=>{
                             this.$message({
                                 message: '删除成功',
                                 type: 'success'