Bladeren bron

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

tanyanfei 4 jaren geleden
bovenliggende
commit
58fb2726e5

+ 28 - 0
src/api.js

@@ -232,6 +232,26 @@ export default {
 	getAllOrganizer: params => {
 		return axios.get(`${baseURL}/api/admin/journal/organizer/all`, { params: params });
 	},
+	// 文章相关
+	getArticleList: params => {
+		return axios.get(`${baseURL}/api/admin/article/list`, { params: params });
+	},
+	getArticle: params => {
+		return axios.get(`${baseURL}/api/admin/article`, { params: params });
+	},
+	addArticle: params => {
+		return axios.post(`${baseURL}/api/admin/article`, params);
+	},
+	updateArticle: params => {
+		return axios.put(`${baseURL}/api/admin/article`, params);
+	},
+	delArticle: params => {
+		return axios.delete(`${baseURL}/api/admin/article`, { params: params });
+	},
+	searchJournalList: params => {
+		return axios.get(`${baseURL}/api/admin/journal/search`, { params: params });
+	},
+	// 会议管理相关
 	getConferenceList: params => {
 		return axios.get(`${baseURL}/api/admin/conference/list`, { params: params });
 	},
@@ -259,4 +279,12 @@ export default {
 	getHotel: params => {
 		return axios.get(`${baseURL}/api/admin/hotel`, {params:params});
 	},
+	// 活动管理
+	getActivityList: params => {
+		return axios.get(`${baseURL}/api/admin/activity/list`, { params: params });
+	},
+	// 期刊管理相关
+	getJournalList: params => {
+		return axios.get(`${baseURL}/api/admin/journal/list`, { params: params });
+	}
 }

+ 19 - 5
src/router.js

@@ -84,7 +84,11 @@ export default new Router({
         path: '/journal/journal',
         component: () => import('./views/journalQun/Journal.vue'),
         name: '中科院全刊'
-      }, ]
+      },{
+        path: '/journal/journal/add',
+        component: () => import('./views/journalQun/AddJournal.vue'),
+        name: '中科院全刊'
+      }]
     },
     {
       path: '/journal/organizer',
@@ -121,9 +125,13 @@ export default new Router({
       isLeaf: 1,
       children: [{
         path: '/learning/activity',
-        component: () => import('./views/message/Message.vue'),
+        component: () => import('./views/activity/Activity.vue'),
         name: '活动管理'
-      }, ]
+      },{
+        path: '/learning/activity/add',
+        component: () => import('./views/activity/AddActivity.vue'),
+        name: '新增活动'
+      },  ]
     },
     {
       path: '/article/article',
@@ -134,9 +142,15 @@ export default new Router({
       isLeaf: 1,
       children: [{
         path: '/article/article',
-        component: () => import('./views/message/Message.vue'),
+        component: () => import('./views/article/Article.vue'),
         name: '文章管理'
-      }, ]
+      }, 
+      {
+        path: '/article/article/add',
+        component: () => import('./views/article/AddArticle.vue'),
+        name: '新增文章'
+      }, 
+    ]
     },
     {
       path: '/conference/conference',

+ 2 - 2
src/views/Home.vue

@@ -10,8 +10,8 @@
 	<el-container>
 		<el-header>
 			<div class="header">
-				<img class="logo" src="../assets/logo.png" alt="">
-				<div class="siteTitle">中科院期刊微信公众号集中管理平台</div>
+				<!-- <img class="logo" src="../assets/logo.png" alt=""> -->
+				<!-- <div class="siteTitle">中科院期刊微信公众号集中管理平台</div> -->
 			</div>	
 			<div class="nav">
 				<!-- <router-link :class="act?'active':''" to="/index/index" @click.native='active(1)'>首页</router-link>

+ 251 - 0
src/views/activity/Activity.vue

@@ -0,0 +1,251 @@
+<style lang="scss">
+.preview {
+  .el-form-item {
+    margin-bottom: 15px;
+  }
+  label,
+  p {
+    line-height: 25px !important;
+  }
+}
+.el-cascader {
+  width: 100%;
+}
+a {
+  text-decoration: none;
+  color: #409eff;
+  cursor: pointer;
+}
+// 右边
+.item-main {
+  // margin:34px;
+  // height:600px;
+  // background: #FFFFFF;
+  border: 1px solid #dddddd;
+  box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.13);
+  border-radius: 20px;
+  .el-form.over_y {
+    max-height: calc(100vh - 340px);
+  }
+  /deep/.el-form-item__label {
+    float: none;
+  }
+}
+// label样式
+.edit_label {
+  /deep/.el-input__inner {
+    background: #f5faff;
+    border: 0px;
+    padding: 0px;
+  }
+}
+/deep/.opicon {
+  font-weight: bold;
+  padding: 5px;
+  color: #3895fe;
+}
+.tpl_title {
+  font-size: 18px;
+  margin: 20px 0;
+}
+.tpl_form {
+  margin: 20px;
+  border: 1px solid #ccc;
+  border-radius: 20px;
+  /deep/.el-form-item {
+    background: none;
+  }
+  /deep/.el-form-item__content {
+    width: 100%;
+  }
+}
+.survey_logo {
+  position: relative;
+  top: 15px;
+  left: 20px;
+}
+.result_dialog .el-dialog{
+    width: 40%;
+    margin-top:20vh!important;
+}
+.result-item{
+    height: 35px;
+    .label{
+        font-weight: 600;
+    }
+}
+</style>
+<template>
+  <section>
+    <p><span>信息管理></span>活动管理</p>
+    <div class="content">
+      <div class="filter">
+        <el-form
+          size="small"
+          label-width="70px"
+          :inline="true"
+          label-position="left"
+        >
+          <el-form-item label="">
+            <el-input
+              clearable
+              placeholder="请输入标题"
+              v-model="form.name"
+            ></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" @click="search">搜索</el-button>
+          </el-form-item>
+          <el-form-item style="float: right">
+            <el-button @click="addActivity" type="primary">发布活动</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-table
+        class="table"
+        :data="list"
+        height="50vh"
+        border
+        v-loading="loading"
+        default-expand-all
+        row-key="id"
+        style="width: 100%"
+      >
+        <el-table-column prop="img" label="活动海报">
+          <template slot-scope="scope">
+              <img :src="scope.row.img" alt="" height="80" width="60">
+          </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="desc" label="活动简介" width="500"></el-table-column>
+        <el-table-column prop="zip" width="150" label="操作">
+          <template slot-scope="scope">
+            <el-button class="edit" type="text" @click="edit(scope.row)"
+              >编辑</el-button
+            >
+            <el-button class="del" @click="del(scope.row.id)" type="text"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <Page
+        ref="pageButton"
+        :current="form.page"
+        :page_size="form.page_size"
+        :total="total"
+        @pageChange="gopage"
+      />
+    </div>
+  </section>
+</template>
+<script>
+import Page from "../../components/Page";
+import fuEditor from '../../components/fuEditor'
+export default {
+  components: {
+    Page,
+    fuEditor
+  },
+  data() {
+    return {
+      form: { name: "", page: 1, page_size: 20 },
+      total: 1,
+      list: [{ name: "2333" }],
+      loading: false,
+      rules: {
+        name: [{ required: true, message: "请输入标题", trigger: "blur" }],
+      },
+    };
+  },
+  methods: {
+    search() {
+      let parm = this.form;
+      this.getData();
+    },
+    openDiag() {
+      this.form1 = {};
+      this.dialogVisible = true;
+      this.dialogTitle = "发送消息";
+    },
+    addActivity(){
+          this.$router.push({path:'/learning/activity/add'})
+    },
+    gopage(size) {
+      if (size) {
+        this.form.page_size = size;
+      }
+      this.form.page = this.$refs.pageButton.page;
+      this.getData();
+    },
+    getData() {
+      var parm = this.form;
+      this.loading = true;
+      this.$api.getActivityList().then((res) => {
+        this.list = res.data.data.list;
+        this.loading = false;
+      });
+    },
+    del(id) {
+      this.$confirm("确定删除吗", "提示", {
+        type: "warning",
+      }).then(() => {
+        this.$api.delArticle({ id: id }).then((res) => {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.getData();
+        });
+      });
+    },
+    edit(row) {
+      this.$router.push({path:'/article/article/add',query:{id:row.id}})
+    },
+    save() {
+      this.$refs["form1"].validate((valid) => {
+        if (valid) {
+          let parm = this.form1;
+          let id = this.form1.id;
+          parm.receiver_id = JSON.stringify(parm.receiver_id);
+          if (id) {
+            this.$api.editMessage(parm).then((res) => {
+              if (res.data.code == 0) {
+                this.$message({
+                  type: "success",
+                  message: "保存成功!",
+                });
+              } else {
+                this.$message.error("保存失败!");
+              }
+              this.getData();
+              this.dialogVisible = false;
+            });
+          } else {
+            this.$api.addMessage(parm).then((res) => {
+              if (res.data.code == 0) {
+                this.$message({
+                  type: "success",
+                  message: "保存成功!",
+                });
+              } else {
+                this.$message.error("保存失败!");
+              }
+              this.getData();
+              this.dialogVisible = false;
+            });
+          }
+        }
+      });
+    },
+  },
+  created() {
+    this.getData();
+  },
+};
+</script>

