lex-xin 5 年之前
父节点
当前提交
d7d1a7022c
共有 44 个文件被更改,包括 566 次插入138 次删除
  1. 7 0
      babel.config.js
  2. 0 0
      dist/css/app.812dfc6b.css
  3. 0 0
      dist/css/app.9a316ef9.css
  4. 0 0
      dist/css/chunk-660d4768.9368ebe8.css
  5. 0 1
      dist/css/chunk-7250dad6.59e5c7d6.css
  6. 0 0
      dist/css/chunk-72e9aa3c.ceb293b1.css
  7. 1 0
      dist/css/chunk-c31fba8e.f6ad5df5.css
  8. 0 0
      dist/css/chunk-e81c9422.15349bdf.css
  9. 0 0
      dist/css/chunk-vendors.b61bf38e.css
  10. 0 0
      dist/css/chunk-vendors.e775c94a.css
  11. 0 0
      dist/index.html
  12. 0 0
      dist/js/app.54c794e4.js
  13. 0 0
      dist/js/app.54c794e4.js.map
  14. 0 0
      dist/js/app.e999aa4a.js
  15. 0 0
      dist/js/app.e999aa4a.js.map
  16. 0 0
      dist/js/chunk-3c8cb0e0.3242b9a7.js
  17. 0 0
      dist/js/chunk-3c8cb0e0.3242b9a7.js.map
  18. 0 0
      dist/js/chunk-660d4768.c2d07a73.js
  19. 0 0
      dist/js/chunk-660d4768.c2d07a73.js.map
  20. 0 0
      dist/js/chunk-7250dad6.bc91fc16.js
  21. 0 0
      dist/js/chunk-7250dad6.bc91fc16.js.map
  22. 0 0
      dist/js/chunk-72e9aa3c.f46503ed.js
  23. 0 0
      dist/js/chunk-72e9aa3c.f46503ed.js.map
  24. 2 0
      dist/js/chunk-c31fba8e.42fb6de7.js
  25. 0 0
      dist/js/chunk-c31fba8e.42fb6de7.js.map
  26. 0 0
      dist/js/chunk-e81c9422.ebae5acf.js
  27. 0 0
      dist/js/chunk-e81c9422.ebae5acf.js.map
  28. 0 0
      dist/js/chunk-vendors.813d34e4.js
  29. 0 0
      dist/js/chunk-vendors.813d34e4.js.map
  30. 0 0
      dist/js/chunk-vendors.e19120bc.js
  31. 0 0
      dist/js/chunk-vendors.e19120bc.js.map
  32. 10 0
      package-lock.json
  33. 1 0
      package.json
  34. 12 12
      src/assets/front_instruments_config.js
  35. 2 3
      src/main.js
  36. 6 0
      src/router.js
  37. 30 16
      src/views/Home.vue
  38. 123 23
      src/views/login.vue
  39. 95 0
      src/views/order.vue
  40. 50 35
      src/views/payment.vue
  41. 145 6
      src/views/protocol.vue
  42. 53 26
      src/views/register.vue
  43. 21 8
      src/views/smallProtocol.vue
  44. 8 8
      vue.config.js

+ 7 - 0
babel.config.js

@@ -1,5 +1,12 @@
 module.exports = {
   presets: [
     '@vue/app'
+  ],
+  plugins: [
+    ['import', {
+      libraryName: 'vant',
+      libraryDirectory: 'es',
+      style: true
+    }]
   ]
 }

文件差异内容过多而无法显示
+ 0 - 0
dist/css/app.812dfc6b.css


文件差异内容过多而无法显示
+ 0 - 0
dist/css/app.9a316ef9.css


文件差异内容过多而无法显示
+ 0 - 0
dist/css/chunk-660d4768.9368ebe8.css


+ 0 - 1
dist/css/chunk-7250dad6.59e5c7d6.css

