guhongwei 4 년 전
부모
커밋
2628a332e0

+ 4 - 0
src/store/live/dock.js

@@ -50,6 +50,10 @@ const actions = {
     const res = await this.$axios.$post(`${api.dockInfo}/createvipuser/${id}`, data);
     return res;
   },
+  async updateGood({ commit }, { id, ...data }) {
+    const res = await this.$axios.$post(`${api.dockInfo}/goods/${id}`, data);
+    return res;
+  },
 };
 
 export default {

+ 1 - 0
src/store/login.js

@@ -43,6 +43,7 @@ const actions = {
         // message: `欢迎,${user.user_name}`,
         type: 'success',
         duration: 2000,
+        offset: 100,
       });
       return userInfo;
     } else {

+ 194 - 7
src/views/adminCenter/applyInfo/index.vue

@@ -4,24 +4,197 @@
       <el-col :span="24">
         <el-col :span="24" class="leftTop"> <span>|</span> <span>申请管理</span> </el-col>
         <el-col :span="24" class="info">
-          申请管理
+          <el-table :data="list" border style="width: 100%">
+            <el-table-column prop="user_name" label="姓名" align="center"> </el-table-column>
+            <el-table-column prop="contact_tel" label="电话" align="center"> </el-table-column>
+            <el-table-column prop="apply_time" label="申请时间" align="center"> </el-table-column>
+            <el-table-column label="用户类别" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.role == '4' ? '个人' : scope.row.role == '5' ? '机构' : scope.row.role == '6' ? '专家' : '未识别' }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="用户状态" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.status == '0' ? '待审核' : scope.row.status == '1' ? '通过' : scope.row.status == '2' ? '拒绝' : '未识别' }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作" align="center">
+              <template slot-scope="scope">
+                <el-button size="mini" type="text" @click.prevent="handlecheck(scope.row)">
+                  <el-tooltip class="item" effect="dark" content="同意参展" placement="top-start"> <i class="el-icon-check"></i> </el-tooltip>
+                </el-button>
+                <el-button size="mini" type="text" @click.prevent="handleclose(scope.row)">
+                  <el-tooltip class="item" effect="dark" content="拒绝参展" placement="top-start"> <i class="el-icon-close"></i> </el-tooltip>
+                </el-button>
+                <el-button size="mini" type="text" v-if="scope.row.status == '1'" @click.prevent="handletickets(scope.row)">
+                  <el-tooltip class="item" effect="dark" content="审核参展产品" placement="top-start"> <i class="el-icon-tickets"></i> </el-tooltip>
+                </el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-col :span="24" class="page">
+            <el-pagination
+              @current-change="handleCurrentChange"
+              :current-page="currentPage"
+              layout="total, prev, pager, next, jumper"
+              :total="total"
+              :page-size="pageSize"
+            >
+            </el-pagination>
+          </el-col>
         </el-col>