+ 300 - 0
src/views/activity/AddActivity.vue

@@ -0,0 +1,300 @@
+<style lang="scss" scoped>
+.preview {
+  .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;
+}
+.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;
+  }
+}
+.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;
+  }
+}
+.avatar-uploader .el-upload:hover {
+  border-color: #409eff;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: 68px;
+  height: 68px;
+  line-height: 68px;
+  text-align: center;
+}
+.avatar {
+  width: 68px;
+  height: 68px;
+  display: block;
+}
+/deep/.speaker_avatar .el-upload {
+  width: 80px;
+  height: 80px;
+  line-height: 80px;
+}
+.hotel_imgs {
+  /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>
+</template>
+<script>
+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)
+    },
+    beforeAvatarUpload() {},
+    handleClick() {},
+    addSpeaker() {
+      this.form.speaker.push({ name: "", intruduce: "" });
+    },
+    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("保存失败!");
+              }
+            });
+          } else {
+            this.$api.addArticle(parm).then((res) => {
+              if (res.data.code == 0) {
+                this.$message({
+                  type: "success",
+                  message: "保存成功!",
+                });
+              } else {
+                this.$message.error("保存失败!");
+              }
+            });
+          }
+        } else {
+            this.$message.error("有必填项没有填!");
+        }
+      });
+    },
+    del(id) {
+      this.$confirm("确定删除吗", "提示", {
+        type: "warning",
+      }).then(() => {
+        this.$api.deleteEnterprise({ id: id }).then((res) => {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.getData();
+        });
+      });
+    },
+  },
+  created() {
+    this.getData();
+  },
+};
+</script>

