Procházet zdrojové kódy

Merge branch 'master' of http://git.cc-lotus.info/service-platform/web-test

lrf402788946 před 5 roky
rodič
revize
30eb8df218
43 změnil soubory, kde provedl 4642 přidání a 101 odebrání
  1. binární
      src/assets/bg.jpg
  2. binární
      src/assets/cha.png
  3. binární
      src/assets/diaocha.gif
  4. binární
      src/assets/swfl.png
  5. 101 0
      src/components/enterprise/enterpisedg.vue
  6. 116 0
      src/components/enterprise/enterprisefabu.vue
  7. 88 0
      src/components/enterprise/enterprisejb.vue
  8. 89 0
      src/components/enterprise/enterprisexuqiu.vue
  9. 86 0
      src/components/enterprise/enterprisexx.vue
  10. 55 0
      src/components/personnel/rencai.vue
  11. 73 0
      src/components/personnel/rencailistDetail.vue
  12. 83 0
      src/components/supermaket/supermarketlistDetail.vue
  13. 296 0
      src/layout/enterprise/context.vue
  14. 263 0
      src/layout/enterprise/contextfabu.vue
  15. 674 0
      src/layout/enterprise/contextfabuxx.vue
  16. 87 0
      src/layout/enterprise/contextxx.vue
  17. 121 0
      src/layout/enterprise/jibencontext.vue
  18. 73 0
      src/layout/enterprise/mainMenu.vue
  19. 180 0
      src/layout/enterprise/parts/chat.vue
  20. 48 0
      src/layout/enterprise/parts/room.vue
  21. 1 2
      src/layout/live/head.vue
  22. 41 0
      src/layout/login.vue
  23. 190 0
      src/layout/login/loginMain.vue
  24. 74 0
      src/layout/personCenter/question.vue
  25. 113 0
      src/layout/personnel/listcontext.vue
  26. 204 0
      src/layout/personnel/rightcontrencai.vue
  27. 209 0
      src/layout/supermarket/detali.vue
  28. 113 0
      src/layout/supermarket/listcontext.vue
  29. 64 0
      src/router/index.js
  30. 4 0
      src/store/index.js
  31. 117 0
      src/views/enterprise/enterprisedg.vue
  32. 242 0
      src/views/enterprise/enterprisefabu.vue
  33. 54 0
      src/views/enterprise/enterprisejb.vue
  34. 108 0
      src/views/enterprise/enterprisexuqiu.vue
  35. 40 0
      src/views/enterprise/enterprisexx.vue
  36. 58 0
      src/views/login.vue
  37. 117 85
      src/views/market/index.vue
  38. 69 0
      src/views/personnel/list.vue
  39. 44 0
      src/views/personnel/rencai.vue
  40. 92 0
      src/views/supermaket/supermarketdetail.vue
  41. 108 0
      src/views/supermaket/supermarketlist.vue
  42. 144 11
      src/views/technical/index.vue
  43. 3 3
      src/views/technical/list.vue

binární
src/assets/bg.jpg


binární
src/assets/cha.png


binární
src/assets/diaocha.gif


binární
src/assets/swfl.png


+ 101 - 0
src/components/enterprise/enterpisedg.vue

@@ -0,0 +1,101 @@
+<template>
+  <div id="adviserList">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="5" class="left">
+            <el-col :span="24" class="leftTop">
+              <mainMenu :liebiaoList="liebiaoList" v-on="$listeners"></mainMenu>
+            </el-col>
+            <el-col :span="24" class="leftDiao">
+              <examine></examine>
+            </el-col>
+          </el-col>
+          <el-col :span="19" class="right">
+            <context
+              v-on="$listeners"
+              :total1="total1"
+              :total2="total2"
+              :total3="total3"
+              :columnName="columnName"
+              :dinggou1="dinggou1"
+              :dinggou2="dinggou2"
+              :dinggou3="dinggou3"
+            ></context>
+          </el-col>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import examine from '@/layout/personCenter/question.vue';
+import mainMenu from '@/layout/enterprise/mainMenu.vue';
+import context from '@/layout/enterprise/context.vue';
+export default {
+  name: 'adviserList',
+  props: {
+    liebiaoList: null, //分类导航
+    columnName: null, //栏目名称
+    dinggou1: null,
+    dinggou2: null,
+    dinggou3: null,
+    total1: null,
+    total2: null,
+    total3: null,
+  },
+  components: {
+    examine, //网上调查
+    mainMenu, //分类导航
+    context, //列表
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 80%;
+  margin: 0 auto;
+}
+
+.menu {
+  height: 70px;
+  overflow: hidden;
+}
+.main {
+  height: 900px;
+  overflow: hidden;
+  padding: 10px 0;
+  background: #e9edf6;
+  background-attachment: fixed;
+  background-size: cover;
+  background-position: center center;
+}
+.left {
+  height: 900px;
+  margin: 0 10px 0 0;
+  width: 20%;
+}
+.leftDiao {
+  background: #fff;
+  height: 510px;
+  overflow: hidden;
+}
+.leftTop {
+  background: #fff;
+  height: 360px;
+  overflow: hidden;
+  margin: 0 0 10px 0;
+}
+.right {
+  width: 79%;
+  height: 880px;
+  overflow: hidden;
+  background-color: #fff;
+}
+</style>

+ 116 - 0
src/components/enterprise/enterprisefabu.vue

@@ -0,0 +1,116 @@
+<template>
+  <div id="adviserList">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="5" class="left">
+            <el-col :span="24" class="leftTop">
+              <mainMenu :liebiaoList="liebiaoList" v-on="$listeners"></mainMenu>
+            </el-col>
+            <el-col :span="24" class="leftDiao">
+              <examine></examine>
+            </el-col>
+          </el-col>
+
+          <el-col :span="19" class="right">
+            <contextfabuxx
+              v-on="$listeners"
+              :recruitData="recruitData"
+              :successlist="successlist"
+              :shenheList="shenheList"
+              :total="total"
+              :tatalstatus2="tatalstatus2"
+              :tatalstatus1="tatalstatus1"
+              :Transactionlist="Transactionlist"
+              :jiaoyilist="jiaoyilist"
+              :jiaoyilist1="jiaoyilist1"
+              :total4="total4"
+              :total5="total5"
+              :total6="total6"
+              :faqilist="faqilist"
+              :totalfaqi="totalfaqi"
+            ></contextfabuxx>
+          </el-col>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import examine from '@/layout/personCenter/question.vue';
+import mainMenu from '@/layout/enterprise/mainMenu.vue';
+import contextfabuxx from '@/layout/enterprise/contextfabuxx.vue';
+export default {
+  name: 'adviserList',
+  props: {
+    liebiaoList: null, //分类导航
+    recruitData: null, //审核中
+    total: null, //分页
+    total4: null, //分页
+    total5: null, //分页
+    total6: null, //分页
+    shenheList: null, //审核成功
+    successlist: null, //交易失败
+    tatalstatus2: null, //分页
+    tatalstatus1: null, //分页
+    Transactionlist: null, //交易中
+    jiaoyilist: null,
+    jiaoyilist1: null,
+    faqilist: null,
+    totalfaqi: null,
+  },
+  components: {
+    examine, //网上调查
+    mainMenu, //分类导航
+    contextfabuxx, //列表
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 80%;
+  margin: 0 auto;
+}
+
+.menu {
+  height: 70px;
+  overflow: hidden;
+}
+.main {
+  height: 900px;
+  overflow: hidden;
+  padding: 10px 0;
+  background: #e9edf6;
+  background-attachment: fixed;
+  background-size: cover;
+  background-position: center center;
+}
+.left {
+  height: 900px;
+  margin: 0 10px 0 0;
+  width: 20%;
+}
+.leftDiao {
+  background: #fff;
+  height: 510px;
+  overflow: hidden;
+}
+.leftTop {
+  background: #fff;
+  height: 360px;
+  overflow: hidden;
+  margin: 0 0 10px 0;
+}
+.right {
+  width: 79%;
+  height: 880px;
+  overflow: hidden;
+  background-color: #fff;
+}
+</style>

+ 88 - 0
src/components/enterprise/enterprisejb.vue

@@ -0,0 +1,88 @@
+<template>
+  <div id="adviserList">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="5" class="left">
+            <el-col :span="24" class="leftTop">
+              <mainMenu :liebiaoList="liebiaoList" v-on="$listeners"></mainMenu>
+            </el-col>
+            <el-col :span="24" class="leftDiao">
+              <examine></examine>
+            </el-col>
+          </el-col>
+          <el-col :span="19" class="right">
+            <jibencontext v-on="$listeners" :liebiaoList="liebiaoList" :userinfo="userinfo"></jibencontext>
+          </el-col>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import examine from '@/layout/personCenter/question.vue';
+import mainMenu from '@/layout/enterprise/mainMenu.vue';
+import jibencontext from '@/layout/enterprise/jibencontext.vue';
+
+export default {
+  name: 'adviserList',
+  props: {
+    info: null, //站点信息
+    liebiaoList: null, //分类导航
+    userinfo: null, //基本信息
+  },
+  components: {
+    examine, //网上调查
+    mainMenu, //分类导航
+    jibencontext, //基本信息
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 80%;
+  margin: 0 auto;
+}
+
+.menu {
+  height: 70px;
+  overflow: hidden;
+}
+.main {
+  min-height: 740px;
+  overflow: hidden;
+  padding: 10px 0;
+  background: #e9edf6;
+  background-attachment: fixed;
+  background-size: cover;
+  background-position: center center;
+}
+.left {
+  min-height: 900px;
+  margin: 0 10px 0 0;
+  width: 20%;
+}
+.leftDiao {
+  background: #fff;
+  height: 770px;
+  overflow: hidden;
+}
+.leftTop {
+  background: #fff;
+  height: 360px;
+  overflow: hidden;
+  margin: 0 0 10px 0;
+}
+.right {
+  width: 79%;
+    height: 1140px;
+  overflow: hidden;
+  background-color: #fff;
+}
+</style>

+ 89 - 0
src/components/enterprise/enterprisexuqiu.vue

@@ -0,0 +1,89 @@
+<template>
+  <div id="adviserList">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="5" class="left">
+            <el-col :span="24" class="leftTop">
+              <mainMenu :liebiaoList="liebiaoList" v-on="$listeners"></mainMenu>
+            </el-col>
+            <el-col :span="24" class="leftDiao">
+              <examine></examine>
+            </el-col>
+          </el-col>
+          <el-col :span="19" class="right">
+            <contextfabu v-on="$listeners" :demandForm="demandForm" :totaltype="totaltype" :columnList="columnList"></contextfabu>
+          </el-col>
+        </div>
+      </el-col>
+      <el-col :span="24" class="foot"> </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import examine from '@/layout/personCenter/question.vue';
+import mainMenu from '@/layout/enterprise/mainMenu.vue';
+import contextfabu from '@/layout/enterprise/contextfabu.vue';
+export default {
+  name: 'adviserList',
+  props: {
+    liebiaoList: null, //分类导航
+    demandForm: null, //需求发布
+    columnList: null, //类型列表
+    totaltype: null, //判断
+  },
+  components: {
+    examine, //网上调查
+    mainMenu, //分类导航
+    contextfabu, //列表
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 80%;
+  margin: 0 auto;
+}
+
+.menu {
+  height: 70px;
+  overflow: hidden;
+}
+.main {
+  min-height: 1720px;
+  overflow: hidden;
+  padding: 10px 0;
+  background: #e9edf6;
+  background-attachment: fixed;
+  background-size: cover;
+  background-position: center center;
+}
+.left {
+  height: 900px;
+  margin: 0 10px 0 0;
+  width: 20%;
+}
+.leftDiao {
+  background: #fff;
+  height: 1350px;
+  overflow: hidden;
+}
+.leftTop {
+  background: #fff;
+  height: 360px;
+  overflow: hidden;
+  margin: 0 0 10px 0;
+}
+.right {
+  width: 79%;
+  min-height: 1720px;
+  overflow: hidden;
+  background-color: #fff;
+}
+</style>

+ 86 - 0
src/components/enterprise/enterprisexx.vue

@@ -0,0 +1,86 @@
+<template>
+  <div id="adviserList">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="5" class="left">
+            <el-col :span="24" class="leftTop">
+              <mainMenu :liebiaoList="liebiaoList" v-on="$listeners"></mainMenu>
+            </el-col>
+            <el-col :span="24" class="leftDiao">
+              <examine></examine>
+            </el-col>
+          </el-col>
+          <el-col :span="19" class="right">
+            <contextxx></contextxx>
+          </el-col>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import examine from '@/layout/personCenter/question.vue';
+import mainMenu from '@/layout/enterprise/mainMenu.vue';
+import contextxx from '@/layout/enterprise/contextxx.vue';
+export default {
+  name: 'adviserList',
+  props: {
+    info: null, //站点信息
+    liebiaoList: null, //分类导航
+  },
+  components: {
+    examine, //网上调查
+    mainMenu, //分类导航
+    contextxx, //消息管理
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 80%;
+  margin: 0 auto;
+}
+
+.menu {
+  height: 70px;
+  overflow: hidden;
+}
+.main {
+  min-height: 740px;
+  overflow: hidden;
+  padding: 10px 0;
+  background: #e9edf6;
+  background-attachment: fixed;
+  background-size: cover;
+  background-position: center center;
+}
+.left {
+  min-height: 900px;
+  margin: 0 10px 0 0;
+  width: 20%;
+}
+.leftDiao {
+  background: #fff;
+  height: 770px;
+  overflow: hidden;
+}
+.leftTop {
+  background: #fff;
+  height: 360px;
+  overflow: hidden;
+  margin: 0 0 10px 0;
+}
+.right {
+  width: 79%;
+  height: 1140px;
+  overflow: hidden;
+  background-color: #fff;
+}
+</style>

+ 55 - 0
src/components/personnel/rencai.vue

@@ -0,0 +1,55 @@
+<template>
+  <div id="policy">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="19" class="rightcont">
+            <rightcontrencai :policyInfo="policyInfo"></rightcontrencai>
+          </el-col>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import rightcontrencai from '@/layout/personnel/rightcontrencai.vue';
+
+export default {
+  name: 'policy',
+  props: {
+    policyInfo: null,
+    info: null, //站点信息
+  },
+  components: {
+    rightcontrencai, //右边栏
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    clickList({ id }) {
+      console.log(id);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 80%;
+  margin: 0 auto;
+}
+
+.main {
+  min-height: 1700px;
+  overflow: hidden;
+  margin: 10px 0;
+}
+.main .rightcont {
+  width: 100%;
+  min-height: 1700px;
+  overflow: hidden;
+  background-color: #fff;
+}
+</style>

+ 73 - 0
src/components/personnel/rencailistDetail.vue

@@ -0,0 +1,73 @@
+<template>
+  <div id="policy">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="24" class="rightcont">
+            <listcontext v-on="$listeners" :contentList="contentList" :columnName="columnName" :total="total"></listcontext>
+          </el-col>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import listcontext from '@/layout/personnel/listcontext.vue';
+import detali from '@/layout/supermarket/detali.vue';
+export default {
+  name: 'policy',
+  props: {
+    columnName: null, //栏目标题
+    contentList: null, //内容
+    total: null,
+    display: { type: String, default: 'list' },
+    policyInfo: null,
+  },
+  components: {
+    listcontext, //右边栏
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    clickList({ id }) {
+      console.log(id);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 80%;
+  margin: 0 auto;
+}
+.top {
+  height: 40px;
+  overflow: hidden;
+  background-color: rgba(11, 58, 125, 0.8);
+}
+.logo {
+  height: 200px;
+  overflow: hidden;
+}
+.menu {
+  height: 70px;
+  overflow: hidden;
+}
+
+.main {
+  min-height: 900px;
+  overflow: hidden;
+  margin: 10px 0;
+}
+
+.main .rightcont {
+  float: left;
+  width: 100%;
+  min-height: 900px;
+  overflow: hidden;
+  background-color: #fff;
+}
+</style>

+ 83 - 0
src/components/supermaket/supermarketlistDetail.vue

@@ -0,0 +1,83 @@
+<template>
+  <div id="policy">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <el-col :span="24" class="rightcont">
+            <listcontext v-on="$listeners" :contentList="contentList" :columnName="columnName" v-if="display === 'list'" :total="total"></listcontext>
+            <detali v-else :policyInfo="policyInfo" v-on="$listeners"> </detali>
+          </el-col>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import listcontext from '@/layout/supermarket/listcontext.vue';
+import detali from '@/layout/supermarket/detali.vue';
+export default {
+  name: 'policy',
+  props: {
+    columnName: null, //栏目标题
+    contentList: null, //内容
+    total: null,
+    display: { type: String, default: 'list' },
+    policyInfo: null,
+  },
+  components: {
+    listcontext, //右边栏
+    detali,
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    clickList({ id }) {
+      console.log(id);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 80%;
+  margin: 0 auto;
+}
+.top {
+  height: 40px;
+  overflow: hidden;
+  background-color: rgba(11, 58, 125, 0.8);
+}
+.logo {
+  height: 200px;
+  overflow: hidden;
+}
+.menu {
+  height: 70px;
+  overflow: hidden;
+}
+
+.main {
+  min-height: 600px;
+  overflow: hidden;
+  margin: 10px 0;
+}
+
+.main .rightcont {
+  float: left;
+  width: 100%;
+  min-height: 600px;
+  overflow: hidden;
+  background-color: #fff;
+}
+
+.main .link {
+  float: left;
+  width: 100%;
+  height: 100px;
+  overflow: hidden;
+  background-color: #fff;
+}
+</style>

+ 296 - 0
src/layout/enterprise/context.vue

@@ -0,0 +1,296 @@
+<template>
+  <div id="recruitLists">
+    <el-row>
+      <el-col :span="24">
+        <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+          <el-tab-pane label="我的订购" name="first">
+            <el-row style="padding: 0 20px;">
+              <el-tabs v-model="activeNameFirst" @tab-click="handleClickFirst">
+                <el-tab-pane label="交易中" name="fgrrsss">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in dinggou1" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="20"> </el-col>
+                          <el-col :span="4">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.product_name }}</p>
+                            <p>营销人名称:{{ item.market_username }}</p>
+                            <p>购买人名称:{{ item.username }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">说明:{{ item.description }}</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="deteles(item)">彻底删除</el-link>
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total1"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+
+                <el-tab-pane label="交易完成" name="fgrraaa">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in dinggou2" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="20"> </el-col>
+                          <el-col :span="4">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.product_name }}</p>
+                            <p>营销人名称:{{ item.market_username }}</p>
+                            <p>购买人名称:{{ item.username }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">说明:{{ item.description }}</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="deteles(item)">彻底删除</el-link>
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange2"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total2"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+
+                <el-tab-pane label="交易取消" name="fgrr">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in dinggou3" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="20"> </el-col>
+                          <el-col :span="4">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.product_name }}</p>
+                            <p>营销人名称:{{ item.market_username }}</p>
+                            <p>购买人名称:{{ item.username }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">说明:{{ item.description }}</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="deteles(item)">彻底删除</el-link>
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange3"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total3"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+              </el-tabs>
+            </el-row>
+          </el-tab-pane>
+        </el-tabs>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'recruitLists',
+  props: {
+    recruitData: null,
+    columnName: null,
+    total: null,
+    successlist: null,
+    shenheList: null,
+    tatalstatus2: null,
+    tatalstatus1: null,
+    dinggou2: null,
+    dinggou1: null,
+    dinggou3: null,
+    total1: null,
+    total2: null,
+    total3: null,
+
+    // gonggeiData: null,
+  },
+  components: {},
+  data: () => ({
+    currentPage: 0,
+    activeName: 'first',
+    activeNameFirst: 'fgrrsss',
+    pageSize: 3,
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    deteles(item) {
+      this.$emit('deletes', { item });
+    },
+    messFabu() {
+      this.$router.push({ path: '/enterprise/enterprisexuqiu' });
+    },
+    handleClick(tab, event) {
+      console.log(tab, event);
+    },
+    handleClickFirst(tab, event) {
+      console.log(tab, event);
+    },
+    handleSizeChange() {},
+    handleCurrentChange(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+
+    handleCurrentChange2(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange1', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+
+    handleCurrentChange3(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange2', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.info {
+  height: 650px;
+}
+.xqborder {
+  // width: 889px;
+  width: 100%;
+  height: 183px;
+  border: 1px solid #ccc;
+  margin-top: 20px;
+}
+.fbListTop {
+  width: 99.8%;
+  height: 43px;
+  margin-left: 1px;
+  background: #fafafa;
+  line-height: 43px;
+  text-indent: 10px;
+  font-size: 13px;
+  color: #888888;
+}
+
+.fbListCenterTwo {
+  width: 48%;
+  float: left;
+  margin-left: 10px;
+  margin-right: 10px;
+  background: #fafafa;
+  height: 100px;
+}
+.fbListCenter {
+  width: 100%;
+  height: 119px;
+  margin: 20px 0 0 12px;
+}
+.fimage {
+  width: 12%;
+  height: 119px;
+  float: left;
+}
+.fbListCenterC {
+  width: 22%;
+  border-right: 1px solid #ccc;
+  height: 100px;
+}
+.fbListCenterC p {
+  padding: 5px 0;
+}
+
+.fbListCenterR {
+  border-left: 1px solid #ccc;
+  width: 125px;
+  height: 100px;
+  float: left;
+}
+.listName {
+  width: 196px;
+  height: 30px;
+  font-size: 16px;
+  color: #555555;
+}
+.listMoney {
+  height: 30px;
+  font-size: 16px;
+  color: #fe0000;
+  width: 196px;
+}
+
+.bainji {
+  padding: 0 0 0 20px;
+}
+.page {
+  padding: 11px 0 0 0;
+  text-align: center;
+}
+
+/deep/.el-pagination {
+  padding: 41px 0 0 0;
+  white-space: nowrap;
+  padding: 2px 5px;
+  color: #303133;
+  font-weight: 700;
+}
+.fabuBtn {
+  position: absolute;
+  top: 65px;
+  right: 30px;
+}
+</style>

+ 263 - 0
src/layout/enterprise/contextfabu.vue

@@ -0,0 +1,263 @@
+<template>
+  <div id="contextfabu">
+    <el-row>
+      <el-col :span="24" class="contextfabu">
+        <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+          <el-tab-pane label="需求发布" name="first">
+            <el-row class="demandForm">
+              <el-form ref="form" :model="demandForm" label-width="80px">
+                <el-form-item label="产品类型">
+                  <el-select v-model="demandForm.totaltype" placeholder="请选择产品类型" @change="selectType">
+                    <el-option v-for="(item, index) in totaltype_list" :key="index" :value="item.value" :label="item.name"></el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item label="产品名称">
+                  <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>
+                <span v-if="totaltype == 0">
+                  <el-form-item label="研发阶段">
+                    <el-select v-model="demandForm.phase" placeholder="请选择研发阶段">
+                      <el-option label="阶段成果" value="1"></el-option>
+                      <el-option label="最终成果" value="2"></el-option>
+                    </el-select>
+                  </el-form-item>
+                </span>
+                <el-form-item label="产品简介">
+                  <el-input v-model="demandForm.introduction" placeholder="请输入产品简介"></el-input>
+                </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 v-for="(item, index) in priceunit_list" :key="index" :label="item.name" :value="item.name"></el-option>
+                      </el-select>
+                    </el-form-item>
+                  </el-col>
+                </el-row>
+                <el-form-item label="产品图片">
+                  <!-- <upload :limit="1" :data="acc.url" type="url" :url="'/files/image/upload'" @upload="uploadSuccess"></upload> -->
+                  <upload
+                    :limit="6"
+                    :data="demandForm.image"
+                    :uploadBtn="true"
+                    type="image"
+                    :url="`/files/image/upload`"
+                    @upload="uploadSuccess"
+                    @delete="uploadDelete"
+                  ></upload>
+                </el-form-item>
+                <span v-if="totaltype == 0 || totaltype == 1">
+                  <el-form-item label="产品参数">
+                    <template>
+                      <el-col :span="12">
+                        <el-table :data="product_args" ref="table" tooltip-effect="dark" border stripe @selection-change="selectRow">
+                          <el-table-column label="参数名称">
+                            <template slot-scope="scope">
+                              <el-input v-model="scope.row.arg_name"></el-input>
+                            </template>
+                          </el-table-column>
+                          <el-table-column label="参数内容">
+                            <template slot-scope="scope">
+                              <el-input v-model="scope.row.memo"></el-input>
+                            </template>
+                          </el-table-column>
+                        </el-table>
+                      </el-col>
+                      <el-col :span="12">
+                        <el-button type="primary" @click.prevent="addRow()">添加参数</el-button>
+                      </el-col>
+                    </template>
+                  </el-form-item>
+                </span>
+                <span v-if="totaltype == 0 || totaltype == 2">
+                  <el-form-item label="应用领域">
+                    <el-input v-model="demandForm.field" placeholder="请输入应用领域"></el-input>
+                  </el-form-item>
+                </span>
+                <span v-if="totaltype == 0">
+                  <el-form-item label="市场前景">
+                    <el-input type="textarea" v-model="demandForm.prospect" placeholder="请输入市场前景"></el-input>
+                  </el-form-item>
+                </span>
+                <el-form-item label="电子合同">
+                  <el-input v-model="demandForm.contract" placeholder="请输入电子合同"></el-input>
+                </el-form-item>
+                <el-form-item label="供给类型">
+                  <el-select v-model="demandForm.gxtype" placeholder="请选择供给类型">
+                    <el-option label="需" value="0"></el-option>
+                    <el-option label="供" value="1"></el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item label="服务范围">
+                  <el-input type="textarea" v-model="demandForm.scope" placeholder="请输入产品名称"></el-input>
+                </el-form-item>
+                <el-form-item label="知识产权">
+                  <el-input v-model="demandForm.property" placeholder="请输入知识产权"></el-input>
+                </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.contact_user" placeholder="请输入联系人"></el-input>
+                </el-form-item>
+                <el-form-item label="联系电话">
+                  <el-input v-model="demandForm.contact_tel" placeholder="请输入联系电话"></el-input>
+                </el-form-item>
+                <el-form-item label="产品描述">
+                  <el-input type="textarea" v-model="demandForm.description" placeholder="请输入产品描述"></el-input>
+                </el-form-item>
+                <el-form-item label="状态">
+                  <el-select v-model="demandForm.status" placeholder="请选择产品状态">
+                    <el-option label="草稿" value="0"></el-option>
+                    <el-option label="发布" value="1" :disabled="true"></el-option>
+                    <el-option label="删除" value="2" :disabled="true"></el-option>
+                  </el-select>
+                </el-form-item>
+                <el-row class="demandBtn">
+                  <el-button type="primary" @click="demandBtn()">产品发布</el-button>
+                </el-row>
+              </el-form>
+            </el-row>
+          </el-tab-pane>
+          <!-- <el-tab-pane label="供给发布" name="second">供给发布</el-tab-pane> -->
+        </el-tabs>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import _ from 'lodash';
+import upload from '@/components/upload.vue';
+export default {
+  name: 'contextfabu',
+  props: {
+    demandForm: null,
+    columnList: null,
+    totaltype: null,
+  },
+  components: {
+    upload,
+  },
+  data: () => ({
+    activeName: 'first',
+    priceunit_list: [
+      {
+        name: '公斤',
+      },
+      {
+        name: '套',
+      },
+      {
+        name: '件',
+      },
+    ],
+    product_args: [],
+    selectlistRow: [],
+    rowNum: 1,
+    totaltype_list: [
+      { name: '技术', value: '0' },
+      { name: '产品', value: '1' },
+      { name: '服务', value: '2' },
+    ],
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    handleClick(tab, event) {
+      console.log(tab, event);
+    },
+    demandBtn() {
+      this.$emit('demandSubmit', { data: this.demandForm, id: this.demandForm.id });
+    },
+    selectChild(product_type_id) {
+      let res = this.columnList.filter(fil => fil.id === product_type_id);
+      if (res.length > 0) {
+        console.log(res[0].name);
+        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);
+      }
+    },
+
+    // 获取表格选中时的数据
+    selectRow(val) {
+      this.selectlistRow = val;
+    },
+    addRow() {
+      var list = {
+        rowNum: this.rowNum,
+      };
+      // let tableData = this.emandForm.product_args;
+      this.product_args.unshift(list);
+      this.rowNum += 1;
+    },
+
+    uploadDelete(index) {
+      console.log(index);
+
+      this.demandForm.image.splice(index, 1);
+    },
+    selectType(item) {
+      this.$emit('changeType', item);
+      // this.$set(this, `totaltype`, item);
+      console.log(item);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.el-tabs--card > .el-tabs__header {
+  border-bottom: 1px solid #215299;
+}
+/deep/.el-tabs__item {
+  height: 50px;
+  line-height: 50px;
+  font-size: 16px;
+}
+/deep/.el-tabs__item.is-active {
+  color: #ffff;
+  background: #215299;
+}
+.demandForm {
+  padding: 0 20px;
+}
+.demandBtn {
+  text-align: center;
+}
+/deep/.demandBtn .el-button {
+  background-color: #ff7814;
+  border: none;
+}
+/deep/.el-table td {
+  padding: 0;
+}
+/deep/.el-table th {
+  padding: 0;
+  background-color: #f3f3f3;
+}
+</style>

+ 674 - 0
src/layout/enterprise/contextfabuxx.vue

@@ -0,0 +1,674 @@
+<template>
+  <div id="recruitLists">
+    <el-row>
+      <el-col :span="24">
+        <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+          <el-tab-pane label="我的需求" name="first">
+            <el-row style="padding: 0 20px;">
+              <el-tabs v-model="activeNameFirst" @tab-click="handleClickFirst">
+                <el-tab-pane label="审核成功" name="first">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in recruitData" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="21"> {{ item.name }} </el-col>
+                          <el-col :span="3">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fimage">
+                            <el-col :span="24" v-for="(acm, index) in item.image" :key="index">
+                              <template v-if="index === 0">
+                                <el-image style="width:100px;height:100px" :src="acm.url"></el-image>
+                              </template>
+                            </el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.name }}</p>
+                            <p>类别:{{ item.totaltype === '0' ? '技术' : item.totaltype === '1' ? '产品' : item.totaltype === '2' ? '服务' : 'underdind' }}</p>
+                            <p class="listMoney">{{ item.price }}/{{ item.priceunit }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">最新申请:</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="$router.push({ path: '/enterprise/enterprisexuqiu', query: { id: item.id } })">编辑</el-link
+                              ><br />
+                              <el-link :underline="false" @click="handleDelete(item)">彻底删除</el-link>
+                              <!-- <el-link :underline="false" @click="$router.push({ path: '/enterprise/enterprisexuqiu', query: { id: item.id } })"
+                              >查看申请</el-link
+                            > -->
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+                <el-tab-pane label="审核中信息" name="second">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in shenheList" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="21"> {{ item.name }} </el-col>
+                          <el-col :span="3">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fimage">
+                            <el-col :span="24" v-for="(acm, index) in item.image" :key="index">
+                              <template v-if="index === 0">
+                                <el-image style="width:100px;height:100px" :src="acm.url"></el-image>
+                              </template>
+                            </el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.name }}</p>
+                            <p>类别:{{ item.totaltype === '0' ? '技术' : item.totaltype === '1' ? '产品' : item.totaltype === '2' ? '服务' : 'underdind' }}</p>
+                            <p class="listMoney">{{ item.price }}/{{ item.priceunit }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">最新申请:</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="$router.push({ path: '/enterprise/enterprisexuqiu', query: { id: item.id } })">编辑</el-link
+                              ><br />
+                              <el-link :underline="false" @click="handleDelete(item)">彻底删除</el-link>
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange1"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="tatalstatus1"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+                <el-tab-pane label="审核失败" name="thirth">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in successlist" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="21"> {{ item.name }} </el-col>
+                          <el-col :span="3">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fimage">
+                            <el-col :span="24" v-for="(acm, index) in item.image" :key="index">
+                              <template v-if="index === 0">
+                                <el-image style="width:100px;height:100px" :src="acm.url"></el-image>
+                              </template>
+                            </el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.name }}</p>
+                            <p>类别:{{ item.totaltype === '0' ? '技术' : item.totaltype === '1' ? '产品' : item.totaltype === '2' ? '服务' : 'underdind' }}</p>
+                            <p class="listMoney">{{ item.price }}/{{ item.priceunit }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">最新申请:</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="handleDelete(item)">彻底删除</el-link>
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange1"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="tatalstatus2"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+
+                <el-tab-pane label="发起交易" name="fgffadqdfa">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in faqilist" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="21"> </el-col>
+                          <el-col :span="3">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.product_name }}</p>
+                            <p>营销人名称:{{ item.market_username }}</p>
+                            <p>购买人名称:{{ item.username }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">说明:{{ item.description }}</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="jiaoyisuccess(item)">同意交易</el-link>
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChangefaqi"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="totalfaqi"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+
+                <el-tab-pane label="交易中" name="fgrrsss">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in Transactionlist" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="21"> </el-col>
+                          <el-col :span="3">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.product_name }}</p>
+                            <p>营销人名称:{{ item.market_username }}</p>
+                            <p>购买人名称:{{ item.username }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">说明:{{ item.description }}</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="deteles(item)">彻底删除</el-link>
+                              <el-link :underline="false" @click="success(item)">审核通过</el-link>
+                              <el-link :underline="false" @click="shibai(item)">审核失败</el-link>
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange4"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total4"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+
+                <el-tab-pane label="交易完成" name="fgrraaa">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in jiaoyilist1" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="21"> </el-col>
+                          <el-col :span="3">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.product_name }}</p>
+                            <p>营销人名称:{{ item.market_username }}</p>
+                            <p>购买人名称:{{ item.username }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">说明:{{ item.description }}</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="deteles(item)">彻底删除</el-link>
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange5"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total5"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+
+                <el-tab-pane label="交易取消" name="fgrr">
+                  <el-col :span="24" class="info">
+                    <el-col :span="24" v-for="(item, index) in jiaoyilist" :key="index">
+                      <el-col class="xqborder">
+                        <el-col :span="24" class="fbListTop">
+                          <el-col :span="21"> </el-col>
+                          <el-col :span="3">
+                            {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                          </el-col>
+                        </el-col>
+                        <el-col :span="24" class="fbListCenter">
+                          <el-col :span="6" class="fbListCenterC">
+                            <p class="textOver">产品:{{ item.product_name }}</p>
+                            <p>营销人名称:{{ item.market_username }}</p>
+                            <p>购买人名称:{{ item.username }}</p>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterTwo">
+                            <el-col :span="24">说明:{{ item.description }}</el-col>
+                          </el-col>
+                          <el-col :span="6" class="fbListCenterR">
+                            <el-col :span="24" class="bainji">
+                              <el-link :underline="false" @click="deteles(item)">彻底删除</el-link>
+                            </el-col>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange6"
+                      :current-page="currentPage"
+                      background
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total6"
+                      :page-size="pageSize"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+              </el-tabs>
+            </el-row>
+          </el-tab-pane>
+
+          <!-- <el-tab-pane label="我的供给" name="second">
+            <el-row style="padding: 0 20px;">
+              <el-tabs v-model="activeNameFirst" @tab-click="handleClickFirst">
+                <el-tab-pane label="已经审核信息" name="first">
+                  <el-col :span="24" v-for="(item, index) in gonggeiData" :key="index">
+                    <el-col class="xqborder">
+                      <el-col :span="24" class="fbListTop">
+                        <el-col :span="20"> {{ item.name }} </el-col>
+                        <el-col :span="4">
+                          {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                        </el-col>
+                      </el-col>
+                      <el-col :span="24" class="fbListCenter">
+                        <el-col :span="6" class="fimage">
+                          <el-image style="width:100px;height:100px" :src="item.image.url"></el-image>
+                        </el-col>
+                        <el-col :span="6" class="fbListCenterC">
+                          <p class="textOver">产品:{{ item.name }}</p>
+                          <p>类别:{{ item.totaltype === '0' ? '技术' : item.totaltype === '1' ? '产品' : item.totaltype === '2' ? '服务' : 'underdind' }}</p>
+                          <p class="listMoney">{{ item.price }}/{{ item.priceunit }}</p>
+                        </el-col>
+                        <el-col :span="6" class="fbListCenterTwo">
+                          <el-col :span="24">最新申请:</el-col>
+                        </el-col>
+                        <el-col :span="6" class="fbListCenterR">
+                          <el-col :span="24" class="bainji">
+                            <el-link :underline="false" @click="$router.push({ path: '/enterprise/enterprisexuqiu', query: { id: item.id } })">编辑</el-link
+                            ><br />
+                            <el-link :underline="false" @click="handleDelete(item)">彻底删除</el-link>
+                             <el-link :underline="false" @click="$router.push({ path: '/enterprise/enterprisexuqiu', query: { id: item.id } })"
+                              >查看申请</el-link
+                            > 
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange"
+                      :current-page="currentPage"
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+                <el-tab-pane label="审核中信息" name="second">
+                  <el-col :span="24" v-for="(item, index) in gonggeiData" :key="index">
+                    <el-col class="xqborder">
+                      <el-col :span="24" class="fbListTop">
+                        <el-col :span="20"> {{ item.name }} </el-col>
+                        <el-col :span="4">
+                          {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                        </el-col>
+                      </el-col>
+                      <el-col :span="24" class="fbListCenter">
+                        <el-col :span="6" class="fimage">
+                          <el-image style="width:100px;height:100px" :src="item.image.url"></el-image>
+                        </el-col>
+                        <el-col :span="6" class="fbListCenterC">
+                          <el-col :span="24" class="listName">
+                            <p class="textOver">产品:{{ item.name }}</p>
+                            <p>类别:{{ item.totaltype === '0' ? '技术' : item.totaltype === '1' ? '产品' : item.totaltype === '2' ? '服务' : 'underdind' }}</p>
+                            <p class="listMoney">{{ item.price }}/{{ item.priceunit }}</p>
+                          </el-col>
+                        </el-col>
+                        <el-col :span="6" class="fbListCenterTwo">
+                          <el-col :span="24">最新申请:</el-col>
+                        </el-col>
+                        <el-col :span="6" class="fbListCenterR">
+                          <el-col :span="24" class="bainji">
+                            <el-link :underline="false" @click="$router.push({ path: '/enterprise/enterprisexuqiu', query: { id: item.id } })">编辑</el-link
+                            ><br />
+                            <el-link :underline="false" @click="handleDelete(item)">彻底删除</el-link>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange"
+                      :current-page="currentPage"
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+                <el-tab-pane label="交易成功信息" name="thirth">
+                  <el-col :span="24" v-for="(item, index) in gonggeiData" :key="index">
+                    <el-col class="xqborder">
+                      <el-col :span="24" class="fbListTop">
+                        <el-col :span="20"> {{ item.name }} </el-col>
+                        <el-col :span="4">
+                          {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+                        </el-col>
+                      </el-col>
+                      <el-col :span="24" class="fbListCenter">
+                        <el-col :span="6" class="fimage">
+                          <el-image style="width:100px;height:100px" :src="item.image.url"></el-image>
+                        </el-col>
+                        <el-col :span="6" class="fbListCenterC">
+                          <p class="textOver">产品:{{ item.name }}</p>
+                          <p>类别:{{ item.totaltype === '0' ? '技术' : item.totaltype === '1' ? '产品' : item.totaltype === '2' ? '服务' : 'underdind' }}</p>
+                          <p class="listMoney">{{ item.price }}/{{ item.priceunit }}</p>
+                        </el-col>
+                        <el-col :span="6" class="fbListCenterTwo">
+                          <el-col :span="24">最新申请:</el-col>
+                        </el-col>
+
+                        <el-col :span="6" class="fbListCenterR">
+                          <el-col :span="24" class="bainji">
+                            <el-link :underline="false" @click="handleDelete(item)">彻底删除</el-link>
+                          </el-col>
+                        </el-col>
+                      </el-col>
+                    </el-col>
+                  </el-col>
+                  <el-col class="page" :span="24">
+                    <el-pagination
+                      @size-change="handleSizeChange"
+                      @current-change="handleCurrentChange"
+                      :current-page="currentPage"
+                      layout="total,  prev, pager, next, jumper"
+                      :total="total"
+                    >
+                    </el-pagination>
+                  </el-col>
+                </el-tab-pane>
+              </el-tabs>
+            </el-row>
+        </el-tab-pane> -->
+        </el-tabs>
+        <el-link :underline="false" class="fabuBtn" @click="messFabu()">信息发布</el-link>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'recruitLists',
+  props: {
+    recruitData: null,
+    columnName: null,
+    total: null,
+    successlist: null,
+    shenheList: null,
+    tatalstatus2: null,
+    tatalstatus1: null,
+    Transactionlist: null,
+    jiaoyilist1: null,
+    jiaoyilist: null,
+    total4: null,
+    total5: null,
+    total6: null,
+    faqilist: null,
+    totalfaqi: null,
+
+    // gonggeiData: null,
+  },
+  components: {},
+  data: () => ({
+    currentPage: 0,
+    activeName: 'first',
+    activeNameFirst: 'first',
+    pageSize: 3,
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    deteles(item) {
+      this.$emit('deteles', { item });
+    },
+    success(item) {
+      this.$emit('success', { item });
+    },
+
+    shibai(item) {
+      this.$emit('shibai', { item });
+    },
+    jiaoyisuccess(item) {
+      this.$emit('jiaoyisuccess', { item });
+    },
+    handleDelete(item) {
+      this.$emit('handleDelete', { item });
+    },
+    messFabu() {
+      this.$router.push({ path: '/enterprise/enterprisexuqiu' });
+    },
+    handleClick(tab, event) {
+      console.log(tab, event);
+    },
+    handleClickFirst(tab, event) {
+      console.log(tab, event);
+    },
+    // handleSizeChange(val) {
+    //   console.log(`每页 ${val} 条`);
+    // },
+    // handleCurrentChange(val) {
+    //   console.log(`当前页: ${val}`);
+    // },
+
+    handleSizeChange(pageSize) {
+      // this.$emit('handleSizeChange', pageSize);
+    },
+    handleCurrentChange(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+
+    handleCurrentChange1(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange1', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+
+    handleCurrentChange2(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange2', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+
+    handleCurrentChange4(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange4', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+
+    handleCurrentChange5(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange5', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+
+    handleCurrentChange6(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange6', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+
+    handleCurrentChangefaqi(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChangefaqi', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.info {
+  height: 650px;
+}
+.xqborder {
+  // width: 889px;
+  width: 100%;
+  height: 183px;
+  border: 1px solid #ccc;
+  margin-top: 20px;
+}
+.fbListTop {
+  width: 99.8%;
+  height: 43px;
+  margin-left: 1px;
+  background: #fafafa;
+  line-height: 43px;
+  text-indent: 10px;
+  font-size: 13px;
+  color: #888888;
+}
+
+.fbListCenterTwo {
+  width: 48%;
+  float: left;
+  margin-left: 10px;
+  margin-right: 10px;
+  background: #fafafa;
+  height: 100px;
+}
+.fbListCenter {
+  width: 100%;
+  height: 119px;
+  margin: 20px 0 0 12px;
+}
+.fimage {
+  width: 12%;
+  height: 119px;
+  float: left;
+}
+.fbListCenterC {
+  width: 22%;
+  border-right: 1px solid #ccc;
+  height: 100px;
+}
+.fbListCenterC p {
+  padding: 5px 0;
+}
+
+.fbListCenterR {
+  border-left: 1px solid #ccc;
+  width: 125px;
+  height: 100px;
+  float: left;
+}
+.listName {
+  width: 196px;
+  height: 30px;
+  font-size: 16px;
+  color: #555555;
+}
+.listMoney {
+  height: 30px;
+  font-size: 16px;
+  color: #fe0000;
+  width: 196px;
+}
+
+.bainji {
+  padding: 0 0 0 20px;
+}
+.page {
+  padding: 11px 0 0 0;
+  text-align: center;
+}
+
+/deep/.el-pagination {
+  padding: 41px 0 0 0;
+  white-space: nowrap;
+  padding: 2px 5px;
+  color: #303133;
+  font-weight: 700;
+}
+.fabuBtn {
+  position: absolute;
+  top: 65px;
+  right: 30px;
+}
+</style>

+ 87 - 0
src/layout/enterprise/contextxx.vue

@@ -0,0 +1,87 @@
+<template>
+  <div id="contextxx">
+    <template v-if="view == 'room'">
+      <rooms :list="list" @toChat="toChat"></rooms>
+    </template>
+    <template v-else>
+      <chat :room="room" @toRoom="toRoom"></chat>
+    </template>
+  </div>
+</template>
+
+<script>
+import _ from 'lodash';
+import rooms from './parts/room.vue';
+import chat from './parts/chat.vue';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions } = createNamespacedHelpers('personalroom');
+const { mapActions: personalChat } = createNamespacedHelpers('personalchat');
+export default {
+  name: 'contextxx',
+  props: {},
+  components: { rooms, chat },
+  data: () => {
+    return {
+      view: 'room',
+      list: [],
+      room: {},
+    };
+  },
+  created() {
+    this.search();
+  },
+  mounted() {
+    this.channel();
+  },
+  methods: {
+    ...mapActions(['query', 'fetch']),
+    ...personalChat({ getChatList: 'query' }),
+    async search() {
+      let res = await this.query({ seller_id: this.user.uid });
+      if (this.$checkRes(res)) {
+        this.$set(this, `list`, res.data);
+        this.onMessage();
+      }
+    },
+    async toChat(data) {
+      let res = await this.fetch(data.id);
+      if (this.$checkRes(res)) {
+        this.$set(this, `room`, res.data);
+        this.view = 'chat';
+      }
+    },
+    toRoom() {
+      this.view = 'room';
+      this.onMessage();
+    },
+    channel() {
+      this.$stomp({
+        [`/exchange/chat_message/${this.user.uid}`]: this.onMessage,
+      });
+    },
+    async onMessage(message) {
+      let res = await this.getChatList({ status: 0, receiver_id: this.user.uid });
+      if (this.$checkRes(res)) {
+        let arr = this.list.map(i => {
+          i.needRead ? '' : (i.needRead = 0);
+          let findRes = res.data.filter(f => i.buyer_id == f.sender_id);
+          i.needRead = findRes.length || 0;
+          return i;
+        });
+        this.$set(this, `list`, arr);
+      }
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 121 - 0
src/layout/enterprise/jibencontext.vue

@@ -0,0 +1,121 @@
+<template>
+  <div id="rightcont">
+    <el-col class="zhengce">
+      <el-col :span="24" class="topTitle">
+        基本信息
+      </el-col>
+      <el-col :span="24" class="info">
+        <el-col :span="24">
+          <p>用户名:{{ userinfo.name }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p>身份证号:{{ userinfo.cardnumber }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p>手机号:{{ userinfo.phone }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p>邮箱:{{ userinfo.email }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p>身份证号:{{ userinfo.cardnumber }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p>地址:{{ userinfo.addr }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p><span>头像图片:</span> <el-image style="width:100px;height:100px" :src="userinfo.img_path"></el-image></p>
+        </el-col>
+        <el-col :span="24">
+          <p>
+            类别:{{
+              userinfo.role === '1' ? '管理员' : userinfo.role === '2' ? '个人' : userinfo.role === '3' ? '企业' : userinfo.role === '4' ? '子管理员' : ''
+            }}
+          </p>
+        </el-col>
+        <el-col :span="24">
+          <p>地址:{{ userinfo.addr }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p><span>身份证正面:</span> <el-image style="width:100px;height:100px" :src="userinfo.cardfile_a"></el-image></p>
+        </el-col>
+        <el-col :span="24">
+          <p><span>身份证背面: </span><el-image style="width:100px;height:100px" :src="userinfo.cardfile_b"></el-image></p>
+        </el-col>
+        <el-col :span="24" v-if="this.user.role == '3'">
+          <p><span>组织机构图片:</span> <el-image style="width:100px;height:100px" :src="userinfo.img_qy"></el-image></p>
+        </el-col>
+        <el-col :span="24">
+          <p>专业领域:{{ userinfo.major }}</p>
+        </el-col>
+        <el-col :span="24" v-if="this.user.role == '3'">
+          <p>机构类型:{{ userinfo.institution_type }}</p>
+
+          <p>机构名称:{{ userinfo.institution_name }}</p>
+          <p>机构代码:{{ userinfo.institution_code }}</p>
+          <p>机构性质:{{ userinfo.institution_nature }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p>所属行业:{{ userinfo.profession }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p>办公电话:{{ userinfo.office_phone }}</p>
+        </el-col>
+        <el-col :span="24">
+          <p>简介:{{ userinfo.resume }}</p>
+        </el-col>
+      </el-col>
+    </el-col>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+
+export default {
+  name: 'rightcont',
+  props: {
+    userinfo: null,
+  },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {
+    ...mapState(['user']),
+  },
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.zhengce {
+  padding: 20px;
+}
+.zhengce .topTitle {
+  font-size: 22px;
+  color: #22529a;
+  margin: 0 0 20px 0;
+}
+.zhengce .info {
+  float: left;
+  width: 100%;
+}
+.zhengce .info p {
+  float: left;
+  width: 100%;
+  padding: 10px 0;
+}
+.zhengce .info p span {
+  float: left;
+  margin: 0 10px 0 0;
+}
+.zhengce .info p image {
+  float: left;
+  width: 100px;
+  height: 100px;
+}
+</style>

+ 73 - 0
src/layout/enterprise/mainMenu.vue

@@ -0,0 +1,73 @@
+<template>
+  <div id="fenlei">
+    <el-col class="swfl" :span="24">
+      <el-image style="width:22px;height:22px;margin:0 5px -5px 0;" :src="src"></el-image>
+      <span>个人中心</span>
+    </el-col>
+    <el-col>
+      <el-menu default-active="1" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" text-color="#215299" active-text-color="#215299">
+        <el-menu-item index="1" v-for="(item, index) in liebiaoList" :key="index">
+          <template v-if="item.name.includes('消息')">
+            <span slot="title" @click="clickUrl(item.name)" :style="`color:${haveMsg ? 'red' : ''}`">
+              {{ item.name }}
+            </span>
+          </template>
+          <template v-else>
+            <span slot="title" @click="clickUrl(item.name)">{{ item.name }}</span>
+          </template>
+        </el-menu-item>
+      </el-menu>
+    </el-col>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'fenlei',
+  props: {
+    liebiaoList: null,
+  },
+  components: {},
+  data: () => ({
+    src: require('@/assets/swfl.png'),
+    haveMsg: false,
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    clickUrl(id) {
+      this.$emit('onsave', { id });
+    },
+
+    handleOpen(key, keyPath) {
+      console.log(key, keyPath);
+    },
+    handleClose(key, keyPath) {
+      console.log(key, keyPath);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.swfl {
+  height: 60px;
+  line-height: 60px;
+  background-color: #22529a;
+  text-align: center;
+}
+.swfl span {
+  font-size: 22px;
+  color: #ffffff;
+}
+/deep/.el-menu-item {
+  height: 60px;
+  text-align: center;
+  line-height: 60px;
+  border-bottom: 1px dashed;
+  font-size: 22px;
+}
+/deep/.el-menu-item:last-child {
+  border-bottom: none;
+}
+</style>

+ 180 - 0
src/layout/enterprise/parts/chat.vue

@@ -0,0 +1,180 @@
+<template>
+  <div id="chats">
+    <el-row :span="24" class="chat">
+      <el-col :span="24" style="padding-bottom:5px">
+        <el-button size="mini" @click="$emit('toRoom')" icon="el-icon-arrow-left" type="primary">返回</el-button>
+      </el-col>
+      <el-col :span="24" class="chatInfo" id="chatBorder" ref="chatBorder">
+        <template v-for="(i, index) in talk">
+          <template v-if="isSender(i, index)">
+            <el-col :span="24" class="senderTime" :key="`div${i.id}${index}`">
+              <span :key="`senderTime${i.id}${index}`">[{{ i.send_time }}] {{ i.sender_name }}</span>
+              <span v-html="i.content" :key="`senderContent${i.id}${index}`"></span>
+            </el-col>
+          </template>
+          <template v-else>
+            <el-col :span="24" class="receverTime" :key="`div${i.id}${index}`">
+              <span :key="`receverTime${i.id}${index}`"> {{ i.receiver_name }} [{{ i.send_time }}]</span>
+              <span v-html="i.content" :key="`receverContent${i.id}${index}`"></span>
+            </el-col>
+          </template>
+        </template>
+      </el-col>
+      <el-col :span="24" class="chatBtn">
+        <wang-editor v-model="content" style="height:130px;padding-bottom:120px" ref="editor"></wang-editor>
+        <el-button type="primary" @click="chatClick">发送</el-button>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import _ from 'lodash';
+import { mapState, createNamespacedHelpers } from 'vuex';
+import wangEditor from '@/components/wang-editor.vue';
+const { mapActions: personalChat } = createNamespacedHelpers('personalchat');
+export default {
+  name: 'chats',
+  props: {
+    room: { type: Object, default: () => {} },
+  },
+  components: {
+    wangEditor,
+  },
+  data: () => {
+    return {
+      content: '',
+      talk: [],
+    };
+  },
+  created() {},
+  mounted() {
+    this.channel();
+  },
+  methods: {
+    ...personalChat(['create', 'query', 'update', 'isRead']),
+    async search() {
+      let res = await this.query({ personroom_id: this.room.id });
+      if (this.$checkRes(res)) {
+        this.$set(this, `talk`, res.data);
+        this.turnBottom();
+        this.toAlreadyRead();
+      }
+    },
+    async chatClick() {
+      if (this.content != '') {
+        let obj = { personroom_id: this.room.id, content: this.content, sender_id: this.user.uid, sender_name: this.user.name, send_time: '13:00' };
+        let keys = Object.keys(this.room);
+        let fres = keys.find(f => this.room[f] == this.user.uid);
+        obj.receiver_id = fres === 'buyer_id' ? this.room['seller_id'] : this.room['buyer_id'];
+        obj.receiver_name = fres === 'buyer_id' ? this.room['seller_name'] : this.room['buyer_name'];
+        let res = await this.create(obj);
+        this.$refs.editor.setContent();
+        this.$set(this, `content`, '');
+        this.$forceUpdate();
+        if (this.$checkRes(res, null, res.errmsg || '发言失败')) {
+          this.talk.push(res.data);
+          this.turnBottom();
+        }
+      } else this.$message.error('请输入信息后发送');
+    },
+    turnBottom() {
+      this.$nextTick(() => {
+        document.getElementById('chatBorder').scrollTop = document.getElementById('chatBorder').scrollHeight + 150;
+      });
+    },
+    isSender(data) {
+      return this.user.uid == data.sender_id;
+    },
+    channel() {
+      //TODO 修改订阅地址
+      if (!this.room.id) {
+        console.warn('未获取到房间id,无法进行订阅');
+        return;
+      }
+      this.$stomp({
+        [`/exchange/person_chat/${this.room.id}_${this.user.uid}`]: this.onMessage,
+      });
+    },
+    onMessage(message) {
+      let body = _.get(message, 'body');
+      if (body) {
+        body = JSON.parse(body);
+        this.talk.push(body);
+        this.turnBottom();
+      }
+    },
+    async toAlreadyRead() {
+      let ids = this.talk.filter(f => f.status == 0 && f.receiver_id == this.user.uid);
+      ids = ids.map(i => i.id);
+      let res = await this.isRead({ ids, sender_id: this.room.buyer_id, receiver_id: this.user.uid, personroom_id: this.room.id });
+    },
+  },
+  watch: {
+    room: {
+      handler(val) {
+        if (val.id) this.search();
+      },
+      immediate: true,
+      deep: true,
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.chat {
+  float: left;
+  width: 100%;
+  padding: 20px;
+}
+.chat .chatInfo {
+  float: left;
+  width: 100%;
+  height: 280px;
+  overflow: hidden;
+  border: 1px solid #ccc;
+  margin: 0 0 30px 0;
+  overflow-y: auto;
+}
+.chatBtn {
+  float: left;
+  width: 100%;
+  text-align: center;
+}
+/deep/.chatBtn .el-button {
+  padding: 10px 80px;
+  font-size: 20px;
+}
+.senderTime {
+  float: left;
+  width: 100%;
+}
+.receverTime {
+  float: right;
+  width: 100%;
+}
+.receverTime span:first-child {
+  float: right;
+  width: 100%;
+  text-align: right;
+}
+.receverTime span:last-child {
+  float: right;
+  width: 100%;
+  text-align: right;
+}
+</style>

+ 48 - 0
src/layout/enterprise/parts/room.vue

@@ -0,0 +1,48 @@
+<template>
+  <div id="room">
+    <el-table :data="list" border stripe :show-header="false" @row-click="toChat">
+      <el-table-column align="center">
+        <template v-slot="{ row }">
+          <template v-if="row.needRead == 0">
+            暂无未读消息
+          </template>
+          <template v-if="row.needRead > 0">
+            <span style="color:red">您有{{ row.needRead }}条未读消息 </span>
+          </template>
+        </template>
+      </el-table-column>
+      <el-table-column prop="buyer_name" align="center"></el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'room',
+  props: {
+    list: { type: Array, default: () => [] },
+  },
+  components: {},
+  data: () => {
+    return {};
+  },
+  created() {},
+  methods: {
+    toChat(row) {
+      this.$emit('toChat', row);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 1 - 2
src/layout/live/head.vue

@@ -84,8 +84,7 @@ export default {
       else return this.$route.path.includes(`/${type}`);
     },
     btnLogin() {
-      //TODO改成相对跳转
-      window.open('http://free.liaoningdoupo.com/platlogin/');
+      this.$router.push({ path: '/login' });
     },
   },
   computed: {

+ 41 - 0
src/layout/login.vue

@@ -0,0 +1,41 @@
+<template>
+  <div id="login">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div class="w_1200">
+          <loginMain v-on="$listeners" :form="form" :forms="forms"></loginMain>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+import loginMain from '@/layout/login/loginMain.vue';
+export default {
+  name: 'login',
+  props: {
+    info: null, //站点信息
+    form: null, //登录
+    forms: null, //注册
+  },
+  components: {
+    loginMain, //登录
+  },
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+.w_1200 {
+  width: 80%;
+  margin: 0 auto;
+}
+.main {
+  min-height: 800px;
+  overflow: hidden;
+  margin: 10px 0;
+}
+</style>

+ 190 - 0
src/layout/login/loginMain.vue

@@ -0,0 +1,190 @@
+<template>
+  <div id="loginMain">
+    <el-row class="loginMains">
+      <el-col :span="24" class="top">
+        <el-col :span="6" class="info"> </el-col>
+        <el-col :span="12" class="context">
+          <el-tabs v-model="activeName" @tab-click="handleClick">
+            <el-tab-pane label="登录" name="first">
+              <el-col :span="24">
+                <el-form ref="form" :model="form" label-width="80px">
+                  <!-- <el-form-item label="用户类别">
+                  <el-radio v-model="form.role" label="1">管理员</el-radio>
+                  <el-radio v-model="form.role" label="2">个人</el-radio>
+                  <el-radio v-model="form.role" label="3">企业管理员</el-radio>
+                </el-form-item> -->
+                  <el-form-item label="手机号">
+                    <el-input v-model="form.phone" placeholder="请输入手机号" :minlength="11" :maxlength="11"></el-input>
+                  </el-form-item>
+                  <el-form-item label="登录密码">
+                    <el-input v-model="form.passwd" placeholder="请输入登录密码" show-password></el-input>
+                  </el-form-item>
+                  <el-col :span="24" class="loginSubmit"><el-button type="primary" @click="loginSubmit">登录</el-button></el-col>
+                </el-form>
+              </el-col>
+            </el-tab-pane>
+            <el-tab-pane label="注册" name="second">
+              <el-col :span="24">
+                <el-form ref="forms" :model="forms" label-width="120px">
+                  <el-form-item label="用户名称">
+                    <el-input v-model="forms.name" placeholder="请输入用户名称"></el-input>
+                  </el-form-item>
+                  <el-form-item label="登录密码">
+                    <el-input v-model="forms.password" placeholder="请输入登录密码" show-password></el-input>
+                  </el-form-item>
+                  <el-form-item label="身份证号">
+                    <el-input v-model="forms.cardnumber" placeholder="请输入身份证号" :minlength="18" :maxlength="18"></el-input>
+                  </el-form-item>
+                  <el-form-item label="手机号">
+                    <el-input v-model="forms.phone" placeholder="请输入手机号" :minlength="11" :maxlength="11"></el-input>
+                  </el-form-item>
+                  <el-form-item label="邮箱">
+                    <el-input v-model="forms.email" placeholder="请输入邮箱"></el-input>
+                  </el-form-item>
+                  <el-form-item label="地址">
+                    <el-input v-model="forms.addr" placeholder="请输入地址"></el-input>
+                  </el-form-item>
+                  <el-form-item label="头像图片" prop="img_path">
+                    <upload :limit="1" :data="forms.img_path" type="img_path" :url="'/files/imgpath/upload'" @upload="uploadSuccess"></upload>
+                  </el-form-item>
+                  <el-form-item label="用户类别">
+                    <!-- <el-radio v-model="forms.role" label="1">管理员</el-radio> -->
+                    <el-radio-group v-model="forms.role" @change="setIsQy">
+                      <el-radio label="2">个人</el-radio>
+                      <el-radio label="3">企业管理员</el-radio>
+                    </el-radio-group>
+                  </el-form-item>
+                  <!-- <el-form-item label="个人/法人">
+                  <el-radio v-model="forms.is_qy" label="0">个人</el-radio>
+                  <el-radio v-model="forms.is_qy" label="1">法人</el-radio>
+                </el-form-item> -->
+                  <el-form-item label="身份证正面">
+                    <upload :limit="1" :data="forms.cardfile_a" type="cardfile_a" :url="'/files/cardfilea/upload'" @upload="uploadSuccess"></upload>
+                  </el-form-item>
+                  <el-form-item label="身份证背面">
+                    <upload :limit="1" :data="forms.cardfile_b" type="cardfile_b" :url="'/files/cardfileb/upload'" @upload="uploadSuccess"></upload>
+                  </el-form-item>
+                  <el-form-item label="组织机构图片" v-if="forms.role == '3'">
+                    <upload :limit="1" :data="forms.img_qy" type="img_qy" :url="'/files/imgqy/upload'" @upload="uploadSuccess"></upload>
+                  </el-form-item>
+                  <el-form-item label="简介" placeholder="请输入简介">
+                    <el-input type="textarea" v-model="forms.resume"></el-input>
+                  </el-form-item>
+                  <el-form-item label="专业领域" placeholder="请输入专业领域">
+                    <el-input v-model="forms.major"></el-input>
+                  </el-form-item>
+                  <template v-if="forms.role == '3'">
+                    <el-form-item label="机构类型" placeholder="请输入机构类型">
+                      <el-input v-model="forms.institution_type"></el-input>
+                    </el-form-item>
+                    <el-form-item label="机构名称" placeholder="请输入机构名称">
+                      <el-input v-model="forms.institution_name"></el-input>
+                    </el-form-item>
+                    <el-form-item label="机构代码" placeholder="请输入机构代码">
+                      <el-input v-model="forms.institution_code"></el-input>
+                    </el-form-item>
+                    <el-form-item label="机构性质" placeholder="请输入机构性质">
+                      <el-input v-model="forms.institution_nature"></el-input>
+                    </el-form-item>
+                  </template>
+                  <el-form-item label="办公电话" placeholder="请输入办公电话">
+                    <el-input v-model="forms.office_phone"></el-input>
+                  </el-form-item>
+                  <el-form-item label="所属行业" placeholder="请输入所属行业">
+                    <el-input v-model="forms.profession"></el-input>
+                  </el-form-item>
+                  <el-col :span="24" class="loginSubmit"><el-button type="primary" @click="registerSubmit">注册</el-button></el-col>
+                </el-form>
+              </el-col>
+            </el-tab-pane>
+          </el-tabs>
+        </el-col>
+        <el-col :span="6" class="info"></el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import upload from '@/components/upload.vue';
+export default {
+  name: 'loginMain',
+  props: {
+    form: null,
+    forms: null,
+  },
+  components: {
+    upload,
+  },
+  data: () => ({
+    activeName: 'first',
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    handleClick(tab, event) {
+      console.log(tab, event);
+    },
+    loginSubmit() {
+      this.$emit('submitDate', this.form);
+    },
+    registerSubmit() {
+      this.$emit('submitDates', { data: this.forms, id: this.forms.id });
+    },
+    uploadSuccess({ type, data }) {
+      this.$set(this.forms, `${type}`, data.uri);
+    },
+    setIsQy(data) {
+      let val = '0';
+      data == '2' ? (val = '0') : (val = '1');
+      this.$set(this.forms, `is_qy`, val);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.loginMains {
+  min-height: 800px;
+  padding: 40px 0;
+  background-color: #fff;
+}
+.top {
+  width: 100%;
+}
+.info {
+  width: 25%;
+  height: 800px;
+}
+.context {
+  width: 50%;
+}
+
+/deep/.el-tabs__header {
+  margin: 0;
+}
+/deep/.el-tabs__nav-wrap::after {
+  background-color: transparent;
+}
+/deep/.el-tabs--top .el-tabs__item.is-top:nth-child(2) {
+  padding-left: 50px;
+}
+/deep/.el-tabs--top .el-tabs__item.is-top:last-child {
+  padding-right: 50px;
+}
+/deep/.el-tabs__active-bar {
+  background-color: transparent;
+}
+/deep/.el-tabs__nav {
+  margin: 0 130px;
+}
+/deep/.el-tabs__item {
+  padding: 0 60px;
+  height: 70px;
+  line-height: 70px;
+  font-size: 30px;
+}
+.loginSubmit {
+  text-align: center;
+}
+</style>

+ 74 - 0
src/layout/personCenter/question.vue

@@ -0,0 +1,74 @@
+<template>
+  <div id="question">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="infoTop">
+          <el-image style="width:100%;height:60px;" :src="pic"></el-image>
+        </el-col>
+        <el-col :span="24" class="form">
+          <el-col :span="24" class="image">
+            <el-image :src="formImage" style="width:100px;height:80px;"></el-image>
+          </el-col>
+          <el-form ref="form" :model="form">
+            <el-form-item label="您是否愿意继续关注本平台">
+              <el-radio-group v-model="form.resource">
+                <el-radio label="愿意"></el-radio>
+                <el-radio label="不愿意"></el-radio>
+              </el-radio-group>
+            </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: 'question',
+  props: {},
+  components: {},
+  data: () => ({
+    pic: require('@/assets/diaocha.gif'),
+    formImage: require('@/assets/cha.png'),
+    form: {
+      resource: '',
+    },
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    onSubmit() {
+      console.log('submit!');
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.infoTop {
+  width: 100%;
+  height: 60px;
+  overflow: hidden;
+}
+.image {
+  text-align: center;
+  margin: 20px 0;
+}
+.form .el-form {
+  float: left;
+  width: 100%;
+  text-align: center;
+}
+/deep/.el-radio {
+  color: #000;
+}
+/deep/.el-form-item__label {
+  width: 100%;
+  text-align: center;
+  color: #000;
+}
+</style>

+ 113 - 0
src/layout/personnel/listcontext.vue

@@ -0,0 +1,113 @@
+<template>
+  <div id="rightcont">
+    <el-col class="zhengce">
+      <el-col :span="24" class="topTitle">
+        专家列表
+      </el-col>
+      <el-col :span="24" class="info">
+        <ul>
+          <li v-for="(item, index) in contentList" :key="index" @click="$emit('fetch', item.id)">
+            <el-col :span="21" class="title textOver">{{ item.name }}</el-col>
+            <el-col :span="3" class="date">
+              {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+            </el-col>
+          </li>
+        </ul>
+        <el-col class="page" :span="24">
+          <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            layout="total,  prev, pager, next, jumper"
+            :total="total"
+          >
+          </el-pagination>
+        </el-col>
+      </el-col>
+    </el-col>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'rightcont',
+  props: {
+    columnName: null,
+    contentList: null,
+    total: null,
+  },
+  components: {},
+  data: () => ({
+    currentPage: 0,
+    pageSize: 10,
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    handleSizeChange(pageSize) {
+      // this.$emit('handleSizeChange', pageSize);
+    },
+    handleCurrentChange(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+ul {
+  margin: 0;
+}
+li {
+  padding: 0;
+  margin: 0;
+  color: #a8abb7;
+}
+.zhengce {
+  height: 660px;
+  padding: 20px;
+  overflow: hidden;
+}
+.topTitle {
+  font-size: 22px;
+  color: #22529a;
+  margin: 0 0 20px 0;
+}
+.info {
+  height: 570px;
+  overflow: hidden;
+}
+.info ul {
+  height: 510px;
+  overflow: hidden;
+  padding: 0 0 0 20px;
+}
+.info ul li {
+  float: left;
+  width: 100%;
+  padding: 0 0 13px 0;
+}
+.info ul li .title {
+  font-size: 16px;
+  color: #60636d;
+}
+.info ul li .date {
+  font-size: 16px;
+  color: #a8abb7;
+  text-align: right;
+}
+.info ul li:hover {
+  cursor: pointer;
+}
+.info ul li:hover .title {
+  color: #22529a;
+}
+.info ul li:hover .date {
+  color: #22529a;
+}
+.page {
+  padding: 11px 0;
+  text-align: center;
+}
+</style>

+ 204 - 0
src/layout/personnel/rightcontrencai.vue

@@ -0,0 +1,204 @@
+<template>
+  <div id="rightcont">
+    <el-col class="zhengce">
+      <el-col class="tittop">
+        <el-col class="tittxt">专家详情</el-col>
+      </el-col>
+      <el-col class="titleimage">
+        <el-col :span="24">
+          <el-col :span="8" class="bgcolor">
+            <el-col class="images" :span="12">
+              <el-image style="width:140px;height:140px" :src="policyInfo.imgpath"></el-image>
+            </el-col>
+            <el-col :span="12" class="bgcolorWenzi">
+              <p>民族: {{ policyInfo.nation }}</p>
+              <p>学历:{{ policyInfo.education }}</p>
+              <p>电话:{{ policyInfo.phone }}</p>
+              <p>邮箱:{{ policyInfo.email }}</p>
+            </el-col>
+          </el-col>
+          <el-col :span="16" class="titletop1">
+            <p class="title">{{ policyInfo.title }}</p>
+            <p class="name">{{ policyInfo.name }}</p>
+            <p class="profession">求职意向:{{ policyInfo.profession }}</p>
+          </el-col>
+        </el-col>
+      </el-col>
+
+      <el-col class="date">
+        更新时间:{{ policyInfo.meta && policyInfo.meta.createdAt ? new Date(policyInfo.meta.createdAt).toLocaleDateString() : '' || '' }}
+      </el-col>
+      <el-row class="info">
+        <el-col :span="24" class="xiangxi">
+          <el-col :span="24" class="infoTop">
+            <span>详细信息</span>
+          </el-col>
+          <el-col :span="24">
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>出生年月:{{ policyInfo.birth }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>证件类型:{{ policyInfo.cardtype }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>身份证号:{{ policyInfo.cardnumber }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>初级职称:{{ policyInfo.technical }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>具体职称:{{ policyInfo.technical_actual }} </el-col>
+
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>职务:{{ policyInfo.position }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>毕业院校:{{ policyInfo.school }} </el-col>
+
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>学历:{{ policyInfo.eduback }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>学位:{{ policyInfo.degree }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>所学专业:{{ policyInfo.major_studied }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>从事专业:{{ policyInfo.professional }} </el-col>
+
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>可供咨询领域:{{ policyInfo.field_py }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>论文论著:{{ policyInfo.paper }} </el-col>
+
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>邮箱:{{ policyInfo.email }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>办公电话:{{ policyInfo.tel }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>手机号:{{ policyInfo.phone }} </el-col>
+
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>主持或参与项目情况:{{ policyInfo.project_profile }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>主要学术成就及获奖情况:{{ policyInfo.achievement }} </el-col>
+
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>领域拼音:{{ policyInfo.field_py }} </el-col>
+
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>性别:{{ policyInfo.gender }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>身份证号:{{ policyInfo.cardnumber }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>户口所在:{{ policyInfo.hukou }} </el-col>
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i>当前住址:{{ policyInfo.addr }}</el-col>
+
+            <el-col :span="12" class="mess"> <i class="el-icon-edit"></i> 婚姻状况:{{ policyInfo.marital == 0 ? '已婚' : '未婚' }} </el-col>
+            <el-col :span="24" class="mess"> <i class="el-icon-edit"></i>备注:{{ policyInfo.remark }} </el-col>
+            <el-col :span="24" class="mess"> <i class="el-icon-edit"></i>业务工作简介:{{ policyInfo.job_profile }} </el-col>
+          </el-col>
+        </el-col>
+      </el-row>
+    </el-col>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'rightcont',
+  props: { policyInfo: null },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {},
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.tittop {
+  width: 100%;
+  height: 60px;
+  line-height: 60px;
+  border-bottom: 1px solid #215299;
+}
+.tittxt {
+  width: 135px;
+  height: 60px;
+  line-height: 60px;
+  background: #215299;
+  text-align: center;
+  color: #fff;
+  font-size: 16px;
+  font-family: 'Microsoft Yahei';
+}
+.titleimage {
+  margin: 20px 20px 0 20px;
+  width: 1160px;
+  height: 200px;
+}
+.bgcolor {
+  width: 450px;
+  height: 200px;
+  background-color: #215299;
+}
+.images {
+  text-align: center;
+  padding: 28px 0;
+}
+.bgcolorWenzi {
+  height: 200px;
+  padding: 30px 0;
+}
+.bgcolorWenzi p {
+  color: #fff;
+  padding: 5px 0;
+}
+.titletop1 {
+  width: 710px;
+  height: 200px;
+  background-color: #eeeeee;
+  text-align: center;
+}
+.titletop1 .title {
+  font-weight: bold;
+
+  height: 60px;
+  line-height: 60px;
+  color: #215299;
+  font-size: 24px;
+}
+.titletop1 .name {
+  height: 50px;
+  line-height: 50px;
+  color: #215299;
+  font-size: 24px;
+}
+.titletop1 .profession {
+  height: 65px;
+  line-height: 65px;
+  text-align: center;
+  color: #215299;
+  font-size: 18px;
+}
+.date {
+  height: 50px;
+  line-height: 50px;
+  text-align: right;
+  padding: 0 50px 0 0;
+}
+.info {
+  padding: 0 30px;
+}
+.xiangxi {
+  height: 210px;
+}
+.jianjie {
+  height: 280px;
+}
+.infoTop {
+  height: 40px;
+  line-height: 40px;
+  border-bottom: 1px solid #215299;
+  width: 110%;
+}
+.infoTop span {
+  display: inline-block;
+  height: 40px;
+  background: #215299;
+  padding: 0 20px;
+  color: #fff;
+}
+.content {
+  line-height: 30px;
+  padding: 30px 0 30px 30px;
+}
+.content p {
+  font-size: 16px;
+  color: #666;
+}
+.mess {
+  padding: 29px 20px;
+  font-size: 16px;
+  color: #666;
+}
+.mess i {
+  padding: 0 10px 0 0;
+}
+</style>

+ 209 - 0
src/layout/supermarket/detali.vue

@@ -0,0 +1,209 @@
+<template>
+  <div id="policyrightcont">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="infoTop">
+          <span>详情页面</span>
+        </el-col>
+        <el-col :span="24" class="infoMiddle">
+          <el-col :span="8" class="infoImage">
+            <el-carousel trigger="click" height="400px">
+              <template v-if="policyInfo.image && policyInfo.image.length > 0">
+                <el-carousel-item v-for="(item, index) in policyInfo.image" :key="index">
+                  <el-image :src="item.url"> </el-image>
+                </el-carousel-item>
+              </template>
+              <template v-if="policyInfo.image && policyInfo.image.length == 0"><h1 style="text-align:center;line-height:370px;">暂无图片</h1></template>
+            </el-carousel>
+          </el-col>
+          <el-col :span="14" class="infoRight">
+            <p>{{ policyInfo.name }}</p>
+            <p class="infoType">
+              <span>总分类:</span
+              ><span>{{ policyInfo.totaltype === '0' ? '技术' : policyInfo.totaltype === '1' ? '产品' : policyInfo.totaltype === '2' ? '服务' : '暂无' }}</span>
+              <span>类型名称:</span>
+              <span>{{ policyInfo.product_type_name }}</span>
+            </p>
+            <p class="infoPrice">
+              <span>收费标准:</span><span>{{ policyInfo.price }}元/</span><span>{{ policyInfo.priceunit }}</span>
+            </p>
+            <p class="infoStatus">
+              <span>交易方式:</span
+              ><span>{{ policyInfo.business === '0' ? '公用' : policyInfo.business === '1' ? '转让' : policyInfo.business === '2' ? '竞价' : '暂无' }}</span
+              ><span>状态:</span
+              ><span>{{
+                policyInfo.status === '0' ? '待审核' : policyInfo.status === '1' ? '通过审核' : policyInfo.status === '2' ? '审核拒绝' : '暂无'
+              }}</span>
+            </p>
+            <p class="infoStatus">
+              <span>研发阶段:</span><span>{{ policyInfo.phase === '0' ? '阶段成果' : policyInfo.phase === '1' ? '最终成果' : '暂无' }}</span
+              ><span>供/需:</span
+              ><span>{{ policyInfo.business === '0' ? '公用' : policyInfo.business === '1' ? '供' : policyInfo.business === '2' ? '需' : '暂无' }}</span>
+            </p>
+            <p class="infoType">
+              <span>联系人:</span><span>{{ policyInfo.contact_user }}</span
+              ><span>联系电话:</span><span>{{ policyInfo.contact_tel }}</span>
+            </p>
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="infoDown">
+          <el-form label-width="150px">
+            <el-form-item label="应用领域:">
+              <span>{{ policyInfo.field }}</span>
+            </el-form-item>
+            <el-form-item label="市场前景:">
+              <span>{{ policyInfo.prospect }}</span>
+            </el-form-item>
+            <el-form-item label="电子合同:">
+              <span>{{ policyInfo.contract }}</span>
+            </el-form-item>
+            <el-form-item label="服务范围:">
+              <span>{{ policyInfo.scope }}</span>
+            </el-form-item>
+            <el-form-item label="描述:">
+              <span>{{ policyInfo.description }}</span>
+            </el-form-item>
+            <el-form-item label="知识产权:">
+              <span>{{ policyInfo.property }}</span>
+            </el-form-item>
+            <el-form-item label="简介:">
+              <span>{{ policyInfo.introduction }}</span>
+            </el-form-item>
+            <el-form-item label="产品参数:">
+              <el-table :data="policyInfo.product_args" border style="width: 100%">
+                <el-table-column prop="arg_name" label="参数名称"> </el-table-column>
+                <el-table-column prop="memo" label="参数内容"> </el-table-column>
+              </el-table>
+            </el-form-item>
+          </el-form>
+        </el-col>
+        <el-col :span="4" class="infoButton"> <el-button @click="onSubmit">立即创建</el-button></el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'policyrightcont',
+  props: { policyInfo: { type: Object, required: true, default: () => {} } },
+  components: {},
+  data: () => ({}),
+  created() {},
+  computed: {},
+  methods: {
+    onSubmit() {
+      console.log(this.policyInfo);
+      this.$emit('onSubmit', this.policyInfo);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+p {
+  padding: 0;
+  margin: 0;
+}
+.infoTop {
+  height: 60px;
+  border-bottom: 1px solid #22529a;
+}
+.infoTop span:only-child {
+  width: 15%;
+  height: 60px;
+  background-color: #22529a;
+  color: #fff;
+  text-align: center;
+  line-height: 60px;
+  font-size: 20px;
+  display: block;
+}
+.infoMiddle {
+  margin: 20px;
+  padding-bottom: 20px;
+  border-bottom: 1px dashed #ccc;
+}
+.infoImage {
+  width: 40%;
+}
+.infoImage .el-image {
+  width: 100%;
+  height: 100%;
+}
+.infoRight {
+  float: right;
+  font-family: 微软雅黑;
+  color: rgba(1, 1, 1, 0.7);
+  width: 57%;
+}
+.infoRight p:first-child {
+  font-size: 25px;
+  margin: 20px 0 30px 0;
+}
+.infoType {
+  font-size: 20px;
+}
+.infoType span:first-child {
+  font-weight: bolder;
+}
+.infoType span:nth-child(2) {
+  display: inline-block;
+  width: 35%;
+}
+.infoType span:nth-child(3) {
+  font-weight: bolder;
+}
+.infoPrice {
+  background-color: rgba(1, 1, 1, 0.1);
+  line-height: 60px;
+  margin: 30px 0 30px 0;
+  width: 90%;
+  padding: 0 30px;
+  font-size: 28px;
+  color: #fe0000;
+}
+.infoPrice span:first-child {
+  color: rgba(1, 1, 1, 0.7);
+  font-size: 18px;
+}
+.infoStatus {
+  margin: 30px 0 30px 0;
+}
+.infoStatus span:nth-child(2) {
+  display: inline-block;
+  width: 35%;
+}
+.infoDown {
+  margin: 10px 20px;
+}
+/deep/.el-form-item__label {
+  color: rgba(1, 1, 1, 0.7);
+  font-size: 18px;
+}
+/deep/.el-form-item__content {
+  color: rgba(1, 1, 1, 0.7);
+  font-size: 18px;
+}
+/deep/.el-table th {
+  background-color: #f3f3f3;
+  color: rgba(1, 1, 1, 0.5);
+  font-size: 18px;
+  text-align: center;
+}
+/deep/.el-table td {
+  color: rgba(1, 1, 1, 0.7);
+  font-size: 18px;
+  text-align: center;
+}
+.infoButton {
+  margin: 20px auto;
+  float: none;
+}
+/deep/.el-button {
+  width: 100px;
+  background-color: #22529a;
+  border-radius: 0;
+  color: white;
+}
+</style>

+ 113 - 0
src/layout/supermarket/listcontext.vue

@@ -0,0 +1,113 @@
+<template>
+  <div id="rightcont">
+    <el-col class="zhengce">
+      <el-col :span="24" class="topTitle">
+        {{ columnName }}
+      </el-col>
+      <el-col :span="24" class="info">
+        <ul>
+          <li v-for="(item, index) in contentList" :key="index" @click="$emit('fetch', item.id)">
+            <el-col :span="21" class="title textOver">{{ item.name }}</el-col>
+            <el-col :span="3" class="date">
+              {{ item.meta && item.meta.createdAt ? new Date(item.meta.createdAt).toLocaleDateString() : '' || '' }}
+            </el-col>
+          </li>
+        </ul>
+        <el-col class="page" :span="24">
+          <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            layout="total,  prev, pager, next, jumper"
+            :total="total"
+          >
+          </el-pagination>
+        </el-col>
+      </el-col>
+    </el-col>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'rightcont',
+  props: {
+    columnName: null,
+    contentList: null,
+    total: null,
+  },
+  components: {},
+  data: () => ({
+    currentPage: 0,
+    pageSize: 10,
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    handleSizeChange(pageSize) {
+      // this.$emit('handleSizeChange', pageSize);
+    },
+    handleCurrentChange(currentPage) {
+      console.log(currentPage);
+      this.$emit('handleCurrentChange', { skip: (currentPage - 1) * this.pageSize, limit: this.pageSize, currentPage });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+ul {
+  margin: 0;
+}
+li {
+  padding: 0;
+  margin: 0;
+  color: #a8abb7;
+}
+.zhengce {
+  height: 660px;
+  padding: 20px;
+  overflow: hidden;
+}
+.topTitle {
+  font-size: 22px;
+  color: #22529a;
+  margin: 0 0 20px 0;
+}
+.info {
+  height: 570px;
+  overflow: hidden;
+}
+.info ul {
+  height: 510px;
+  overflow: hidden;
+  padding: 0 0 0 20px;
+}
+.info ul li {
+  float: left;
+  width: 100%;
+  padding: 0 0 13px 0;
+}
+.info ul li .title {
+  font-size: 16px;
+  color: #60636d;
+}
+.info ul li .date {
+  font-size: 16px;
+  color: #a8abb7;
+  text-align: right;
+}
+.info ul li:hover {
+  cursor: pointer;
+}
+.info ul li:hover .title {
+  color: #22529a;
+}
+.info ul li:hover .date {
+  color: #22529a;
+}
+.page {
+  padding: 11px 0;
+  text-align: center;
+}
+</style>

+ 64 - 0
src/router/index.js

@@ -8,6 +8,11 @@ const live = [
     name: 'live',
     component: () => import('../views/index.vue'),
     children: [
+      {
+        path: '/login',
+        meta: { title: '登陆' },
+        component: () => import('../views/login.vue'),
+      },
       {
         path: '/live/detail',
         meta: { title: '信息详情', subSite: true },
@@ -20,6 +25,33 @@ const live = [
         meta: { title: '科技超市', subSite: true },
         component: () => import('../views/market/index.vue'),
       },
+      {
+        path: '/personnel/rencai',
+        name: 'personnel',
+        meta: { title: '专家详情', subSite: true },
+        component: () => import('../views/personnel/rencai.vue'),
+      },
+      {
+        path: '/personnel/list',
+        name: 'personnel',
+        meta: { title: '专家列表', subSite: true },
+        component: () => import('../views/personnel/list.vue'),
+      },
+
+      //科技超市列表
+      {
+        path: '/supermaket/supermarketlist',
+        name: 'supermarketuct',
+        component: () => import('../views/supermaket/supermarketlist.vue'),
+      },
+
+      //xiangqing
+      {
+        path: '/supermaket/supermarketdetail',
+        name: 'supermarketdetail',
+        component: () => import('../views/supermaket/supermarketdetail.vue'),
+      },
+
       {
         path: '/dynamic/index',
         name: 'dynamic_index',
@@ -82,6 +114,38 @@ const live = [
         name: 'live_apply',
         component: () => import('../views/hall/liveApply.vue'),
       },
+
+      //企业-发布信息列表
+      {
+        path: '/enterprise/enterprisefabu',
+        name: 'enterprisefabu',
+        component: () => import('../views/enterprise/enterprisefabu.vue'),
+      },
+      //企业-基本信息
+      {
+        path: '/enterprise/enterprisejb',
+        name: 'enterprisefabu',
+        component: () => import('../views/enterprise/enterprisejb.vue'),
+      },
+      //企业-信息管理
+      {
+        path: '/enterprise/enterprisexx',
+        name: 'enterprisexuqiu',
+        component: () => import('../views/enterprise/enterprisexx.vue'),
+      },
+
+      // 企业-需求发布
+      {
+        path: '/enterprise/enterprisexuqiu',
+        name: 'enterprisexuqiu',
+        component: () => import('../views/enterprise/enterprisexuqiu.vue'),
+      },
+      //企业-订购
+      {
+        path: '/enterprise/enterprisedg',
+        name: 'enterprisedg',
+        component: () => import('../views/enterprise/enterprisedg.vue'),
+      },
     ],
   },
   {

+ 4 - 0
src/store/index.js

@@ -14,6 +14,8 @@ import * as ustate from '@common/store/user/state';
 import * as umutations from '@common/store/user/mutations';
 import personalchat from '@common/store/live/personalchat';
 import personalroom from '@common/store/live/personalroom';
+import markettype from '@common/store/market/markettype';
+import enterpriseproject from '@common/store/market/enterpriseproject';
 Vue.use(Vuex);
 
 export default new Vuex.Store({
@@ -33,5 +35,7 @@ export default new Vuex.Store({
     personalchat,
     personalroom,
     transaction,
+    markettype,
+    enterpriseproject,
   },
 });

+ 117 - 0
src/views/enterprise/enterprisedg.vue

@@ -0,0 +1,117 @@
+<template>
+  <div id="adviserList">
+    <enterprisedg-detail
+      :liebiaoList="liebiaoList"
+      :dinggou1="dinggou1"
+      :dinggou2="dinggou2"
+      :dinggou3="dinggou3"
+      @onsave="onsaveClick"
+      :total1="total1"
+      :total2="total2"
+      :total3="total3"
+      @handleCurrentChange="change1"
+      @handleCurrentChange1="change2"
+      @handleCurrentChange2="change3"
+      @deletes="deleteData"
+    ></enterprisedg-detail>
+  </div>
+</template>
+
+<script>
+import enterprisedgDetail from '@/components/enterprise/enterpisedg.vue';
+import { createNamespacedHelpers, mapGetters } from 'vuex';
+
+const { mapActions: transaction } = createNamespacedHelpers('transaction');
+export default {
+  name: 'adviserList',
+  props: {},
+  components: {
+    enterprisedgDetail,
+  },
+  data: () => ({
+    liebiaoList: [{ name: '基本信息' }, { name: '消息管理' }, { name: '我的发布' }, { name: '我的订购' }, { name: '注销账号' }],
+    total1: 1,
+    total2: 1,
+    total3: 1,
+    dinggou1: [],
+    dinggou2: [],
+    dinggou3: [],
+    skip: '',
+  }),
+  created() {
+    this.jiaoyi1();
+    this.jiaoyi2();
+    this.jiaoyi3();
+  },
+  computed: {},
+  methods: {
+    ...transaction({ transactionList: 'query', transactiondtetle: 'delete' }),
+    // 查询
+    async jiaoyi1({ skip = 0, limit = 3, ...info } = {}) {
+      let status = 1;
+      skip = this.skip;
+      console.log();
+      const res = await this.transactionList({ skip, limit, status, ...info });
+      console.log(res);
+      if (this.$checkRes(res)) {
+        this.$set(this, `dinggou1`, res.data);
+        this.$set(this, `total1`, res.total);
+      }
+    },
+    async jiaoyi2({ skip = 0, limit = 3, ...info } = {}) {
+      let status = 2;
+      skip = this.skip;
+      console.log();
+      const res = await this.transactionList({ skip, limit, status, ...info });
+      console.log(res);
+      if (this.$checkRes(res)) {
+        this.$set(this, `dinggou2`, res.data);
+        this.$set(this, `total2`, res.total);
+      }
+    },
+    async jiaoyi3({ skip = 0, limit = 3, ...info } = {}) {
+      let status = 3;
+      skip = this.skip;
+      console.log();
+      const res = await this.transactionList({ skip, limit, status, ...info });
+      console.log(res);
+      if (this.$checkRes(res)) {
+        this.$set(this, `dinggou3`, res.data);
+        this.$set(this, `total3`, res.total);
+      }
+    },
+
+    async change1({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.jiaoyi1();
+    },
+    async change2({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.jiaoyi2();
+    },
+    async change3({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.jiaoyi3();
+    },
+
+    async deleteData({ item }) {
+      const res = await this.transactiondtetle(item.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+    },
+    async onsaveClick({ id }) {
+      console.log(id);
+      if (id === '基本信息') {
+        this.$router.push({ path: '/enterprise/enterprisejb' });
+      } else if (id === '消息管理') {
+        this.$router.push({ path: '/enterprise/enterprisexx' });
+      } else if (id === '我的发布') {
+        this.$router.push({ path: '/enterprise/enterprisefabu' });
+      } else if (id === '我的订购') {
+        this.$router.push({ path: '/enterprise/enterprisedg' });
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 242 - 0
src/views/enterprise/enterprisefabu.vue

@@ -0,0 +1,242 @@
+<template>
+  <div id="adviserList">
+    <enterprisefabu-detail
+      :liebiaoList="liebiaoList"
+      :recruitData="recruitData"
+      @delete="deleteData"
+      @onsave="onsaveClick"
+      :successlist="successlist"
+      :shenheList="shenheList"
+      :Transactionlist="Transactionlist"
+      :total="total"
+      :total4="total4"
+      :total5="total5"
+      :total6="total6"
+      :tatalstatus1="tatalstatus1"
+      :tatalstatus2="tatalstatus2"
+      @handleCurrentChange="handleCurrentChange"
+      @handleCurrentChange1="handleCurrentChange1"
+      @handleCurrentChange2="handleCurrentChange2"
+      :jiaoyilist="jiaoyilist"
+      :jiaoyilist1="jiaoyilist1"
+      @deteles="deteles"
+      @handleDelete="handleDelete"
+      @shibai="shibai"
+      @success="success"
+      @jiaoyisuccess="jiaoyisuccess"
+      :faqilist="faqilist"
+      :totalfaqi="totalfaqi"
+      @handleCurrentChangefaqi="handleCurrentChangefaqi"
+      @handleCurrentChange4="handleCurrentChange4"
+      @handleCurrentChange5="handleCurrentChange5"
+      @handleCurrentChange6="handleCurrentChange6"
+    ></enterprisefabu-detail>
+  </div>
+</template>
+
+<script>
+import enterprisefabuDetail from '@/components/enterprise/enterprisefabu.vue';
+import { createNamespacedHelpers, mapGetters, mapState } from 'vuex';
+const { mapActions: mapSite } = createNamespacedHelpers('site');
+const { mapActions: mapRecruit } = createNamespacedHelpers('market');
+const { mapActions: marketproduct } = createNamespacedHelpers('marketproduct');
+const { mapActions: transaction } = createNamespacedHelpers('transaction');
+
+export default {
+  name: 'adviserList',
+  props: {},
+  components: {
+    enterprisefabuDetail,
+  },
+  data: () => ({
+    shenheList: [],
+    successlist: [],
+    info: {},
+    liebiaoList: [{ name: '基本信息' }, { name: '消息管理' }, { name: '我的发布' }, { name: '我的订购' }, { name: '注销账号' }],
+    recruitData: [],
+    gonggeiData: [],
+    Transactionlist: [],
+    jiaoyilist: [],
+    jiaoyilist1: [],
+    total: 1,
+    total4: 1,
+    total5: 1,
+    total6: 1,
+    tatalstatus1: 1,
+    tatalstatus2: 1,
+    skip: '',
+    faqilist: [],
+    totalfaqi: 1,
+  }),
+  created() {
+    this.searchInfo();
+    this.searchstatus1();
+    this.searchstaus2();
+    this.jiaoyi1();
+    this.jiaoyi2();
+    this.jiaoyi3();
+    this.faqijiaoyi();
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  methods: {
+    ...mapRecruit({ columnList: 'query', columnInfo: 'fetch' }),
+    ...marketproduct({ productList: 'query', columnInfo: 'fetch', marketcerate: 'create', productdeltet: 'delete' }),
+    ...transaction({ list: 'query', columnInfo: 'fetch', marketcerate: 'create', delete: 'delete', shenheupdate: 'update' }),
+
+    // 查询列表
+    async searchInfo({ skip = 0, limit = 3, ...info } = {}) {
+      skip = this.skip;
+      let status = 1;
+      let userid = this.user.uid;
+      const res = await this.productList({ skip, limit, status, userid, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `recruitData`, res.data);
+        this.$set(this, `total`, res.total);
+      }
+    },
+    async searchstatus1({ skip, limit = 3, ...info } = {}) {
+      let status = 0;
+      skip = this.skip;
+      let userid = this.user.uid;
+      const res = await this.productList({ skip, limit, status, userid, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `shenheList`, res.data);
+        this.$set(this, `tatalstatus1`, res.total);
+      }
+    },
+    async searchstaus2({ skip = 0, limit = 3, ...info } = {}) {
+      let status = 2;
+      skip = this.skip;
+      let userid = this.user.uid;
+      console.log();
+      const res = await this.productList({ skip, limit, status, userid, ...info });
+      console.log(res);
+      if (this.$checkRes(res)) {
+        this.$set(this, `successlist`, res.data);
+        this.$set(this, `tatalstatus2`, res.total);
+      }
+    },
+    async faqijiaoyi({ skip = 0, limit = 3, ...info } = {}) {
+      let status = 0;
+      skip = this.skip;
+      const res = await this.list({ skip, limit, status, ...info });
+      console.log(res.total);
+      if (this.$checkRes(res)) {
+        this.$set(this, `faqilist`, res.data);
+        this.$set(this, `totalfaqi`, res.total);
+      }
+    },
+    async jiaoyi1({ skip = 0, limit = 3, ...info } = {}) {
+      let status = 1;
+      skip = this.skip;
+      console.log();
+      const res = await this.list({ skip, limit, status, ...info });
+      console.log(res);
+      if (this.$checkRes(res)) {
+        this.$set(this, `Transactionlist`, res.data);
+        this.$set(this, `total4`, res.total);
+      }
+    },
+    async jiaoyi2({ skip = 0, limit = 3, ...info } = {}) {
+      let status = 2;
+      skip = this.skip;
+      console.log();
+      const res = await this.list({ skip, limit, status, ...info });
+      console.log(res);
+      if (this.$checkRes(res)) {
+        this.$set(this, `jiaoyilist1`, res.data);
+        this.$set(this, `total5`, res.total);
+      }
+    },
+    async jiaoyi3({ skip = 0, limit = 3, ...info } = {}) {
+      let status = 3;
+      skip = this.skip;
+      console.log();
+      const res = await this.list({ skip, limit, status, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `jiaoyilist`, res.data);
+        this.$set(this, `total6`, res.total);
+      }
+    },
+    //分页
+    async handleCurrentChangefaqi({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.faqijiaoyi();
+    },
+
+    async handleCurrentChange({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.searchInfo();
+    },
+    async handleCurrentChange1({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      console.log(skip);
+      this.searchstatus1();
+    },
+    async handleCurrentChange2({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.searchstaus2();
+    },
+    async handleCurrentChange4({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.jiaoyi1();
+    },
+    async handleCurrentChange5({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.jiaoyi2();
+    },
+    async handleCurrentChange6({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.jiaoyi3();
+    },
+    // 删除信息
+    async deleteData({ item }) {
+      const res = await this.productdeltet(item.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+    },
+    async deteles({ item }) {
+      const res = await this.delete(item.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+    },
+
+    async handleDelete({ item }) {
+      const res = await this.productdeltet(item.id);
+      this.$checkRes(res, '删除成功', '删除失败');
+    },
+    //审核
+    async jiaoyisuccess({ item }) {
+      item.status = '1';
+      let res = await this.shenheupdate(item);
+      this.faqijiaoyi();
+      this.$checkRes(res, '同意成功', '审核失败');
+    },
+    async shibai({ item }) {
+      item.status = '3';
+      let res = await this.shenheupdate(item);
+      this.$checkRes(res, '审核成功', '审核失败');
+      this.jiaoyi3();
+    },
+    async success({ item }) {
+      item.status = '2';
+      let res = await this.shenheupdate(item);
+      this.$checkRes(res, '审核成功', '审核失败');
+      this.jiaoyi2();
+    },
+    async onsaveClick({ id }) {
+      if (id === '基本信息') {
+        this.$router.push({ path: '/enterprise/enterprisejb' });
+      } else if (id === '消息管理') {
+        this.$router.push({ path: '/enterprise/enterprisexx' });
+      } else if (id === '我的发布') {
+        this.$router.push({ path: '/enterprise/enterprisefabu' });
+      } else if (id === '我的订购') {
+        this.$router.push({ path: '/enterprise/enterprisedg' });
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 54 - 0
src/views/enterprise/enterprisejb.vue

@@ -0,0 +1,54 @@
+<template>
+  <div id="adviserList">
+    <enterprisejb-detail :info="info" :liebiaoList="liebiaoList" @onsave="onsaveClick" :userinfo="userinfo"></enterprisejb-detail>
+  </div>
+</template>
+
+<script>
+import enterprisejbDetail from '@/components/enterprise/enterprisejb.vue';
+import { createNamespacedHelpers, mapGetters, mapState } from 'vuex';
+
+const { mapActions: market } = createNamespacedHelpers('market');
+export default {
+  name: 'adviserList',
+  props: {},
+  components: {
+    enterprisejbDetail,
+  },
+  data: () => ({
+    info: {},
+    liebiaoList: [{ name: '基本信息' }, { name: '消息管理' }, { name: '我的发布' }, { name: '我的订购' }, { name: '注销账号' }],
+    userinfo: {},
+  }),
+  created() {
+    this.searchInfo();
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  methods: {
+    ...market(['fetch']),
+    // 查询基本信息
+    async searchInfo() {
+      let res = await this.fetch(this.user.userid);
+      if (res.errcode === 0) {
+        this.$set(this, `userinfo`, res.data);
+      }
+    },
+    async onsaveClick({ id }) {
+      console.log(id);
+      if (id === '基本信息') {
+        this.$router.push({ path: '/enterprise/enterprisejb' });
+      } else if (id === '消息管理') {
+        this.$router.push({ path: '/enterprise/enterprisexx' });
+      } else if (id === '我的发布') {
+        this.$router.push({ path: '/enterprise/enterprisefabu' });
+      } else if (id === '我的订购') {
+        this.$router.push({ path: '/enterprise/enterprisedg' });
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 108 - 0
src/views/enterprise/enterprisexuqiu.vue

@@ -0,0 +1,108 @@
+<template>
+  <div id="adviserList">
+    <enterprisexuqiu-detail
+      :info="info"
+      :liebiaoList="liebiaoList"
+      @onsave="onsaveClick"
+      :demandForm="demandForm"
+      @demandSubmit="demandSubmit"
+      :columnList="columnList"
+      @changeType="changeType"
+      :totaltype="totaltype"
+    ></enterprisexuqiu-detail>
+  </div>
+</template>
+
+<script>
+import enterprisexuqiuDetail from '@/components/enterprise/enterprisexuqiu.vue';
+import { createNamespacedHelpers, mapGetters, mapState } from 'vuex';
+const { mapActions: mapMarkettype } = createNamespacedHelpers('markettype');
+const { mapActions: mapMarketproduct } = createNamespacedHelpers('marketproduct');
+
+export default {
+  name: 'adviserList',
+  props: {},
+  components: {
+    enterprisexuqiuDetail,
+  },
+  data: () => ({
+    info: {},
+    liebiaoList: [{ name: '基本信息' }, { name: '消息管理' }, { name: '我的发布' }, { name: '我的订购' }, { name: '注销账号' }],
+    demandForm: {
+      image: {},
+      product_args: [],
+    },
+    columnList: [],
+    totaltype: 0,
+  }),
+  created() {
+    this.maarkettype();
+    this.searchInfo();
+  },
+  computed: {
+    ...mapState(['user']),
+
+    id() {
+      return this.$route.query.id;
+    },
+    keyWord() {
+      let meta = this.$route.meta;
+      let main = meta.title || '';
+      return main;
+    },
+  },
+  methods: {
+    ...mapMarkettype({ markettypeList: 'query' }),
+    ...mapMarketproduct({ productFetch: 'fetch', productCreate: 'create', productUpdate: 'update' }),
+
+    async searchInfo() {
+      if (this.$route.query.id) {
+        const res = await this.productFetch(this.id);
+        this.$set(this, `demandForm`, res.data);
+      }
+    },
+    async demandSubmit(demandForm) {
+      let data = this.demandForm;
+      console.log(data);
+      data.userid = this.user.uid;
+      console.log(data.userid);
+
+      let res;
+      let msg;
+      if (data.id) {
+        res = await this.productUpdate(data);
+        msg = `${this.keyWord}修改成功`;
+      } else {
+        res = await this.productCreate(data);
+        msg = `${this.keyWord}添加成功`;
+      }
+      if (this.$checkRes(res, msg)) this.$router.push({ path: '/enterprise/enterprisefabu' });
+    },
+    // 查询类型
+    async maarkettype({ category = 123, ...info } = {}) {
+      const res = await this.markettypeList({ category, ...info });
+      if (this.$checkRes(res)) {
+        this.$set(this, `columnList`, res.data);
+      }
+    },
+    // 栏目跳转
+    async onsaveClick({ id }) {
+      if (id === '基本信息') {
+        this.$router.push({ path: '/enterprise/enterprisejb' });
+      } else if (id === '消息管理') {
+        this.$router.push({ path: '/enterprise/enterprisexx' });
+      } else if (id === '我的发布') {
+        this.$router.push({ path: '/enterprise/enterprisefabu' });
+      } else if (id === '我的订购') {
+        this.$router.push({ path: '/enterprise/enterprisedg' });
+      }
+    },
+    changeType(item) {
+      console.log(item);
+      this.$set(this, `totaltype`, item);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 40 - 0
src/views/enterprise/enterprisexx.vue

@@ -0,0 +1,40 @@
+<template>
+  <div id="adviserList">
+    <enterprisexx-detail :liebiaoList="liebiaoList" @onsave="onsaveClick"></enterprisexx-detail>
+  </div>
+</template>
+
+<script>
+import enterprisexxDetail from '@/components/enterprise/enterprisexx.vue';
+import { createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapSite } = createNamespacedHelpers('site');
+export default {
+  name: 'adviserList',
+  props: {},
+  components: {
+    enterprisexxDetail,
+  },
+  data: () => ({
+    info: {},
+    liebiaoList: [{ name: '基本信息' }, { name: '消息管理' }, { name: '我的发布' }, { name: '我的订购' }, { name: '注销账号' }],
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    async onsaveClick({ id }) {
+      console.log(id);
+      if (id === '基本信息') {
+        this.$router.push({ path: '/enterprise/enterprisejb' });
+      } else if (id === '消息管理') {
+        this.$router.push({ path: '/enterprise/enterprisexx' });
+      } else if (id === '我的发布') {
+        this.$router.push({ path: '/enterprise/enterprisefabu' });
+      } else if (id === '我的订购') {
+        this.$router.push({ path: '/enterprise/enterprisedg' });
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 58 - 0
src/views/login.vue

@@ -0,0 +1,58 @@
+<template>
+  <div id="login">
+    <login-detail :info="info" :form="form" @submitDate="submitLogin" :forms="forms" @submitDates="submitRegister"></login-detail>
+  </div>
+</template>
+
+<script>
+import loginDetail from '@/layout/login.vue';
+import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+const { mapActions: mapMarket } = createNamespacedHelpers('market');
+const { mapActions: login } = createNamespacedHelpers('login');
+export default {
+  name: 'login',
+  props: {},
+  components: { loginDetail },
+  data: () => {
+    return {
+      info: {},
+      form: {},
+      forms: {},
+    };
+  },
+  created() {},
+  methods: {
+    // ...mapSite(['showInfo', 'toGetUser']),
+    ...mapMarket({ userFetch: 'fetch', userCreate: 'create', userUpdate: 'update' }),
+    ...login({ toLogin: 'login' }),
+    async submitLogin(form) {
+      const res = await this.toLogin({ user: form });
+      console.log(res);
+      if (res.uid) {
+        if (res.role == 1 || res.role == 4) window.location.href = 'http://free.liaoningdoupo.com/platadmin';
+        // else window.location.href = 'http://free.liaoningdoupo.com/platlive/home.html';
+      }
+    },
+    async submitRegister(forms) {
+      let data = this.forms;
+      let res = await this.userCreate(data);
+      let msg = `注册成功`;
+      this.$checkRes(res, msg);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+    redirect_uri() {
+      return `${this.$route.query.redirect_uri}`;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 117 - 85
src/views/market/index.vue

@@ -2,7 +2,7 @@
   <div id="index">
     <el-col :span="24" class="main">
       <el-col :span="24" class="marketTop">
-        <el-col :span="12" class="left">
+        <!-- <el-col :span="12" class="left">
           <el-col :span="1" class="leftTitle">
             <p>科<br />技<br />产<br />品</p>
             <p></p>
@@ -14,8 +14,8 @@
             </el-col>
           </el-col>
           <el-col :span="24" class="leftListDown"><span></span><span @click="toProductList">MORE</span></el-col>
-        </el-col>
-        <el-col :span="12" class="right">
+        </el-col> -->
+        <!-- <el-col :span="12" class="right">
           <el-col :span="24" class="rightListTop"><span @click="toTecList">MORE</span><span></span></el-col>
           <el-col :span="23" class="infoRight">
             <el-col :span="24" class="tecList" v-for="(item, index) in tecList" :key="index">
@@ -29,6 +29,42 @@
             <p></p>
             <p>技<br />术<br />供<br />求</p>
           </el-col>
+        </el-col> -->
+        <el-col :span="12" class="left">
+          <el-col :span="24" class="downLeftTop">
+            <el-image :src="downLeftTopImage"></el-image>
+            <span class="topText">
+              <span>科技产品</span>
+              <span
+                ><p>P</p>
+                <p>roduct</p></span
+              >
+              <span @click="toProductList">更多</span>
+            </span>
+          </el-col>
+          <el-col :span="12" class="productList" v-for="(item, index) in productList" :key="index" @click.native="productDetail(item.id)">
+            <el-image :src="item.image[0].url"></el-image>
+            <p class="textOver">{{ item.name }}</p>
+          </el-col>
+        </el-col>
+        <el-col :span="12" class="right">
+          <el-col :span="24" class="downLeftTop">
+            <el-image :src="downLeftTopImage"></el-image>
+            <span class="topText">
+              <span>技术供求</span>
+              <span
+                ><p>T</p>
+                <p>echnology</p></span
+              >
+              <span @click="toTecList">更多</span>
+            </span>
+          </el-col>
+          <el-col :span="24" class="tecList" v-for="(item, index) in tecList" :key="index">
+            <span></span>
+            <span class="textOver" @click="tecDetail(item.id)">{{ item.name }}</span>
+            <span>对接</span>
+            <span>{{ item.meta | getDate }}</span>
+          </el-col>
         </el-col>
         <el-col :span="24">
           <el-image :src="gongqiuImage" class="gongqiuImage"></el-image>
@@ -64,21 +100,25 @@
             <el-col :span="24" class="downLeftTop">
               <el-image :src="downLeftTopImage"></el-image>
               <span class="topText">
-                <span>金融供求</span>
+                <span>专家供求</span>
                 <span
-                  ><p>B</p>
-                  <p>anking</p></span
+                  ><p>E</p>
+                  <p>xpert</p></span
                 >
                 <span>更多</span>
               </span>
             </el-col>
-            <el-col :span="24" class="downRightImage">
-              <el-image :src="serviceImage"></el-image>
-            </el-col>
             <el-col :span="24">
-              <el-col :span="24" class="downRightList" v-for="(item, index) in bankingList" :key="index">
-                <span></span>
-                <span>{{ item.title }}</span>
+              <el-col :span="24" class="downRightList" v-for="(item, index) in expertsList" :key="index">
+                <el-col :span="10"><el-image :src="item.imgpath"></el-image></el-col>
+                <el-col :span="14"
+                  ><p>{{ item.name }}</p>
+                  <p>从事领域:</p>
+                  <p>{{ item.field }}</p></el-col
+                >
+                <el-col :span="24"
+                  ><p>{{ item.job_profile }}</p></el-col
+                >
               </el-col>
             </el-col>
           </el-col>
@@ -108,6 +148,7 @@
           </el-col>
         </el-col>
       </el-col>
+      <el-col :span="24" class="marketPublish">我要发布</el-col>
     </el-col>
   </div>
 </template>
@@ -125,39 +166,9 @@ export default {
   data: () => ({
     gongqiuImage: require('@/assets/live/main2.png'),
     downLeftTopImage: require('@/assets/live/square_big.png'),
-    serviceImage: require('@/assets/live/service_picture_one.jpg'),
     productList: [],
     tecList: [],
-    bankingList: [
-      {
-        image:
-          'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1588061253920&di=18e7a68061c9debd24a2db64967b891c&imgtype=0&src=http%3A%2F%2Fbpic.588ku.com%2Fback_pic%2F03%2F51%2F81%2F1257923ada49020.jpg',
-        title: '测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据',
-        content:
-          '测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据',
-      },
-      {
-        image:
-          'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1588061253920&di=18e7a68061c9debd24a2db64967b891c&imgtype=0&src=http%3A%2F%2Fbpic.588ku.com%2Fback_pic%2F03%2F51%2F81%2F1257923ada49020.jpg',
-        title: '测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据',
-        content:
-          '测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据',
-      },
-      {
-        image:
-          'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1588061253920&di=18e7a68061c9debd24a2db64967b891c&imgtype=0&src=http%3A%2F%2Fbpic.588ku.com%2Fback_pic%2F03%2F51%2F81%2F1257923ada49020.jpg',
-        title: '测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据',
-        content:
-          '测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据',
-      },
-      {
-        image:
-          'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1588061253920&di=18e7a68061c9debd24a2db64967b891c&imgtype=0&src=http%3A%2F%2Fbpic.588ku.com%2Fback_pic%2F03%2F51%2F81%2F1257923ada49020.jpg',
-        title: '测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据',
-        content:
-          '测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据测试型数据测试型数测试型数测试型数据',
-      },
-    ],
+    expertsList: [],
     serviceList: [],
     newList: [],
   }),
@@ -194,37 +205,30 @@ export default {
       if (this.$checkRes(res)) this.$set(this, `newList`, res.data);
       res = await this.query({ skip: 0, limit: 4, totaltype: '2' });
       if (this.$checkRes(res)) this.$set(this, `serviceList`, res.data);
-      // res = await this.expertQuery({ skip: 0, limit: 4 });
-      // if (this.$checkRes(res)) this.$set(this, `expertsList`, res.data);
+      res = await this.expertQuery({ skip: 0, limit: 4 });
+      if (this.$checkRes(res)) this.$set(this, `expertsList`, res.data);
+      console.log(res.data);
     },
     toProductList() {
-      // window.location.href = 'http://free.liaoningdoupo.com/platweb/supermaket/supermarketlist?totaltype=1';
-      window.open('http://free.liaoningdoupo.com/platweb/supermaket/supermarketlist?totaltype=1');
+      this.$router.push({ path: '/supermaket/supermarketlist', query: { totaltype: 1 } });
     },
     productDetail(id) {
-      // window.location.href = 'http://free.liaoningdoupo.com/platweb/supermaket/supermarketdetail?totaltype=2&&?&id=' + id + '';
-      window.open('http://free.liaoningdoupo.com/platweb/supermaket/supermarketdetail?totaltype=2&&?&id=' + id + '');
+      this.$router.push({ path: '/supermaket/supermarketdetail', query: { totaltype: 2, id: id } });
     },
     toTecList() {
-      // window.location.href = 'http://free.liaoningdoupo.com/platweb/supermaket/supermarketlist?totaltype=0';
-      window.open('http://free.liaoningdoupo.com/platweb/supermaket/supermarketlist?totaltype=0');
+      this.$router.push({ path: '/supermaket/supermarketlist', query: { totaltype: 0 } });
     },
     tecDetail(id) {
-      // window.location.href = 'http://free.liaoningdoupo.com/platweb/supermaket/supermarketdetail?totaltype=0&&?&id=' + id + '';
-      window.open('//free.liaoningdoupo.com/platweb/supermaket/supermarketdetail?totaltype=0&&?&id=' + id + '');
+      this.$router.push({ path: '/supermaket/supermarketdetail', query: { totaltype: 0, id: id } });
     },
     toServiceList() {
-      // window.location.href = 'http://free.liaoningdoupo.com/platweb/supermaket/supermarketlist?totaltype=2';
-      window.open('http://free.liaoningdoupo.com/platweb/supermaket/supermarketlist?totaltype=2');
+      this.$router.push({ path: '/supermaket/supermarketlist', query: { totaltype: 2 } });
     },
     serviceDetail(id) {
-      // window.location.href = 'http://free.liaoningdoupo.com/platweb/supermaket/supermarketdetail?totaltype=2&&?&id=' + id + '';
-      window.open('http://free.liaoningdoupo.com/platweb/supermaket/supermarketdetail?totaltype=2&&?&id=' + id + '');
+      this.$router.push({ path: '/supermaket/supermarketdetail', query: { totaltype: 2, id: id } });
     },
-
     fabu() {
-      // window.location.href = 'http://free.liaoningdoupo.com/platweb/enterprise/enterprisexuqiu';
-      window.open('http://free.liaoningdoupo.com/platweb/enterprise/enterprisexuqiu');
+      this.$router.push({ path: '/enterprise/enterprisexuqiu' });
     },
   },
 };
@@ -250,6 +254,9 @@ export default {
   height: 500px;
   margin: 10px 0 20px 0;
   overflow: hidden;
+  // box-shadow: 2px 2px 2px #888888;
+  border-right: 1px dashed #044b79;
+  width: 49.5%;
 }
 .leftTitle {
   text-align: center;
@@ -278,6 +285,7 @@ export default {
   margin: 0 10px 10px 0;
   width: 48%;
   height: 220px;
+  cursor: pointer;
 }
 .productList:nth-child(2n) {
   margin: 0 0 10px 0;
@@ -325,6 +333,7 @@ export default {
   height: 500px;
   overflow: hidden;
   margin: 10px 0 20px 0;
+  width: 49.5%;
 }
 .rightListTop {
   position: relative;
@@ -367,6 +376,7 @@ export default {
   width: 80%;
   font-size: 18px;
   padding: 0 15px;
+  cursor: pointer;
 }
 .tecList span:nth-child(3n) {
   display: inline-block;
@@ -376,6 +386,7 @@ export default {
   color: #ffffff;
   font-size: 16px;
   padding: 3px 0px;
+  cursor: pointer;
 }
 .tecList span:last-child {
   display: block;
@@ -498,6 +509,7 @@ export default {
 }
 .bankingLists {
   height: 152px;
+  cursor: pointer;
 }
 .bankingLists .el-image {
   width: 100%;
@@ -530,6 +542,7 @@ export default {
 
 .bankingList {
   height: 152px;
+  cursor: pointer;
 }
 .bankingList .el-image {
   width: 100%;
@@ -559,39 +572,38 @@ export default {
   line-height: 25px;
   font-weight: 400;
 }
-
-.downRightImage {
-  float: none;
-  width: 85%;
-  margin: 0 auto;
-}
-.downRightImage .el-image {
+.downRightList {
+  width: 49%;
+  margin: 10px 0;
   height: 200px;
+  font-size: 16px;
+  display: inline-block;
+  cursor: pointer;
+}
+.downRightList .el-image {
   width: 100%;
+  height: 100px;
+  border-radius: 100%;
 }
-.downRightList {
-  float: none;
-  width: 85%;
-  margin: 10px auto;
-  height: 50px;
-  font-size: 16px;
-  line-height: 35px;
+.downRightList p {
+  padding-left: 10px;
 }
-.downRightList span:first-child {
-  display: inline-block;
-  width: 10px;
-  height: 10px;
-  background: #2188c6;
-  border-radius: 90px;
-  margin: 10px;
+.downRightList p:first-child {
+  font-size: 20px;
+  height: 40px;
 }
-.downRightList span:last-child {
-  width: 80%;
+.downRightList p:last-child {
+  width: 90%;
+  font-size: 16px;
   overflow: hidden;
-  white-space: nowrap;
   text-overflow: ellipsis;
-  display: inline-block;
+  -webkit-line-clamp: 5;
+  word-break: break-all;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  height: auto;
 }
+
 .marketNew {
   float: none;
   width: 80%;
@@ -601,4 +613,24 @@ export default {
 .downLeftInfos {
   height: 330px;
 }
+.marketPublish {
+  position: fixed;
+  background: #0279d5;
+  width: 100px;
+  height: 100px;
+  z-index: 999;
+  left: 2%;
+  top: 80%;
+  border-radius: 20px;
+  box-shadow: 2px 2px 2px #055c9f;
+  text-align: center;
+  line-height: 100px;
+  font-size: 20px;
+  color: #fff;
+  font-weight: bold;
+}
+.marketPublish:hover {
+  background: #f60;
+  cursor: pointer;
+}
 </style>

+ 69 - 0
src/views/personnel/list.vue

@@ -0,0 +1,69 @@
+<template>
+  <div id="policy">
+    <rencailist-detail
+      @handleCurrentChange="handleCurrentChange"
+      :contentList="contentList"
+      :total="total"
+      :columnName="columnName"
+      @fetch="fetchInfo"
+      :display="display"
+      :policyInfo="policyInfo"
+    ></rencailist-detail>
+  </div>
+</template>
+
+<script>
+import rencailistDetail from '@/components/personnel/rencailistDetail.vue';
+import { createNamespacedHelpers, mapGetters, mapState } from 'vuex';
+import _ from 'loadsh';
+const { mapActions: talentExperts } = createNamespacedHelpers('talentExperts');
+
+export default {
+  name: 'policy',
+  props: {},
+  components: {
+    rencailistDetail,
+  },
+  data: () => ({
+    policyInfo: {},
+    display: 'list',
+    columnName: '',
+    contentList: [],
+    total: 1,
+    skip: '',
+    tableData: {},
+  }),
+  async created() {
+    this.search();
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  methods: {
+    ...talentExperts({ list: 'query', fetch: 'fetch' }),
+
+    async search({ skip = 0, limit = 10 } = {}) {
+      skip = this.skip;
+      const res = await this.list({ skip, limit });
+      console.log(res.data);
+      console.log(res.data);
+      for (const val of res.data) {
+        if (val.totaltype == 0) {
+        }
+      }
+      this.$set(this, `contentList`, res.data);
+      this.$set(this, `total`, res.total);
+    },
+
+    async fetchInfo(id) {
+      this.$router.push({ path: '/personnel/rencai', query: { id: id } });
+    },
+    async handleCurrentChange({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.search();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 44 - 0
src/views/personnel/rencai.vue

@@ -0,0 +1,44 @@
+<template>
+  <div id="personnel">
+    <rencai-detail :policyInfo="policyInfo"></rencai-detail>
+  </div>
+</template>
+
+<script>
+import rencaiDetail from '@/components/personnel/rencai.vue';
+import { createNamespacedHelpers, mapGetters } from 'vuex';
+
+const { mapActions: talentExperts } = createNamespacedHelpers('talentExperts');
+
+export default {
+  name: 'personnel',
+  props: {},
+  components: {
+    rencaiDetail,
+  },
+  data: () => ({
+    policyInfo: {},
+    info: {},
+  }),
+  async created() {
+    this.searchInfo();
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  methods: {
+    ...talentExperts({ newsList: 'query', newsInfo: 'fetch' }),
+
+    async searchInfo() {
+      let detailId = this.$route.query.id;
+      const res = await this.newsInfo(detailId);
+      this.$set(this, `policyInfo`, res.data);
+      console.log(res.data);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 92 - 0
src/views/supermaket/supermarketdetail.vue

@@ -0,0 +1,92 @@
+<template>
+  <div id="policy">
+    <supermarketlist-detail
+      @handleCurrentChange="handleCurrentChange"
+      :contentList="contentList"
+      :total="total"
+      :columnName="columnName"
+      @fetch="fetchInfo"
+      :display="display"
+      :policyInfo="policyInfo"
+      @onSubmit="onSubmit"
+    ></supermarketlist-detail>
+  </div>
+</template>
+
+<script>
+import supermarketlistDetail from '@/components/supermaket/supermarketlistDetail.vue';
+import { createNamespacedHelpers, mapGetters, mapState } from 'vuex';
+import _ from 'loadsh';
+
+const { mapActions: mapEnterpriseproject } = createNamespacedHelpers('enterpriseproject');
+const { mapActions: transaction } = createNamespacedHelpers('transaction');
+const { mapActions: tranaudit } = createNamespacedHelpers('tranaudit');
+
+export default {
+  name: 'policy',
+  props: {},
+  components: {
+    supermarketlistDetail,
+  },
+  data: () => ({
+    policyInfo: {},
+    display: 'detail',
+    columnName: '',
+    contentList: [],
+    total: 1,
+    skip: '',
+  }),
+  async created() {
+    this.searchinfos();
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+    ...mapState(['user']),
+    totaltype() {
+      return this.$route.query.totaltype;
+    },
+  },
+  methods: {
+    ...mapEnterpriseproject({ list: 'query', fetch: 'fetch' }),
+    ...transaction({ transactioncreate: 'create', transactionfetch: 'fetch' }),
+    ...tranaudit({ tranauditcreate: 'create' }),
+    fetchInfo() {},
+    async searchinfos() {
+      console.log(this.id);
+
+      this.display = 'detail';
+      const res = await this.fetch(this.id);
+      this.$set(this, `policyInfo`, res.data);
+    },
+    async handleCurrentChange({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.search();
+    },
+    async onSubmit() {
+      console.log(this.user.uid);
+      let form = {};
+      form.userid = this.user.uid;
+      form.username = this.user.name;
+      form.product_id = this.policyInfo.id;
+      form.product_name = this.policyInfo.name;
+      form.market_userid = this.policyInfo.userid;
+      form.market_username = this.policyInfo.contact_user;
+      form.status = '0';
+      console.log(form);
+      let res = await this.transactioncreate(form);
+      this.$checkRes(res, '发起交易成功', '交易失败');
+      let shenhe = {};
+      shenhe.result = '0';
+      shenhe.transaction_id = res.data.id;
+      shenhe.userid = this.policyInfo.userid;
+      shenhe.product_id = this.policyInfo.userid;
+      console.log(shenhe);
+      let ress = await this.tranauditcreate(shenhe);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 108 - 0
src/views/supermaket/supermarketlist.vue

@@ -0,0 +1,108 @@
+<template>
+  <div id="policy">
+    <supermarketlist-detail
+      @handleCurrentChange="handleCurrentChange"
+      :contentList="contentList"
+      :total="total"
+      :columnName="columnName"
+      @fetch="fetchInfo"
+      :display="display"
+      :policyInfo="policyInfo"
+      @onSubmit="onSubmit"
+    ></supermarketlist-detail>
+  </div>
+</template>
+
+<script>
+import supermarketlistDetail from '@/components/supermaket/supermarketlistDetail.vue';
+import { createNamespacedHelpers, mapGetters, mapState } from 'vuex';
+import _ from 'loadsh';
+const { mapActions: mapSite } = createNamespacedHelpers('site');
+const { mapActions: mapEnterpriseproject } = createNamespacedHelpers('enterpriseproject');
+const { mapActions: transaction } = createNamespacedHelpers('transaction');
+const { mapActions: tranaudit } = createNamespacedHelpers('tranaudit');
+
+export default {
+  name: 'policy',
+  props: {},
+  components: {
+    supermarketlistDetail,
+  },
+  data: () => ({
+    policyInfo: {},
+    display: 'list',
+    columnName: '',
+    contentList: [],
+    total: 1,
+    skip: '',
+    tableData: {},
+  }),
+  async created() {
+    this.search();
+  },
+  computed: {
+    ...mapState(['user']),
+    totaltype() {
+      return this.$route.query.totaltype;
+    },
+  },
+  methods: {
+    ...mapEnterpriseproject({ list: 'query', fetch: 'fetch' }),
+    ...transaction({ transactioncreate: 'create', transactionfetch: 'fetch' }),
+    ...transaction({ transactioncreate: 'create', transactionfetch: 'fetch' }),
+    ...tranaudit({ tranauditcreate: 'create' }),
+
+    async search({ skip = 0, limit = 10 } = {}) {
+      let totaltype = this.totaltype;
+      skip = this.skip;
+      const res = await this.list({ skip, limit, totaltype });
+      console.log(res.data);
+      console.log(res.data);
+      for (const val of res.data) {
+        if (val.totaltype == 0) {
+          this.$set(this, `columnName`, '技术供求');
+        } else if (val.totaltype == 1) {
+          this.$set(this, `columnName`, '产品供求');
+        } else if (val.totaltype == 2) {
+          this.$set(this, `columnName`, '服务供求');
+        }
+      }
+      this.$set(this, `contentList`, res.data);
+      this.$set(this, `total`, res.total);
+    },
+
+    async fetchInfo(id) {
+      this.display = 'detail';
+      const res = await this.fetch(id);
+      this.$set(this, `policyInfo`, res.data);
+    },
+    async handleCurrentChange({ skip, limit, currentPage }) {
+      this.$set(this, `skip`, skip);
+      this.search();
+    },
+    async onSubmit() {
+      console.log(this.user.uid);
+      let form = {};
+      form.userid = this.user.uid;
+      form.username = this.user.name;
+      form.product_id = this.policyInfo.id;
+      form.product_name = this.policyInfo.name;
+      form.market_userid = this.policyInfo.userid;
+      form.market_username = this.policyInfo.contact_user;
+      form.status = '0';
+      console.log(form);
+      let res = await this.transactioncreate(form);
+      this.$checkRes(res, '发起交易成功', '交易失败');
+      let shenhe = {};
+      shenhe.result = '0';
+      shenhe.transaction_id = res.data.id;
+      shenhe.userid = this.policyInfo.userid;
+      shenhe.product_id = this.policyInfo.userid;
+      console.log(shenhe);
+      let ress = await this.tranauditcreate(shenhe);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped></style>

+ 144 - 11
src/views/technical/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="technical">
     <el-col :span="24" class="main">
-      <el-col :span="12" class="left">
+      <!-- <el-col :span="12" class="left">
         <el-col :span="1" class="leftTitle">
           <p>专<br />题<br />研<br />讨</p>
           <p></p>
@@ -31,11 +31,97 @@
           <p></p>
           <p>技<br />术<br />问<br />答</p>
         </el-col>
+      </el-col> -->
+      <el-col :span="12" class="left">
+        <el-col :span="24" class="downLeftTop">
+          <el-image :src="downLeftTopImage"></el-image>
+          <span class="topText">
+            <span>专题研讨</span>
+            <span
+              ><p>S</p>
+              <p>eminar</p></span
+            >
+            <span @click="turnToList('专题研讨')">更多</span>
+          </span>
+        </el-col>
+        <el-col :span="24" class="infoLeft">
+          <el-col class="infoLeftList" :span="24" v-for="(item, index) in zhuantiList" :key="index">
+            <p>{{ item.publish_time }}</p>
+            <p>
+              <span @click="clickzhuanti(item.id)" class="textOver">{{ item.title }}</span>
+              <span>{{ item.content }}</span>
+            </p>
+          </el-col>
+        </el-col>
+      </el-col>
+      <el-col :span="12" class="right">
+        <el-col :span="24" class="downLeftTop">
+          <el-image :src="downLeftTopImage"></el-image>
+          <span class="topText">
+            <span>专家问诊</span>
+            <span
+              ><p>I</p>
+              <p>nquiry</p></span
+            >
+            <span @click="turnToList('专家问诊')">更多</span>
+          </span>
+        </el-col>
+        <el-col :span="23" class="infoRight">
+          <el-col class="infoRightList" :span="24" v-for="(item, index) in jishuList" :key="index">
+            <p>
+              <span class="textOver" @click="clickjishu(item.id)">{{ item.title }}</span
+              ><span class="textOver">{{ item.publish_time }}</span>
+            </p>
+          </el-col>
+        </el-col>
       </el-col>
       <el-col :span="24">
         <el-image :src="jishuImage" class="jishuImage"></el-image>
       </el-col>
       <el-col :span="12" class="left">
+        <el-col :span="24" class="downLeftTop">
+          <el-image :src="downLeftTopImage"></el-image>
+          <span class="topText">
+            <span>行业研究</span>
+            <span
+              ><p>I</p>
+              <p>ndustry</p></span
+            >
+            <span @click="turnToList('行业研究')">更多</span>
+          </span>
+        </el-col>
+        <el-col :span="24" class="infoLeft">
+          <el-col class="infoRightList" :span="24" v-for="(item, index) in hangyeList" :key="index">
+            <p>
+              <span class="textOver" @click="clickhangye(item.id)">{{ item.title }}</span
+              ><span class="textOver">{{ item.publish_time }}</span>
+            </p>
+          </el-col>
+        </el-col>
+      </el-col>
+      <el-col :span="12" class="right">
+        <el-col :span="24" class="downLeftTop">
+          <el-image :src="downLeftTopImage"></el-image>
+          <span class="topText">
+            <span>教育培训</span>
+            <span
+              ><p>T</p>
+              <p>raining</p></span
+            >
+            <span @click="turnToList('教育培训')">更多</span>
+          </span>
+        </el-col>
+        <el-col :span="23" class="infoRight">
+          <el-col class="infoLeftList" :span="24" v-for="(item, index) in jiaoyuList" :key="index">
+            <p>{{ item.publish_time }}</p>
+            <p>
+              <span class="textOver" @click="clickjiaoyu(item.id)">{{ item.title }}</span>
+              <span>{{ item.content }}</span>
+            </p>
+          </el-col>
+        </el-col>
+      </el-col>
+      <!-- <el-col :span="12" class="left">
         <el-col :span="1" class="leftTitle">
           <p>行<br />业<br />研<br />究</p>
           <p></p>
@@ -65,7 +151,7 @@
           <p></p>
           <p>教<br />育<br />培<br />训</p>
         </el-col>
-      </el-col>
+      </el-col> -->
     </el-col>
   </div>
 </template>
@@ -79,6 +165,7 @@ export default {
   props: {},
   components: {},
   data: () => ({
+    downLeftTopImage: require('@/assets/live/square_big.png'),
     jishuImage: require('@/assets/live/main2.png'),
     zhuantiList: [],
     jishuList: [],
@@ -100,13 +187,13 @@ export default {
   methods: {
     ...news(['query']),
     async searchInfo() {
-      let res = await this.query({ skip: 0, limit: 6, column_name: '专题研讨' });
+      let res = await this.query({ skip: 0, limit: 5, column_name: '专题研讨' });
       if (this.$checkRes(res)) this.$set(this, `zhuantiList`, res.data);
-      res = await this.query({ skip: 0, limit: 10, column_name: '技术问答' });
+      res = await this.query({ skip: 0, limit: 8, column_name: '技术问答' });
       if (this.$checkRes(res)) this.$set(this, `jishuList`, res.data);
-      res = await this.query({ skip: 0, limit: 10, column_name: '行业研究' });
+      res = await this.query({ skip: 0, limit: 8, column_name: '行业研究' });
       if (this.$checkRes(res)) this.$set(this, `hangyeList`, res.data);
-      res = await this.query({ skip: 0, limit: 6, column_name: '教育培训' });
+      res = await this.query({ skip: 0, limit: 5, column_name: '教育培训' });
       if (this.$checkRes(res)) this.$set(this, `jiaoyuList`, res.data);
     },
     turnToList(column_name) {
@@ -148,6 +235,8 @@ export default {
   height: 500px;
   margin: 30px 0 30px 0;
   overflow: hidden;
+  border-right: 1px dashed #044b79;
+  width: 49.5%;
 }
 .leftTitle {
   text-align: center;
@@ -176,16 +265,16 @@ export default {
   width: 95%;
   border-bottom: 1px dashed #ccc;
   padding: 8px 0 8px 0;
-  height: 80px;
+  height: 90px;
   margin: 0 0 0 5px;
 }
 
-.infoLeftList:nth-child(6) {
+.infoLeftList:nth-child(5) {
   float: left;
   width: 95%;
   border-bottom: none;
   padding: 8px 0 8px 0;
-  height: 81px;
+  height: 90px;
   margin: 0 0 15px 5px;
 }
 .infoLeftList:hover p:last-child span:first-child {
@@ -259,6 +348,7 @@ export default {
   height: 500px;
   overflow: hidden;
   margin: 30px 0 30px 0;
+  width: 49.5%;
 }
 .rightListTop {
   position: relative;
@@ -289,12 +379,13 @@ export default {
   float: left;
   width: 95%;
   padding: 11px 0;
+  height: 55px;
 }
-.infoRightList:nth-child(5) {
+.infoRightList:nth-child(4) {
   border-bottom: 1px solid #ccc;
   padding: 0 0 17px 0;
 }
-.infoRightList:nth-child(6) {
+.infoRightList:nth-child(5) {
   padding: 11px 0 0 0;
 }
 .infoRightList:hover p span:first-child {
@@ -338,4 +429,46 @@ export default {
   font-weight: bold;
   color: #044b79;
 }
+.downLeftTop .el-image {
+  width: 40px;
+}
+.topText {
+  width: 89%;
+  border-bottom: 2.5px solid #044b79;
+  display: inline-block;
+  position: relative;
+  top: -10px;
+  margin: 0 0 0 5px;
+}
+.topText span:first-child {
+  font-size: 24px;
+  font-weight: 700;
+  color: #000000;
+  padding: 0 10px;
+  top: 4px;
+}
+.topText span p:first-child {
+  font-weight: 800;
+  font-size: 34px;
+
+  color: #92959a;
+
+  top: 11px;
+  display: inline-block;
+}
+.topText span p:last-child {
+  display: inline-block;
+  font-weight: 700;
+  font-size: 18px;
+  color: #92959a;
+}
+.topText span:last-child {
+  float: right;
+  font-size: 16px;
+  font-weight: 700;
+  color: #044b79;
+  position: relative;
+  top: 20px;
+  cursor: pointer;
+}
 </style>

+ 3 - 3
src/views/technical/list.vue

@@ -81,7 +81,7 @@ export default {
   components: {},
   data: () => ({
     squareImage: require('@/assets/live/square_big.png'),
-    menuList: [{ name: '专题研讨' }, { name: '技术问答' }, { name: '行业研究' }, { name: '教育培训' }],
+    menuList: [{ name: '专题研讨' }, { name: '专家问诊' }, { name: '行业研究' }, { name: '教育培训' }],
     menuIndex: '0',
     menuName: '专题研讨',
     menuColor: 'rgb(254, 149, 14)',
@@ -111,7 +111,7 @@ export default {
     async searchList({ skip = 0, limit = 10, ...info } = {}) {
       if (this.$route.query.column_name == '专题研讨') {
         this.changeMenu(this.$route.query.column_name, 0);
-      } else if (this.$route.query.column_name == '技术问答') {
+      } else if (this.$route.query.column_name == '专家问诊') {
         this.changeMenu(this.$route.query.column_name, 1);
       } else if (this.$route.query.column_name == '行业研究') {
         this.changeMenu(this.$route.query.column_name, 2);
@@ -131,7 +131,7 @@ export default {
         this.pageSize = 5;
         res = await this.query({ skip, limit, column_name: '专题研讨', ...info });
         this.$set(this, `zhuantiList`, res.data);
-      } else if (name == '技术问答') {
+      } else if (name == '专家问诊') {
         res = await this.query({ skip, limit, column_name: '技术问答', ...info });
         console.log(res);
         this.$set(this, `jishuList`, res.data);