Ver Fonte

Merge branch 'master' of http://git.cc-lotus.info/ball-court/ball-applet

YY há 2 anos atrás
pai
commit
a065c5ce58

+ 1 - 1
pages/scoach/add.js

@@ -17,7 +17,7 @@ Page({
     initValidate() {
         const rules = { icon: { required: true }, name: { required: true }, gender: { required: true }, age: { required: true }, phone: { required: true, tel: true } }
         // 验证字段的提示信息,若不传则调用默认的信息
-        const messages = { icon: { required: '请选择头像', }, name: { required: '请输入用户姓名', }, gender: { required: '请选择性别', }, age: { required: '请输入年龄', }, phone: { required: '请输入手机号', } };
+        const messages = { icon: { required: '请选择头像', }, name: { required: '请输入用户姓名', }, gender: { required: '请选择性别', }, age: { required: '请输入年龄', }, phone: { required: '请输入联系电话', } };
         this.WxValidate = new WxValidate(rules, messages)
     },
     // 返回

+ 5 - 0
pages/scoach/add.less

@@ -17,6 +17,11 @@
             .value {
                 flex-grow: 1;
                 color: var(--blackColor);
+
+                textarea {
+                    position: static;
+                    width: 73vw;
+                }
             }
         }
     }

+ 5 - 5
pages/scoach/add.wxml

@@ -20,27 +20,27 @@
                             <view class="label">性别:</view>
                             <view class="value">
                                 <picker mode="selector" bindchange="genderChange" name="gender" value="{{form.gender}}" range="{{genderList}}" range-key="label">
-                                    <view class="picker">{{form.gender=='0'?'男':form.gender=='1'?'女':form.gender=='2'?'未知':'请选择性别'}}</view>
+                                    <view class="picker">{{form.zhGender||'请选择性别'}}</view>
                                 </picker>
                             </view>
                         </view>
                         <view class="content">
                             <view class="label">年龄:</view>
                             <view class="value">
-                                <input name="age" value="{{form.age}}" placeholder="请输入年龄" />
+                                <input type="number" name="age" value="{{form.age}}" placeholder="请输入年龄" />
                             </view>
                         </view>
                         <view class="content">
-                            <view class="label">手机号:</view>
+                            <view class="label">联系电话:</view>
                             <view class="value">
-                                <input name="phone" maxlength="11" value="{{form.phone}}" placeholder="请输入手机号" />
+                                <input type="number" name="phone" maxlength="11" value="{{form.phone}}" placeholder="请输入联系电话" />
                             </view>
                         </view>
                         <view class="content">
                             <view class="label">教练等级:</view>
                             <view class="value">
                                 <picker mode="selector" bindchange="coachChange" name="level" value="{{form.level}}" range="{{levelList}}" range-key="label">
-                                    <view class="picker">{{form.level=='0'?'助教':form.level=='1'?'专业一级':form.level=='2'?'专业二级':'请选择教练等级'}}</view>
+                                    <view class="picker">{{form.zhLevel||'请选择教练等级'}}</view>
                                 </picker>
                             </view>
                         </view>

+ 4 - 0
pages/scoach/add.wxss

@@ -18,6 +18,10 @@
   flex-grow: 1;
   color: var(--blackColor);
 }