+ 300 - 0
src/views/article/AddArticle.vue

@@ -0,0 +1,300 @@
+<style lang="scss" scoped>
+.preview {
+  .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;
+}
+.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;
+  }
+}
+.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;
+  }
+}
+.avatar-uploader .el-upload:hover {
+  border-color: #409eff;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: 68px;
+  height: 68px;
+  line-height: 68px;
+  text-align: center;
+}
+.avatar {
+  width: 68px;
+  height: 68px;
+  display: block;
+}
+/deep/.speaker_avatar .el-upload {
+  width: 80px;
+  height: 80px;
+  line-height: 80px;
+}
+.hotel_imgs {
+  /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>
+</template>
+<script>
+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)
+    },
+    beforeAvatarUpload() {},
+    handleClick() {},
+    addSpeaker() {
+      this.form.speaker.push({ name: "", intruduce: "" });
+    },
+    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("保存失败!");
+              }
+            });
+          } else {
+            this.$api.addArticle(parm).then((res) => {
+              if (res.data.code == 0) {
+                this.$message({
+                  type: "success",
+                  message: "保存成功!",
+                });
+              } else {
+                this.$message.error("保存失败!");
+              }
+            });
+          }
+        } else {
+            this.$message.error("有必填项没有填!");
+        }
+      });
+    },
+    del(id) {
+      this.$confirm("确定删除吗", "提示", {
+        type: "warning",
+      }).then(() => {
+        this.$api.deleteEnterprise({ id: id }).then((res) => {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.getData();
+        });
+      });
+    },
+  },
+  created() {
+    this.getData();
+  },
+};
+</script>

+ 246 - 0
src/views/article/Article.vue

