sunjh před 6 roky
rodič
revize
eefbaad6e9

+ 38 - 2
package-lock.json

@@ -536,6 +536,38 @@
       "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
       "dev": true
     },
+    "axios": {
+      "version": "0.19.0",
+      "resolved": "https://registry.npm.taobao.org/axios/download/axios-0.19.0.tgz",
+      "integrity": "sha1-jgm/89kSLhM/e4EByPvdAO09Krg=",
+      "requires": {
+        "follow-redirects": "1.5.10",
+        "is-buffer": "^2.0.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.1.0",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz",
+          "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "follow-redirects": {
+          "version": "1.5.10",
+          "resolved": "http://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz",
+          "integrity": "sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio=",
+          "requires": {
+            "debug": "=3.1.0"
+          }
+        },
+        "is-buffer": {
+          "version": "2.0.3",
+          "resolved": "http://registry.npm.taobao.org/is-buffer/download/is-buffer-2.0.3.tgz",
+          "integrity": "sha1-Ts8/z3ScvR5HJonhCaxmJhol5yU="
+        }
+      }
+    },
     "babel-code-frame": {
       "version": "6.26.0",
       "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
@@ -6575,8 +6607,7 @@
     "ms": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
-      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
-      "dev": true
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
     },
     "multicast-dns": {
       "version": "6.2.3",
@@ -11799,6 +11830,11 @@
       "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
       "dev": true
     },
