chending1994 4 gadi atpakaļ
vecāks
revīzija
fb05fb8503
100 mainītis faili ar 529 papildinājumiem un 5517 dzēšanām
  1. 3 21
      src/api/apply.js
  2. 1 1
      src/config/index.config.js
  3. 7 154
      src/pages.json
  4. 130 0
      src/pages/about/index.vue
  5. 0 552
      src/pages/apply/detail.vue
  6. 0 286
      src/pages/apply/list.vue
  7. 0 205
      src/pages/apply/result.vue
  8. 0 841
      src/pages/cloud/apply.vue
  9. 0 50
      src/pages/cloud/index.vue
  10. 0 222
      src/pages/cloud/result.vue
  11. 280 0
      src/pages/contact/index.vue
  12. 0 1027
      src/pages/index/apply.vue
  13. 0 589
      src/pages/index/applyInfo.vue
  14. 0 106
      src/pages/index/entry.vue
  15. 0 158
      src/pages/index/gameDetail.vue
  16. 108 2
      src/pages/index/index.vue
  17. 0 224
      src/pages/login/index.vue
  18. 0 103
      src/pages/me/baby.vue
  19. 0 311
      src/pages/me/index.vue
  20. 0 17
      src/pages/me/match.vue
  21. 0 115
      src/pages/me/parent.vue
  22. 0 22
      src/pages/me/result.vue
  23. 0 120
      src/pages/me/set.vue
  24. 0 203
      src/pages/search/index.vue
  25. 0 187
      src/pages/search/result.vue
  26. 0 1
      src/static/css/colorui/main.css
  27. BIN
      src/static/img/about/about_img1.png
  28. BIN
      src/static/img/about/about_img10.png
  29. BIN
      src/static/img/about/about_img11.png
  30. BIN
      src/static/img/about/about_img12.png
  31. BIN
      src/static/img/about/about_img13.png
  32. BIN
      src/static/img/about/about_img14.png
  33. BIN
      src/static/img/about/about_img2.png
  34. BIN
      src/static/img/about/about_img3.png
  35. BIN
      src/static/img/about/about_img4.png
  36. BIN
      src/static/img/about/about_img5.png
  37. BIN
      src/static/img/about/about_img6.png
  38. BIN
      src/static/img/about/about_img7.png
  39. BIN
      src/static/img/about/about_img8.png
  40. BIN
      src/static/img/about/about_img9.png
  41. BIN
      src/static/img/apply/btn_search.png
  42. BIN
      src/static/img/apply/card_bg.png
  43. BIN
      src/static/img/apply/card_submit.png
  44. BIN
      src/static/img/apply/cjcx.png
  45. BIN
      src/static/img/apply/game_img.png
  46. BIN
      src/static/img/apply/game_item.png
  47. BIN
      src/static/img/apply/lock.png
  48. BIN
      src/static/img/apply/logo.png
  49. BIN
      src/static/img/apply/logo01.png
  50. BIN
      src/static/img/apply/pay_success.png
  51. BIN
      src/static/img/apply/pay_wait.png
  52. BIN
      src/static/img/apply/reslut_bg.png
  53. BIN
      src/static/img/apply/search_bg.png
  54. BIN
      src/static/img/apply/sign_logo.png
  55. BIN
      src/static/img/apply/sign_no.png
  56. BIN
      src/static/img/apply/status_active_btn.png
  57. BIN
      src/static/img/apply/status_btn.png
  58. BIN
      src/static/img/apply/success_red.png
  59. BIN
      src/static/img/apply/tab_bg.png
  60. BIN
      src/static/img/common/cancel.png
  61. BIN
      src/static/img/common/comfirm.png
  62. BIN
      src/static/img/common/empty_avatar.png
  63. BIN
      src/static/img/common/empty_page.png
  64. BIN
      src/static/img/common/logo.png
  65. BIN
      src/static/img/common/model_bg.png
  66. BIN
      src/static/img/common/model_close.png
  67. BIN
      src/static/img/common/model_sucess_bg.png
  68. BIN
      src/static/img/common/success.png
  69. BIN
      src/static/img/common/user.png
  70. BIN
      src/static/img/contact/bg.png
  71. BIN
      src/static/img/contact/down.png
  72. BIN
      src/static/img/contact/head_title.png
  73. BIN
      src/static/img/contact/icon_01.png
  74. BIN
      src/static/img/contact/icon_02.png
  75. BIN
      src/static/img/contact/icon_03.png
  76. BIN
      src/static/img/contact/icon_04.png
  77. BIN
      src/static/img/contact/icon_phone.png
  78. BIN
      src/static/img/contact/path1.png
  79. BIN
      src/static/img/contact/path2.png
  80. BIN
      src/static/img/contact/path3.png
  81. BIN
      src/static/img/contact/submit.png
  82. BIN
      src/static/img/contact/teach.png
  83. BIN
      src/static/img/index/ABC_A@3x.png
  84. BIN
      src/static/img/index/ABC_B@3x.png
  85. BIN
      src/static/img/index/ABC_G@3x.png
  86. BIN
      src/static/img/index/ABC_M@3x.png
  87. BIN
      src/static/img/index/apply_01.png
  88. BIN
      src/static/img/index/apply_02.png
  89. BIN
      src/static/img/index/apply_03.png
  90. BIN
      src/static/img/index/apply_03_01.png
  91. BIN
      src/static/img/index/apply_04.png
  92. BIN
      src/static/img/index/apply_btn.png
  93. BIN
      src/static/img/index/apply_btn_02.png
  94. BIN
      src/static/img/index/apply_btn_03.png
  95. BIN
      src/static/img/index/bg.png
  96. BIN
      src/static/img/index/cloud_index.png
  97. BIN
      src/static/img/index/cloud_submit.png
  98. BIN
      src/static/img/index/dec_box.png
  99. BIN
      src/static/img/index/entry01.png
  100. BIN
      src/static/img/index/entry02.png

+ 3 - 21
src/api/apply.js

@@ -1,24 +1,6 @@
-// 添加宝贝
-const saveBaby = '/parent/baby';
-// 学校列表
-const schoolList = '/parent/region/school';
-// 报名
-const saveApply = '/parent/competition/signUp';
-// 线上报名
-const saveApplyOnline = '/parent/competition/signUp/online';
-// 成绩查询
-const searchResult = '/parent/competition/score';
-// 报名列表
-const signUpList = '/parent/competition/signUp';
-// 获取赛事id
-const getCompetitionId = '/parent/sms/id';
+// 线索提交
+const saveApply = '/CrmCustomer/addCustomerPool';
 
 export {
-  saveBaby,
-  schoolList,
-  saveApply,
-  searchResult,
-  signUpList,
-  saveApplyOnline,
-  getCompetitionId
+  saveApply
 }

+ 1 - 1
src/config/index.config.js