@@ -0,0 +1,246 @@
+<style lang="scss">
+.preview {
+  .el-form-item {
+    margin-bottom: 15px;
+  }
+  label,
+  p {
+    line-height: 25px !important;
+  }
+}
+.el-cascader {
+  width: 100%;
+}
+a {
+  text-decoration: none;
+  color: #409eff;
+  cursor: pointer;
+}
+// 右边
+.item-main {
+  // margin:34px;
+  // height:600px;
+  // background: #FFFFFF;
+  border: 1px solid #dddddd;
+  box-shadow: 0px 5px 10px 0px rgba(0, 0, 0, 0.13);
+  border-radius: 20px;
+  .el-form.over_y {
+    max-height: calc(100vh - 340px);
+  }
+  /deep/.el-form-item__label {
+    float: none;
+  }
+}
+// label样式
+.edit_label {
+  /deep/.el-input__inner {
+    background: #f5faff;
+    border: 0px;
+    padding: 0px;
+  }
+}
+/deep/.opicon {
+  font-weight: bold;
+  padding: 5px;
+  color: #3895fe;
+}
+.tpl_title {
+  font-size: 18px;
+  margin: 20px 0;
+}
+.tpl_form {
+  margin: 20px;
+  border: 1px solid #ccc;
+  border-radius: 20px;
+  /deep/.el-form-item {
+    background: none;
+  }
+  /deep/.el-form-item__content {
+    width: 100%;
+  }
+}
+.survey_logo {
+  position: relative;
+  top: 15px;
+  left: 20px;
+}
+.result_dialog .el-dialog{
+    width: 40%;
+    margin-top:20vh!important;
+}
+.result-item{
+    height: 35px;
+    .label{
+        font-weight: 600;
+    }
+}
+</style>
+<template>
+  <section>
+    <p><span>信息管理></span>文章管理</p>
+    <div class="content">
+      <div class="filter">
+        <el-form
+          size="small"
+          label-width="70px"
+          :inline="true"
+          label-position="left"
+        >
+          <el-form-item label="">
+            <el-input
+              clearable
+              placeholder="请输入标题"
+              v-model="form.name"
+            ></el-input>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" @click="search">搜索</el-button>
+          </el-form-item>
+          <el-form-item style="float: right">
+            <el-button @click="addArticle" type="primary">发布文章</el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-table
+        class="table"
+        :data="list"
+        height="50vh"
+        border
+        v-loading="loading"
+        default-expand-all
+        row-key="id"
+        style="width: 100%"
+      >
+        <el-table-column prop="name" label="文章名称" width="500px"> </el-table-column>
+        <el-table-column prop="author" label="作者"></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="ctime" label="发布时间"></el-table-column>
+        <el-table-column prop="read_num" label="阅读量"></el-table-column>
+        <el-table-column prop="zip" width="150" label="操作">
+          <template slot-scope="scope">
+            <el-button class="edit" type="text" @click="edit(scope.row)"
+              >编辑</el-button
+            >
+            <el-button class="del" @click="del(scope.row.id)" type="text"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <Page
+        ref="pageButton"
+        :current="form.page"
+        :page_size="form.page_size"
+        :total="total"
+        @pageChange="gopage"
+      />
+    </div>
+  </section>
+</template>
+<script>
+import Page from "../../components/Page";
+import fuEditor from '../../components/fuEditor'
+export default {
+  components: {
+    Page,
+    fuEditor
+  },
+  data() {
+    return {
+      form: { name: "", page: 1, page_size: 20 },
+      total: 1,
+      list: [{ name: "2333" }],
+      loading: false,
+      rules: {
+        name: [{ required: true, message: "请输入标题", trigger: "blur" }],
+      },
+    };
+  },
+  methods: {
+    search() {
+      let parm = this.form;
+      this.getData();
+    },
+    openDiag() {
+      this.form1 = {};
+      this.dialogVisible = true;
+      this.dialogTitle = "发送消息";
+    },
+    addArticle(){
+          this.$router.push({path:'/article/article/add'})
+    },
+    gopage(size) {
+      if (size) {
+        this.form.page_size = size;
+      }
+      this.form.page = this.$refs.pageButton.page;
+      this.getData();
+    },
+    getData() {
+      var parm = this.form;
+      this.loading = true;
+      this.$api.getArticleList().then((res) => {
+        console.log(res)
+        this.list = res.data.data.list;
+        this.loading = false;
+      });
+    },
+    del(id) {
+      this.$confirm("确定删除吗", "提示", {
+        type: "warning",
+      }).then(() => {
+        this.$api.delArticle({ id: id }).then((res) => {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.getData();
+        });
+      });
+    },
+    edit(row) {
+      this.$router.push({path:'/article/article/add',query:{id:row.id}})
+    },
+    save() {
+      this.$refs["form1"].validate((valid) => {
+        if (valid) {
+          let parm = this.form1;
+          let id = this.form1.id;
+          parm.receiver_id = JSON.stringify(parm.receiver_id);
+          if (id) {
+            this.$api.editMessage(parm).then((res) => {
+              if (res.data.code == 0) {
+                this.$message({
+                  type: "success",
+                  message: "保存成功!",
+                });
+              } else {
+                this.$message.error("保存失败!");
+              }
+              this.getData();
+              this.dialogVisible = false;
+            });
+          } else {
+            this.$api.addMessage(parm).then((res) => {
+              if (res.data.code == 0) {
+                this.$message({
+                  type: "success",
+                  message: "保存成功!",
+                });
+              } else {
+                this.$message.error("保存失败!");
+              }
+              this.getData();
+              this.dialogVisible = false;
+            });
+          }
+        }
+      });
+    },
+  },
+  created() {
+    this.getData();
+  },
+};
+</script>