+    "vuex": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.1.1.tgz",
+      "integrity": "sha1-DCZL/jDNvM+Wq52zF30hGCilkQ4="
+    },
     "watchpack": {
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",

+ 2 - 1
package.json

@@ -11,11 +11,12 @@
     "build": "node build/build.js"
   },
   "dependencies": {
+    "axios": "latest",
     "element-ui": "^2.8.2",
     "font-awesome": "^4.7.0",
     "vue": "^2.5.2",
     "vue-router": "^3.0.1",
-    "axios": "latest"
+    "vuex": "^3.1.1"
   },
   "devDependencies": {
     "autoprefixer": "^7.1.2",

+ 145 - 92
src/components/Home.vue

@@ -2,12 +2,11 @@
   <div class="home-container">
     <div class="home-banner-wrap">
       <el-carousel height="400px" :interval="10000" arrow="always">
-        <el-carousel-item>
-          <img class="banner_back banner_back_1" src="@/assets/img/home_ban1.jpg">
-          <router-link :to="{ name: 'ProjectCreate'}"><div class="btn btn-medium btn-home-apply">申请项目</div></router-link>
-        </el-carousel-item>
-        <el-carousel-item>
-          <img class="banner_back banner_back_2" src="@/assets/img/home_ban2.png">
+        <el-carousel-item  v-for="img in imgList">
+          <img class="banner_back banner_back_1" v-bind:src="img">
+          <router-link :to="{ name: 'ProjectCreate'}">
+            <div class="btn btn-medium btn-home-apply">申请项目</div>
+          </router-link>
         </el-carousel-item>
       </el-carousel>
     </div>
@@ -20,21 +19,21 @@
           </span>
         </div>
         <el-row :gutter="20">
-          <el-col :span="6" v-for="item,index in taskList" :key="index">
+          <el-col :span="6" v-for="item,index in hotTaskList" :key="index">
             <task-card :item="item"/>
           </el-col>
         </el-row>
       </div>
 
-      <div  class="home-block">
+      <div class="home-block">
         <el-row :gutter="20">
-          <el-col  :xs="20" :sm="20" :md="20" :lg="12" :xl="12">
+          <el-col :xs="20" :sm="20" :md="20" :lg="12" :xl="12">
             <div class="title">机构排名</div>
-            <institution-rank />
+            <institution-rank :item="institutionRank"/>
           </el-col>
-          <el-col  :xs="20" :sm="20" :md="20" :lg="12" :xl="12">
-              <div class="title">用户排名</div>
-              <person-rank />
+          <el-col :xs="20" :sm="20" :md="20" :lg="12" :xl="12">
+            <div class="title">用户排名</div>
+            <person-rank :item="personRank"/>
           </el-col>
         </el-row>
 
@@ -44,121 +43,175 @@
 </template>
 
 <script>
-import TaskCard from "@/components/commons/TaskCard";
-import InstitutionRank from "@/components/InstitutionRank";
-import PersonRank from "@/components/PersonRank";
-import Http from '@/http.js';
-import Apis from '@/api/api.js';
+import TaskCard from '@/components/commons/TaskCard'
+import InstitutionRank from '@/components/InstitutionRank'
+import PersonRank from '@/components/PersonRank'
+import Http from '@/js/http.js'
+import Apis from '@/js/api.js'
+
 export default {
-  name: "Home",
-  components: { TaskCard, InstitutionRank, PersonRank },
-  data() {
+  name: 'Home',
+  components: {TaskCard, InstitutionRank, PersonRank},
+  data () {
     return {
-      taskList: [
+      hotTaskList: [
         {
           id: 0,
-          title: "发送群文件测试",
-          description: "任务描述文字xxxx",
-          price: "30",
+          title: '发送群文件测试',
+          description: '任务描述文字xxxx',
+          price: '30',
           serviceType: 1,
           status: 0,
-          projectId:123
+          projectId: 123
         },
         {
           id: 1,
-          title: "多人聊天发送文件测试",
-          description: "任务描述文字xxxx",
-          price: "10",
+          title: '多人聊天发送文件测试',
+          description: '任务描述文字xxxx',
+          price: '10',
           serviceType: 0,
           status: 1,
-          projectId:234
+          projectId: 234
         },
         {
           id: 2,
-          title: "浏览器波洞星球",
-          description: "任务描述文字xxxx",
-          price: "10",
+          title: '浏览器波洞星球',
+          description: '任务描述文字xxxx',
+          price: '10',
           serviceType: 2,
           status: 0,
-          projectId:345
+          projectId: 345
         },
         {
           id: 3,
-          title: "举报支持选择聊天记录(安全)",
-          description: "任务描述文字xxxx",
-          price: "0",
+          title: '举报支持选择聊天记录(安全)',
+          description: '任务描述文字xxxx',
+          price: '0',
           serviceType: 1,
           status: 1,
-          projectId:456
+          projectId: 456
+        }
+      ],
+      institutionRank: [
+        {
+          logo: 'http://www.mooctest.net/assets/img/mooctest.png',
+          name: '慕测科技'
+        },
+        {
+          logo: 'https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png',
+          name: '上海软件'
+        },
+        {
+          logo: 'http://www.mooctest.net/assets/img/mooctest.png',
+          name: 'QQ众测'
+        },
+        {
+          logo: 'https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png',
+          name: '阿里巴巴'
+        },
+        {
+          logo: 'https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png',
+          name: '阿里巴巴'
         }
-      ]
-    };
+      ],
+      personRank: [
+        {
+          logo: 'http://www.mooctest.net/assets/img/mooctest.png',
+          name: '小王',
+          number: '200',
+        },
+        {
+          logo: 'https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png',
+          name: '小黄',
+          number: '190',
+        },
+        {
+          logo: 'http://www.mooctest.net/assets/img/mooctest.png',
+          name: '小莉',
+          number: '120',
+        },
+        {
+          logo: 'https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png',
+          name: '小张',
+          number: '80',
+        },
+        {
+          logo: 'https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png',
+          name: '小张',
+          number: '70',
+        }
+      ],
+      imgList:['../assets/img/home_ban1.jpg','../assets/img/home_ban2.jpg'],
+
+    }
   },
-  methods:{
+  methods: {
     //加载数据
-    loadData:function() {
+    loadData: function () {
       console.log('loadData')
-      this.taskList = this.getHotTaskList()
-    },
-    //获取热门任务列表
-    getHotTaskList:function() {
-      console.log('getHotTaskList')
-      Http.get(Apis.TASK.GET_HOT_TASK_LIST).then((res) =>{
-        return res.data;
+      Http.get(Apis.PAGE.HOME_PAGE).then((res) => {
+        if (0 === res.code){
+          this.hotTaskList = res.hotTaskList
+          this.institutionRank = res.institutionRank
+          this.personRank = res.personRank
+          this.imgList = res.imgList
+        }
       })
-    }
+    },
   },
-  created:function () {
-    console.log("加载中")
-    this.loadData()
+  created: function () {
+    console.log('加载中')
+    //this.loadData()
   }
-};
+}
 </script>
 
 <style lang="less" scoped>
-.home-banner-wrap {
-  background: linear-gradient(#4a90e2, rgb(74, 109, 226));
-  background: -webkit-linear-gradient(#4a90e2, rgb(74, 109, 226));
-  background: -o-linear-gradient(#4a90e2, rgb(74, 109, 226));
-  .banner_back {
-    height: 100%;
+  .home-banner-wrap {
+    background: linear-gradient(#4a90e2, rgb(74, 109, 226));
+    background: -webkit-linear-gradient(#4a90e2, rgb(74, 109, 226));
+    background: -o-linear-gradient(#4a90e2, rgb(74, 109, 226));
+    .banner_back {
+      height: 100%;
+    }
+    .banner_back_1 {
+      float: right;
+    }
   }
-  .banner_back_1 {
-    float: right;
+
+  .el-carousel__item h3 {
+    color: #475669;
+    font-size: 14px;
+    opacity: 0.75;
+    line-height: 150px;
+    margin: 0;
   }
-}
 
-.el-carousel__item h3 {
-  color: #475669;
-  font-size: 14px;
-  opacity: 0.75;
-  line-height: 150px;
-  margin: 0;
-}
+  .el-carousel__item:nth-child(2n) {
+    background-color: #bed2c0;
+  }
 
-.el-carousel__item:nth-child(2n) {
-  background-color: #bed2c0;
-}
+  .el-carousel__item:nth-child(2n + 1) {
+    background-color: #eeeef2;
+  }
 
-.el-carousel__item:nth-child(2n + 1) {
-  background-color: #eeeef2;
-}
+  .home-body-wrap {
+    padding: 40px 80px;
+  }
 
-.home-body-wrap {
-  padding: 40px 80px;
-}
-.more-info {
-  float: right;
-  cursor: pointer;
-  font-size: 1.4rem;
-}
-.btn-home-apply {
-  position: absolute;
-  bottom: 10%;
-  left: 20%;
-}
+  .more-info {
+    float: right;
+    cursor: pointer;
+    font-size: 1.4rem;
+  }
 
-.home-block{
-  margin:10px 0;
-}
+  .btn-home-apply {
+    position: absolute;
+    bottom: 10%;
+    left: 20%;
+  }
+
+  .home-block {
+    margin: 10px 0;
+  }
 </style>

+ 19 - 34
src/components/InstitutionRank.vue

@@ -1,55 +1,40 @@
 <template>
   <div>
-    <el-table :data="tableData"  :showHeader="false" border style="width: 100%">
+    <el-table :data="tableData" :showHeader="false" border style="width: 100%">
       <el-table-column type="index" width="50"></el-table-column>
       <el-table-column prop="logo" width="120">
         <template slot-scope="scope">
-            <img class="logo-img" :src="scope.row.logo"/>
+          <img class="logo-img" :src="scope.row.logo"/>
         </template>
       </el-table-column>
-      <el-table-column prop="name"><template slot-scope="scope"><span class="institution-name">{{scope.row.name}}</span></template></el-table-column>
+      <el-table-column prop="name">
+        <template slot-scope="scope"><span class="institution-name">{{scope.row.name}}</span></template>
+      </el-table-column>
     </el-table>
   </div>
 </template>
 
 <script>
 export default {
-  name: "InstitutionRank",
-  data() {
+  name: 'InstitutionRank',
+  props: {item: {}},
+  data () {
     return {
-      tableData: [
-        {
-          logo: "http://www.mooctest.net/assets/img/mooctest.png",
-          name: "慕测科技"
-        },
-        {
-          logo: "https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png",
-          name: "上海软件"
-        },
-        {
-          logo: "http://www.mooctest.net/assets/img/mooctest.png",
-          name: "QQ众测"
-        },
-        {
-          logo: "https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png",
-          name: "阿里巴巴"
-        },
-        {
-          logo: "https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png",
-          name: "阿里巴巴"
-        }
-      ]
-    };
+      tableData: this.item
+    }
   }
-};
+}
 </script>
 
 <style lang="less" scoped>
-.logo-img{
-    width:100px
-}
-.institution-name{
+  .logo-img {
+    height: 50px;
+    width: 100px;
+    object-fit: contain;
+  }
+
+  .institution-name {
     font-size: 16px;
     font-weight: 600;
-}
+  }
 </style>

+ 2 - 27
src/components/PersonRank.vue

@@ -16,35 +16,10 @@
 <script>
 export default {
   name: "PersonRank",
+  props: {item: {}},
   data() {
     return {
-      tableData: [
-        {
-          logo: "http://www.mooctest.net/assets/img/mooctest.png",
-          name: "小王",
-          number: "200",
-        },
-        {
-          logo: "https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png",
-          name: "小黄",
-          number: "190",
-        },
-        {
-          logo: "http://www.mooctest.net/assets/img/mooctest.png",
-          name: "小莉",
-          number: "120",
-        },
-        {
-          logo: "https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png",
-          name: "小张",
-          number: "80",
-        },
-        {
-          logo: "https://docs.alibabagroup.com/assets2/images/cn/global/logo_header.png",
-          name: "小张",
-          number: "70",
-        }
-      ]
+      tableData: this.item
     }
   }
 };

+ 4 - 1
src/api/api.js → src/js/api.js

@@ -6,9 +6,12 @@ export default {
 
   },
   TASK: {
-    GET_HOT_TASK_LIST: ''
+    GET_HOT_TASK_LIST: '/api/task/getHotTaskList/'
   },
   USER: {
 
+  },
+  PAGE: {
+    HOME_PAGE: ''
   }
 }

+ 7 - 6
src/http.js → src/js/http.js

@@ -82,16 +82,17 @@ export default {
    * @param response 请求成功时的回调函数
    * @param exception 异常的回调函数
    */
-  get (url, data) {
+  get (url, params) {
     return new Promise((resolve, reject) => {
-      axios.get(handleUrl(url), {
-        params: data
-      }).then((res) => {
-        resolve(res)
-      }).catch((error) => {
+      axios.get(url, {params: params})
+        .then(response => {
+          resolve(response.data)
+        }).catch(error => {
         reject(error)
       })
+
     })
+
   },
   /*
    * 导入文件

+ 0 - 0
src/api/index.js → src/js/index.js


+ 21 - 0
src/store/index.js

@@ -0,0 +1,21 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+Vue.use(Vuex)
+
+const store = new Vuex.Store({
+  state: {
+    isLogin:false
+  },
+  mutations:{
+
+  },
+  actions:{
+
+  },
+  modules:{
+
+  }
+})
+
+export default store