guhongwei 4 年之前
父節點
當前提交
a60054797f

+ 1 - 1
src/components/pagination.vue

@@ -27,12 +27,12 @@ export default {
   props: {
     position: { type: String, default: 'right' },
     total: { type: Number, default: 0 },
-    limit: { type: Number, default: 10 },
   },
   components: {},
   data: () => {
     return {
       currentPage: 1,
+      limit: 10,
     };
   },
   created() {},

+ 2 - 12
src/components/wang-editor.vue

@@ -1,5 +1,5 @@
 <template>
-  <div ref="editor" style="text-align:left;"></div>
+  <div ref="editor" style="text-align:left"></div>
 </template>
 <script>
 import E from 'wangeditor';
@@ -38,7 +38,6 @@ export default {
   data() {
     return {
       editorContent: this.value,
-      editor: undefined,
     };
   },
   mounted() {
@@ -50,7 +49,7 @@ export default {
     // 自定义菜单配置
     editor.customConfig.menus = menus;
     editor.customConfig.zIndex = 0;
-    editor.customConfig.uploadImgServer = '/files/chat/images/upload';
+    editor.customConfig.uploadImgServer = '/files/cms/images/upload';
     editor.customConfig.uploadImgMaxLength = 1;
     editor.customConfig.uploadImgHooks = {
       // 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式,可使用该配置
@@ -68,20 +67,11 @@ export default {
     };
     editor.create();
     editor.txt.html(this.value);
-    this.$set(this, `editor`, editor);
   },
   methods: {
     getContent: function() {
       return this.editorContent;
     },
-    setContent() {
-      this.editor.txt.clear();
-    },
   },
 };
 </script>
-<style lang="less" scoped>
-/deep/.w-e-text-container {
-  height: 200px !important;
-}
-</style>

+ 6 - 0
src/store/index.js

@@ -9,6 +9,10 @@ import news from './live/news';
 import personalchat from './live/personalchat';
 import personalroom from './live/personalroom';
 import comment from './live/comment';
+// 在线指导
+import newsguidance from './live/newsguidance';
+// 项目路演
+import newsroadshow from './live/newsroadshow';
 import market from './market/market';
 import transaction from './market/transaction';
 import expertsaudit from './market/expertsaudit';
@@ -65,5 +69,7 @@ export default new Vuex.Store({
     wxchattest,
     authUser,
     dockLogin,
+    newsguidance,
+    newsroadshow,
   },
 });

+ 41 - 0
src/store/live/newsguidance.js

@@ -0,0 +1,41 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  newsInfo: `/api/live/newsguidance`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit = undefined, ...info } = {}) {
+    const res = await this.$axios.$get(api.newsInfo, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.newsInfo}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.newsInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...info } = {}) {
+    const res = await this.$axios.$post(`${api.newsInfo}/update/${id}`, {
+      ...info,
+    });
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.newsInfo}/${payload}`);
+    return res;
+  },
+};
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 41 - 0
src/store/live/newsroadshow.js

@@ -0,0 +1,41 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import _ from 'lodash';
+Vue.use(Vuex);
+const api = {
+  newsInfo: `/api/live/newsroadshow`,
+};
+const state = () => ({});
+const mutations = {};
+
+const actions = {
+  async query({ commit }, { skip = 0, limit = undefined, ...info } = {}) {
+    const res = await this.$axios.$get(api.newsInfo, { skip, limit, ...info });
+    return res;
+  },
+  async create({ commit }, payload) {
+    const res = await this.$axios.$post(`${api.newsInfo}`, payload);
+    return res;
+  },
+  async fetch({ commit }, payload) {
+    const res = await this.$axios.$get(`${api.newsInfo}/${payload}`);
+    return res;
+  },
+  async update({ commit }, { id, ...info } = {}) {
+    const res = await this.$axios.$post(`${api.newsInfo}/update/${id}`, {
+      ...info,
+    });
+    return res;
+  },
+  async delete({ commit }, payload) {
+    const res = await this.$axios.$delete(`${api.newsInfo}/${payload}`);
+    return res;
+  },
+};
+
+export default {
+  namespaced: true,
+  state,
+  mutations,
+  actions,
+};

+ 6 - 5
src/views/adminCenter/vipInfo/index.vue

@@ -44,9 +44,9 @@
           <el-form-item label="手机号" :label-width="formLabelWidth">
             <el-input v-model="form.phone" autocomplete="off" maxlength="11" placeholder="请输入手机号" :disabled="disabled"></el-input>
           </el-form-item>
-          <el-form-item label="密码" :label-width="formLabelWidth">
+          <!-- <el-form-item label="密码" :label-width="formLabelWidth">
             <el-input v-model="form.passwd" autocomplete="off" placeholder="请输入密码" show-password :disabled="disabled"></el-input>
-          </el-form-item>
+          </el-form-item> -->
           <el-form-item label="单位名称" :label-width="formLabelWidth">
             <el-input v-model="form.company" autocomplete="off" placeholder="请输入单位名称"></el-input>
           </el-form-item>
@@ -84,6 +84,7 @@ export default {
       list: [], //显示数据列表
       total: 0,
       dock_id: '', //对接会id
+      room_id: '', //房间id
       dialogVisible: false,
       form: {},
       disabled: false,
@@ -102,6 +103,7 @@ export default {
       if (this.$checkRes(res)) {
         this.$set(this, `vipuserList`, res.data.vipuser);
         this.$set(this, `dock_id`, res.data.id);
+        this.$set(this, `room_id`, res.data.room_id);
         this.$set(this, `total`, res.data.vipuser.length);
       }
     },
@@ -157,11 +159,13 @@ export default {
           });
         } else {
           this.form.role = '8';
+          this.form.passwd = this.room_id;
           const res = await this.authUserCreate(this.form);
           if (this.$checkRes(res)) {
             let data = {
               vipname: this.form.name,
               vipphone: this.form.phone,
+              passwd: this.room_id,
               company: this.form.company,
               email: this.form.email,
               content: this.form.content,
@@ -184,14 +188,11 @@ export default {
       let newDate = {};
       newDate.name = data.vipname;
       newDate.phone = data.vipphone;
-      newDate.passwd = data.passwd;
       newDate.company = data.company;
       newDate.email = data.email;
       newDate.content = data.content;
       newDate.id = data.uid;
       newDate.vipid = data._id;
-      console.log(newDate);
-
       this.disabled = true;
       this.$set(this, `form`, newDate);
     },

+ 180 - 7
src/views/adminCenter/xmly/index.vue

@@ -2,24 +2,173 @@
   <div id="index">
     <el-row>
       <el-col :span="24">
-        项目路演
+        <el-col :span="24" class="leftTop"> <span>|</span> <span>项目路演</span> </el-col>
+        <el-col :span="24" class="info">
+          <span v-if="view == 'list'">
+            <el-col :span="24" class="add">
+              <el-button type="primary" size="mini" @click="add()">添加信息</el-button>
+            </el-col>
+            <el-col :span="24" class="list">
+              <data-table :fields="fields" :opera="opera" :data="list" :total="total" @edit="toEdit" @delete="toDelete" @query="search"></data-table>
+            </el-col>
+          </span>
+          <span v-else>
+            <el-col :span="24">
+              <el-col :span="24" class="back">
+                <el-button type="primary" size="mini" @click="back()">返回</el-button>
+              </el-col>
+              <el-col :span="24">
+                <el-form ref="form" :rules="rules" :model="form" label-width="80px">
+                  <el-form-item label="信息标题" prop="title">
+                    <el-input v-model="form.title" placeholder="请输入信息标题"></el-input>
+                  </el-form-item>
+                  <el-form-item label="来源">
+                    <el-input v-model="form.orgin" placeholder="请输入信息来源"></el-input>
+                  </el-form-item>
+                  <el-form-item label="标题简介">
+                    <el-input type="textarea" v-model="form.titlejj" placeholder="请输入标题简介"></el-input>
+                  </el-form-item>
+                  <el-form-item label="信息图片" prop="picture">
+                    <upload :limit="1" :data="form.picture" type="picture" :url="'/files/imgpath/upload'" @upload="uploadSuccess"></upload>
+                  </el-form-item>
+                  <el-form-item label="视频" prop="filepath">
+                    <upload :limit="1" :data="form.filepath" type="filepath" listType="" :url="'/files/imgpath/upload'" @upload="uploadSuccess"></upload>
+                  </el-form-item>
+                  <el-form-item label="信息内容">
+                    <wang-editor v-model="form.content" placeholder="请输入信息内容"></wang-editor>
+                  </el-form-item>
+                  <el-form-item label="发布时间">
+                    <el-col :span="11">
+                      <el-date-picker
+                        type="date"
+                        placeholder="发布时间"
+                        value-format="yyyy-MM-dd"
+                        v-model="form.publish_time"
+                        style="width: 100%;"
+                      ></el-date-picker>
+                    </el-col>
+                  </el-form-item>
+                  <el-form-item>
+                    <el-button type="primary" @click="onSubmit()">提交</el-button>
+                  </el-form-item>
+                </el-form>
+              </el-col>
+            </el-col>
+          </span>
+        </el-col>
       </el-col>
     </el-row>
   </div>
 </template>
 
 <script>
+import WangEditor from '@/components/wang-editor.vue';
+import upload from '@/components/upload.vue';
+import dataTable from '@/components/data-table.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: dock } = createNamespacedHelpers('dock');
+const { mapActions: newsroadshow } = createNamespacedHelpers('newsroadshow');
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: {
+    dataTable,
+    WangEditor,
+    upload,
+  },
   data: function() {
-    return {};
+    return {
+      opera: [
+        {
+          label: '修改',
+          icon: 'el-icon-edit',
+          method: 'edit',
+        },
+        {
+          label: '删除',
+          icon: 'el-icon-delete',
+          method: 'delete',
+        },
+      ],
+      fields: [
+        { label: '信息标题', prop: 'title', filter: 'input' },
+        { label: '来源', prop: 'orgin' },
+        { label: '标题简介', prop: 'titlejj' },
+        { label: '发布时间', prop: 'publish_time' },
+      ],
+      list: [],
+      total: 0,
+      dock_id: '',
+      view: 'list',
+      // 添加信息
+      form: {},
+      rules: {},
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...dock(['fetch']),
+    ...newsroadshow(['query', 'create', 'update', 'delete']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      let res = await this.fetch(this.user.uid);
+      this.$set(this, `dock_id`, res.data.id);
+      let arr = await this.query({ skip, limit, dockid: this.dock_id, ...info });
+      this.$set(this, `list`, arr.data);
+      this.$set(this, `total`, arr.total);
+    },
+    toEdit({ data }) {
+      this.view = 'detail';
+      this.$set(this, `form`, data);
+    },
+    async toDelete({ data }) {
+      let res = await this.delete(data.id);
+      this.$message({
+        message: '刪除信息成功',
+        type: 'success',
+      });
+      this.search();
+    },
+    // 添加
+    add() {
+      this.view = 'detail';
+      this.form = {};
+    },
+    // 提交
+    async onSubmit() {
+      if (this.form.id) {
+        let res = await this.update(this.form);
+        if (this.$checkRes(res)) {
+          this.$message({
+            message: '修改信息成功',
+            type: 'success',
+          });
+          this.back();
+          this.search();
+        }
+      } else {
+        let data = this.form;
+        data.dock_id = this.dock_id;
+        let res = await this.create(data);
+        if (this.$checkRes(res)) {
+          this.$message({
+            message: '添加信息成功',
+            type: 'success',
+          });
+          this.back();
+          this.search();
+        }
+      }
+    },
+    // 返回
+    back() {
+      this.view = 'list';
+    },
+    uploadSuccess({ type, data }) {
+      this.$set(this.form, `${type}`, data.uri);
+    },
   },
-
-  created() {},
-  methods: {},
   computed: {
     ...mapState(['user']),
     pageTitle() {
@@ -32,4 +181,28 @@ export default {
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.leftTop {
+  font-size: 18px;
+  width: 96%;
+  height: 41px;
+  line-height: 35px;
+  border-bottom: 1px solid #e5e5e5;
+  position: relative;
+  bottom: 1px;
+  margin: 10px;
+  font-weight: 600;
+  color: #22529a;
+}
+.info {
+  padding: 0 40px 0 10px;
+  .add {
+    text-align: right;
+    padding: 10px 0;
+  }
+}
+.back {
+  text-align: right;
+  padding: 10px 0;
+}
+</style>

+ 180 - 6
src/views/adminCenter/zxzd/index.vue

@@ -2,23 +2,173 @@
   <div id="index">
     <el-row>
       <el-col :span="24">
-        在线指导
+        <el-col :span="24" class="leftTop"> <span>|</span> <span>在线指导</span> </el-col>
+        <el-col :span="24" class="info">
+          <span v-if="view == 'list'">
+            <el-col :span="24" class="add">
+              <el-button type="primary" size="mini" @click="add()">添加信息</el-button>
+            </el-col>
+            <el-col :span="24" class="list">
+              <data-table :fields="fields" :opera="opera" :data="list" :total="total" @edit="toEdit" @delete="toDelete" @query="search"></data-table>
+            </el-col>
+          </span>
+          <span v-else>
+            <el-col :span="24">
+              <el-col :span="24" class="back">
+                <el-button type="primary" size="mini" @click="back()">返回</el-button>
+              </el-col>
+              <el-col :span="24">
+                <el-form ref="form" :rules="rules" :model="form" label-width="80px">
+                  <el-form-item label="信息标题" prop="title">
+                    <el-input v-model="form.title" placeholder="请输入信息标题"></el-input>
+                  </el-form-item>
+                  <el-form-item label="来源">
+                    <el-input v-model="form.orgin" placeholder="请输入信息来源"></el-input>
+                  </el-form-item>
+                  <el-form-item label="标题简介">
+                    <el-input type="textarea" v-model="form.titlejj" placeholder="请输入标题简介"></el-input>
+                  </el-form-item>
+                  <el-form-item label="信息图片" prop="picture">
+                    <upload :limit="1" :data="form.picture" type="picture" :url="'/files/imgpath/upload'" @upload="uploadSuccess"></upload>
+                  </el-form-item>
+                  <el-form-item label="视频" prop="filepath">
+                    <upload :limit="1" :data="form.filepath" type="filepath" listType="" :url="'/files/imgpath/upload'" @upload="uploadSuccess"></upload>
+                  </el-form-item>
+                  <el-form-item label="信息内容">
+                    <wang-editor v-model="form.content" placeholder="请输入信息内容"></wang-editor>
+                  </el-form-item>
+                  <el-form-item label="发布时间">
+                    <el-col :span="11">
+                      <el-date-picker
+                        type="date"
+                        placeholder="发布时间"
+                        value-format="yyyy-MM-dd"
+                        v-model="form.publish_time"
+                        style="width: 100%;"
+                      ></el-date-picker>
+                    </el-col>
+                  </el-form-item>
+                  <el-form-item>
+                    <el-button type="primary" @click="onSubmit()">提交</el-button>
+                  </el-form-item>
+                </el-form>
+              </el-col>
+            </el-col>
+          </span>
+        </el-col>
       </el-col>
     </el-row>
   </div>
 </template>
 
 <script>
+import WangEditor from '@/components/wang-editor.vue';
+import upload from '@/components/upload.vue';
+import dataTable from '@/components/data-table.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: dock } = createNamespacedHelpers('dock');
+const { mapActions: newsguidance } = createNamespacedHelpers('newsguidance');
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: {
+    dataTable,
+    WangEditor,
+    upload,
+  },
   data: function() {
-    return {};
+    return {
+      opera: [
+        {
+          label: '修改',
+          icon: 'el-icon-edit',
+          method: 'edit',
+        },
+        {
+          label: '删除',
+          icon: 'el-icon-delete',
+          method: 'delete',
+        },
+      ],
+      fields: [
+        { label: '信息标题', prop: 'title', filter: 'input' },
+        { label: '来源', prop: 'orgin' },
+        { label: '标题简介', prop: 'titlejj' },
+        { label: '发布时间', prop: 'publish_time' },
+      ],
+      list: [],
+      total: 0,
+      dock_id: '',
+      view: 'list',
+      // 添加信息
+      form: {},
+      rules: {},
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...dock(['fetch']),
+    ...newsguidance(['query', 'create', 'update', 'delete']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      let res = await this.fetch(this.user.uid);
+      this.$set(this, `dock_id`, res.data.id);
+      let arr = await this.query({ skip, limit, dockid: this.dock_id, ...info });
+      this.$set(this, `list`, arr.data);
+      this.$set(this, `total`, arr.total);
+    },
+    toEdit({ data }) {
+      this.view = 'detail';
+      this.$set(this, `form`, data);
+    },
+    async toDelete({ data }) {
+      let res = await this.delete(data.id);
+      this.$message({
+        message: '刪除信息成功',
+        type: 'success',
+      });
+      this.search();
+    },
+    // 添加
+    add() {
+      this.view = 'detail';
+      this.form = {};
+    },
+    // 提交
+    async onSubmit() {
+      if (this.form.id) {
+        let res = await this.update(this.form);
+        if (this.$checkRes(res)) {
+          this.$message({
+            message: '修改信息成功',
+            type: 'success',
+          });
+          this.back();
+          this.search();
+        }
+      } else {
+        let data = this.form;
+        data.dock_id = this.dock_id;
+        let res = await this.create(data);
+        if (this.$checkRes(res)) {
+          this.$message({
+            message: '添加信息成功',
+            type: 'success',
+          });
+          this.back();
+          this.search();
+        }
+      }
+    },
+    // 返回
+    back() {
+      this.view = 'list';
+    },
+    uploadSuccess({ type, data }) {
+      this.$set(this.form, `${type}`, data.uri);
+    },
   },
-  created() {},
-  methods: {},
   computed: {
     ...mapState(['user']),
     pageTitle() {
@@ -31,4 +181,28 @@ export default {
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.leftTop {
+  font-size: 18px;
+  width: 96%;
+  height: 41px;
+  line-height: 35px;
+  border-bottom: 1px solid #e5e5e5;
+  position: relative;
+  bottom: 1px;
+  margin: 10px;
+  font-weight: 600;
+  color: #22529a;
+}
+.info {
+  padding: 0 40px 0 10px;
+  .add {
+    text-align: right;
+    padding: 10px 0;
+  }
+}
+.back {
+  text-align: right;
+  padding: 10px 0;
+}
+</style>

+ 2 - 2
src/views/dynamic/parts/userTwo.vue

@@ -146,7 +146,7 @@ export default {
   margin: 20px 5px 20px 14px;
 }
 .one {
-  background: url(../../../assets/dynamic1.png) no-repeat;
+  background: url('~@/assets/dynamic1.png') no-repeat;
   background-size: 100% 100%;
   height: 150px;
 }
@@ -161,7 +161,7 @@ export default {
   font-size: 12px;
 }
 .two {
-  background: url(../../../assets/dynamic2.png) no-repeat;
+  background: url('~@/assets/dynamic1.png') no-repeat;
   background-size: 100% 100%;
 }
 .three {