Forráskód Böngészése

Merge branch 'master' of http://git.cc-lotus.info/Free-cysci/cysci-website

lrf402788946 4 éve
szülő
commit
8a02ddebd8

+ 31 - 0
package-lock.json

@@ -4684,6 +4684,22 @@
         "safe-buffer": "^5.0.1"
       }
     },
+    "echarts": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.1.0.tgz",
+      "integrity": "sha512-/X2nnN5BXW2tuA/Hv9YY279rDfwcXaBAjK9Azi//llshbKyUXXxBknsug21GJRpwTmLZbE8rjjbhchdm01bZtw==",
+      "requires": {
+        "tslib": "2.0.3",
+        "zrender": "5.1.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
+          "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
+        }
+      }
+    },
     "ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
@@ -12385,6 +12401,21 @@
           "dev": true
         }
       }
+    },
+    "zrender": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.1.0.tgz",
+      "integrity": "sha512-c+8VRx52ycbmqwHeHLlo/BAfIHBl/JZNLM6cfDQFgzIH05yb+f5J9F/fbRsP+zGc8dW9XHuhdt8/iqukgMZSeg==",
+      "requires": {
+        "tslib": "2.0.3"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
+          "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
+        }
+      }
     }
   }
 }

+ 1 - 0
package.json

@@ -11,6 +11,7 @@
     "@stomp/stompjs": "^6.1.0",
     "axios": "^0.21.1",
     "core-js": "^3.6.5",
+    "echarts": "^5.1.0",
     "element-ui": "^2.15.1",
     "jsonwebtoken": "^8.5.1",
     "lodash": "^4.17.21",

BIN
src/assets/jszx.png


BIN
src/assets/loginBj.jpg


+ 2 - 0
src/store/index.js

@@ -6,6 +6,7 @@ import login from '@common/src/store/login';
 import news from '@common/src/store/news';
 import product from '@common/src/store/product';
 import patent from '@common/src/store/patent';
+import roadShow from '@common/src/store/roadShow';
 
 Vue.use(Vuex);
 
@@ -18,5 +19,6 @@ export default new Vuex.Store({
     news,
     product,
     patent,
+    roadShow,
   },
 });

+ 7 - 2
src/views/dynamic/index.vue

@@ -4,7 +4,9 @@
       <el-col :span="24" class="main">
         <div class="w_1200">
           <el-col :span="24" class="common one">
-            <el-col :span="12" class="left"> 左侧 </el-col>
+            <el-col :span="12" class="left">
+              <one></one>
+            </el-col>
             <el-col :span="12" class="left"> 右侧 </el-col>
           </el-col>
           <el-col :span="24" class="common two">
@@ -18,11 +20,14 @@
 </template>
 
 <script>
+import one from './parts/one.vue';
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'index',
   props: {},
-  components: {},
+  components: {
+    one,
+  },
   data: function () {
     return {};
   },

+ 86 - 0
src/views/dynamic/parts/one.vue