+ 300 - 0
src/views/journalQun/AddJournal.vue

@@ -0,0 +1,300 @@
+<style lang="scss" scoped>
+.preview {
+  .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;
+}
+.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;
+  }
+}
+.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;
+  }
+}
+.avatar-uploader .el-upload:hover {
+  border-color: #409eff;
+}
+.avatar-uploader-icon {
+  font-size: 28px;
+  color: #8c939d;
+  width: 68px;
+  height: 68px;
+  line-height: 68px;
+  text-align: center;
+}
+.avatar {
+  width: 68px;
+  height: 68px;
+  display: block;
+}
+/deep/.speaker_avatar .el-upload {
+  width: 80px;
+  height: 80px;
+  line-height: 80px;
+}
+.hotel_imgs {
+  /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>
+</template>
+<script>
+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)
+    },
+    beforeAvatarUpload() {},
+    handleClick() {},
+    addSpeaker() {
+      this.form.speaker.push({ name: "", intruduce: "" });
+    },
+    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("保存失败!");
+              }
+            });
+          } else {
+            this.$api.addArticle(parm).then((res) => {
+              if (res.data.code == 0) {
+                this.$message({
+                  type: "success",
+                  message: "保存成功!",
+                });
+              } else {
+                this.$message.error("保存失败!");
+              }
+            });
+          }
+        } else {
+            this.$message.error("有必填项没有填!");
+        }
+      });
+    },
+    del(id) {
+      this.$confirm("确定删除吗", "提示", {
+        type: "warning",
+      }).then(() => {
+        this.$api.deleteEnterprise({ id: id }).then((res) => {
+          this.$message({
+            message: "删除成功",
+            type: "success",
+          });
+          this.getData();
+        });
+      });
+    },
+  },
+  created() {
+    this.getData();
+  },
+};
+</script>

+ 67 - 95
src/views/journalQun/Journal.vue

@@ -21,7 +21,7 @@
                         <el-button  type="primary">搜索</el-button>
                     </el-form-item>
                     <el-form-item style="float:right" >
-                        <el-button @click="dialogVisible=true,edit=0" type="primary">发送消息</el-button>
+                        <el-button @click="add" type="primary">添加期刊</el-button>
                     </el-form-item>
                 </el-form>
             </div>
@@ -32,20 +32,73 @@
                     default-expand-all row-key="id"
                     style="width: 100%">
                     <el-table-column
-                    prop="name"  width="300"
-                    label="标题">
+                    prop="img"
+                    label="期刊封面">
+                        <template slot-scope="scope">
+                            <img :src="scope.row.img" alt="" height="80" width="60">
+                        </template>
                     </el-table-column>
                     <el-table-column
-                    prop="username"  
-                    label="发送者">
+                    prop="name"
+                    width="180"  
+                    label="期刊名称">
                     </el-table-column>
                     <el-table-column
-                    prop="area" 
-                    label="接收者">
+                    prop="wxcode" 
+                    label="微信号">
                     </el-table-column>
                     <el-table-column
