guhongwei 2 年之前
父节点
当前提交
6c3d417ae3
共有 55 个文件被更改,包括 1890 次插入11 次删除
  1. 10 4
      app.json
  2. 159 0
      pages/coaAdmin/archives/info.js
  3. 7 0
      pages/coaAdmin/archives/info.json
  4. 52 0
      pages/coaAdmin/archives/info.less
  5. 75 0
      pages/coaAdmin/archives/info.wxml
  6. 43 0
      pages/coaAdmin/archives/info.wxss
  7. 111 0
      pages/coaAdmin/cashout/add.js
  8. 7 0
      pages/coaAdmin/cashout/add.json
  9. 34 0
      pages/coaAdmin/cashout/add.less
  10. 29 0
      pages/coaAdmin/cashout/add.wxml
  11. 27 0
      pages/coaAdmin/cashout/add.wxss
  12. 129 0
      pages/coaAdmin/cashout/list.js
  13. 7 0
      pages/coaAdmin/cashout/list.json
  14. 104 0
      pages/coaAdmin/cashout/list.less
  15. 73 0
      pages/coaAdmin/cashout/list.wxml
  16. 83 0
      pages/coaAdmin/cashout/list.wxss
  17. 119 0
      pages/coaAdmin/course/add.js
  18. 6 0
      pages/coaAdmin/course/add.json
  19. 34 0
      pages/coaAdmin/course/add.less
  20. 17 0
      pages/coaAdmin/course/add.wxml
  21. 27 0
      pages/coaAdmin/course/add.wxss
  22. 145 0
      pages/coaAdmin/course/list.js
  23. 6 0
      pages/coaAdmin/course/list.json
  24. 90 0
      pages/coaAdmin/course/list.less
  25. 30 0
      pages/coaAdmin/course/list.wxml
  26. 74 0
      pages/coaAdmin/course/list.wxss
  27. 66 0
      pages/coaAdmin/incomestat/list.js
  28. 3 0
      pages/coaAdmin/incomestat/list.json
  29. 0 0
      pages/coaAdmin/incomestat/list.less
  30. 2 0
      pages/coaAdmin/incomestat/list.wxml
  31. 1 0
      pages/coaAdmin/incomestat/list.wxss
  32. 66 0
      pages/coaAdmin/lecturestat/list.js
  33. 3 0
      pages/coaAdmin/lecturestat/list.json
  34. 0 0
      pages/coaAdmin/lecturestat/list.less
  35. 2 0
      pages/coaAdmin/lecturestat/list.wxml
  36. 1 0
      pages/coaAdmin/lecturestat/list.wxss
  37. 66 0
      pages/coaAdmin/student/list.js
  38. 3 0
      pages/coaAdmin/student/list.json
  39. 0 0
      pages/coaAdmin/student/list.less
  40. 2 0
      pages/coaAdmin/student/list.wxml
  41. 1 0
      pages/coaAdmin/student/list.wxss
  42. 66 0
      pages/coaAdmin/studentstat/list.js
  43. 3 0
      pages/coaAdmin/studentstat/list.json
  44. 0 0
      pages/coaAdmin/studentstat/list.less
  45. 2 0
      pages/coaAdmin/studentstat/list.wxml
  46. 1 0
      pages/coaAdmin/studentstat/list.wxss
  47. 66 0
      pages/schAdmin/coachprofit/list.js
  48. 3 0
      pages/schAdmin/coachprofit/list.json
  49. 0 0
      pages/schAdmin/coachprofit/list.less
  50. 2 0
      pages/schAdmin/coachprofit/list.wxml
  51. 1 0
      pages/schAdmin/coachprofit/list.wxss
  52. 3 3
      pages/setting/basic.js
  53. 0 1
      pages/superAdmin/coach/add.less
  54. 0 1
      pages/superAdmin/coach/add.wxss
  55. 29 2
      utils/dict.js

+ 10 - 4
app.json

@@ -9,7 +9,6 @@
         "pages/smy/index",
         "pages/club/index",
         "pages/match/index",
-
         "pages/superAdmin/suser/list",
         "pages/superAdmin/suser/add",
         "pages/superAdmin/school/list",
@@ -20,11 +19,11 @@
         "pages/superAdmin/student/add",
         "pages/superAdmin/system/dictionary",
         "pages/superAdmin/system/adddictionary",
-
         "pages/schAdmin/school/info",
         "pages/schAdmin/coach/list",
         "pages/schAdmin/coach/add",
         "pages/schAdmin/coachexam/list",
+        "pages/schAdmin/coachprofit/list",
         "pages/schAdmin/student/list",
         "pages/schAdmin/student/add",
         "pages/schAdmin/studentexam/list",
@@ -42,7 +41,15 @@
         "pages/schAdmin/income/list",
         "pages/schAdmin/stustat/list",
         "pages/schAdmin/coachstat/list",
-
+        "pages/coaAdmin/archives/info",
+        "pages/coaAdmin/cashout/list",
+        "pages/coaAdmin/cashout/add",
+        "pages/coaAdmin/course/list",
+        "pages/coaAdmin/course/add",
+        "pages/coaAdmin/student/list",
+        "pages/coaAdmin/lecturestat/list",
+        "pages/coaAdmin/incomestat/list",
+        "pages/coaAdmin/studentstat/list",
         "pages/stuAdmin/archives/list",
         "pages/stuAdmin/school/list",
         "pages/stuAdmin/school/info",
@@ -53,7 +60,6 @@
         "pages/stuAdmin/course/sign",
         "pages/stuAdmin/study/list",
         "pages/stuAdmin/fee/list",
-        
         "pages/user/basic",
         "pages/setting/basic",
         "pages/setting/contact",

+ 159 - 0
pages/coaAdmin/archives/info.js

