guhongwei 4 年之前
父节点
当前提交
92cde8faa6

+ 1 - 1
src/views/adminCenter/openinfo/detail.vue

@@ -3,7 +3,7 @@
     <data-form :fields="fields" :data="data" @save="toSave" returns="/adminCenter/openinfo">
       <template #options="{ item }">
         <template v-if="item.model === 'column_name'">
-          <el-option v-for="(i, index) in typeList" :key="`columns-name-${index}`" :label="i" :value="i"></el-option>
+          <el-option v-for="(i, index) in typeList" :key="`columns-name-${index}`" :label="i.label" :value="i.label"></el-option>
         </template>
       </template>
       <template #custom="{ item }">

+ 1 - 1
src/views/adminCenter/openinfo/index.vue

@@ -6,7 +6,7 @@
       </template>
       <template #options="{ item }">
         <template v-if="item.prop === 'column_name'">
-          <el-option v-for="(i, index) in typeList" :key="`columns-name-${index}`" :label="i" :value="i"></el-option>
+          <el-option v-for="(i, index) in typeList" :key="`columns-name-${index}`" :label="i.label" :value="i.label"></el-option>
         </template>
       </template>
     </data-table>

+ 142 - 89
src/views/service/index.vue

@@ -11,37 +11,68 @@
               </el-col>
             </el-col>
           </el-col>
-          <el-col :span="24" class="common two">
-            <el-col :span="12" class="left">
+          <el-col :span="24" class="common">
+            <el-col :span="24" class="common_1">
+              <top topText="科技项目评审" :userMore="false"></top>
+              <list type="1" :list="oneList" @detail="detail"></list>
+            </el-col>
+            <el-col :span="24" class="common_1">
               <top topText="高企政策服务" :userMore="false"></top>
-              <list type="1" :list="oneList"></list>
+              <list type="1" :list="twoList" @detail="detail"></list>
             </el-col>
-            <el-col :span="12" class="left"
-              ><top topText="创新劵服务" :userMore="false"></top>
-              <list type="2" :list="twoList"></list>
+            <el-col :span="24" class="common_1">
+              <top topText="创新券服务" :userMore="false"></top>
+              <list type="1" :list="thrList" @detail="detail"></list>
             </el-col>
-          </el-col>
-          <el-col :span="24" class="common thr">
-            <el-col :span="24" class="left"
-              ><top topText="科技成果服务" :userMore="false"></top>
-              <list type="3" :list="thrList"></list>
+            <el-col :span="24" class="common_1">
+              <top topText="科技成果评价" :userMore="false"></top>
+              <list type="1" :list="fourList" @detail="detail"></list>
+            </el-col>
+            <el-col :span="24" class="common_1">
+              <top topText="专家智库" :userMore="false"></top>
+              <list type="1" :list="fiveList" @detail="detail"></list>
+            </el-col>
+            <el-col :span="24" class="common_1">
+              <top topText="企业管理" :userMore="false"></top>
+              <list type="1" :list="sixList" @detail="detail"></list>
+            </el-col>
+            <el-col :span="24" class="common_1">
+              <top topText="机构管理" :userMore="false"></top>
+              <list type="1" :list="sevenList" @detail="detail"></list>
             </el-col>
           </el-col>
         </div>
       </el-col>
     </el-row>