-                    prop="area" 
-                    label="发送时间">
+                    prop="subject_name" 
+                    label="主办单位">
+                    </el-table-column>
+                    <el-table-column
+                    prop="desc"
+                    width="300" 
+                    label="简介">
+                    </el-table-column>
+                    <el-table-column
+                    prop="name" 
+                    label="中文名称">
+                    </el-table-column>
+                    <el-table-column
+                    prop="ename" 
+                    label="外文名称">
+                    </el-table-column>
+                    <el-table-column
+                    prop="languages" 
+                    label="语种">
+                    </el-table-column>
+                    <el-table-column
+                    prop="editor" 
+                    label="主编">
+                    </el-table-column>
+                    <el-table-column
+                    prop="corganizers" 
+                    label="主管单位">
+                    </el-table-column>
+                    <el-table-column
+                    prop="publishingUnit" 
+                    label="办刊单位">
+                    </el-table-column>
+                    <el-table-column
+                    prop="publishingTime" 
+                    label="创刊时间">
+                    </el-table-column>
+                    <el-table-column
+                    prop="domestic" 
+                    label="国内刊号">
+                    </el-table-column>
+                    <el-table-column
+                    prop="issn" 
+                    label="国际刊号">
+                    </el-table-column>
+                    <el-table-column
+                    prop="website" 
+                    label="期刊官网">
+                    </el-table-column>
+                    <el-table-column
+                    prop="editorialAddress" 
+                    label="编辑部地址">
                     </el-table-column>
                     <el-table-column  
                     prop="zip"  width="150"
@@ -114,23 +167,7 @@ export default {
       total:1,
       list:[{name:'2333'}],
       loading:false,
-      input:'',
-      dialogVisible:false,
-      defaultProps:{},
-      data: [{
-          id: 1,
-          label: '一级 1'
-        }, {
-          id: 2,
-          label: '一级 2',
-          children: [{
-            id: 5,
-            label: '二级 2-1'
-          }, {
-            id: 6,
-            label: '二级 2-2'
-          }]
-        }],
+      input:''
     }
   },
   methods:{
@@ -141,52 +178,8 @@ export default {
             this.form.page=this.$refs.pageButton.page
             this.getData()
         },
-        handleSelectionChange(val) {
-            this.multipleSelection = val;
-        },
-        gopage1(size){
-            if(size){
-                this.form1.page_size=size
-            }
-            this.form1.page=this.$refs.pageButton1.page
-            this.getJl()
-        },
-        open(data) {
-            this.dialogFormVisible=true;
-            this.message={...data}
-        },
-        download(){
-            let array=this.multipleSelection,ids=[];
-            for(let i=0;i<array.length;i++){
-                ids.push(array[i].id)
-            }
-            ids=ids.join(',')
-            this.$api.downloadMon({ids:ids}).then(res=>{
-                        var elink = document.createElement('a');
-                        let blob=new Blob([res.data], {type: 'application/vnd.ms-excel'});
-                        let objUrl=URL.createObjectURL(blob);
-                        console.log(res.headers['content-disposition'])
-                        let file_name=res.headers['content-disposition'].split('=')[1];
-                        elink.download = file_name;
-                        elink.style.display = 'none';                
-                        elink.href = objUrl;
-                        document.body.appendChild(elink);
-                        elink.click();
-                        document.body.removeChild(elink);     
-            })
-        },
-        prview(id){
-            this.form1.enterprise_id=id;
-            this.getJl();
-            this.dialogFormVisible1=true
-        },
-        getJl(){
-            var parm=this.form1;
-            this.$api.getMonitjobList(parm).then(res=>{
-                this.data=res.data.data.list
-                this.total1=res.data.data.total
-                
-            })
+        add(){
+            this.$router.push({path:'/journal/journal/add'})
         },
         detail(id){
             this.$router.push({ path: '/company/detail', query: {  id: id,page:this.form.page,page_size:this.form.page_size  } });
@@ -194,19 +187,10 @@ export default {
         getData(){
             var parm=this.form;        
             this.loading=true
-            this.$api.getEnterpriseList(parm).then(res=>{
+            this.$api.getJournalList(parm).then(res=>{
                 this.list=res.data.data.list;
-                // list.forEach(item => {
-                //     if(item.children.length>0){
-                //         item.hasChildren=true
-                //     }else{
-                //         item.hasChildren=false
-                //     }
-                // });
                 this.total=res.data.data.total
                 this.loading=false
-                this.area=this.store.area;
-                this.category=this.store.categorys;
             })
         },
         del(id){
@@ -222,21 +206,9 @@ export default {
                     })
                 })
         },
-        permission(name){
-			let permissions=this.info.permissions||[];
-			let list=[];
-			for(let i=0;i<permissions.length;i++){
-				list.push(permissions[i].name)
-			}
-			if(list.indexOf(name)<0){
-				return false;
-			}else{
-				return true;
-			}	
-		},
   },
   created(){
-      
+      this.getData()
   }
 }
 </script>