@@ -2,7 +2,7 @@ const CONFIG = {
   // 开发环境配置
   development: {
     assetsPath: "/static", // 静态资源路径
-    baseUrl: "https://api.zaojiao.net", // 后台接口请求地址
+    baseUrl: "http://192.168.1.86:15555/", // 后台接口请求地址
     // baseUrl: "https://app.zaojiao.net", // 后台接口请求地址
     hostUrl: "https://api.zaojiao.net",
     websocketUrl: "", // websocket服务端地址

+ 7 - 154
src/pages.json

@@ -5,170 +5,23 @@
 			"style": {
 				"enablePullDownRefresh": false,
 				"navigationBarTitleText": "中德智慧教育 全球儿童思维教育专家 全球优质教育内容输出平台",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/index/gameDetail",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "逻辑狗挑战赛",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/index/entry",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "报名表",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/login/index",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "登录",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/index/apply",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "报名表",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/index/applyInfo",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "宝贝档案",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/me/index",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "我的",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/me/baby",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "宝宝档案",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/me/parent",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "家长档案",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/me/result",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "成绩查询",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/apply/result",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "我的报名",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/apply/detail",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "报名卡片",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
+				"onReachBottomDistance": 50
 			}
 		},
 		{
-			"path": "pages/apply/list",
+			"path": "pages/about/index",
 			"style": {
 				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "我的报名",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
+				"navigationBarTitleText": "全面了解中德智慧",
+				"onReachBottomDistance": 50
 			}
 		},
 		{
-			"path": "pages/cloud/index",
+			"path": "pages/contact/index",
 			"style": {
 				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "线上云赛",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/cloud/apply",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "报名表",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/cloud/result",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "报名成功",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/search/index",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "成绩查询",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/search/result",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "查询结果",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
-			}
-		},
-		{
-			"path": "pages/me/set",
-			"style": {
-				"enablePullDownRefresh": false,
-				"navigationBarTitleText": "设置",
-				"onReachBottomDistance": 50,
-				"navigationStyle": "custom"
+				"navigationBarTitleText": "联系我们",
+				"onReachBottomDistance": 50
 			}
 		},
 		{

+ 130 - 0
src/pages/about/index.vue

@@ -0,0 +1,130 @@
+<template>
+  <view class="about">
+    <view class="item" :style="{height: heightFarmat(item.height)}" v-for="(item, index) in imgList" :key="index">
+      <image :src="item.imgUrl" mode="aspectFill" />
+    </view>
+    <view class="submit cu-btn block" @tap="navTo('/pages/contact/index')">
+      联系我们 <em></em>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      imgList: [
+        {
+          imgUrl: require('@/static/img/about/about_img1.png'),
+          height: 1020
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img2.png'),
+          height: 1024
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img3.png'),
+          height: 1022
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img4.png'),
+          height: 1026
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img5.png'),
+          height: 1020
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img6.png'),
+          height: 1024
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img7.png'),
+          height: 1024
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img8.png'),
+          height: 1026
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img9.png'),
+          height: 1026
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img10.png'),
+          height: 1024
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img11.png'),
+          height: 1024
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img12.png'),
+          height: 1022
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img13.png'),
+          height: 1022
+        },
+        {
+          imgUrl: require('@/static/img/about/about_img14.png'),
+          height: 906
+        }
+      ]
+    }
+  },
+  computed: {
+    heightFarmat(val) {
+      return function(val) {
+        return uni.upx2px(val) + 'px';
+      }
+    }
+  },
+  methods: {
+    navTo(route) {
+      this.$mRouter.push({
+        route
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+.about {
+  .item {
+    image {
+      width: 100%;
+      height: 100%;
+      vertical-align: middle;
+    }
+  }
+  .submit {
+    position: fixed;
+    left: 50%;
+    transform: translateX(-50%);
+    bottom: 104upx;
+    width: 532upx;
+    height: 80upx;
+    background: #FFFFFF;
+    border-radius: 40upx;
+    border: 2upx solid #333333;
+
+    font-size: 32upx;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #333333;
+    line-height: 32upx;
+    em {
+      margin-left: 8px;
+      width: 0;
+      height: 0;
+      border-top: 8upx solid transparent;
+      border-right: 9upx solid transparent;
+      border-bottom: 8upx solid transparent;
+      border-left: 9upx solid transparent;
+      border-left-color: #333333 ;
+    }
+  }
+}
+</style>

+ 0 - 552
src/pages/apply/detail.vue

@@ -1,552 +0,0 @@
-<template>
-  <view class='apply-detail'>
-    <view class="info-wrapper" v-if="signUp">
-      <view class="sign-info flex align-center justify-center">
-        <view class="content">
-          <view class="title-info flex align-center">
-            <image class="no_img" src="/static/img/apply/sign_no.png" mode="" />
-            <text class="no">{{ signUp.competitionNo }}</text>
-          </view>
-          <view class="apply-info">
-            <view class="label-en text-ABC">register information</view>
-            <view class="label">报名信息</view>
-            <view class="user-info flex align-center" v-if="baby">
-              <view class="avatar-bg">
-                <image class="avatar cu-avatar loading round" :src="baby.headImg" mode="aspectFill" />
-              </view>
-              <view class="flex flex-direction">
-                <view class="info-item flex align-center">
-                  <view class="name">
-                    选手姓名:{{ baby.babyName }}
-                  <image class="gender" :src="baby.sex | imgUrlFilter" mode="" />
-                  </view>
-                </view>
-                <view class="info-item" v-if="signUp.school">所在园所:{{ signUp.school.schoolName }}</view>
-                <view class="info-item" v-else-if="signUp.schoolName">所在园所:{{ signUp.schoolName }}</view>
-                <view class="info-item" v-else="signUp.shoppeName">所在专柜:{{ signUp.shoppeName }}</view>
-                <!-- <view class="info-item">组别:{{ signUp.classLevel | filterLevel }}</view> -->
-                <view class="info-item" v-if="baby">出生日期:{{ baby.babyBirthday | dateFormat('YYYY年MM月DD日') }}</view>
-              </view>
-            </view>
-            <view class="parent-info" v-if="signUp">
-              <view class="parent-item">家长姓名:{{ signUp.parentName }}</view>
-              <view class="parent-item">联系方式:{{ signUp.parentPhone | phoneFilter }}</view>
-              <view class="parent-item">家庭地址:{{ signUp.regionCity | regionCityFilter }}{{ signUp.address }}</view>
-            </view>
-            <view class="footer-text" v-if="signUp.type==1">
-              <view class="footer-item">全国总决赛选手成绩、排名支持线上查询</view>
-              <view class="footer-item">收费详情,请咨询全国各地大赛举办方</view>
-            </view>
-            <view class="footer-text" v-else>
-              云赛总决赛选手成绩、排名支持线上查询
-            </view>
-          </view>
-        </view>
-      </view>
-      <view class="stage">
-        <!-- 0 线上 1线下 -->
-        <view v-if="signUp.type==1" class="game-info flex flex-direction justify-center">
-          <view class="game-item" :class="index === stageList.length -1 ? 'last-item' : ''" v-for="(item, index) in stageList" :key="index">
-            <view class="cover-box">
-              <view :class="['cover', index == 0 ? 'fisrt' : '']"></view>
-              <view class="circle"></view>
-            </view>
-            <view :class="['game-header', item.state == 1 ? 'active' : '']">
-              <text class="game-name">{{ item.name }}</text><text class="game-time">{{ item.startTime | dateFormat('YYYY年MM月DD日') }}-{{ item.endTime | dateFormat('MM月DD日') }}</text>
-            </view>
-            <view class="game-content flex" :class="['stage-section' + index, 'state' + item.state]">
-              <view class="game-left"><image src="/static/img/apply/game_img.png" mode="" /></view>
-              <view class="game-center" v-if="item.state == 0">
-                <view class="center-title">{{ item.name }}时间:</view>
-                <view class="center-time">{{ item.startTime | dateFormat('YYYY年MM月DD日') }}-{{ item.endTime | dateFormat('MM月DD日') }}</view>
-              </view>
-              <view class="game-center" v-else-if="item.state > 0 && (index == 0 || index == 1)">
-                <view class="game-over">
-                  <view class="over-item" v-if="index == 0">区域海选赛的最终成绩及排名</view>
-                  <view class="over-item" v-else>区域决赛的最终成绩及排名</view>
-                  <view class="over-item">请联系组织园所/老师</view>
-                </view>
-              </view>
-              <view class="game-center" v-else-if="index == 2">
-                <view class="center-title">{{ item.name }}时间:</view>
-                <view class="center-time">{{ item.startTime | dateFormat('YYYY年MM月DD日') }}-{{ item.endTime | dateFormat('MM月DD日') }}</view>
-                <image class="pay-status" :src="hasPaid ? '/static/img/apply/pay_success.png' : '/static/img/apply/pay_wait.png'" mode="" />
-              </view>
-              <view class="game-right flex justify-center align-center" v-if="item.state == 0">
-                <view class="status">敬请期待</view>
-                <!-- <image class="img-btn" src="/static/img/apply/status_btn.png" mode="" /> -->
-                <image class="lock lock-right" src="/static/img/apply/lock.png" mode="" />
-              </view>
-              <view class="game-right flex justify-center align-center" :class="['game-right' + index, 'state' + item.state, 'pay' + item.hasPaid]" v-else-if="index== 2">
-                <view class="status" v-if="hasPaid == 0" @tap.stop="handlePay()">缴费入口</view>
-                <view class="status" v-else @tap.stop="handleResult()">成绩查询</view>
-                <image class="lock lock-right" src="/static/img/apply/lock.png" mode="" />
-              </view>
-            </view>
-          </view>
-        </view>
-        <view v-else class="game-info game-info-online flex flex-direction justify-center">
-          <view class="game-item" :class="index === stageList.length -1 ? 'last-item' : ''" v-for="(item, index) in stageList" :key="index">
-            <view class="cover-box">
-              <view :class="['cover', index == 0 ? 'fisrt' : '']"></view>
-              <view class="circle"></view>
-            </view>
-            <view :class="['game-header', item.state == 1 ? 'active' : '']">
-              <text class="game-name">{{ item.name }}时间</text><text class="game-time">{{ item.startTime | dateFormat('YYYY年MM月DD日') }}-{{ item.endTime | dateFormat('MM月DD日') }}</text>
-            </view>
-          </view>
-        </view>
-        <view class="card-submit" @tap.stop="navTo('/pages/index/index')">
-          <image src="/static/img/apply/card_submit.png" mode="" />
-        </view>
-      </view>
-    </view>
-    <template v-else>
-      <zd-empty></zd-empty>
-    </template>
-  </view>
-</template>
-
-<script>
-import { mapState } from 'vuex';
-import zdEmpty from '@/components/zd-empty';
-
-export default {
-  data() {
-    return {
-      hasPaid: 0, // 0 未支付,1已支付
-      state: 0 // 0 未开始 1进行中 2已结束
-    }
-  },
-  computed: {
-    ...mapState({
-      signUp: 'signUp',
-      baby: 'baby',
-      stageList: 'stageList'
-    })
-  },
-
-  components: {
-    zdEmpty
-  },
-
-  onLoad(options) {
-    if(options && options.id) {
-      const id = options.id;
-      const type = options.type; // type 0 线上 1线下
-      const url = options.type  == 1 ?  'getUserInfo' : 'getUserInfoOnline';
-      this.$mStore.dispatch(url, {
-        competitionChildId: id
-      })
-    }
-  },
-
-  onShow() {},
-
-  filters: {
-    filterLevel(val) {
-      switch (val){
-        case -1:
-          return '托班'
-        case 0:
-          return '小班'
-        case 1:
-          return '中班'
-        case 2:
-          return '大班'
-        default:
-          return '待定'
-      }
-    },
-    imgUrlFilter(val) {
-      switch (val){
-        case 1:
-          return require('static/img/index/male.png')
-        case 2:
-          return require('static/img/index/female.png')
-        default:
-          return require('static/img/index/female.png')
-      }
-    },
-    regionCityFilter(val) {
-      if(val) {
-        let regionCity;
-        try {
-          regionCity = JSON.parse(val) || [];
-        } catch (error) {
-          regionCity = val;
-        }
-        if(!Array.isArray(regionCity)) {
-          return regionCity;
-        } else {
-          return regionCity.join('');
-        }
-      }
-    },
-    phoneFilter(val) {
-      if (!val) return '暂无';
-      let reg = /^(\d{3})\d{4}(\d{4})$/;
-      let tel = val.replace(reg, "$1****$2");
-      return tel;
-    }
-  },
-
-  methods: {
-    handlePay() {
-      this.$mHelper.toast('暂未开始缴费');
-    },
-    handleResult() {
-      this.$mRouter.push({
-        route: '/pages/search/index'
-      })
-    },
-    navTo(route) {
-      this.$mRouter.push({
-        route
-      })
-    }
-  }
-
-}
-</script>
-
-<style lang="scss">
-page {
-  background: $color-white;
-  height: 100%;
-}
-.apply-detail {
-  min-height: 100%;
-  .info-wrapper {
-    padding-top: 32upx;
-    background: #4CD84A;
-  }
-  .sign-info {
-    background: #4CD84A;
-    margin: 0 auto;
-    width: 686upx;
-    padding: 12upx 12upx 14upx;
-    // height: 782upx;
-    background: #B6F9B6;
-    box-shadow: 0px 12upx 20upx 0px rgba(35, 211, 33, 0.37);
-    border-radius: 60upx;
-    .content {
-      width: 662upx;
-      // height: 756upx;
-      background: #FFFEFF;
-      border-radius: 60upx;
-      margin: 0 auto;
-      padding: 40upx 24upx 20upx 34upx;
-      .title-info {
-        padding: 0 0 40upx 0upx;
-        border-bottom: 2upx solid rgba(153, 153, 153, 0.1);
-        .no {
-          font-size: 32upx;
-          font-family: PingFangSC-Medium, PingFang SC;
-          font-weight: 500;
-          color: #4CD84A;
-        }
-      }
-      .no_img {
-        width: 106upx;
-        height: 36upx;
-        margin-right: 20upx;
-      }
-    }
-    .apply-info {
-      padding-top: 44upx;
-      .label-en {
-        font-size: 40upx;
-        font-family: PingFangSC-Semibold, PingFang SC;
-        font-weight: 600;
-        color: #F4F4F4;
-        line-height: 32upx;
-      }
-      .label {
-        transform: translateY(-10upx);
-        // margin: 64upx 0 38upx 0;
-        font-size: 48upx;
-        font-family: YouSheBiaoTiHei;
-        color: #4D6348;
-        line-height: 32upx;
-      }
-      .user-info {
-        font-size: 0;
-        margin-top: 38upx;
-        .avatar-bg {
-          margin-right: 30upx;
-          width: 180upx;
-          height: 180upx;
-          border-radius: 90upx;
-          border: 4upx solid #38D736;
-        }
-        .avatar {
-          width: 180upx;
-          height: 180upx;
-          transform: translate(-6upx, -10upx);
-          background: #FFFFFF;
-        }
-        .info-item {
-          margin: 12upx 0;
-          font-size: 28upx;
-          font-family: PingFangSC-Medium, PingFang SC;
-          font-weight: 500;
-          color: #4D6348;
-          line-height: 28upx;
-          .name {
-            max-width: 350upx;;
-          }
-          .gender {
-            margin-left: 16upx;
-            vertical-align: middle;
-            width: 28upx;
-            height: 28upx;
-          }
-        }
-      }
-      .parent-info {
-        margin-top: 48upx;
-        padding: 36upx 0 36upx 24upx;
-        background: #F6F6F6;
-        border-radius: 40upx;
-        .parent-item {
-          line-height: 28upx;
-          font-size: 24upx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          color: #999999;
-          margin-bottom: 20upx;
-          &:last-child {
-            margin-bottom: 0;
-          }
-        }
-      }
-      .footer-text {
-        margin-top: 18upx;
-        text-align: center;
-        font-size: 22upx;
-        font-family: PingFangSC-Regular, PingFang SC;
-        font-weight: 400;
-        color: rgba(153, 153, 153, 0.49);
-        line-height: 28upx;
-        .footer-item {
-          position: relative;
-          text-align: center;
-          font-size: 22upx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          color: #4CD84A;
-          line-height: 28upx;
-          margin-bottom: 10upx;
-          &::before {
-            position: absolute;
-            content: '';
-            width: 6upx;
-            height: 6upx;
-            background: #4CD84A;
-            border-radius: 50%;
-            top: 50%;
-            transform: translate(-16upx,-50%);
-          }
-          &:last-child {
-            margin-bottom: 0;
-          }
-        }
-      }
-    }
-  }
-  .stage {
-    background: #4CD84A;
-    margin-top: 66upx;
-    // padding-left: 72upx;
-    .game-info {
-      &.game-info-online {
-        .game-item {
-          .game-header {
-            margin-bottom: 62upx;
-          }
-        }
-      }
-      .game-item {
-        position: relative;
-        border-left: 2px solid rgba(255, 255, 255, 0.4);
-        padding-left: 28upx;
-        margin-left: 42upx;
-        &.last-item {
-          border-left: 2px solid;
-          border-top: 0px;
-          border-image: linear-gradient(rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 0.4) 50%, rgba(255, 255, 255, 0) 100%) 1 0 0 1; /* 标准的必须写在最后 */
-        }
-        .game-header {
-          display: inline-block;
-          border: 2upx solid #EAFFE9;
-          padding: 0 20upx;
-          height: 60upx;
-          line-height: 60upx;
-          border-radius: 12upx;
-          margin-bottom: 26upx;
-          &.active {
-            background: #EAFFE9;
-            .game-name {
-              color: #23D321;
-            }
-            .game-time {
-              color: #23D321;
-            }
-          }
-          .game-name {
-            font-size: 32upx;
-            font-family: YouSheBiaoTiHei;
-            color: #EAFFE9;
-            height: 28upx;
-            line-height: 28upx;
-            margin-right: 12upx;
-          }
-          .game-time {
-            font-size: 24upx;
-            font-family: PingFangSC-Semibold, PingFang SC;
-            font-weight: 600;
-            color: #EAFFE9;
-            height: 28upx;
-            line-height: 28upx;
-          }
-        }
-        .game-content {
-          position: relative;
-          width: 646upx;
-          height: 216upx;
-          background: url('@/static/img/apply/game_item.png');
-          background-size: cover;
-          margin-bottom: 58upx;
-          padding: 18upx 10upx 10upx 50upx;
-          &.state0 {
-            justify-content: space-between;
-          }
-          &.state1 {
-            .game-left {
-              margin-right: 20upx;
-            }
-          }
-          &.state2 {
-            .game-left {
-              margin-right: 20upx;
-            }
-          }
-          &.stage-section2 {
-            justify-content: space-between;
-            .game-center {
-              .center-title {
-                max-width: 274upx;
-              }
-            }
-            &.state0 {
-              .game-right {
-                background: url('@/static/img/apply/status_btn.png');
-                background-size: cover;
-              }
-            }
-            .game-right {
-              background: url('@/static/img/apply/status_active_btn.png');
-              background-size: cover;
-            }
-          }
-          .game-left {
-            margin-top: 26upx;
-            image {
-              width: 112upx;
-              height: 126upx;
-            }
-          }
-          .game-center {
-            margin-top: 50upx;
-            .center-title {
-              font-family: YouSheBiaoTiHei;
-              color: #002100;
-              font-size: 36upx;
-              line-height: 36upx;
-              margin-bottom: 20upx;
-            }
-            .center-time {
-              font-family: PingFangSC-Medium, PingFang SC;
-              font-weight: 500;
-              color: #333333;
-              font-size: 24upx;
-              line-height: 32upx;
-            }
-            .game-over {
-              .over-item {
-                font-size: 36upx;
-                font-family: YouSheBiaoTiHei;
-                color: #002100;
-                line-height: 40upx;
-                text-align: center;
-              }
-            }
-            .pay-status {
-              position: absolute;
-              transform: translateX(-146upx);
-              width: 174upx;
-              height: 162upx;
-              top: 14upx;
-              right: 0;
-            }
-          }
-          .game-right {
-            position: relative;
-            background: url('@/static/img/apply/status_btn.png');
-            background-size: cover;
-            width: 152upx;
-            height: 188upx;
-            .lock-right {
-              position: absolute;
-              z-index: 111;
-              top: -18upx;
-              right: 28upx;
-              width: 36upx;
-              height: 38upx;
-            }
-            .state0 {
-              background: url('@/static/img/apply/status_btn.png');
-            }
-            .status {
-              width: 56upx;
-              font-size: 30upx;
-              font-family: YouSheBiaoTiHei;
-              color: #FFFFFF;
-              line-height: 28upx;
-            }
-          }
-        }
-        .cover-box {
-          position: absolute;
-          transform: translateX(-14upx);
-          left: 0;
-          .cover {
-            width: 18upx;
-            height: 18upx;
-            &.fisrt {
-              background: #4CD84A;
-            }
-          }
-          .circle {
-            width: 24upx;
-            height: 24upx;
-            background: #4CD84A;
-            border: 4upx solid #FFFEFF;
-            border-radius: 50%;
-          }
-        }
-      }
-    }
-    .card-submit {
-      font-size: 0;
-      text-align: center;
-      padding-bottom: 42upx;
-      image {
-        width: 666upx;
-        height: 124upx;
-      }
-    }
-  }
-}
-</style>

+ 0 - 286
src/pages/apply/list.vue

@@ -1,286 +0,0 @@
-<template>
-  <view class='apply-list'>
-    <view class="apply-record">
-      <mescroll-uni ref="mescrollUni" @init="mescrollInit"  @down="downCallback" @up="upCallback" :down="downOption" :up="upOption" top="40" height="100%" :fixed="false">
-        <view class="list-item" v-for="(item, index) in signlist" :key="index">
-          <view class="cover-box"></view>
-          <view class="item-time">
-            {{ item.createTime | dateFormat('YYYY年MM月DD日') }}
-          </view>
-          <view class="item-content">
-            <view class="top flex">
-              <view class="item-left">
-                <image v-if="item.competitionChild && item.competitionChild.coverImg" class="bg-white" :src="item.competitionChild.coverImg.thumbnailUrl" mode="aspectFill" />
-              </view>
-              <view class="item-right">
-                <view class="title">{{item.competitionChild.name}}</view>
-                <view class="school text-cut" v-if="item.school && item.school.schoolName" >{{item.school.schoolName}}</view>
-                <view class="school text-cut" v-else>{{item.schoolName }}</view>
-              </view>
-            </view>
-            <view class="bottom flex justify-between align-center">
-              <view class="bottom-left">
-                <view class="name">
-                  <text class="label">参赛选手:</text>
-                  <text class="txt">{{item.baby.babyName}}</text>
-                </view>
-                <view class="level">
-                  <text class="label">组别:</text>
-                  <text class="txt">{{item.classLevel | filterLevel}}</text>
-                </view>
-              </view>
-              <button class="cu-btn round detail active" @tap.stop="handleDetail(item.competitionChildId, item.type)">查看详情</button>
-            </view>
-            <view v-if="item.competitionChild" :class="['status', 'status' + item.competitionChild.state]">{{ item.competitionChild.state | filterStatus  }}</view>
-            <!-- {{ item.competitionChild.name }} -->
-          </view>
-        </view>
-      </mescroll-uni>
-    </view>
-  </view>
-</template>
-
-<script>
-import { signUpList } from '@/api/apply';
-import MescrollUni from '@/components/mescroll-uni/mescroll-uni';
-
-export default {
-  data() {
-    return {
-      signlist: [],
-      downOption: { 
-			},
-			upOption:{
-				page: {
-					size: 10 // 每页数据的数量,默认10
-				},
-				noMoreSize: 5, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
-				empty: {
-          tip: '暂无动态',
-          icon: 'http://vote-teacher-video.luojigou.vip/Fpkyt0Hw7r57A37JRjEuEZ3947HI',
-          top: '0rpx'
-        }
-			},
-      page: {
-				num: 1,
-				size: 10
-			},
-    }
-  },
-
-  filters: {
-    filterStatus(val) {
-      switch (val) {  //0 未开始 1进行中 2已结束
-        case 0:
-          return '待开始'
-        case 1:
-          return '正在进行'
-        case 2:
-          return '已结束'
-        default:
-          return '已取消'
-      }
-    },
-    filterLevel(val) {
-      switch (val){
-        case -1:
-          return '托班'
-        case 0:
-          return '小班'
-        case 1:
-          return '中班'
-        case 2:
-          return '大班'
-        default:
-          return '待定'
-      }
-    }
-  },
-
-  onLoad() {
-    // this.initData()
-  },
-
-  onShow() {},
-  components: {
-    MescrollUni
-  },
-  methods: {
-    initData() {
-      this.$http
-        .get(signUpList, {
-          isPage: 1,
-          page: this.page.num,
-          pageSize: this.page.size
-        })
-        .then(res => {
-          // const rows = res.data.entityList || [];
-          // if(rows.length>0) {
-          //   this.signlist = rows;
-          // }
-          const { entityList, total, currentPage, pageSize } = res.data;
-          let curPageLen = entityList.length;
-          let totalPage = pageSize;
-          let totalSize = total;
-
-          // 接口返回的是否有下一页 (true/false)
-          let hasNext = true; 
-
-          if(this.page.num == 1) this.signlist = [];
-          this.signlist = this.signlist.concat(entityList);
-          this.$refs.mescrollUni.mescroll.endByPage(curPageLen, totalPage);
-          
-        })
-        .catch(() => {
-          console.log('catch'); 
-        })
-    },
-    handleDetail(id, type) { // type 0 线上 1线下
-      this.$mRouter.push({
-        route: `/pages/apply/detail?id=${id}&type=${type}`
-      })
-    },
-    // 上拉加载的回调
-    upCallback(mescroll) {
-      this.page.num = mescroll.num;
-      this.page.size = mescroll.size;
-      this.initData();
-    },
-    // 下拉刷新的回调
-    downCallback(mescroll) {
-      this.$refs.mescrollUni.mescroll.resetUpScroll()
-    },
-    mescrollInit(mescroll) {
-      // console.log('mescrollInit', mescroll);
-    }
-  }
-
-}
-</script>
-
-<style lang="scss" scope>
-.apply-list {
-  background: #FFFFFF;
-  .list-item {
-    position: relative;
-    margin-left: 42upx;
-    padding-left: 26upx;
-    padding-bottom: 72upx;
-    border-left: 4upx dashed #EBEBEB;
-    .item-time {
-      font-size: 24upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #999999;
-      line-height: 28upx;
-    }
-    .item-content {
-      position: relative;
-      margin-top: 32upx;
-      width: 658upx;
-      padding: 44upx 26upx 58upx;
-      background: #FFFFFF;
-      box-shadow: 0px 4upx 22upx 0px rgba(190, 224, 190, 0.3);
-      border-radius: 40upx;
-      .top {
-        border-bottom: 2upx solid rgba(153, 153, 153, 0.1);
-        padding-bottom: 34upx;
-      }
-      .bottom {
-        padding: 34upx 0 0 18upx;
-        .bottom-left {
-          .label {
-            font-family: PingFangSC-Regular, PingFang SC;
-            font-size: 24upx;
-            color: #999999;
-          }
-          .txt {
-            font-family: PingFangSC-Regular, PingFang SC;
-            font-size: 28upx;
-            color: #333333;
-          }
-        }
-      }
-      .item-left {
-        font-size: 0;
-        margin-right: 26upx;
-        image {
-          width: 212upx;
-          height: 160upx;
-          border-radius: 40upx;
-        }
-      }
-      .item-right {
-        max-width: 374upx;
-        padding: 10upx 0 34upx;
-        .title {
-          font-size: 24upx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          color: #999999;
-          line-height: 36upx;
-        }
-        .school {
-          margin-top: 18upx;
-          font-size: 32upx;
-          font-family: PingFangSC-Medium, PingFang SC;
-          font-weight: 500;
-          color: #333333;
-          line-height: 44upx;
-        }
-      }
-      .detail {
-        font-size: 28upx;
-        font-family: PingFangSC-Medium, PingFang SC;
-        font-weight: 500;
-        color: #FFFFFF;
-        line-height: 28upx;
-        height: 56upx;
-        width: 180upx;
-        &.active {
-          background: #23D321;
-          box-shadow: 0px 4upx 12upx 0px rgba(35, 211, 33, 0.43);
-          border-radius: 200upx;
-        }
-      }
-      .status {
-        position: absolute;
-        right: 0;
-        top: 0;
-        // width: 86upx;
-        display: inline-block;
-        padding: 0 12upx;
-        height: 48upx;
-        line-height: 48upx;
-        border-radius: 0 40upx 0 40upx;
-        font-size: 22upx;
-        font-family: YouSheBiaoTiHei;
-        color: #FFFFFF;
-        text-align: center;
-      }
-      .status0 {
-        background: linear-gradient(169deg, #FFC761 0%, #FF9632 100%);
-      }
-      .status1 {
-        background: linear-gradient(172deg, #37F135 0%, #23D321 100%);
-      }
-      .status2 {
-        background: #F2F2F2;
-        color: #999999;
-      }
-    }
-    .cover-box {
-      position: absolute;
-      top: 0;
-      left: 0;
-      transform: translateX(-14upx);
-      width: 24upx;
-      height: 24upx;
-      background: #FFFFFF;
-      box-shadow: 0px 4upx 20upx 0px #CDFCCD;
-      border: 6upx solid #23D321;
-      border-radius: 50%;
-    }
-  }
-}
-</style>

+ 0 - 205
src/pages/apply/result.vue

@@ -1,205 +0,0 @@
-<template>
-  <view class='result'>
-    <view class="success" v-if="signUp">
-      <view class="header">
-        <view class="info flex justify-center align-center">
-          <image class="img" src="/static/img/common/success.png"></image>
-          <view class="title">报名成功</view>
-        </view>
-        <image class="logo" :src="logoImg" mode="aspectFill" />
-      </view>
-      <view class="content">
-        <view class="title-info flex align-center">
-          <image class="no_img" src="/static/img/apply/sign_no.png" mode="" />
-          <text class="no">{{ signUp.competitionNo }}</text>
-        </view>
-        <view class="user-info flex" v-if="baby">
-          <image class="avatar cu-avatar round" :src="baby.headImg" mode="aspectFill" />
-          <view class="user-info_content">
-            <view class="name info-item">{{ baby.babyName }}·选手姓名</view>
-            <view class="info-item" v-if="signUp.school">所在园所:{{ signUp.school.schoolName || signUp.schoolId }}</view>
-            <view class="info-item">组别:{{ signUp.classLevel | filterLevel }}</view>
-          </view>
-        </view>
-        <view class="game-info flex flex-direction justify-center">
-          <view class="game-item" v-for="(item, index) in stageList" :key="index">{{ item.name }}日期:{{ item.startTime | dateFormat('YYYY-MM-DD') }} — {{ item.endTime | dateFormat('MM-DD') }}</view>
-        </view>
-        <image class="success_red" src="/static/img/apply/success_red.png" mode="" />
-        <button class="cu-btn block detail round" @tap.stop="navTo('/pages/apply/detail')">查看详情</button>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script>
-import { mapState } from 'vuex';
-
-export default {
-  data() {
-    return {
-      logoImg: require('@/static/img/apply/sign_logo.png'),
-    }
-  },
-
-  onLoad() {},
-
-  onShow() {},
-
-  filters: {
-    filterLevel(val) {
-      switch (val){
-        case -1:
-          return '托班'
-        case 0:
-          return '小班'
-        case 1:
-          return '中班'
-        case 2:
-          return '大班'
-        default:
-          return '待定'
-      }
-    }
-  },
-
-  computed: {
-    ...mapState({
-      signUp: 'signUp',
-      baby: 'baby',
-      stageList: 'stageList'
-    })
-  },
-
-  methods: {
-    handleDetail() {
-
-    },
-    navTo(route) {
-      this.$mRouter.push({route})
-    }
-  }
-
-}
-</script>
-
-<style lang="scss">
-.result {
-  .success {
-    .header {
-      position: relative;
-      height: 436upx;
-      background: linear-gradient(360deg, rgba(131, 238, 129, 0) 0%, #4CD84A 20%, #4CD84A 100%);
-      .img {
-        width: 64upx;
-        height: 64upx;
-        margin-right: 16upx;
-      }
-      .logo {
-        width: 190upx;
-        height: 276upx;
-        position: absolute;
-        right: 12upx;
-        bottom: 136upx;
-      }
-    }
-    .info {
-      padding-top: 100upx;
-    }
-    .content {
-      position: relative;
-      transform: translateY(-196upx);
-      width: 686upx;
-      padding: 26upx 24upx 40upx;
-      margin: 0 auto;
-      background: #FFFFFF;
-      box-shadow: 0px 12upx 22upx 0px rgba(190, 224, 190, 0.3);
-      border-radius: 40upx;
-      .title-info {
-        font-size: 0;
-        padding: 0 0 24upx 12upx;
-        border-bottom: 2upx solid rgba(153, 153, 153, 0.1);
-        .no {
-          font-size: 32upx;
-          line-height: 36upx;
-          font-family: PingFangSC-Medium, PingFang SC;
-          font-weight: 500;
-          color: #999999;
-        }
-      }
-      .no_img {
-        width: 106upx;
-        height: 36upx;
-        margin-right: 20upx;
-      }
-      .user-info {
-        margin-top: 48upx;
-        .user-info_content {
-          flex: 1;
-        }
-        .info-item {
-          font-size: 24upx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          color: #999999;
-          line-height: 28upx;
-          margin-bottom: 18upx;
-        }
-        .name {
-          font-size: 28upx;
-          font-family: PingFangSC-Semibold, PingFang SC;
-          font-weight: 600;
-          color: #333333;
-          line-height: 28upx;
-        }
-        .avatar {
-          width: 84upx;
-          height: 84upx;
-          margin-right: 32upx;
-          background: #FFFFFF;
-        }
-      }
-      .game-info {
-        margin: 28upx auto 0;
-        width: 590upx;
-        height: 180upx;
-        background: #F6F6F6;
-        border-radius: 22upx;
-        padding-left: 28upx;
-        .game-item {
-          height: 28upx;
-          line-height: 28upx;
-          font-size: 24upx;
-          font-family: PingFangSC-Medium, PingFang SC;
-          font-weight: 500;
-          color: #333333;
-          margin-bottom: 20upx;
-        }
-      }
-      .detail {
-        margin: 60upx auto 0;
-        width: 590upx;
-        height: 72upx;
-        line-height: 72upx;
-        background: #23D321;
-        box-shadow: 0px 4upx 12upx 0px rgba(35, 211, 33, 0.43);
-        border-radius: 200upx;
-        color: #FFFFFF;
-        font-weight: 500;
-        font-size: 28upx;
-      }
-      .success_red {
-        position: absolute;
-        width: 164upx;
-        height: 164upx;
-        top: 72upx;
-        right: 48upx;
-      }
-    }
-    .title {
-      font-size: 68upx;
-      font-family: YouSheBiaoTiHei;
-      color: #FFFFFF;
-    }
-  }
-}
-</style>

+ 0 - 841
src/pages/cloud/apply.vue

@@ -1,841 +0,0 @@
-<template>
-  <view class='cloud-apply'>
-    <view class="apply-item apply-section-01">
-      <view class="apply-item-header">
-        <image class="header-label" src="/static/img/index/title_01.png" mode="" />
-      </view>
-      <view class="apply-item-wrapper apply-item-01 flex justify-between">
-        <view class="apply-left flex">
-          <view class="user-avatar">
-            <image class="avatar-img" v-if="baby" :src="baby.headImg" mode="" />
-            <image class="avatar-img" v-else :src="avatarImg" mode="" />
-          </view>
-          <view class="user-info" v-if="!baby" @tap.stap="navTo('/pages/index/applyInfo?type=user&action=save')">
-            <view class="empty-title">参赛孩子信息</view>
-            <view class="empty-desc">请输入孩子参赛信息</view>
-          </view>
-          <view class="user-info" v-else @tap.stap="navTo('/pages/index/applyInfo?type=user&action=save')">
-            <view class="flex align-center">
-              <!-- <view class="label required">选手姓名:</view>
-              <view class="info">{{ baby.babyName }}</view> -->
-              <view class="padding-bottom-xs">
-                <text class="label required">选手姓名:</text>
-                <text class="info">
-                  {{ baby.babyName }}
-                </text>
-                <image class="gender" :src="baby.sex | imgUrlFilter" mode="" />
-              </view>
-              <!-- <view class="gender">
-              </view> -->
-            </view>
-            <view class="flex align-center">
-              <view class="label required">出生日期:</view>
-              <view class="info">{{ baby.babyBirthday | dateFormat('YYYY-MM-DD') }}</view>
-            </view>
-          </view>
-        </view>
-        <view class="apply-right flex align-center justify-center" @tap.stap="navTo('/pages/index/applyInfo?type=user&action=save')">
-          <view class="user-file">
-            <image class="file-img" src="/static/img/index/file1.png" mode="" />
-          </view>
-          <image class="light" src="/static/img/index/light.png" mode="" />
-        </view>
-        <image class="lock lock-left" src="/static/img/index/lock.png" mode="" />
-        <image class="lock lock-right" src="/static/img/index/lock.png" mode="" />
-      </view>
-    </view>
-    <view class="apply-item  apply-section-02">
-      <view class="apply-item-header">
-        <image class="header-label" src="/static/img/index/title_02.png" mode="" />
-      </view>
-      <view class="apply-item-wrapper apply-item-02 flex justify-between">
-        <view class="apply-left flex">
-          <view class="user-avatar user-avatar-02">
-            <image v-if="user" class="avatar-img " :src="user.avatarUrl" mode="" />
-            <image v-else class="avatar-img " :src="avatarImg" mode="" />
-          </view>
-          <view class="user-info user-info-02" v-if="!parent" @tap.stap="navTo('/pages/index/applyInfo?type=parent')">
-            <view class="empty-title">家长信息</view>
-            <view class="empty-desc">请输入家长信息</view>
-          </view>
-          <view class="user-info user-info-02" v-else @tap.stap="navTo('/pages/index/applyInfo?type=parent')">
-            <view class="flex align-center">
-              <!-- <view class="label required">家长姓名:</view>
-              <view class="info">{{ parent.parentName }}</view> -->
-              <view class="padding-bottom-xs">
-                <text class="label required">家长姓名:</text>
-                <text class="info">{{ parent.parentName }}</text>
-                <text class="relation">{{ parent.parentBabyRelation }}</text>
-              </view>
-              <!-- <view class="relataion">{{ parent.parentBabyRelation }}</view> -->
-            </view>
-            <view class="flex align-center padding-bottom-xs">
-              <view class="label required">联系电话:</view>
-              <view class="info">{{ parent.parentPhone }}</view>
-            </view>
-            <view class="flex">
-              <view class="label"><text class="label">家庭住址:</text><text class="address">{{ parent.regionCity | regionCityFilter}}{{ parent.address }}</text>
-              </view>
-              <!-- <view class="info">{{ parent.regionCity }}{{ parent.address }}</view> -->
-            </view>
-          </view>
-        </view>
-        <view class="apply-right flex align-center justify-center" @tap.stap="navTo('/pages/index/applyInfo?type=parent')">
-          <view class="user-file user-file-02">
-            <image class="file-img" src="/static/img/index/file2.png" mode="" />
-          </view>
-          <image class="light" src="/static/img/index/light.png" mode="" />
-        </view>
-        <image class="lock lock-left" src="/static/img/index/lock.png" mode="" />
-        <image class="lock lock-right" src="/static/img/index/lock.png" mode="" />
-      </view>
-    </view>
-    <view class="apply-item apply-section-03">
-      <view class="apply-item-header">
-        <image class="header-label" src="/static/img/index/title_03.png" mode="" />
-      </view>
-      <view class="apply-item-wrapper apply-item-03">
-        <view class="garden">
-          <view class="form-item flex align-center justify-between">
-            <view class="label required">省·市·区:</view>
-            <view class="flex align-center">
-              <pick-regions name="regionCode" :defaultRegion="defaultRegionCode" @getRegion="handleGetRegion">
-                <text :class="['regions', regionName ? '' : 'empty']" >{{ regionName || '请选择' }}</text>
-              </pick-regions>
-              <text class="input-icon cuIcon-right"></text>
-            </view>
-          </view>
-          <view class="form-item flex align-center justify-between">
-            <view class="label required">所在园所:</view>
-            <view class="flex align-center">
-              <input placeholder="未填写" v-model="schoolName"></input>
-              <text class="input-icon cuIcon-right"></text>
-            </view>
-          </view>
-          <view class="form-item flex align-center justify-between">
-            <view class="label required">组别:</view>
-            <view class="flex justify-end level">
-              <view v-for="(item, index) in typeList" :class="['select-btn', 'block', classLevel === item.value ? 'checked' : '']" :key="index" @tap.stop="radioChange(item)">
-                {{ item.label }}
-              </view>
-              <!-- <radio-group class="block" v-model="classLevel"  @change="radioChange">
-                <radio class='radio' color="#FFF699" :value="item.value" :checked="classLevel === item.value" v-for="(item, index) in typeList" :key="index">{{ item.label }}</radio>
-              </radio-group> -->
-            </view>
-          </view>
-        </view>
-        <image class="lock lock-left" src="/static/img/index/lock.png" mode="" />
-        <image class="lock lock-right" src="/static/img/index/lock.png" mode="" />
-      </view>
-    </view>
-    <view class="apply-submit">
-      <image @tap.stop="handleSubmit" class="apply-btn-img" src="/static/img/index/apply_btn_02.png" mode="" />
-    </view>
-
-    <!-- 报名失败弹窗 -->
-    <zd-modal-fail @emitClose="failModelClose" :route="'/pages/apply/list'" :failModel="failModel"></zd-modal-fail>
-
-    <!-- <view :class="['cu-modal', failModel ? 'show': '']"  @touchmove.stop.prevent="clear">
-      <view class="open-bg">
-        <view class="open-wrap">
-          <image class="close" src="/static/img/common/model_close.png" mode="" @tap.stop="failModel=false" />
-          <view class="img-box">
-            <image src="/static/img/common/model_bg.png" mode="" />
-          </view>
-          <view class="footer flex align-center">
-            <view class="btn" @tap.stop="failModel=false">
-              <image src="/static/img/common/cancel.png" mode="" />
-            </view>
-            <view class="btn" @tap.stop="navTo('/pages/cloud/result')">
-              <image src="/static/img/common/comfirm.png" mode="" />
-            </view>
-          </view>
-        </view>
-      </view>
-    </view> -->
-
-    <!-- 报名成功弹窗 -->
-    <view :class="['cu-modal', successModel ? 'show': '']" >
-      <view class="open-bg">
-        <view class="open-wrap">
-          <image class="close" src="/static/img/common/model_close.png" mode="" @tap.stop="successModel=false" />
-          <view class="img-box success">
-            <image src="/static/img/common/model_sucess_bg.png" mode="" />
-          </view>
-        </view>
-      </view>
-    </view>
-
-  </view>
-</template>
-
-<script>
-import { userInfo, getUserInfoOnline } from '@/api/userInfo';
-import { schoolList, saveApply, saveApplyOnline } from '@/api/apply';
-import { mapState } from 'vuex';
-import pickRegions from '@/components/pick-regions/pick-regions.vue';
-import zdModalFail from '@/components/zd-modal-fail';
-
-export default {
-  data() {
-    return {
-      avatarImg: '/static/img/common/empty_avatar.png',
-      failModel: false,
-      successModel: false,
-      classLevel: '0',
-      shoppeName: '',
-      region:[],
-      defaultRegion:['北京市','市辖区','东城区'],
-      defaultRegionCode: '110101',
-      gradenIndex: 0,
-      typeList: [
-        // {
-        //   label: '托班',
-        //   value: '-1'
-        // },
-        {
-          label: '小班',
-          value: '0'
-        },
-        {
-          label: '中班',
-          value: '1'
-        },
-        {
-          label: '大班',
-          value: '2'
-        },
-      ],
-      gradenList: [],
-      schoolName: '',
-      baby: null,
-      parent: null,
-      signUp: null
-    }
-  },
-
-  onLoad(options) {
-		this.initData();
-  },
-
-  onShow() {},
-
-  filters: {
-    imgUrlFilter(val) {
-      switch (val){
-        case 1:
-          return require('static/img/index/male.png')
-        case 2:
-          return require('static/img/index/female.png')
-        default:
-          return require('static/img/index/female.png')
-      }
-    },
-    regionCityFilter(val) {
-      if(val) {
-        let regionCity;
-        try {
-          regionCity = JSON.parse(val) || [];
-        } catch (error) {
-          regionCity = val;
-        }
-        if(!Array.isArray(regionCity)) {
-          return regionCity;
-        } else {
-          return regionCity.join('');
-        }
-      }
-    }
-  },
-
-  computed: {
-    ...mapState({
-      user: 'user',
-      parentForm: 'parent',
-      onlineId: 'onlineId',
-      offlineId: 'offlineId'
-    }),
-    regionName: {
-      get: function() {
-        return this.region.map(item=>item.name).join('/')
-      },
-      set: function(val) {
-        if(val) {
-          this.region = val.map(item => {
-            return {
-              name: item
-            }
-          })
-        }
-        return val;
-      }
-    },
-    schoolRegionCode() {
-
-    }
-  },
-
-  watch: {
-    parentForm(val, oldVal) {
-      if(val) {
-        this.parent = val;
-      }
-    }
-  },
-
-  components: {
-    pickRegions,
-    zdModalFail
-  },
-  methods: {
-    async initData() {
-      // await this.getRegion();
-      if (this.parentForm) {
-        this.parent = this.parentForm;
-      }
-      await this.getUserInfo();
-    },
-    async getUserInfo() {
-      this.$mStore.dispatch('getUserInfoOnline',{
-        competitionChildId: this.onlineId
-      }).then(async res => {
-          const { baby, signUp } = res.data;
-          this.baby = baby;
-          this.signUp = signUp;
-          if(signUp) {
-            this.parent = {
-              parentName: signUp.parentName,
-              parentBabyRelation: signUp.parentBabyRelation,
-              parentPhone: signUp.parentPhone,
-              regionCity: signUp.regionCity,
-              regionCode: signUp.regionCode,
-              address: signUp.address
-            }
-            this.classLevel = signUp.classLevel + '';
-            this.schoolName = signUp.schoolName;
-            try{
-              this.regionName = JSON.parse(signUp.schoolRegionName);
-            }catch(e){
-              this.regionName = '';
-            }
-            try{
-              const schoolRegionCode = JSON.parse(signUp.schoolRegionCode);
-              schoolRegionCode.map((item, index) => {
-                this.region[index].code = item;
-              })
-            }catch(e){
-            }
-            this.regionName = JSON.parse(signUp.schoolRegionName);
-            const code = JSON.parse(signUp.schoolRegionCode);
-            if (code && code.length > 0) {
-              this.defaultRegionCode = code[code.length - 1];
-            }
-          }
-      }).catch(() => {
-        console.log('catch');
-      })
-    },
-    getRegion(code) {
-      this.$http
-        .get(`${schoolList}`, {
-          isPage: 0,
-          code
-        })
-        .then(res => {
-          this.gradenList = res.data || [];
-          // 获取园所所在列表的下标
-        })
-        .catch(() => {
-        })
-    },
-    // 获取选择的地区
-    handleGetRegion(region){
-      this.region = region;
-    },
-    handleSubmit() {
-      // 
-      let formData = {
-        ...this.baby,
-        ...this.parent,
-        competitionChildId: this.onlineId,
-      };
-      if (this.region && this.region.length <=0 ) {
-        this.$mHelper.toast('请选择省市区');
-        return false;
-      }
-      formData['schoolRegionCode'] = JSON.stringify(this.region.map(item => item.code));
-      formData['schoolRegionName'] = JSON.stringify(this.region.map(item => item.name));
-      formData['schoolName'] = this.schoolName;
-      formData['classLevel'] = this.classLevel;
-      if(!this.baby) {
-        this.$mHelper.toast('请填写选手信息');
-        return false;
-      }
-      if(!this.parent) {
-        this.$mHelper.toast('请填写家长信息');
-        return false;
-      }
-      let rules = [
-        { name: 'headImg', checkType: 'notnull', checkRule: '', errorMsg: '头像不能为空' },
-        { name: 'babyName', checkType: 'notnull', checkRule: '', errorMsg: '选手姓名不能为空' },
-        { name: 'sex', checkType: 'in', checkRule: '1,2', errorMsg: '性别不能为空' },
-        { name: 'babyBirthday', checkType: 'notnull', checkRule: '', errorMsg: '出生日期不能为空' },
-        { name: 'parentName', checkType: 'notnull', checkRule: '', errorMsg: '请填写家长姓名' },
-        { name: 'parentBabyRelation', checkType: 'notnull', checkRule: '', errorMsg: '请选择关系' },
-        { name: 'parentPhone', checkType: 'notnull', checkRule: '', errorMsg: '请填写联系方式'},
-        { name: 'parentPhone', checkType: 'phoneno', checkRule: '', errorMsg: '联系方式不正确'},
-        { name: 'address', checkType: 'notnull', checkRule: '', errorMsg: '请填写详细地址'},
-      ];
-      if (this.signUpType == 0) {
-        rules.push(
-          { name: 'schoolRegionCode', checkType: 'notnull', checkRule: '', errorMsg: '请选择省市区地区'},
-          { name: 'schoolRegionName', checkType: 'notnull', checkRule: '', errorMsg: '请选择省市区地区'},
-          { name: 'classLevel', checkType: 'in', checkRule: '0,1,2', errorMsg: '请选择组别'},
-        )
-      }
-      let checkRes = this.$mGraceChecker.check(formData, rules);
-      if (checkRes) {
-        this.$http
-          .post(saveApplyOnline,{
-            ...formData
-          })
-          .then(res => {
-            if (res.data == 0) {
-              this.failModel = true;
-            } else {
-              this.successModel = true;
-              setTimeout(() => {
-                this.$mRouter.push({
-                  route: '/pages/cloud/result'
-                })
-              }, 1500);
-            }
-            this.$mStore.dispatch('getUserInfoOnline', {
-              competitionChildId: this.onlineId
-            })
-          })
-          .catch((err) => {
-            console.log('err', err)
-          })
-      } else {
-        this.$mHelper.toast(this.$mGraceChecker.error)
-      }
-    },
-    radioChange(evt) {
-      this.classLevel = evt.value;
-    },
-    navTo(route) {
-      this.$mRouter.push({route})
-    },
-    failModelClose() {
-      this.failModel = false;
-    },
-    clear() {
-
-    }
-  }
-
-}
-</script>
-
-<style lang="scss" scoped>
-page {
-  height: 100%;
-  background: #4CD84A;
-}
-.cloud-apply {
-  min-height: 100%;
-  background: #4CD84A;
-  .apply-item {
-    padding: 0 28upx;
-    position: relative;
-    &.apply-section-01,&.apply-section-02 {
-      // margin-bottom: 38upx;
-      padding-bottom: 38upx;
-    }
-    &.apply-section-01 {
-      padding-top: 36upx;
-      background: url('@/static/img/index/ABC_G@3x.png') no-repeat;
-      background-size: 60upx 60upx;
-      background-position: 200upx 24upx;
-    }
-    &.apply-section-02 {
-      padding-top: 38upx;
-      background: url('@/static/img/index/ABC_B@3x.png') no-repeat;
-      background-size: 60upx 60upx;
-      background-position: 554upx 38upx;
-    }
-    &.apply-section-03 {
-      padding-top: 38upx;
-      background: url('@/static/img/index/ABC_A@3x.png') no-repeat;
-      background-size: 60upx 60upx;
-      background-position: 242upx 32upx;
-    }
-    &.apply-section-04 {
-      padding-top: 84upx;
-      background: url('@/static/img/index/ABC_M@3x.png') no-repeat;
-      background-size: 82upx 88upx;
-      background-position: top 32upx right 0upx;
-      padding-bottom: 54upx;
-    }
-    .apply-item-header {
-      font-size: 0;
-      margin-bottom: 32upx;
-      image {
-        width: 154upx;
-        height: 42upx;
-      }
-    }
-    .apply-item-wrapper {
-      position: relative;
-      width: 694upx;
-      background: #FFFFFF;
-      border-radius: 40upx;
-      border: 10upx solid #B6F9B6;
-      .lock {
-        position: absolute;
-        top: -20upx;
-        width: 36upx;
-        height: 38upx;
-      }
-      .lock-left {
-        left: 30upx;
-      }
-      .lock-right {
-        right: 30upx;
-      }
-    }
-    .apply-item-01,.apply-item-02 {
-      // height: 326upx;
-      padding-left: 36upx;
-      .apply-left {
-        flex: 1;
-        margin: 36upx 0 56upx;
-      }
-      .apply-right {
-        position: relative;
-        text-align: center;
-        width: 150upx;
-        background: #FEEB56;
-        box-shadow: 0upx 6upx 2upx 0upx #FDB035;
-        border-radius: 0upx 24upx 24upx 0upx;
-        // border: 4upx solid #FFFFFF;
-        margin: 4upx 6upx 10upx 0;
-        .light {
-          position: absolute;
-          width: 44upx;
-          height: 6upx;
-          left: 16upx;
-          top: 12upx;
-        }
-      }
-    }
-    .apply-item-04 {
-      padding: 44upx 24upx 42upx 38upx;
-    }
-    .user-avatar {
-      // position: absolute;
-      left: 64upx;
-      bottom: 68upx;
-      font-size: 0;
-      margin-right: 30upx;
-      border: 1upx solid #38D736;
-      border-radius: 50%;
-      width: 112upx;
-      height: 112upx;
-      .avatar-img {
-        width: 112upx;
-        height: 112upx;
-        border-radius: 50%;
-        background: #ffffff;
-        transform: translate(-6upx, -8upx)
-      }
-    }
-    .user-info {
-      max-width: 336upx;
-      .empty-title {
-        height: 42upx;
-        font-size: 28upx;
-        line-height: 42upx;
-        font-family: PingFangSC-Medium, PingFang SC;
-        font-weight: 500;
-        color: #333333;
-      }
-      .empty-desc {
-        height: 42upx;
-        font-size: 24upx;
-        font-family: PingFangSC-Medium, PingFang SC;
-        font-weight: 500;
-        color: #999999;
-        line-height: 42upx;
-      }
-      .gender {
-        font-size: 0;
-        margin-left: 16upx;
-        width: 28upx;
-        height: 28upx;
-        vertical-align: middle;
-      }
-    }
-    .user-info-02 {
-      // max-width: 364upx;
-      .address {
-        font-size: 28upx;
-        font-family: PingFangSC-Regular, PingFang SC;
-        color: #333333;
-        max-width: 220upx;
-        line-height: 42upx;
-      }
-      .relation {
-        display: inline-block;
-        width: 70upx;
-        text-align: center;
-        background: #E5F5FF;
-        border-radius: 86rpx;
-        height: 28rpx;
-        line-height: 28rpx;
-        font-size: 20rpx;
-        font-family: YouSheBiaoTiHei;
-        color: #00A0FF;
-        margin-left: 20upx;
-        vertical-align: middle;
-      }
-    }
-    .user-file {
-      // position: absolute;
-      right: 58upx;
-      bottom: 92upx;
-      .file-img {
-        width: 82upx;
-        height: 54upx;
-      }
-    }
-    .user-file-02 {
-      bottom: 142upx;
-    }
-    .garden, .counter  {
-      width: 100%;
-      padding: 38upx 44upx 46upx 36upx;
-      .form-item {
-        margin-bottom: 36upx;
-        &:last-child {
-          margin-bottom: 0upx;
-        }
-        .city {
-          width: 200upx;
-        }
-        input {
-          font-size: 28upx;
-          color: #333333;
-        }
-        ::v-deep .radio {
-          .uni-radio-input {
-            border: 2px solid #4CD84A;
-            width: 30upx;
-            height: 30upx;
-            margin-right: 8upx;
-            &.uni-radio-input-checked {
-              background: #FEEB56;
-              border: 2px solid #4CD84A !important;
-              &::after {
-                border: none !important;
-              }
-            }
-          }
-          .uni-radio-wrapper {
-            margin-right: 42upx;
-          }
-        }
-        ::v-deep .uni-input-input {
-          text-align: right;
-        }
-        .input-placeholder {
-          text-align:right;
-          font-size: 28upx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          color: #999999;
-          line-height: 40upx;
-        }
-        .input-icon {
-          color: #CACACA;
-          line-height: 1;
-        }
-        .regions {
-          max-width: 300upx;
-          &.empty {
-            font-size: 28upx;
-            font-family: PingFangSC-Regular, PingFang SC;
-            font-weight: 400;
-            color: #999999;
-          }
-        }
-        .empty {
-          font-size: 28upx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          color: #999999;
-        }
-      }
-    }
-    .counter {
-      top: 134upx;
-      padding-left: 64upx;
-      .form-item {
-        .input-placeholder {
-          text-align: left;
-        }
-        ::v-deep .uni-input-input {
-          text-align: left;
-        }
-      }
-    }
-    .rule {
-      width: 600upx;
-      font-size: 28upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #666666;
-      .title {
-        font-size: 0;
-        margin-bottom: 32upx;
-        image {
-          width: 236upx;
-          height: 52upx;
-        }
-      }
-      .rule-item {
-        line-height: 44upx;
-      }
-    }
-    .apply-submit {
-      text-align: center;
-      margin-top: 58upx;
-      .apply-btn-img {
-        width: 486upx;
-        height: 124upx;
-      }
-    }
-    .user-info {
-      .label {
-        margin-right: 12upx;
-      }
-      .info {
-        font-size: 28upx;
-        font-family: PingFangSC-Medium, PingFang SC;
-        color: #333333;
-        max-width: 220upx;
-      }
-    }
-    .label {
-      position: relative;
-      font-size: 28upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #999999;
-      line-height: 28upx;
-      &.required {
-        &::before {
-          position: absolute;
-          top: 0;
-          left: -14upx;
-          display: inline-block;
-          margin-right: 0px;
-          color: #FF0000;
-          font-size: 28upx;
-          line-height: 1;
-          content: "*";
-        }
-      }
-    }
-
-  }
-  .open-bg {
-    position: fixed;
-    left: 50%;
-    bottom: 30%;
-    transform: translateX(-50%);
-    .open-wrap {
-      position: relative;
-      width: 588upx;
-      // height: 732upx;
-      margin: 0 auto;
-      border-radius: 24upx;
-      .close {
-        position: absolute;
-        width: 64upx;
-        height: 64upx;
-        right: -12upx;
-        top: 52upx;
-        z-index: 11;
-      }
-      .img-box {
-        font-size: 0;
-        image {
-          width: 588upx;
-          height: 723upx;
-          object-fit: cover;
-          &.success {
-            width: 588upx;
-            height: 712upx;
-            object-fit: cover;
-          }
-        }
-      }
-      .footer {
-        position: absolute;
-        bottom: 80upx;
-        left: 50%;
-        transform: translateX(-50%);
-        .btn {
-          font-size: 0;
-          image {
-            width: 206upx;
-            height: 106upx;
-          }
-        }
-      }
-    }
-  }
-  .apply-submit {
-    text-align: center;
-    margin-top: 80upx;
-    .apply-btn-img {
-      width: 478upx;
-      height: 124upx;
-    }
-  }
-  .level {
-    .select-btn {
-      width: 100upx;
-      margin-left: 18upx;
-      &:first-child {
-        margin-left: 0;
-      }
-    }
-  }
-  .select-btn {
-    width: 152upx;
-    height: 48upx;
-    line-height: 44upx;
-    border-radius: 24upx;
-    border: 2upx solid rgba(153, 153, 153, 0.2);
-    font-size: 28upx;
-    font-family: PingFangSC-Regular, PingFang SC;
-    font-weight: 400;
-    color: #999999;
-    text-align: center;
-    margin-left: 46upx;
-    &.checked {
-      line-height: 48upx;
-      background: #FEEB56;
-      box-shadow: 2upx 2upx 2upx 0px #FDB035;
-      font-family: PingFangSC-Medium, PingFang SC;
-      font-weight: 500;
-      color: #C24000;
-      border: none;
-      transition: 0.3s;
-    }
-  }
-}
-</style>

+ 0 - 50
src/pages/cloud/index.vue

@@ -1,50 +0,0 @@
-<template>
-  <view class='cloud'>
-    <button class="submit-btn cu-btn block" @tap="handleSubmit"></button>
-  </view>
-</template>
-
-<script>
-export default {
-  data() {
-    return {}
-  },
-
-  onLoad() {},
-
-  onShow() {},
-
-  methods: {
-    handleSubmit() {
-      this.$mRouter.push({
-        route: '/pages/cloud/apply'
-      })
-    }
-  }
-
-}
-</script>
-
-<style lang="scss" scope>
-.cloud {
-  height: 1656upx;
-  // background: url('@/static/img/index/cloud_index.png');
-  background: url('https://app-resources-luojigou.luojigou.vip/Fr_WkvUZjiQ3WyateE1p80Fje3z6');
-  background-color:#6FBB47;
-  background-size: cover;
-  .submit-btn {
-    position: fixed;
-    bottom: 26upx;
-    left: 50%;
-    transform: translateX(-50%);
-    width: 478upx;
-    height: 124upx;
-    background: url('@/static/img/index/cloud_submit.png');
-    background-size: cover;
-    font-size: 28upx;
-    font-family: PingFangSC-Semibold, PingFang SC;
-    font-weight: 600;
-    color: #C24000;
-  }
-}
-</style>

+ 0 - 222
src/pages/cloud/result.vue

@@ -1,222 +0,0 @@
-<template>
-  <view class='result'>
-    <view class="success" v-if="signUp">
-      <view class="header">
-        <view class="info flex justify-center align-center">
-          <image class="img" src="/static/img/common/success.png"></image>
-          <view class="title">报名成功</view>
-        </view>
-        <image class="logo" :src="logoImg" mode="" />
-      </view>
-      <view class="content">
-        <view class="title-info flex align-center">
-          <image class="no_img" src="/static/img/apply/sign_no.png" mode="" />
-          <text class="no">{{ signUp.competitionNo }}</text>
-        </view>
-        <view class="user-info flex" v-if="baby">
-          <image class="avatar cu-avatar round" :src="baby.headImg" mode="" />
-          <view class="user-info_content">
-            <view class="name info-item">{{ baby.babyName }}·选手姓名</view>
-            <view class="info-item" v-if="signUp.school">所在园所:{{ signUp.school.schoolName }}</view>
-            <view class="info-item" v-else>所在园所:{{ signUp.schoolName  }}</view>
-            <view class="info-item">组别:{{ signUp.classLevel | filterLevel }}</view>
-          </view>
-        </view>
-        <view class="game-info flex flex-direction justify-center">
-          <view class="game-item" v-for="(item, index) in stageList" :key="index">{{ item.name }}日期:{{ item.startTime | dateFormat('YYYY-MM-DD') }} — {{ item.endTime | dateFormat('MM-DD') }}</view>
-        </view>
-        <image class="success_red" src="/static/img/apply/success_red.png" mode="" />
-        <!-- <button class="cu-btn block detail round">线上云赛</button> -->
-        <view class="weapp-btn" v-if="weappShow">
-          <open-weapp :username="'gh_2a4feb568ecb'" :path="path" :content="content"></open-weapp>
-        </view>
-        <button v-else class="cu-btn block detail round" @tap.stop="handleDetail()">线上云赛</button>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script>
-import { mapState } from 'vuex';
-import OpenWeapp from '@/components/open-weapp/open';
-const ACCESSTOKEN = uni.getStorageSync('accessToken') || '';
-
-export default {
-  data() {
-    return {
-      path: `/pages/cloundCompetition/index?token=${ACCESSTOKEN}`,
-      content: '<div class="btn" style="width: 295px;height:36px;margin: 0 auto;line-height:36px;font-size:14px;color: #ffffff;border-radius: 100px;text-align: center;font-weight:500;background: #23D321;">线上云赛</div>',
-      logoImg: require('@/static/img/apply/sign_logo.png'),
-      weappShow: process.env.NODE_ENV === 'production' ? true : false
-    }
-  },
-
-  onLoad() {},
-
-  onShow() {},
-
-  filters: {
-    filterLevel(val) {
-      switch (val){
-        case -1:
-          return '托班'
-        case 0:
-          return '小班'
-        case 1:
-          return '中班'
-        case 2:
-          return '大班'
-        default:
-          return '待定'
-      }
-    }
-  },
-
-  components: {
-    OpenWeapp
-  },
-
-  computed: {
-    ...mapState({
-      signUp: 'signUp',
-      baby: 'baby',
-      stageList: 'stageList'
-    })
-  },
-
-  methods: {
-    handleDetail() {
-      this.$mHelper.toast('打开小程序')
-    },
-    navTo(route) {
-      this.$mRouter.push({route})
-    }
-  }
-
-}
-</script>
-
-<style lang="scss">
-.result {
-  .success {
-    .header {
-      position: relative;
-      height: 436upx;
-      background: linear-gradient(360deg, rgba(131, 238, 129, 0) 0%, #4CD84A 20%, #4CD84A 100%);
-      .img {
-        width: 64upx;
-        height: 64upx;
-        margin-right: 16upx;
-      }
-      .logo {
-        width: 190upx;
-        height: 276upx;
-        position: absolute;
-        right: 12upx;
-        bottom: 136upx;
-      }
-    }
-    .info {
-      padding-top: 100upx;
-    }
-    .content {
-      position: relative;
-      transform: translateY(-196upx);
-      width: 686upx;
-      padding: 26upx 24upx 40upx;
-      margin: 0 auto;
-      background: #FFFFFF;
-      box-shadow: 0px 12upx 22upx 0px rgba(190, 224, 190, 0.3);
-      border-radius: 40upx;
-      .title-info {
-        font-size: 0;
-        padding: 0 0 24upx 12upx;
-        border-bottom: 2upx solid rgba(153, 153, 153, 0.1);
-        .no {
-          font-size: 32upx;
-          line-height: 36upx;
-          font-family: PingFangSC-Medium, PingFang SC;
-          font-weight: 500;
-          color: #999999;
-        }
-      }
-      .no_img {
-        width: 106upx;
-        height: 36upx;
-        margin-right: 20upx;
-      }
-      .user-info {
-        margin-top: 48upx;
-        .user-info_content {
-          flex: 1;
-        }
-        .info-item {
-          font-size: 24upx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          color: #999999;
-          line-height: 28upx;
-          margin-bottom: 18upx;
-        }
-        .name {
-          font-size: 28upx;
-          font-family: PingFangSC-Semibold, PingFang SC;
-          font-weight: 600;
-          color: #333333;
-          line-height: 28upx;
-        }
-        .avatar {
-          width: 84upx;
-          height: 84upx;
-          margin-right: 32upx;
-          background: #FFFFFF;
-        }
-      }
-      .game-info {
-        margin: 28upx auto 0;
-        width: 590upx;
-        height: 180upx;
-        background: #F6F6F6;
-        border-radius: 22upx;
-        padding-left: 28upx;
-        .game-item {
-          height: 28upx;
-          line-height: 28upx;
-          font-size: 24upx;
-          font-family: PingFangSC-Medium, PingFang SC;
-          font-weight: 500;
-          color: #333333;
-          margin-bottom: 20upx;
-        }
-      }
-      .weapp-btn {
-        margin: 60upx auto 0;
-      }
-      .detail {
-        margin: 60upx auto 0;
-        width: 590upx;
-        height: 72upx;
-        line-height: 72upx;
-        background: #23D321;
-        box-shadow: 0px 4upx 12upx 0px rgba(35, 211, 33, 0.43);
-        border-radius: 200upx;
-        color: #FFFFFF;
-        font-weight: 500;
-        font-size: 28upx;
-      }
-      .success_red {
-        position: absolute;
-        width: 164upx;
-        height: 164upx;
-        top: 72upx;
-        right: 48upx;
-      }
-    }
-    .title {
-      font-size: 68upx;
-      font-family: YouSheBiaoTiHei;
-      color: #FFFFFF;
-    }
-  }
-}
-</style>

+ 280 - 0
src/pages/contact/index.vue

@@ -0,0 +1,280 @@
+<template>
+  <view class="contact">
+    <view class="head">
+      <view class="title">
+        <image class="img-title" src="/static/img/contact/head_title.png" mode="aspectFill" />
+      </view>
+      <view class="tel">
+        <image class="tel-img" src="/static/img/contact/icon_phone.png" mode="aspectFill" />
+      </view>
+    </view>
+    <view class="form-warpper">
+      <view class="input-content-wrapper">
+        <form @submit="formSubmit" @reset="formReset">
+          <view class="input-content">
+            <view class="iconfont">
+              <image class="image" src="/static/img/contact/icon_01.png" mode="aspectFill" />
+            </view>
+            <view class="flex align-center">
+              <input class="uni-input" v-model="form.customer_name" name="customerName" placeholder="请输入您的姓名" />
+            </view>
+          </view>
+          <view class="input-content">
+            <view class="iconfont">
+              <image class="image" src="/static/img/contact/icon_02.png" mode="aspectFill" />
+            </view>
+            <view class="flex align-center">
+              <input class="uni-input" maxlength="11" v-model="form.mobile" name="mobile" placeholder="请输入联系方式" />
+            </view>
+          </view>
+          <view class="input-content">
+            <view class="iconfont">
+              <image class="image" src="/static/img/contact/icon_03.png" mode="aspectFill" />
+            </view>
+            <view class="area flex align-center">
+              <pick-regions name="regionCode" :defaultRegion="defaultRegionCode" @getRegion="handleGetRegion">
+                <text :class="['regions', regionName ? '' : 'empty']" >{{ regionName || '请选择所在地区' }}</text>
+              </pick-regions>
+              <!-- <input class="uni-input" v-model="form.parentName" name="parentName" placeholder="请选择所在地区" /> -->
+              <image class="arrow" src="/static/img/contact/down.png" mode="aspectFill" />
+            </view>
+          </view>
+          <view class="input-content">
+            <view class="iconfont">
+              <image class="image" src="/static/img/contact/icon_04.png" mode="aspectFill" />
+            </view>
+            <view class="area flex align-center">
+              <picker mode="selector" name="type" @change="typeChange" :value="typeIndex" :range="typeList" range-key="label">
+                <view class="empty" v-if="typeIndex == -1">
+                  {{ '您的意向' }}
+                </view>
+                <view v-else>
+                  {{ typeList[typeIndex] }}
+                </view>
+              </picker>
+              <!-- <input class="uni-input" v-model="form.parentName" name="parentName" placeholder="您的意向" /> -->
+              <image class="arrow" src="/static/img/contact/down.png" mode="aspectFill" />
+            </view>
+          </view>
+          <view class="submit-btn">
+            <image src="/static/img/contact/submit.png" mode="aspectFill" />
+            <button class="confirm-btn" :disabled="disabled" form-type="submit"></button>
+          </view>
+        </form>
+      </view>
+    </view>
+
+    <view class="adderss flex align-start">
+      <view class="text">
+        <view>
+          地址:北京市朝阳区高碑店乡西店记忆文创小镇E6号楼
+        </view>
+        <view>
+          一层102号
+        </view>
+      </view>
+    </view>
+
+  </view>
+</template>
+
+<script>
+import pickRegions from '@/components/pick-regions/pick-regions.vue';
+
+export default {
+  data() {
+    return {
+      disabled:false,
+      form: {
+        customer_name: '',
+        mobile: ''
+      },
+      region:[],
+      defaultRegionCode: '110101',
+      defaultRegion:['北京市','市辖区','东城区'],
+      typeIndex: -1,
+      typeList: ["教学渠道代理", "思维芯游戏教室渠道代理", "家庭版渠道代理", "HOME&PLUS渠道代理", "探索小镇渠道代理(TOWN)", "合作园所(北京地区园所)"],
+      reqBody: {}
+    }
+  },
+  computed: {
+    regionName: {
+      get: function() {
+        return this.region.map(item=>item.name).join('/')
+      },
+      set: function(val) {
+        if(val) {
+          this.region = val.map(item => {
+            return {
+              name: item
+            }
+          })
+        }
+        return val;
+      }
+    },
+    regionCode() {
+      if (this.region.length > 0) {
+        return this.region[this.region.length - 1].code;
+      } else {
+        return this.defaultRegionCode;
+      }
+    }
+  },
+  components: {
+    pickRegions
+  },
+  methods: {
+    formSubmit(e) {
+      console.log(e.detail.value);
+      let rules = [
+        { name: 'parentName', checkType: 'notnull', checkRule: '', errorMsg: '请填写家长姓名' },
+        { name: 'parentPhone', checkType: 'phoneno', checkRule: '', errorMsg: '联系方式不正确'},
+        // { name: 'address', checkType: 'notnull', checkRule: '', errorMsg: '请填写详细地址'},
+      ]
+    },
+    typeChange(e) {
+      const index = e.detail.value;
+      this.typeIndex = index;
+      // this.form.sex = this.genderList[index].value;
+    },
+    // 获取选择的地区
+    handleGetRegion(region){
+      this.region = region
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+.contact {
+  padding: 86upx 0 44upx;
+  background: url('@/static/img/contact/bg.png') no-repeat #01A2E8;
+  background-size: cover;
+  .title {
+    text-align: center;
+    .img-title {
+      width: 598upx;
+      height: 168upx;
+      vertical-align: middle;
+    }
+  }
+  .tel {
+    margin-top: 36upx;
+    .tel-img {
+      width: 564upx;
+      height: 134upx;
+      vertical-align: middle;
+      margin-left: 68upx;
+    }
+  }
+  .form-warpper {
+    margin-top: 52upx;
+    padding: 0 96upx;
+  }
+  .input-content-wrapper {
+    margin-bottom: 0upx
+  }
+  .input-content {
+    display: flex;
+    align-items: center;
+    box-sizing: border-box;
+    height: 100upx;
+    border: 2upx solid #003F66;
+    margin-bottom: 36upx;
+    padding: 0 42upx 0 42upx;
+    background: #FFFFFF;
+    border-radius: 172upx;
+    .iconfont {
+      position: relative;
+      margin-right: 52upx;
+      &::after {
+        content: "";
+        width: 2upx;
+        height: 34upx;
+        background:#B9B9B9;
+        border-radius: 4upx;
+        position: absolute;
+        top: 4upx;
+        right: -26upx;
+      }
+      image {
+        width: 40upx;
+        height: 46upx;
+        vertical-align: middle;
+      }
+    }
+    .input-placeholder {
+      color: #B9B9B9;
+      line-height: 36px;
+      font-size: 28upx;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+    }
+    .area {
+      width: 100%;
+    }
+    uni-picker {
+      width: 100%;
+    }
+    .regions {
+      &.empty {
+        color: #B9B9B9;
+        line-height: 36px;
+        font-size: 28upx;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+      }
+    }
+    .empty {
+      color: #B9B9B9;
+      line-height: 36px;
+      font-size: 28upx;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+    }
+    .picker {
+      color: #B9B9B9;
+      line-height: 36px;
+      font-size: 28upx;
+      font-family: PingFangSC-Regular, PingFang SC;
+      font-weight: 400;
+    }
+    .arrow {
+      width: 24upx;
+      height: 12upx;
+      vertical-align: middle;
+    }
+  }
+  .submit-btn {
+    position: relative;
+    margin-top: 94upx;
+    text-align: center;
+    image {
+      width: 334upx;
+      height: 92upx;
+      vertical-align: middle;
+    }
+    .confirm-btn {
+      position: absolute;
+      bottom: 0;
+      left: 50%;
+      transform: translateX(-50%);
+      width: 334upx;
+      height: 92upx;
+      background: red;
+      opacity: 0;
+    }
+  }
+  .adderss {
+    margin: 150upx 0 0 60upx;
+    .text {
+      font-size: 24upx;
+      font-family: PingFangSC-Semibold, PingFang SC;
+      font-weight: 600;
+      color: #B2E8FF;
+      line-height: 34upx;
+    }
+  }
+}
+</style>

+ 0 - 1027
src/pages/index/apply.vue

@@ -1,1027 +0,0 @@
-<template>
-  <view class='apply'>
-    <view class="apply-item apply-section-01">
-      <view class="apply-item-header">
-        <image class="header-label" src="/static/img/index/title_01.png" mode="" />
-      </view>
-      <view class="apply-item-wrapper apply-item-01 flex justify-between">
-        <view class="apply-left flex">
-          <view class="user-avatar">
-            <image class="avatar-img" v-if="baby" :src="baby.headImg" mode="aspectFill" />
-            <image class="avatar-img" v-else :src="avatarImg" mode="aspectFill" />
-          </view>
-          <view class="user-info" v-if="!baby" @tap.stap="navTo('/pages/index/applyInfo?type=user&action=save')">
-            <view class="empty-title">参赛孩子信息</view>
-            <view class="empty-desc">请输入孩子参赛信息</view>
-          </view>
-          <view class="user-info" v-else @tap.stap="navTo('/pages/index/applyInfo?type=user&action=save')">
-            <view class="flex align-center">
-              <!-- <view class="label required">选手姓名:</view>
-              <view class="info">{{ baby.babyName }}</view> -->
-              <view class="padding-bottom-xs">
-                <text class="label required">选手姓名:</text>
-                <text class="info">
-                  {{ baby.babyName }}
-                </text>
-                <image class="gender" :src="baby.sex | imgUrlFilter" mode="" />
-              </view>
-              <!-- <view class="gender">
-              </view> -->
-            </view>
-            <view class="flex align-center">
-              <view class="label required">出生日期:</view>
-              <view class="info">{{ baby.babyBirthday | dateFormat('YYYY-MM-DD') }}</view>
-            </view>
-          </view>
-        </view>
-        <view class="apply-right flex align-center justify-center" @tap.stap="navTo('/pages/index/applyInfo?type=user&action=save')">
-          <view class="user-file">
-            <image class="file-img" src="/static/img/index/file1.png" mode="" />
-          </view>
-          <image class="light" src="/static/img/index/light.png" mode="" />
-        </view>
-        <image class="lock lock-left" src="/static/img/index/lock.png" mode="" />
-        <image class="lock lock-right" src="/static/img/index/lock.png" mode="" />
-      </view>
-    </view>
-    <view class="apply-item  apply-section-02">
-      <view class="apply-item-header">
-        <image class="header-label" src="/static/img/index/title_02.png" mode="" />
-      </view>
-      <view class="apply-item-wrapper apply-item-02 flex justify-between">
-        <view class="apply-left flex">
-          <view class="user-avatar user-avatar-02">
-            <image v-if="user" class="avatar-img " :src="user.avatarUrl" mode="" />
-            <image v-else class="avatar-img " :src="avatarImg" mode="" />
-          </view>
-          <view class="user-info user-info-02" v-if="!parent" @tap.stap="navTo('/pages/index/applyInfo?type=parent')">
-            <view class="empty-title">家长信息</view>
-            <view class="empty-desc">请输入家长信息</view>
-          </view>
-          <view class="user-info user-info-02" v-else @tap.stap="navTo('/pages/index/applyInfo?type=parent')">
-            <view class="flex align-center">
-              <!-- <view class="label required">家长姓名:</view>
-              <view class="info">{{ parent.parentName }}</view> -->
-              <view class="padding-bottom-xs">
-                <text class="label required">家长姓名:</text>
-                <text class="info">{{ parent.parentName }}</text>
-                <text class="relation">{{ parent.parentBabyRelation }}</text>
-              </view>
-              <!-- <view class="relataion">{{ parent.parentBabyRelation }}</view> -->
-            </view>
-            <view class="flex align-center padding-bottom-xs">
-              <view class="label required">联系电话:</view>
-              <view class="info">{{ parent.parentPhone }}</view>
-            </view>
-            <view class="flex">
-              <view class="label"><text class="label">家庭住址:</text><text class="address">{{ parent.regionCity | regionCityFilter }}{{ parent.address }}</text>
-              </view>
-              <!-- <view class="info">{{ parent.regionCity }}{{ parent.address }}</view> -->
-            </view>
-          </view>
-        </view>
-        <view class="apply-right flex align-center justify-center" @tap.stap="navTo('/pages/index/applyInfo?type=parent')">
-          <view class="user-file user-file-02">
-            <image class="file-img" src="/static/img/index/file2.png" mode="" />
-          </view>
-          <image class="light" src="/static/img/index/light.png" mode="" />
-        </view>
-        <image class="lock lock-left" src="/static/img/index/lock.png" mode="" />
-        <image class="lock lock-right" src="/static/img/index/lock.png" mode="" />
-      </view>
-    </view>
-    <view class="apply-item apply-section-03" v-if="signUpType == 0">
-      <view class="apply-item-header">
-        <image class="header-label" src="/static/img/index/title_03.png" mode="" />
-      </view>
-      <view class="apply-item-wrapper apply-item-03">
-        <view class="garden">
-          <view class="form-item flex align-center justify-between">
-            <view class="label required city">省·市·区:</view>
-            <view class="flex align-center regionCode">
-              <pick-regions name="regionCode" :defaultRegion="defaultRegionCode" @getRegion="handleGetRegion">
-                <text :class="['regions', regionName ? '' : 'empty']" >{{ regionName || '请选择' }}</text>
-              </pick-regions>
-              <text class="input-icon cuIcon-right"></text>
-            </view>
-          </view>
-          <view class="form-item flex align-center justify-between">
-            <view class="label required">所在园所:</view>
-            <view class="flex align-center">
-              <view v-for="(item, index) in selectTypeList" :class="['select-btn', 'block', selectType === item.value ? 'checked' : '']" :key="index" @tap.stop="selectChange(item)">
-                {{ item.label }}
-              </view>
-              <!-- <radio-group class="block" v-model="selectType"  @change="selectChange">
-                <radio class='radio' color="#FFF699" :value="item.value" :checked="selectType === item.value" v-for="(item, index) in selectTypeList" :key="index">{{ item.label }}</radio>
-              </radio-group> -->
-            </view>
-          </view>
-          <view class="form-item flex align-center justify-end">
-            <!-- <view class="label required">所在园所:</view> -->
-            <view class="flex align-center justify-end" v-if="selectType == 0">
-              <picker mode="selector" @change="bindPickerChange" :value="gradenIndex" :range="gradenList" range-key="schoolName">
-                <view v-if="gradenList && gradenList.length > 0 && gradenIndex != -1">{{ gradenList[gradenIndex].schoolName || '请选择' }}</view>
-                <view class="empty" v-else>{{ '请选择' }}</view>
-              </picker>
-              <!-- <input placeholder="未填写"></input> -->
-              <text class="input-icon cuIcon-right"></text>
-            </view>
-            <view class="flex align-center justify-end" v-else>
-              <input placeholder="请填写" v-model="schoolName"></input>
-              <text class="input-icon cuIcon-right"></text>
-            </view>
-          </view>
-          <view class="form-item flex align-center justify-between">
-            <view class="label required">组别:</view>
-            <view class="flex justify-end level">
-              <view v-for="(item, index) in typeList" :class="['select-btn', 'block', classLevel === item.value ? 'checked' : '']" :key="index" @tap.stop="radioChange(item)">
-                {{ item.label }}
-              </view>
-              <!-- <radio-group class="block" v-model="classLevel"  @change="radioChange">
-                <radio class='radio' color="#FFF699" :value="item.value" :checked="classLevel === item.value" v-for="(item, index) in typeList" :key="index">{{ item.label }}</radio>
-              </radio-group> -->
-            </view>
-          </view>
-        </view>
-        <image class="lock lock-left" src="/static/img/index/lock.png" mode="" />
-        <image class="lock lock-right" src="/static/img/index/lock.png" mode="" />
-      </view>
-    </view>
-    <view class="apply-item apply-section-03" v-else>
-      <view class="apply-item-header">
-        <image class="header-label" src="/static/img/index/title_03_01.png" mode="" />
-      </view>
-      <view class="apply-item-wrapper apply-item-03">
-        <view class="counter">
-          <view class="form-item flex align-center justify-between">
-            <view class="label required city">省·市·区:</view>
-            <view class="flex align-center regionCode">
-              <pick-regions name="regionCode" :defaultRegion="defaultRegionCode" @getRegion="handleGetRegion">
-                <text :class="['regions', regionName ? '' : 'empty']" >{{ regionName || '请选择' }}</text>
-              </pick-regions>
-              <text class="input-icon cuIcon-right"></text>
-            </view>
-          </view>
-          <view class="form-item flex align-center justify-between">
-            <view class="label required">所在专柜:</view>
-            <view class="flex align-center">
-              <input v-model="shoppeName" name="shoppeName" placeholder="请输入专柜名称"></input>
-              <text class="input-icon cuIcon-right"></text>
-            </view>
-          </view>
-          <view class="form-item flex align-center justify-between">
-            <view class="label required">组别:</view>
-            <view class="flex justify-end level">
-              <view v-for="(item, index) in typeList" :class="['select-btn', 'block', classLevel === item.value ? 'checked' : '']" :key="index" @tap.stop="radioChange(item)">
-                {{ item.label }}
-              </view>
-              <!-- <radio-group class="block" v-model="classLevel"  @change="radioChange">
-                <radio class='radio' color="#FFF699" :value="item.value" :checked="classLevel === item.value" v-for="(item, index) in typeList" :key="index">{{ item.label }}</radio>
-              </radio-group> -->
-            </view>
-          </view>
-        </view>
-        <image class="lock lock-left" src="/static/img/index/lock.png" mode="" />
-        <image class="lock lock-right" src="/static/img/index/lock.png" mode="" />
-      </view>
-    </view>
-    <view class="apply-item apply-section-04">
-      <view class="apply-item-wrapper apply-item-04">
-        <view class="rule">
-          <view class="title">
-            <image src="/static/img/index/rule_title.png" mode="" />
-          </view>
-          <view class="rule-item" v-for="(item, index) in ruleList" :key="index">
-            {{item.id}}.{{item.title}}
-          </view>
-        </view>
-        <view class="apply-submit">
-          <image @tap.stop="handleSubmit" class="apply-btn-img" src="/static/img/index/apply_btn_03.png" mode="" />
-        </view>
-      </view>
-    </view>
-
-    <!-- 报名失败弹窗 -->
-    <zd-modal-fail @emitClose="failModelClose" :route="'/pages/apply/list'" :failModel="failModel"></zd-modal-fail>
-    <!-- <view :class="['cu-modal', failModel ? 'show': '']"  @touchmove.stop.prevent="clear">
-      <view class="open-bg">
-        <view class="open-wrap">
-          <image class="close" src="/static/img/common/model_close.png" mode="" @tap.stop="failModel=false" />
-          <view class="img-box">
-            <image src="/static/img/common/model_bg.png" mode="" />
-          </view>
-          <view class="footer flex align-center">
-            <view class="btn" @tap.stop="failModel=false">
-              <image src="/static/img/common/cancel.png" mode="" />
-            </view>
-            <view class="btn" @tap.stop="navTo('/pages/apply/list')">
-              <image src="/static/img/common/comfirm.png" mode="" />
-            </view>
-          </view>
-        </view>
-      </view>
-    </view> -->
-    
-
-    <!-- 报名成功弹窗 -->
-    <view :class="['cu-modal', successModel ? 'show': '']" >
-      <view class="open-bg">
-        <view class="open-wrap">
-          <image class="close" src="/static/img/common/model_close.png" mode="" @tap.stop="successModel=false" />
-          <view class="img-box success">
-            <image src="/static/img/common/model_sucess_bg.png" mode="" />
-          </view>
-        </view>
-      </view>
-    </view>
-
-  </view>
-</template>
-
-<script>
-import { userInfo } from '@/api/userInfo';
-import { schoolList, saveApply } from '@/api/apply';
-import { mapState, mapActions } from 'vuex';
-import pickRegions from '@/components/pick-regions/pick-regions.vue';
-import zdModalFail from '@/components/zd-modal-fail';
-
-export default {
-  data() {
-    return {
-      avatarImg: '/static/img/common/empty_avatar.png',
-      failModel: false,
-      successModel: false,
-      selectType: '0', // 0. 选择园所 1.输入园所
-      signUpType: 0, // 0学校 1专柜
-      classLevel: '-1',
-      shoppeName: '',
-      schoolName: '',
-      region:[],
-      defaultRegion:['北京市','市辖区','东城区'],
-      defaultRegionCode: '110101',
-      gradenIndex: 0,
-      typeList: [
-        {
-          label: '托班',
-          value: '-1'
-        },
-        {
-          label: '小班',
-          value: '0'
-        },
-        {
-          label: '中班',
-          value: '1'
-        },
-        {
-          label: '大班',
-          value: '2'
-        },
-      ],
-      selectTypeList: [
-        {
-          label: '选择园所',
-          value: '0'
-        },
-        {
-          label: '填写园所',
-          value: '1'
-        },
-      ],
-      gradenList: [],
-      ruleList: [
-        {
-          id: '1',
-          title: '请留下准确联系方式,用以通知赛事时间,决赛地址等相关赛事信息;'
-        },
-        {
-          id: '2',
-          title: '请准备宝宝1寸近照两张;'
-        },
-        {
-          id: '3',
-          title: '报名成功后,【用户中心】-【全国海选赛】可查看选手报名参赛信息;'
-        },
-        {
-          id: '4',
-          title: '收费详情,请咨询全国各地大赛举办方;'
-        },
-        {
-          id: '5',
-          title: '咨询电话:010 59626411-837/821/835'
-        },
-        {
-          id: '6',
-          title: '传真电话:010-59626419'
-        }
-      ],
-      baby: null,
-      parent: null,
-      signUp: null
-    }
-  },
-
-  onLoad(options) {
-    if(options) {
-      this.signUpType = options.type; 
-    }
-		this.initData();
-  },
-
-  onShow() {},
-
-  filters: {
-    imgUrlFilter(val) {
-      switch (val){
-        case 1:
-          return require('static/img/index/male.png')
-        case 2:
-          return require('static/img/index/female.png')
-        default:
-          return require('static/img/index/female.png')
-      }
-    },
-    regionCityFilter(val) {
-      if(val) {
-        let regionCity;
-        try {
-          regionCity = JSON.parse(val) || [];
-        } catch (error) {
-          regionCity = val;
-        }
-        if(!Array.isArray(regionCity)) {
-          return regionCity;
-        } else {
-          return regionCity.join('');
-        }
-      }
-    }
-  },
-
-  computed: {
-    ...mapState({
-      user: 'user',
-      parentForm: 'parent',
-      onlineId: 'onlineId',
-      offlineId: 'offlineId'
-    }),
-    regionName: {
-      get: function() {
-        return this.region.map(item=>item.name).join('/')
-      },
-      set: function(val) {
-        if(val) {
-          this.region = val.map(item => {
-            return {
-              name: item
-            }
-          })
-        }
-        return val;
-      }
-    },
-    schoolRegionCode() {
-
-    }
-  },
-
-  watch: {
-    parentForm(val, oldVal) {
-      if(val) {
-        this.parent = val;
-      }
-    }
-  },
-
-  components: {
-    pickRegions,
-    zdModalFail
-  },
-  methods: {
-    async initData() {
-      if (this.parentForm) {
-        this.parent = this.parentForm;
-      }
-      await this.getUserInfo();
-    },
-    async getUserInfo() {
-      this.$mStore.dispatch('getUserInfo',{
-        competitionChildId: this.offlineId
-      }).then(async res => {
-          const { baby, signUp } = res.data;
-          this.baby = baby;
-          this.signUp = signUp;
-          if(signUp) {
-            this.parent = {
-              parentName: signUp.parentName,
-              parentBabyRelation: signUp.parentBabyRelation,
-              parentPhone: signUp.parentPhone,
-              regionCity: signUp.regionCity,
-              regionCode: signUp.regionCode,
-              address: signUp.address
-            }
-            if (!signUp.school) {
-              this.selectType = '1';
-              this.schoolName = signUp.schoolName;
-            }
-            if (signUp.signUpType == 0) {
-              this.classLevel = signUp.classLevel + '';
-              try{
-                this.regionName = JSON.parse(signUp.schoolRegionName);
-              }catch(e){
-                this.regionName = '';
-              }
-              try{
-                const code = JSON.parse(signUp.schoolRegionCode);
-                code.map((item, index) => {
-                  this.region[index].code = item;
-                })
-                if (code && code.length > 0) {
-                  this.defaultRegionCode = code[code.length - 1];
-                }
-                if (code) {
-                  await this.getRegion(this.defaultRegionCode);
-                }
-
-              }catch(e){
-                console.log(e);
-              }
-              // const code = JSON.parse(signUp.schoolRegionCode);
-              // if (code && code.length > 0) {
-              //   this.defaultRegionCode = code[code.length - 1];
-              // }
-              // if (code) {
-              //   await this.getRegion(this.defaultRegionCode);
-              // }
-            } else if (signUp.signUpType == 1) {
-              this.shoppeName = signUp.shoppeName;
-              try{
-                this.regionName = JSON.parse(signUp.schoolRegionName);
-              }catch(e){
-                this.regionName = '';
-              }
-              try{
-                const schoolRegionCode = JSON.parse(signUp.schoolRegionCode);
-                schoolRegionCode.map((item, index) => {
-                  this.region[index].code = item;
-                })
-              }catch(e){
-              }
-            } else {
-              this.$mHelper.toast('报名方式出错');
-            }
-          }
-      }).catch(() => {
-        console.log('catch');
-      })
-    },
-    getRegion(code) {
-      this.$http
-        .get(`${schoolList}`, {
-          isPage: 0,
-          code
-        })
-        .then(res => {
-          this.gradenList = res.data || [];
-          // 获取园所所在列表的下标
-          this.getGradenIndex()
-        })
-        .catch(() => {
-        })
-    },
-    getGradenIndex() {
-      this.gradenIndex = this.gradenList.findIndex(item => item.id === this.signUp.schoolId);
-    },
-    // 获取选择的地区
-    handleGetRegion(region){
-      this.region = region;
-      const code = region[region.length -1].code;
-      this.gradenIndex = 0;
-      // 根据省市区获取园所地址
-      this.getRegion(code);
-    },
-    // 
-    bindPickerChange(e) {
-      const index = e.detail.value;
-      this.gradenIndex = index;
-      // this.schoolId = this.gradenList[index].id;
-      // this.schoolName = this.gradenList[index].schoolName;
-    },
-    handleSubmit() {
-      // 
-      let formData = {
-        ...this.baby,
-        ...this.parent,
-        competitionChildId: this.offlineId,
-        signUpType: this.signUpType,
-      };
-      if (this.signUpType == 0) { // 园所报名
-        if (this.region && this.region.length <=0 ) {
-          this.$mHelper.toast('请选择省市区');
-          return false;
-        }
-        // if (this.gradenList && this.gradenList.length <=0 ) {
-        //   this.$mHelper.toast('未选择/输入园所名称');
-        //   return false;
-        // }
-        if(this.selectType == 0) {
-          if (this.gradenList[this.gradenIndex]) {
-            formData['schoolName'] = this.gradenList[this.gradenIndex].schoolName || '';
-            formData['schoolId'] = this.gradenList[this.gradenIndex].id || '';
-          } else {
-            this.$mHelper.toast('未选择/输入园所名称');
-            return false;
-          }
-        } else {
-          if (!this.schoolName) {
-            this.$mHelper.toast('未选择/输入园所名称');
-            return false;
-          }
-          formData['schoolName'] = this.schoolName || '';
-        }
-        formData['schoolRegionCode'] = JSON.stringify(this.region.map(item => item.code));
-        formData['schoolRegionName'] = JSON.stringify(this.region.map(item => item.name));
-        formData['classLevel'] = this.classLevel;
-      }
-      if (this.signUpType == 1) { // 专柜报名
-        if (this.region && this.region.length <=0 ) {
-          this.$mHelper.toast('请选择省市区');
-          return false;
-        }
-        formData['schoolRegionCode'] = JSON.stringify(this.region.map(item => item.code));
-        formData['schoolRegionName'] = JSON.stringify(this.region.map(item => item.name));
-        formData['classLevel'] = this.classLevel;
-        formData['shoppeName'] = this.shoppeName;
-      }
-      if(!this.baby) {
-        this.$mHelper.toast('请填写选手信息');
-        return false;
-      }
-      if(!this.parent) {
-        this.$mHelper.toast('请填写家长信息');
-        return false;
-      }
-      let rules = [
-        { name: 'headImg', checkType: 'notnull', checkRule: '', errorMsg: '头像不能为空' },
-        { name: 'babyName', checkType: 'notnull', checkRule: '', errorMsg: '选手姓名不能为空' },
-        { name: 'sex', checkType: 'in', checkRule: '1,2', errorMsg: '性别不能为空' },
-        { name: 'babyBirthday', checkType: 'notnull', checkRule: '', errorMsg: '出生日期不能为空' },
-        { name: 'parentName', checkType: 'notnull', checkRule: '', errorMsg: '请填写家长姓名' },
-        { name: 'parentBabyRelation', checkType: 'notnull', checkRule: '', errorMsg: '请选择关系' },
-        { name: 'parentPhone', checkType: 'notnull', checkRule: '', errorMsg: '请填写联系方式'},
-        { name: 'parentPhone', checkType: 'phoneno', checkRule: '', errorMsg: '联系方式不正确'},
-        // { name: 'address', checkType: 'notnull', checkRule: '', errorMsg: '请填写详细地址'},
-        { name: 'signUpType', checkType: 'in', checkRule: '0,1', errorMsg: '报名方式错误'},
-      ];
-      if (this.signUpType == 0) {
-        rules.push(
-          { name: 'schoolRegionCode', checkType: 'notnull', checkRule: '', errorMsg: '请选择省市区地区'},
-          { name: 'schoolRegionName', checkType: 'notnull', checkRule: '', errorMsg: '请选择省市区地区'},
-          { name: 'schoolName', checkType: 'notnull', checkRule: '', errorMsg: '未选择/输入园所名称'},
-          { name: 'classLevel', checkType: 'in', checkRule: '-1,0,1,2', errorMsg: '请选择组别'},
-        )
-      }
-      if (this.signUpType == 1) { // 专柜报名
-        rules.push(
-          { name: 'schoolRegionCode', checkType: 'notnull', checkRule: '', errorMsg: '请选择省市区地区'},
-          { name: 'schoolRegionName', checkType: 'notnull', checkRule: '', errorMsg: '请选择省市区地区'},
-          { name: 'classLevel', checkType: 'in', checkRule: '-1,0,1,2', errorMsg: '请选择组别'},
-          { name: 'shoppeName', checkType: 'notnull', checkRule: '', errorMsg: '专柜名称不能为空' }
-        )
-      }
-      let checkRes = this.$mGraceChecker.check(formData, rules);
-      if (checkRes) {
-        this.$http
-          .post(saveApply,{
-            ...formData
-          })
-          .then(res => {
-            if (res.data == 0) {
-              this.failModel = true;
-            } else {
-              this.successModel = true;
-              setTimeout(() => {
-                this.$mRouter.push({
-                  route: '/pages/apply/result'
-                })
-              }, 1500);
-            }
-            this.$mStore.dispatch('getUserInfo',{
-              competitionChildId: this.offlineId
-            })
-          })
-          .catch((err) => {
-            console.log('err', err)
-          })
-      } else {
-        this.$mHelper.toast(this.$mGraceChecker.error)
-      }
-    },
-    radioChange(evt) {
-      console.log(evt);
-      this.classLevel = evt.value;
-    },
-    selectChange(evt) {
-      this.selectType = evt.value;
-    },
-    navTo(route) {
-      this.$mRouter.push({route})
-    },
-    failModelClose() {
-      this.failModel = false;
-    },
-    clear() {
-
-    }
-  }
-
-}
-</script>
-
-<style lang="scss" scoped>
-.apply {
-  background: #4CD84A;
-  .apply-item {
-    padding: 0 28upx;
-    position: relative;
-    &.apply-section-01,&.apply-section-02 {
-      // margin-bottom: 38upx;
-      padding-bottom: 38upx;
-    }
-    &.apply-section-01 {
-      padding-top: 36upx;
-      background: url('@/static/img/index/ABC_G@3x.png') no-repeat;
-      background-size: 60upx 60upx;
-      background-position: 200upx 24upx;
-    }
-    &.apply-section-02 {
-      padding-top: 38upx;
-      background: url('@/static/img/index/ABC_B@3x.png') no-repeat;
-      background-size: 60upx 60upx;
-      background-position: 554upx 38upx;
-    }
-    &.apply-section-03 {
-      padding-top: 38upx;
-      background: url('@/static/img/index/ABC_A@3x.png') no-repeat;
-      background-size: 60upx 60upx;
-      background-position: 242upx 32upx;
-    }
-    &.apply-section-04 {
-      padding-top: 84upx;
-      background: url('@/static/img/index/ABC_M@3x.png') no-repeat;
-      background-size: 82upx 88upx;
-      background-position: top 32upx right 0upx;
-      padding-bottom: 54upx;
-    }
-    .apply-item-header {
-      font-size: 0;
-      margin-bottom: 32upx;
-      image {
-        width: 154upx;
-        height: 42upx;
-      }
-    }
-    .apply-item-wrapper {
-      position: relative;
-      width: 694upx;
-      background: #FFFFFF;
-      border-radius: 40upx;
-      border: 10upx solid #B6F9B6;
-      .lock {
-        position: absolute;
-        top: -20upx;
-        width: 36upx;
-        height: 38upx;
-      }
-      .lock-left {
-        left: 30upx;
-      }
-      .lock-right {
-        right: 30upx;
-      }
-    }
-    .apply-item-01,.apply-item-02 {
-      // height: 326upx;
-      padding-left: 36upx;
-      .apply-left {
-        flex: 1;
-        margin: 36upx 0 56upx;
-      }
-      .apply-right {
-        position: relative;
-        text-align: center;
-        width: 150upx;
-        background: #FEEB56;
-        box-shadow: 0upx 6upx 2upx 0upx #FDB035;
-        border-radius: 0upx 24upx 24upx 0upx;
-        // border: 4upx solid #FFFFFF;
-        margin: 4upx 6upx 10upx 0;
-        .light {
-          position: absolute;
-          width: 44upx;
-          height: 6upx;
-          left: 16upx;
-          top: 12upx;
-        }
-      }
-    }
-    .apply-item-04 {
-      padding: 44upx 24upx 42upx 38upx;
-    }
-    .user-avatar {
-      // position: absolute;
-      left: 64upx;
-      bottom: 68upx;
-      font-size: 0;
-      margin-right: 30upx;
-      border: 1upx solid #38D736;
-      border-radius: 50%;
-      width: 112upx;
-      height: 112upx;
-      .avatar-img {
-        width: 112upx;
-        height: 112upx;
-        border-radius: 50%;
-        background: #ffffff;
-        transform: translate(-6upx, -8upx)
-      }
-    }
-    .user-info {
-      max-width: 336upx;
-      .empty-title {
-        height: 42upx;
-        font-size: 28upx;
-        line-height: 42upx;
-        font-family: PingFangSC-Medium, PingFang SC;
-        font-weight: 500;
-        color: #333333;
-      }
-      .empty-desc {
-        height: 42upx;
-        font-size: 24upx;
-        font-family: PingFangSC-Medium, PingFang SC;
-        font-weight: 500;
-        color: #999999;
-        line-height: 42upx;
-      }
-      .gender {
-        font-size: 0;
-        margin-left: 16upx;
-        width: 28upx;
-        height: 28upx;
-        vertical-align: middle;
-      }
-    }
-    .user-info-02 {
-      // max-width: 364upx;
-      .address {
-        font-size: 28upx;
-        font-family: PingFangSC-Regular, PingFang SC;
-        color: #333333;
-        max-width: 220upx;
-        line-height: 42upx;
-      }
-      .relation {
-        display: inline-block;
-        width: 70upx;
-        text-align: center;
-        background: #E5F5FF;
-        border-radius: 86rpx;
-        height: 28rpx;
-        line-height: 28rpx;
-        font-size: 20rpx;
-        font-family: YouSheBiaoTiHei;
-        color: #00A0FF;
-        margin-left: 20upx;
-        vertical-align: middle;
-      }
-    }
-    .user-file {
-      // position: absolute;
-      right: 58upx;
-      bottom: 92upx;
-      .file-img {
-        width: 82upx;
-        height: 54upx;
-      }
-    }
-    .user-file-02 {
-      bottom: 142upx;
-    }
-    .garden, .counter  {
-      width: 100%;
-      padding: 38upx 44upx 46upx 36upx;
-      .form-item {
-        margin-bottom: 36upx;
-        &:last-child {
-          margin-bottom: 0upx;
-        }
-        .city {
-          width: 210upx;
-        }
-        input {
-          font-size: 28upx;
-          color: #333333;
-        }
-        ::v-deep .radio {
-          .uni-radio-input {
-            border: 2px solid #4CD84A;
-            width: 30upx;
-            height: 30upx;
-            margin-right: 8upx;
-            &.uni-radio-input-checked {
-              background: #FFF699;
-              border: 2px solid #4CD84A !important;
-              &::after {
-                border: none !important;
-              }
-            }
-          }
-          .uni-radio-wrapper {
-            margin-right: 42upx;
-          }
-        }
-        ::v-deep .uni-input-input {
-          text-align: right;
-        }
-        .input-placeholder {
-          text-align:right;
-          font-size: 28upx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          color: #999999;
-          line-height: 40upx;
-        }
-        .input-icon {
-          color: #CACACA;
-          line-height: 1;
-        }
-        .regions {
-          max-width: 300upx;
-          &.empty {
-            font-size: 28upx;
-            font-family: PingFangSC-Regular, PingFang SC;
-            font-weight: 400;
-            color: #999999;
-          }
-        }
-        .empty {
-          font-size: 28upx;
-          font-family: PingFangSC-Regular, PingFang SC;
-          font-weight: 400;
-          color: #999999;
-        }
-      }
-    }
-    .counter {
-      // padding-left: 64upx;
-      // .form-item {
-      //   .input-placeholder {
-      //     text-align: right;
-      //   }
-      //   ::v-deep .uni-input-input {
-      //     text-align: right;
-      //   }
-      // }
-    }
-    .rule {
-      width: 600upx;
-      font-size: 28upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #666666;
-      .title {
-        font-size: 0;
-        margin-bottom: 32upx;
-        image {
-          width: 236upx;
-          height: 52upx;
-        }
-      }
-      .rule-item {
-        line-height: 44upx;
-      }
-    }
-    .apply-submit {
-      text-align: center;
-      margin-top: 58upx;
-      .apply-btn-img {
-        width: 486upx;
-        height: 124upx;
-      }
-    }
-    .user-info {
-      .label {
-        margin-right: 12upx;
-      }
-      .info {
-        font-size: 28upx;
-        font-family: PingFangSC-Medium, PingFang SC;
-        color: #333333;
-        max-width: 220upx;
-      }
-    }
-    .label {
-      position: relative;
-      font-size: 28upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #999999;
-      line-height: 28upx;
-      &.required {
-        &::before {
-          position: absolute;
-          top: 0;
-          left: -14upx;
-          display: inline-block;
-          margin-right: 0px;
-          color: #FF0000;
-          font-size: 28upx;
-          line-height: 1;
-          content: "*";
-        }
-      }
-    }
-
-  }
-  .open-bg {
-    position: fixed;
-    left: 50%;
-    bottom: 30%;
-    transform: translateX(-50%);
-    .open-wrap {
-      position: relative;
-      width: 588upx;
-      // height: 732upx;
-      margin: 0 auto;
-      border-radius: 24upx;
-      .close {
-        position: absolute;
-        width: 64upx;
-        height: 64upx;
-        right: -12upx;
-        top: 52upx;
-        z-index: 11;
-      }
-      .img-box {
-        font-size: 0;
-        image {
-          width: 588upx;
-          height: 723upx;
-          object-fit: cover;
-          &.success {
-            width: 588upx;
-            height: 712upx;
-            object-fit: cover;
-          }
-        }
-      }
-      .footer {
-        position: absolute;
-        bottom: 80upx;
-        left: 50%;
-        transform: translateX(-50%);
-        .btn {
-          font-size: 0;
-          image {
-            width: 206upx;
-            height: 106upx;
-          }
-        }
-      }
-    }
-  }
-  .level {
-    .select-btn {
-      width: 100upx;
-      margin-left: 16upx;
-      &:first-child {
-        margin-left: 0;
-      }
-    }
-  }
-  .select-btn {
-    width: 152upx;
-    height: 48upx;
-    line-height: 44upx;
-    border-radius: 24upx;
-    border: 2upx solid rgba(153, 153, 153, 0.2);
-    font-size: 28upx;
-    font-family: PingFangSC-Regular, PingFang SC;
-    font-weight: 400;
-    color: #999999;
-    text-align: center;
-    margin-left: 18upx;
-    &.checked {
-      line-height: 48upx;
-      background-color: #FEEB56;
-      box-shadow: 2upx 2upx 2upx 0px #FDB035;
-      font-family: PingFangSC-Medium, PingFang SC;
-      font-weight: 500;
-      color: #C24000;
-      border: none;
-      transition: all 0.3s;
-    }
-  }
-}
-</style>

+ 0 - 589
src/pages/index/applyInfo.vue

@@ -1,589 +0,0 @@
-<template>
-  <view class='applyinfo'>
-    <view class="form-wrapper" v-if="type == 'parent'">
-      <form @submit="formSubmit" @reset="formReset">
-        <view class="apply-item flex justify-between align-center">
-          <view class="title required">家长姓名</view>
-          <view class="flex align-center">
-            <input class="uni-input" v-model="parentForm.parentName" name="parentName" placeholder="未填写" />
-            <text class="input-icon cuIcon-right"></text>
-          </view>
-        </view>
-        <view class="apply-item flex justify-between">
-          <view class="title required">我是宝贝的</view>
-          <view class="radio-wrapper">
-            <radio-group v-model="parentForm.parentBabyRelation" name="parentBabyRelation">
-              <radio class='radio' :checked="parentForm.parentBabyRelation == item.label" color="#FFF699" :value="item.label" v-for="(item, index) in relationList" :key="index">{{ item.label }}</radio>
-            </radio-group>
-          </view>
-        </view>
-        <view class="apply-item flex justify-between">
-          <view class="title required">联系方式</view>
-          <view class="flex align-center">
-            <input class="uni-input" v-model="parentForm.parentPhone" name="parentPhone" :maxlength="11" type="number" placeholder="未填写" />
-            <text class="input-icon cuIcon-right"></text>
-          </view>
-        </view>
-        <view class="apply-item flex justify-between">
-          <view class="title">家庭住址</view>
-          <view class="flex align-center">
-            <pick-regions name="regionCode" :defaultRegion="defaultRegionCode" @getRegion="handleGetRegion">
-              <text :class="['regions', regionName ? '' : 'empty']" >{{ regionName || '未填写' }}</text>
-            </pick-regions>
-            <text class="input-icon cuIcon-right"></text>
-          </view>
-        </view>
-        <view class="apply-item flex justify-between">
-          <view class="title">详细地址</view>
-          <view class="flex align-center">
-            <input class="uni-input" name="address" v-model="parentForm.address" placeholder="未填写" />
-            <text class="input-icon cuIcon-right"></text>
-          </view>
-        </view>
-        <view class="uni-btn-v">
-          <button class="cu-btn submit-btn" :disabled="disabled" form-type="submit">保存</button>
-        </view>
-      </form>
-    </view>
-    <view class="form-wrapper" v-else>
-      <form @submit="formSubmit" @reset="formReset">
-        <view class="apply-item flex justify-between align-center">
-          <view class="title required">选手头像</view>
-          <view class="flex align-center">
-      			<!--#ifdef H5-->
-            <view class="portrait-box" @tap="uploadImage">
-              <image class="portrait" :src="form.headImg || userAva" mode="aspectFill" />
-            </view>
-      			<!-- #endif -->
-            <text class="input-icon cuIcon-right"></text>
-          </view>
-        </view>
-        <view class="apply-item flex justify-between">
-          <view class="title required">选手姓名</view>
-          <view class="flex align-center">
-            <input class="uni-input" v-model="form.babyName" name="babyName" placeholder="未填写" />
-            <text class="input-icon cuIcon-right"></text>
-          </view>
-        </view>
-        <view class="apply-item flex justify-between arrow">
-          <view class="title required">性别</view>
-          <view class="flex align-center">
-            <picker mode="selector" name="sex" @change="genderChange" :value="genderIndex" :range="genderList" range-key="label">
-              <view class="picker">
-                {{ genderList[genderIndex].label || '请选择' }}
-              </view>
-            </picker>
-            <text class="input-icon cuIcon-right"></text>
-            <!-- <input class="uni-input" name="input" type="number" placeholder="未填写" />
-            <text class="input-icon cuIcon-right"></text> -->
-          </view>
-        </view>
-        <view class="apply-item flex justify-between">
-          <view class="title required">出生日期</view>
-          <view class="flex align-center">
-            <picker mode="date" name="babyBirthday" @change="dateChange" :value="form.babyBirthday">
-              <view class="picker">
-                {{ form.babyBirthday | dateFormat('YYYY-MM-DD') }}
-              </view>
-            </picker>
-            <text class="input-icon cuIcon-right"></text>
-          </view>
-        </view>
-        <view class="uni-btn-v">
-          <button class="cu-btn submit-btn" :disabled="disabled" form-type="submit">保存</button>
-        </view>
-      </form>
-    </view>
-  </view>
-</template>
-
-<script>
-import pickRegions from '@/components/pick-regions/pick-regions.vue';
-import { getImgsUrl, uploadFile } from '@/api/common';
-import { saveBaby, saveApply, saveApplyOnline } from '@/api/apply';
-import areaList from '@/static/js/area.js';
-import { mapMutations, mapState } from 'vuex'
-const ERR_OK = 200;
-
-export default {
-  data() {
-    return {
-      loading: false,
-      disabled: false,
-      type: '',
-      action: 'save',
-      areaList,
-      region: [],
-      relationList: [
-        {
-          label: '爸爸',
-          value: '1'
-        },
-        {
-          label: '妈妈',
-          value: '2'
-        },
-        {
-          label: '爷爷',
-          value: '3'
-        },
-        {
-          label: '奶奶',
-          value: '4'
-        },
-        {
-          label: '外公',
-          value: '5'
-        },
-        {
-          label: '外婆',
-          value: '6'
-        },
-        {
-          label: '其它',
-          value: '7'
-        }
-      ],
-      genderIndex: 0,
-      form: {
-        babyName: '',
-        headImg: '',
-        sex: 1,
-        babyBirthday: '2018-08-08'
-      },
-      parentForm: {
-        parentName: '',
-        parentBabyRelation: '爸爸',
-        parentPhone: '',
-        address: ''
-      },
-      genderList: [
-        {
-          label: '男',
-          value: 1,
-        },
-        {
-          label: '女',
-          value: 2,
-        }
-      ],
-      region:[],
-      defaultRegion:['北京市','市辖区','东城区'],
-      defaultRegionCode: '110101',
-			reqBody: {},
-      userAva: require('@/static/img/common/empty_avatar.png'),
-    }
-  },
-
-  filters: {
-    genderFilter(val) {
-      switch (val){
-        case 1:
-          return '男'
-        case 2:
-          return '女'
-        default:
-          return '未知'
-          break;
-      }
-    }
-  },
-
-  components: {
-    pickRegions
-  },
-
-  computed: {
-    regionName: {
-      get: function() {
-        return this.region.map(item=>item.name).join('/')
-      },
-      set: function(val) {
-        if(val) {
-          this.region = val.map(item => {
-            return {
-              name: item
-            }
-          })
-        }
-        return val;
-      }
-    },
-    regionCode() {
-      if (this.region.length > 0) {
-        return this.region[this.region.length - 1].code;
-      } else {
-        return this.defaultRegionCode;
-      }
-    },
-    ...mapState({
-      baby: 'baby',
-      signUp: 'signUp',
-      onlineId: 'onlineId',
-      offlineId: 'offlineId',
-      applyType: 'applyType'
-    })
-  },
-
-
-  onLoad(options) {
-    if (options) {
-      this.type = options.type;
-      if(options.type === 'parent') {
-        uni.setNavigationBarTitle({
-          title: '家长信息'
-        });
-      }
-    }
-    const parent = uni.getStorageSync('parent') || '';
-    if(parent) {
-      this.parentForm = parent;
-      this.defaultRegionCode = parent.regionCode;
-      // this.defaultRegion = parent.regionCode;
-      try {
-        this.regionName = JSON.parse(parent.regionCity);
-      } catch(e) {
-        this.regionName = '';
-      }
-    }
-    if(this.baby) {
-      this.form = this.baby;
-      this.genderIndex = this.genderList.findIndex(item => item.value == this.baby.sex) || 0;
-    }
-    if(this.signUp) {
-      this.parentForm = this.signUp;
-      this.defaultRegionCode = this.signUp.regionCode;
-      try {
-        this.regionName = JSON.parse(parent.regionCity);
-      } catch(e) {
-        this.regionName = '';
-      }
-    }
-  },
-
-  onShow() {
-    this.getProvinceList();
-  },
-
-  methods: {
-    // 上传头像
-		uploadImage() {
-			// 从相册选择图片
-			const _this = this;
-			uni.chooseImage({
-				count: 1,
-				sizeType: ['original', 'compressed'],
-				sourceType: ['album'],
-				success: function(res) {
-					_this.handleUploadFile(res.tempFilePaths);
-				}
-			});
-		},
-		handleUploadFile(data) {
-      uni.showLoading({
-        title: '上传中'
-      });
-      // this.loading = true;
-      const _this = this;
-			const filePath = data.path || data[0];
-      _this.$http
-				.upload(uploadFile, {
-					filePath,
-					name: 'file'
-				})
-				.then(res => {
-          // this.$mHelper.toast('上传成功');
-          _this.form.headImg = res.data;
-          uni.hideLoading();
-				})
-        .catch(() => {
-          uni.hideLoading();
-          this.$mHelper.toast('上传失败')
-        });
-    },
-    formSubmit(e) {
-      if (this.type === 'user') {
-        this.saveOrUptBaby(e);
-      } else if (this.type === 'parent') {
-        this.saveOrUptParent(e);
-      }
-    },
-    formReset() {},
-    // 添加或者修改宝贝
-    saveOrUptBaby(e) {
-      const rules = [
-        { name: 'babyName', checkType: 'notnull', checkRule: '', errorMsg: '选手姓名不能为空' },
-        { name: 'babyName', checkType: 'string', checkRule: '2,8', errorMsg: '请输入2-8位选手姓名' },
-        { name: 'sex', checkType: 'in', checkRule: '0,1,2', errorMsg: '性别不能为空' },
-        { name: 'babyBirthday', checkType: 'notnull', checkRule: '', errorMsg: '出生日期不能为空' }
-      ]
-      const headImgRules = [
-        { name: 'headImg', checkType: 'notnull', checkRule: '', errorMsg: '头像不能为空' },
-      ]
-      this.reqBody['headImg'] = this.form.headImg;
-      let checkHeadImg = this.$mGraceChecker.check(
-        this.reqBody,
-        headImgRules
-      );
-      if(!checkHeadImg) {
-        this.$mHelper.toast(this.$mGraceChecker.error);
-        return false;
-      }
-      //进行表单检查
-      let formData = e.detail.value;
-      let checkRes = this.$mGraceChecker.check(formData, rules);
-      if(checkRes) {
-        this.disabled = true;
-        if(this.form.id) { // 修改宝贝
-          this.$http
-            .put(saveBaby, {
-              ...this.form,
-              ...this.reqBody,
-              ...formData,
-              sex: this.genderList[this.genderIndex].value
-            })
-            .then(res => {
-              this.disabled = false;
-              this.$mHelper.toast('修改成功', 1500);
-              this.$mStore.dispatch('getUserInfo',{
-                competitionChildId: this.onlineId
-              })
-              // 刷新用户
-              if (this.$mHelper.prePage() && this.$mHelper.prePage().baby) {
-                this.$mHelper.prePage().baby = {
-                  ...this.reqBody,
-                  ...formData,
-                  sex: this.genderList[this.genderIndex].value
-                };
-              }
-              setTimeout(() => {
-                this.$mRouter.back();
-              }, 1500);
-            })
-            .catch(() => {
-              this.disabled = false;
-            })
-        } else { // 添加宝贝
-          this.$http
-            .post(saveBaby, {
-              ...this.reqBody,
-              ...formData,
-              sex: this.genderList[this.genderIndex].value
-            })
-            .then(res => {
-              this.disabled = false;
-              this.$mHelper.toast('保存成功', 1500);
-              // this.$mHelper.prePage();
-              if (this.$mHelper.prePage()) {
-                console.log('prePage()', this.$mHelper.prePage())
-                this.$mHelper.prePage().baby = {
-                  ...this.reqBody,
-                  ...formData,
-                  sex: this.genderList[this.genderIndex].value
-                };
-              }
-              setTimeout(() => {
-                this.$mRouter.back();
-              }, 1500);
-            })
-            .catch(() => {
-              this.disabled = false;
-            })
-        }
-      } else {
-        this.$mHelper.toast(this.$mGraceChecker.error);
-      }
-    },
-    // 添加或修改家长信息
-    saveOrUptParent(e) {
-      let rules = [
-        { name: 'parentName', checkType: 'notnull', checkRule: '', errorMsg: '请填写家长姓名' },
-        { name: 'parentBabyRelation', checkType: 'notnull', checkRule: '', errorMsg: '请选择关系' },
-        { name: 'parentPhone', checkType: 'notnull', checkRule: '', errorMsg: '请填写联系方式'},
-        { name: 'parentPhone', checkType: 'phoneno', checkRule: '', errorMsg: '联系方式不正确'},
-        // { name: 'address', checkType: 'notnull', checkRule: '', errorMsg: '请填写详细地址'},
-      ]
-      // let regionRule = [
-      //   { name: 'regionCode', checkType: 'notnull', checkRule: '', errorMsg: '请填写家庭住址'},
-      // ];
-      // this.reqBody['regionCode'] = this.region;
-      let formData = e.detail.value;
-      let checkRes = this.$mGraceChecker.check(formData, rules);
-      if (!checkRes) {
-        this.$mHelper.toast(this.$mGraceChecker.error);
-        return false;
-      }
-      // 验证住址
-      // let regionRes = this.$mGraceChecker.check(this.reqBody, regionRule)
-      // if (!regionRes) {
-      //   this.$mHelper.toast(this.$mGraceChecker.error);
-      //   return false;
-      // }
-      if (checkRes) {
-        if (this.type === 'parent') {
-          if (this.parentForm && this.parentForm.id) {
-            const parent = {
-              ...this.parentForm,
-              ...formData,
-              regionCode: this.regionCode,
-              regionCity: JSON.stringify(this.region.map(item => item.name))
-            }
-            const url = this.applyType == 0 ? saveApplyOnline : saveApply ; // 0线上 1线下
-            this.$http
-              .put(url, parent)
-              .then(res => {
-                // this.$mHelper.prePage().parent = parent;
-                this.$mStore.commit('parent', parent);
-                // this.$mStore.commit('signUp', parent);
-                if (this.applyType == 1) {
-                  this.$mStore.dispatch('getUserInfo', {
-                    competitionChildId: this.offlineId
-                  })
-                } else if (this.applyType == 2) {
-                  this.$mStore.dispatch('getUserInfoOnline', {
-                    competitionChildId: this.onlineId
-                  })
-                }
-                this.$mRouter.back();
-              })
-              .catch((err) => {
-                console.log('err', err)
-              })            
-          } else {
-            const parent = {
-              ...formData,
-              regionCode: this.regionCode,
-              regionCity: JSON.stringify(this.region.map(item => item.name))
-            };
-            // 将数据存储在本地
-            this.$mStore.commit('parent', parent);
-            this.$mRouter.back();
-          }
-        }
-      }
-
-    },
-    bindMultiPickerColumnChange(e) {
-    },
-    getProvinceList() {
-      const { province_list, city_list, county_list} = areaList;
-      this.multiArray = [province_list, city_list, county_list]
-    },
-    dateChange(e) {
-      this.form.babyBirthday = e.detail.value;
-    },
-    genderChange(e) {
-      const index = e.detail.value;
-      this.genderIndex = index;
-      // this.form.sex = this.genderList[index].value;
-    },
-    // 获取选择的地区
-    handleGetRegion(region){
-      console.log(region);
-      this.region = region
-    }
-  }
-
-}
-</script>
-
-<style lang="scss">
-page {
-  background: $color-white;
-  // filter: blur(10px);
-  height: 100%;
-}
-.applyinfo {
-  padding: 0 22upx;
-  .form-wrapper {
-    margin-top: 20upx;
-  }
-  .apply-item {
-    border-bottom: 1upx solid #F6F6F6;
-    padding: 28upx 0;
-    .title {
-      min-width: 160upx;
-      margin-right: 20upx;
-      font-size: 28upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #999999;
-      line-height: 40upx;
-      &.required {
-        &::before {
-          display: inline-block;
-          margin-right: 1px;
-          color: #FF0000;
-          font-size: 14px;
-          line-height: 1;
-          content: "*";
-        }
-      }
-    }
-    .input-icon {
-      color: #CACACA;
-      line-height: 1;
-    }
-    ::v-deep .radio {
-      margin-bottom: 38upx;
-      &:nth-child(n+7) {
-        margin-bottom: 0;
-      }
-      .uni-radio-input {
-        border: 2px solid #4CD84A;
-        width: 30upx;
-        height: 30upx;
-        margin-right: 8upx;
-        &.uni-radio-input-checked {
-          background: #FEEB56;
-          border: 2px solid #4CD84A !important;
-          &::after {
-            border: none !important;
-          }
-        }
-      }
-      .uni-radio-wrapper {
-        margin-right: 70upx;
-      }
-    }
-  }
-  ::v-deep .uni-input-input {
-    text-align: right;
-  }
-  .input-placeholder {
-    text-align:right;
-    font-size: 28upx;
-    font-family: PingFangSC-Regular, PingFang SC;
-    font-weight: 400;
-    color: #666666;
-    line-height: 40upx;
-  }
-  .regions {
-    &.empty {
-      font-size: 28upx;
-      color: #666666;
-    }
-  }
-  .uni-btn-v {
-    text-align: center;
-    .submit-btn {
-      margin-top: 80upx;
-      width: 600upx;
-      height: 80upx;
-      line-height: 80upx;
-      font-size: 30upx;
-      font-family: PingFangSC-Medium, PingFang SC;
-      color: #FFFFFF;
-      background: #4CD84A;
-      border-radius: 100upx;
-    }
-  }
-  .portrait {
-    position: relative;
-    width: 120upx;
-    height: 120upx;
-    border-radius: 50%;
-    border: 6upx solid #fff;
-  }
-}
-</style>

+ 0 - 106
src/pages/index/entry.vue

@@ -1,106 +0,0 @@
-<template>
-  <view class="entry">
-    <view class="entry-item">
-      <image class="item-img item-img-01" src="/static/img/index/entry01.png" mode="aspectFill" />
-    </view>
-    <view class="entry-item">
-      <image class="item-img item-img-02" src="/static/img/index/entry02.png" mode="aspectFill" @tap.stop="navTo('/pages/index/apply?type=0',0)" />
-    </view>
-    <view class="entry-item">
-      <image class="item-img item-img-03" src="/static/img/index/entry03.png" mode="aspectFill" @tap.stop="navTo('/pages/index/apply?type=1',1)" />
-    </view>
-
-    <zd-modal-fail @emitClose="failModelClose" :route="'/pages/apply/list'" :failModel="failModel"></zd-modal-fail>
-
-  </view>
-</template>
-
-<script>
-import zdModalFail from '@/components/zd-modal-fail';
-import { mapState } from 'vuex';
-
-export default {
-  data() {
-    return {
-      failModel: false,
-    }
-  },
-  components: {
-    zdModalFail
-  },
-  computed: {
-    ...mapState({
-      signUp: 'signUp'
-    })
-  },
-  onLoad() {
-    console.log('onLoad', this.signUp);
-  },
-  methods: {
-    navTo(route, type) {
-      const navType = type
-      if (this.signUp && this.signUp.signUpType == navType) {
-        // 已报名
-        this.failModel = true;
-        // this.$mRouter.push({route})
-      } else if (this.signUp && this.signUp.signUpType != navType) {
-        if(type == 0) {
-          this.$mHelper.toast('已在专柜报名');
-        } else {
-          this.$mHelper.toast('已在园所端报名');
-        }
-      } else {
-        this.$mRouter.push({route})
-      }
-    },
-    failModelClose() {
-      this.failModel = false;
-    },
-  }
-}
-</script>
-
-<style lang="scss">
-page {
-  // background: $color-white;110,212,86
-  background: rgba(109, 213, 86, 1);
-  // background: linear-gradient(180deg, #66DF5C, #72CF53 );
-  height: 100%;
-}
-.entry {
-  .entry-item {
-    position: relative;
-    font-size: 0;
-    .entry-btn {
-      position: absolute;
-      width: 220upx;
-      height: 60upx;
-      background: #FEEB56;
-      box-shadow: 0px -2px 2px 0px #FE9F2E;
-      border-radius: 118px;
-      opacity: 0;
-      &.entry-btn-01 {
-        left: 88upx;
-        bottom: 76upx;
-      }
-      &.entry-btn-02 {
-        right: 92upx;
-        bottom: 98upx;
-      }
-    }
-    image {
-      width: 100%;
-    }
-    .item-img-01 {
-      height: 534upx;
-    }
-    .item-img-02 {
-      height: 366upx;
-
-    }
-    .item-img-03 {
-      height: 366upx;
-    }
-  }
-}
-</style>

+ 0 - 158
src/pages/index/gameDetail.vue

@@ -1,158 +0,0 @@
-<template>
-	<view class="detail">
-    <view class="date" v-if="offlineCompetition" >{{ offlineCompetition.startTime | dateFormat('M月DD日') }} <view>{{ '|' }}</view> {{ offlineCompetition.endTime | dateFormat('M月DD日') }}</view>
-    <view class="dec_box">
-      <image class="dec_img_bg" src="/static/img/index/dec_box.png" mode="aspectFill" />
-      <image class="submit_btn" src="/static/img/index/submit_btn.png" @tap.stop="navTo('/pages/index/entry')" mode="aspectFill" />
-      <view class="dec_content">
-        <view class="dec_item">
-          <text>我在这里等你很久了,欢迎你参加</text>
-          <text class="hl">第16届幼儿思</text>
-        </view>
-        <view class="dec_item">
-          <text class="hl">维能力挑战赛</text>
-          <text>!这里是专门为你准备的一个全面</text>
-        </view>
-        <view class="dec_item">
-          <text>展示个性和实力的舞台!在这里,你能收获知识,</text>
-        </view>
-        <view class="dec_item">
-          <text>获得成长,还能结识来自全国各地的小朋友!</text>
-        </view>
-        <view class="dec_item">
-          <text>点击</text>
-          <text class="hl">“绿色报名通道”</text>
-          <text>快快报名吧!</text>
-        </view>
-      </view>
-    </view>
-	</view>
-</template>
-
-<script>
-import { indexList } from '@/api/product';
-import { mapState } from 'vuex';
-
-export default {
-  data() {
-    return {
-      loading: true,
-      // appName: this.$mSettingConfig.appName,
-    };
-  },
-  onLoad() {
-    
-  },
-  onShow() {
-    this.initData();
-  },
-  computed: {
-    ...mapState({
-      offlineCompetition: 'offlineCompetition'
-    })
-  },
-  methods: {
-    initData() {
-      // this.getIndexList();
-    },
-    async getIndexList(type) {
-      await this.$http
-        .get(`${indexList}`, {})
-        .then(async r => {
-          // uni.setNavigationBarTitle({ title: this.appName });
-          if (type === 'refresh') {
-            uni.stopPullDownRefresh();
-          }
-          // 首页参数赋值
-          console.log(r.data);
-          this.loading = false;
-        })
-        .catch(() => {
-          this.loading = false;
-          if (type === 'refresh') {
-            uni.stopPullDownRefresh();
-          }
-        })
-
-    },
-    navTo(route) {
-      this.$mRouter.push({route})
-    }
-  },
-  onPullDownRefresh() {
-    this.getIndexList('refresh');
-  }
-};
-</script>
-
-<style lang="scss">
-.detail {
-  position: relative;
-  background: url('https://app-resources-luojigou.luojigou.vip/Fr1W5D7aaOJvOG4szQz6txjOiysU') no-repeat;
-  // background-size: 100%;
-  background-size: cover;
-  height: 100vh;
-  // overflow: hidden;
-  // padding-top: 882upx;
-  // background: url('https://app-resources-luojigou.luojigou.vip/FuqGvveGk3wOO-PEr2iTpa8a-pG4');
-  .date {
-    position: fixed;
-    left: 0;
-    top: 280upx;
-    width: 45upx;
-    text-align: center;
-    background: rgba(255, 255, 255, 0.5);
-    box-shadow: 0px 2upx 6upx 0px rgba(255, 255, 255, 0.5);
-    // opacity: 0.5;
-    padding: 5upx 7upx;
-    color: #359732;
-    border-radius: 0px 20upx 20upx 0px;
-  }
-  .dec_box {
-    position: absolute;
-    text-align: center;
-    // position: absolute;
-    // width: 100%;
-    // padding: 0 6upx;
-    bottom: 26upx;
-    z-index: 10;
-    font-size: 0;
-    .dec_img_bg {
-      width: 738upx;
-      height: 466upx;
-      // width: 100%;
-    }
-  }
-  .submit_btn {
-    position: absolute;
-    left: 50%;
-    bottom: 0upx;
-    transform: translateX(-50%);
-    width: 294upx;
-    height: 124upx;
-  }
-  .dec_content {
-    text-align: left;
-    position: absolute;
-    top: 72upx;
-    left: 88upx;
-    .dec_item {
-      border-bottom: 1px dashed rgba(215, 213, 213, 0.6);
-      &:last-child {
-        border: none;
-      }
-      text {
-        font-size: 26upx;
-        line-height: 52upx;
-        font-family: PingFangSC-Regular, PingFang SC;
-        font-weight: 400;
-        color: #0B0909;
-        &.hl {
-          font-family: PingFangSC-Semibold, PingFang SC;
-          color:#F46902;
-        }
-      }
-    }
-  }
-}
-</style>

+ 108 - 2
src/pages/index/index.vue

@@ -1,8 +1,114 @@
 <template>
-  <view>展会首页</view>
+  <view class="index">
+    <view class="header">
+      <image :src="headImg" mode="aspectFill" />
+    </view>
+    <view class="flex flex-wrap content justify-between">
+      <view v-for="(item, index) in list" :key="index">
+        <view
+          @tap.stap="navTo(item.path)"
+          class="item flex justify-between" 
+          :style="{backgroundImage: `url(${item.bgUrl})`,backgroundRepeat: 'no-repeat', backgroundSize: 'cover'}">
+          <view class="left">
+            <view class="title">{{ item.title1 }}</view>
+            <view class="title">{{ item.title2 }}</view>
+          </view>
+          <view class="right">
+            <image class="img" :src="item.imgUrl" mode="aspectFill" />
+          </view>
+        </view>
+      </view>
+    </view>
+  </view>
 </template>
 
-<script></script>
+<script>
+  export default {
+    data() {
+      return {
+        headImg: require('@/static/img/index/index_heard.png'),
+        list: [
+          {
+            title1: '全面了解', 
+            title2: '中德智慧', 
+            imgUrl: require('@/static/img/index/index_img1.png'),
+            bgUrl: require('@/static/img/index/index_card1.png'),
+            path: '/pages/about/index',
+          },
+          {
+            title1: '“思维芯”', 
+            title2: '四大课程体系', 
+            imgUrl: require('@/static/img/index/index_img2.png'),
+            bgUrl: require('@/static/img/index/index_card2.png')
+          },
+          {
+            title1: 'OMO教育', 
+            title2: '内容服务', 
+            imgUrl: require('@/static/img/index/index_img3.png'),
+            bgUrl: require('@/static/img/index/index_card3.png')
+          },
+          {
+            title1: '品牌活动', 
+            title2: '', 
+            imgUrl: require('@/static/img/index/index_img4.png'),
+            bgUrl: require('@/static/img/index/index_card4.png')
+          },
+          {
+            title1: '全国招商', 
+            title2: '合作加盟', 
+            imgUrl: require('@/static/img/index/index_img5.png'),
+            bgUrl: require('@/static/img/index/index_card5.png')
+          },
+          {
+            title1: '联系我们', 
+            imgUrl: require('@/static/img/index/index_img6.png'),
+            bgUrl: require('@/static/img/index/index_card6.png')
+          }
+        ]
+      }
+    },
+    methods: {
+      navTo(route) {
+        this.$mRouter.push({
+          route
+        })
+      }
+    }
+  }
+</script>
 
 <style lang="scss">
+.index {
+  .header {
+    image {
+      width: 100%;
+      height: 566upx;
+      vertical-align: middle;
+    }
+  }
+  .content {
+    padding: 4upx 36upx 0;
+    background: radial-gradient(#F9FCFC 4upx, transparent 4upx) 0 0,
+            #ffffff ;
+    background-size: 14upx 14upx;
+    .item {
+      width: 330upx;
+      height: 168upx;
+      margin-bottom: 26upx;
+      padding: 44upx 20upx 0 24upx;
+      .title {
+        font-size: 28upx;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #333333;
+        line-height: 40upx;
+      }
+      .img {
+        width: 104upx;
+        height: 104upx;
+        vertical-align: middle;
+      }
+    }
+  }
+}
 </style>

+ 0 - 224
src/pages/login/index.vue

@@ -1,224 +0,0 @@
-<template>
-  <view class='login'>
-    <form @submit="formSubmit" @reset="formReset">
-      <div class="form-title">登录</div>
-      <view class="form-group">
-        <view class="form-group-item flex align-center">
-          <input class="uni-input" v-model="form.phone" name="phone" maxlength="11" placeholder="手机号" @input="phoneInput" />
-          <view :class="[{ 'disabled': sentDisable }, 'sent-btn block']" @tap.stop="send"> {{ disabled === true ? `${timeNum}s后重发` : '获取验证码' }} </view>
-        </view>
-      </view>
-      <view class="form-group">
-        <view class="form-group-item flex align-center">
-          <input class="uni-input" v-model="form.code" name="code" maxlength="4" placeholder="验证码" @input="codeInput"/>
-        </view>
-      </view>
-      <view class="uni-btn-v">
-        <button :class="[{ 'disabled': submitDisable },'cu-btn submit-btn']" form-type="submit">登录</button>
-      </view>
-    </form>
-  </view>
-</template>
-
-<script>
-import { smsCode, loginByPhone } from '@/api/login';
-
-export default {
-  data() {
-    return {
-      disabled: false,
-      sentDisable: true,
-      submitDisable: true,
-      timer: null,
-      timeNum: 60,
-      form: {
-        phone: '',
-        code: '',
-      }
-    }
-  },
-
-  onLoad() {},
-
-  onShow() {},
-
-  methods: {
-    async send() {
-      if (this.disabled) {
-        return false;
-      }
-      if (this.sentDisable) {
-        return false;
-      }
-      // 发送短信验证码
-      this.$http
-          .get(`${smsCode}/${this.form.phone}`)
-          .then(res => {
-            this.$mHelper.toast('发送成功');
-            this.disabled = true;
-            this.sentDisable = true;
-            this.timer = setInterval(() => {
-              this.codeMsg();
-            }, 1000);
-          })
-          .catch(err => {
-            console.log(err);
-          })
-      // const data = await getPhoneCode(this.garden.principalPhone);
-      // if (data.status === 200) {
-      //   this.disabled = true;
-      //   this.timer = setInterval(() => {
-      //     this.codeMsg();
-      //   }, 1000);
-      //   this.$once('hook:beforeDestroy', () => {
-      //     clearInterval(this.timer);
-      //   });
-      // }
-    },
-    codeMsg() {
-      this.timeNum--;
-      if (this.timeNum <= 0) {
-        clearInterval(this.timer);
-        this.disabled = false;
-        this.sentDisable = false;
-        this.timeNum = 60;
-      }
-    },
-    phoneInput(e) {
-      let code = this.form.code;
-      let phone = e.detail.value;
-      let reg1 = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
-      let reg2 = new RegExp('^.{4}$');
-      if (reg1.test(phone)) {
-        this.sentDisable = false;
-      } else {
-        this.sentDisable = true;
-      }
-      if (!reg1.test(phone) || !reg2.test(code)) {
-        this.submitDisable = true;
-      } else {
-        this.submitDisable = false;
-      }
-    },
-    codeInput(e) {
-      let phone = this.form.phone;
-      let code = e.detail.value;
-      let reg1 = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
-      let reg2 = new RegExp('^.{4}$');
-      if (!reg1.test(phone) || !reg2.test(code)) {
-        this.submitDisable = true;
-      } else {
-        this.submitDisable = false;
-      }
-    },
-    formSubmit(e) {
-      if(this.submitDisable) return false;
-      // 表单验证
-      const rule = [
-        { name: 'phone', checkType: 'phoneno', checkRule: '', errorMsg: '手机号不正确'},
-        { name: 'code', checkType: 'string', checkRule: '4', errorMsg: '请输入4位验证码'}
-      ]
-      //进行表单检查
-      let formData = e.detail.value;
-      var checkRes = this.$mGraceChecker.check(formData, rule);
-      if(checkRes){
-        this.submitDisable = true;
-        //显示消息提示框
-        this.$http
-          .get(`${loginByPhone}`, {
-            phone: e.detail.value.phone,
-            code: e.detail.value.code
-          })
-          .then(res => {
-            this.submitDisable = false;
-  				  this.$mHelper.toast('登录成功', 1500);
-  					this.$mStore.commit('login', res.data);
-            const backToPage = uni.getStorageSync('backToPage');
-            uni.removeStorageSync('backToPage');
-            if (backToPage) {
-							this.$mRouter.reLaunch(JSON.parse(backToPage));
-            } else {
-  						this.$mRouter.reLaunch({ route: '/pages/index/index' });
-            }
-          })
-          .catch(err => {
-            console.log('err', err)
-          })
-      }else{
-				this.$mHelper.toast(this.$mGraceChecker.error);
-      }
-    }
-  },
-  beforeDestroy() {
-
-  }
-}
-</script>
-
-<style lang="scss">
-page {
-  background: $color-white;
-}
-.login {
-  padding-top: 218upx;
-  .form-title {
-    margin-bottom: 80upx;
-    text-align: center;
-    font-size: 48upx;
-    font-family: PingFangSC-Semibold, PingFang SC;
-    font-weight: 600;
-    color: #3C6E3B;
-    line-height: 48upx;
-  }
-  .form-group {
-    margin: 0 auto 24upx;
-    width: 568upx;
-    background: #F7F7F7;
-    border-radius: 200upx;
-    .form-group-item {
-      position: relative;
-      height: 96upx;
-      line-height: 96upx;
-      padding-left: 32upx;
-      padding-right: 8upx;
-    }
-    .sent-btn {
-      position: absolute;
-      right: 8upx;
-      top: 50%;
-      transform: translateY(-50%);
-      height: 80upx;
-      line-height: 80upx;
-      text-align: center;
-      background: #4ED84C;
-      border-radius: 200upx;
-      font-size: 32upx;
-      padding: 0 28upx;
-      // margin-right: 8upx;
-      color: #FFFFFF;
-    }
-  }
-  .uni-btn-v {
-    text-align: center;
-    .submit-btn {
-      margin-top: 56upx;
-      padding: 0upx;
-      width: 592upx;
-      height: 84upx;
-      line-height: 84upx;
-      background: #4ED84C;
-      box-shadow: 0upx 4upx 20upx 0upx #4ED84C;
-      border-radius: 200upx;
-      font-size: 32upx;
-      font-family: PingFangSC-Medium, PingFang SC;
-      font-weight: 500;
-      color: #FFFFFF;
-    }
-  }
-  .disabled {
-    background: #4ED84C;
-    border-radius: 200px;
-    opacity: 0.5;
-  }
-}
-</style>

+ 0 - 103
src/pages/me/baby.vue

@@ -1,103 +0,0 @@
-<template>
-  <view class='baby'>
-    <view v-if="baby">
-      <view class="baby-info" @tap.stap="navTo('/pages/index/applyInfo?type=user')">
-        <image :src="baby.headImg" mode="" />
-        <view>
-          <view class="name">{{ baby.babyName }}</view>
-          <view class="babyBirthday">{{ babyBirthday }}</view>
-        </view>
-      </view>
-    </view>
-    <zd-empty v-else :src="'/static/img/common/empty_page.png'" desc="暂未添加宝贝"></zd-empty>
-  </view>
-</template>
-
-<script>
-import moment from '@/common/moment';
-import { mapState } from 'vuex';
-import zdEmpty from '@/components/zd-empty/index';
-
-export default {
-  data() {
-    return {
-      babyBirthday: '',
-    }
-  },
-
-  computed: {
-    ...mapState({
-      baby: 'baby',
-      onlineId: 'onlineId',
-      offlineId: 'offlineId'
-    })
-  },
-  components: {
-    zdEmpty
-  },
-  onLoad(options) {
-    // 来自微信小程序的跳转
-    if (options && options.type === 'weapp') {
-      // 获取报名信息
-      this.$mStore.dispatch('getUserInfoOnline',{
-        competitionChildId: this.onlineId
-      })
-        .then(async res => {
-          const { baby } = res.data;
-          const duration = moment.duration(moment().diff(baby.babyBirthday));
-          this.babyBirthday = duration.years() + '年' + duration.months() + '月' + duration.days() + '天';
-        }).catch(() => {
-          console.log('catch');
-        });
-    }
-    if (this.baby) {
-      const duration = moment.duration(moment().diff(this.baby.babyBirthday));
-      this.babyBirthday = duration.years() + '年' + duration.months() + '月' + duration.days() + '天';
-    }
-  },
-
-  onShow() {},
-
-  methods: {
-    navTo(route) {
-      this.$mRouter.push({route})
-    }
-  }
-
-}
-</script>
-
-<style lang="scss">
-.baby-info {
-  width: 686upx;
-  height: 166upx;
-  background: #FFFFFF;
-  border-radius: 20upx;
-  border: 2upx solid #4CD84A;
-  margin: 50upx auto 0;
-  display: flex;
-  align-items: center;
-  image {
-    width: 100upx;
-    height: 100upx;
-    border-radius: 50%;
-    margin: 0 50upx 0 30upx;
-  }
-  .name {
-    font-size: 32upx;
-    font-family: PingFangSC-Semibold, PingFang SC;
-    font-weight: 600;
-    color: #161616;
-    line-height: 44upx;
-  }
-  .babyBirthday {
-    font-size: 28upx;
-    font-family: PingFangSC-Regular, PingFang SC;
-    font-weight: 400;
-    color: #999999;
-    line-height: 40upx;
-    margin-top: 4upx;
-  }
-}
-</style>
-

+ 0 - 311
src/pages/me/index.vue

@@ -1,311 +0,0 @@
-<template>
-  <view class='me'>
-    <!-- 头部 -->
-    <view class="user-section">
-      <view class="user-info-box flex align-center">
-        <image class="avatar" :src="user.avatarUrl || userInfo.headimgurl" mode="" />
-        <view class="user-info-content">
-          <view class="username cu-cut">{{ userInfo.nickname || user.nickName || '暂无昵称' }}</view>
-          <view class="tag cu-cut" v-if="signUp">
-            {{baby.babyName}}
-            <view class="tag-name">{{signUp.classLevel | filterLevel}}</view>
-          </view>
-        </view>
-      </view>
-      <image class="logo" :src="logoImg" mode="" />
-    </view>
-    <!-- 列表 -->
-    <view class="list-section">
-      <view class="list-content">
-        <view class="list-item arrow" v-for="(item, index) in setList" :key="index" @tap="navTo(item.type,item.url)">
-          <view class="list-item-info flex align-center">
-            <image class="item-img" :src="item.icon" mode="aspectFill" />
-            <view class="item-right flex justify-between align-center" :class="index + 1 === setList.length ? 'last-right' : ''">
-              <text class="item-title">{{ item.title }}</text>
-              <text class="cuIcon-right"></text>
-            </view>
-            <view class="open-weapp" v-if="weappShow && item.type == 3">
-              <open-weapp :username="'gh_2a4feb568ecb'" :path="rightPath" :content="conntent"></open-weapp>
-            </view>
-          </view>
-          <view class="line" v-if="index === 3"></view>
-        </view>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script>
-import { mapState } from 'vuex';
-import OpenWeapp from '@/components/open-weapp/open';
-
-export default {
-  data() {
-    return {
-      userAva: require('@/static/img/user/user_avatar.png'),
-      logoImg: require('@/static/img/common/logo.png'),
-      userInfo: {
-        nickname: '暂无',
-        headimgurl: require('@/static/img/user/user_avatar.png'),
-      },
-      setList: [
-        {
-          type: 1,
-          title: '我的报名',
-          icon: '/static/img/user/me_icon01.png',
-          url: '/pages/apply/list'
-        },
-        {
-          type: 2,
-          title: '线上云赛',
-          icon: '/static/img/user/me_icon02.png',
-          url: ''
-        },
-        {
-          type: 3,
-          title: '赛前练习',
-          icon: '/static/img/user/me_icon03.png',
-          url: ''
-        },
-        {
-          type: 4,
-          title: '成绩查询',
-          icon: '/static/img/user/me_icon06.png',
-          url: '/pages/search/index'
-        },
-        {
-          type: 5,
-          title: '宝宝信息',
-          icon: '/static/img/user/me_icon04.png',
-          url: '/pages/me/baby'
-        },
-        {
-          type: 6,
-          title: '家长信息',
-          icon: '/static/img/user/me_icon05.png',
-          url: '/pages/me/parent'
-        },
-        {
-          type: 7,
-          title: '设置',
-          icon: '/static/img/user/me_icon07.png',
-          url: '/pages/me/set'
-        }
-      ],
-      conntent: '<div class="btn" style="width:100%; min-height:50px; display:block; font-size:14px;color: #ffffff;">打开app</div>',
-      weappShow: process.env.NODE_ENV === 'production' ? true : false,
-      rightPath: '/pages/pattern/index'
-    };
-  },
-
-  onLoad() {
-    this.initData();
-  },
-
-  onShow() {},
-
-  components: {
-    OpenWeapp
-  },
-
-  filters: {
-    filterLevel(val) {
-      switch (val){
-        case -1:
-          return '托班'
-        case 0:
-          return '小班'
-        case 1:
-          return '中班'
-        case 2:
-          return '大班'
-        default:
-          return '待定'
-      }
-    }
-  },
-
-  computed: {
-    ...mapState({
-      wxUser: 'wxUser',
-      user: 'user',
-      signUp: 'signUp',
-      baby: 'baby'
-    })
-  },
-
-  methods: {
-    initData() {
-      if(this.wxUser || this.user) {
-        this.userInfo = this.wxUser || this.user;
-      }
-    },
-    navTo(type, route) {
-      if (type == 1) { // 我的报名
-        console.log('我的报名');
-        // if (!this.signUp) {
-        //   this.$mRouter.push({
-        //     route: '/pages/index/gameDetail'
-        //   });
-        // }
-      } else if (type == 2) { // 线上云赛
-        this.$mHelper.toast('您还未参与线上云赛');
-        return false;
-      } else if (type == 3) { // 赛前练习
-        // this.$mHelper.toast('您还未参与赛前练习');
-        if (!this.weappShow) {
-          this.$mHelper.toast('您还未参与赛前练习');
-        }
-        return false;
-      } else if (type == 4) { // 成绩查询
-        console.log('成绩查询');
-        // if(!this.baby) {
-        //   this.$mHelper.toast('暂未报名')
-        //   return false;
-        // }
-      } else if (type == 5) { // 宝贝信息
-        if (!this.baby) {
-          this.$mHelper.toast('暂未信息')
-          return false;
-        }
-      } else if (type == 6) { // 家长信息
-        if (!this.signUp) {
-          this.$mHelper.toast('暂未信息')
-          return false;
-        }
-      } else {
-        this.$mHelper.toast('暂待开发')
-      }
-      this.$mRouter.push({route});
-    }
-    
-  },
-};
-</script>
-
-<style lang="scss">
-page {
-  background: $color-white;
-  // background: #F5F6F9;
-  height: 100%;
-}
-.user-section {
-  position: relative;
-  background: #F5F6F9;
-  .user-info-box {
-    padding: 28rpx 0 120rpx;
-    .avatar {
-      width: 152upx;
-      height: 152upx;
-      margin: 0 26upx 0 32upx;
-      border-radius: 50%;
-    }
-    .username {
-      max-width: 350upx;
-      font-size: 40upx;
-      font-family: PingFangSC-Semibold, PingFang SC;
-      font-weight: 600;
-      color: #333333;
-      line-height: 40upx;
-    }
-    .tag {
-      max-width: 360upx;
-      position: relative;
-      margin-top: 18upx;
-      padding: 0 12upx 0 98upx;
-      height: 40upx;
-      background: #FCC107;
-      border-radius: 20upx;
-      text-align: right;
-      font-size: 24upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #FFFFFF;
-      display: inline-block;
-      .tag-name {
-        text-align: center;
-        position: absolute;
-        left: 0;
-        top: 0;
-        width: 86upx;
-        height: 40upx;
-        line-height: 40upx;
-        background: #FFFFFF;
-        box-shadow: 0px 4upx 8upx 0px rgba(252, 193, 7, 0.21);
-        border-radius: 20upx;
-        font-size: 28upx;
-        font-family: YouSheBiaoTiHei;
-        color: #FCC107;
-      }
-    }
-    .user-info-content {
-      max-width: 360upx;
-    }
-  }
-  .logo {
-    width: 210upx;
-    height: 280upx;
-    position: absolute;
-    right: 10upx;
-    bottom: -16upx;
-  }
-}
-.list-section {
-  background: $color-white;
-  transform: translateY(-40upx);
-  border-radius: 40upx 40upx 0upx 0upx;
-}
-.list-content {
-  .list-item {
-    position: relative;
-    &.arrow {
-      &::before {
-        color: #CACACA;
-      }
-    }
-    &:after {
-      border-bottom: 1px solid #F6F6F6;
-    }
-    .item-img {
-      width: 66upx;
-      height: 66upx;
-      margin-right: 16upx;
-    }
-    .item-title {
-      font-size: 32upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #333333;
-      line-height: 36upx;
-    }
-    .open-weapp {
-      position: absolute;
-      width: 100%;
-      height: 100%;
-      top: 0;
-      left: 0;
-      opacity: 0;
-    }
-    .list-item-info {
-      padding: 0 54upx 0 42upx;
-      .item-right {
-        flex: 1;
-        border-bottom: 2upx solid #F6F6F6;
-        padding: 38upx 0 44upx;
-        &.last-right {
-          border-bottom: none;
-        }
-      }
-    }
-    .cuIcon-right {
-      line-height: 1;
-      color: #CACACA;
-    }
-  }
-  .line {
-    width: 100%;
-    height: 20upx;
-    background: #F8F8F8;
-  }
-}
-</style>

+ 0 - 17
src/pages/me/match.vue

@@ -1,17 +0,0 @@
-<template>
-  <view>赛事报名</view>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      
-    }
-  }
-}
-</script>
-
-<style>
-
-</style>

+ 0 - 115
src/pages/me/parent.vue

@@ -1,115 +0,0 @@
-<template>
-  <view class='baby'>
-    <view v-if="signUp">
-      <view class="parent-info" @tap.stap="navTo('/pages/index/applyInfo?type=parent')">
-        <view>
-          <view class="name">{{ signUp.parentName }} ({{ signUp.parentBabyRelation }})</view>
-          <view class="babyBirthday">{{ signUp.regionCity | regionCityFilter }}{{ signUp.address }}</view>
-        </view>
-      </view>
-    </view>
-    <zd-empty v-else :src="'/static/img/common/empty_page.png'"></zd-empty>
-  </view>
-</template>
-
-<script>
-import moment from '@/common/moment';
-import { mapState } from 'vuex';
-import zdEmpty from '@/components/zd-empty/index';
-
-export default {
-  data() {
-    return {
-      babyBirthday: '',
-    }
-  },
-
-  computed: {
-    ...mapState({
-      signUp: 'signUp',
-      onlineId: 'onlineId',
-      offlineId: 'offlineId'
-    })
-  },
-  components: {
-    zdEmpty
-  },
-  onLoad(options) {
-    // 来自微信小程序的跳转
-    if (options && options.type === 'weapp') {
-      // 获取报名信息
-      this.$mStore.dispatch('getUserInfoOnline',{
-        competitionChildId: this.onlineId
-      })
-        .then(async res => {
-          console.log(res);
-        }).catch(() => {
-          console.log('catch');
-        });
-    }
-  },
-
-  filters: {
-    regionCityFilter(val) {
-      if(val) {
-        let regionCity;
-        try {
-          regionCity = JSON.parse(val) || [];
-        } catch (error) {
-          regionCity = val;
-        }
-        if(!Array.isArray(regionCity)) {
-          return regionCity;
-        } else {
-          return regionCity.join('');
-        }
-      }
-    }
-  },
-
-  onShow() {},
-
-  methods: {
-    navTo(route) {
-      this.$mRouter.push({route})
-    }
-  }
-
-}
-</script>
-
-<style lang="scss">
-.parent-info {
-  width: 686upx;
-  height: 166upx;
-  background: #FFFFFF;
-  border-radius: 20upx;
-  border: 2upx solid #4CD84A;
-  margin: 50upx auto 0;
-  display: flex;
-  align-items: center;
-  padding-left: 30upx;
-  image {
-    width: 100upx;
-    height: 100upx;
-    border-radius: 50%;
-    margin: 0 50upx 0 30upx;
-  }
-  .name {
-    font-size: 32upx;
-    font-family: PingFangSC-Semibold, PingFang SC;
-    font-weight: 600;
-    color: #161616;
-    line-height: 44upx;
-  }
-  .babyBirthday {
-    font-size: 28upx;
-    font-family: PingFangSC-Regular, PingFang SC;
-    font-weight: 400;
-    color: #999999;
-    line-height: 40upx;
-    margin-top: 4upx;
-  }
-}
-</style>
-

+ 0 - 22
src/pages/me/result.vue

@@ -1,22 +0,0 @@
-<template>
-  <view class="success">报名成功</view>
-</template>
-
-<script>
-export default {
-  data() {
-    return {
-      
-    }
-  }
-}
-</script>
-
-<style lang="scss">
-.success {
-  font-size: 68upx;
-  font-family: YouSheBiaoTiHei;
-  color: #FFFFFF;
-  line-height: 60upx;
-}
-</style>

+ 0 - 120
src/pages/me/set.vue

@@ -1,120 +0,0 @@
-<template>
-  <view class='set'>
-    <view class="set-content">
-      <view class="set-item flex justify-between align-center">
-        <view class="item-left">手机号</view>
-        <view class="item-right" v-if="user">{{ user.phone | phoneFilter }}</view>
-        <view class="item-right" v-else>暂未绑定</view>
-      </view>
-      <view class="set-item flex justify-between align-center">
-        <view class="item-left">微信</view>
-        <view class="item-right">已绑定</view>
-      </view>
-    </view>
-    <view class="cu-btn block logout" @tap.stop="logout">退出登录</view>
-    <view class="version">当前版本1.0.0</view>  
-  </view>
-</template>
-
-<script>
-import { mapState } from 'vuex';
-
-export default {
-  data() {
-    return {
-
-    }
-  },
-
-  computed: {
-    ...mapState({
-      user: 'user'
-    })
-  },
-
-  filters: {
-    phoneFilter(val) {
-      if(!val) return '暂未绑定';
-      let reg = /^(\d{3})\d{4}(\d{4})$/;
-      let tel = val.replace(reg, "$1****$2");
-      return tel;
-    }
-  },
-
-  onLoad() {},
-
-  onShow() {},
-
-  methods: {
-    logout() {
-      uni.showModal({
-        content: '确定退出登录?',
-        success: confirmRes => {
-          if (confirmRes.confirm) {
-            this.$mStore.commit('logout');
-            this.$mRouter.push({
-              route: '/pages/login/index'
-            })
-          }
-        }
-      });
-    }
-  }
-
-}
-</script>
-
-<style lang="scss">
-page {
-  background: #F9F7F7;
-}
-.set {
-  padding: 24upx 32upx ;
-  .set-content {
-    background: $color-white;
-    box-shadow: 0px 0px 12upx 0px rgba(235, 235, 235, 0.5);
-    border-radius: 20upx;
-    padding: 32upx 24upx 32upx 32upx;
-    .set-item {
-      font-size: 0;
-      margin-bottom: 64upx;
-      &:last-child {
-        margin-bottom: 0;
-      }
-    }
-    .item-left {
-      font-size: 32upx;
-      font-family: PingFangSC-Medium, PingFang SC;
-      font-weight: 500;
-      color: #333333;
-      line-height: 36upx;
-    }
-    .item-right {
-      font-size: 28upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #666666;
-      line-height: 32upx;
-    }
-  }
-  .logout {
-    margin-top: 24upx;
-    height: 92upx;
-    background: #FFFFFF;
-    box-shadow: 0px 0px 12upx 0px rgba(235, 235, 235, 0.5);
-    border-radius: 8upx;
-    font-size: 28upx;
-    font-family: PingFangSC-Medium, PingFang SC;
-    font-weight: 500;
-    color: #161616;
-  }
-  .version {
-    margin-top: 80upx;
-    font-size: 28upx;
-    font-family: PingFangSC-Regular, PingFang SC;
-    font-weight: 400;
-    color: #666666;
-    text-align: center;
-  }
-}
-</style>

+ 0 - 203
src/pages/search/index.vue

@@ -1,203 +0,0 @@
-<template>
-  <view class='search-container'>
-    <view class="search-head"></view>
-    <view class="search-content">
-      <view class="search-title flex" :class="['active' + currentTab]">
-        <view v-for="(item, index) in tabs" :key="index" class="tab" :class="currentTab === index ? 'active' : ''" @tap.stop="handeTab(index)">
-          {{ item.title }}
-        </view>
-      </view>
-      <view class="search-info">
-        <view class="search-input">
-          <input class="padding-left" v-model="competitionNo" type="text" placeholder="请输入参赛选手姓名或编号" confirm-type="search"></input>
-        </view>
-        <!-- 查询总决赛成绩 -->
-        <view class="search-btn" @tap.stop="handleSearch(3)"> 
-          <image src="/static/img/apply/btn_search.png" mode="" />
-        </view>
-        <view class="logo">
-          <image src="/static/img/apply/logo.png" mode="" />
-        </view>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script>
-import { searchResult } from '@/api/apply';
-import { mapState } from 'vuex';
-
-export default {
-  data() {
-    return {
-      competitionNo: '', // 00000036
-      currentTab: 0,
-      tabs: [
-        {
-          title: '全国总决赛'
-        },
-        {
-          title: '云赛总决赛'
-        }
-      ]
-    }
-  },
-
-  onLoad() {},
-
-  onShow() {},
-
-  computed: {
-    ...mapState({
-      stageList: 'stageList',
-      signUp: 'signUp'
-    })
-  },
-
-  methods: {
-    handleSearch(stage) {
-      if (!this.signUp) {
-        this.$mHelper.toast('暂无报名信息');
-        return false;
-      }
-      if (!this.stageList || this.stageList.length <= 0) {
-        this.$mHelper.toast('暂无赛事信息');
-        return false;
-      }
-      if (!this.competitionNo) {
-        this.$mHelper.toast('请输入参赛选手姓名或编号');
-        return false;
-      }
-      // const competitionNo = this.signUp.competitionNo || '';
-      const stageId = this.stageList[stage - 1].id || '';
-      this.$http.
-        get(searchResult, {
-          no: this.competitionNo,
-          stageId: 4 // 4
-        })
-        .then(res => {
-          if (!res.data) {
-            this.$mHelper.toast('暂未查询到比赛成绩');
-          } else {
-            this.$mHelper.toast('查询成功');
-            this.$mStore.commit('result', res.data);
-            setTimeout(() => {
-              this.$mRouter.push({
-                route: '/pages/search/result'
-              })
-            },1000)
-          }
-        })
-        .catch(() => {
-          console.log('catch');
-        })
-    },
-    handeTab(index) {
-      this.currentTab = index;
-    }
-  }
-
-}
-</script>
-
-<style lang="scss" scope>
-page {
-  height: 100%;
-}
-.search-container {
-  min-height: 100%;
-  background: linear-gradient(180deg, #67DD5B, #72CF53);
-  .search-head {
-    background: url('@/static/img/apply/search_bg.png');
-    background-size: cover;
-    height: 326upx;
-  }
-  .search-content {
-    position: relative;
-    padding: 14upx 12upx;
-    width: 686upx;
-    background: #B6F9B6;
-    box-shadow: 0px 12upx 20upx 0px rgba(35, 211, 33, 0.37);
-    border-radius: 60upx;
-    margin: 0 auto;
-    transform: translateY(-56upx);
-  }
-  .search-title {
-    position: relative;
-    text-align: center;
-    height: 163upx;
-    padding-top: 20upx;
-    &.active1 {
-      &::before {
-        transform: rotateY(180deg);
-      }
-    }
-    &::before {
-      position: absolute;
-      content: "";
-      width: 100%;
-      height: 100%;
-      top: 0;
-      left: 0;
-      z-index: -1;
-      background-image: url('@/static/img/apply/tab_bg.png');
-      background-size: 100% 100%;
-    }
-    .tab {
-      flex: 1;
-      font-size: 36upx;
-      font-family: PingFangSC-Semibold, PingFang SC;
-      font-weight: 600;
-      color: #3EE027;
-      line-height: 50upx;
-      &.active {
-        font-size: 36upx;
-        font-family: PingFangSC-Semibold, PingFang SC;
-        font-weight: 600;
-        color: #3EE027;
-        line-height: 50upx;
-      }
-    }
-  }
-  .search-info {
-    background: #ffffff;
-    height: 100%;
-    border-radius: 0 0 60upx 60upx;
-    padding: 52upx 34upx 0;
-  }
-  .search-input {
-    background: #F7F7F7;
-    border-radius: 80upx;
-    uni-input {
-      height: 96upx;
-      line-height: 96upx;
-    }
-    .input-placeholder {
-      height: 40upx;
-      line-height: 40upx;
-      font-size: 28upx;
-      font-family: PingFangSC-Regular, PingFang SC;
-      font-weight: 400;
-      color: #C8C8C8;
-    }
-  }
-  .search-btn {
-    text-align: center;
-    font-size: 0;
-    margin: 52upx auto 48upx; 
-    image {
-      width: 530upx;
-      height: 122upx;
-      margin: 20upx auto;
-    }
-  }
-  .logo {
-    text-align: center;
-    font-size: 0;
-    image {
-      width: 151upx;
-      height: 167upx;
-    }
-  }
-}
-</style>

+ 0 - 187
src/pages/search/result.vue

@@ -1,187 +0,0 @@
-<template>
-  <view class='result-container'>
-    <view class="result-head"></view>
-    <view class="result-content">
-      <view class="result-info">
-        <view class="user" v-if="result.baby">
-          <view class="user-avatar text-center margin">
-            <image class="avatar-img cu-avatar round" :src="result.baby.headImg" mode="aspectFill" />
-          </view>
-          <view class="user-name">{{ result.baby.babyName }}</view>
-        </view>
-        <view class="result-item">
-          <view class="item-left">选手学校</view>
-          <view class="item-right">{{ result.school.schoolName }}</view>
-        </view>
-        <view class="result-item">
-          <view class="item-left">组别</view>
-          <view class="item-right">{{ result.classLevel | filterLevel }}</view>
-        </view>
-        <view class="result-item">
-          <view class="item-left">成绩</view>
-          <view class="item-right">{{ result.score }}分</view>
-        </view>
-        <view class="result-item">
-          <view class="item-left">用时</view>
-          <view class="item-right">{{ result.time | timeFormate }}</view>
-        </view>
-        <view class="result-item">
-          <view class="item-left">荣获</view>
-          <view class="item-right">{{ result.otherInfo }}</view>
-        </view>
-        <view class="result-footer">
-          <image src="/static/img/apply/logo01.png" mode="aspectFill" />
-        </view>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script>
-import { mapState } from 'vuex';
-import moment from 'moment';
-
-export default {
-  data() {
-    return {
-    }
-  },
-
-  onLoad() {
-  },
-
-  onShow() {},
-
-  filters: {
-    timeFormate(time) {
-      let timeStr = '';
-      let stringFormat = (i) => {
-          return i < 10 ? `0${i}` : `${i}`;
-      }
-      let minuteTime = 0;
-      let secondTime = 0;
-      let hourTime = 0;
-      if(time < 60) {
-          timeStr = `00分${stringFormat(time)}秒`
-      } else if(time >= 60 && time < 3600) {
-          minuteTime = parseInt(time / 60);
-          secondTime = parseInt(time % 60);
-          timeStr = `${stringFormat(minuteTime)}分${stringFormat(secondTime)}秒`;
-      } else if(time >= 3600) {
-          let _t = parseInt(time % 3600);
-          hourTime = parseInt(time / 3600);
-          minuteTime = parseInt(_t / 60);
-          secondTime = parseInt(_t % 60);
-          timeStr = `${stringFormat(hourTime)}时${stringFormat(minuteTime)}分${stringFormat(secondTime)}秒`
-      }
-      return timeStr;
-    },
-    filterLevel(val) {
-      switch (val){
-        case -1:
-          return '托班'
-        case 0:
-          return '小班'
-        case 1:
-          return '中班'
-        case 2:
-          return '大班'
-        default:
-          return '待定'
-      }
-    },
-  },
-  computed: {
-    ...mapState({
-      result: 'result'
-    })
-  },
-
-  methods: {
-    moment
-  }
-
-}
-</script>
-
-<style lang="scss" scope>
-page {
-  height: 100%;
-}
-.result-container {
-  min-height: 100%;
-  background: linear-gradient(180deg, #67DD5B, #72CF53);
-  .result-head {
-    background: url('@/static/img/apply/reslut_bg.png');
-    background-size: cover;
-    height: 326upx;
-  }
-  .result-content {
-    position: relative;
-    padding: 14upx 12upx;
-    background: #B6F9B6;
-    box-shadow: 0px 12upx 20upx 0px rgba(35, 211, 33, 0.37);
-    border-radius: 60upx;
-    margin: auto 30upx;
-    transform: translateY(-60upx);
-    .user {
-      text-align: center;
-      .user-avatar {
-        border: 1upx solid #38D736;
-        width: 140upx;
-        height: 140upx;
-        border-radius: 50%;
-        margin: 0 auto;
-        .avatar-img {
-          width: 140upx;
-          height: 140upx;
-          transform: translate(-6upx, -8upx);
-        }
-      }
-      .user-name {
-        font-size: 28upx;
-        font-family: PingFangSC-Semibold, PingFang SC;
-        font-weight: 600;
-        color: #333333;
-        line-height: 40upx;
-        margin: 28upx 0;
-      }
-    }
-  }
-  .result-info {
-    background: #ffffff;
-    height: 100%;
-    border-radius: 60upx;
-    padding: 34upx 28upx;
-    .result-item {
-      display: flex;
-      justify-content: space-between;
-      border-bottom: 2upx solid #F6F6F6;
-      padding: 28upx 0;
-      .item-left {
-        font-size: 28upx;
-        font-family: PingFangSC-Regular, PingFang SC;
-        font-weight: 400;
-        color: #999999;
-        line-height: 40upx;
-      }
-      .item-right {
-        font-size: 28upx;
-        font-family: PingFangSC-Regular, PingFang SC;
-        font-weight: 400;
-        color: #333333;
-        line-height: 40upx;
-      }
-    }
-  }
-  .result-footer {
-    margin: 36upx 12upx 0 0;
-    text-align: right;
-    font-size: 0;
-    image {
-      width: 44upx;
-      height: 58upx;
-    }
-  }
-}
-</style>

+ 0 - 1
src/static/css/colorui/main.css

@@ -11,7 +11,6 @@
         初始化
  ==================== */
 body {
-	background-color: #f9f9f9;
 	font-size: 28upx;
 	color: #333333;
 	font-family: Helvetica Neue, Helvetica, sans-serif;

BIN
src/static/img/about/about_img1.png


BIN
src/static/img/about/about_img10.png


BIN
src/static/img/about/about_img11.png


BIN
src/static/img/about/about_img12.png


BIN
src/static/img/about/about_img13.png


BIN
src/static/img/about/about_img14.png


BIN
src/static/img/about/about_img2.png


BIN
src/static/img/about/about_img3.png


BIN
src/static/img/about/about_img4.png


BIN
src/static/img/about/about_img5.png


BIN
src/static/img/about/about_img6.png


BIN
src/static/img/about/about_img7.png


BIN
src/static/img/about/about_img8.png


BIN
src/static/img/about/about_img9.png


BIN
src/static/img/apply/btn_search.png


BIN
src/static/img/apply/card_bg.png


BIN
src/static/img/apply/card_submit.png


BIN
src/static/img/apply/cjcx.png


BIN
src/static/img/apply/game_img.png


BIN
src/static/img/apply/game_item.png


BIN
src/static/img/apply/lock.png


BIN
src/static/img/apply/logo.png


BIN
src/static/img/apply/logo01.png


BIN
src/static/img/apply/pay_success.png


BIN
src/static/img/apply/pay_wait.png


BIN
src/static/img/apply/reslut_bg.png


BIN
src/static/img/apply/search_bg.png


BIN
src/static/img/apply/sign_logo.png


BIN
src/static/img/apply/sign_no.png


BIN
src/static/img/apply/status_active_btn.png


BIN
src/static/img/apply/status_btn.png


BIN
src/static/img/apply/success_red.png


BIN
src/static/img/apply/tab_bg.png


BIN
src/static/img/common/cancel.png


BIN
src/static/img/common/comfirm.png


BIN
src/static/img/common/empty_avatar.png


BIN
src/static/img/common/empty_page.png


BIN
src/static/img/common/logo.png


BIN
src/static/img/common/model_bg.png


BIN
src/static/img/common/model_close.png


BIN
src/static/img/common/model_sucess_bg.png


BIN
src/static/img/common/success.png


BIN
src/static/img/common/user.png


BIN
src/static/img/contact/bg.png


BIN
src/static/img/contact/down.png


BIN
src/static/img/contact/head_title.png


BIN
src/static/img/contact/icon_01.png


BIN
src/static/img/contact/icon_02.png


BIN
src/static/img/contact/icon_03.png


BIN
src/static/img/contact/icon_04.png


BIN
src/static/img/contact/icon_phone.png


BIN
src/static/img/contact/path1.png


BIN
src/static/img/contact/path2.png


BIN
src/static/img/contact/path3.png


BIN
src/static/img/contact/submit.png


BIN
src/static/img/contact/teach.png


BIN
src/static/img/index/ABC_A@3x.png


BIN
src/static/img/index/ABC_B@3x.png


BIN
src/static/img/index/ABC_G@3x.png


BIN
src/static/img/index/ABC_M@3x.png


BIN
src/static/img/index/apply_01.png


BIN
src/static/img/index/apply_02.png


BIN
src/static/img/index/apply_03.png


BIN
src/static/img/index/apply_03_01.png


BIN
src/static/img/index/apply_04.png


BIN
src/static/img/index/apply_btn.png


BIN
src/static/img/index/apply_btn_02.png


BIN
src/static/img/index/apply_btn_03.png


BIN
src/static/img/index/bg.png


BIN
src/static/img/index/cloud_index.png


BIN
src/static/img/index/cloud_submit.png


BIN
src/static/img/index/dec_box.png


BIN
src/static/img/index/entry01.png


BIN
src/static/img/index/entry02.png


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels