zs hace 10 meses
padre
commit
6ae0093118
Se han modificado 53 ficheros con 2239 adiciones y 35 borrados
  1. BIN
      public/images/bg-gjsxm.jpg
  2. BIN
      public/images/bg-teclist.jpg
  3. BIN
      public/images/biao_1.png
  4. BIN
      public/images/biao_2.png
  5. BIN
      public/images/biao_3.png
  6. BIN
      public/images/expert.png
  7. BIN
      public/images/expertBg.png
  8. BIN
      public/images/fw-det-bg.jpg
  9. BIN
      public/images/jsjcpjqwlyyjs.png
  10. BIN
      public/images/project/dbhi-kcxm-item-xm1.png
  11. BIN
      public/images/project/dbhi-kcxm-item-xm2.png
  12. BIN
      public/images/project/dbhi-kcxm-item-xm3.png
  13. BIN
      public/images/project/dbhi-kcxm-item-xmyl.png
  14. BIN
      public/images/project/dbhi-kcxm-item1.png
  15. BIN
      public/images/project/dbhi-kcxm-item10.png
  16. BIN
      public/images/project/dbhi-kcxm-item2.png
  17. BIN
      public/images/project/dbhi-kcxm-item3.png
  18. BIN
      public/images/project/dbhi-kcxm-item4.png
  19. BIN
      public/images/project/dbhi-kcxm-item5.png
  20. BIN
      public/images/project/dbhi-kcxm-item6.png
  21. BIN
      public/images/project/dbhi-kcxm-item7.png
  22. BIN
      public/images/project/dbhi-kcxm-item8.png
  23. BIN
      public/images/project/dbhi-kcxm-item9.png
  24. BIN
      public/images/project/dingwei.png
  25. BIN
      public/images/project/item_1.jpg
  26. BIN
      public/images/project/item_2.jpg
  27. BIN
      public/images/project/item_3.jpg
  28. BIN
      public/images/project/item_4.jpg
  29. BIN
      public/images/project/item_5.jpg
  30. BIN
      public/images/project/item_6.jpg
  31. BIN
      public/images/project/item_7.jpg
  32. BIN
      public/images/project/item_9.jpg
  33. BIN
      public/images/studyDetail.jpg
  34. BIN
      public/images/userbg.png
  35. 36 0
      src/router/index.js
  36. 19 0
      src/views/detail/achievementDetail.vue
  37. 348 0
      src/views/detail/expert.vue
  38. 51 0
      src/views/detail/expertDetail.vue
  39. 31 6
      src/views/detail/newsDetail.vue
  40. 272 0
      src/views/detail/platformDetail.vue
  41. 574 6
      src/views/detail/project.vue
  42. 374 1
      src/views/detail/projectDetail.vue
  43. 222 0
      src/views/detail/serviceDetail.vue
  44. 182 0
      src/views/detail/studyDetail.vue
  45. 1 1
      src/views/eight/index.vue
  46. 2 8
      src/views/four/parts/index.vue
  47. 21 3
      src/views/nine/index.vue
  48. 30 2
      src/views/seven/index.vue
  49. 20 1
      src/views/six/index.vue
  50. 17 4
      src/views/ten/index.vue
  51. 1 1
      src/views/thirteen/index.vue
  52. 19 1
      src/views/thr/parts/demand.vue
  53. 19 1
      src/views/thr/parts/supply.vue

BIN
public/images/bg-gjsxm.jpg


BIN
public/images/bg-teclist.jpg


BIN
public/images/biao_1.png


BIN
public/images/biao_2.png


BIN
public/images/biao_3.png


BIN
public/images/expert.png


BIN
public/images/expertBg.png


BIN
public/images/fw-det-bg.jpg


BIN
public/images/jsjcpjqwlyyjs.png


BIN
public/images/project/dbhi-kcxm-item-xm1.png


BIN
public/images/project/dbhi-kcxm-item-xm2.png


BIN
public/images/project/dbhi-kcxm-item-xm3.png


BIN
public/images/project/dbhi-kcxm-item-xmyl.png


BIN
public/images/project/dbhi-kcxm-item1.png


BIN
public/images/project/dbhi-kcxm-item10.png


BIN
public/images/project/dbhi-kcxm-item2.png


BIN
public/images/project/dbhi-kcxm-item3.png


BIN
public/images/project/dbhi-kcxm-item4.png


BIN
public/images/project/dbhi-kcxm-item5.png


BIN
public/images/project/dbhi-kcxm-item6.png


BIN
public/images/project/dbhi-kcxm-item7.png


BIN
public/images/project/dbhi-kcxm-item8.png


BIN
public/images/project/dbhi-kcxm-item9.png


BIN
public/images/project/dingwei.png


BIN
public/images/project/item_1.jpg


BIN
public/images/project/item_2.jpg


BIN
public/images/project/item_3.jpg


BIN
public/images/project/item_4.jpg


BIN
public/images/project/item_5.jpg


BIN
public/images/project/item_6.jpg


BIN
public/images/project/item_7.jpg


BIN
public/images/project/item_9.jpg


BIN
public/images/studyDetail.jpg


BIN
public/images/userbg.png


+ 36 - 0
src/router/index.js

@@ -122,6 +122,18 @@ const router = createRouter({
       meta: { title: '产学研用协同创新数字化平台-项目详情' },
       component: () => import('@/views/detail/projectDetail.vue')
     },
+    {
+      path: '/expert',
+      name: 'expert',
+      meta: { title: '产学研用协同创新数字化平台-专家列表' },
+      component: () => import('@/views/detail/expert.vue')
+    },
+    {
+      path: '/expert/detail',
+      name: 'expertDetail',
+      meta: { title: '产学研用协同创新数字化平台-专家详情' },
+      component: () => import('@/views/detail/expertDetail.vue')
+    },
     {
       path: '/company',
       name: 'company',
@@ -134,6 +146,30 @@ const router = createRouter({
       meta: { title: '产学研用协同创新数字化平台-企业详情' },
       component: () => import('@/views/detail/companyDetail.vue')
     },
+    {
+      path: '/platform/detail',
+      name: 'platformDetail',
+      meta: { title: '产学研用协同创新数字化平台-中试平台详情' },
+      component: () => import('@/views/detail/platformDetail.vue')
+    },
+    {
+      path: '/service/detail',
+      name: 'serviceDetail',
+      meta: { title: '产学研用协同创新数字化平台-服务支撑详情' },
+      component: () => import('@/views/detail/serviceDetail.vue')
+    },
+    {
+      path: '/achievement/detail',
+      name: 'achievementDetail',
+      meta: { title: '产学研用协同创新数字化平台-服务支撑详情' },
+      component: () => import('@/views/detail/achievementDetail.vue')
+    },
+    {
+      path: '/study/detail',
+      name: 'studyDetail',
+      meta: { title: '产学研用协同创新数字化平台-行研产研详情' },
+      component: () => import('@/views/detail/studyDetail.vue')
+    },
     {
       path: '/login',
       name: 'login',

+ 19 - 0
src/views/detail/achievementDetail.vue

@@ -0,0 +1,19 @@
+<template>
+  <custom-layout class="main">
+    <el-col :span="24" class="one">首页 </el-col>
+  </custom-layout>
+</template>
+
+<script setup>
+import { UserStore } from '@/store/user'
+const userStore = UserStore()
+const user = computed(() => userStore.user)
+// 加载中
+const loading = ref(false)
+// 路由
+const router = useRouter()
+</script>
+<style scoped lang="scss">
+.main {
+}
+</style>

+ 348 - 0
src/views/detail/expert.vue

@@ -0,0 +1,348 @@
+<template>
+  <custom-layout class="main">
+    <el-col :span="24" class="one">
+      <el-image class="image" :src="lists" fit="fill" />
+    </el-col>
+    <div class="w_1300">
+      <div class="two">
+        <div class="twoSeacher">
+          <div class="twoLeft">
+            <span>行业</span>
+          </div>
+          <div v-if="!oneShow" class="twoRight">
+            <div class="label" v-for="(item, index) in plateList.slice(0, 6)" :key="index">
+              {{ item.label }}
+            </div>
+          </div>
+          <div v-else class="twoRight">
+            <div class="label" v-for="(item, index) in plateList" :key="index">
+              {{ item.label }}
+            </div>
+          </div>
+          <div class="button">
+            <span v-if="!oneShow" @click="oneShow = true">
+              <el-icon><ArrowDown /></el-icon>
+            </span>
+            <span v-else @click="oneShow = false">
+              <el-icon><ArrowUp /></el-icon>
+            </span>
+          </div>
+        </div>
+        <div class="twoSeacher">
+          <div class="twoLeft">
+            <span>技术领域</span>
+          </div>
+          <div class="twoRight">
+            <div class="label" v-for="(item, index) in typeList" :key="index">
+              {{ item.label }}
+            </div>
+          </div>
+        </div>
+        <div class="twoSeacher">
+          <div class="twoLeft">
+            <span>所在地</span>
+          </div>
+          <div v-if="!twoShow" class="twoRight">
+            <div class="label" v-for="(item, index) in cityList.slice(0, 15)" :key="index">
+              {{ item.label }}
+            </div>
+          </div>
+          <div v-else class="twoRight">
+            <div class="label" v-for="(item, index) in cityList" :key="index">
+              {{ item.label }}
+            </div>
+          </div>
+          <div class="button">
+            <span v-if="!twoShow" @click="twoShow = true">
+              <el-icon><ArrowDown /></el-icon>
+            </span>
+            <span v-else @click="twoShow = false">
+              <el-icon><ArrowUp /></el-icon>
+            </span>
+          </div>
+        </div>
+      </div>
+      <div class="twoTwo">
+        <div class="twoTable">
+          <div class="label" v-for="(item, index) in column" :key="index" :style="item.style">
+            {{ item.name }}
+          </div>
+        </div>
+        <div class="twoValue">
+          <div class="value" v-for="(item, index) in list" :key="index">
+            <div class="table-colunm table-colunm1">{{ item.key || '暂无' }}</div>
+            <div class="table-colunm table-colunm2">{{ item.name || '暂无' }}</div>
+            <div class="table-colunm">{{ item.area || '暂无' }}</div>
+            <div class="table-colunm">{{ item.education || '暂无' }}</div>
+            <div class="table-colunm">{{ item.field || '暂无' }}</div>
+            <div class="table-colunm button" @click="toView(item)">查看详情</div>
+          </div>
+        </div>
+        <div class="twoTotal">
+          <el-pagination background layout="prev, pager, next" :total="1000" />
+        </div>
+      </div>
+    </div>
+  </custom-layout>
+</template>
+
+<script setup>
+// 图片引入
+import lists from '/images/expert.png'
+import { getCity } from '@/utils/city'
+import { UserStore } from '@/store/user'
+const userStore = UserStore()
+const user = computed(() => userStore.user)
+// 加载中
+const loading = ref(false)
+// 路由
+const router = useRouter()
+// 是否展开
+const oneShow = ref(false)
+const twoShow = ref(false)
+const cityList = ref([])
+const typeList = ref([
+  { label: '不限', value: '-1' },
+  { label: '教育休闲', value: '0' },
+  { label: '包装印刷', value: '1' },
+  { label: '电气自动化', value: '2' },
+  { label: '采矿冶金', value: '3' },
+  { label: '航空航天', value: '4' },
+  { label: '海洋开发', value: '5' },
+  { label: '衣林牧业', value: '6' },
+  { label: '医药与医疗', value: '7' },
+  { label: '电子信息', value: '8' }
+])
+const plateList = ref([
+  { label: '不限', value: '-1' },
+  { label: '汽车电子及新型汽车零部件', value: '0' },
+  { label: '精细化工及天然气化工', value: '1' },
+  { label: '农产品加工及绿色食品', value: '2' },
+  { label: '光电子及智能传感器', value: '3' },
+  { label: '车规级芯片及功率半导体器件', value: '4' },
+  { label: '新能源及动力电池', value: '5' },
+  { label: '生物基新材料', value: '6' },
+  { label: '人工智能及智能机器人', value: '7' },
+  { label: '碳纤维及复合材料', value: '8' },
+  { label: '遥感卫星及航天航空技术', value: '9' },
+  { label: '精密仪器及先进装备', value: '10' },
+  { label: '生物医药及先进医疗器械', value: '11' }
+])
+const column = ref([
+  { name: '序号', style: { width: '116px' }, key: 'key' },
+  { name: '名称', style: { width: '316px' }, key: 'name' },
+  { name: '所在地', style: { width: '216px' }, key: 'area' },
+  { name: '学历/职称', style: { width: '216px' }, key: 'education' },
+  { name: '技术领域', style: { width: '216px' }, key: 'field' },
+  { name: '操作', style: { width: '216px' }, key: 'operation' }
+])
+const list = ref([
+  {
+    key: '1',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融',
+    time: '2020-07-01'
+  },
+  {
+    key: '2',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  },
+  {
+    key: '3',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  },
+  {
+    key: '4',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  },
+  {
+    key: '5',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  },
+  {
+    key: '6',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  },
+  {
+    key: '7',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  },
+  {
+    key: '8',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  },
+  {
+    key: '6',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  },
+  {
+    key: '7',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  },
+  {
+    key: '8',
+    name: '陈教授',
+    area: '吉林长春市',
+    education: '博士',
+    field: '科技金融'
+  }
+])
+// 请求
+onMounted(async () => {
+  loading.value = true
+  // 城市
+  getCity().then(
+    (response) => (cityList.value = [{ label: '不限', value: '-1' }, ...response.address])
+  )
+  loading.value = false
+})
+// 查看
+const toView = (item) => {
+  router.push({ path: `/expert/detail`, query: { id: item.id || item._id } })
+}
+</script>
+<style scoped lang="scss">
+.main {
+  background: url(/images/information.jpg) no-repeat top center;
+  background-size: 100% 100%;
+  .one {
+    .image {
+      width: 100%;
+      height: 350px;
+    }
+  }
+  .two {
+    margin: 10px 0;
+    background-color: $global-color-fff;
+    .twoSeacher {
+      display: flex;
+      justify-content: center;
+      align-items: stretch;
+      position: relative;
+      border: solid 1px #e5e5e5;
+      border-bottom: 0;
+      font-size: $global-font-size-18;
+      color: #666;
+      min-height: 60px;
+      overflow: hidden;
+      .twoLeft {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        flex-shrink: 0;
+        width: 110px;
+        text-align: center;
+        color: #000;
+        font-weight: bold;
+        background-color: #fafafa;
+      }
+      .twoRight {
+        display: flex;
+        flex-wrap: wrap;
+        align-items: center;
+        padding: 12px;
+        flex: 1;
+        border-left: solid 1px #e5e5e5;
+        background-color: #fff;
+        .label {
+          color: #313131;
+          margin-bottom: 10px;
+          padding: 8px 10px;
+          border-radius: 3px;
+          background-color: #fff;
+          border: solid 1px transparent;
+          cursor: pointer;
+        }
+        .label:first-child {
+          color: #0a58c2;
+          border: solid 1px #006dd2;
+        }
+        .label:hover {
+          color: $global-color-107;
+        }
+      }
+      .button {
+        display: flex;
+        align-items: center;
+        margin: 0 5px 0 0;
+      }
+    }
+  }
+  .twoTwo {
+    margin: 10px 0;
+    .twoTable {
+      display: flex;
+      justify-content: space-between;
+      color: $global-color-fff;
+      font-size: $global-font-size-20;
+      background-color: rgba(255, 255, 255, 0.1);
+      padding: 12px 0;
+      .label {
+        text-align: center;
+      }
+    }
+    .twoValue {
+      color: $global-color-fff;
+      font-size: $global-font-size-20;
+      .value {
+        display: flex;
+        justify-content: space-between;
+        padding: 12px 0;
+        .table-colunm {
+          width: 216px;
+          text-align: center;
+        }
+        .table-colunm1 {
+          width: 116px !important;
+        }
+        .table-colunm2 {
+          width: 316px !important;
+        }
+        .button {
+          cursor: pointer; /* 改变鼠标样式为手形 */
+        }
+        .button:hover {
+          color: $global-color-107;
+        }
+      }
+      .value:nth-child(2n) {
+        background-color: rgba(255, 255, 255, 0.1);
+      }
+    }
+    .twoTotal {
+      display: flex;
+      justify-content: center;
+      margin: 20px 0;
+    }
+  }
+}
+</style>

+ 51 - 0
src/views/detail/expertDetail.vue

@@ -0,0 +1,51 @@
+<template>
+  <custom-layout class="main">
+    <el-col :span="24" class="one">
+      <div class="w_1200">
+        <div class="info_1"></div>
+        <div class="info_2">
+          <div></div>
+        </div>
+      </div>
+    </el-col>
+  </custom-layout>
+</template>
+
+<script setup>
+import match_4 from '/images/match_4.jpg'
+import { UserStore } from '@/store/user'
+const userStore = UserStore()
+const user = computed(() => userStore.user)
+// 加载中
+const loading = ref(false)
+// 路由
+const router = useRouter()
+const info = ref({
+  name: '张教授',
+  area: '吉林长春市',
+  education: '博士',
+  field: '科技金融',
+  ability: '#基金项目申报##应用技术研究##产学研合作#',
+  brief:
+    '张教授主要从事石油资产定价与预测、能源环境政策绩效评价、碳交易与碳减排机制政策等领域的研究工作。现已主持国家自然科学基金优秀青年基金项目、重点专项,国家社科基金重大项目、重点项目等重要科研任务10余项'
+})
+</script>
+<style scoped lang="scss">
+.main {
+  .one {
+    background: url(/images/expertBg.png) no-repeat;
+    background-position: center top;
+    .info_1 {
+      padding: 30px 0;
+    }
+    .info_2 {
+      display: flex;
+      border-radius: 5px;
+      padding-right: 30px;
+      padding: 50px;
+      background: url(/images/userBg.png) no-repeat;
+      background-position: center top;
+    }
+  }
+}
+</style>

+ 31 - 6
src/views/detail/newsDetail.vue

@@ -22,7 +22,7 @@
             <div class="right_1">
               <div class="title">
                 <div class="title_1">赛事推广</div>
-                <div class="title_2">更多></div>
+                <div class="title_2" @click="toMore('0')">更多></div>
               </div>
               <div class="content_1">
                 <el-image
@@ -43,17 +43,22 @@
                     <el-image class="image" :src="time1" fit="fill" />
                     <div>{{ getTime(matchInfo.time) }}</div>
                   </div>
-                  <div class="button">查看 ></div>
+                  <div class="button" @click="toView(matchInfo, '0')">查看 ></div>
                 </div>
               </div>
             </div>
             <div class="right_1">
               <div class="title">
                 <div class="title_1">专家推荐</div>
-                <div class="title_2">更多></div>
+                <div class="title_2" @click="toMore('1')">更多></div>
               </div>
               <div class="content_2">
-                <div class="list" v-for="(item, index) in expertList" :key="index">
+                <div
+                  class="list"
+                  v-for="(item, index) in expertList"
+                  :key="index"
+                  @click="toView(item, '1')"
+                >
                   <div class="name">
                     <el-image class="image" :src="liIcon" fit="fill"></el-image>
                     <span>{{ item.name || '暂无' }}</span>
@@ -67,10 +72,15 @@
             <div class="right_1">
               <div class="title">
                 <div class="title_1">项目推荐</div>
-                <div class="title_2">更多></div>
+                <div class="title_2" @click="toMore('2')">更多></div>
               </div>
               <div class="content_3">
-                <div class="list" v-for="(item, index) in projectList" :key="index">
+                <div
+                  class="list"
+                  v-for="(item, index) in projectList"
+                  :key="index"
+                  @click="toView(item, '2')"
+                >
                   <el-image class="image" :src="liIcon" fit="fill"></el-image>
                   <div class="name">
                     <span>{{ item.name || '暂无' }}</span>
@@ -208,6 +218,18 @@ const getTime = (item) => {
 const getUrl = (item) => {
   if (item) return `${import.meta.env.VITE_APP_HOST}${item[0].uri}`
 }
+// 查看更多
+const toMore = (type) => {
+  if (type == '0') router.push({ path: '/five' })
+  else if (type == '1') router.push({ path: '/expert' })
+  else if (type == '2') router.push({ path: '/project' })
+}
+// 查看详情
+const toView = (item, type) => {
+  if (type == '0') router.push({ path: '/match/detail', query: { id: item.id || item._id } })
+  else if (type == '1') router.push({ path: '/expert/detail', query: { id: item.id || item._id } })
+  else if (type == '2') router.push({ path: '/project/detail', query: { id: item.id || item._id } })
+}
 </script>
 <style scoped lang="scss">
 .main {
@@ -283,6 +305,7 @@ const getUrl = (item) => {
             .title_2 {
               float: right;
               font-size: $global-font-size-14;
+              cursor: pointer; /* 改变鼠标样式为手形 */
             }
           }
           .content_1 {
@@ -351,6 +374,7 @@ const getUrl = (item) => {
               border-bottom: 1px solid #e1e6f0;
               transition: 0.3s ease-in-out;
               font-size: $global-font-size-16;
+              cursor: pointer; /* 改变鼠标样式为手形 */
               .name {
                 display: flex;
                 align-items: center;
@@ -373,6 +397,7 @@ const getUrl = (item) => {
               padding: 12px 10px;
               border-bottom: 1px solid #e1e6f0;
               transition: 0.3s ease-in-out;
+              cursor: pointer; /* 改变鼠标样式为手形 */
               .image {
                 margin: 6px 5px 0 0;
               }

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 272 - 0
src/views/detail/platformDetail.vue


+ 574 - 6
src/views/detail/project.vue

@@ -1,19 +1,587 @@
 <template>
   <custom-layout class="main">
-    <el-col :span="24" class="one">首页 </el-col>
+    <el-col :span="24" class="one">
+      <div class="w_1300">
+        <el-col :span="24" class="one_1">
+          <div class="search">
+            <el-input
+              v-model="input1"
+              size="large"
+              placeholder="请输入关键字"
+              :suffix-icon="Search"
+            >
+              <template #append>
+                <el-button type="primary" size="large">搜索</el-button>
+              </template>
+            </el-input>
+          </div>
+        </el-col>
+        <el-col :span="24" class="one_2">
+          <div class="one_2_1">
+            <div class="Seacher">
+              <div class="OneLeft">
+                <span>行业</span>
+              </div>
+              <div v-if="!twoShow" class="OneRight">
+                <el-checkbox
+                  class="label"
+                  v-for="(item, index) in plateList.slice(0, 6)"
+                  :key="index"
+                  v-model="checked1"
+                  :label="item.label"
+                  size="large"
+                />
+              </div>
+              <div v-else class="OneRight">
+                <el-checkbox
+                  class="label"
+                  v-for="(item, index) in plateList"
+                  :key="index"
+                  v-model="checked1"
+                  :label="item.label"
+                  size="large"
+                />
+              </div>
+              <div class="button">
+                <span v-if="!twoShow" @click="twoShow = true">
+                  <el-icon><ArrowDown /></el-icon>
+                </span>
+                <span v-else @click="twoShow = false">
+                  <el-icon><ArrowUp /></el-icon>
+                </span>
+              </div>
+            </div>
+            <div class="Seacher">
+              <div class="OneLeft">
+                <span>技术领域</span>
+              </div>
+              <div class="OneRight">
+                <el-checkbox
+                  class="label"
+                  v-for="(item, index) in typeList"
+                  :key="index"
+                  v-model="checked1"
+                  :label="item.label"
+                  size="large"
+                />
+              </div>
+            </div>
+            <div class="Seacher">
+              <div class="OneLeft">
+                <span>所在地</span>
+              </div>
+              <div v-if="!oneShow" class="OneRight">
+                <el-checkbox
+                  class="label"
+                  v-for="(item, index) in cityList.slice(0, 12)"
+                  :key="index"
+                  v-model="checked1"
+                  :label="item.label"
+                  size="large"
+                />
+              </div>
+              <div v-else class="OneRight">
+                <el-checkbox
+                  class="label"
+                  v-for="(item, index) in cityList"
+                  :key="index"
+                  v-model="checked1"
+                  :label="item.label"
+                  size="large"
+                />
+              </div>
+              <div class="button">
+                <span v-if="!oneShow" @click="oneShow = true">
+                  <el-icon><ArrowDown /></el-icon>
+                </span>
+                <span v-else @click="oneShow = false">
+                  <el-icon><ArrowUp /></el-icon>
+                </span>
+              </div>
+            </div>
+            <div class="Seacher">
+              <div class="OneLeft">
+                <span>项目成熟度</span>
+              </div>
+              <div class="OneRight">
+                <el-checkbox
+                  class="label"
+                  v-for="(item, index) in maturityList"
+                  :key="index"
+                  v-model="checked1"
+                  :label="item.label"
+                  size="large"
+                />
+              </div>
+            </div>
+          </div>
+          <div class="one_2_2">
+            <div
+              class="list"
+              :class="['list' + index]"
+              v-for="(item, index) in list"
+              :key="index"
+              @click="toView(item)"
+            >
+              <div class="type textOne">{{ item.type || '暂无' }}</div>
+              <div class="title">
+                <p class="ellipsis-3">{{ item.name || '暂无' }}</p>
+              </div>
+              <div class="address textOne">
+                <el-icon color="#595959"><Location /></el-icon>
+                <span>{{ item.area || '暂无' }}</span>
+              </div>
+              <div class="biaoqian textOne">
+                <span v-if="item.technology">{{ item.technology }}</span>
+                <span v-if="item.sell">{{ item.sell }}</span>
+              </div>
+              <span class="state" :class="['state' + item.status]"></span>
+            </div>
+          </div>
+          <div class="one_2_3">
+            <el-pagination background layout="prev, pager, next" :total="1000" />
+          </div>
+        </el-col>
+      </div>
+    </el-col>
   </custom-layout>
 </template>
 
 <script setup>
-import { UserStore } from '@/store/user'
-const userStore = UserStore()
-const user = computed(() => userStore.user)
-// 加载中
-const loading = ref(false)
+import bg_1 from '/images/project/dbhi-kcxm-item1.png'
+import bg_2 from '/images/project/dbhi-kcxm-item2.png'
+import bg_3 from '/images/project/dbhi-kcxm-item3.png'
+import bg_4 from '/images/project/dbhi-kcxm-item4.png'
+import bg_5 from '/images/project/dbhi-kcxm-item6.png'
+import bg_6 from '/images/project/dbhi-kcxm-item8.png'
+import bg_7 from '/images/project/dbhi-kcxm-item9.png'
+import bg_8 from '/images/project/dbhi-kcxm-item10.png'
+import bg_9 from '/images/project/dbhi-kcxm-item7.png'
+import bg_10 from '/images/project/dbhi-kcxm-item7.png'
+import map from '/images/project/dbhi-kcxm-item7.png'
+import { getCity } from '@/utils/city'
+const $checkRes = inject('$checkRes')
+// 接口
+import { ProjectStore } from '@/store/api/platform/project'
+import { DictDataStore } from '@/store/api/system/dictData'
+const store = ProjectStore()
+const dictDataStore = DictDataStore()
 // 路由
 const router = useRouter()
+// 是否展开
+const twoShow = ref(false)
+const oneShow = ref(false)
+// 加载中
+const loading = ref(false)
+const cityList = ref([])
+const typeList = ref([
+  { label: '不限', value: '-1' },
+  { label: '教育休闲', value: '0' },
+  { label: '包装印刷', value: '1' },
+  { label: '电气自动化', value: '2' },
+  { label: '采矿冶金', value: '3' },
+  { label: '航空航天', value: '4' },
+  { label: '海洋开发', value: '5' },
+  { label: '衣林牧业', value: '6' },
+  { label: '医药与医疗', value: '7' },
+  { label: '电子信息', value: '8' }
+])
+const plateList = ref([
+  { label: '不限', value: '-1' },
+  { label: '汽车电子及新型汽车零部件', value: '0' },
+  { label: '精细化工及天然气化工', value: '1' },
+  { label: '农产品加工及绿色食品', value: '2' },
+  { label: '生物基新材料', value: '6' },
+  { label: '光电子及智能传感器', value: '3' },
+  { label: '车规级芯片及功率半导体器件', value: '4' },
+  { label: '新能源及动力电池', value: '5' },
+  { label: '人工智能及智能机器人', value: '7' },
+  { label: '碳纤维及复合材料', value: '8' },
+  { label: '遥感卫星及航天航空技术', value: '9' },
+  { label: '精密仪器及先进装备', value: '10' },
+  { label: '生物医药及先进医疗器械', value: '11' }
+])
+// 字典表
+const projectList = ref([])
+const maturityList = ref([])
+const industryList = ref([])
+// 字典表
+const fieldList = ref([])
+// 列表
+const list = ref([
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '1',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '3',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  },
+  {
+    name: '农特产供应链平台',
+    technology: '衣林牧业',
+    type: '农产品加工及绿色食品',
+    area: '吉林 长春市',
+    status: '2',
+    sell: '中试'
+  }
+])
+let skip = 0
+let limit = inject('limit')
+const total = ref(0)
+const file = ref([bg_1, bg_2, bg_3, bg_4, bg_5, bg_6, bg_7, bg_8, bg_9, bg_10, bg_1, bg_2])
+// 请求
+onMounted(async () => {
+  loading.value = true
+  await searchOther()
+  await search({ skip, limit })
+  loading.value = false
+})
+const searchOther = async () => {
+  let result
+  // 合作类型
+  result = await dictDataStore.query({ code: 'projectType', is_use: '0' })
+  if ($checkRes(result)) projectList.value = result.data
+  // 成熟度
+  result = await dictDataStore.query({ code: 'projectMaturity', is_use: '0' })
+  if ($checkRes(result)) maturityList.value = result.data
+  // 行业分类
+  result = await dictDataStore.query({ code: 'industry', is_use: '0' })
+  if ($checkRes(result)) industryList.value = result.data
+  // 技术领域
+  result = await dictDataStore.query({ code: 'field', is_use: '0' })
+  if ($checkRes(result)) fieldList.value = result.data
+  // 城市
+  getCity().then(
+    (response) => (cityList.value = [{ label: '不限', value: '-1' }, ...response.address])
+  )
+  maturityList.value.unshift({ value: '-1', label: '不限' })
+}
+const search = async (query = { skip: 0, limit }) => {
+  const info = {
+    skip: query.skip,
+    limit: query.limit,
+    status: '1',
+    is_use: '0'
+  }
+  const res = await store.query(info)
+  if (res.errcode == '0') {
+    // list.value = res.data
+    // total.value = res.total
+  }
+}
+// 查看
+const toView = (item) => {
+  router.push({ path: `/project/detail`, query: { id: item.id || item._id } })
+}
+const currentPage = ref(1)
+// 分页
+const changePage = (page = currentPage.value) => {
+  search({ skip: (page - 1) * limit, limit: limit })
+}
+const sizeChange = (limits) => {
+  limit = limits
+  currentPage.value = 1
+  search({ skip: 0, limit: limit })
+}
 </script>
 <style scoped lang="scss">
 .main {
+  .one {
+    background: url(/images/bg-tec-list.jpg) no-repeat;
+    .one_1 {
+      padding: 85px 0 0;
+      .search {
+        margin: 0 auto;
+        width: 810px;
+        :deep(.el-input--large .el-input__inner) {
+          height: 60px;
+        }
+      }
+    }
+    .one_2 {
+      margin-top: 100px;
+      padding: 30px;
+      background-color: $global-color-fff;
+      .one_2_1 {
+        .Seacher {
+          display: flex;
+          justify-content: center;
+          align-items: stretch;
+          position: relative;
+          margin-bottom: 15px;
+          .OneLeft {
+            width: 134px;
+            height: 36px;
+            background-color: #f5f8ff;
+            border-radius: 21px;
+            font-size: $global-font-size-16;
+            font-weight: bold;
+            color: #000000;
+            flex-shrink: 0;
+            line-height: 36px;
+            text-align: center;
+          }
+          .OneRight {
+            display: flex;
+            flex-wrap: wrap;
+            align-items: center;
+            padding: 0 12px;
+            flex: 1;
+            background-color: #fff;
+            .label {
+              cursor: pointer;
+            }
+            .label:first-child {
+              color: #0a58c2;
+            }
+            .label:hover {
+              color: $global-color-107;
+            }
+          }
+          .button {
+            display: flex;
+            align-items: center;
+            margin: 0 5px 0 0;
+          }
+        }
+      }
+      .one_2_2 {
+        margin: 20px 0;
+        display: flex;
+        flex-wrap: wrap;
+        justify-content: center;
+        align-items: center;
+        .list {
+          position: relative;
+          margin: 0 39px 39px 0;
+          width: 208px;
+          height: 286px;
+          box-shadow: 3px 4px 4px 0px rgba(41, 41, 115, 0.32);
+          border: solid 1px #ededed;
+          .type {
+            margin-left: 33px;
+            padding: 22px 10px 0 0;
+            font-size: $global-font-size-16;
+            color: #414141;
+          }
+          .title {
+            display: flex;
+            align-items: center;
+            margin: 24px 18px 0;
+            height: 80px;
+            font-size: $global-font-size-18;
+            font-weight: bold;
+            color: #ffffff;
+            .ellipsis-3 {
+              display: -webkit-box;
+              -webkit-box-orient: vertical;
+              overflow: hidden;
+              -webkit-line-clamp: 3;
+            }
+          }
+          .address {
+            margin-top: 80px;
+            padding: 0 5px;
+            font-size: $global-font-size-16;
+            color: #282828;
+            display: flex;
+            align-items: center;
+            justify-content: flex-end;
+          }
+          .biaoqian {
+            margin: 10px 5px 0 5px;
+            text-align: right;
+            overflow: hidden;
+            span {
+              padding: 0 5px;
+              background-color: #f5f8ff;
+              border-radius: 3px;
+              border: solid 1px #d2daec;
+              font-size: $global-font-size-14;
+              line-height: 23px;
+              color: #7d8aaa;
+              margin-right: 2px;
+            }
+          }
+        }
+        .state {
+          display: block;
+          position: absolute;
+          right: 0px;
+          top: 0px;
+          width: 75px;
+          height: 24px;
+          background: url(/images/project/dbhi-kcxm-item-xmyl.png) no-repeat;
+        }
+        .state1 {
+          background: url(/images/project/dbhi-kcxm-item-xm1.png) no-repeat;
+        }
+        .state2 {
+          background: url(/images/project/dbhi-kcxm-item-xm2.png) no-repeat;
+        }
+        .state3 {
+          background: url(/images/project/dbhi-kcxm-item-xm3.png) no-repeat;
+        }
+        .list0 {
+          background: url(/images/project/dbhi-kcxm-item1.png) no-repeat;
+        }
+        .list1 {
+          background: url(/images/project/dbhi-kcxm-item2.png) no-repeat;
+        }
+        .list2 {
+          background: url(/images/project/dbhi-kcxm-item3.png) no-repeat;
+        }
+        .list3 {
+          background: url(/images/project/dbhi-kcxm-item4.png) no-repeat;
+        }
+        .list4 {
+          background: url(/images/project/dbhi-kcxm-item5.png) no-repeat;
+        }
+        .list5 {
+          background: url(/images/project/dbhi-kcxm-item6.png) no-repeat;
+        }
+        .list6 {
+          background: url(/images/project/dbhi-kcxm-item7.png) no-repeat;
+        }
+        .list7 {
+          background: url(/images/project/dbhi-kcxm-item8.png) no-repeat;
+        }
+        .list8 {
+          background: url(/images/project/dbhi-kcxm-item9.png) no-repeat;
+        }
+        .list9 {
+          background: url(/images/project/dbhi-kcxm-item10.png) no-repeat;
+        }
+        .list10 {
+          background: url(/images/project/dbhi-kcxm-item1.png) no-repeat;
+        }
+        .list11 {
+          background: url(/images/project/dbhi-kcxm-item2.png) no-repeat;
+        }
+        .list12 {
+          background: url(/images/project/dbhi-kcxm-item3.png) no-repeat;
+        }
+        .list13 {
+          background: url(/images/project/dbhi-kcxm-item4.png) no-repeat;
+        }
+        .list14 {
+          background: url(/images/project/dbhi-kcxm-item5.png) no-repeat;
+        }
+        .list:nth-child(5n) {
+          margin-right: 0;
+        }
+      }
+      .one_2_3 {
+        display: flex;
+        justify-content: center;
+        margin: 20px 0;
+      }
+    }
+  }
 }
 </style>

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 374 - 1
src/views/detail/projectDetail.vue


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 222 - 0
src/views/detail/serviceDetail.vue


+ 182 - 0
src/views/detail/studyDetail.vue

@@ -0,0 +1,182 @@
+<template>
+  <custom-layout class="main">
+    <el-col :span="24" class="one">
+      <el-image class="image" :src="lists" fit="fill" />
+    </el-col>
+    <div class="w_1300">
+      <div class="two">
+        <div class="twoTable">
+          <div class="label" v-for="(item, index) in column" :key="index" :style="item.style">
+            {{ item.name }}
+          </div>
+        </div>
+        <div class="twoValue">
+          <div class="value" v-for="(item, index) in list" :key="index">
+            <div class="table-colunm table-colunm1">{{ item.id || '暂无' }}</div>
+            <div class="table-colunm table-colunm3">{{ item.name || '暂无' }}</div>
+            <div class="table-colunm table-colunm1">{{ item.client || '暂无' }}</div>
+            <div class="table-colunm table-colunm1">{{ item.partner || '暂无' }}</div>
+            <div class="table-colunm table-colunm3">{{ item.brief || '暂无' }}</div>
+            <div class="table-colunm table-colunm1 button" @click="toView(item)">查看详情</div>
+          </div>
+        </div>
+        <div class="twoTotal">
+          <el-pagination background layout="prev, pager, next" :total="1000" />
+        </div>
+      </div>
+    </div>
+  </custom-layout>
+</template>
+
+<script setup>
+// 图片引入
+import lists from '/images/bg-tec-list.jpg'
+import { UserStore } from '@/store/user'
+const userStore = UserStore()
+const user = computed(() => userStore.user)
+// 加载中
+const loading = ref(false)
+// 路由
+const router = useRouter()
+const column = ref([
+  { name: '序号', key: 'id', style: { width: '116px' } },
+  { name: '名称', key: 'name', style: { width: '416px' } },
+  { name: '委托方', key: 'client', style: { width: '116px' } },
+  { name: '合作方', key: 'partner', style: { width: '116px' } },
+  { name: '研究主旨', key: 'brief', style: { width: '416px' } },
+  { name: '操作', key: 'operation', style: { width: '116px' } }
+])
+const list = ref([
+  {
+    id: '1',
+    name: '吉林省智能传感器产业链创新发展研究',
+    client: '省工信厅',
+    partner: '吉林大学',
+    brief: '结合我曾经济发展特色和科研院所技术优势,明确产业发展方向'
+  },
+  {
+    id: '2',
+    name: '吉林省玉米深加工产业链创新发展研究',
+    client: '省工信厅',
+    partner: '省石化院',
+    brief: '针对产业锁条的堵点、断点,明确重需突破的关键共性技术,促进全首玉米深加工高质量发展'
+  },
+  {
+    id: '3',
+    name: '松原市玉米深加工产业园区高质量发展规划',
+    client: '省工信厅',
+    partner: '吉林大学',
+    brief:
+      '以松原市嘉吉生物化工产业园区为研究核心。提出推进产业基础高级化和产业现代化的政策保隐措施'
+  },
+  {
+    id: '4',
+    name: '吉林省肉牛(加工》产业发展研究',
+    client: '省工信厅',
+    partner: '吉林大学',
+    brief:
+      '以松原市嘉吉生物化工产业园区为研究核心。提出推进产业基础高级化和产业现代化的政策保隐措施'
+  },
+  {
+    id: '5',
+    name: '吉林省智能传感器产业链创新发展研究',
+    client: '省工信厅',
+    partner: '吉林大学',
+    brief: '结合我曾经济发展特色和科研院所技术优势,明确产业发展方向'
+  },
+  {
+    id: '6',
+    name: '吉林省玉米深加工产业链创新发展研究',
+    client: '省工信厅',
+    partner: '省石化院',
+    brief: '针对产业锁条的堵点、断点,明确重需突破的关键共性技术,促进全首玉米深加工高质量发展'
+  },
+  {
+    id: '7',
+    name: '松原市玉米深加工产业园区高质量发展规划',
+    client: '省工信厅',
+    partner: '吉林大学',
+    brief:
+      '以松原市嘉吉生物化工产业园区为研究核心。提出推进产业基础高级化和产业现代化的政策保隐措施'
+  },
+  {
+    id: '8',
+    name: '吉林省肉牛(加工》产业发展研究',
+    client: '省工信厅',
+    partner: '吉林大学',
+    brief:
+      '以松原市嘉吉生物化工产业园区为研究核心。提出推进产业基础高级化和产业现代化的政策保隐措施'
+  }
+])
+// 请求
+onMounted(async () => {
+  loading.value = true
+  loading.value = false
+})
+// 查看
+const toView = (item) => {
+  // router.push({ path: `/expert/detail`, query: { id: item.id || item._id } })
+}
+</script>
+<style scoped lang="scss">
+.main {
+  background: url(/images/studyDetail.jpg) no-repeat top center;
+  background-size: 100% 100%;
+  .one {
+    .image {
+      width: 100%;
+      height: 350px;
+    }
+  }
+  .two {
+    margin: 20px 0;
+    .twoTable {
+      display: flex;
+      justify-content: space-between;
+      color: $global-color-fff;
+      font-size: $global-font-size-20;
+      background-color: rgba(255, 255, 255, 0.1);
+      padding: 12px 0;
+      .label {
+        text-align: center;
+      }
+    }
+    .twoValue {
+      color: $global-color-fff;
+      font-size: $global-font-size-20;
+      .value {
+        display: flex;
+        justify-content: space-between;
+        padding: 12px 0;
+        .table-colunm {
+          width: 216px;
+          text-align: center;
+        }
+        .table-colunm1 {
+          width: 116px !important;
+        }
+        .table-colunm2 {
+          width: 316px !important;
+        }
+        .table-colunm3 {
+          width: 416px !important;
+        }
+        .button {
+          cursor: pointer; /* 改变鼠标样式为手形 */
+        }
+        .button:hover {
+          color: $global-color-107;
+        }
+      }
+      .value:nth-child(2n) {
+        background-color: rgba(255, 255, 255, 0.1);
+      }
+    }
+    .twoTotal {
+      display: flex;
+      justify-content: center;
+      margin: 20px 0;
+    }
+  }
+}
+</style>

+ 1 - 1
src/views/eight/index.vue

@@ -160,7 +160,7 @@ onMounted(async () => {
 const search = async () => {}
 // 查看详情
 const toView = async (item) => {
-  router.push({ path: '/industry/detail', query: { id: item.id || item._id } })
+  console.log(item)
 }
 </script>
 <style scoped lang="scss">

+ 2 - 8
src/views/four/parts/index.vue

@@ -101,13 +101,7 @@
             :wheel="true"
             :isWatch="true"
           >
-            <el-col
-              :span="24"
-              class="list"
-              v-for="(item, index) in exportList"
-              :key="index"
-              @click="toView(item, '1')"
-            >
+            <el-col :span="24" class="list" v-for="(item, index) in exportList" :key="index">
               <el-col :span="2" class="content textOne">
                 <el-tooltip effect="dark" :content="item.name" placement="top">
                   {{ item.name || '暂无名称' }}
@@ -129,7 +123,7 @@
                 {{ item.direction || '暂无研究方向' }}
               </el-col>
               <el-col :span="4" class="content textOne">
-                <el-button @click.stop="toChat(item)" type="primary"> 联络专家 </el-button>
+                <el-button @click.stop="toView(item, '1')" type="primary"> 查看详情 </el-button>
               </el-col>
             </el-col>
           </vue3-seamless-scroll>

+ 21 - 3
src/views/nine/index.vue

@@ -72,15 +72,28 @@
           <div class="twoLeft">
             <span>所在地</span>
           </div>
-          <div class="twoRight">
+          <div v-if="!twoShow" class="twoRight">
             <div class="label" v-for="(item, index) in cityList.slice(0, 15)" :key="index">
               {{ item.label }}
             </div>
           </div>
+          <div v-else class="twoRight">
+            <div class="label" v-for="(item, index) in cityList" :key="index">
+              {{ item.label }}
+            </div>
+          </div>
+          <div class="button">
+            <span v-if="!twoShow" @click="twoShow = true">
+              <el-icon><ArrowDown /></el-icon>
+            </span>
+            <span v-else @click="twoShow = false">
+              <el-icon><ArrowUp /></el-icon>
+            </span>
+          </div>
         </div>
       </div>
       <div class="thr">
-        <div class="list" v-for="(item, index) in list" :key="index">
+        <div class="list" v-for="(item, index) in list" :key="index" @click="toView(item)">
           <div class="list_1">
             <el-image class="image" :src="file[index]" fit="fill" />
             <div class="box">
@@ -217,6 +230,7 @@ const list = ref([
 ])
 // 是否展开
 const oneShow = ref(false)
+const twoShow = ref(false)
 // 字典表
 const fieldList = ref([])
 const moneyList = ref([])
@@ -286,7 +300,7 @@ const searchOther = async () => {
 }
 // 查看详情
 const toView = async (item) => {
-  router.push({ path: '/industry/detail', query: { id: item.id || item._id } })
+  router.push({ path: '/achievement/detail', query: { id: item.id || item._id } })
 }
 </script>
 <style scoped lang="scss">
@@ -343,10 +357,14 @@ const toView = async (item) => {
           color: #0a58c2;
           border: solid 1px #006dd2;
         }
+        .label:hover {
+          color: $global-color-107;
+        }
       }
       .button {
         display: flex;
         align-items: center;
+        margin: 0 5px 0 0;
       }
     }
     .twoSeacher:last-child {

+ 30 - 2
src/views/seven/index.vue

@@ -42,11 +42,24 @@
           <div class="twoLeft">
             <span>所在地</span>
           </div>
-          <div class="twoRight">
+          <div v-if="!twoShow" class="twoRight">
             <div class="label" v-for="(item, index) in cityList.slice(0, 15)" :key="index">
               {{ item.label }}
             </div>
           </div>
+          <div v-else class="twoRight">
+            <div class="label" v-for="(item, index) in cityList" :key="index">
+              {{ item.label }}
+            </div>
+          </div>
+          <div class="button">
+            <span v-if="!twoShow" @click="twoShow = true">
+              <el-icon><ArrowDown /></el-icon>
+            </span>
+            <span v-else @click="twoShow = false">
+              <el-icon><ArrowUp /></el-icon>
+            </span>
+          </div>
         </div>
       </div>
       <div class="twoTwo">
@@ -61,7 +74,7 @@
             <div class="table-colunm table-colunm2">{{ item.name || '暂无' }}</div>
             <div class="table-colunm">{{ item.field || '暂无' }}</div>
             <div class="table-colunm">{{ item.time || '暂无' }}</div>
-            <div class="table-colunm">查看详情</div>
+            <div class="table-colunm button" @click="toView(item)">查看详情</div>
           </div>
         </div>
         <div class="twoTotal">
@@ -85,6 +98,7 @@ const loading = ref(false)
 const router = useRouter()
 // 是否展开
 const oneShow = ref(false)
+const twoShow = ref(false)
 const cityList = ref([])
 const typeList = ref([
   { label: '不限', value: '-1' },
@@ -179,6 +193,10 @@ onMounted(async () => {
   )
   loading.value = false
 })
+// 查看详情
+const toView = (item) => {
+  router.push({ path: '/service/detail', query: { id: item.id || item._id } })
+}
 </script>
 <style scoped lang="scss">
 .main {
@@ -236,10 +254,14 @@ onMounted(async () => {
           color: #0a58c2;
           border: solid 1px #006dd2;
         }
+        .label:hover {
+          color: $global-color-107;
+        }
       }
       .button {
         display: flex;
         align-items: center;
+        margin: 0 5px 0 0;
       }
     }
   }
@@ -273,6 +295,12 @@ onMounted(async () => {
         .table-colunm2 {
           width: 280px !important;
         }
+        .button {
+          cursor: pointer; /* 改变鼠标样式为手形 */
+        }
+        .button:hover {
+          color: $global-color-107;
+        }
       }
       .value:nth-child(2n) {
         background-color: rgba(255, 255, 255, 0.1);

+ 20 - 1
src/views/six/index.vue

@@ -32,11 +32,24 @@
           <div class="twoLeft">
             <span>所在地</span>
           </div>
-          <div class="twoRight">
+          <div v-if="!twoShow" class="twoRight">
             <div class="label" v-for="(item, index) in cityList.slice(0, 15)" :key="index">
               {{ item.label }}
             </div>
           </div>
+          <div v-else class="twoRight">
+            <div class="label" v-for="(item, index) in cityList" :key="index">
+              {{ item.label }}
+            </div>
+          </div>
+          <div class="button">
+            <span v-if="!twoShow" @click="twoShow = true">
+              <el-icon><ArrowDown /></el-icon>
+            </span>
+            <span v-else @click="twoShow = false">
+              <el-icon><ArrowUp /></el-icon>
+            </span>
+          </div>
         </div>
         <div class="twoIpunt">
           <a-input
@@ -112,6 +125,7 @@ const loading = ref(false)
 const router = useRouter()
 // 是否展开
 const oneShow = ref(false)
+const twoShow = ref(false)
 const cityList = ref([])
 const plateList = ref([
   { label: '不限', value: '-1' },
@@ -294,10 +308,15 @@ const sizeChange = (limits) => {
           color: #0a58c2;
           border: solid 1px #006dd2;
         }
+
+        .label:hover {
+          color: $global-color-107;
+        }
       }
       .button {
         display: flex;
         align-items: center;
+        margin: 0 5px 0 0;
       }
     }
     .twoSeacher:first-child {

+ 17 - 4
src/views/ten/index.vue

@@ -8,7 +8,12 @@
         <el-row :gutter="20">
           <el-col :span="18" class="twoLeft">
             <div class="twoLeft_1">
-              <div class="list" v-for="(item, index) in list" :key="index">
+              <div
+                class="list"
+                v-for="(item, index) in list"
+                :key="index"
+                @click="toMore(item.value)"
+              >
                 <el-image class="image" :src="item.url" fit="fill" />
                 <div class="box">
                   <div class="name textMore">{{ item.name || '暂无' }}</div>
@@ -20,7 +25,7 @@
           <el-col :span="6" class="twoRight">
             <el-col :span="24" class="title">
               <el-col :span="16" class="left">赛事推广 </el-col>
-              <el-col :span="8" class="right" @click="toMore"> 查看更多</el-col>
+              <el-col :span="8" class="right" @click="toMore('4')"> 查看更多</el-col>
             </el-col>
             <el-col :span="24" class="content">
               <el-col
@@ -212,8 +217,16 @@ onMounted(async () => {
 })
 const search = async () => {}
 // 查看详情
-const toView = async (item) => {
-  router.push({ path: '/industry/detail', query: { id: item.id || item._id } })
+const toView = (item) => {
+  router.push({ path: '/match/detail', query: { id: item.id || item._id } })
+}
+// 查看更多
+const toMore = (type) => {
+  if (type == '0') router.push({ path: '/expert' })
+  else if (type == '1') router.push({ path: '/thr' })
+  else if (type == '2') router.push({ path: '/company' })
+  else if (type == '3') router.push({ path: '/project' })
+  else if (type == '4') router.push({ path: '/five' })
 }
 </script>
 <style scoped lang="scss">

+ 1 - 1
src/views/thirteen/index.vue

@@ -326,7 +326,7 @@ const toChange = async (e) => {
 }
 // 查看详情
 const toView = async (item) => {
-  router.push({ path: '/journal', query: { id: item.id || item._id } })
+  router.push({ path: '/study/detail', query: { id: item.id || item._id } })
 }
 </script>
 <style scoped lang="scss">

+ 19 - 1
src/views/thr/parts/demand.vue

@@ -38,11 +38,24 @@
         <div class="demandOneLeft">
           <span>所在地</span>
         </div>
-        <div class="demandOneRight">
+        <div v-if="!oneShow" class="demandOneRight">
           <div class="label" v-for="(item, index) in cityList.slice(0, 15)" :key="index">
             {{ item.label }}
           </div>
         </div>
+        <div v-else class="demandOneRight">
+          <div class="label" v-for="(item, index) in cityList" :key="index">
+            {{ item.label }}
+          </div>
+        </div>
+        <div class="button">
+          <span v-if="!oneShow" @click="oneShow = true">
+            <el-icon><ArrowDown /></el-icon>
+          </span>
+          <span v-else @click="oneShow = false">
+            <el-icon><ArrowUp /></el-icon>
+          </span>
+        </div>
       </div>
     </div>
     <div class="demandTwo">
@@ -75,6 +88,7 @@ const plateList = inject('plateList')
 const typeList = inject('typeList')
 const cityList = inject('cityList')
 // 是否展开
+const oneShow = ref(false)
 const twoShow = ref(false)
 const column = ref([
   { name: '序号', style: { width: '100px' }, key: 'num' },
@@ -240,10 +254,14 @@ const toView = (item) => {
           color: #0a58c2;
           border: solid 1px #006dd2;
         }
+        .label:hover {
+          color: $global-color-107;
+        }
       }
       .button {
         display: flex;
         align-items: center;
+        margin: 0 5px 0 0;
       }
     }
   }

+ 19 - 1
src/views/thr/parts/supply.vue

@@ -38,11 +38,24 @@
         <div class="demandOneLeft">
           <span>所在地</span>
         </div>
-        <div class="demandOneRight">
+        <div v-if="!twoShow" class="demandOneRight">
           <div class="label" v-for="(item, index) in cityList.slice(0, 15)" :key="index">
             {{ item.label }}
           </div>
         </div>
+        <div v-else class="demandOneRight">
+          <div class="label" v-for="(item, index) in cityList" :key="index">
+            {{ item.label }}
+          </div>
+        </div>
+        <div class="button">
+          <span v-if="!twoShow" @click="twoShow = true">
+            <el-icon><ArrowDown /></el-icon>
+          </span>
+          <span v-else @click="twoShow = false">
+            <el-icon><ArrowUp /></el-icon>
+          </span>
+        </div>
       </div>
     </div>
     <div class="demandTwo">
@@ -76,6 +89,7 @@ const typeList = inject('typeList')
 const cityList = inject('cityList')
 // 是否展开
 const oneShow = ref(false)
+const twoShow = ref(false)
 const column = ref([
   { name: '序号', style: { width: '100px' }, key: 'num' },
   { name: '供方内容', style: { width: '220px' }, key: 'name' },
@@ -240,10 +254,14 @@ const toView = (item) => {
           color: #0a58c2;
           border: solid 1px #006dd2;
         }
+        .label:hover {
+          color: $global-color-107;
+        }
       }
       .button {
         display: flex;
         align-items: center;
+        margin: 0 5px 0 0;
       }
     }
   }