-    <el-dialog :title="dialogTitle" class="dialog2" :visible.sync="dialog2" width="30%" :before-close="dialog2Colse">
-      <el-form :model="form2" :rules="rulesForm2" ref="form2" label-width="80px">
-        <el-form-item label="用户账号" prop="institution_code">
-          <el-input v-model="form2.institution_code" placeholder="请输入用户账号" maxlength="18"></el-input>
-        </el-form-item>
-        <el-form-item label="登录密码" prop="passwd">
-          <el-input v-model="form2.passwd" placeholder="请输入登录密码" type="password" show-password></el-input>
-        </el-form-item>
-        <el-col :span="24" class="btn">
-          <el-button type="primary" size="mini" @click="onSubmit2('form2')">登录</el-button>
-        </el-col>
-      </el-form>
+    <el-dialog :title="dialogTitle" class="dialog2" :visible.sync="dialog2" width="70%" :before-close="dialog2Colse">
+      <info :type="dialogType"></info>
+      <el-col :span="24" class="two">
+        <el-form :model="form2" :rules="rulesForm2" ref="form2" label-width="80px">
+          <el-form-item label="用户账号" prop="institution_code">
+            <el-input v-model="form2.institution_code" placeholder="请输入用户账号" maxlength="18"></el-input>
+          </el-form-item>
+          <el-form-item label="登录密码" prop="passwd">
+            <el-input v-model="form2.passwd" placeholder="请输入登录密码" type="password" show-password></el-input>
+          </el-form-item>
+          <el-col :span="24" class="btn">
+            <el-button type="primary" @click="onSubmit2('form2')">提交登录</el-button>
+          </el-col>
+        </el-form>
+      </el-col>
+    </el-dialog>
+    <el-dialog title="信息详情" class="dialog" :visible.sync="dialog" width="50%" :before-close="dialogColse">
+      <div>
+        <p>{{ info.title }}</p>
+        <p>
+          <span>信息来源:{{ info.origin }}</span>
+          <span>发布时间:{{ info.release_time }}</span>
+        </p>
+        <p v-if="info.image">
+          <img v-for="(item, index) in info.image" :key="index" :src="item.url" />
+        </p>
+        <p v-html="info.content"></p>
+        <el-link :underline="false" :href="getImage(info.fileUrl)">{{ getName(info.fileUrl) }}</el-link>
+      </div>
     </el-dialog>
   </div>
 </template>
@@ -49,16 +80,17 @@
 <script>
 import top from './parts/top.vue';
 import list from './parts/list.vue';
+import info from './parts/info.vue';
 import { btnList } from './btnList.js';
