guhongwei 5 years ago
parent
commit
7b8463c4e7

+ 100 - 0
src/layout/duijiehui/duijiedetail.vue

@@ -0,0 +1,100 @@
+<template>
+  <div id="columnDetail">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="top">
+          <el-col :span="24" class="topBtn">
+            <el-button type="primary" size="mini" @click="returnBtn()">返回</el-button>
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="messgae">
+          <el-form ref="form" :model="form" label-width="120px">
+            <el-form-item label="对接会标题">
+              <el-input v-model="form.title"></el-input>
+            </el-form-item>
+            <el-form-item label="开始时间">
+              <el-date-picker v-model="form.start_time" type="datetime" placeholder="请选择开始时间" format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm">
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="报名截止时间">
+              <el-date-picker
+                v-model="form.join_end"
+                type="datetime"
+                placeholder="请选择报名截止时间"
+                format="yyyy-MM-dd HH:mm"
+                value-format="yyyy-MM-dd HH:mm"
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="省份">
+              <el-select v-model="form.province" placeholder="请选择省份" @change="changeshenge">
+                <el-option v-for="item in option" :key="item.code" :label="item.name" :value="item.code"> </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="市">
+              <el-select v-model="form.place" placeholder="请选择市">
+                <el-option v-for="item in options" :key="item.code" :label="item.name" :value="item.code"> </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="简介">
+              <el-input type="textarea" v-model="form.desc"></el-input>
+            </el-form-item>
+            <el-form-item label="对接会视频">
+              <upload :limit="1" :data="form.file_path" type="file_path" listType="" :url="'/files/imgpath/upload'" @upload="uploadSuccess"></upload>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="onSubmit()">提交</el-button>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import upload from '@/components/upload.vue';
+export default {
+  name: 'columnDetail',
+  props: {
+    form: null,
+    option: null,
+    options: null,
+  },
+  components: {
+    upload,
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    onSubmit() {
+      console.log(this.form);
+      this.$emit('submitDate', { data: this.form, id: this.form.id });
+    },
+    returnBtn() {
+      this.$router.push({ path: '/duijiehui/index' });
+    },
+    changeshenge(value) {
+      this.$emit('placesubmit', { value });
+    },
+    uploadSuccess({ type, data }) {
+      console.log(type, data);
+      this.$set(this.form, `${type}`, data.uri);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  padding: 15px 0;
+}
+.top .topTitle {
+  text-align: left;
+}
+.top .topBtn {
+  text-align: right;
+  padding: 0 5px;
+}
+</style>

+ 90 - 0
src/layout/duijiehui/duijiehuiexamine.vue

@@ -0,0 +1,90 @@
+<template>
+  <div id="columnDetail">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="top">
+          <el-col :span="24" class="topBtn">
+            <el-button type="primary" size="mini" @click="returnBtn()">返回</el-button>
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="messgae">
+          <el-form ref="form" :model="form" label-width="120px">
+            <el-form-item label="对接会标题">
+              <el-input v-model="form.title" :disabled="true"></el-input>
+            </el-form-item>
+            <el-form-item label="开始时间">
+              <el-date-picker
+                :disabled="true"
+                v-model="form.start_time"
+                type="datetime"
+                placeholder="请选择开始时间"
+                format="yyyy-MM-dd HH:mm"
+                value-format="yyyy-MM-dd HH:mm"
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="报名截止时间">
+              <el-date-picker
+                :disabled="true"
+                v-model="form.join_end"
+                type="datetime"
+                placeholder="请选择报名截止时间"
+                format="yyyy-MM-dd HH:mm"
+                value-format="yyyy-MM-dd HH:mm"
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="简介">
+              <el-input type="textarea" v-model="form.desc" :disabled="true"></el-input>
+            </el-form-item>
+            <el-form-item label="审核" :disabled="true">
+              <el-radio v-model="form.is_allowed" label="1">允许</el-radio>
+              <el-radio v-model="form.is_allowed" label="2">拒绝</el-radio>
+            </el-form-item>
+
+            <el-form-item label="拒绝理由" v-if="form.is_allowed == 2">
+              <el-input type="textarea" v-model="form.reason" placeholder="无"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="onSubmit()">提交</el-button>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'columnDetail',
+  props: {
+    form: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    onSubmit() {
+      this.$emit('submitDate', { data: this.form, id: this.form.id });
+    },
+    returnBtn() {
+      this.$router.push({ path: '/duijiehui/index' });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  padding: 15px 0;
+}
+.top .topTitle {
+  text-align: left;
+}
+.top .topBtn {
+  text-align: right;
+  padding: 0 5px;
+}
+</style>

+ 87 - 0
src/layout/duijiehui/duijiehuistatus.vue

@@ -0,0 +1,87 @@
+<template>
+  <div id="columnDetail">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="top">
+          <el-col :span="24" class="topBtn">
+            <el-button type="primary" size="mini" @click="returnBtn()">返回</el-button>
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="messgae">
+          <el-form ref="form" :model="form" label-width="120px">
+            <el-form-item label="对接会标题">
+              <el-input v-model="form.title" :disabled="true"></el-input>
+            </el-form-item>
+            <el-form-item label="开始时间">
+              <el-date-picker
+                :disabled="true"
+                v-model="form.start_time"
+                type="datetime"
+                placeholder="请选择开始时间"
+                format="yyyy-MM-dd HH:mm"
+                value-format="yyyy-MM-dd HH:mm"
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="报名截止时间">
+              <el-date-picker
+                :disabled="true"
+                v-model="form.join_end"
+                type="datetime"
+                placeholder="请选择报名截止时间"
+                format="yyyy-MM-dd HH:mm"
+                value-format="yyyy-MM-dd HH:mm"
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item label="简介">
+              <el-input type="textarea" v-model="form.desc" :disabled="true"></el-input>
+            </el-form-item>
+
+            <el-form-item label="状态" :disabled="true">
+              <el-radio v-model="form.status" label="1">开始</el-radio>
+              <el-radio v-model="form.status" label="2">结束</el-radio>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="onSubmit()">提交</el-button>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'columnDetail',
+  props: {
+    form: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    onSubmit() {
+      this.$emit('submitDate', { data: this.form, id: this.form.id });
+    },
+    returnBtn() {
+      this.$router.push({ path: '/duijiehui/index' });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  padding: 15px 0;
+}
+.top .topTitle {
+  text-align: left;
+}
+.top .topBtn {
+  text-align: right;
+  padding: 0 5px;
+}
+</style>

+ 60 - 0
src/layout/duijiehui/shenhedetail.vue

@@ -0,0 +1,60 @@
+<template>
+  <div id="columnDetail">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="top">
+          <el-col :span="24" class="topBtn">
+            <el-button type="primary" size="mini" @click="returnBtn()">返回</el-button>
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="messgae">
+          <el-form ref="form" :model="form" label-width="120px">
+            <el-form-item label=" 对接会标题">
+              <el-input v-model="form.title"></el-input>
+            </el-form-item>
+            <el-form-item label="简介">
+              <el-input type="textarea" v-model="form.desc"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="onSubmit()">提交</el-button>
+            </el-form-item>
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'columnDetail',
+  props: {
+    form: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    onSubmit() {
+      this.$emit('submitDate', { data: this.form, id: this.form.id });
+    },
+    returnBtn() {
+      this.$router.push({ path: '/duijiehui/index' });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  padding: 15px 0;
+}
+.top .topTitle {
+  text-align: left;
+}
+.top .topBtn {
+  text-align: right;
+  padding: 0 5px;
+}
+</style>

+ 31 - 5
src/router/index.js

@@ -17,8 +17,14 @@ const routes = [
     meta: { title: '菜单管理' },
     meta: { title: '菜单管理' },
     component: () => import('../views/menu/index.vue'),
     component: () => import('../views/menu/index.vue'),
   },
   },
+  // 部门管理
+  {
+    path: '/department/index',
+    meta: { title: '部门管理' },
+    component: () => import('../views/department/index.vue'),
+  },
   // 用戶管理
   // 用戶管理
-  // 个人与企业
+  // 个人&企业&专家
   {
   {
     path: '/user/index',
     path: '/user/index',
     meta: { title: '个人&企业&专家用户管理' },
     meta: { title: '个人&企业&专家用户管理' },
@@ -30,11 +36,31 @@ const routes = [
     meta: { title: '个人&企业用户信息管理' },
     meta: { title: '个人&企业用户信息管理' },
     component: () => import('../views/user/detail.vue'),
     component: () => import('../views/user/detail.vue'),
   },
   },
-  // 临时
+  // 对接会
+  {
+    path: '/duijiehui/index',
+    meta: { title: '对接会管理' },
+    component: () => import('../views/duijiehui/index.vue'),
+  },
+  //对接会详情
+  {
+    path: '/duijiehui/detail',
+    component: () => import('../views/duijiehui/detail.vue'),
+  },
+  //对接会审核
+  {
+    path: '/duijiehui/duijieshenhe',
+    component: () => import('../views/duijiehui/duijieshenhe.vue'),
+  },
+  //对接会管理员审核详情
+  {
+    path: '/duijiehui/duijiehuiexamine',
+    component: () => import('../views/duijiehui/duijiehuiexamine.vue'),
+  },
+  //对接会是否开始
   {
   {
-    path: '/user/temporaryIndex',
-    meta: { title: '临时用户管理' },
-    component: () => import('../views/user/temporaryIndex.vue'),
+    path: '/duijiehui/duijiehuistatus',
+    component: () => import('../views/duijiehui/duijiehuistatus.vue'),
   },
   },
   // 部门管理
   // 部门管理
   {
   {

+ 38 - 0
src/store/apply.js

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

+ 7 - 0
src/store/index.js

@@ -8,8 +8,12 @@ import codeCategory from './codeCategory';
 import liveTechnicalColumn from './liveTechnicalColumn';
 import liveTechnicalColumn from './liveTechnicalColumn';
 import liveTechnicalNews from './liveTechnicalNews';
 import liveTechnicalNews from './liveTechnicalNews';
 import exportuser from './exportuser';
 import exportuser from './exportuser';
+
 // 个人&企业
 // 个人&企业
 import users from './user';
 import users from './user';
+import live from './live';
+import place from './place';
+import apply from './apply';
 Vue.use(Vuex);
 Vue.use(Vuex);
 
 
 export default new Vuex.Store({
 export default new Vuex.Store({
@@ -22,6 +26,9 @@ export default new Vuex.Store({
     liveTechnicalNews, //技术培训内容
     liveTechnicalNews, //技术培训内容
     users, //个人&7企业
     users, //个人&7企业
     exportuser, //专家
     exportuser, //专家
+    live,
+    place,
+    apply,
   },
   },
   state: { ...ustate },
   state: { ...ustate },
   mutations: { ...umutations },
   mutations: { ...umutations },

+ 44 - 0
src/store/live.js

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

+ 43 - 0
src/store/place.js

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

+ 1 - 10
src/util/role_menu.js

@@ -28,16 +28,7 @@ export const vip = {
 };
 };
 export const user = {
 export const user = {
   name: '用户管理',
   name: '用户管理',
-  children: [
-    {
-      name: '用户管理',
-      path: '/user/index',
-    },
-    {
-      name: '临时用户管理',
-      path: '/user/temporaryIndex',
-    },
-  ],
+  path: '/user/index',
 };
 };
 export const duijiehui = {
 export const duijiehui = {
   name: '对接会',
   name: '对接会',

+ 95 - 0
src/views/duijiehui/detail.vue

@@ -0,0 +1,95 @@
+<template>
+  <div id="columnDetail">
+    <el-row>
+      <el-col :span="24" class="top">
+        <topInfo :topTitle="topTitle"></topInfo>
+      </el-col>
+      <el-col :span="24" class="main">
+        <duijiedetail :form="form" @submitDate="onSubmit" @placesubmit="placesubmit" :option="option" :options="options"></duijiedetail>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import topInfo from '@/layout/public/top.vue';
+import duijiedetail from '@/layout/duijiehui/duijiedetail.vue';
+import { createNamespacedHelpers, mapState } from 'vuex';
+const { mapActions: live } = createNamespacedHelpers('live');
+const { mapActions: place } = createNamespacedHelpers('place');
+export default {
+  name: 'columnDetail',
+  props: {},
+  components: {
+    duijiedetail,
+    topInfo,
+  },
+  data: () => ({
+    topTitle: '对接会详情',
+    form: {},
+    xinxi: {},
+    option: [],
+    options: [],
+  }),
+  created() {
+    this.search();
+    this.searchinfo();
+  },
+  computed: {
+    ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
+
+    keyWord() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      return main;
+    },
+  },
+  methods: {
+    ...place({ palcequery: 'query', transactiondtetle: 'delete' }),
+    ...live({ livefetch: 'fetch', livelist: 'query', livecreate: 'create', liveupdate: 'update' }),
+    async search() {
+      if (this.$route.query.id) {
+        const res = await this.livefetch(this.id);
+        this.$set(this, `form`, res.data);
+      }
+    },
+    async placesubmit({ value }) {
+      let level = 2;
+      let parent = value;
+      let res = await this.palcequery({ level, parent });
+      this.$set(this, `options`, res.data);
+    },
+
+    async searchinfo() {
+      let level = 1;
+      let res = await this.palcequery({ level });
+      this.$set(this, `option`, res.data);
+    },
+    async onSubmit() {
+      if (this.id) {
+        let res = await this.liveupdate(this.form);
+        this.$checkRes(res, '修改成功', '修改失败');
+      } else {
+        this.form.user_id = this.user.uid;
+        this.form.is_allowed = '1';
+        console.log(this.form);
+        let res = await this.livecreate(this.form);
+        this.$checkRes(res, '添加成功', '添加失败');
+      }
+      this.$router.push({ path: '/duijiehui/index' });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  padding: 20px;
+  margin: 10px 20px;
+  border: 1px solid #ccc;
+  width: 96%;
+}
+</style>

+ 72 - 0
src/views/duijiehui/duijiehuiexamine.vue

@@ -0,0 +1,72 @@
+<template>
+  <div id="columnDetail">
+    <el-row>
+      <el-col :span="24" class="top">
+        <topInfo :topTitle="topTitle"></topInfo>
+      </el-col>
+      <el-col :span="24" class="main">
+        <duijiehuiexamine :form="form" @submitDate="onSubmit"></duijiehuiexamine>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import topInfo from '@/layout/public/top.vue';
+import duijiehuiexamine from '@/layout/duijiehui/duijiehuiexamine.vue';
+import { createNamespacedHelpers, mapState } from 'vuex';
+const { mapActions: live } = createNamespacedHelpers('live');
+export default {
+  name: 'columnDetail',
+  props: {},
+  components: {
+    duijiehuiexamine,
+    topInfo,
+  },
+  data: () => ({
+    topTitle: '对接会审核',
+    form: {},
+    xinxi: {},
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
+
+    keyWord() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      return main;
+    },
+  },
+  methods: {
+    ...live({ livefetch: 'fetch', livelist: 'query', livecreate: 'create', liveupdate: 'update', liveshenhe: 'shenhe' }),
+    async search() {
+      const res = await this.livefetch(this.id);
+      console.log(res.data);
+      this.$set(this, `form`, res.data);
+    },
+    async onSubmit() {
+      if (this.id) {
+        this.form.user_id = this.user.id;
+        let res = await this.liveshenhe(this.form);
+        this.$checkRes(res, '审核成功', '审核失败');
+      }
+      this.$router.push({ path: '/duijiehui/index' });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  padding: 20px;
+  margin: 10px 20px;
+  border: 1px solid #ccc;
+  width: 96%;
+}
+</style>

+ 79 - 0
src/views/duijiehui/duijiehuistatus.vue

@@ -0,0 +1,79 @@
+<template>
+  <div id="columnDetail">
+    <el-row>
+      <el-col :span="24" class="top">
+        <topInfo :topTitle="topTitle"></topInfo>
+      </el-col>
+      <el-col :span="24" class="main">
+        <duijiehuistatus :form="form" @submitDate="onSubmit"></duijiehuistatus>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import topInfo from '@/layout/public/top.vue';
+import duijiehuistatus from '@/layout/duijiehui/duijiehuistatus.vue';
+import { createNamespacedHelpers, mapState } from 'vuex';
+const { mapActions: live } = createNamespacedHelpers('live');
+export default {
+  name: 'columnDetail',
+  props: {},
+  components: {
+    duijiehuistatus,
+    topInfo,
+  },
+  data: () => ({
+    topTitle: '对接会时间状态审核',
+    form: {},
+    xinxi: {},
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    ...mapState(['user']),
+    id() {
+      return this.$route.query.id;
+    },
+
+    keyWord() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      return main;
+    },
+  },
+  methods: {
+    ...live({ livefetch: 'fetch', livelist: 'query', livecreate: 'create', liveupdate: 'update' }),
+    async search() {
+      if (this.$route.query.id) {
+        const res = await this.livefetch(this.id);
+        this.$set(this, `form`, res.data);
+      }
+    },
+    async onSubmit() {
+      if (this.id) {
+        this.form.user_id = this.user.id;
+        console.log(this.form);
+
+        let res = await this.liveupdate(this.form);
+        this.$checkRes(res, '修改成功', '修改失败');
+      } else {
+        this.form.user_id = this.user.id;
+        let res = await this.livecreate(this.form);
+        this.$checkRes(res, '添加成功', '添加失败');
+      }
+      this.$router.push({ path: '/duijiehui/index' });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  padding: 20px;
+  margin: 10px 20px;
+  border: 1px solid #ccc;
+  width: 96%;
+}
+</style>

+ 111 - 0
src/views/duijiehui/duijieshenhe.vue

@@ -0,0 +1,111 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="top">
+          <topInfo :topTitle="topTitle"></topInfo>
+        </el-col>
+        <el-col :span="24" class="main">
+          <data-table :fields="fields" @delete="toDelete" :data="list" :opera="opera" @edit="toEdit" :total="total" @query="search" @share="share"></data-table>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import topInfo from '@/layout/public/top.vue';
+import dataTable from '@/components/data-table.vue';
+import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: apply } = createNamespacedHelpers('apply');
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    topInfo, //头部标题
+    dataTable,
+  },
+  data: () => ({
+    topTitle: '用户管理',
+    opera: [
+      {
+        label: '通过审核',
+        icon: 'el-icon-edit',
+        method: 'edit',
+      },
+
+      {
+        label: '审核拒绝',
+        icon: 'el-icon-share',
+        method: 'share',
+      },
+    ],
+    fields: [
+      { label: '用户名称', prop: 'user_name', filter: 'input' },
+      { label: '买家/卖家', prop: 'buyer', format: i => (i == '0' ? '买家' : i == '1' ? '卖家' : '') },
+      { label: '联系人', prop: 'contact', filter: 'input' },
+      { label: '联系人电话', prop: 'contact_tel' },
+      { label: '邮箱', prop: 'email' },
+      { label: '单位名称', prop: 'company' },
+      { label: '申请时间', prop: 'apply_time' },
+      { label: '申请状态', prop: 'status', format: i => (i == '0' ? '待审核' : i == '1' ? '已通过' : '已拒绝') },
+    ],
+    list: [],
+    total: 0,
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    data() {
+      return this.$route.query.data;
+    },
+  },
+  methods: {
+    ...apply(['query', 'delete', 'update']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      console.log(this.data.apply);
+      this.$set(this, `list`, this.data.apply);
+    },
+    async toEdit({ data }) {
+      console.log(data);
+      data.status = '1';
+      data.dock_id = this.data.id;
+      data.id = data._id;
+      console.log(data);
+      let res = await this.update(data);
+      this.$checkRes(res, '通过审核', '添加失败');
+    },
+
+    async share({ data }) {
+      console.log(data);
+      data.status = '2';
+      data.dock_id = this.data.id;
+      data.id = data._id;
+      console.log(data);
+      let res = await this.update(data);
+      this.$checkRes(res, '审核拒绝', '添加失败');
+    },
+    async toDelete({ data }) {
+      const res = await this.delete(data.id);
+      if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) this.search();
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 40px;
+  background-color: #f5f5f5;
+}
+.search {
+  height: 40px;
+  line-height: 40px;
+  padding: 0 15px;
+}
+.main {
+  width: 97%;
+  margin: 0 15px;
+}
+</style>

+ 178 - 0
src/views/duijiehui/index.vue

@@ -0,0 +1,178 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="top">
+          <topInfo :topTitle="topTitle"></topInfo>
+        </el-col>
+        <el-col :span="24" class="search" style="text-align:right">
+          <el-button size="mini" type="primary" @click="$router.push({ path: './detail' })" icon="el-icon-plus">添加对接会</el-button>
+        </el-col>
+        <el-col :span="24" class="main">
+          <!-- <mainData :tableData="tableData" :total="total" @delete="deleteData"></mainData> -->
+          <data-table
+            :fields="fields"
+            @delete="toDelete"
+            :data="list"
+            :opera="opera"
+            @edit="toEdit"
+            :total="total"
+            @query="search"
+            @share="share"
+            @tickets="tickets"
+            @order="order"
+          ></data-table>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import topInfo from '@/layout/public/top.vue';
+import dataTable from '@/components/data-table.vue';
+import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: live } = createNamespacedHelpers('live');
+const { mapActions: place } = createNamespacedHelpers('place');
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    topInfo, //头部标题
+    dataTable,
+  },
+  data: () => ({
+    topTitle: '对接会管理',
+    opera: [
+      {
+        label: '编辑',
+        icon: 'el-icon-edit',
+        method: 'edit',
+      },
+      {
+        label: '查看申请情况',
+        icon: 'el-icon-share',
+        method: 'share',
+        display: item => {
+          return item.is_allowed == '1' ? true : false;
+        },
+      },
+
+      {
+        label: '对接会审核',
+        icon: 'el-icon-tickets',
+        method: 'tickets',
+        display: item => {
+          return item.role == '1' ? true : false;
+        },
+      },
+      {
+        label: '对接会开始状态审核',
+        icon: 'el-icon-s-order',
+        method: 'order',
+        display: item => {
+          return item.is_allowed == '1' ? true : false;
+        },
+      },
+
+      {
+        label: '删除',
+        icon: 'el-icon-delete',
+        method: 'delete',
+        confirm: true,
+      },
+    ],
+    fields: [
+      { label: '对接会标题', prop: 'title' },
+      { label: '对接会简介', prop: 'desc' },
+      { label: '开始时间', prop: 'start_time' },
+      { label: '报名截止时间', prop: 'join_end' },
+      { label: '省', prop: 'sheng' },
+      { label: '市', prop: 'shi' },
+      { label: '对接会简介', prop: 'desc' },
+
+      {
+        label: '审核状态',
+        prop: 'is_allowed',
+        format: item => {
+          return item === '0' ? '未审核' : item === '1' ? '已允许' : '已拒绝';
+        },
+      },
+      {
+        label: '对接会状态',
+        prop: 'status',
+        format: item => {
+          return item === '1' ? '开始' : item === '2' ? '结束' : '准备中';
+        },
+      },
+    ],
+    list: [],
+    total: 0,
+  }),
+  created() {
+    this.search();
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  methods: {
+    ...live(['query', 'delete', 'update']),
+    ...place({ palcequery: 'query', palcefetch: 'fetch' }),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      if (this.user.role != '1') info.user_id = this.user.uid;
+      let res = await this.query({ skip, limit });
+      for (const val of res.data) {
+        let parent = val.province;
+        let places = val.place;
+        let reslte = await this.palcequery({ level: 1, parent });
+        let resltes = await this.palcequery({ level: 2, parent });
+        var arr = reslte.data.filter(item => item.code === parent);
+        var cre = resltes.data.filter(item => item.code === places);
+        for (const shi of cre) {
+          val.shi = shi.name;
+        }
+        for (const sheng of arr) {
+          val.sheng = sheng.name;
+        }
+      }
+      this.$set(this, `list`, res.data);
+      this.$set(this, `total`, res.total);
+    },
+    toEdit({ data }) {
+      this.$router.push({ path: './detail', query: { id: data.id } });
+    },
+    async toDelete({ data }) {
+      const res = await this.delete(data.id);
+      if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) this.search();
+    },
+
+    async share({ data }) {
+      this.$router.push({ path: './duijieshenhe', query: { data: data } });
+    },
+
+    async tickets({ data }) {
+      this.$router.push({ path: './duijiehuiexamine', query: { id: data.id } });
+    },
+
+    async order({ data }) {
+      this.$router.push({ path: './duijiehuistatus', query: { id: data.id } });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 40px;
+  background-color: #f5f5f5;
+}
+.search {
+  height: 40px;
+  line-height: 40px;
+  padding: 0 15px;
+}
+.main {
+  width: 97%;
+  margin: 0 15px;
+}
+</style>

+ 0 - 36
src/views/user/temporaryIndex.vue

@@ -1,36 +0,0 @@
-<template>
-  <div id="temporaryIndex">
-    <el-row>
-      <el-col :span="24" class="index">
-        <el-col :span="24" class="top">
-          <topInfo :topTitle="pageTitle"></topInfo>
-        </el-col>
-        <el-col :span="24" class="info">
-          主体
-        </el-col>
-      </el-col>
-    </el-row>
-  </div>
-</template>
-<script>
-import topInfo from '@/layout/public/top.vue';
-export default {
-  name: 'temporaryIndex',
-  props: {},
-  components: {
-    topInfo,
-  },
-  data: () => ({}),
-  created() {},
-  methods: {},
-  computed: {
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-<style lang="less" scoped></style>