@@ -0,0 +1,159 @@
+const app = getApp()
+import WxValidate from '../../../utils/wxValidate'
+Page({
+    data: {
+        frameStyle: { useTop: true, name: '个人档案', leftArrow: true, useBar: false },
+        form: { icon: [] },
+        // 性别
+        genderList: [],
+        // 等级列表
+        levelList: [],
+    },
+    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: '请输入联系电话', } };
+        this.WxValidate = new WxValidate(rules, messages)
+    },
+    // 返回
+    back(e) {
+        wx.navigateBack({ delta: 1 })
+    },
+    imgUpl: function (e) {
+        const that = this;
+        let data = that.data.form.icon;
+        data.push(e.detail)
+        that.setData({ 'form.icon': data })
+    },
+    // 删除图片
+    imgDel: function (e) {
+        const that = this;
+        let list = that.data.form.icon;
+        let arr = list.filter((i, index) => index != e.detail.index)
+        that.setData({ 'form.icon': arr })
+    },
+    // 选择性别
+    genderChange: function (e) {
+        const that = this;
+        let data = that.data.genderList[e.detail.value];
+        if (data) {
+            that.setData({ 'form.gender': data.value });
+            that.setData({ 'form.zhGender': data.label });
+        }
+    },
+    //选择等级
+    coachChange: function (e) {
+        const that = this;
+        let data = that.data.levelList[e.detail.value];
+        if (data) {
+            that.setData({ 'form.level': data.value });
+            that.setData({ 'form.zhLevel': data.label });
+        }
+    },
+    // 提交保运
+    onSubmit: async function (e) {
+        const that = this;
+        const params = e.detail.value;
+        const form = that.data.form;
+        params.icon = form.icon;
+        if (!this.WxValidate.checkForm(params)) {
+            const error = this.WxValidate.errorList[0];
+            wx.showToast({ title: `${error.msg}`, icon: 'error', duration: 2000 })
+            return false
+        } else {
+            let arr = await app.$post(`/coach/${params._id}`, params);
+            if (arr.errcode == '0') {
+                wx.showToast({ title: `维护信息完成`, icon: 'success', duration: 2000 });
+                that.back()
+            }
+            else wx.showToast({ title: `${arr.errmsg}`, icon: 'error', duration: 2000 })
+        }
+    },
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad: async function (options) {
+        const that = this;
+        //验证规则函数
+        that.initValidate();
+        // 查询其他信息
+        await that.searchOther();
+        // 监听用户是否登录
+        await that.watchLogin();
+    },
+    // 查询其他信息
+    searchOther: async function () {
+        const that = this;
+        let arr;
+        // 等级
+        arr = await app.$get(`/dict`, { code: "coach_grade" });
+        if (arr.errcode == '0' && arr.total > 0) that.setData({ levelList: arr.data[0].list });
+        // 性别
+        arr = await app.$get(`/dict`, { code: "gender" });
+        if (arr.errcode == '0' && arr.total > 0) that.setData({ genderList: arr.data[0].list });
+    },
+    // 监听用户是否登录
+    watchLogin: async function () {
+        const that = this;
+        let levelList = that.data.levelList;
+        let genderList = that.data.genderList;
+        wx.getStorage({
+            key: 'user',
+            success: async res => {
+                const arr = await app.$get(`/coach/${res.data?.info?._id}`);
+                if (arr.errcode == '0') {
+                    // 等级
+                    let grade = levelList.find(i => i.value == arr.data.level);
+                    if (grade) arr.data.zhLevel = grade.label;
+                    // 性别
+                    let gender = genderList.find(i => i.value == arr.data.gender);
+                    if (gender) arr.data.zhGender = gender.label;
+                    that.setData({ form: arr.data })
+                }
+            },
+            fail: async res => {
+                wx.redirectTo({ url: '/pages/index/index' })
+            }
+        })
+    },
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady: function () { },
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow: function () {
+
+    },
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload: function () {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh: function () {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage: function () {
+
+    }
+})

+ 7 - 0
pages/coaAdmin/archives/info.json

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

+ 52 - 0
pages/coaAdmin/archives/info.less

@@ -0,0 +1,52 @@
+.main {
+    background-color: var(--mainColor);
+
+    .one {
+        flex-grow: 1;
+        position: relative;
+        height: 81vh;
+
+        .content {
+            display: flex;
+            flex-direction: row;
+            border-bottom: 1px dashed var(--f1Color);
+            padding: 2vw 0;
+            margin: 0 2vw 2vw 2vw;
+
+            .value {
+                flex-grow: 1;
+                color: var(--blackColor);
+
+                textarea {
+                    position: static;
+                    width: 73vw;
+                }
+            }
+        }
+    }
+
+    .btn {
+        text-align: center;
+        margin: 5vw 0 0 0;
+
+        button {
+            width: 40vw;
+            margin: 0 2vw;
+            padding: 1vw 0;
+        }
+    }
+
+}
+
+.scroll-view {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+
+    .list-scroll-view {
+        display: flex;
+        flex-direction: column;
+    }
+}

+ 75 - 0
pages/coaAdmin/archives/info.wxml

@@ -0,0 +1,75 @@
+<mobile-main frameStyle="{{frameStyle}}" bind:back="back">
+    <view slot="info" class="container main">
+        <view class="one">
+            <form catchsubmit="onSubmit">
+                <view class="content">
+                    <view class="label">数据id:</view>
+                    <view class="value">
+                        <input type="text" name="_id" value="{{form._id}}" placeholder="请输入数据id" />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">头像:</view>
+                    <view class="value">
+                        <upload list="{{form.icon}}" count="{{1}}" previewSize="{{30}}" bind:imgUpload="imgUpl" bind:imgDel="imgDel"></upload>
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">姓名:</view>
+                    <view class="value">
+                        <input name="name" value="{{form.name}}" placeholder="请输入姓名" />
+                    </view>
+                </view>
+                <view class="content">
+                    <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.zhGender||'请选择性别'}}</view>
+                        </picker>
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">年龄:</view>
+                    <view class="value">
+                        <input type="number" name="age" value="{{form.age}}" placeholder="请输入年龄" />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">联系电话:</view>
+                    <view class="value">
+                        <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.zhLevel||'请选择教练等级'}}</view>
+                        </picker>
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">教练简介:</view>
+                    <view class="value">
+                        <textarea name="brief" value="{{form.brief}}" auto-height maxlength="-1" placeholder="请输入教练简介" />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">过往荣誉:</view>
+                    <view class="value">
+                        <textarea name="honor" value="{{form.honor}}" auto-height maxlength="-1" placeholder="请输入过往荣誉" />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">教学经历:</view>
+                    <view class="value">
+                        <textarea name="exp" value="{{form.exp}}" auto-height maxlength="-1" placeholder="请输入教学经历" />
+                    </view>
+                </view>
+                <view class="btn">
+                    <button type="primary" size="mini" formType="submit">提交保存</button>
+                </view>
+            </form>
+        </view>
+    </view>
+</mobile-main>