+const { openColumn } = require('@common/dict/index');
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: organization } = createNamespacedHelpers('organization');
-const { mapActions: policy } = createNamespacedHelpers('policy');
-const { mapActions: ticket } = createNamespacedHelpers('ticket');
-const { mapActions: achieveApply } = createNamespacedHelpers('achieveApply');
+const { mapActions: openinfo } = createNamespacedHelpers('openInfo');
+const _ = require('lodash');
 export default {
   name: 'index',
   props: {},
-  components: { top, list },
+  components: { top, list, info },
   data: function () {
     return {
       list: btnList,
@@ -71,46 +103,26 @@ export default {
       },
       dialogTitle: '高企政策服务',
       dialogType: undefined,
-      // 高企政策服务-列表
+      // 下方列表
+      // 栏目列表
       oneList: [],
-      // 创新券服务-列表
-      twoList: [
-        {
-          company: '22',
-        },
-        {
-          company: '十条数据',
-        },
-      ],
-      // 科技成果评价服务-列表
-      thrList: [
-        {
-          basic: {
-            achieve_name: '成果名称',
-            achieve_date: '2021-01-01 01:00:00',
-            achieve_type: '城固了捏',
-            achieve_form: '成果形式',
-          },
-        },
-        {
-          basic: {
-            achieve_name: '10条数据',
-            achieve_date: '2021-01-01 01:00:00',
-            achieve_type: '城固了捏',
-            achieve_form: '成果形式',
-          },
-        },
-      ],
+      twoList: [],
+      thrList: [],
+      fourList: [],
+      fiveList: [],
+      sixList: [],
+      sevenList: [],
+      // 信息详情
+      dialog: false,
+      info: {},
     };
   },
   async created() {
     await this.search();
   },
   methods: {
-    ...policy({ policyQuery: 'query' }),
-    ...ticket({ ticketQuery: 'query' }),
-    ...achieveApply({ achieveApplyQuery: 'query' }),
     ...organization(['login', 'fetch']),
+    ...openinfo(['query']),
     link(data) {
       const { type, name } = data;
       if (type == '1') {
@@ -155,24 +167,33 @@ export default {
     },
     // 查询列表信息
     async search({ skip = 0, limit = 10, ...info } = {}) {
-      // 高企政策服务
-      let res = await this.policyQuery({ skip, limit: 7, status: 1, ...info });
-      if (this.$checkRes(res)) this.$set(this, `oneList`, res.data);
-      res = await this.ticketQuery({ skip, limit: 7, status: 1, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `twoList`, res.data);
+      for (const val of openColumn) {
+        info.column_name = val.label;
+        let res = await this.query({ skip, limit: 6, ...info });
+        if (this.$checkRes(res)) {
+          this.$set(this, `${val.value}List`, res.data);
+        }
       }
-      // 创新券
-      res = await this.ticketQuery({ skip, limit: 7, status: 4, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `twoList`, res.data);
+    },
+    // 查看列表信息详情
+    detail(data) {
+      this.$set(this, `info`, data);
+      this.dialog = true;
+    },
+    getImage(data) {
+      if (_.map(data, 'url')[0]) {
+        return _.map(data, 'url')[0];
       }
-      // 科技成果评价
-      res = await this.achieveApplyQuery({ skip, limit: 12, status: 6, ...info });
-      if (this.$checkRes(res)) {
-        this.$set(this, `thrList`, res.data);
+    },
+    getName(data) {
+      if (_.map(data, 'name')[0]) {
+        return _.map(data, 'name')[0];
       }
     },
+    // 关闭信息查看
+    dialogColse() {
+      this.dialog = false;
+    },
     // 查询企业详细信息
     async searchCompany(data) {
       let res = await this.fetch(data.user_id);
@@ -236,34 +257,66 @@ export default {
     }
   }
   .common {
-    margin: 0 0 10px 0;
-    .left {
-      width: 49.5%;
-      height: 500px;
+    .common_1 {
+      min-height: 140px;
       overflow: hidden;
       box-shadow: 0 0 4px #409eff;
       border-radius: 10px;
       margin: 0 10px 10px 0;
       padding: 10px;
     }
-    .left:nth-child(2n) {
-      margin: 0 0 10px 0;
-    }
   }
-  .thr {
-    width: 100%;
-    .left {
-      width: 100%;
+}
+.dialog2 {
+  .two {
+    height: 200px;
+    background: #fff;
+    padding: 0 20%;
+    .btn {
+      text-align: center;
+      padding: 10px 0;
     }
   }
+  /deep/.el-dialog__body {
+    padding: 0;
+  }
 }
-.dialog2 {
-  .btn {
+.dialog {
+  /deep/.el-dialog__body {
+    padding: 10px;
+  }
+  p:nth-child(1) {
+    font-size: 20px;
     text-align: center;
-    padding: 10px 0;
+    color: #000;
+    margin: 0 0 10px 0;
   }
-  /deep/.el-dialog__body {
-    height: 180px;
+  p:nth-child(2) {
+    text-align: center;
+    margin: 0 0 10px 0;
+    span {
+      font-size: 16px;
+      padding: 0 10px;
+    }
+  }
+  p:nth-child(3) {
+    text-align: center;
+    img {
+      width: 49.4%;
+      height: 200px;
+      margin: 0 10px 10px 0;
+      border-radius: 10px;
+    }
+    img:nth-child(2n) {
+      margin: 0 0 10px 0;
+    }
+  }
+  p:nth-child(4) {
+    font-size: 16px;
+    margin: 0 0 10px 0;
+  }
+  .el-link {
+    font-size: 16px;
   }
 }
 </style>

+ 136 - 0
src/views/service/parts/info.vue

@@ -0,0 +1,136 @@
+<template>
+  <div id="info">
+    <el-row>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="one" v-if="type == '2'">
+          <el-col :span="24" class="title"><span>服务描述</span></el-col>
+          <el-col :span="24" class="info">
+            在平台当中高企可在此根据企业自身条件以及经营情况,进行[<span>研发补贴</span>]和[<span>奖励兑换</span>]的领取申报。申报领取成功的企业可享受高企的优惠政策。
+          </el-col>
+          <el-col :span="24" class="title"><span>申报流程</span></el-col>
+          <el-col :span="24" class="btn">
+            <el-steps :active="4" align-center>
+              <el-step title="企业注册" description="如您尚未成为平台用户,请先注册成为平台用户"></el-step>
+              <el-step title="登录" description="企业需使用统一社会信用代码+登录密码,方可登录"></el-step>
+              <el-step title="申报信息填写" description="申报信息请谨慎填写,此信息将影响您的申报审核结果"></el-step>
+              <el-step title="申报结果" description="申报结果查看,可凭此结果领取高企优惠政策"></el-step>
+            </el-steps>
+          </el-col>
+        </el-col>
+        <el-col :span="24" class="two" v-else-if="type == '3'">
+          <el-col :span="24" class="title"><span>服务描述</span></el-col>
+          <el-col :span="24" class="info">
+            在平台当中高企可在此根据企业自身条件以及经营情况,进行创新券的领取申报。创新券是政府为了帮助小微企业、优秀创业团队购买创新资源、科研服务而打造的服务系统。创新券由政府发放,小微企业和创业团队在开展创新创业活动过程中用创新券向高校院所购买科研服务,收取创新券的单位持创新券到指定部门兑现。
+          </el-col>
+          <el-col :span="24" class="title"><span>申报流程</span></el-col>
+          <el-col :span="24" class="btn">
+            <el-steps :active="6" align-center>
+              <el-step title="企业注册" description="如您尚未成为平台用户,请先注册成为平台用户"></el-step>
+              <el-step title="登录" description="企业需使用统一社会信用代码+登录密码,方可登录"></el-step>
+              <el-step title="企业资质材料上传" description="企业可根据提示,进行资质材料准备,并进行填写。"></el-step>
+              <el-step title="企业准备审核信息" description="企业信息准备,选择中介机构进行信息审核"></el-step>
+              <el-step title="合同上传" description="当中介机构审核企业信息通过后,企业可把所签署的合同上传,方便服务机构进行查看"></el-step>
+              <el-step title="创新券领取成功" description="当服务机构终审企业资料后,企业可持创新券到指定部门兑现"></el-step>
+            </el-steps>
+          </el-col>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'info',
+  props: {
+    type: { type: String },
+  },
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  methods: {},
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.main {
+  padding: 10px;
+  margin: 0 0 15px 0;
+  .one {
+    .title {
+      font-size: 18px;
+      font-weight: bold;
+      margin: 0 0 10px 0;
+      span {
+        display: inline-block;
+        background-color: #22529a;
+        color: #fff;
+        padding: 10px 20px;
+        border-radius: 8px;
+      }
+    }
+    .info {
+      font-size: 16px;
+      text-indent: 2rem;
+      margin: 0 0 10px 0;
+      padding: 0 0 10px 0;
+      border-bottom: 1px dashed #ccc;
+      color: #000;
+      font-weight: bold;
+      line-height: 30px;
+      span {
+        color: #ff0000;
+        padding: 0 5px;
+      }
+    }
+    .btn {
+      padding: 0 0 10px 0;
+      border-bottom: 1px dashed #ccc;
+    }
+  }
+  .two {
+    .title {
+      font-size: 18px;
+      font-weight: bold;
+      margin: 0 0 10px 0;
+      span {
+        display: inline-block;
+        background-color: #22529a;
+        color: #fff;
+        padding: 10px 20px;
+        border-radius: 8px;
+      }
+    }
+    .info {
+      font-size: 16px;
+      text-indent: 2rem;
+      margin: 0 0 10px 0;
+      padding: 0 0 10px 0;
+      border-bottom: 1px dashed #ccc;
+      color: #000;
+      font-weight: bold;
+      line-height: 30px;
+    }
+    .btn {
+      padding: 0 0 10px 0;
+      border-bottom: 1px dashed #ccc;
+    }
+  }
+}
+</style>

+ 16 - 121
src/views/service/parts/list.vue

@@ -3,50 +3,16 @@
     <el-row>
       <el-col :span="24" class="main">
         <el-col :span="24" class="one" v-if="type == '1'">
-          <el-col :span="24" class="oneList" v-for="(item, index) in list" :key="index">
-            <el-col :span="24" class="top">
-              <el-col :span="20" class="company textOver">
-                {{ item.company }}
-              </el-col>
-              <el-col :span="4" class="date">
-                {{ getDate(item.meta) }}
-              </el-col>
+          <el-col :span="24" class="oneList" v-for="(item, index) in list" :key="index" @click.native="detail(item)">
+            <el-col :span="24" class="title textOver">
+              {{ item.title }}
             </el-col>
             <el-col :span="24" class="other">
               <el-col :span="12" class="text">
-                申请类型:<span>{{ item.type }}</span>
-              </el-col>
-            </el-col>
-          </el-col>
-        </el-col>
-        <el-col :span="24" class="two" v-else-if="type == '2'">
-          <el-col :span="24" class="twoList" v-for="(item, index) in list" :key="index">
-            <el-col :span="24" class="top">
-              <el-col :span="20" class="company textOver">
-                {{ item.name }}
-              </el-col>
-              <el-col :span="4" class="date">
-                {{ getDate(item.meta) }}
-              </el-col>
-            </el-col>
-          </el-col>
-        </el-col>
-        <el-col :span="24" class="thr" v-else-if="type == '3'">
-          <el-col :span="12" class="thrList" v-for="(item, index) in list" :key="index">
-            <el-col :span="24" class="name textOver">
-              {{ item.basic.achieve_name }}
-            </el-col>
-            <el-col :span="24" class="other">
-              <el-col :span="24" class="text textOver">
-                成果取得时间:<span>{{ item.basic.achieve_date }}</span>
-              </el-col>
-            </el-col>
-            <el-col :span="24" class="other">
-              <el-col :span="12" class="text textOver">
-                成果类别:<span>{{ item.basic.achieve_type }}</span>
+                信息来源:<span>{{ item.origin }}</span>
               </el-col>
-              <el-col :span="12" class="text textOver">
-                成果形式:<span>{{ item.basic.achieve_form }}</span>
+              <el-col :span="12" class="text">
+                发布时间:<span> {{ getDate(item.release_time) }}</span>
               </el-col>
             </el-col>
           </el-col>
@@ -77,10 +43,13 @@ export default {
   methods: {
     getDate(date) {
       if (date) {
-        let newDate = moment(date.createdAt).format('YYYY-MM-DD');
+        let newDate = moment(date).format('YYYY-MM-DD');
         if (newDate) return newDate;
       }
     },
+    detail(data) {
+      this.$emit('detail', data);
+    },
   },
   computed: {
     ...mapState(['user']),
@@ -102,19 +71,15 @@ export default {
 .main {
   padding: 5px;
   .one {
-    height: 430px;
+    min-height: 70px;
+    max-height: 430px;
     overflow: hidden;
     .oneList {
-      padding: 8px 0;
+      padding: 12px 0;
       border-bottom: 1px dashed #ccc;
-      .top {
+      .title {
+        font-size: 16px;
         margin: 0 0 5px 0;
-        .company {
-          font-size: 16px;
-        }
-        .date {
-          font-size: 16px;
-        }
       }
       .other {
         .text {
@@ -131,77 +96,7 @@ export default {
     }
     .oneList:hover {
       cursor: pointer;
-      .top {
-        .company {
-          font-weight: bold;
-          color: #409eff;
-        }
-      }
-    }
-  }
-  .two {
-    height: 430px;
-    overflow: hidden;
-    .twoList {
-      padding: 8px 0;
-      border-bottom: 1px dashed #ccc;
-      .top {
-        margin: 0 0 5px 0;
-        .company {
-          font-size: 16px;
-        }
-        .date {
-          font-size: 16px;
-        }
-      }
-    }
-    .twoList:last-child {
-      border-bottom: none;
-    }
-    .twoList:hover {
-      cursor: pointer;
-      .top {
-        .company {
-          font-weight: bold;
-          color: #409eff;
-        }
-      }
-    }
-  }
-  .thr {
-    height: 430px;
-    overflow: hidden;
-    .thrList {
-      padding: 5px 10px;
-      border-bottom: 1px dashed #ccc;
-      border-right: 1px dashed #ccc;
-      .name {
-        font-size: 16px;
-        margin: 0 0 5px 0;
-      }
-      .other {
-        margin: 0 0 5px 0;
-        .text {
-          font-size: 14px;
-          color: #666;
-          span {
-            color: #000;
-          }
-        }
-      }
-    }
-    .thrList:nth-child(2n) {
-      border-right: none;
-    }
-    .thrList:nth-child(9) {
-      border-bottom: none;
-    }
-    .thrList:nth-child(10) {
-      border-bottom: none;
-    }
-    .thrList:hover {
-      cursor: pointer;
-      .name {
+      .title {
         font-weight: bold;
         color: #409eff;
       }