+.main .one .content .value textarea {
+  position: static;
+  width: 73vw;
+}
 .main .btn {
   text-align: center;
   margin: 5vw 0 0 0;

+ 31 - 2
pages/scoach/list.js

@@ -1,4 +1,5 @@
 const app = getApp()
+import QRCode from '../../utils/weapp-qrcode.js';
 Page({
 
     /**
@@ -11,6 +12,9 @@ Page({
         page: 0,
         skip: 0,
         limit: 5,
+        // dialog弹框
+        dialog: { title: '账号绑定', show: false, type: '1' },
+        form: {}
     },
     // 返回
     back: function () {
@@ -51,10 +55,35 @@ Page({
         })
     },
     // 绑定账号
-    toBind: function (e) {
+    toBind: async function (e) {
         const that = this;
         let { item } = e.currentTarget.dataset;
-        console.log(item);
+        const arr = await app.$get(`/coach/${item.id}`);
+        if (arr.errcode == '0') {
+            that.setData({ form: arr.data })
+            // 生成二维码
+            that.makeQRCode();
+            that.setData({ dialog: { title: '账号绑定', show: true, type: '1' } })
+        } else { wx.showToast({ title: `${arr.errmsg}`, icon: 'error', duration: 2000 }) }
+    },
+    makeQRCode(template = 0) {
+        const that = this;
+        const url = `${app.globalData.publicUrl}/courtappbind?id=${that.data.form.id}&type='2'`;
+        var qrcode = new QRCode(`myQrcode`, {
+            text: url,
+            width: 110,
+            height: 110,
+            padding: 3,
+            colorDark: "#000000",
+            colorLight: "#ffffff",
+            correctLevel: QRCode.CorrectLevel.L,
+        });
+    },
+    // 关闭弹框
+    toClose: function () {
+        const that = this;
+        that.setData({ form: {} })
+        that.setData({ dialog: { title: '账号绑定', show: false, type: '1' } })
     },
     // 分页
     toPage: function () {

+ 3 - 2
pages/scoach/list.json

@@ -1,6 +1,7 @@
 {
     "component": true,
     "usingComponents": {
-      "mobile-main": "/commpents/mobile-frame/index"
+        "mobile-main": "/commpents/mobile-frame/index",
+        "dialog": "/commpents/dialog/index"
     }
-  }
+}

+ 29 - 0
pages/scoach/list.less

@@ -147,4 +147,33 @@
         display: flex;
         flex-direction: column;
     }
+}
+
+.dialog {
+    .dialog_1 {
+        .name {
+            text-align: center;
+            font-size: var(--font18Szie);
+            font-weight: bold;
+            margin: 3vw 0;
+        }
+
+        .image {
+            text-align: center;
+            height: 18vh;
+            overflow: hidden;
+
+            .qrcode {
+                height: 22vh;
+                position: absolute;
+                left: 32vw;
+            }
+        }
+
+        .remark {
+            text-align: center;
+            font-size: 15px;
+            margin: 0 0 4vw 0;
+        }
+    }
 }

+ 13 - 2
pages/scoach/list.wxml

@@ -19,7 +19,7 @@
                             </view>
                             <view class="content">
                                 <view class="name textOver">{{item.name}}</view>
-                                <view class="other">教练等级:<text>{{item.level=='0'?'助教':item.level=='1'?'专业一级':item.level=='2'?'专业二级':'暂无'}}</text></view>
+                                <view class="other">教练等级:<text>{{item.zhLevel||'暂无'}}</text></view>
                                 <view class="other">联系电话:<text>{{item.phone}}</text>
                                 </view>
                             </view>
@@ -34,4 +34,15 @@
             </scroll-view>
         </view>
     </view>
-</mobile-main>
+</mobile-main>
+<dialog dialog="{{dialog}}" bind:toClose="toClose">
+    <view slot="info" class="dialog">
+        <view class="dialog_1" wx:if="{{dialog.type=='1'}}">
+            <view class="name">{{form.name}}</view>
+            <view class="image">
+                <canvas class="qrcode" canvas-id="myQrcode"></canvas>
+            </view>
+            <view class="remark">用户可扫描二维码进行账号绑定</view>
+        </view>
+    </view>
+</dialog>

+ 21 - 0
pages/scoach/list.wxss

@@ -120,3 +120,24 @@
   display: flex;
   flex-direction: column;
 }
+.dialog .dialog_1 .name {
+  text-align: center;
+  font-size: var(--font18Szie);
+  font-weight: bold;
+  margin: 3vw 0;
+}
+.dialog .dialog_1 .image {
+  text-align: center;
+  height: 18vh;
+  overflow: hidden;
+}
+.dialog .dialog_1 .image .qrcode {
+  height: 22vh;
+  position: absolute;
+  left: 32vw;
+}
+.dialog .dialog_1 .remark {
+  text-align: center;
+  font-size: 15px;
+  margin: 0 0 4vw 0;
+}

+ 1 - 1
pages/sstudent/add.js

@@ -15,7 +15,7 @@ Page({
     initValidate() {
         const rules = { icon: { required: true }, name: { required: true }, age: { required: true }, gender: { required: true }, phone: { required: true, tel: true } }
         // 验证字段的提示信息,若不传则调用默认的信息
-        const messages = { icon: { required: '请选择头像' }, name: { required: '请输入学员姓名' }, age: { required: '请输入年龄' }, gender: { required: '请选择性别' }, phone: { required: '请输入手机号' } };
+        const messages = { icon: { required: '请选择头像' }, name: { required: '请输入学员姓名' }, age: { required: '请输入年龄' }, gender: { required: '请选择性别' }, phone: { required: '请输入联系电话' } };
         this.WxValidate = new WxValidate(rules, messages)
     },
     // 返回

+ 1 - 1
pages/sstudent/add.less

@@ -16,7 +16,7 @@
 
                 textarea {
                     position: static;
-                    width: 72vw;
+                    width: 73vw;
                 }
             }
         }

+ 10 - 9
pages/sstudent/add.wxml

@@ -15,30 +15,31 @@
                     </view>
                 </view>
                 <view class="content">
-                    <view class="label">年龄:</view>
+                    <view class="label">性别:</view>
                     <view class="value">
-                        <input type="number" name="age" value="{{form.age}}" placeholder="请输入年龄" />
+                        <picker mode="selector" bindchange="genderChange" name="gender" value="{{form.gender}}" range="{{genderList}}" range-key="label">
+                            <view class="picker">{{form.zhGender||'请选择性别'}}</view>
+                        </picker>
                     </view>
                 </view>
                 <view class="content">
-                    <view class="label">性别:</view>
+                    <view class="label">年龄:</view>
                     <view class="value">
-                        <picker mode="selector" bindchange="genderChange" name="gender" value="{{form.gender}}" range="{{genderList}}" range-key="label">
-                            <view class="picker">{{genderList[form.gender].label||'请选择性别'}}</view>
-                        </picker>
+                        <input type="number" name="age" value="{{form.age}}" placeholder="请输入年龄" />
                     </view>
                 </view>
+
                 <view class="content">
-                    <view class="label">手机号:</view>
+                    <view class="label">联系电话:</view>
                     <view class="value">
-                        <input type="text" name="phone" value="{{form.phone}}" placeholder="请输入手机号" />
+                        <input type="text" name="phone" value="{{form.phone}}" placeholder="请输入联系电话" />
                     </view>
                 </view>
                 <view class="content">
                     <view class="label">运动等级:</view>
                     <view class="value">
                         <picker mode="selector" bindchange="levelChange" name="level" value="{{form.level}}" range="{{levelList}}" range-key="label">
-                            <view class="picker">{{levelList[form.level].label||'请选择运动等级'}}</view>
+                            <view class="picker">{{form.zhLevel||'请选择运动等级'}}</view>
                         </picker>
                     </view>
                 </view>

+ 1 - 1
pages/sstudent/add.wxss

@@ -15,7 +15,7 @@
 }
 .main .one .content .value textarea {
   position: static;
-  width: 72vw;
+  width: 73vw;
 }
 .main .one .btn {
   text-align: center;

+ 35 - 6
pages/sstudent/list.js

@@ -1,4 +1,5 @@
 const app = getApp()
+import QRCode from '../../utils/weapp-qrcode.js';
 Page({
 
     /**
@@ -7,12 +8,15 @@ Page({
     data: {
         frameStyle: { useTop: true, name: '学员信息', leftArrow: true, useBar: false },
         list: [],
-        //运动等级
-        levelList: [],
         total: 0,
         page: 0,
         skip: 0,
         limit: 5,
+        //运动等级
+        levelList: [],
+        // dialog弹框
+        dialog: { title: '账号绑定', show: false, type: '1' },
+        form: {}
     },
     // 返回
     back: function () {
@@ -47,11 +51,36 @@ Page({
             }
         })
     },
-    // 账号绑定
-    toBind: function (e) {
+    // 绑定账号
+    toBind: async function (e) {
         const that = this;
-        const { item } = e.currentTarget.dataset;
-        console.log(item);
+        let { item } = e.currentTarget.dataset;
+        const arr = await app.$get(`/student/${item.id}`);
+        if (arr.errcode == '0') {
+            that.setData({ form: arr.data })
+            // 生成二维码
+            that.makeQRCode();
+            that.setData({ dialog: { title: '账号绑定', show: true, type: '1' } })
+        } else { wx.showToast({ title: `${arr.errmsg}`, icon: 'error', duration: 2000 }) }
+    },
+    makeQRCode(template = 0) {
+        const that = this;
+        const url = `${app.globalData.publicUrl}/courtappbind?id=${that.data.form.id}&type='3'`;
+        var qrcode = new QRCode(`myQrcode`, {
+            text: url,
+            width: 110,
+            height: 110,
+            padding: 3,
+            colorDark: "#000000",
+            colorLight: "#ffffff",
+            correctLevel: QRCode.CorrectLevel.L,
+        });
+    },
+    // 关闭弹框
+    toClose: function () {
+        const that = this;
+        that.setData({ form: {} })
+        that.setData({ dialog: { title: '账号绑定', show: false, type: '1' } })
     },
     // 分页
     toPage: function () {

+ 5 - 4
pages/sstudent/list.json

@@ -1,6 +1,7 @@
 {
-  "component": true,
-  "usingComponents": {
-    "mobile-main": "/commpents/mobile-frame/index"
-  }
+    "component": true,
+    "usingComponents": {
+        "mobile-main": "/commpents/mobile-frame/index",
+        "dialog": "/commpents/dialog/index"
+    }
 }

+ 28 - 0
pages/sstudent/list.less

@@ -112,4 +112,32 @@
         display: flex;
         flex-direction: column;
     }
+}
+.dialog {
+    .dialog_1 {
+        .name {
+            text-align: center;
+            font-size: var(--font18Szie);
+            font-weight: bold;
+            margin: 3vw 0;
+        }
+
+        .image {
+            text-align: center;
+            height: 18vh;
+            overflow: hidden;
+
+            .qrcode {
+                height: 22vh;
+                position: absolute;
+                left: 32vw;
+            }
+        }
+
+        .remark {
+            text-align: center;
+            font-size: 15px;
+            margin: 0 0 4vw 0;
+        }
+    }
 }

+ 13 - 2
pages/sstudent/list.wxml

@@ -17,7 +17,7 @@
                             <view class="content">
                                 <view class="name textOver">{{item.name||'暂无'}}</view>
                                 <view class="other">
-                                    <view class="other_1 textOver"><text>运动等级:</text><text>{{levelList[item.level].label||'暂无'}}</text></view>
+                                    <view class="other_1 textOver"><text>运动等级:</text><text>{{item.zhLevel||'暂无'}}</text></view>
                                     <view class="other_1 textOver"><text>联系电话:</text><text>{{item.phone||'暂无'}}</text></view>
                                 </view>
                             </view>
@@ -32,4 +32,15 @@
             </scroll-view>
         </view>
     </view>
-</mobile-main>
+</mobile-main>
+<dialog dialog="{{dialog}}" bind:toClose="toClose">
+    <view slot="info" class="dialog">
+        <view class="dialog_1" wx:if="{{dialog.type=='1'}}">
+            <view class="name">{{form.name}}</view>
+            <view class="image">
+                <canvas class="qrcode" canvas-id="myQrcode"></canvas>
+            </view>
+            <view class="remark">用户可扫描二维码进行账号绑定</view>
+        </view>
+    </view>
+</dialog>

+ 21 - 0
pages/sstudent/list.wxss

@@ -92,3 +92,24 @@
   display: flex;
   flex-direction: column;
 }
+.dialog .dialog_1 .name {
+  text-align: center;
+  font-size: var(--font18Szie);
+  font-weight: bold;
+  margin: 3vw 0;
+}
+.dialog .dialog_1 .image {
+  text-align: center;
+  height: 18vh;
+  overflow: hidden;
+}
+.dialog .dialog_1 .image .qrcode {
+  height: 22vh;
+  position: absolute;
+  left: 32vw;
+}
+.dialog .dialog_1 .remark {
+  text-align: center;
+  font-size: 15px;
+  margin: 0 0 4vw 0;
+}