+ 43 - 0
pages/coaAdmin/archives/info.wxss

@@ -0,0 +1,43 @@
+.main {
+  background-color: var(--mainColor);
+}
+.main .one {
+  flex-grow: 1;
+  position: relative;
+  height: 81vh;
+}
+.main .one .content {
+  display: flex;
+  flex-direction: row;
+  border-bottom: 1px dashed var(--f1Color);
+  padding: 2vw 0;
+  margin: 0 2vw 2vw 2vw;
+}
+.main .one .content .value {
+  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;
+}
+.main .btn button {
+  width: 40vw;
+  margin: 0 2vw;
+  padding: 1vw 0;
+}
+.scroll-view {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+.scroll-view .list-scroll-view {
+  display: flex;
+  flex-direction: column;
+}

+ 111 - 0
pages/coaAdmin/cashout/add.js

@@ -0,0 +1,111 @@
+const app = getApp()
+import WxValidate from '../../../utils/wxValidate';
+Page({
+    data: {
+        frameStyle: { useTop: true, name: '提现申请信息', leftArrow: true, useBar: false },
+        form: {},
+    },
+    initValidate() {
+        const rules = { salary: { required: true } }
+        // 验证字段的提示信息,若不传则调用默认的信息
+        const messages = { salary: { required: '请输入提现金额' } };
+        this.WxValidate = new WxValidate(rules, messages)
+    },
+    // 返回
+    back: function () {
+        wx.navigateBack({ delta: 1 })
+    },
+    //提交
+    onSubmit: async function (e) {
+        const that = this;
+        const params = e.detail.value;
+        if (!this.WxValidate.checkForm(params)) {
+            const error = this.WxValidate.errorList[0];
+            wx.showToast({ title: `${error.msg}`, icon: 'error', duration: 2000 })
+            return false
+        } else {
+            const arr = await app.$post(`/billApply`, params)
+            if (arr.errcode == '0') { wx.showToast({ title: `维护信息完成`, icon: 'success', duration: 2000 }); that.back(); }
+            else wx.showToast({ title: `${arr.errmsg}`, icon: 'error', duration: 2000 })
+        }
+    },
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad: async function (options) {
+        const that = this;
+        that.setData({ id: options.id || '' })
+        //验证规则函数
+        that.initValidate();
+        // 监听用户是否登录
+        await that.watchLogin();
+    },
+
+    // 监听用户是否登录
+    watchLogin: async function () {
+        const that = this;
+        wx.getStorage({
+            key: 'user',
+            success: async res => {
+                let data = res.data;
+                let form = { coach_id: data.info.id };
+                // 教练与学校的关系
+                const school = await app.$get(`/rcs`, { coach_id: form.coach_id });
+                if (school.errcode == '0' && school.total > 0) { form.school_id = school.data[0].school_id }
+                else { wx.showToast({ title: `缺少必要信息`, icon: 'error', duration: 2000 }) };
+                that.setData({ form })
+            },
+            fail: async res => {
+                wx.redirectTo({ url: '/pages/index/index' })
+            }
+        })
+    },
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload: function () {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh: function () {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom: function () {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage: function () {
+
+    }
+})

+ 7 - 0
pages/coaAdmin/cashout/add.json

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

+ 34 - 0
pages/coaAdmin/cashout/add.less

@@ -0,0 +1,34 @@
+.main {
+    background-color: var(--mainColor);
+
+    .one {
+        .content {
+            display: flex;
+            flex-direction: row;
+            border-bottom: 1px dashed var(--f1Color);
+            padding: 2vw 0;
+            margin: 0 2vw 2vw 2vw;
+
+            .value {
+                flex-grow: 1;
+                color: var(--blackColor);
+
+                textarea {
+                    position: static;
+                    width: 73vw;
+                }
+            }
+        }
+
+        .btn {
+            text-align: center;
+            margin: 5vw 0 0 0;
+
+            button {
+                width: 40vw;
+                margin: 0 2vw;
+                padding: 1vw 0;
+            }
+        }
+    }
+}

+ 29 - 0
pages/coaAdmin/cashout/add.wxml

@@ -0,0 +1,29 @@
+<mobile-main frameStyle="{{frameStyle}}" bind:back="back">
+    <view slot="info" class="container main">
+        <view class="one">
+            <form catchsubmit="onSubmit">
+                <view class="content">
+                    <view class="label">学校id:</view>
+                    <view class="value">
+                        <input type="text" name="school_id" value="{{form.school_id}}" placeholder="请输入学校id" />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">教练id:</view>
+                    <view class="value">
+                        <input type="text" name="coach_id" value="{{form.coach_id}}" placeholder="请输入coach_id" />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">提现金额:</view>
+                    <view class="value">
+                        <input type="number" name="salary" value="{{form.salary}}" placeholder="请输入提现金额" />
+                    </view>
+                </view>
+                <view class="btn">
+                    <button type="primary" size="mini" formType="submit">提交保存</button>
+                </view>
+            </form>
+        </view>
+    </view>
+</mobile-main>

+ 27 - 0
pages/coaAdmin/cashout/add.wxss

@@ -0,0 +1,27 @@
+.main {
+  background-color: var(--mainColor);
+}
+.main .one .content {
+  display: flex;
+  flex-direction: row;
+  border-bottom: 1px dashed var(--f1Color);
+  padding: 2vw 0;
+  margin: 0 2vw 2vw 2vw;
+}
+.main .one .content .value {
+  flex-grow: 1;
+  color: var(--blackColor);
+}
+.main .one .content .value textarea {
+  position: static;
+  width: 73vw;
+}
+.main .one .btn {
+  text-align: center;
+  margin: 5vw 0 0 0;
+}
+.main .one .btn button {
+  width: 40vw;
+  margin: 0 2vw;
+  padding: 1vw 0;
+}

+ 129 - 0
pages/coaAdmin/cashout/list.js

@@ -0,0 +1,129 @@
+const app = getApp()
+const moment = require("../../../utils/moment.min")
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+        frameStyle: { useTop: true, name: '提现申请', leftArrow: true, useBar: false },
+        list: [],
+        total: 0,
+        page: 0,
+        skip: 0,
+        limit: 5,
+        // dialog弹框
+        dialog: { title: '详细信息', show: false, type: '1' },
+        form: {}
+    },
+    // 返回
+    back: function () {
+        wx.navigateBack({ delta: 1 })
+    },
+    //详细信息
+    toView: function (e) {
+        const that = this;
+        const { item } = e.currentTarget.dataset;
+        that.setData({ form: item });
+        that.setData({ dialog: { title: '详细信息', show: true, type: '1' } })
+    },
+    // 关闭弹框
+    toClose: function () {
+        const that = this;
+        that.setData({ form: {} })
+        that.setData({ dialog: { title: '详细信息', show: false, type: '1' } })
+    },
+    // 分页
+    toPage: function () {
+        const that = this;
+        let list = that.data.list;
+        let limit = that.data.limit;
+        if (that.data.total > list.length) {
+            wx.showLoading({ title: '加载中', mask: true })
+            let page = that.data.page + 1;
+            that.setData({ page: page })
+            let skip = page * limit;
+            that.setData({ skip: skip })
+            that.watchLogin();
+            wx.hideLoading()
+        } else { wx.showToast({ title: '没有更多数据了', icon: 'none', duration: 2000 }) }
+    },
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad: function (options) {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow: async function () {
+        const that = this;
+        // 监听用户是否登录
+        await that.watchLogin();
+    },
+
+    // 监听用户是否登录
+    watchLogin: async function () {
+        const that = this;
+        wx.getStorage({
+            key: 'user',
+            success: async res => {
+                let info = { skip: that.data.skip, limit: that.data.limit };
+                let arr = await app.$get(`/billApply`, { ...info });
+                if (arr.errcode == '0') {
+                    let list = [...that.data.list, ...arr.data];
+                    for (const val of list) { val.create_time = moment(val.meta.createdAt).format('YYYY-MM-DD HH:mm:ss') }
+                    that.setData({ list: list })
+                    that.setData({ total: arr.total })
+                } else { wx.showToast({ title: `${arr.errmsg}`, icon: 'error', duration: 2000 }) }
+            },
+            fail: async res => {
+                wx.redirectTo({ url: '/pages/index/index' })
+            }
+        })
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload: function () {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh: function () {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom: function () {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage: function () {
+
+    }
+})

+ 7 - 0
pages/coaAdmin/cashout/list.json

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

+ 104 - 0
pages/coaAdmin/cashout/list.less

@@ -0,0 +1,104 @@
+.main {
+    height: var(--twoHeight);
+    background-color: var(--mainColor);
+
+    .one {
+        display: flex;
+        flex-direction: row;
+        padding: 2vw;
+        border-bottom: 1px solid var(--f1Color);
+
+        .one_1 {
+            flex-grow: 1;
+
+            input {
+                padding: 1vw 0 2vw 2vw;
+                background-color: var(--f1Color);
+                border-radius: 5px;
+            }
+        }
+
+        .one_2 {
+            width: 20vw;
+
+            button {
+                width: 100%;
+                padding: 2vw;
+                font-size: var(--font14Size);
+            }
+        }
+    }
+
+    .two {
+        flex-grow: 1;
+        position: relative;
+        width: 96vw;
+        margin: 2vw;
+        background-color: var(--mainColor);
+
+        .list {
+            display: flex;
+            flex-direction: column;
+            border: 2px dashed var(--f1Color);
+            padding: 2vw;
+            margin: 0 0 2vw 0;
+            border-radius: 10px;
+
+            .name {
+                font-size: var(--font20Szie);
+                color: var(--redColor);
+                font-weight: bold;
+                margin: 0 0 2vw 0;
+            }
+
+            .other {
+                margin: 0 0 2vw 0;
+
+                .other_1 {
+                    font-size: var(--font16Szie);
+                    margin: 0 0 1vw 0;
+
+                    text:first-child {
+                        color: var(--f85Color);
+                    }
+                }
+            }
+
+            .btn {
+                margin: 2vw 0 0 0;
+                text-align: center;
+            }
+        }
+
+    }
+}
+
+.scroll-view {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+
+    .list-scroll-view {
+        display: flex;
+        flex-direction: column;
+    }
+}
+
+.dialog {
+    .dialog_1 {
+        .content {
+            display: flex;
+            flex-direction: row;
+            border-bottom: 1px dashed var(--f1Color);
+            padding: 2vw 0;
+            margin: 0 2vw 2vw 2vw;
+
+            .value {
+                flex-grow: 1;
+                color: var(--blackColor);
+            }
+        }
+    }
+}

+ 73 - 0
pages/coaAdmin/cashout/list.wxml

@@ -0,0 +1,73 @@
+<mobile-main frameStyle="{{frameStyle}}" bind:back="back">
+    <view slot="info" class="container main">
+        <view class="one">
+            <view class="one_1">
+                <input type="text" placeholder="请输入关键词" />
+            </view>
+            <view class="one_2">
+                <button type="primary" bindtap="toCommon" data-route="coaAdmin/cashout/add">添加</button>
+            </view>
+        </view>
+        <view class="two">
+            <scroll-view scroll-y="true" class="scroll-view" bindscrolltolower="toPage">
+                <view class="list-scroll-view">
+                    <view class="list" wx:for="{{list}}" wx:key="item">
+                        <view class="name">{{item.salary}}元</view>
+                        <view class="other">
+                            <view class="other_1"><text>所在学校:</text><text>{{item.school_id_name}}</text></view>
+                            <view class="other_1"><text>提现时间:</text><text>{{item.create_time}}</text></view>
+                            <view class="other_1"><text>审核状态:</text><text>{{item.result=='0'?'未审核':item.result=='1'?'审核成功':'审核拒绝'}}</text></view>
+                        </view>
+                        <view class="btn">
+                            <button size="mini" type="primary" bindtap="toView" data-item="{{item}}">详细信息</button>
+                        </view>
+                    </view>
+                </view>
+            </scroll-view>
+        </view>
+    </view>
+</mobile-main>
+<dialog dialog="{{dialog}}" bind:toClose="toClose">
+    <view slot="info" class="dialog">
+        <view class="dialog_1" wx:if="{{dialog.type=='1'}}">
+            <form catchsubmit="onSubmit">
+                <view class="content">
+                    <view class="label">学校名称:</view>
+                    <view class="value">
+                        <input name="school_id_name" value="{{form.school_id_name}}" disabled />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">教练姓名:</view>
+                    <view class="value">
+                        <input name="coach_id_name" value="{{form.coach_id_name}}" disabled />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">提现金额(元):</view>
+                    <view class="value">
+                        <input name="salary" value="{{form.salary}}" disabled />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">申请时间:</view>
+                    <view class="value">
+                        <input name="create_time" value="{{form.create_time}}" disabled />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">审核状态:</view>
+                    <view class="value">
+                        <input name="result" value="{{form.result=='0'?'未审核':form.result=='1'?'审核成功':'审核拒绝'}}" disabled />
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">审核原因:</view>
+                    <view class="value">
+                        <input name="reason" value="{{form.reason||'暂无'}}" disabled />
+                    </view>
+                </view>
+            </form>
+        </view>
+    </view>
+</dialog>

+ 83 - 0
pages/coaAdmin/cashout/list.wxss

@@ -0,0 +1,83 @@
+.main {
+  height: var(--twoHeight);
+  background-color: var(--mainColor);
+}
+.main .one {
+  display: flex;
+  flex-direction: row;
+  padding: 2vw;
+  border-bottom: 1px solid var(--f1Color);
+}
+.main .one .one_1 {
+  flex-grow: 1;
+}
+.main .one .one_1 input {
+  padding: 1vw 0 2vw 2vw;
+  background-color: var(--f1Color);
+  border-radius: 5px;
+}
+.main .one .one_2 {
+  width: 20vw;
+}
+.main .one .one_2 button {
+  width: 100%;
+  padding: 2vw;
+  font-size: var(--font14Size);
+}
+.main .two {
+  flex-grow: 1;
+  position: relative;
+  width: 96vw;
+  margin: 2vw;
+  background-color: var(--mainColor);
+}
+.main .two .list {
+  display: flex;
+  flex-direction: column;
+  border: 2px dashed var(--f1Color);
+  padding: 2vw;
+  margin: 0 0 2vw 0;
+  border-radius: 10px;
+}
+.main .two .list .name {
+  font-size: var(--font20Szie);
+  color: var(--redColor);
+  font-weight: bold;
+  margin: 0 0 2vw 0;
+}
+.main .two .list .other {
+  margin: 0 0 2vw 0;
+}
+.main .two .list .other .other_1 {
+  font-size: var(--font16Szie);
+  margin: 0 0 1vw 0;
+}
+.main .two .list .other .other_1 text:first-child {
+  color: var(--f85Color);
+}
+.main .two .list .btn {
+  margin: 2vw 0 0 0;
+  text-align: center;
+}
+.scroll-view {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+.scroll-view .list-scroll-view {
+  display: flex;
+  flex-direction: column;
+}
+.dialog .dialog_1 .content {
+  display: flex;
+  flex-direction: row;
+  border-bottom: 1px dashed var(--f1Color);
+  padding: 2vw 0;
+  margin: 0 2vw 2vw 2vw;
+}
+.dialog .dialog_1 .content .value {
+  flex-grow: 1;
+  color: var(--blackColor);
+}

+ 119 - 0
pages/coaAdmin/course/add.js

@@ -0,0 +1,119 @@
+const app = getApp()
+import WxValidate from '../../../utils/wxValidate';
+Page({
+    data: {
+        frameStyle: { useTop: true, name: '课程信息', leftArrow: true, useBar: false },
+        form: {},
+    },
+    initValidate() {
+        const rules = { salary: { required: false } }
+        // 验证字段的提示信息,若不传则调用默认的信息
+        const messages = { salary: { required: '请输入提现金额' } };
+        this.WxValidate = new WxValidate(rules, messages)
+    },
+    // 返回
+    back: function () {
+        wx.navigateBack({ delta: 1 })
+    },
+    //提交
+    onSubmit: async function (e) {
+        const that = this;
+        const params = e.detail.value;
+        if (!this.WxValidate.checkForm(params)) {
+            const error = this.WxValidate.errorList[0];
+            wx.showToast({ title: `${error.msg}`, icon: 'error', duration: 2000 })
+            return false
+        } else {
+            console.log(params);
+            // const arr = await app.$post(`/billApply`, params)
+            // if (arr.errcode == '0') { wx.showToast({ title: `维护信息完成`, icon: 'success', duration: 2000 }); that.back(); }
+            // else wx.showToast({ title: `${arr.errmsg}`, icon: 'error', duration: 2000 })
+        }
+    },
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad: async function (options) {
+        const that = this;
+        that.setData({ id: options.id || '' })
+        //验证规则函数
+        that.initValidate();
+        // 查询其他信息
+        await that.searchOther();
+        // 监听用户是否登录
+        await that.watchLogin();
+    },
+    // 查询其他信息
+    searchOther: function () {
+        const that = this;
+        let arr;
+    },
+    // 监听用户是否登录
+    watchLogin: async function () {
+        const that = this;
+        wx.getStorage({
+            key: 'user',
+            success: async res => {
+                let data = res.data;
+                // 教练与学校的关系
+                // const school = await app.$get(`/rcs`, { coach_id: form.coach_id });
+                // if (school.errcode == '0' && school.total > 0) { form.school_id = school.data[0].school_id }
+                // let form = { coach_id: data.info.id };
+
+                // else { wx.showToast({ title: `缺少必要信息`, icon: 'error', duration: 2000 }) };
+                // that.setData({ form })
+            },
+            fail: async res => {
+                wx.redirectTo({ url: '/pages/index/index' })
+            }
+        })
+    },
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload: function () {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh: function () {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom: function () {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage: function () {
+
+    }
+})

+ 6 - 0
pages/coaAdmin/course/add.json

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

+ 34 - 0
pages/coaAdmin/course/add.less

@@ -0,0 +1,34 @@
+.main {
+    background-color: var(--mainColor);
+
+    .one {
+        .content {
+            display: flex;
+            flex-direction: row;
+            border-bottom: 1px dashed var(--f1Color);
+            padding: 2vw 0;
+            margin: 0 2vw 2vw 2vw;
+
+            .value {
+                flex-grow: 1;
+                color: var(--blackColor);
+
+                textarea {
+                    position: static;
+                    width: 73vw;
+                }
+            }
+        }
+
+        .btn {
+            text-align: center;
+            margin: 5vw 0 0 0;
+
+            button {
+                width: 40vw;
+                margin: 0 2vw;
+                padding: 1vw 0;
+            }
+        }
+    }
+}

+ 17 - 0
pages/coaAdmin/course/add.wxml

@@ -0,0 +1,17 @@
+<mobile-main frameStyle="{{frameStyle}}" bind:back="back">
+    <view slot="info" class="container main">
+        <view class="one">
+            <form catchsubmit="onSubmit">
+                <view class="content">
+                    <view class="label">学校id:</view>
+                    <view class="value">
+                        <input type="text" name="school_id" value="{{form.school_id}}" placeholder="请输入学校id" />
+                    </view>
+                </view>
+                <view class="btn">
+                    <button type="primary" size="mini" formType="submit">提交保存</button>
+                </view>
+            </form>
+        </view>
+    </view>
+</mobile-main>

+ 27 - 0
pages/coaAdmin/course/add.wxss

@@ -0,0 +1,27 @@
+.main {
+  background-color: var(--mainColor);
+}
+.main .one .content {
+  display: flex;
+  flex-direction: row;
+  border-bottom: 1px dashed var(--f1Color);
+  padding: 2vw 0;
+  margin: 0 2vw 2vw 2vw;
+}
+.main .one .content .value {
+  flex-grow: 1;
+  color: var(--blackColor);
+}
+.main .one .content .value textarea {
+  position: static;
+  width: 73vw;
+}
+.main .one .btn {
+  text-align: center;
+  margin: 5vw 0 0 0;
+}
+.main .one .btn button {
+  width: 40vw;
+  margin: 0 2vw;
+  padding: 1vw 0;
+}

+ 145 - 0
pages/coaAdmin/course/list.js

@@ -0,0 +1,145 @@
+const app = getApp()
+const moment = require("../../../utils/moment.min")
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+        frameStyle: { useTop: true, name: '提现申请', leftArrow: true, useBar: false },
+        list: [],
+        total: 0,
+        page: 0,
+        skip: 0,
+        limit: 5,
+        // 课程类型
+        typeList: [],
+        // 状态
+        statusList: []
+    },
+    // 返回
+    back: function () {
+        wx.navigateBack({ delta: 1 })
+    },
+    //添加信息,信息维护
+    toCommon: function (e) {
+        const that = this;
+        const { item, route } = e.currentTarget.dataset;
+        that.setData({ skip: 0, page: 0, list: [] });
+        wx.navigateTo({ url: `/pages/${route}?id=${item && item._id ? item._id : ''}` })
+    },
+    // 分页
+    toPage: function () {
+        const that = this;
+        let list = that.data.list;
+        let limit = that.data.limit;
+        if (that.data.total > list.length) {
+            wx.showLoading({ title: '加载中', mask: true })
+            let page = that.data.page + 1;
+            that.setData({ page: page })
+            let skip = page * limit;
+            that.setData({ skip: skip })
+            that.watchLogin();
+            wx.hideLoading()
+        } else { wx.showToast({ title: '没有更多数据了', icon: 'none', duration: 2000 }) }
+    },
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad: function (options) {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow: async function () {
+        const that = this;
+        // 查询其他信息
+        await that.searchOther();
+        // 监听用户是否登录
+        await that.watchLogin();
+    },
+    // 查询其他信息
+    searchOther: async function () {
+        const that = this;
+        let arr;
+        // 课程类型
+        arr = await app.$get(`/dict`, { code: 'lesson_type' });
+        if (arr.errcode == '0' && arr.total > 0) that.setData({ typeList: arr.data[0].list });
+        // 审核状态
+        arr = await app.$get(`/dict`, { code: 'lesson_status' })
+        if (arr.errcode == '0' && arr.total > 0) that.setData({ statusList: arr.data[0].list });
+    },
+    // 监听用户是否登录
+    watchLogin: async function () {
+        const that = this;
+        let typeList = that.data.typeList;
+        let statusList = that.data.statusList;
+        wx.getStorage({
+            key: 'user',
+            success: async res => {
+                let info = { skip: that.data.skip, limit: that.data.limit };
+                let arr = await app.$get(`/lesson`, { ...info });
+                if (arr.errcode == '0') {
+                    let list = [...that.data.list, ...arr.data];
+                    for (const val of list) {
+                        // 课程类型
+                        let type = typeList.find(i => i.value == val.type);
+                        if (type) val.zhType = type.label;
+                        // 课程状态
+                        let status = statusList.find(i => i.value == val.type);
+                        if (status) val.zhStatus = status.label;
+                    }
+                    that.setData({ list: list })
+                    that.setData({ total: arr.total })
+                } else { wx.showToast({ title: `${arr.errmsg}`, icon: 'error', duration: 2000 }) }
+            },
+            fail: async res => {
+                wx.redirectTo({ url: '/pages/index/index' })
+            }
+        })
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload: function () {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh: function () {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom: function () {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage: function () {
+
+    }
+})

+ 6 - 0
pages/coaAdmin/course/list.json

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

+ 90 - 0
pages/coaAdmin/course/list.less

@@ -0,0 +1,90 @@
+.main {
+    height: var(--twoHeight);
+    background-color: var(--mainColor);
+
+    .one {
+        display: flex;
+        flex-direction: row;
+        padding: 2vw;
+        border-bottom: 1px solid var(--f1Color);
+
+        .one_1 {
+            flex-grow: 1;
+
+            input {
+                padding: 1vw 0 2vw 2vw;
+                background-color: var(--f1Color);
+                border-radius: 5px;
+            }
+        }
+
+        .one_2 {
+            width: 20vw;
+
+            button {
+                width: 100%;
+                padding: 2vw;
+                font-size: var(--font14Size);
+            }
+        }
+    }
+
+    .two {
+        flex-grow: 1;
+        position: relative;
+        width: 96vw;
+        margin: 2vw;
+        background-color: var(--mainColor);
+
+        .list {
+            display: flex;
+            flex-direction: column;
+            border: 2px dashed var(--f1Color);
+            padding: 2vw;
+            margin: 0 0 2vw 0;
+            border-radius: 10px;
+
+            .name {
+                font-size: var(--font16Szie);
+                font-weight: bold;
+                margin: 0 0 2vw 0;
+            }
+
+            .other {
+                margin: 0 0 2vw 0;
+
+                .other_1 {
+                    font-size: var(--font14Szie);
+                    margin: 0 0 1vw 0;
+
+                    text:first-child {
+                        color: var(--f85Color);
+                    }
+                }
+            }
+
+            .btn {
+                margin: 2vw 0 0 0;
+                text-align: center;
+
+                button {
+                    margin: 0 2vw;
+                }
+            }
+        }
+
+    }
+}
+
+.scroll-view {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+
+    .list-scroll-view {
+        display: flex;
+        flex-direction: column;
+    }
+}

+ 30 - 0
pages/coaAdmin/course/list.wxml

@@ -0,0 +1,30 @@
+<mobile-main frameStyle="{{frameStyle}}" bind:back="back">
+    <view slot="info" class="container main">
+        <view class="one">
+            <view class="one_1">
+                <input type="text" placeholder="请输入关键词" />
+            </view>
+            <view class="one_2">
+                <button type="primary" bindtap="toCommon" data-route="coaAdmin/course/add">添加</button>
+            </view>
+        </view>
+        <view class="two">
+            <scroll-view scroll-y="true" class="scroll-view" bindscrolltolower="toPage">
+                <view class="list-scroll-view">
+                    <view class="list" wx:for="{{list}}" wx:key="item">
+                        <view class="name">{{item.title}}</view>
+                        <view class="other">
+                            <view class="other_1"><text>课程时间:</text><text>{{item.time_start}}至{{item.time_end}}</text></view>
+                            <view class="other_1"><text>课程类型:</text><text>{{item.zhType}}</text></view>
+                            <view class="other_1"><text>审核状态:</text><text>{{item.zhStatus}}</text></view>
+                        </view>
+                        <view class="btn">
+                            <button size="mini" type="primary" bindtap="toCommon" data-item="{{item}}" data-route="coaAdmin/course/info">详细信息</button>
+                            <button size="mini" type="primary" bindtap="toCommon" data-item="{{item}}" data-route="coaAdmin/course/add" wx:if="{{item.type=='1'}}">信息维护</button>
+                        </view>
+                    </view>
+                </view>
+            </scroll-view>
+        </view>
+    </view>
+</mobile-main>

+ 74 - 0
pages/coaAdmin/course/list.wxss

@@ -0,0 +1,74 @@
+.main {
+  height: var(--twoHeight);
+  background-color: var(--mainColor);
+}
+.main .one {
+  display: flex;
+  flex-direction: row;
+  padding: 2vw;
+  border-bottom: 1px solid var(--f1Color);
+}
+.main .one .one_1 {
+  flex-grow: 1;
+}
+.main .one .one_1 input {
+  padding: 1vw 0 2vw 2vw;
+  background-color: var(--f1Color);
+  border-radius: 5px;
+}
+.main .one .one_2 {
+  width: 20vw;
+}
+.main .one .one_2 button {
+  width: 100%;
+  padding: 2vw;
+  font-size: var(--font14Size);
+}
+.main .two {
+  flex-grow: 1;
+  position: relative;
+  width: 96vw;
+  margin: 2vw;
+  background-color: var(--mainColor);
+}
+.main .two .list {
+  display: flex;
+  flex-direction: column;
+  border: 2px dashed var(--f1Color);
+  padding: 2vw;
+  margin: 0 0 2vw 0;
+  border-radius: 10px;
+}
+.main .two .list .name {
+  font-size: var(--font16Szie);
+  font-weight: bold;
+  margin: 0 0 2vw 0;
+}
+.main .two .list .other {
+  margin: 0 0 2vw 0;
+}
+.main .two .list .other .other_1 {
+  font-size: var(--font14Szie);
+  margin: 0 0 1vw 0;
+}
+.main .two .list .other .other_1 text:first-child {
+  color: var(--f85Color);
+}
+.main .two .list .btn {
+  margin: 2vw 0 0 0;
+  text-align: center;
+}
+.main .two .list .btn button {
+  margin: 0 2vw;
+}
+.scroll-view {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+.scroll-view .list-scroll-view {
+  display: flex;
+  flex-direction: column;
+}

+ 66 - 0
pages/coaAdmin/incomestat/list.js

@@ -0,0 +1,66 @@
+// pages/coaAdmin/incomestat/list.js
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {
+
+    }
+})

+ 3 - 0
pages/coaAdmin/incomestat/list.json

@@ -0,0 +1,3 @@
+{
+    "usingComponents": {}
+}

+ 0 - 0
pages/coaAdmin/incomestat/list.less


+ 2 - 0
pages/coaAdmin/incomestat/list.wxml

@@ -0,0 +1,2 @@
+<!--pages/coaAdmin/incomestat/list.wxml-->
+<text>pages/coaAdmin/incomestat/list.wxml</text>

+ 1 - 0
pages/coaAdmin/incomestat/list.wxss

@@ -0,0 +1 @@
+/* pages/coaAdmin/incomestat/list.wxss */

+ 66 - 0
pages/coaAdmin/lecturestat/list.js

@@ -0,0 +1,66 @@
+// pages/coaAdmin/lecturestat/list.js
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {
+
+    }
+})

+ 3 - 0
pages/coaAdmin/lecturestat/list.json

@@ -0,0 +1,3 @@
+{
+    "usingComponents": {}
+}

+ 0 - 0
pages/coaAdmin/lecturestat/list.less


+ 2 - 0
pages/coaAdmin/lecturestat/list.wxml

@@ -0,0 +1,2 @@
+<!--pages/coaAdmin/lecturestat/list.wxml-->
+<text>pages/coaAdmin/lecturestat/list.wxml</text>

+ 1 - 0
pages/coaAdmin/lecturestat/list.wxss

@@ -0,0 +1 @@
+/* pages/coaAdmin/lecturestat/list.wxss */

+ 66 - 0
pages/coaAdmin/student/list.js

@@ -0,0 +1,66 @@
+// pages/coaAdmin/mystudent/list.js
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {
+
+    }
+})

+ 3 - 0
pages/coaAdmin/student/list.json

@@ -0,0 +1,3 @@
+{
+    "usingComponents": {}
+}

+ 0 - 0
pages/coaAdmin/student/list.less


+ 2 - 0
pages/coaAdmin/student/list.wxml

@@ -0,0 +1,2 @@
+<!--pages/coaAdmin/mystudent/list.wxml-->
+<text>pages/coaAdmin/mystudent/list.wxml</text>

+ 1 - 0
pages/coaAdmin/student/list.wxss

@@ -0,0 +1 @@
+/* pages/coaAdmin/mystudent/list.wxss */

+ 66 - 0
pages/coaAdmin/studentstat/list.js

@@ -0,0 +1,66 @@
+// pages/coaAdmin/studentstat/list.js
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {
+
+    }
+})

+ 3 - 0
pages/coaAdmin/studentstat/list.json

@@ -0,0 +1,3 @@
+{
+    "usingComponents": {}
+}

+ 0 - 0
pages/coaAdmin/studentstat/list.less


+ 2 - 0
pages/coaAdmin/studentstat/list.wxml

@@ -0,0 +1,2 @@
+<!--pages/coaAdmin/studentstat/list.wxml-->
+<text>pages/coaAdmin/studentstat/list.wxml</text>

+ 1 - 0
pages/coaAdmin/studentstat/list.wxss

@@ -0,0 +1 @@
+/* pages/coaAdmin/studentstat/list.wxss */

+ 66 - 0
pages/schAdmin/coachprofit/list.js

@@ -0,0 +1,66 @@
+// pages/schAdmin/coachprofit/list.js
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {
+
+    }
+})

+ 3 - 0
pages/schAdmin/coachprofit/list.json

@@ -0,0 +1,3 @@
+{
+    "usingComponents": {}
+}

+ 0 - 0
pages/schAdmin/coachprofit/list.less


+ 2 - 0
pages/schAdmin/coachprofit/list.wxml

@@ -0,0 +1,2 @@
+<!--pages/schAdmin/coachprofit/list.wxml-->
+<text>pages/schAdmin/coachprofit/list.wxml</text>

+ 1 - 0
pages/schAdmin/coachprofit/list.wxss

@@ -0,0 +1 @@
+/* pages/schAdmin/coachprofit/list.wxss */

+ 3 - 3
pages/setting/basic.js

@@ -122,14 +122,14 @@ Page({
     /**
      * 生命周期函数--监听页面加载
      */
-    onLoad: function (options) {
+    onLoad: async function (options) {
         const that = this;
         //验证规则函数
         that.initValidate();
         // 查询其他信息
-        that.searchOther();
+        await that.searchOther();
         // 监听用户是否登录
-        that.watchLogin();
+        await that.watchLogin();
     },
     searchOther: async function () {
         const that = this;

+ 0 - 1
pages/superAdmin/coach/add.less

@@ -1,6 +1,5 @@
 .main {
     background-color: var(--mainColor);
-    height: var(--twoHeight);
 
     .one {
         flex-grow: 1;

+ 0 - 1
pages/superAdmin/coach/add.wxss

@@ -1,6 +1,5 @@
 .main {
   background-color: var(--mainColor);
-  height: var(--twoHeight);
 }
 .main .one {
   flex-grow: 1;

+ 29 - 2
utils/dict.js

@@ -54,7 +54,8 @@ export const school_menu = [
                 btn: [
                     { title: '学校信息', route: 'schAdmin/school/info', icon: 'icon-xuexiao_xuexiaoxinxi' },
                     { title: '教练信息', route: 'schAdmin/coach/list', icon: 'icon-jiaolian1' },
-                    { title: '审批教练费', route: 'schAdmin/coachexam/list', icon: 'icon-tianshenpi' },
+                    // { title: '审批教练费', route: 'schAdmin/coachexam/list', icon: 'icon-tianshenpi' },
+                    { title: '教练收益管理', route: 'schAdmin/coachprofit/list', icon: 'icon-tianshenpi' },
                     { title: '学员信息', route: 'schAdmin/student/list', icon: 'icon-zaiduxueyuan' },
                     { title: '入学审核', route: 'schAdmin/studentexam/list', icon: 'icon-shenhe' },
                 ]
@@ -82,7 +83,33 @@ export const school_menu = [
     },
     {
         type: '2',
-        menu: []
+        menu: [
+            {
+                title: '教练信息',
+                icon: 'icon-xuexiao',
+                btn: [
+                    { title: '个人档案', route: 'coaAdmin/archives/info', icon: 'icon-xuexiao_xuexiaoxinxi' },
+                    { title: '提现申请', route: 'coaAdmin/cashout/list', icon: 'icon-xuexiao_xuexiaoxinxi' },
+                ]
+            },
+            {
+                title: '课程信息',
+                icon: 'icon-yonghu',
+                btn: [
+                    { title: '课程管理', route: 'coaAdmin/course/list', icon: 'icon-xuexiao_xuexiaoxinxi' },
+                    { title: '学员信息', route: 'coaAdmin/student/list', icon: 'icon-xuexiao_xuexiaoxinxi' },
+                ]
+            },
+            {
+                title: '统计分析',
+                icon: 'icon-tongji',
+                btn: [
+                    { title: '授课情况', route: 'coaAdmin/lecturestat/list', icon: 'icon-navicon-srtj' },
+                    { title: '收入情况', route: 'coaAdmin/incomestat/list', icon: 'icon-tongjijisuan' },
+                    { title: '学员情况', route: 'coaAdmin/studentstat/list', icon: 'icon-tongjifenxi-changguitongji' },
+                ]
+            },
+        ]
     },
     {
         type: '3',