-      </el-col></el-row
-    >
+      </el-col>
+    </el-row>
+    <el-dialog title="审核产品" :visible.sync="dialogVisible" width="50%" :before-close="handleClose">
+      <el-table :data="productList" border style="width: 100%">
+        <el-table-column prop="name" label="产品名称" align="center"> </el-table-column>
+        <el-table-column label="产品类别" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.totaltype == '0' ? '技术' : scope.row.totaltype == '1' ? '产品' : scope.row.totaltype == '2' ? '服务' : '未识别' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="contact_user" label="联系人" align="center"> </el-table-column>
+        <el-table-column prop="contact_tel" label="联系电话" align="center"> </el-table-column>
+        <el-table-column label="所属领域" align="center">
+          <template slot-scope="scope">
+            <span>{{
+              scope.row.field == '0'
+                ? '先进制造'
+                : scope.row.field == '1'
+                ? '新材料'
+                : scope.row.field == '2'
+                ? '光电子'
+                : scope.row.field == '3'
+                ? '信息技术'
+                : scope.row.field == '4'
+                ? '文化和科技融合'
+                : '未识别'
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="合作方式" align="center">
+          <template slot-scope="scope">
+            <span>{{
+              scope.row.coopermode == '0'
+                ? '技术转让'
+                : scope.row.coopermode == '1'
+                ? '技术服务'
+                : scope.row.coopermode == '2'
+                ? '技术许可'
+                : scope.row.coopermode == '3'
+                ? '技术融资'
+                : scope.row.coopermode == '4'
+                ? '其他'
+                : '未识别'
+            }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="状态" align="center">
+          <template slot-scope="scope">
+            <span>{{ scope.row.dockStatus == '0' ? '待审核' : scope.row.dockStatus == '1' ? '通过' : scope.row.dockStatus == '2' ? '拒绝' : '未识别' }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center">
+          <template slot-scope="scope">
+            <el-button size="mini" type="text" @click.prevent="checkProduct(scope.row)">
+              <el-tooltip class="item" effect="dark" content="同意参展" placement="top-start"> <i class="el-icon-check"></i> </el-tooltip>
+            </el-button>
+            <el-button size="mini" type="text" @click.prevent="closeProduct(scope.row)">
+              <el-tooltip class="item" effect="dark" content="拒绝参展" placement="top-start"> <i class="el-icon-close"></i> </el-tooltip>
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: dock } = createNamespacedHelpers('dock');
+const { mapActions: apply } = createNamespacedHelpers('apply');
 export default {
   name: 'index',
   props: {},
   components: {},
   data: function() {
-    return {};
+    return {
+      applyList: [], //查询数据
+      currentPage: 1, //默认数据1
+      pageSize: 10, //每页显示数据数量
+      origin: [], //分割数据
+      list: [], //显示数据列表
+      total: 0,
+      dock_id: '', //对接会id
+      dialogVisible: false,
+      productList: [],
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...dock(['query', 'delete', 'update', 'delete', 'updateGood']),
+    ...apply({ applyUpdate: 'update' }),
+    async search() {
+      let res = await this.query({ uid: this.user.uid });
+      if (this.$checkRes(res)) {
+        for (const val of res.data) {
+          this.$set(this, `applyList`, val.apply);
+          this.$set(this, `dock_id`, val.id);
+          this.$set(this, `total`, val.apply.length);
+        }
+      }
+    },
+    searchPage(page = 1) {
+      this.$set(this, `list`, this.origin[page - 1]);
+    },
+    handleCurrentChange(currentPage) {
+      this.searchPage(currentPage);
+    },
+    // 同意参展
+    async handlecheck(data) {
+      data.status = '1';
+      data.dock_id = this.dock_id;
+      data.id = data._id;
+      let res = await this.applyUpdate(data);
+      this.$checkRes(res, '审核成功', '审核失败');
+    },
+    // 拒绝参展
+    async handleclose(data) {
+      data.status = '2';
+      data.dock_id = this.dock_id;
+      data.id = data._id;
+      let res = await this.applyUpdate(data);
+      this.$checkRes(res, '审核成功', '审核失败');
+    },
+    // 审核产品
+    handletickets(data) {
+      this.dialogVisible = true;
+      this.$set(this, `productList`, data.goodsList);
+    },
+    // 产品审核
+    // 产品审核同意参展
+    async checkProduct(data) {
+      data.dockStatus = '1';
+      data.id = this.dock_id;
+      let res = await this.updateGood(data);
+      this.$checkRes(res, '审核成功', '审核失败');
+      this.dialogVisible = false;
+    },
+    // 产品审核拒绝参展
+    async closeProduct(data) {
+      data.dockStatus = '2';
+      data.id = this.dock_id;
+      let res = await this.updateGood(data);
+      this.$checkRes(res, '审核成功', '审核失败');
+      this.dialogVisible = false;
+    },
+    // 取消
+    handleClose(done) {
+      done();
+    },
   },
-  created() {},
-  methods: {},
   computed: {
     ...mapState(['user']),
     pageTitle() {
@@ -31,6 +204,16 @@ export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
+  watch: {
+    applyList: {
+      immediate: true,
+      deep: true,
+      handler(val) {
+        if (val && val.length > 0) this.$set(this, `origin`, _.chunk(val, this.pageSize));
+        this.searchPage();
+      },
+    },
+  },
 };
 </script>
 
@@ -48,6 +231,10 @@ export default {
   color: #22529a;
 }
 .info {
-  padding: 0 40px 0 0;
+  padding: 0 40px 0 10px;
+}
+.page {
+  text-align: right;
+  padding: 10px 0;
 }
 </style>

+ 32 - 146
src/views/adminCenter/dockInfo/index.vue

@@ -4,32 +4,7 @@
       <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="display == '1'">
-            <data-table
-              :fields="fields"
-              @delete="toDelete"
-              :data="list"
-              :opera="opera"
-              @edit="toEdit"
-              :total="total"
-              @query="search"
-              @share="share"
-              @order="order"
-              @vipAdd="vipAdd"
-            ></data-table>
-          </span>
-          <span v-else-if="display == '2'">
-            <dockEdit @back="back" :dockid="dockid"></dockEdit>
-          </span>
-          <span v-else-if="display == '3'">
-            <dockShare @back="back" :dockid="dockid"></dockShare>
-          </span>
-          <span v-else-if="display == '4'">
-            <dockStatus @back="back" :dockid="dockid"></dockStatus>
-          </span>
-          <span v-else-if="display == '5'">
-            <dockVip @back="back" :dockid="dockid"></dockVip>
-          </span>
+          <dockInfo :form="form" @submitForm="submitForm" @submitStatus="submitStatus"></dockInfo>
         </el-col>
       </el-col>
     </el-row>
@@ -38,11 +13,7 @@
 
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
-import dataTable from '@/components/data-table.vue';
-import dockEdit from './parts/dockEdit.vue';
-import dockShare from './parts/dockShare.vue';
-import dockStatus from './parts/dockStatus.vue';
-import dockVip from './parts/dockVip.vue';
+import dockInfo from './parts/dockInfo.vue';
 const { mapActions: dock } = createNamespacedHelpers('dock');
 const { mapActions: place } = createNamespacedHelpers('place');
 const { mapActions: authUser } = createNamespacedHelpers('authUser');
@@ -51,137 +22,52 @@ export default {
   name: 'index',
   props: {},
   components: {
-    dataTable,
-    dockEdit,
-    dockShare,
-    dockStatus,
-    dockVip,
+    dockInfo,
   },
   data: function() {
     return {
-      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-s-order',
-          method: 'order',
-          display: item => {
-            return item.is_allowed == '1' ? true : false;
-          },
-        },
-        {
-          label: 'VIP用户',
-          icon: 'el-icon-user',
-          method: 'vipAdd',
-        },
-        {
-          label: '删除',
-          icon: 'el-icon-delete',
-          method: 'delete',
-          confirm: true,
-        },
-      ],
-      fields: [
-        { label: '对接会标题', prop: 'title' },
-        { label: '开始时间', prop: 'start_time' },
-        { label: '结束时间', prop: 'end_time' },
-        { label: '报名截止', prop: 'join_end' },
-        { label: '省份', prop: 'sheng' },
-        { label: '市区', prop: 'shi' },
-        { label: '负责人', prop: 'adminuser' },
-        { label: '负责人手机', prop: 'phone' },
-        // {
-        //   label: '审核状态',
-        //   prop: 'is_allowed',
-        //   format: item => {
-        //     return item === '0' ? '未审核' : item === '1' ? '已允许' : '已拒绝';
-        //   },
-        // },
-        {
-          label: '对接会状态',
-          prop: 'status',
-          format: item => {
-            return item === '1' ? '开始' : item === '2' ? '结束' : '准备中';
-          },
-        },
-      ],
-      list: [],
-      total: 0,
-      display: '1',
-      dockid: '',
+      form: {},
     };
   },
   created() {
     this.search();
   },
   methods: {
-    ...dock(['query', 'delete', 'update', 'delete']),
-    ...place({ palcequery: 'query', palcefetch: 'fetch' }),
-    ...authUser({ authUserDelete: 'delete' }),
-    ...login({ logout: 'logout', transactiondtetle: 'delete' }),
+    ...dock(['query', 'delete', 'update', 'fetch']),
+    ...authUser({ authUserFetch: 'fetch', authUserUpdate: 'update', authUserDelete: 'delete' }),
     async search({ skip = 0, limit = 10, ...info } = {}) {
       let res = await this.query({ skip, limit, uid: this.user.uid });
       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, `form`, val);
       }
-      this.$set(this, `list`, res.data);
-      this.$set(this, `total`, res.total);
-    },
-    // 修改
-    toEdit({ data }) {
-      this.display = '2';
-      this.$set(this, `dockid`, data.id);
-    },
-    // 申请
-    share({ data }) {
-      this.display = '3';
-      this.$set(this, `dockid`, data.id);
     },
-    // 开始审核
-    order({ data }) {
-      this.display = '4';
-      this.$set(this, `dockid`, data.id);
-    },
-    // 添加vip用户
-    vipAdd({ data }) {
-      this.display = '5';
-      this.$set(this, `dockid`, data.id);
-    },
-    // 删除
-    async toDelete({ data }) {
-      const arr = await this.authUserDelete(data.uid);
-      const res = await this.delete(data.id);
-      if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) {
-        this.logout();
-        this.$router.push({ path: '/newlogin' });
+    // 展会信息修改
+    async submitForm({ data }) {
+      let res = await this.update(data);
+      if (this.$checkRes(res)) {
+        let authdata = {};
+        authdata.id = data.user_id;
+        authdata.name = data.adminuser;
+        let arr = await this.authUserUpdate(authdata);
+        if (this.$checkRes(arr)) {
+          this.$message({
+            message: '修改信息成功',
+            type: 'success',
+          });
+          this.search();
+        }
       }
     },
-    // 返回
-    back() {
-      this.display = '1';
+    // 展会开启&结束修改
+    async submitStatus({ data }) {
+      let res = await this.update(data);
+      if (this.$checkRes(res)) {
+        this.$message({
+          message: '对接会审核成功',
+          type: 'success',
+        });
+        this.search();
+      }
     },
   },
   computed: {

+ 0 - 157
src/views/adminCenter/dockInfo/parts/dockEdit.vue

@@ -1,157 +0,0 @@
-<template>
-  <div id="dockEdit">
-    <el-row>
-      <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" class="form">
-          <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.end_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="负责人">
-              <el-input v-model="form.adminuser" placeholder="请输入用户名"></el-input>
-            </el-form-item>
-            <el-form-item label="负责人手机号">
-              <el-input v-model="form.phone" maxlength="11" placeholder="请输入手机号" disabled> </el-input>
-            </el-form-item>
-            <el-form-item label="密码">
-              <el-input v-model="form.passwd" placeholder="请输入密码" show-password disabled></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';
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: place } = createNamespacedHelpers('place');
-const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: authUser } = createNamespacedHelpers('authUser');
-export default {
-  name: 'dockEdit',
-  props: {
-    dockid: null,
-  },
-  components: {
-    upload,
-  },
-  data: function() {
-    return {
-      form: {},
-      option: [],
-      options: [],
-    };
-  },
-  created() {
-    this.searcOption();
-    this.searchInfo();
-  },
-  methods: {
-    ...place({ palcequery: 'query', transactiondtetle: 'delete' }),
-    ...dock(['query', 'delete', 'update', 'fetch']),
-    ...authUser({ authUserFetch: 'fetch', authUserUpdate: 'update' }),
-    async searchInfo() {
-      if (this.dockid) {
-        let res = await this.fetch(this.dockid);
-        if (this.$checkRes(res)) {
-          this.$set(this, `form`, res.data);
-        }
-      }
-    },
-    // 提交
-    async onSubmit() {
-      let res = await this.update(this.form);
-      if (this.$checkRes(res)) {
-        let data = {};
-        data.id = this.user.uid;
-        data.name = this.form.adminuser;
-        let arr = await this.authUserUpdate(data);
-        if (this.$checkRes(arr)) {
-          this.$message({
-            message: '修改信息成功',
-            type: 'success',
-          });
-          this.back();
-        }
-      }
-    },
-    // 返回
-    back() {
-      this.$emit('back');
-    },
-    async searcOption() {
-      let level = 1;
-      let res = await this.palcequery({ level });
-      this.$set(this, `option`, res.data);
-    },
-    async changeshenge(value) {
-      let level = 2;
-      let parent = value;
-      let res = await this.palcequery({ level, parent });
-      this.$set(this, `options`, res.data);
-    },
-    uploadSuccess({ type, data }) {
-      console.log(type, data);
-      this.$set(this.form, `${type}`, data.uri);
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.back {
-  text-align: right;
-  margin: 0 0 10px 0;
-}
-</style>

+ 129 - 0
src/views/adminCenter/dockInfo/parts/dockInfo.vue

@@ -0,0 +1,129 @@
+<template>
+  <div id="dockInfo">
+    <el-row>
+      <el-col :span="24">
+        <el-form :model="form" :rules="rules" ref="form" label-width="100px" class="demo-ruleForm">
+          <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.end_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="负责人">
+            <el-input v-model="form.adminuser" placeholder="请输入用户名"></el-input>
+          </el-form-item>
+          <el-form-item label="负责人手机号">
+            <el-input v-model="form.phone" maxlength="11" placeholder="请输入手机号" disabled> </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 label="状态">
+            <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="submitForm('form')">保存</el-button>
+            <el-button type="primary" @click="submitStatus('form')" v-if="this.form.status == '1' || this.form.status == '2'">展会开启&结束提交</el-button>
+          </el-form-item>
+        </el-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+import upload from '@/components/upload.vue';
+const { mapActions: place } = createNamespacedHelpers('place');
+export default {
+  name: 'dockInfo',
+  props: {
+    form: null,
+  },
+  components: {
+    upload,
+  },
+  data: function() {
+    return {
+      rules: {},
+      option: [],
+      options: [],
+    };
+  },
+  created() {
+    this.searcOption();
+    this.changeshenge();
+  },
+  methods: {
+    ...place({ palcequery: 'query', transactiondtetle: 'delete' }),
+    submitForm(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          this.$emit('submitForm', { data: this.form });
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    submitStatus(formName) {
+      this.$refs[formName].validate(valid => {
+        if (valid) {
+          this.$emit('submitStatus', { data: this.form });
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    async searcOption() {
+      let level = 1;
+      let res = await this.palcequery({ level });
+      this.$set(this, `option`, res.data);
+    },
+    async changeshenge(value) {
+      let level = 2;
+      let parent = value;
+      let res = await this.palcequery({ level, parent });
+      this.$set(this, `options`, res.data);
+    },
+    uploadSuccess({ type, data }) {
+      this.$set(this.form, `${type}`, data.uri);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 0 - 109
src/views/adminCenter/dockInfo/parts/dockShare.vue

@@ -1,109 +0,0 @@
-<template>
-  <div id="dockShare">
-    <el-row>
-      <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" class="form">
-          <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 { mapState, createNamespacedHelpers } from 'vuex';
-import dataTable from '@/components/data-table.vue';
-const { mapActions: apply } = createNamespacedHelpers('apply');
-const { mapActions: dock } = createNamespacedHelpers('dock');
-export default {
-  name: 'dockShare',
-  props: {
-    dockid: null,
-  },
-  components: {
-    dataTable,
-  },
-  data: function() {
-    return {
-      opera: [
-        {
-          label: '通过审核',
-          icon: 'el-icon-edit',
-          method: 'edit',
-        },
-
-        {
-          label: '审核拒绝',
-          icon: 'el-icon-share',
-          method: 'share',
-        },
-      ],
-      fields: [
-        { label: '用户名称', prop: 'user_name' },
-        { label: '买家/卖家', prop: 'buyer', format: i => (i == '0' ? '买家' : i == '1' ? '卖家' : '') },
-        { label: '联系人', prop: 'contact' },
-        { 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();
-  },
-  methods: {
-    ...apply(['query', 'delete', 'update']),
-    ...dock({ dockFetch: 'fetch' }),
-    async search() {
-      if (this.dockid) {
-        let res = await this.dockFetch(this.dockid);
-        if (this.$checkRes(res)) {
-          this.$set(this, `list`, res.data.apply);
-          this.$set(this, `total`, res.data.apply.length);
-        }
-      }
-    },
-    async toEdit({ data }) {
-      data.status = '1';
-      data.dock_id = this.dockid;
-      data.id = data._id;
-      let res = await this.update(data);
-      this.$checkRes(res, '通过审核', '添加失败');
-    },
-
-    async share({ data }) {
-      data.status = '2';
-      data.dock_id = this.dockid;
-      data.id = data._id;
-      let res = await this.update(data);
-      this.$checkRes(res, '审核拒绝', '添加失败');
-    },
-    // 返回
-    back() {
-      this.$emit('back');
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-<style lang="less" scoped>
-.back {
-  text-align: right;
-  margin: 0 0 10px 0;
-}
-</style>

+ 0 - 112
src/views/adminCenter/dockInfo/parts/dockStatus.vue

@@ -1,112 +0,0 @@
-<template>
-  <div id="dockStatus">
-    <el-row>
-      <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" class="form">
-          <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>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions: dock } = createNamespacedHelpers('dock');
-export default {
-  name: 'dockStatus',
-  props: {
-    dockid: null,
-  },
-  components: {},
-  data: function() {
-    return {
-      form: {},
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...dock({ dockFetch: 'fetch', dockUpdate: 'update' }),
-    async search() {
-      if (this.dockid) {
-        let res = await this.dockFetch(this.dockid);
-        if (this.$checkRes(res)) {
-          this.$set(this, `form`, res.data);
-        }
-      }
-    },
-    async onSubmit() {
-      let res = await this.dockUpdate(this.form);
-      if (this.$checkRes(res)) {
-        this.$message({
-          message: '对接会审核成功',
-          type: 'success',
-        });
-        this.back();
-      }
-    },
-    // 返回
-    back() {
-      this.$emit('back');
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.back {
-  text-align: right;
-  margin: 0 0 10px 0;
-}
-</style>

+ 0 - 225
src/views/adminCenter/dockInfo/parts/dockVip.vue

@@ -1,225 +0,0 @@
-<template>
-  <div id="dockVip">
-    <el-row>
-      <el-col :span="24">
-        <el-col :span="24" class="back">
-          <el-button type="primary" size="mini" @click="add()">添加</el-button>
-          <el-button type="primary" size="mini" @click="back()">返回</el-button>
-        </el-col>
-        <el-col :span="24" class="info">
-          <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" :total="total" @query="search"></data-table>
-        </el-col>
-      </el-col>
-    </el-row>
-    <el-dialog title="Vip用户管理" :visible.sync="dialogVisible" width="40%" :before-close="handleClose">
-      <el-form :model="form">
-        <el-form-item label="用户名" :label-width="formLabelWidth">
-          <el-input v-model="form.name" autocomplete="off" placeholder="请输入用户名"></el-input>
-        </el-form-item>
-        <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-input v-model="form.passwd" autocomplete="off" placeholder="请输入密码" show-password :disabled="disabled"></el-input>
-        </el-form-item>
-        <el-form-item label="单位名称" :label-width="formLabelWidth">
-          <el-input v-model="form.company" autocomplete="off" placeholder="请输入单位名称"></el-input>
-        </el-form-item>
-        <el-form-item label="邮箱" :label-width="formLabelWidth">
-          <el-input v-model="form.email" autocomplete="off" placeholder="请输入邮箱"></el-input>
-        </el-form-item>
-        <el-form-item label="简介" :label-width="formLabelWidth">
-          <el-input v-model="form.content" type="textarea" autocomplete="off" placeholder="请输入简介"></el-input>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer" style="text-align:center;">
-        <el-button type="primary" @click="restFormBtn">取 消</el-button>
-        <el-button type="success" @click="onSubmit">保 存</el-button>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-import dataTable from '@/components/data-table.vue';
-const { mapActions: apply } = createNamespacedHelpers('apply');
-const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: authUser } = createNamespacedHelpers('authUser');
-export default {
-  name: 'dockVip',
-  props: {
-    dockid: null,
-  },
-  components: {
-    dataTable,
-  },
-  data: function() {
-    return {
-      opera: [
-        {
-          label: '修改',
-          icon: 'el-icon-edit',
-          method: 'edit',
-        },
-        // {
-        //   label: '刪除',
-        //   icon: 'el-icon-delete',
-        //   method: 'delete',
-        // },
-      ],
-      fields: [
-        { label: '联系人', prop: 'vipname' },
-        { label: '联系人电话', prop: 'vipphone' },
-        { label: '单位名称', prop: 'company' },
-        { label: '邮箱', prop: 'email' },
-        { label: '简介', prop: 'content' },
-      ],
-      list: [],
-      total: 0,
-      dialogVisible: false,
-      form: {},
-      formLabelWidth: '100px',
-      disabled: false,
-      dockData: {},
-    };
-  },
-  created() {
-    this.search();
-  },
-  methods: {
-    ...apply(['query', 'delete', 'update']),
-    ...dock({ dockFetch: 'fetch', dockUpdate: 'update', dockupdateVip: 'updateVip', createvipuser: 'createvipuser' }),
-    ...authUser({ authUserQuery: 'query', authUserCreate: 'create', authUserUpdate: 'update' }),
-    async search() {
-      if (this.dockid) {
-        let res = await this.dockFetch(this.dockid);
-        if (this.$checkRes(res)) {
-          this.$set(this, `list`, res.data.vipuser);
-          this.$set(this, `total`, res.data.vipuser.length);
-        }
-      }
-    },
-    // 添加
-    add() {
-      this.dialogVisible = true;
-      this.disabled = false;
-    },
-    // 保存
-    async onSubmit() {
-      if (this.form.id) {
-        const res = await this.authUserUpdate(this.form);
-        if (this.$checkRes(res)) {
-          let data = {
-            vipname: this.form.name,
-            vipphone: this.form.phone,
-            company: this.form.company,
-            email: this.form.email,
-            content: this.form.content,
-            role: '9',
-            id: this.dockid,
-            vipid: this.form.vipid,
-          };
-          const arr = await this.dockupdateVip(data);
-          if (this.$checkRes(arr)) {
-            this.$message({
-              message: '信息修改成功',
-              type: 'success',
-            });
-            this.dialogVisible = false;
-            this.back();
-          }
-        }
-      } else {
-        const authUserList = await this.authUserQuery();
-        let r = authUserList.data.some(f => f.phone == this.form.phone);
-        if (r) {
-          this.$message({
-            message: '手机号已经被注册,请重新输入',
-            type: 'warning',
-          });
-        } else {
-          this.form.role = '9';
-          const res = await this.authUserCreate(this.form);
-          if (this.$checkRes(res)) {
-            let data = {
-              vipname: this.form.name,
-              vipphone: this.form.phone,
-              company: this.form.company,
-              email: this.form.email,
-              content: this.form.content,
-              role: this.form.role,
-              uid: res.data.id,
-              id: this.dockid,
-            };
-            const arr = await this.createvipuser(data);
-            if (this.$checkRes(arr)) {
-              this.dialogVisible = false;
-              this.back();
-            }
-          }
-        }
-      }
-    },
-    // 关闭
-    handleClose(done) {
-      this.form = {};
-      done();
-    },
-    // 取消
-    restFormBtn() {
-      this.form = {};
-      this.dialogVisible = false;
-    },
-    // 修改
-    toEdit({ data }) {
-      this.dialogVisible = true;
-      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;
-      // let dockDate = {};
-      // dockDate.name = data.vipname;
-      // dockDate.phone = data.vipphone;
-      // dockDate.passwd = data.passwd;
-      // dockDate.company = data.company;
-      // dockDate.email = data.email;
-      // dockDate.content = data.content;
-      // dockDate.id = data._id;
-      console.log(newDate);
-      this.disabled = true;
-      this.$set(this, `dockData`, data);
-      this.$set(this, `form`, newDate);
-    },
-    // 刪除
-    // toDelete({ data }) {
-    //   console.log(data);
-    // },
-    // 返回
-    back() {
-      this.$emit('back');
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    pageTitle() {
-      return `${this.$route.meta.title}`;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-};
-</script>
-
-<style lang="less" scoped>
-.back {
-  text-align: right;
-  margin: 0 0 10px 0;
-}
-</style>

+ 26 - 53
src/views/adminCenter/statisInfo/parts/technology.vue

@@ -6,7 +6,7 @@
           <template>
             <el-col :span="24" class="search">
               <el-col :span="5">
-                <el-select v-model="field" placeholder="请选择所属领域" @change="change">
+                <el-select v-model="field" placeholder="请选择所属领域" @change="changeField">
                   <el-option label="先进制造" value="0"></el-option>
                   <el-option label="新材料" value="1"></el-option>
                   <el-option label="光电子" value="2"></el-option>
@@ -15,7 +15,7 @@
                 </el-select>
               </el-col>
               <el-col :span="12">
-                <el-radio-group v-model="radio1" @change="submits">
+                <el-radio-group v-model="radio1" @change="changeRadio">
                   <el-radio label="0" border>是我处支持范围</el-radio>
                   <el-radio label="1" border>不是我处支持范围</el-radio>
                 </el-radio-group>
@@ -41,14 +41,9 @@
                   }}
                 </template>
               </el-table-column>
-              <!-- <el-table-column label="操作" align="center">
-                <template slot-scope="scoped">
-                  <el-button v-if="scoped.row.status == 4" type="primary" size="mini" @click="shareBtn(scoped.row.id)">审核 </el-button>
-                  
-              </el-table-column> -->
             </el-table>
             <el-col :span="24" class="page">
-              <page v-bind="$attrs" position="center" :limit="limit" :total="total" @query="search"></page>
+              分頁
             </el-col>
           </template>
         </el-col>
@@ -58,69 +53,47 @@
 </template>
 
 <script>
-import page from '@/components/pagination.vue';
 import { createNamespacedHelpers, mapGetters, mapState } from 'vuex';
-const { mapActions: product } = createNamespacedHelpers('marketproduct');
+const { mapActions: dock } = createNamespacedHelpers('dock');
 export default {
   name: 'column',
   props: {},
-  components: {
-    page,
-  },
+  components: {},
   data: () => ({
-    currentPage: 0,
-    pageSize: 10,
-    limit: 10,
-    total: 0,
     list: [],
-    field: [],
+    // 技术领域
+    field: '',
+    // 是否我处支持
     radio1: '',
   }),
   created() {
     this.search();
   },
-  computed: {},
   methods: {
-    ...product({ productQuery: 'query' }),
+    ...dock(['query', 'delete', 'update', 'fetch']),
     async search({ skip = 0, limit = 10, ...info } = {}) {
-      if (this.field) {
-        if (this.radio1) {
-          let res = await this.productQuery({ skip, totaltype: 0, field: this.field, radio1: this.radio1, limit, ...info });
-          this.$set(this, `list`, res.data);
-          this.$set(this, `total`, res.total);
-        } else {
-          let res = await this.productQuery({ skip, totaltype: 0, field: this.field, limit, ...info });
-          this.$set(this, `list`, res.data);
-          this.$set(this, `total`, res.total);
-        }
-      } else if (this.radio1) {
-        if (this.field) {
-          let res = await this.productQuery({ skip, totaltype: 0, field: this.field, radio1: this.radio1, limit, ...info });
-
-          this.$set(this, `list`, res.data);
-          this.$set(this, `total`, res.total);
-        } else {
-          let res = await this.productQuery({ skip, totaltype: 0, radio1: this.radio1, limit, ...info });
-          this.$set(this, `list`, res.data);
-          this.$set(this, `total`, res.total);
+      let res = await this.query({ skip, limit, uid: this.user.uid });
+      for (const val of res.data) {
+        for (const val2 of val.apply) {
+          var enticeNew = val2.goodsList.map(item => ({ item: item }));
+          console.log(enticeNew);
         }
-      } else {
-        let res = await this.productQuery({ skip, totaltype: 0, limit, ...info });
-        this.$set(this, `list`, res.data);
-        this.$set(this, `total`, res.total);
       }
     },
-
-    async change(value) {
-      this.$set(this, `field`, value);
-      this.search();
-    },
-
-    submits(value) {
-      this.$set(this, `radio1`, value);
-      this.search();
+    // 筛选技术领域
+    changeField() {},
+    // 筛选是否是我处支持
+    changeRadio() {},
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
     },
   },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
 };
 </script>
 

+ 207 - 7
src/views/adminCenter/vipInfo/index.vue

@@ -4,24 +4,203 @@
       <el-col :span="24">
         <el-col :span="24" class="leftTop"> <span>|</span> <span>VIP用户</span> </el-col>
         <el-col :span="24" class="info">
-          VIP用户
+          <el-col :span="24" class="add">
+            <el-button type="primary" size="mini" @click="add()">添加用户</el-button>
+          </el-col>
+          <el-col :span="24">
+            <el-table :data="list" border style="width: 100%">
+              <el-table-column prop="vipname" label="姓名" align="center"> </el-table-column>
+              <el-table-column prop="vipphone" label="联系电话" align="center"> </el-table-column>
+              <el-table-column prop="company" label="单位名称" align="center"> </el-table-column>
+              <el-table-column prop="email" label="email" align="center"> </el-table-column>
+              <el-table-column label="操作" align="center">
+                <template slot-scope="scope">
+                  <el-button size="mini" type="primary" @click="editViP(scope.row)">
+                    修改
+                  </el-button>
+                </template>
+              </el-table-column>
+            </el-table>
+            <el-col :span="24" class="page">
+              <el-pagination
+                @current-change="handleCurrentChange"
+                :current-page="currentPage"
+                layout="total, prev, pager, next, jumper"
+                :total="total"
+                :page-size="pageSize"
+              >
+              </el-pagination>
+            </el-col>
+          </el-col>
         </el-col>
-      </el-col></el-row
-    >
+      </el-col>
+    </el-row>
+    <el-dialog title="添加用户" :visible.sync="dialogVisible" width="50%" :before-close="handleClose">
+      <el-col :span="24">
+        <el-form :model="form">
+          <el-form-item label="用户名" :label-width="formLabelWidth">
+            <el-input v-model="form.name" autocomplete="off" placeholder="请输入用户名"></el-input>
+          </el-form-item>
+          <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-input v-model="form.passwd" autocomplete="off" placeholder="请输入密码" show-password :disabled="disabled"></el-input>
+          </el-form-item>
+          <el-form-item label="单位名称" :label-width="formLabelWidth">
+            <el-input v-model="form.company" autocomplete="off" placeholder="请输入单位名称"></el-input>
+          </el-form-item>
+          <el-form-item label="email" :label-width="formLabelWidth">
+            <el-input v-model="form.email" autocomplete="off" placeholder="请输入email"></el-input>
+          </el-form-item>
+          <el-form-item label="简介" :label-width="formLabelWidth">
+            <el-input v-model="form.content" type="textarea" autocomplete="off" placeholder="请输入简介"></el-input>
+          </el-form-item>
+          <el-col :span="24" style="text-align:center">
+            <el-button @click="closeBtn">取 消</el-button>
+            <el-button type="primary" @click="onSubmit">确 定</el-button>
+          </el-col>
+        </el-form>
+      </el-col>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: dock } = createNamespacedHelpers('dock');
+const { mapActions: apply } = createNamespacedHelpers('apply');
+const { mapActions: authUser } = createNamespacedHelpers('authUser');
 export default {
   name: 'index',
   props: {},
   components: {},
   data: function() {
-    return {};
+    return {
+      vipuserList: [], //查询数据
+      currentPage: 1, //默认数据1
+      pageSize: 10, //每页显示数据数量
+      origin: [], //分割数据
+      list: [], //显示数据列表
+      total: 0,
+      dock_id: '', //对接会id
+      dialogVisible: false,
+      form: {},
+      disabled: false,
+      formLabelWidth: '120px',
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...dock({ dockquery: 'query', dockFetch: 'fetch', dockUpdate: 'update', dockupdateVip: 'updateVip', createvipuser: 'createvipuser' }),
+    ...apply({ applyUpdate: 'update' }),
+    ...authUser({ authUserQuery: 'query', authUserCreate: 'create', authUserUpdate: 'update' }),
+    async search() {
+      let res = await this.dockquery({ uid: this.user.uid });
+      if (this.$checkRes(res)) {
+        for (const val of res.data) {
+          this.$set(this, `vipuserList`, val.vipuser);
+          this.$set(this, `dock_id`, val.id);
+          this.$set(this, `total`, val.vipuser.length);
+        }
+      }
+    },
+    searchvip(page = 1) {
+      this.$set(this, `list`, this.origin[page - 1]);
+    },
+    handleCurrentChange(currentPage) {
+      this.searchPage(currentPage);
+    },
+    // 添加用户
+    add() {
+      this.dialogVisible = true;
+      this.disabled = false;
+    },
+    // 取消
+    closeBtn() {
+      this.form = {};
+      this.dialogVisible = false;
+    },
+    // 确定
+    async onSubmit() {
+      if (this.form.id) {
+        const res = await this.authUserUpdate(this.form);
+        if (this.$checkRes(res)) {
+          let data = {
+            vipname: this.form.name,
+            vipphone: this.form.phone,
+            company: this.form.company,
+            email: this.form.email,
+            content: this.form.content,
+            role: '8',
+            id: this.dock_id,
+            vipid: this.form.vipid,
+          };
+          const arr = await this.dockupdateVip(data);
+          if (this.$checkRes(arr)) {
+            this.$message({
+              message: '信息修改成功',
+              type: 'success',
+            });
+            this.dialogVisible = false;
+            this.back();
+          }
+        }
+      } else {
+        const authUserList = await this.authUserQuery();
+        let r = authUserList.data.some(f => f.phone == this.form.phone);
+        if (r) {
+          this.$message({
+            message: '手机号已经被注册,请重新输入',
+            type: 'warning',
+          });
+        } else {
+          this.form.role = '8';
+          const res = await this.authUserCreate(this.form);
+          if (this.$checkRes(res)) {
+            let data = {
+              vipname: this.form.name,
+              vipphone: this.form.phone,
+              company: this.form.company,
+              email: this.form.email,
+              content: this.form.content,
+              role: this.form.role,
+              uid: res.data.id,
+              id: this.dock_id,
+            };
+            const arr = await this.createvipuser(data);
+            if (this.$checkRes(arr)) {
+              this.dialogVisible = false;
+              this.search();
+            }
+          }
+        }
+      }
+    },
+    // 修改
+    editViP(data) {
+      this.dialogVisible = true;
+      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);
+    },
+    // 取消
+    handleClose(done) {
+      done();
+    },
   },
-  created() {},
-  methods: {},
   computed: {
     ...mapState(['user']),
     pageTitle() {
@@ -31,6 +210,16 @@ export default {
   metaInfo() {
     return { title: this.$route.meta.title };
   },
+  watch: {
+    vipuserList: {
+      immediate: true,
+      deep: true,
+      handler(val) {
+        if (val && val.length > 0) this.$set(this, `origin`, _.chunk(val, this.pageSize));
+        this.searchvip();
+      },
+    },
+  },
 };
 </script>
 
@@ -48,6 +237,17 @@ export default {
   color: #22529a;
 }
 .info {
-  padding: 0 40px 0 0;
+  padding: 0 40px 0 10px;
+  .add {
+    text-align: right;
+    padding: 10px 0;
+  }
+}
+.page {
+  text-align: right;
+  padding: 10px 0;
+}
+/deep/.el-dialog__body {
+  min-height: 400px;
 }
 </style>

+ 9 - 8
src/views/hall/liveApply.vue

@@ -77,9 +77,6 @@
                       <el-option label="服务" value="2" disabled></el-option>
                     </el-select>
                   </el-form-item>
-                  <el-form-item label="活动名称">
-                    <el-input v-model="demandForm.name"></el-input>
-                  </el-form-item>
                   <el-form-item label="名称" prop="name">
                     <el-input v-model="demandForm.name" placeholder="请输入名称"></el-input>
                   </el-form-item>
@@ -200,15 +197,15 @@
                 </el-form>
               </el-tab-pane>
               <el-tab-pane label="产品申请" name="second">
-                <el-form :model="productForm" :rules="productFormrules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+                <el-form :model="productForm" :rules="productFormrules" ref="productForm" label-width="100px" class="demo-ruleForm">
                   <el-form-item label="选择产品">
                     <el-select v-model="productForm.goodsList" multiple placeholder="请选择选择产品">
-                      <el-option v-for="(item, index) in goodsLists" :key="index" :label="item.name" :value="item"> </el-option>
+                      <el-option v-for="(item, index) in goodsLists" :key="index" :label="item.name" :value="item.id"> </el-option>
                     </el-select>
                   </el-form-item>
                   <el-form-item>
-                    <el-button type="primary" @click="submitForm('ruleForm')">确定</el-button>
-                    <el-button @click="resetForm('ruleForm')">取消</el-button>
+                    <el-button type="primary" @click="submitproductForm('productForm')">确定</el-button>
+                    <el-button @click="resetForm('productForm')">取消</el-button>
                   </el-form-item>
                 </el-form>
               </el-tab-pane>
@@ -268,7 +265,7 @@ export default {
         this.$set(this, `goodsLists`, res.data);
       }
     },
-    // 提交
+    // 需求提交
     async onSubmit() {
       let duplicate = JSON.parse(JSON.stringify(this.form));
       let data = { ...duplicate };
@@ -298,6 +295,10 @@ export default {
         });
       }
     },
+    // 產品提交
+    submitproductForm() {
+      console.log(this.productForm);
+    },
     // 取消
     restBtn() {
       history.go(-1);

+ 15 - 5
src/views/newlogin.vue

@@ -48,11 +48,21 @@ export default {
     ...expertsuser({ expertsuserCreate: 'create' }),
     // 管理登录
     async adminSubmit() {
-      let res = await this.todockLogin({ user: this.adminForm });
-      console.log(res);
-      // if (res.uid) {
-      //   history.back();
-      // }
+      if (this.adminForm.role == '3') {
+        let res = await this.todockLogin({ user: this.adminForm });
+        if (res.uid) {
+          history.back();
+        }
+      } else if (this.adminForm.role == '8') {
+        let data = {};
+        data.phone = this.adminForm.room_phone;
+        data.passwd = this.adminForm.passwd;
+        data.role = this.adminForm.role;
+        let res = await this.toLogin({ user: data });
+        if (res.uid) {
+          history.back();
+        }
+      }
     },
     // 用户登录
     async submitnewLogin(form) {

+ 243 - 62
src/views/userCenter/dockInfo/part/nextLive.vue

@@ -3,12 +3,15 @@
     <el-row>
       <el-col :span="24">
         <el-table :data="nextData" stripe style="width: 100%" border>
+          <el-table-column prop="room_id" label="房间号" align="center" :show-overflow-tooltip="true"> </el-table-column>
           <el-table-column prop="title" label="对接会标题" align="center" :show-overflow-tooltip="true"> </el-table-column>
           <el-table-column prop="start_time" label="开始时间" align="center" :show-overflow-tooltip="true"> </el-table-column>
+          <el-table-column prop="end_time" label="结束时间" align="center" :show-overflow-tooltip="true"> </el-table-column>
           <el-table-column prop="join_end" label="报名截止时间" align="center" :show-overflow-tooltip="true"> </el-table-column>
           <el-table-column prop="sheng" label="省" align="center" :show-overflow-tooltip="true"> </el-table-column>
           <el-table-column prop="shi" label="市" align="center" :show-overflow-tooltip="true"> </el-table-column>
-          <el-table-column prop="desc" label="简介" align="center" :show-overflow-tooltip="true"> </el-table-column>
+          <el-table-column prop="adminuser" label="负责人" align="center" :show-overflow-tooltip="true"> </el-table-column>
+          <el-table-column prop="phone" label="联系电话" align="center" :show-overflow-tooltip="true"> </el-table-column>
           <el-table-column label="操作" style="width:200px" align="center">
             <template slot-scope="scope">
               <el-button size="mini" type="text" @click.prevent="handleEdit(scope.row.id)"
@@ -23,35 +26,149 @@
       </el-col>
     </el-row>
     <el-dialog title="申请" :visible.sync="dialogFormVisible" :before-close="handleClose">
-      <el-form :model="applyForm" :rules="rules" ref="applyForm">
-        <el-form-item label="申请人身份" label-width="120px">
-          <el-radio-group v-model="applyForm.buyer" @change="changeuser">
-            <el-radio label="0">买家</el-radio>
-            <el-radio label="1">卖家</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item label="选择产品" label-width="120px" v-if="this.resource == '1' || this.resource == ''">
-          <el-select v-model="applyForm.goodsList" placeholder="请选择选择产品">
-            <el-option v-for="(item, index) in goodsLists" :key="index" :label="item.name" :value="item.id"> </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="联系人" label-width="120px">
-          <el-input v-model="applyForm.contact" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="联系电话" label-width="120px">
-          <el-input v-model="applyForm.contact_tel" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="电子邮箱" label-width="120px">
-          <el-input v-model="applyForm.email" autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="单位名称" label-width="120px">
-          <el-input v-model="applyForm.company" autocomplete="off"></el-input>
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer" style="text-align:center;">
-        <el-button @click="resetBtn">取 消</el-button>
-        <el-button type="primary" @click="submitBtn">确 定</el-button>
-      </div>
+      <el-tabs v-model="activeName">
+        <el-tab-pane label="技术需求" name="first">
+          <el-form :model="demandForm" :rules="demandFormrules" ref="ruleForm" label-width="130px" class="demo-ruleForm">
+            <el-form-item label="产品类型" prop="totaltype">
+              <el-select v-model="demandForm.totaltype" placeholder="请选择产品类型">
+                <el-option label="技术" value="0"></el-option>
+                <el-option label="产品" value="1" disabled></el-option>
+                <el-option label="服务" value="2" disabled></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="名称" prop="name">
+              <el-input v-model="demandForm.name" placeholder="请输入名称"></el-input>
+            </el-form-item>
+            <el-form-item label="类型">
+              <el-select v-model="demandForm.product_type_id" filterable @change="selectChild">
+                <el-option v-for="(item, index) in columnList" :key="index" :value="item.id" :label="item.name"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="产品简介">
+              <el-input type="textarea" v-model="demandForm.introduction" placeholder="请输入产品简介"></el-input>
+            </el-form-item>
+            <el-form-item label="研发阶段">
+              <el-select v-model="demandForm.phase" placeholder="请选择研发阶段">
+                <el-option label="阶段成果" value="0"></el-option>
+                <el-option label="最终成果" value="1"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-row>
+              <el-col :span="12">
+                <el-form-item label="产品单价">
+                  <el-input v-model="demandForm.price" placeholder="请输入产品单价"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="产品单位">
+                  <el-select v-model="demandForm.priceunit" placeholder="请选择产品单位">
+                    <el-option label="公斤" value="0"></el-option>
+                    <el-option label="套" value="1"></el-option>
+                    <el-option label="件" value="2"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-form-item label="产品图片" prop="image">
+              <upload
+                :limit="6"
+                :data="demandForm.image"
+                :uploadBtn="true"
+                type="image"
+                :url="`/files/image/upload`"
+                @upload="uploadSuccess"
+                @delete="uploadDelete"
+              ></upload>
+            </el-form-item>
+            <span>
+              <el-form-item label="所属领域">
+                <el-select v-model="demandForm.field" placeholder="请选择所属领域">
+                  <el-option label="先进制造" value="0"></el-option>
+                  <el-option label="新材料" value="1"></el-option>
+                  <el-option label="光电子" value="2"></el-option>
+                  <el-option label="信息技术" value="3"></el-option>
+                  <el-option label="文化和科技融合" value="4"></el-option>
+                </el-select>
+              </el-form-item>
+            </span>
+            <el-form-item label="服务范围">
+              <el-input type="textarea" v-model="demandForm.scope" placeholder="请输入服务范围"></el-input>
+            </el-form-item>
+            <el-form-item label="合作方式">
+              <el-select v-model="demandForm.coopermode" placeholder="请选择合作方式">
+                <el-option label="技术转让" value="0"></el-option>
+                <el-option label="技术服务" value="1"></el-option>
+                <el-option label="技术许可" value="2"></el-option>
+                <el-option label="技术融资" value="3"></el-option>
+                <el-option label="其他" value="4"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="交易方式">
+              <el-select v-model="demandForm.business" placeholder="请选择交易方式">
+                <el-option label="公用" value="0"></el-option>
+                <el-option label="竞价" value="1"></el-option>
+                <el-option label="转让" value="2"></el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item label="投入预算">
+              <el-input v-model="demandForm.budget" placeholder="请输入投入预算"></el-input>
+            </el-form-item>
+            <el-form-item label="需求截止日期">
+              <el-date-picker v-model="demandForm.end_date" type="date" placeholder="请选择需求截止日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd">
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item>
+              <span slot="label">
+                <el-popover
+                  placement="top-start"
+                  width="200"
+                  trigger="hover"
+                  content="(阐述在生产经营、项目建设、科研活动、产业化方向中遇到的技术难题或瓶颈问题及需达到的技术指标)"
+                >
+                  <span slot="reference" style="color:#409eff">难题或瓶颈问题</span>
+                </el-popover>
+              </span>
+              <el-input type="textarea" v-model="demandForm.difficult_problem" placeholder="请输入难题或瓶颈问题"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <span slot="label">
+                <el-popover
+                  placement="top-start"
+                  width="200"
+                  trigger="hover"
+                  content="(企业承接成果、技术所具备的技术人员、设备、资金等基础条件及其他配套条件)"
+                >
+                  <span slot="reference" style="color:#409eff">企业解决技术需求已具备的条件</span>
+                </el-popover>
+              </span>
+              <el-input type="textarea" v-model="demandForm.demand" placeholder="请输入企业解决需求"></el-input>
+            </el-form-item>
+            <el-form-item label="联系人" prop="contact_user">
+              <el-input v-model="demandForm.contact_user" placeholder="请输入联系人"></el-input>
+            </el-form-item>
+            <el-form-item label="联系电话" prop="contact_tel">
+              <el-input v-model.number="demandForm.contact_tel" placeholder="请输入联系电话" maxlength="11"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button @click="resetForm('ruleForm')">取消</el-button>
+              <el-button type="primary" @click="submitForm('ruleForm')">确定</el-button>
+            </el-form-item>
+          </el-form>
+        </el-tab-pane>
+        <el-tab-pane label="产品供求" name="second">
+          <el-form :model="productForm" :rules="productFormrules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+            <el-form-item label="选择产品">
+              <el-select v-model="productForm.goodsList" value-key="id" multiple placeholder="请选择选择产品">
+                <el-option v-for="(item, index) in goodsLists" :key="index" :label="item.name" :value="item"> </el-option>
+              </el-select>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="submitproductForm('ruleForm')">确定</el-button>
+              <el-button @click="resetForm('ruleForm')">取消</el-button>
+            </el-form-item>
+          </el-form>
+        </el-tab-pane>
+      </el-tabs>
     </el-dialog>
   </div>
 </template>
@@ -59,45 +176,57 @@
 <script>
 import page from '@/components/pagination.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
+import _ from 'lodash';
+import upload from '@/components/upload.vue';
 const { mapActions: dock } = createNamespacedHelpers('dock');
-const { mapActions: apply } = createNamespacedHelpers('apply');
-const { mapActions: login } = createNamespacedHelpers('login');
 const { mapActions: place } = createNamespacedHelpers('place');
+const { mapActions: apply } = createNamespacedHelpers('apply');
+const { mapActions: mapMarkettype } = createNamespacedHelpers('markettype');
 const { mapActions: mapProduct } = createNamespacedHelpers('marketproduct');
 export default {
   name: 'nextLive',
   props: {},
   components: {
     page,
+    upload,
   },
   data: function() {
     return {
       // 下期直播
       nextData: [],
       nextTotal: 0,
-
-      rules: {
-        oldpasswd: [{ required: true, message: '请输入旧密码', trigger: 'blur' }],
-        newpasswd: [{ required: true, message: '请输入新密码', trigger: 'blur' }],
-      },
-      // 选择产品
-      resource: '',
-      goodsLists: [],
-      // 申请直播
       dialogFormVisible: false,
-      applyForm: {},
       dock_id: '',
+      activeName: 'first',
+      // 需求
+      demandForm: {
+        totaltype: '0',
+      },
+      columnList: [], //类型
+      demandFormrules: {
+        name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+        totaltype: [{ required: true, message: '请输入名称', trigger: 'change' }],
+        contact_user: [{ required: true, message: '请输入联系人', trigger: 'blur' }],
+        contact_tel: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
+      },
+      // 技术
+      productForm: {},
+      productFormrules: {},
+      // 产品类别
+      goodsLists: [],
     };
   },
   created() {
     this.search();
+    this.maarkettype();
   },
   methods: {
     ...dock(['query', 'delete', 'update']),
-    ...apply({ applyupdate: 'update', applyCreate: 'create' }),
-    ...login({ logout: 'logout', transactiondtetle: 'delete' }),
     ...place({ palcequery: 'query', palcefetch: 'fetch' }),
+    ...apply({ applyupdate: 'update', applyCreate: 'create' }),
+    ...mapMarkettype({ markettypeList: 'query' }),
     ...mapProduct({ mapProductQuery: 'query', mapProductFetch: 'fetch' }),
+    // 查询对接会
     async search({ skip = 0, limit = 0 } = { skip: 0, limit: 0 }) {
       let res = await this.query({ skip, limit, status: '0' });
       for (const val of res.data) {
@@ -116,42 +245,94 @@ export default {
       }
       this.$set(this, `nextData`, res.data);
       this.$set(this, `nextTotal`, res.total);
-      res = await this.mapProductQuery({ userid: this.user.uid });
-      if (res.errcode === 0) {
-        this.$set(this, `goodsLists`, res.data);
-      }
     },
     // 申请对接会
     handleEdit(id) {
       this.dialogFormVisible = true;
       this.$set(this, `dock_id`, id);
     },
-    // 提交申请
-    async submitBtn() {
-      this.applyForm.user_id = this.user.uid;
-      this.applyForm.user_name = this.user.name;
-      this.applyForm.role = this.user.role;
-      const res = await this.applyCreate({ id: this.dock_id, ...this.applyForm });
+    // 需求提交
+    async submitForm() {
+      let data = {};
+      data.user_id = this.user.uid;
+      data.user_name = this.user.name;
+      data.contact_tel = this.user.phone;
+      data.role = this.user.role;
+      let goods = [];
+      goods.push(this.demandForm);
+      data.goodsList = goods;
+      const res = await this.applyCreate({ id: this.dock_id, ...data });
       if (res.errcode === 0) {
         this.$message({
-          message: '申请参加对接会成功,等待管理员审核',
+          message: '申请参加对接会成功',
           type: 'success',
         });
+        this.resetForm();
       }
-      this.resetBtn();
     },
-    // 取消申请
-    resetBtn() {
-      this.applyForm = {};
+    // 產品提交
+    async submitproductForm() {
+      let data = this.productForm;
+      data.user_id = this.user.uid;
+      data.user_name = this.user.name;
+      data.contact_tel = this.user.phone;
+      data.role = this.user.role;
+      const res = await this.applyCreate({ id: this.dock_id, ...data });
+      if (res.errcode === 0) {
+        this.$message({
+          message: '申请参加对接会成功',
+          type: 'success',
+        });
+        this.resetForm();
+      }
+    },
+    // 取消
+    resetForm() {
+      this.demandForm = {
+        totaltype: '0',
+      };
+      this.productForm = {};
       this.dialogFormVisible = false;
+      this.search();
     },
+    // 关闭申请
     handleClose(done) {
       this.resetBtn();
       done();
     },
-    // 选择产品
-    changeuser(label) {
-      this.$set(this, 'resource', label);
+    // 查询类型
+    async maarkettype({ category = 54, ...info } = {}) {
+      const res = await this.markettypeList({ category, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `columnList`, res.data);
+      }
+      const arr = await this.mapProductQuery({ userid: this.user.uid });
+      if (this.$checkRes(arr)) {
+        this.$set(this, `goodsLists`, arr.data);
+      }
+    },
+    // 类型选择
+    selectChild(product_type_id) {
+      let res = this.columnList.filter(fil => fil.id === product_type_id);
+      if (res.length > 0) {
+        this.$set(this.demandForm, `product_type_name`, res[0].name);
+      }
+      this.$forceUpdate();
+    },
+    // 图片
+    uploadSuccess({ type, data }) {
+      let arr = _.get(this.demandForm, type);
+      if (_.isArray(arr)) {
+        let datas = { name: data.name, url: data.uri };
+        this.demandForm[type].push({ name: data.name, url: data.uri });
+      } else {
+        let newArr = [{ name: data.name, url: data.uri }];
+        this.$set(this.demandForm, `${type}`, newArr);
+      }
+    },
+    // 删除图片
+    uploadDelete(index) {
+      this.demandForm.image.splice(index, 1);
     },
   },
   computed: {