@@ -1 +0,0 @@
-.register[data-v-fd1161f0]{margin-bottom:.3rem}header[data-v-fd1161f0]{height:.4rem;line-height:.4rem;color:#000;font-size:.17rem;background:#fff;-webkit-box-shadow:0 1px 8px 0 rgba(0,0,0,.07);box-shadow:0 1px 8px 0 rgba(0,0,0,.07);text-align:center;margin-bottom:.06rem}.banner[data-v-fd1161f0]{font-size:0}.banner img[data-v-fd1161f0]{width:100%}.reg-title[data-v-fd1161f0]{padding:0 .12rem;position:relative;height:.4rem;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#666;font-size:.14rem}.reg-title span[data-v-fd1161f0]{color:#9b9b9b}.reg-title .card_icon[data-v-fd1161f0]{display:inline-block;width:.23rem;height:.2rem;margin-right:.1rem;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAUCAYAAABmvqYOAAACFUlEQVRIS72TP2gTYRjGn+eOYKSm6uXUIbYglM7+WdxEHEVHwYKCOAnmNJqkLSjGQdqLreSSZtDBohQUxMlOKoog6OIoOghqGxThYhqkFM3dvZKUSpDr3Uml3/i+v/f5ft8LHxHh6Nb4kECZpoKaCDXXdfYsZEY/hY0yDGj3k1ZxjESfnc6d0CvXv0LkuH1u+HnYLLVyoVdVe7cHgeI6WQBDELyAwsMCnFQU9fVqM79cR5obPswxWSnWKEgFhgNfCPn2hxEOgEgEzginqZeLEvY8ADepKjMrnLieBWBviNBjJq1ii5QnES6IjAi4BcCPtnnTNvKbI09GALWyuZ/g1fUL7yld2xFn7FiQnKNwtpnOfQxifM21srmT4JnAl7syU88Mv2szWnWyj647BpG5emPpEgoFr1P/H2tJWuZtkqeWZXjUNnKPVg3fWhrvVxT1op+557kPGudHXnb3tIp5msJbAJoOuW9lXb7miYkJPRZzj/iFU1Ff1dPZ9+2ebpoJbGSGas8NcRYvC+Whq6hxel6qYeTvrWktumUeBPlMiFF6OADwjlCuAIjXjfwu33B9anIQnlPqNhfwft3I3+2uJafMQ/T4FAJbiFkhbEWQFWC+buT7fcO3VaubgKXd3UEtwfzC2exn3/BOUWoQEkQqMDzC5+sgyxKLA3/z7k+v9f3CyNs17TxMYt3C3wAyGGbzb31SiOpvlWIPRlUdpeMAAAAASUVORK5CYII=) no-repeat 50%;background-size:contain}.btn-group[data-v-fd1161f0]{margin:.3rem .3rem 0}.btn-group .btn-submit[data-v-fd1161f0]{background:#14928a;border-radius:1rem;color:#fff;font-size:.18rem}.van-cell[data-v-fd1161f0]{font-size:.16rem;padding:.13rem .11rem}[data-v-fd1161f0] .van-field--disabled .van-field__control{color:#444!important}.van-field__controll[data-v-fd1161f0]{color:#323233}

文件差异内容过多而无法显示
+ 0 - 0
dist/css/chunk-72e9aa3c.ceb293b1.css


+ 1 - 0
dist/css/chunk-c31fba8e.f6ad5df5.css

@@ -0,0 +1 @@
+.order[data-v-3ad5218c]{padding:.1rem .2rem}header[data-v-3ad5218c]{height:.4rem;line-height:.4rem;color:#000;font-size:.17rem;background:#fff;-webkit-box-shadow:0 1px 8px 0 rgba(0,0,0,.07);box-shadow:0 1px 8px 0 rgba(0,0,0,.07);text-align:center;margin-bottom:.06rem}h2[data-v-3ad5218c]{font-size:.16rem;color:#444}table[data-v-3ad5218c]{width:100%;text-align:center;border-color:#ccc}table tr[data-v-3ad5218c]{display:-webkit-box;display:-ms-flexbox;display:flex}table tr td[data-v-3ad5218c],table tr th[data-v-3ad5218c]{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}table tr td[data-v-3ad5218c]:first-child,table tr th[data-v-3ad5218c]:first-child{-webkit-box-flex:inherit;-ms-flex:inherit;flex:inherit;-ms-flex-preferred-size:0.3rem;flex-basis:0.3rem}

文件差异内容过多而无法显示
+ 0 - 0
dist/css/chunk-e81c9422.15349bdf.css


文件差异内容过多而无法显示
+ 0 - 0
dist/css/chunk-vendors.b61bf38e.css


文件差异内容过多而无法显示
+ 0 - 0
dist/css/chunk-vendors.e775c94a.css


文件差异内容过多而无法显示
+ 0 - 0
dist/index.html


文件差异内容过多而无法显示
+ 0 - 0
dist/js/app.54c794e4.js


文件差异内容过多而无法显示
+ 0 - 0
dist/js/app.54c794e4.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/js/app.e999aa4a.js


文件差异内容过多而无法显示
+ 0 - 0
dist/js/app.e999aa4a.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-3c8cb0e0.3242b9a7.js


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-3c8cb0e0.3242b9a7.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-660d4768.c2d07a73.js


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-660d4768.c2d07a73.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-7250dad6.bc91fc16.js


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-7250dad6.bc91fc16.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-72e9aa3c.f46503ed.js


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-72e9aa3c.f46503ed.js.map


+ 2 - 0
dist/js/chunk-c31fba8e.42fb6de7.js

@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-c31fba8e"],{"2b31":function(t,a,s){"use strict";var e=s("41f4"),n=s.n(e);n.a},"41f4":function(t,a,s){},dbf5:function(t,a,s){"use strict";s.r(a);var e=function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("div",{staticClass:"order"},[s("h2",[t._v("乐团名称:"+t._s(t.schoolName))]),s("div",{staticClass:"orderList"},[s("table",{attrs:{border:"1"}},[t._m(0),t._l(t.dataList,function(a,e){return s("tr",{key:a.id},[s("td",[t._v(t._s(++e))]),s("td",[t._v(t._s(a.userName))]),s("td",[t._v(t._s(a.amount))]),s("td",[t._v(t._s(a.payTime))])])})],2)])])},n=[function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("tr",[s("th"),s("th",[t._v("学生姓名")]),s("th",[t._v("支付金额")]),s("th",[t._v("到账时间")])])}],r=(s("7f7f"),s("4328")),o=s.n(r),i={name:"order",data:function(){return{classId:null,schoolName:null,dataList:{}}},mounted:function(){var t=this,a=this.$route.query.schoolId;axios.post("/user/getClassDetail",o.a.stringify({schoolId:a})).then(function(a){var s=a.data;t.schoolName=s.data.name,axios.post("/order/checkOrderList",o.a.stringify({classId:"",type:1})).then(function(a){t.dataList=a.data.data})})}},c=i,d=(s("2b31"),s("2877")),u=Object(d["a"])(c,e,n,!1,null,"3ad5218c",null);a["default"]=u.exports}}]);
+//# sourceMappingURL=chunk-c31fba8e.42fb6de7.js.map

文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-c31fba8e.42fb6de7.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-e81c9422.ebae5acf.js


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-e81c9422.ebae5acf.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-vendors.813d34e4.js


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-vendors.813d34e4.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-vendors.e19120bc.js


文件差异内容过多而无法显示
+ 0 - 0
dist/js/chunk-vendors.e19120bc.js.map


+ 10 - 0
package-lock.json

@@ -2122,6 +2122,16 @@
         "object.assign": "^4.1.0"
       }
     },
+    "babel-plugin-import": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.12.1.tgz",
+      "integrity": "sha512-3BwVJFEByTUyqZWOxizr/YwYcqqre2EebmgSUtXyToJbHzJv6rTxA0LApDntvwERlmIvcM6lUktUN0snMTjOsA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/runtime": "^7.0.0"
+      }
+    },
     "babel-plugin-module-resolver": {
       "version": "3.2.0",
       "resolved": "https://registry.npm.taobao.org/babel-plugin-module-resolver/download/babel-plugin-module-resolver-3.2.0.tgz",

+ 1 - 0
package.json

@@ -19,6 +19,7 @@
     "@vue/cli-service": "^3.10.0",
     "axios": "^0.18.0",
     "babel-eslint": "^10.0.1",
+    "babel-plugin-import": "^1.12.1",
     "eslint": "^5.16.0",
     "eslint-plugin-vue": "^5.0.0",
     "less": "^3.9.0",

+ 12 - 12
src/assets/front_instruments_config.js

@@ -14,20 +14,20 @@ let instruments = {
         name: '长笛',
         config: [
             {
-                default: 1, // 1 为默认配置
+                default: 0, // 1 为默认配置
                 name: '初级配置',
                 marketPrice: 3150,
                 referencePrice: 2680,
-                checked: true,
+                checked: false,
                 texture: '白铜管体',
                 index: 1
             },
             {
-                default: 0, 
+                default: 1, 
                 name: '标准配置',
                 marketPrice: 4500,
                 referencePrice: 3570,
-                checked: false,
+                checked: true,
                 texture: '进口镍白铜管体、法式键',
                 index: 2
             },
@@ -69,20 +69,20 @@ let instruments = {
         name: '单簧管',
         config: [
             {
-                default: 1, // 1 为默认配置
+                default: 0, // 1 为默认配置
                 name: '初级配置',
                 marketPrice: 3280,
                 referencePrice: 2780,
-                checked: true,
+                checked: false,
                 texture: '胶木',
                 index: 3
             },
             {
-                default: 0, 
+                default: 1, 
                 name: '标准配置',
                 marketPrice: 4580,
                 referencePrice: 3650,
-                checked: false,
+                checked: true,
                 texture: '聚碳酸酯、蓝钢针弹簧线',
                 index: 4
             },
@@ -138,20 +138,20 @@ let instruments = {
         name: '萨克斯管',
         config: [
             {
-                default: 1, // 1 为默认配置
+                default: 0, // 1 为默认配置
                 name: '初级配置',
                 marketPrice: 4200,
                 referencePrice: 3550,
-                checked: true,
+                checked: false,
                 texture: '/',
                 index: 5
             },
             {
-                default: 0, 
+                default: 1, 
                 name: '标准配置',
                 marketPrice: 6080,
                 referencePrice: 4500,
-                checked: false,
+                checked: true,
                 texture: '68铜、实心保护盖、蓝钢针弹簧线',
                 index: 6
             },

+ 2 - 3
src/main.js

@@ -4,10 +4,9 @@ import App from './App.vue'
 import store from './store'
 import router from './router'
 
-import Vant from 'vant'
-import 'vant/lib/index.css'
+import { Button, Popup, Toast, Dialog, Field, CellGroup, Cell, ActionSheet, DatetimePicker } from 'vant'
 
-Vue.use(Vant)
+Vue.use(Button).use(Popup).use(Toast).use(Dialog).use(Field).use(CellGroup).use(Cell).use(ActionSheet).use(DatetimePicker)
 
 Vue.config.productionTip = false
 

+ 6 - 0
src/router.js

@@ -45,6 +45,12 @@ export default new Router({
             path: '/register',
             name: 'register',
             component: () => import('./views/register.vue')
+        },
+        { 
+            // 订单列表
+            path: '/order',
+            name: 'order',
+            component: () => import('./views/order.vue')
         }
     ],
     scrollBehavior() {

+ 30 - 16
src/views/Home.vue

@@ -148,7 +148,7 @@
                      <span>¥{{ orderInfo.referencePrice }}</span>
                  </p>
              </div>
-             <a @click="buy">购买</a>
+             <a @click="onCheckSubmit">购买</a>
         </div>
 
         <van-popup id="protocolPopup" v-model="popupStatus" position="bottom">
@@ -205,6 +205,7 @@ export default {
         })).then((res) => {
             let r = res.data.data
             this.result = {
+                userId: r.id_, // 学生编号
                 payMethod: r.fee_type_,
                 subName: r.sub_name_,
                 grade: r.grade_,
@@ -219,11 +220,12 @@ export default {
             }
             // console.log(this.orderInfo)
             this.instrument = instruments[this.cnToEn(this.result.voicyPart)]
-            if(r.fee_type_ == 25 || r.fee_type_ == 26) {
-                this.instrument.config.forEach(el => {
-                    el.checked = false
-                })
-            }
+            
+            // if(r.fee_type_ == 25 || r.fee_type_ == 26) {
+            //     this.instrument.config.forEach(el => {
+            //         el.checked = false
+            //     })
+            // }
 
             let homeConfig = sessionStorage.getItem('homeConfig')
             if(homeConfig) {
@@ -273,9 +275,9 @@ export default {
         },
         instrumentF2(type, con) {
             // 1.5 3.0 才会显示协议
-            if((this.result.payMethod == 25 || this.result.payMethod == 26) && !con.checked && con.name != '自备') {
-                this.protocol()
-            }
+            // if((this.result.payMethod == 25 || this.result.payMethod == 26) && !con.checked && con.name != '自备') {
+            //     this.protocol()
+            // }
             
             // 专门针对25 26 收费类型写的方法
             for(let i = 0; i < this.instrument.config.length; i++) {
@@ -290,6 +292,21 @@ export default {
             // 重新计算金额
             this.calcPrice()
         },
+        onCheckSubmit() {
+            // 判断 1.5 3.0 弹协议 否则直接购买
+            let instrumentName
+            this.instrument.config.forEach(config => {
+                if(config.checked) {
+                    instrumentName = config.name
+                }
+            })
+            if(((this.result.payMethod == 25 && this.result.isCopperPipe) || this.result.payMethod == 26) && instrumentName != '自备') {
+                this.protocol()
+            } else {
+                this.buy()
+            }
+            
+        },
         buy() {
             // 确认购买
             let params = this.$route.query
@@ -364,22 +381,17 @@ export default {
         },
         protocol() {
             // 协议
-            // let tempMark = 0 // 临时原价数据
-            // this.instrument.config.forEach(config => {
-            //     if(config.checked) {
-            //         tempMark = config.marketPrice
-            //     }
-            // })
 
             let r = this.result
             let protocol = {
-                // marketPrice: tempMark, // 原价
                 patriarchName: r.patriarchName,
                 patriarchPhone: r.patriarchPhone,
                 stuName: r.stuName,
                 grade: r.grade,
                 subName: r.subName,
                 voicyPart: r.voicyPart,
+                userId: r.userId,
+                classAmount: r.classAmount,
                 payMethod: r.payMethod, // 缴费类型
                 isCopperPipe: r.isCopperPipe // 是否为铜管
             }
@@ -499,6 +511,8 @@ export default {
         onPopupClose(status) {
             document.querySelector('#protocolPopup').scroll(0, 0)
             this.popupStatus = false
+
+            this.buy()
         }
     }
 }

+ 123 - 23
src/views/login.vue

@@ -11,11 +11,15 @@
                 <i class="man_icon"></i>
                 <input type="number" v-model="dataList.phoneNumber" class="phone" pattern="[0-9]" placeholder="请输入手机号报名或查询进度">
             </div>
+            <!-- <div class="phoneSection">
+                <i class="man_icon"></i>
+                <input type="number" v-model="dataList.code" class="phone" pattern="[0-9]" placeholder="请输入验证码">
+                <span class="code_btn" :class="[codeStatus?'':'disable']" @click="sendCode">发送验证码</span>
+            </div> -->
         </div>
 
         <div class="btn-group">
-            <van-button size="large" @click="onSubmit" class="btn">{{ dataList.status == 2 ? '缴费' : '报名 / 查询进度' }}</van-button>
-            <!-- <van-button size="large" class="btn">查询进度</van-button> -->
+            <van-button size="large" @click="onSubmit" class="btn">注册</van-button>
         </div>
 
         <van-popup class="popup" v-model="popupStatus">
@@ -31,10 +35,21 @@
                 <van-button class="button" @click="popupStatus = false">确定</van-button>
             </div>
         </van-popup>
+
+        <van-popup class="popup-code" v-model="popupCodeStatus" :close-on-click-overlay="false">
+            <div class="code_section">
+                <h2 class="code_title">输入短信验证码</h2>
+                <div class="input-group">
+                    <input type="number" @keyup="checkCode()" v-model="dataList.code" class="phone" pattern="[0-9]" placeholder="请输入验证码">
+                    <span class="code_btn" :class="[codeStatus?'':'disable']" @click="sendCode">{{ smsText }}</span>
+                </div>
+            </div>
+        </van-popup>
     </div>
 </template>
 
 <script>
+/* eslint-disable */
 import { Button, Popup, Toast, Dialog } from 'vant'
 import qs from 'qs'
 export default {
@@ -43,13 +58,17 @@ export default {
     data() {
         return {
             popupStatus: false,
+            popupCodeStatus: false, // 发送验证码弹窗
+            smsText: '发送验证码',
             popupText: '',
+            codeStatus: true, // 是否可以发送验证码
             dataList: {
                 status: null,
                 schoolName: '', // 乐团名称
                 phoneNumber: '', // 手机号
                 branchId: '', // 分部编号
                 classId: '', // 乐团编号
+                code: '',  // 验证码
             }
         }
     },
@@ -64,6 +83,7 @@ export default {
                 status: result.data.status,
                 schoolName: result.data.name,
                 phoneNumber: '',
+                code: '',
                 branchId: result.data.branchId,
                 classId: result.data.id
             }
@@ -78,7 +98,6 @@ export default {
                 return false; 
             }
             let params = this.$route.query
-            console.log(this.dataList)
             axios.get(`/user/getUserDetailByPhone?clazzId=${this.dataList.classId}&phone=${this.dataList.phoneNumber}&cityId=${params.cityId}`).then((res) => {
                 let result = res.data
                 // 判断是否有数据
@@ -100,27 +119,8 @@ export default {
                                 }
                             })
                         }
-                        
                     } else {
-                        if(dataStatus >= 2) {
-                            Dialog.alert({
-                                title: '提示',
-                                message: '报名已截止,请联系教务老师',
-                                confirmButtonColor: '#269a93'
-                            })
-                        } else {
-                            this.$router.push({
-                                path: 'register',
-                                query: {
-                                    phone: this.dataList.phoneNumber,
-                                    cityId: params.cityId,
-                                    classId: this.dataList.classId,
-                                    schoolId: params.schoolId,
-                                    branchId: this.dataList.branchId
-                                }
-                            })
-                        }
-                        
+                        this.sendCode() // 发送短信
                     }
                 } else {
                     Dialog.alert({
@@ -131,6 +131,60 @@ export default {
                 }
             })
         },
+        checkCode() {
+            let params = this.$route.query
+            let code = this.dataList.code
+            if(code.length >= 6) {
+                axios.post('/user/verifySmsCode', qs.stringify({
+                    smsCode: code,
+                    mobile: this.dataList.phoneNumber
+                })).then(res => {
+                    let result = res.data
+                    if(result.status) {
+                         this.$router.push({
+                            path: 'register',
+                            query: {
+                                phone: this.dataList.phoneNumber,
+                                cityId: params.cityId,
+                                classId: this.dataList.classId,
+                                schoolId: params.schoolId,
+                                status: this.dataList.status, // 当前乐团状态
+                                schoolName: this.dataList.schoolName,
+                                branchId: this.dataList.branchId
+                            }
+                        })
+                    } else {
+                        Toast('验证码输入有误')
+                    }
+                })
+            }
+        },
+        sendCode() {
+            // 发送短信验证码
+            if(!this.codeStatus) {
+                return false
+            }
+            axios.get('/user/sendSmsCode?mobile=' + this.dataList.phoneNumber).then(res => {
+                this.popupCodeStatus = true // 开启弹窗
+                let result = res.data
+                this.codeStatus = false
+                this.CountDown()
+            })
+        },
+        CountDown() {
+            let s = 120
+            this.smsText = s + '秒'
+            let timer = setInterval(() => {
+                if(s <= 0) {
+                    this.codeStatus = true
+                    this.smsText = '发送验证码'
+                    clearInterval(timer)
+                } else {
+                    s--
+                    this.smsText = s + '秒'
+                }
+            }, 1000);
+        },
         statusList(index) {
             let statusText
             switch(index) {
@@ -157,6 +211,52 @@ export default {
     padding-top: .6rem;
     text-align: center
 }
+
+// 弹窗验证码
+.code_section {
+    width: 90vw; 
+    border-radius: .08rem;
+    padding-bottom: .15rem;
+    .code_title {
+        font-size: .16rem;
+        text-align: center;
+        padding: .1rem 0;
+        color: #444;
+    }
+    .input-group {
+        display: flex;
+        align-items: center;
+        justify-content: center;
+    }
+    .phone {
+        padding-left: .08rem;
+        height: .48rem;
+        line-height: .48rem;
+        background:rgba(244,244,244,1);
+        border: 1px solid #ccc;
+        border-top-left-radius:5px;
+        border-bottom-left-radius:5px;
+    }
+
+    .code_btn {
+        color: #fff;
+        font-size: .12rem;
+        height: .48rem;
+        line-height: .48rem;
+        background: #14928A;
+        // padding: .05rem .12rem;
+        text-align: center;
+        width: .84rem;
+        border-top-right-radius:5px;
+        border-bottom-right-radius:5px;
+        &.disable {
+            color: #fff;
+            background: #aaa;
+        }
+    }
+
+}
+
 .bandSection {
     padding: .5rem .28rem 0;
     .school {

+ 95 - 0
src/views/order.vue

@@ -0,0 +1,95 @@
+<template>
+    <div class="order">
+        <!-- <header>支付列表</header> -->
+        <h2>乐团名称:{{schoolName}}</h2>
+        <div class="orderList">
+            <table border="1">
+                <tr>
+                    <th></th>
+                    <th>学生姓名</th>
+                    <th>支付金额</th>
+                    <th>到账时间</th>
+                </tr>
+                <tr v-for="(data, index) in dataList" :key="data.id">
+                    <td>{{ ++index }}</td>
+                    <td>{{ data.userName }}</td>
+                    <td>{{ data.amount }}</td>
+                    <td>{{ data.payTime }}</td>
+                </tr>
+            </table>
+        </div>
+    </div>
+</template>
+
+<script>
+import qs from 'qs'
+export default {
+    name: 'order',
+    data() {
+        return {
+            classId: null,
+            schoolName: null,
+            dataList: {}
+        }
+    },
+    mounted() {
+        let schoolId = this.$route.query.schoolId
+        axios.post(`/user/getClassDetail`,qs.stringify({
+            schoolId: schoolId
+        })).then((response) => {
+            let result = response.data
+            this.schoolName = result.data.name
+            axios.post('/order/checkOrderList', qs.stringify({
+                classId: '',
+                type: 1
+            })).then(r => {
+                // console.log(r)
+                this.dataList = r.data.data
+            })
+        })
+
+        
+    }
+}
+</script>
+
+<style lang="less" scoped>
+.order {
+    padding: .1rem .2rem;
+}
+header {
+    height: .40rem;
+    line-height: .40rem;
+    color: #000;
+    font-size: .17rem;
+    background: #fff;
+    box-shadow: 0px 1px 8px 0px rgba(0,0,0,0.07);
+    text-align: center;
+    margin-bottom: .06rem;
+}
+h2 {
+    font-size: .16rem;
+    color: #444;
+}
+
+table {
+    width: 100%;
+    text-align: center;
+    border-color: #ccc;
+
+    tr {
+        display: flex;
+        th, td {
+            flex: 1;
+            text-align: center;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            &:first-child {
+                flex: inherit;
+                flex-basis: .3rem;
+            }
+        }
+    }
+}
+</style>

+ 50 - 35
src/views/payment.vue

@@ -47,7 +47,7 @@
                     <div class="ct_button_group">
                         <span @click="fixationTimer(t, c)" v-for="t in classTimer" :key="t.timer" :class="[t.status?'active':'']">{{ t.timer }}次</span>
                     </div>
-                    <input type="number" placeholder="输入次数" min="1" max="100" @keyup="onInputCheck(c)" v-model="c.inputNumber" class="inputTime" pattern="[0-9]">
+                    <input type="number" placeholder="输入次数" min="1" max="20" @keyup="onInputCheck(c)" v-model="c.inputNumber" class="inputTime" pattern="[0-9]">
                 </div>
             </div>
         </div>
@@ -63,7 +63,8 @@
                      <span>¥{{ orderInfo.referencePrice }}</span>
                  </p>
              </div>
-             <a @click="buy">购买</a>
+             <a @click="onCheckSubmit">购买</a>
+             <!-- <a @click="buy">购买</a> -->
         </div>
 
         <van-popup id="protocolPopup" v-model="popupStatus" position="bottom">
@@ -74,19 +75,19 @@
 </template>
 
 <script>
-// import { payment } from '../mockjs/payment.js'
-import { Dialog, Popup } from 'vant'
 import smallProtocol from './smallProtocol'
 import qs from 'qs'
+import { Dialog } from 'vant'
 export default {
     name: 'payment',
-    components: { Dialog, Popup, smallProtocol },
+    components: { smallProtocol, Dialog },
     data() {
         return {
             popupStatus: false, // 协议弹窗样式
             protocolData: {}, // 协议参数
             type: true,
             classInfo: [],
+            inputTimes: 0, // 输入次数
             // mainSubject: [], // 主课程
             // 金额列表,金额计算
             orderInfo: {
@@ -99,9 +100,6 @@ export default {
             },{
                 status: false,
                 timer: 20
-            },{
-                status: false,
-                timer: 40
             }]
         }
     },
@@ -186,7 +184,7 @@ export default {
                 if(c.classType == 1 && c.status) {
                     cour = {
                         courseId: c.courseId,
-                        buyCount: c.buyCount,
+                        buyCount: parseInt(this.inputTimes),
                         price: c.price
                     }
                     if(timer) {
@@ -198,6 +196,7 @@ export default {
                     configIndex = c.courseId
                 }
             })
+
             params.courses = JSON.stringify(cour)
             if(!record) {
                 Dialog.alert({
@@ -235,28 +234,7 @@ export default {
             })
         },
         onSelect(item) { // 选中哪个课程(大课还是小课)
-            // 小课需要弹出协议
-            let buyTimer 
-            this.classTimer.forEach(e => {
-                if(e.status) {
-                    buyTimer = e.timer
-                }
-            })  
-            if(item.classType == 1 && !item.status) {
-                let tempBuyCount = buyTimer ? buyTimer : item.inputNumber
-                this.protocolData = {
-                    userId: this.$route.query.userId,
-                    price: item.price,
-                    buyCount: tempBuyCount,
-                    classForm: item.classForm,
-                    className: item.className,
-                    subNames: item.subNames
-                }
-                this.popupStatus = true
-            }
-
             
-
             this.classInfo.forEach(e => {
                 e.status = false
             })
@@ -278,12 +256,15 @@ export default {
             }
         },
         onInputCheck(item) {
+
             if(item.inputNumber <= 1 ) {
                 item.inputNumber = 1
             }
-            if(item.inputNumber > 100) {
-                item.inputNumber = 100
+            if(item.inputNumber > 20) {
+                item.inputNumber = 20
             }
+
+            this.inputTimes = item.inputNumber
             this.calcAmount(item)
         },
         // 计算总金额
@@ -328,9 +309,43 @@ export default {
             strArr = strArr.join('和')
             return strArr
         },
+        onCheckSubmit() {
+            // 小课需要弹出协议
+            let buyTimer 
+            this.classTimer.forEach(e => {
+                if(e.status) {
+                    buyTimer = e.timer
+                }
+            }) 
+            let item 
+            this.classInfo.forEach(c => {
+                if(c.status) {
+                    item = c
+                }
+            })
+            let tempBuyCount 
+            if(item.classType == 2) {
+                tempBuyCount = item.buyCount
+            } else {
+                tempBuyCount = buyTimer ? buyTimer : parseInt(this.inputTimes)
+            }
+            this.protocolData = {
+                userId: this.$route.query.userId,
+                price: item.price,
+                buyCount: tempBuyCount,
+                classForm: item.classForm,
+                className: item.className,
+                subNames: item.subNames,
+                classType: item.classType
+            }
+            // console.log(this.protocolData)
+            this.popupStatus = true
+        },
         onPopupClose(status) {
-            document.querySelector('#protocolPopup').scroll(0, 0)
-            this.popupStatus = false
+            // document.querySelector('#protocolPopup').scroll(0, 0)
+            // this.popupStatus = false
+
+            this.buy()
         }
     }
 }
@@ -468,7 +483,7 @@ header {
         display: flex;
         justify-content: space-between;
         span {
-            width: 1rem;
+            width: 1.6rem;
             line-height: .36rem;
             text-align: center;
             background:rgba(255,255,255,1);

+ 145 - 6
src/views/protocol.vue

@@ -3,8 +3,105 @@
         <!-- <header> 
             <svg t="1565680265421" class="icon back" @click="goBack" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1100" width="200" height="200"><path d="M672 928c-8 0-16-3.2-22.4-9.6l-384-384c-12.8-12.8-12.8-32 0-44.8l384-384c12.8-12.8 32-12.8 44.8 0 12.8 12.8 12.8 32 0 44.8L332.8 512l361.6 361.6c12.8 12.8 12.8 32 0 44.8-6.4 6.4-14.4 9.6-22.4 9.6z" p-id="1101"></path></svg>
             领用协议</header> -->
- 
-        <div class="container">
+
+        <div class="container" v-if="proto.payMethod == 26">
+            <h1>《课程服务协议》</h1>
+            甲方:深圳大雅乐盟网络教育股份有限公司 <br/>
+            <div style="display: flex;">乙方:
+                <div style="flex: 1 auto;">
+                    <div class="iInfo">
+                        <span>家长姓名 {{ dataList.patriarchName }}</span>
+                        <span>电话:{{ dataList.patriarchPhone }}</span>
+                    </div>
+                    <!-- <div class="iInfo">
+                        <span>单位: {{ dataList.pCompany }}</span>
+                    </div> -->
+                    <div class="iInfo">
+                        <span>学生姓名:{{ dataList.stuName }}</span>
+                        <span>所在班级:{{ dataList.grade }}</span>
+                    </div>
+                    <div class="iInfo">
+                        <span>所在声部:{{ proto.stuName }}</span>
+                    </div>
+                </div>
+            </div>  
+            为进一步提升器乐教学质量和服务品质,保证学员学习进度,明确培训各方的权责,经甲、乙双方协商一致,特订立本协议,以便共同遵守。
+
+            <h2>一、课程信息</h2>
+            
+            <div class="iInfo">
+                <span>授课内容:乐团课</span>
+                <span>缴费金额:¥{{ proto.classAmount }}</span>
+            </div>
+            <!-- <div class="iInfo">
+                <span>课次数量:{{ proto.buyCount }}次</span>
+                <span>缴费金额:¥{{ proto.buyCount * proto.price }}</span>
+            </div> -->
+
+            <h2>二、行为规范</h2>
+            乙方在选择甲方各类提高课程并签署本协议时视为乙方已经仔细阅读并同意遵守如下事项:
+                <h3>1.报名</h3>
+            1.1无论是否源自指导老师或教务老师的建议,乙方选择参加甲方的课程,包括对授课形式、授课内容的选择,均为乙方自主意愿的表达及独立自主的选择。<br/>
+            1.2乙方应在所选课程开始前完成相应课程缴费,并完成报名手续。
+            <h3>2.上课</h3>
+            2.1乙方应按时到达甲方指定上课地点,作好课前准备;如发生迟到、或因自身原因早退等情况的,为避免影响老师后续课程的正常进行,授课老师除完成原定时间安排的授课外,将不再提供额外延长课时。<br/>
+            2.2乙方(含学员,下同)不得携带任何食品进入教室,所有进食应在课前完成;进入教室后,不得大声喧哗、追逐嬉戏,应当听从授课老师的安排;乙方应爱护公共财产和教学设施,严禁在桌椅上刻、划、涂、写等不文明行为;乙方未经授课老师同意,不得擅自使用教室内的乐器、音响、电视、空调等器材、设施,如造成此类器材、设施损坏的,乙方应照价赔偿。<br/>
+            2.3未经授课老师同意,乙方家长不得进入课堂,以免影响老师和学员上课;为保证训练质量及进度,学员应保证按照指导老师或教务老师所提出的要求在家练习,遇到专业问题应及时向指导老师请教,非专业问题可随时向教务老师反映。<br/>
+            2.4乙方家长应教育及监督学员务必注意个人安全,妥善保管个人财物,对于非甲方原因造成的人身安全事故或财物损失,由责任人自行承担。
+            <h3>3请假、休会及扣费</h3>
+            3.1基于教学进度和质量保证,本课程对于课程的延续性有严格要求,因此乙方应尽量避免请假。<br/>
+            3.2一对一课程有特殊情况需要请假的,应提前24小时以上以书面形式告知对应的授课老师,以便及时调整时间安排;一对多课程,不接受任何个人单独请假,如果集体请假,应提前24小时以上以书面形式告知对应的授课老师,未按本协议约定请假则当次课程视同已经教授,系统将自动结算课时并扣除相应费用。乙方请假后,应尽快预约补课时间完成补课。<br/>
+            3.3一对一课程以及一对二课程,乙方如遇特殊情况时,可向甲方或授课老师】申请办理临时休课。乙方可在6个月内申请复学,超过6个月未申请复课的,甲方有权按自动退会处理。一对二课程申请临时休课的,还需征得同组学员同意后方可申请休课。<br/>
+            3.4每期课程相对应的有效期,乙方应在有效期内完成课程,10次课一期的,自交费之日起4个月内有效;20次课一期的,自交费之日起8个月内有效;40次课一期的,自交费之日起16个月内有效。如果由于指导老师请假等原因造成课程不能如期完成的,课程有效期将顺延;如课程超出有效期限,乙方所缴纳的课程费用将自动扣除逾期未完成的课时后自动清零。<br/>
+
+            <h2>三、退费</h2>
+            1、一对一课程开课后,乙方要求退费的,乙方应在课程有效期内提出申请,甲方扣除报名费及未授课部分对应学费的20%后,将余款(不计息,下同)退还给乙方;如果乙方报名时享受打折优惠的,甲方先按照原价计算当期已上课时学费,再扣除报名费及未授课部分学费的20%后,将余款退还给乙方。<br/>
+            2、一对二课程开课后,乙方要求退费的,乙方应在课程有效期内提出申请,甲方扣除报名费及未授课部分的学费30%后,将余款退还给乙方;如果乙方报名时享受了打折优惠的,甲方先按照原价计算当期已上课时学费,再扣除报名费及未授课部分学费的30%后,将余款退还给乙方。<br/>
+            3、除一对一课程以及一对二课程之外的其他课程,课程开课后,甲方不接受任何原因的退款申请。<br/>
+            4、甲方所有收费,均向乙方开具加盖公司印章的收款凭据,乙方务必妥善保管,乙方按照本协议约定退费时,应向甲方出具该收费凭据原件方可办理。<br/>
+
+            <h2>四、违约责任</h2>
+            1、当事人一方不履行合同义务或者履行合同义务不符合约定的,均构成违约,守约方有权以书面通知的方式要求违约方纠正其违约行为并采取及时、有效的补救措施消除违约后果,并赔偿守约方因违约方之违约行为而遭致的损失。若违约方在收到守约方的上述通知后5日内未纠正其违约行为的,守约方有权在做出书面通知的情况下,单方解除本协议,违约方应赔偿守约方因此遭致的全部损失。<br/>
+            2、乙方应始终维护甲方的知识产权以及品牌形象,本协议期间以及本协议因任何原因失效、被撤销、解除或终止后,均不得直接或间接通过任何公众媒体(包括但不限于传统大众媒体,以及微信、微博、博客、直播平台等社交平台)发表损害甲方(包括但不限于其产品、服务及甲方授课老师)声誉的言论或实施任何类似行为,否则乙方应赔偿甲方因此遭受的全部损失。<br/>
+
+            <h2>五、保密条款</h2>
+            1、双方对本协议的条款、本协议的签订及履行情况以及通过签订和履行本协议而获知的对方及对方关联公司的任何信息均负有保密义务。任何一方不得以任何形式透露给第三方(有关法律法规要求和甲乙双方的法律、会计顾问、授权雇员除外),也不得擅自使用。<br/>
+            2、本保密义务期限不受本协议期限的限制。本协议失效、被撤销、解除或终止等任何情况下,双方均应遵守本保密义务。<br/>
+
+            <h2>六、不可抗力</h2>
+            1、一方遇到不可抗力事件(指甲乙双方无法控制、无法预见或即使预见也无法避免的事件,该事件妨碍、影响或延误任何一方履行本协议的全部或部分义务,该事件包括但不限于自然灾害(如水灾、地震等)、火灾、政府行为、法律或政策变化(含学校合作变化)、战争或其他任何类似事件)时,受影响方应当立即书面通知对方,并告知该不可抗力事件对本协议可能产生的影响,并在该不可抗力事件发生后5日内向对方提供该事件的详细信息及由有关机构出具的解释受影响方因此无法履行本协议项下全部或部分义务的相关证明。<br/>
+            2、由于上述不可抗力事件致使受影响方无法履行或无法按时履行本协议项下全部或部分义务的,双方于彼此间均不承担违约责任,但双方应在相互信任的基础上协商解决,尽力减少不可抗力事件对本协议的影响,并采取合理方式进行调整(包括但不限于另行签订补充协议等),尽量避免损失的扩大。<br/>
+            3、不可抗力事件消失或结束后,除双方另行协商一致外,受到不可抗力影响的一方应当立即采取措施继续履行本协议,如不可抗力事件持续30日以上的,则任何一方有权以书面通知对方的方式单方解除本协议。<br/>
+
+            <h2>七、适用法律及争议解决方式</h2>
+            1、本协议的订立、效力、履行、解释及争议解决均适用中华人民共和国法律。<br/>
+            2、因履行本协议发生的一切争议,甲乙双方应友好协商解决;如双方在发生争议后30日内无法通过协商解决时,任何一方有权向甲方所在地有管辖权的人民法院提起诉讼解决。<br/>
+
+            <h2>八、其他</h2>
+            1、乙方同意,甲方有权在乙方学习和活动期间对其拍摄照片、视频,甲方对所拍摄的照片、视频有永久免费使用权。<br/>
+            2、未经甲方事先书面同意,乙方不得将本课程转让给乙方以外的任何第三方。<br/>
+            3、双方确认并同意,本协议的电子版本与纸质版本具有同等法律效力。双方发生争议时,电子合同打印件可作为证据提交。双方通过网络以在线方式签订本协议的 ,则以乙方点击“确认”或“同意”等相关按钮或以电子签名的方式作为对合同内容的同意、确认以及本协议的签署;如双方签订纸质版本协议的,则本协议壹式贰份,甲方盖公章或合同专用章并且乙方签字作为有效签署方式,并且双方各执壹份,每份具有同等法律效力。<br/>
+            4、本协议自双方按照本协议约定方式签署之日起生效,有效期至双方履行完本协议约定的全部义务时止。<br/>
+            5、本协议未尽事宜或对本协议的任何修改、补充,有双方另行协商后以签订补充协议的方式解决,补充协议与本协议具有同等法律效力;双方没有约定也没有协商一致的,遵照相关法律法规规定执行。<br/>
+            双方因履行本协议而相互发出或者提供的所有通知、文件、资料,均以本协议中所列明的电话、APP推送消息送达,乙方如果变更电话号码的,应当自变更后1日内通知甲方且获得甲方确认,甲方通过电话、APP方式无法联系乙方或者甲方认为必要时,甲方也可以通过特快专递至乙方住址的方式向乙方发出上述任何通知、文件、资料等,并在甲方寄出特快专递后第5日视为送达成功。<br/>
+
+            <div class="signature">
+                <div class="sign">甲方签章 <img class="cachet" src="../assets/cachet.png" alt=""> 
+                    <span>{{nowDate}}</span>
+                </div>
+                <div class="sign">乙方签字:{{ dataList.realName }}
+                    <span> {{ nowDate }} </span>
+                </div>
+            </div>
+        </div>
+
+        <div v-if="proto.payMethod == 26">
+            <br />
+            <br />
+            <hr />
+        </div>
+
+        <div class="container" v-if="proto.payMethod == 25 || proto.payMethod == 22">
             <h1>《乐器借用协议》</h1>
             甲方:深圳大雅乐盟网络教育股份有限公司 <br/>
             <div style="display: flex;">乙方:
@@ -73,12 +170,14 @@
                 </div>
             </div>
 
-            <div class="btnback" @click="goBack">我同意</div>
+            
         </div>
+        <div class="btnback" @click="goBack">我同意</div>
     </div>
 </template>
 
 <script>
+import qs from 'qs'
 export default {
     name: 'protocol',
     props: ['proto'],
@@ -97,18 +196,53 @@ export default {
             //     referencePrice: '',
             //     marketPrice: ''
             // }
+            params: this.proto,
+            dataList: {},
             nowDate: ''
         }
     },
     mounted() {
         // window.scroll(0,0)
         let tempDate = new Date()
+        console.log(this.params)
         this.nowDate = tempDate.getFullYear() + '年' + (tempDate.getMonth() + 1) + '月' + tempDate.getDate() + '日'
-        
+        axios.post('/user/findMecUser', qs.stringify({userId: this.params.userId})).then(res => {
+            this.dataList = res.data.data
+        })
     },
     methods: {
         goBack() {
             this.$emit('popupClose', false)
+        },
+        classForm(number) {
+            let resultStr
+            switch(number) {
+                case 1001:
+                    resultStr = '1V1'
+                break;
+                case 2002:
+                    resultStr = '1V2'
+                break;
+                case 3003:
+                    resultStr = '1V3'
+                break;
+                case 4004:
+                    resultStr = '1V4'
+                break;
+                case 5005:
+                    resultStr = '1V5'
+                break;
+                case 6020:
+                    resultStr = '小组课'
+                break;
+                case 21099:
+                    resultStr = '大课'
+                break;
+                case 999999:
+                    resultStr = '团体课'
+                break;
+            }
+            return resultStr
         }
     }
 }
@@ -145,6 +279,11 @@ export default {
             font-weight: bold;
             padding-top: .15rem;
         }
+        h3 {
+            font-size: .14rem;
+            font-weight: bold;
+        }
+
 
         .signature {
             display: flex;
@@ -184,8 +323,8 @@ export default {
         -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.19);
         box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.19);
         padding: 0.08rem 0;
-        margin-top: .8rem;
-        width: 100%;
+        width: 90%;
+        margin: .3rem 5%;
         text-align: center;
     }
 </style>

+ 53 - 26
src/views/register.vue

@@ -10,13 +10,13 @@
         </div>
 
         <van-cell-group>
-            <van-field label="姓名" placeholder="请输入姓名" v-model="stu.name"></van-field>
-            <van-cell title="性别" v-model="stu.sex" @click="onChange('sex')" is-link value="请选择"></van-cell>
-            <van-cell title="生日" v-model="stu.birthday" @click="birthdayStatus = true" is-link value="请选择"></van-cell>
-            <van-field label="城市" disabled="true" placeholder="" v-model="stu.city"></van-field>
-            <van-cell title="学校" v-model="stu.school" @click="onChange('school')" is-link value="请选择"></van-cell>
-            <van-cell title="年级" v-model="stu.class" @click="onChange('class')" is-link value="请选择"></van-cell>
-            <van-field label="班级" placeholder="请输入班级" v-model="stu.grade"></van-field>
+            <van-field required label="姓名" placeholder="请输入姓名" v-model="stu.name"></van-field>
+            <van-cell required title="性别" v-model="stu.sex" @click="onChange('sex')" is-link value="请选择"></van-cell>
+            <van-cell required title="生日" v-model="stu.birthday" @click="birthdayStatus = true" is-link value="请选择"></van-cell>
+            <van-field required disabled label="乐团" placeholder="" v-model="stu.band"></van-field>
+            <!-- <van-cell title="学校" v-model="stu.school" @click="onChange('school')" is-link value="请选择"></van-cell> -->
+            <van-cell required title="年级" v-model="stu.class" @click="onChange('class')" is-link value="请选择"></van-cell>
+            <van-field required label="班级" placeholder="请输入班级" v-model="stu.grade"></van-field>
         </van-cell-group>
 
         <div class="reg-title">
@@ -24,8 +24,8 @@
         </div>
 
         <van-cell-group>
-            <van-cell title="声部" v-model="stu.major" @click="onChange('major')" is-link value="请选择"></van-cell>
-            <van-cell title="是否服从调配" v-model="stu.adjust" @click="onChange('adjust')" is-link value="请选择"></van-cell>
+            <van-cell required title="声部" v-model="stu.major" @click="onChange('major')" is-link value="请选择"></van-cell>
+            <van-cell required title="是否服从调配" v-model="stu.adjust" @click="onChange('adjust')" is-link value="请选择"></van-cell>
         </van-cell-group>
 
         <div class="reg-title">
@@ -33,8 +33,8 @@
         </div>
 
         <van-cell-group>
-            <van-field label="家长" placeholder="请输入家长姓名" v-model="stu.patriarch"></van-field>
-            <van-field label="手机" placeholder="请输入手机号" v-model="stu.phone"></van-field>
+            <van-field required label="家长" placeholder="请输入家长姓名" v-model="stu.patriarch"></van-field>
+            <van-field required disabled label="手机" placeholder="请输入手机号" v-model="stu.phone"></van-field>
             <van-field label="单位" placeholder="请输入单位名称" v-model="stu.company"></van-field>
         </van-cell-group>
 
@@ -42,10 +42,9 @@
             <van-button class="btn-submit" @click="onSubmit" size="large">提交</van-button>
         </div>
 
-       <van-action-sheet
+       <van-action-sheet :class="[selectName=='class'?'height3':'']"
             v-model= "sheetStatus"
             :actions= "sheetActions"
-            cancel-text= "取消"
             @select= "onSelect"
             @cancel= "sheetStatus = false"
         />
@@ -81,7 +80,8 @@ export default {
                 sex: '请选择', // 性别
                 birthday: '请选择', // 生日
                 city: '请选择', // 城市
-                school: '请选择', // 学校
+                band: '',// 乐团
+                school: '', // 学校
                 class: '请选择', // 年级
                 grade: '', // 班级
                 major: '请选择', // 专业
@@ -100,18 +100,24 @@ export default {
             sheetActions: [], // 上拉列表数据展示
             dataList: { // 上拉列表数据列表
                 sex: [{ name: '男', index: 0 }, {name: '女', index: 1}],
-                school: [
-                    { name: '小学' },
-                    { name: '初中' },
-                    { name: '高中' },
-                ],
+                // school: [
+                //     { name: '小学' },
+                //     { name: '初中' },
+                //     { name: '高中' },
+                // ],
                 class: [
                     { name: '一年级' },
                     { name: '二年级' },
                     { name: '三年级' },
                     { name: '四年级' },
                     { name: '五年级' },
-                    { name: '六年级' }
+                    { name: '六年级' },
+                    { name: '初一/七年级' },
+                    { name: '初二/八年级' },
+                    { name: '初三/九年级' },
+                    { name: '高一' },
+                    { name: '高二' },
+                    { name: '高三' },
                 ],
                 adjust: [{ name: '是', index: 1 }, {name: '否', index: 0}],
             }
@@ -121,6 +127,7 @@ export default {
         let params = this.$route.query
         this.stu.phone = params.phone
         this.stu.city = cityName(params.cityId)
+        this.stu.band = params.schoolName
         let arr = []
         axios.post('/user/getCourses', qs.stringify({clazzId: params.classId})).then((res) => {
             (res.data.data).forEach(element => {
@@ -209,11 +216,24 @@ export default {
                         message: '恭喜您,已报名成功',
                         confirmButtonColor: '#269a93'
                     }).then(() => {
-                        // 跳转到登录页面
-                        this.$router.push({ path: 'login', query: {
-                            schoolId: params.schoolId, // 学校编号
-                            cityId: params.cityId // 城市编号
-                        } })
+                        // 判断是否开启缴费
+                        if(params.status == 2) {
+                            this.$router.push({
+                                path: 'home',
+                                query: {
+                                    branchId: params.branchId,
+                                    stuId: result.data,
+                                    classId: params.classId
+                                }
+                            })
+                        } else {
+                            // 跳转到登录页面
+                            this.$router.push({ path: 'login', query: {
+                                schoolId: params.schoolId, // 学校编号
+                                cityId: params.cityId // 城市编号
+                            }})
+                        }
+                        
                     })
                 } else {
                     Toast(result.msg)
@@ -226,7 +246,7 @@ export default {
                 name: '请输入姓名',
                 sex: '请选择性别', // 性别
                 birthday: '请选择生日', // 生日
-                school: '请选择学校', // 学校
+                // school: '请选择学校', // 学校
                 class: '请选择年级', // 年级
                 grade: '请输入班级', // 班级
                 major: '请选择专业', // 专业
@@ -251,6 +271,10 @@ export default {
     margin-bottom: .3rem;
 }
 
+.height3 {
+    height: 3rem;
+}
+
 header {
     height: .40rem;
     line-height: .40rem;
@@ -307,6 +331,9 @@ header {
 /deep/.van-field--disabled .van-field__control {
     color: #444 !important;
 }
+/deep/.van-field__label, /deep/.van-cell__title {
+    padding-left: .08rem;
+}
 // .van-field--disabled {
     .van-field__controll {
          color: #323233;

+ 21 - 8
src/views/smallProtocol.vue

@@ -13,9 +13,9 @@
                         <span>家长姓名 {{ dataList.pName }}</span>
                         <span>电话:{{ dataList.mobile }}</span>
                     </div>
-                    <div class="iInfo">
+                    <!-- <div class="iInfo">
                         <span>单位: {{ dataList.pCompany }}</span>
-                    </div>
+                    </div> -->
                     <div class="iInfo">
                         <span>学生姓名:{{ dataList.realName }}</span>
                         <span>所在班级:{{ dataList.class }}</span>
@@ -29,13 +29,26 @@
 
             <h2>一、课程信息</h2>
             
-            <div class="iInfo">
-                <span>授课内容:个别提高课</span>
-                <span>授课形式:{{ classForm(proto.classForm) }}</span>
+            <div v-if="proto.classType == 1">
+                <div class="iInfo">
+                    <span>授课内容:个别提高课</span>
+                    <span>授课形式:{{ classForm(proto.classForm) }}</span>
+                </div>
+                <div class="iInfo">
+                    <span>课次数量:{{ proto.buyCount }}次</span>
+                    <span>缴费金额:¥{{ proto.buyCount * proto.price }}</span>
+                </div>
             </div>
-            <div class="iInfo">
-                <span>课次数量:{{ proto.buyCount }}次</span>
-                <span>缴费金额:¥{{ proto.buyCount * proto.price }}</span>
+
+            <div v-if="proto.classType == 2">
+                <div class="iInfo">
+                    <span>授课内容:乐团课</span>
+                    <span>缴费金额:¥{{ proto.buyCount * proto.price }}</span>
+                </div>
+                <!-- <div class="iInfo">
+                    <span>课次数量:{{ proto.buyCount }}次</span>
+                    <span>缴费金额:¥{{ proto.buyCount * proto.price }}</span>
+                </div> -->
             </div>
 
             <h2>二、行为规范</h2>

+ 8 - 8
vue.config.js

@@ -7,17 +7,17 @@ module.exports = {
         // 查阅 https://github.com/vuejs/vue-doc-zh-cn/vue-cli/cli-service.md#配置代理
         proxy: {
             '/user': {
-                // target: 'https://pay.dayaedu.com',
-                target: 'http://192.168.3.38:9000',
-                // target: 'http://192.168.3.27:9000',
+                target: 'http://testpay.dayaedu.com',
+                // target: 'http://192.168.3.38:9000',
+                // target: 'http://192.168.3.28:8005',
                 changeOrigin: true,
                 ws: true,
                 '^/user': '/user',
                 xfwd: true
             },
             '/yqpay': {
-                // target: 'https://pay.dayaedu.com',
-                target: 'http://192.168.3.38:9000',
+                target: 'http://testpay.dayaedu.com',
+                // target: 'http://192.168.3.38:9000',
                 // target: 'http://192.168.3.28:8005',
                 changeOrigin: true,
                 ws: true,
@@ -25,12 +25,12 @@ module.exports = {
                 xfwd: true
             },
             '/order': {
-                target: 'http://192.168.3.38:9000',
-                // target: 'http://192.168.3.27:9000',
+                target: 'http://testpay.dayaedu.com',
+                // target: 'http://192.168.3.38:9000',
                 // target: 'http://192.168.3.28:8005',
                 changeOrigin: true,
                 ws: true,
-                '^/yqpay': '/yqpay',
+                '^/order': '/order',
                 xfwd: true
             }
         }, // string | Object

部分文件因为文件数量过多而无法显示