zs 1 yıl önce
ebeveyn
işleme
c52ee0b0e9

+ 15 - 0
src/router/index.js

@@ -54,6 +54,21 @@ const router = createRouter({
           meta: { title: '吉林省信息技术孵化平台-成果展示' },
           component: () => import('@/views/achievement/index.vue')
         },
+        {
+          path: '/achievement/detail',
+          meta: { title: '吉林省重点领域技术转移平台' },
+          component: () => import('@/views/achievement/detail.vue')
+        },
+        {
+          path: '/demand/detail',
+          meta: { title: '吉林省重点领域技术转移平台' },
+          component: () => import('@/views/demand/detail.vue')
+        },
+        {
+          path: '/news/detail',
+          meta: { title: '吉林省重点领域技术转移平台' },
+          component: () => import('@/views/news/detail.vue')
+        },
         {
           path: '/login',
           name: 'login',

+ 252 - 0
src/views/achievement/detail.vue

@@ -0,0 +1,252 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="main animate__animated animate__backInRight" v-loading="loading">
+        <div class="w_1200">
+          <el-col :span="24" class="one">
+            <el-row :span="24" class="one_1">
+              <el-col :span="20" class="title">{{ info.title || '暂无标题' }}</el-col>
+              <el-col :span="4" class="file">
+                <el-icon>
+                  <Download />
+                </el-icon>
+                附件下载
+              </el-col>
+            </el-row>
+            <el-row :span="24" class="one_2"> 普通许可 </el-row>
+          </el-col>
+          <el-col :span="24" class="two">
+            <a-descriptions bordered>
+              <a-descriptions-item label="行业分类">行业分类</a-descriptions-item>
+              <a-descriptions-item label="成果属性">成果属性</a-descriptions-item>
+              <a-descriptions-item label="出让方式">出让方式</a-descriptions-item>
+              <a-descriptions-item label="成熟度">成熟度</a-descriptions-item>
+              <a-descriptions-item label="技术分类">技术分类</a-descriptions-item>
+              <a-descriptions-item label="成果地区">成果地区</a-descriptions-item>
+              <a-descriptions-item label="发布时间">发布时间</a-descriptions-item>
+            </a-descriptions>
+          </el-col>
+          <el-col :span="24" class="thr">
+            <el-col :span="24" class="thr_1">
+              <p>单位信息</p>
+            </el-col>
+            <el-row :span="24" class="thr_2">
+              <el-col :span="17" class="left">
+                <el-col :span="24" class="name">
+                  {{ info.unit || '暂无' }}
+                </el-col>
+                <el-col :span="24" class="other">
+                  <span>联系人</span>{{ info.unit || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="4" class="right">
+                <a-button type="primary">
+                  <template #icon>
+                    <MessageOutlined />
+                  </template>
+                  点击在线洽谈
+                </a-button>
+              </el-col>
+            </el-row>
+          </el-col>
+          <a-divider />
+          <el-col :span="24" class="four">
+            <el-col :span="24" class="four_1">
+              <p>成果描述</p>
+            </el-col>
+            <el-col :span="24" class="four_2">{{ info.brief || '暂无' }}</el-col>
+          </el-col>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script setup>
+// 基础
+import { MessageOutlined } from '@ant-design/icons-vue'
+
+// 加载中
+const loading = ref(false)
+const info = ref({
+  unit: '舟山海韵机械制造有限公司',
+  title: '双头颗粒灌装机',
+  time: '2024-01-05 09:12:23',
+  end_time: '2024-01-05 09:12:23',
+  money: '3',
+  brief: '一种双头颗粒的灌装机'
+})
+// 请求
+onMounted(async () => {
+  loading.value = true
+  await searchOther()
+  await search()
+  loading.value = false
+})
+const search = async () => {
+  //   let id = route.query.id;
+  //   if (id) {
+  //     let res: IQueryResult = await userCheckAxios.fetch(id);
+  //     if (res.errcode == '0') {
+  //       let info: any = res.data as {};
+  //       form.value = info;
+  //       dataChange({ value: info.work_status, model: 'work_status' });
+  //     }
+  //   }
+}
+// 查询其他信息
+const searchOther = async () => {
+  //   let res: IQueryResult;
+  //   // 性别
+  //   res = await dictAxios.query({ type: 'common_gender' });
+  //   if (res.errcode == '0') genderList.value = res.data;
+}
+</script>
+<style scoped lang="scss">
+.main {
+  .one {
+    margin: 10px 0 0 0;
+    background: #f7f7f7;
+    padding: 24px;
+    border-top: 6px solid #2374ff;
+    overflow: hidden;
+    border-radius: 0 0 5px 5px;
+
+    .one_1 {
+      margin: 0 0 10px 0;
+
+      .title {
+        font-size: 18px;
+        font-weight: 700;
+        color: #383b40;
+      }
+
+      .file {
+        display: flex;
+        align-items: center;
+        justify-content: end;
+        font-family: PingFangSC-Regular;
+        font-size: 14px;
+        color: #2374ff;
+        text-align: right;
+      }
+    }
+
+    .one_2 {
+      display: inline-block;
+      font-size: 12px;
+      background: rgba(18, 172, 117, 0.05);
+      color: #12ac75;
+      padding: 0 15px;
+      height: 20px;
+      line-height: 20px;
+      border-radius: 10px;
+      margin-bottom: 2px;
+    }
+  }
+
+  .two {
+    background: #f9fafb;
+    border-radius: 2px;
+    padding: 30px;
+    margin: 34px 0 20px;
+    font-family: PingFangSC-Medium;
+    font-size: 14px;
+    color: #383b40;
+    line-height: 14px;
+  }
+
+  .thr {
+    margin: 0 0 10px 0;
+
+    .thr_1 {
+      width: 100%;
+      height: 40px;
+      line-height: 40px;
+      border-bottom: 2px solid #2374ff;
+      margin: 20px 0;
+      background: #f7f7f7;
+
+      p {
+        float: left;
+        padding: 0 20px;
+        height: 40px;
+        border-bottom: 2px solid #2374ff;
+        color: #fff;
+        font-size: 18px;
+        background: #2374ff;
+      }
+    }
+
+    .thr_2 {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      background: #fff;
+      border: 1px solid #edeff2;
+      box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.03);
+      border-radius: 2px;
+      padding: 30px 20px;
+
+      .left {
+        .name {
+          height: 20px;
+          font-family: PingFangSC-Semibold;
+          font-size: 18px;
+          color: #383b40;
+          line-height: 20px;
+          font-weight: 700;
+          margin-bottom: 8px;
+        }
+
+        .other {
+          height: 14px;
+          font-family: PingFangSC-Medium;
+          font-size: 14px;
+          color: #383b40;
+          line-height: 14px;
+          font-weight: 700;
+
+          span {
+            height: 14px;
+            font-family: PingFangSC-Regular;
+            font-size: 14px;
+            color: #7e8288;
+            line-height: 14px;
+            font-weight: 400;
+            margin-right: 16px;
+          }
+        }
+      }
+
+      .right {
+        display: flex;
+        justify-content: space-between;
+      }
+    }
+  }
+
+  .four {
+    margin: 0 0 10px 0;
+
+    .four_1 {
+      width: 100%;
+      height: 40px;
+      line-height: 40px;
+      border-bottom: 2px solid #2374ff;
+      margin: 20px 0;
+      background: #f7f7f7;
+
+      p {
+        float: left;
+        padding: 0 20px;
+        height: 40px;
+        border-bottom: 2px solid #2374ff;
+        color: #fff;
+        font-size: 18px;
+        background: #2374ff;
+      }
+    }
+  }
+}
+</style>

+ 247 - 0
src/views/demand/detail.vue

@@ -0,0 +1,247 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="main animate__animated animate__backInRight" v-loading="loading">
+        <div class="w_1200">
+          <el-col :span="24" class="one">
+            <el-row :span="24" class="one_1">
+              <el-col :span="20" class="title">{{ info.title || '暂无标题' }}</el-col>
+              <el-col :span="4" class="file">
+                <el-icon>
+                  <Download />
+                </el-icon>
+                附件下载
+              </el-col>
+            </el-row>
+            <el-row :span="24" class="one_2"> 普通许可 </el-row>
+          </el-col>
+          <el-col :span="24" class="two">
+            <a-descriptions bordered>
+              <a-descriptions-item label="行业领域">行业领域</a-descriptions-item>
+              <a-descriptions-item label="需求紧急度">需求紧急度</a-descriptions-item>
+              <a-descriptions-item label="合作方式">合作方式</a-descriptions-item>
+              <a-descriptions-item label="有效期">有效期</a-descriptions-item>
+              <a-descriptions-item label="地区">地区</a-descriptions-item>
+            </a-descriptions>
+          </el-col>
+          <el-col :span="24" class="thr">
+            <el-col :span="24" class="thr_1">
+              <p>单位信息</p>
+            </el-col>
+            <el-row :span="24" class="thr_2">
+              <el-col :span="17" class="left">
+                <el-col :span="24" class="name">
+                  {{ info.unit || '暂无' }}
+                </el-col>
+                <el-col :span="24" class="other">
+                  <span>联系人</span>{{ info.unit || '暂无' }}
+                </el-col>
+              </el-col>
+              <el-col :span="4" class="right">
+                <a-button type="primary">
+                  <template #icon>
+                    <MessageOutlined />
+                  </template>
+                  点击在线洽谈
+                </a-button>
+              </el-col>
+            </el-row>
+          </el-col>
+          <a-divider />
+          <el-col :span="24" class="four">
+            <el-col :span="24" class="four_1">
+              <p>需求详情</p>
+            </el-col>
+            <el-col :span="24" class="four_2">{{ info.brief || '暂无' }}</el-col>
+          </el-col>
+        </div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script setup>
+// 基础
+import { MessageOutlined } from '@ant-design/icons-vue'
+
+// 加载中
+const loading = ref(false)
+const info = ref({
+  unit: '舟山海韵机械制造有限公司',
+  title: '异戊烯醇产品后续加工需要技术支持',
+  brief: '异戊烯醇产品完成之后后续加工需要技术支持'
+})
+// 请求
+onMounted(async () => {
+  loading.value = true
+  await searchOther()
+  await search()
+  loading.value = false
+})
+const search = async () => {
+  //   let id = route.query.id;
+  //   if (id) {
+  //     let res: IQueryResult = await userCheckAxios.fetch(id);
+  //     if (res.errcode == '0') {
+  //       let info: any = res.data as {};
+  //       form.value = info;
+  //       dataChange({ value: info.work_status, model: 'work_status' });
+  //     }
+  //   }
+}
+// 查询其他信息
+const searchOther = async () => {
+  //   let res: IQueryResult;
+  //   // 性别
+  //   res = await dictAxios.query({ type: 'common_gender' });
+  //   if (res.errcode == '0') genderList.value = res.data;
+}
+</script>
+<style scoped lang="scss">
+.main {
+  .one {
+    margin: 10px 0 0 0;
+    background: #f7f7f7;
+    padding: 24px;
+    border-top: 6px solid #2374ff;
+    overflow: hidden;
+    border-radius: 0 0 5px 5px;
+
+    .one_1 {
+      margin: 0 0 10px 0;
+
+      .title {
+        font-size: 18px;
+        font-weight: 700;
+        color: #383b40;
+      }
+
+      .file {
+        display: flex;
+        align-items: center;
+        justify-content: end;
+        font-family: PingFangSC-Regular;
+        font-size: 14px;
+        color: #2374ff;
+        text-align: right;
+      }
+    }
+
+    .one_2 {
+      display: inline-block;
+      font-size: 12px;
+      background: rgba(18, 172, 117, 0.05);
+      color: #12ac75;
+      padding: 0 15px;
+      height: 20px;
+      line-height: 20px;
+      border-radius: 10px;
+      margin-bottom: 2px;
+    }
+  }
+
+  .two {
+    background: #f9fafb;
+    border-radius: 2px;
+    padding: 30px;
+    margin: 34px 0 20px;
+    font-family: PingFangSC-Medium;
+    font-size: 14px;
+    color: #383b40;
+    line-height: 14px;
+  }
+
+  .thr {
+    margin: 0 0 10px 0;
+
+    .thr_1 {
+      width: 100%;
+      height: 40px;
+      line-height: 40px;
+      border-bottom: 2px solid #2374ff;
+      margin: 20px 0;
+      background: #f7f7f7;
+
+      p {
+        float: left;
+        padding: 0 20px;
+        height: 40px;
+        border-bottom: 2px solid #2374ff;
+        color: #fff;
+        font-size: 18px;
+        background: #2374ff;
+      }
+    }
+
+    .thr_2 {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+      background: #fff;
+      border: 1px solid #edeff2;
+      box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.03);
+      border-radius: 2px;
+      padding: 30px 20px;
+
+      .left {
+        .name {
+          height: 20px;
+          font-family: PingFangSC-Semibold;
+          font-size: 18px;
+          color: #383b40;
+          line-height: 20px;
+          font-weight: 700;
+          margin-bottom: 8px;
+        }
+
+        .other {
+          height: 14px;
+          font-family: PingFangSC-Medium;
+          font-size: 14px;
+          color: #383b40;
+          line-height: 14px;
+          font-weight: 700;
+
+          span {
+            height: 14px;
+            font-family: PingFangSC-Regular;
+            font-size: 14px;
+            color: #7e8288;
+            line-height: 14px;
+            font-weight: 400;
+            margin-right: 16px;
+          }
+        }
+      }
+
+      .right {
+        display: flex;
+        justify-content: space-between;
+      }
+    }
+  }
+
+  .four {
+    margin: 0 0 10px 0;
+
+    .four_1 {
+      width: 100%;
+      height: 40px;
+      line-height: 40px;
+      border-bottom: 2px solid #2374ff;
+      margin: 20px 0;
+      background: #f7f7f7;
+
+      p {
+        float: left;
+        padding: 0 20px;
+        height: 40px;
+        border-bottom: 2px solid #2374ff;
+        color: #fff;
+        font-size: 18px;
+        background: #2374ff;
+      }
+    }
+  }
+}
+</style>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 90 - 0
src/views/news/detail.vue