@@ -0,0 +1,86 @@
+<template>
+  <div id="one">
+    <el-row>
+      <el-col :span="24" class="main">
+        <div id="chartPie" style="height: 450px"></div>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import * as echarts from 'echarts';
+import { mapState, createNamespacedHelpers } from 'vuex';
+export default {
+  name: 'one',
+  props: {},
+  components: {},
+  data: function () {
+    return {};
+  },
+  created() {},
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      var chartDom = document.getElementById('chartPie');
+      var myChart = echarts.init(chartDom);
+      var option;
+      option = {
+        legend: {
+          top: 'bottom',
+        },
+        toolbox: {
+          show: false,
+          feature: {
+            mark: { show: true },
+            dataView: { show: true, readOnly: false },
+            restore: { show: true },
+            saveAsImage: { show: true },
+          },
+        },
+        series: [
+          {
+            name: '饼状图',
+            type: 'pie',
+            radius: '70%',
+            center: ['50%', '50%'],
+            roseType: 'area',
+            itemStyle: {
+              borderRadius: 8,
+            },
+            data: [
+              { value: 40, name: 'rose 1' },
+              { value: 38, name: 'rose 2' },
+              { value: 32, name: 'rose 3' },
+              { value: 30, name: 'rose 4' },
+              { value: 28, name: 'rose 5' },
+              { value: 26, name: 'rose 6' },
+              { value: 22, name: 'rose 7' },
+              { value: 18, name: 'rose 8' },
+            ],
+          },
+        ],
+      };
+
+      option && myChart.setOption(option);
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+  watch: {
+    test: {
+      deep: true,
+      immediate: true,
+      handler(val) {},
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 76 - 15
src/views/login.vue

@@ -2,18 +2,28 @@
   <div id="login">
     <el-row>
       <el-col :span="24" class="main">
-        <el-form ref="form" :model="form" label-width="80px">
-          <el-form-item label="用户账号">
-            <el-input v-model="form.code_phone" maxlength="11" placeholder="请输入账号"></el-input>
-          </el-form-item>
-          <el-form-item label="用户密码">
-            <el-input v-model="form.passwd" placeholder="请输入账号" show-password></el-input>
-          </el-form-item>
-          <el-form-item>
-            <el-button type="danger" size="mini">取消登录</el-button>
-            <el-button type="primary" size="mini" @click="onSubmit">提交登录</el-button>
-          </el-form-item>
-        </el-form>
+        <div class="w_1200">
+          <el-col :span="24" class="one">
+            <el-col :span="24" class="title">环南湖科创先导区双创服务平台</el-col>
+            <el-col :span="24" class="info">
+              <el-col :span="24" class="infoText">管理登录</el-col>
+              <el-col :span="24" class="form">
+                <el-form ref="form" :model="form">
+                  <el-form-item>
+                    <el-input v-model="form.code_phone" prefix-icon="el-icon-user-solid" maxlength="11" placeholder="请输入账号"></el-input>
+                  </el-form-item>
+                  <el-form-item>
+                    <el-input v-model="form.passwd" prefix-icon="el-icon-lock" placeholder="请输入账号" show-password></el-input>
+                  </el-form-item>
+                  <el-col :span="24" class="btn">
+                    <el-button type="danger" @click="resetBtn">取消登录</el-button>
+                    <el-button type="primary" @click="onSubmit">提交登录</el-button>
+                  </el-col>
+                </el-form>
+              </el-col>
+            </el-col>
+          </el-col>
+        </div>
       </el-col>
     </el-row>
   </div>
@@ -23,13 +33,13 @@
 const _ = require('lodash');
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: login } = createNamespacedHelpers('login');
-
 export default {
   name: 'login',
   props: {},
   components: {},
   data: function () {
     return {
+      loginBj: require('@a/loginBj.jpg'),
       form: {},
     };
   },
@@ -39,11 +49,13 @@ export default {
     async onSubmit() {
       let data = _.get(this, 'form');
       const res = await this.login(data);
-      console.log(res);
       if (this.$checkRes(res)) {
         this.$router.push({ path: '/adminCenter/homeIndex' });
       }
     },
+    resetBtn() {
+      this.$router.push({ path: '/' });
+    },
   },
   computed: {
     ...mapState(['user']),
@@ -61,4 +73,53 @@ export default {
 };
 </script>
 
-<style lang="less" scoped></style>
+<style lang="less" scoped>
+.main {
+  background: url('~@/assets/loginBj.jpg');
+  background-size: 100% 100%;
+  background-repeat: no-repeat;
+  height: 100vh;
+  .one {
+    padding: 6% 26%;
+    .title {
+      text-align: center;
+      font-size: 35px;
+      font-weight: bold;
+      font-family: cursive;
+      padding: 60px 0;
+      color: #fff;
+    }
+    .info {
+      height: 400px;
+      padding: 0 50px;
+      border-radius: 5px;
+      box-shadow: 0 0 5px #f1f1f1;
+      background-color: #ffffff5f;
+      .infoText {
+        font-size: 28px;
+        text-align: center;
+        padding: 30px 0;
+        font-weight: bold;
+        -webkit-text-stroke: 1px #fe950e;
+        color: #fff;
+      }
+      .form {
+        .btn {
+          text-align: center;
+        }
+        /deep/.el-form-item {
+          margin-bottom: 40px;
+        }
+      }
+    }
+    // .title {
+    //   text-align: center;
+    //   font-size: 30px;
+    //   color: #ff0000;
+    // }
+    // .form {
+    //   padding: 0 10px;
+    // }
+  }
+}
+</style>

+ 43 - 66
src/views/market/index.vue

@@ -25,7 +25,7 @@
           </el-col>
           <el-col :span="24" class="common thr">
             <el-col :span="12" class="left">
-              <top topText="技需求"></top>
+              <top topText="技需求"></top>
               <list type="5" :list="fiveList"></list>
             </el-col>
             <el-col :span="12" class="left">
@@ -42,36 +42,20 @@
 <script>
 import top from './parts/top.vue';
 import list from './parts/list.vue';
+const { productType } = require('@common/dict/index');
 import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: product } = createNamespacedHelpers('product');
+const { mapActions: patent } = createNamespacedHelpers('patent');
+const { mapActions: roadShow } = createNamespacedHelpers('roadShow');
+
 export default {
   name: 'index',
   props: {},
   components: { top, list },
   data: function () {
     return {
-      oneList: [
-        {
-          name: '成果名称',
-          achievebrief: '成果简介',
-          field: '所属领域',
-          contacts: '联系人',
-        },
-        {
-          name: '6条数据',
-          achievebrief: '成果简介',
-          field: '所属领域',
-          contacts: '联系人',
-        },
-      ],
-      twoList: [
-        {
-          name: '专利信息',
-          img_url: require('@a/news1.jpg'),
-        },
-        {
-          name: '6条数据',
-        },
-      ],
+      oneList: [],
+      twoList: [],
       thrList: [
         {
           img_path: require('@a/news1.jpg'),
@@ -85,50 +69,43 @@ export default {
           company: '工作动态',
         },
       ],
-      fourList: [
-        {
-          title: '信息标题',
-          publish_time: '2021-04-19',
-          titlejj: '信息简介',
-        },
-        {
-          title: '5条数据',
-          publish_time: '2021-04-19',
-          titlejj: '信息简介',
-        },
-      ],
-      fiveList: [
-        {
-          name: '信息标题',
-          create_time: '2021-04-19',
-          field: '所属领域',
-          cooperation: '合作方式',
-        },
-        {
-          name: '6条数据',
-          create_time: '2021-04-19',
-          field: '所属领域',
-          cooperation: '合作方式',
-        },
-      ],
-      sixList: [
-        {
-          name: '信息标题',
-          messattribute: '信息属性',
-          create_time: '2021-04-19',
-          informationdesc: '不知道是神呢',
-        },
-        {
-          name: '五条数据',
-          messattribute: '信息属性',
-          create_time: '2021-04-19',
-          informationdesc: '不知道是神呢',
-        },
-      ],
+      fourList: [],
+      fiveList: [],
+      sixList: [],
+      productType: productType,
     };
   },
-  created() {},
-  methods: {},
+  async created() {
+    await this.search();
+  },
+  methods: {
+    ...product({ productQuery: 'query' }),
+    ...patent({ patentQuery: 'query' }),
+    ...roadShow({ roadShowQuery: 'query' }),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      for (const val of this.productType) {
+        if (val.value == '0') {
+          // 科技需求
+          let res = await this.productQuery({ skip, limit: 6, type: val.value, ...info });
+          if (this.$checkRes(res)) this.$set(this, `fiveList`, res.data);
+        } else if (val.value == '1') {
+          // 技术成果
+          let res = await this.productQuery({ skip, limit: 6, type: val.value, ...info });
+          if (this.$checkRes(res)) this.$set(this, `oneList`, res.data);
+        } else if (val.value == '2') {
+          // 商务服务
+          let res = await this.productQuery({ skip, limit: 5, type: val.value, ...info });
+          if (this.$checkRes(res)) this.$set(this, `sixList`, res.data);
+        }
+      }
+      // 专利信息
+      let res = await this.patentQuery({ skip, limit: 6, ...info });
+      if (this.$checkRes(res)) this.$set(this, `twoList`, res.data);
+      // 项目路演
+      res = await this.roadShowQuery({ skip, limit: 5, ...info });
+      if (this.$checkRes(res)) this.$set(this, `fourList`, res.data);
+    },
+  },
   computed: {
     ...mapState(['user']),
   },

+ 10 - 3
src/views/market/parts/list.vue

@@ -64,7 +64,7 @@
                 {{ item.name }}
               </el-col>
               <el-col :span="5" class="date">
-                <span>{{ item.create_time || '暂无' }}</span>
+                <span>{{ getDate(item.create_time) || '暂无' }}</span>
               </el-col>
             </el-col>
             <el-col :span="24" class="down">
@@ -80,7 +80,7 @@
             </el-col>
             <el-col :span="10" class="messbute"> 信息属性:{{ item.messattribute }} </el-col>
             <el-col :span="4" class="date">
-              {{ item.create_time }}
+              {{ getDate(item.create_time) }}
             </el-col>
             <el-col :span="24" class="info">
               {{ item.informationdesc }}
@@ -93,6 +93,7 @@
 </template>
 
 <script>
+var moment = require('moment');
 import { mapState, createNamespacedHelpers } from 'vuex';
 export default {
   name: 'list',
@@ -108,7 +109,13 @@ export default {
     };
   },
   created() {},
-  methods: {},
+  methods: {
+    // 整理时间
+    getDate(date) {
+      let newsDate = moment(date).format('YYYY-MM-DD');
+      if (newsDate) return newsDate;
+    },
+  },
   computed: {
     ...mapState(['user']),
   },

+ 31 - 93
src/views/news/index.vue

@@ -5,27 +5,27 @@
         <div class="w_1200">
           <el-col :span="24" class="common one">
             <el-col :span="12" class="left">
-              <top topText="政务动态"></top>
+              <top topText="政务动态" @more="more('0')"></top>
               <list type="1" :list="oneList"></list>
             </el-col>
             <el-col :span="12" class="left">
-              <top topText="通知通告"></top>
+              <top topText="通知通告" @more="more('1')"></top>
               <list type="2" :list="twoList"></list>
             </el-col>
           </el-col>
           <el-col :span="24" class="common two">
             <el-col :span="12" class="left">
-              <top topText="科技新闻"></top>
+              <top topText="科技新闻" @more="more('2')"></top>
               <list type="3" :list="thrList"></list>
             </el-col>
             <el-col :span="12" class="left">
-              <top topText="媒体聚焦"></top>
+              <top topText="媒体聚焦" @more="more('3')"></top>
               <list type="4" :list="fourList"></list>
             </el-col>
           </el-col>
           <el-col :span="24" class="common thr">
             <el-col :span="24" class="left">
-              <top topText="信息公开"></top>
+              <top topText="信息公开" @more="more('4')"></top>
               <list type="5" :list="fiveList"></list>
             </el-col>
           </el-col>
@@ -38,6 +38,7 @@
 <script>
 import top from './parts/top.vue';
 import list from './parts/list.vue';
+const { newsColumn } = require('@common/dict/index');
 import { mapState, createNamespacedHelpers } from 'vuex';
 const { mapActions: news } = createNamespacedHelpers('news');
 export default {
@@ -47,83 +48,16 @@ export default {
   data: function () {
     return {
       // 政务动态
-      oneList: [
-        {
-          title: '信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表',
-          release_time: '2021-01-16',
-        },
-        {
-          title: '11条数据',
-          release_time: '2021-01-16',
-        },
-      ],
+      oneList: [],
       // 通知通告
-      twoList: [
-        {
-          title: '信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表',
-          release_time: '2021-01-16',
-        },
-        {
-          title: '11条数据',
-          release_time: '2021-01-16',
-        },
-      ],
+      twoList: [],
       // 科技新闻
-      thrList: [
-        {
-          image: [
-            {
-              name: '1',
-              url: require('@a/news1.jpg'),
-            },
-            {
-              name: '1',
-              url: require('@a/news1.jpg'),
-            },
-          ],
-          title: '新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题新闻标题',
-          release_time: '2021-04-16',
-        },
-        {
-          image: [
-            {
-              name: '1',
-              url: require('@a/news1.jpg'),
-            },
-          ],
-          title: '四条数据',
-          release_time: '2021-04-16',
-        },
-      ],
+      thrList: [],
       // 媒体聚焦
-      fourList: [
-        {
-          title: '信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表',
-          release_time: '2021-01-16',
-        },
-        {
-          title: '11条数据',
-          release_time: '2021-01-16',
-        },
-      ],
+      fourList: [],
       // 信息公开
-      fiveList: [
-        {
-          title: '信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表信息表',
-          release_time: '2021-01-16',
-        },
-        {
-          title: '12条数据',
-          release_time: '2021-01-16',
-        },
-      ],
-      column: [
-        { name: '政务动态', site: 'one', limit: 11 },
-        { name: '通知通告', site: 'two', limit: 11 },
-        { name: '科技新闻', site: 'thr', limit: 4 },
-        { name: '媒体聚焦', site: 'four', limit: 11 },
-        { name: '信息公开', site: 'five', limit: 12 },
-      ],
+      fiveList: [],
+      column: newsColumn,
     };
   },
   async created() {
@@ -133,24 +67,28 @@ export default {
     ...news(['query']),
     async search({ skip = 0, limit = 10, ...info } = {}) {
       for (const val of this.column) {
-        if (val.name == '政务动态') {
-          let res = await this.query({ skip, limit: val.limit, column_name: val.name, ...info });
-          if (this.$checkRes(res)) this.$set(this, `${val.site}List`, res.data);
-        } else if (val.name == '通知通告') {
-          let res = await this.query({ skip, limit: val.limit, column_name: val.name, ...info });
-          if (this.$checkRes(res)) this.$set(this, `${val.site}List`, res.data);
-        } else if (val.name == '科技新闻') {
-          let res = await this.query({ skip, limit: val.limit, column_name: val.name, ...info });
-          if (this.$checkRes(res)) this.$set(this, `${val.site}List`, res.data);
-        } else if (val.name == '媒体聚焦') {
-          let res = await this.query({ skip, limit: val.limit, column_name: val.name, ...info });
-          if (this.$checkRes(res)) this.$set(this, `${val.site}List`, res.data);
-        } else if (val.name == '信息公开') {
-          let res = await this.query({ skip, limit: val.limit, column_name: val.name, ...info });
-          if (this.$checkRes(res)) this.$set(this, `${val.site}List`, res.data);
+        if (val == '政务动态') {
+          let res = await this.query({ skip, limit: 11, column_name: val, ...info });
+          if (this.$checkRes(res)) this.$set(this, `oneList`, res.data);
+        } else if (val == '通知通告') {
+          let res = await this.query({ skip, limit: 11, column_name: val, ...info });
+          if (this.$checkRes(res)) this.$set(this, `twoList`, res.data);
+        } else if (val == '科技新闻') {
+          let res = await this.query({ skip, limit: 4, column_name: val, ...info });
+          if (this.$checkRes(res)) this.$set(this, `thrList`, res.data);
+        } else if (val == '媒体聚焦') {
+          let res = await this.query({ skip, limit: 11, column_name: val, ...info });
+          if (this.$checkRes(res)) this.$set(this, `fourList`, res.data);
+        } else if (val == '信息公开') {
+          let res = await this.query({ skip, limit: 12, column_name: val, ...info });
+          if (this.$checkRes(res)) this.$set(this, `fiveList`, res.data);
         }
       }
     },
+    // 更多
+    more(index) {
+      console.log(index);
+    },
   },
   computed: {
     ...mapState(['user']),