guhongwei 2 rokov pred
rodič
commit
b4d46e06ac

+ 3 - 0
app.json

@@ -110,6 +110,9 @@
                 "matchAdmin/group/add",
                 "matchAdmin/project/list",
                 "matchAdmin/project/add",
+                "matchAdmin/sign/list",
+                "matchAdmin/sign/add",
+                "matchAdmin/sign/info",
                 "matchAdmin/teamapply/list",
                 "matchAdmin/mtgroup/list",
                 "matchAdmin/mtgroup/add",

+ 201 - 0
pagesMatch/matchAdmin/sign/add.js

@@ -0,0 +1,201 @@
+const app = getApp()
+import { pay_status } from '../../../utils/dict';
+import WxValidate from '../../../utils/wxValidate';
+Page({
+    data: {
+        frameStyle: { useTop: true, name: '信息维护', leftArrow: true, useBar: false },
+        form: {},
+        //比赛列表
+        matchList: [],
+        // 赛事组别
+        groupList: [],
+        // 组内项目
+        projectList: [],
+        // 用户列表
+        userList: [],
+        statusList: pay_status
+    },
+    initValidate() {
+        const rules = { match_id: { required: true } }
+        // 验证字段的提示信息,若不传则调用默认的信息
+        const messages = { match_id: { required: '赛事名称' } };
+        this.WxValidate = new WxValidate(rules, messages)
+    },
+    // 返回
+    back: function () {
+        wx.navigateBack({ delta: 1 })
+    },
+    // 赛事
+    matchChange: async function (e) {
+        const that = this;
+        let data = that.data.matchList[e.detail.value];
+        if (data) {
+            that.setData({ 'form.match_id': data._id, 'form.match_name': data.name });
+            const arr = await app.$get(`/matchGroup`, { match_id: data._id }, 'race');
+            if (arr.errcode == '0') { that.setData({ groupList: arr.data }) }
+        }
+    },
+    // 组别
+    groupChange: async function (e) {
+        const that = this;
+        let data = that.data.groupList[e.detail.value];
+        if (data) {
+            that.setData({ 'form.group_id': data._id, 'form.group_name': data.name });
+            const arr = await app.$get(`/matchProject`, { match_id: data.match_id, group_id: data._id }, 'race');
+            if (arr.errcode == '0') { that.setData({ projectList: arr.data }) }
+        }
+    },
+    // 项目
+    projectChange: async function (e) {
+        const that = this;
+        let data = that.data.projectList[e.detail.value];
+        if (data) {
+            that.setData({ 'form.project_id': data._id, 'form.project_name': data.name });
+        }
+    },
+    // 用户
+    userChange: async function (e) {
+        const that = this;
+        let data = that.data.userList[e.detail.value];
+        if (data) {
+            that.setData({ 'form.user_id': data._id, 'form.user_name': data.user_id.name });
+        }
+    },
+    // 选择状态
+    statusChange: async function (e) {
+        const that = this;
+        let data = that.data.statusList[e.detail.value];
+        if (data) {
+            that.setData({ 'form.pay_status': data.value, 'form.zhpay_status': data.label });
+        }
+    },
+    //提交
+    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 {
+            let arr;
+            if (params._id) { arr = await app.$post(`/matchSign/${params._id}`, params, 'race') }
+            else { arr = await app.$post(`/matchSign`, params, 'race') }
+            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: 'raceuser',
+            success: async res => {
+                let arr;
+                arr = await app.$get(`/match`, { belong_id: '630ec0480a92b0a015ccfbe1' }, 'race');
+                if (arr.errcode == '0') that.setData({ matchList: arr.data });
+                // 用户列表
+                arr = await app.$get(`/user`, { type: '0' }, 'race');
+                if (arr.errcode == '0') {
+                    for (const val of arr.data) { val.user_id_name = val.user_id.name; };
+                    that.setData({ userList: arr.data })
+                }
+                if (that.data.id) {
+                    const arr = await app.$get(`/matchSign/${that.data.id}`, {}, 'race');
+                    if (arr.errcode == '0') {
+                        let form = arr.data;
+                        let aee;
+                        // 查询赛事
+                        aee = await app.$get(`/match/${form.match_id}`, {}, 'race')
+                        if (aee.errcode == '0') { form.match_name = aee.data.name; }
+                        // 查询组别
+                        aee = await app.$get(`/matchGroup/${form.group_id}`, {}, 'race')
+                        if (aee.errcode == '0') { form.group_name = aee.data.name; }
+                        // 查询项目
+                        aee = await app.$get(`/matchProject/${form.project_id}`, {}, 'race')
+                        if (aee.errcode == '0') { form.project_name = aee.data.name; }
+                        // 报名用户
+                        aee = await app.$get(`/user/${form.user_id}`, {}, 'race')
+                        if (aee.errcode == '0') {
+                            form.user_id = aee.data;
+                            // 查询用户信息
+                            const user = await app.$get(`/user/${aee.data.user_id}`);
+                            if (user.errcode == '0') { form.user_name = user.data.name }
+                        }
+                        // 查询支付状态
+                        form.zhpay_status = that.searchStatus(form.pay_status);
+                        that.setData({ form })
+                    }
+                };
+            },
+            fail: async res => {
+                wx.redirectTo({ url: '/pages/index/index' })
+            }
+        })
+    },
+    // 查询状态
+    searchStatus: function (e) {
+        let data = pay_status.find(i => i.value == e);
+        if (data) return data.label;
+        else return '暂无';
+    },
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload: function () {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh: function () {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom: function () {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage: function () {
+
+    }
+})

+ 6 - 0
pagesMatch/matchAdmin/sign/add.json

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

+ 34 - 0
pagesMatch/matchAdmin/sign/add.less

@@ -0,0 +1,34 @@
+@import (css) "/app.wxss";
+
+.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: 72vw;
+                }
+            }
+        }
+
+        .btn {
+            text-align: center;
+            margin: 3vw 0;
+
+            button {
+                margin: 0 2vw;
+            }
+        }
+    }
+}

+ 57 - 0
pagesMatch/matchAdmin/sign/add.wxml

@@ -0,0 +1,57 @@
+<mobile-main frameStyle="{{frameStyle}}" bind:back="back">
+    <view slot="info" class="container main">
+        <view class="one">
+            <form catchsubmit="onSubmit">
+                <view class="content" style="display: none;">
+                    <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">
+                        <picker bindchange="matchChange" name="match_id" value="{{form.match_id}}" range-key='name' range="{{matchList}}">
+                            <view class="picker">{{form.match_name||'请选择赛事'}}</view>
+                        </picker>
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">赛事组别:</view>
+                    <view class="value">
+                        <picker bindchange="groupChange" name="group_id" value="{{form.group_id}}" range-key='name' range="{{groupList}}">
+                            <view class="picker">{{form.group_name||'请选择赛事组别'}}</view>
+                        </picker>
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">组内项目:</view>
+                    <view class="value">
+                        <picker bindchange="projectChange" name="project_id" value="{{form.project_id}}" range-key='name' range="{{projectList}}">
+                            <view class="picker">{{form.project_name||'请选择组内项目'}}</view>
+                        </picker>
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">选择用户:</view>
+                    <view class="value">
+                        <picker bindchange="userChange" name="user_id" value="{{form.user_id}}" range-key='user_id_name' range="{{userList}}">
+                            <view class="picker">{{form.user_name||'请选择用户'}}</view>
+                        </picker>
+                    </view>
+                </view>
+                <view class="content">
+                    <view class="label">账单状态:</view>
+                    <view class="value">
+                        <picker bindchange="statusChange" name="pay_status" value="{{form.pay_status}}" range-key='label' range="{{statusList}}">
+                            <view class="picker">{{form.zhpay_status||'请选择账单状态'}}</view>
+                        </picker>
+                    </view>
+                </view>
+                <view class="btn">
+                    <button type="primary" size="mini" formType="submit">提交保存</button>
+                </view>
+            </form>
+        </view>
+    </view>
+</mobile-main>

+ 26 - 0
pagesMatch/matchAdmin/sign/add.wxss

@@ -0,0 +1,26 @@
+@import "/app.wxss";
+.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: 72vw;
+}
+.main .one .btn {
+  text-align: center;
+  margin: 3vw 0;
+}
+.main .one .btn button {
+  margin: 0 2vw;
+}

+ 112 - 0
pagesMatch/matchAdmin/sign/info.js

@@ -0,0 +1,112 @@
+const app = getApp();
+import { pay_status } from "../../../utils/dict";
+
+Page({
+    data: {
+        frameStyle: { useTop: true, name: '详细信息', leftArrow: true, useBar: false },
+        id: '',
+        form: {}
+    },
+    // 返回
+    back: function () { wx.navigateBack({ delta: 1 }) },
+
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad: function (options) {
+        const that = this;
+        that.setData({ id: options.id || '' })
+        // 监听用户是否登录
+        that.watchLogin();
+    },
+    // 监听用户是否登录
+    watchLogin: async function () {
+        const that = this;
+        wx.getStorage({
+            key: 'user',
+            success: async res => {
+                if (that.data.id) {
+                    const arr = await app.$get(`/matchSign/${that.data.id}`, {}, 'race');
+                    if (arr.errcode == '0') {
+                        let form = arr.data;
+                        let aee;
+                        // 查询赛事
+                        aee = await app.$get(`/match/${form.match_id}`, {}, 'race')
+                        if (aee.errcode == '0') { form.match_id = aee.data; }
+                        // 查询组别
+                        aee = await app.$get(`/matchGroup/${form.group_id}`, {}, 'race')
+                        if (aee.errcode == '0') { form.group_id = aee.data; }
+                        // 查询项目
+                        aee = await app.$get(`/matchProject/${form.project_id}`, {}, 'race')
+                        if (aee.errcode == '0') { form.project_id = aee.data; }
+                        // 查询支付订单
+                        if (form.pay_id) {
+                            aee = await app.$get(`/payOrder/${form.pay_id}`, {}, 'race')
+                            if (aee.errcode == '0') { form.pay_id = aee.data; }
+                        }
+                        // 报名用户
+                        aee = await app.$get(`/user/${form.user_id}`, {}, 'race')
+                        if (aee.errcode == '0') {
+                            form.user_id = aee.data;
+                            // 查询用户信息
+                            const user = await app.$get(`/user/${aee.data.user_id}`);
+                            if (user.errcode == '0') { form.user_id.user_id = user.data }
+                        }
+                        // 查询支付状态
+                        form.zhpay_status = that.searchStatus(form.pay_status);
+                        console.log(form);
+                        that.setData({ form })
+                    }
+                }
+            },
+            fail: async res => {
+                wx.redirectTo({ url: '/pages/index/index' })
+            }
+        })
+    },
+    // 查询状态
+    searchStatus: function (e) {
+        let data = pay_status.find(i => i.value == e);
+        if (data) return data.label;
+        else return '暂无';
+    },
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady: function () { },
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow: function () { },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload: function () {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh: function () {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage: function () {
+
+    }
+})

+ 6 - 0
pagesMatch/matchAdmin/sign/info.json

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

+ 28 - 0
pagesMatch/matchAdmin/sign/info.less

@@ -0,0 +1,28 @@
+@import (css) "/app.wxss";
+
+.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);
+            }
+
+            image {
+                width: 80px;
+                height: 80px;
+            }
+        }
+    }
+
+
+}

+ 34 - 0
pagesMatch/matchAdmin/sign/info.wxml

@@ -0,0 +1,34 @@
+<mobile-main frameStyle="{{frameStyle}}" bind:back="back">
+    <view slot="info" class="container main">
+        <view class="one">
+            <view class="content">
+                <view class="label">赛事名称:</view>
+                <view class="value">{{form.match_id.name||'暂无'}} </view>
+            </view>
+            <view class="content">
+                <view class="label">赛事组别:</view>
+                <view class="value">{{form.group_id.name||'暂无'}} </view>
+            </view>
+            <view class="content">
+                <view class="label">组内项目:</view>
+                <view class="value">{{form.project_id.name||'暂无'}} </view>
+            </view>
+            <view class="content">
+                <view class="label">报名用户:</view>
+                <view class="value">{{form.user_id.user_id.name||'暂无'}} </view>
+            </view>
+            <view class="content">
+                <view class="label">支付金额:</view>
+                <view class="value">{{form.pay_id.money||'暂无'}} </view>
+            </view>
+            <view class="content">
+                <view class="label">支付时间:</view>
+                <view class="value">{{form.pay_id.time||'暂无'}} </view>
+            </view>
+            <view class="content">
+                <view class="label">支付状态:</view>
+                <view class="value">{{form.zhpay_status}} </view>
+            </view>
+        </view>
+    </view>
+</mobile-main>

+ 19 - 0
pagesMatch/matchAdmin/sign/info.wxss

@@ -0,0 +1,19 @@
+@import "/app.wxss";
+.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 image {
+  width: 80px;
+  height: 80px;
+}

+ 147 - 0
pagesMatch/matchAdmin/sign/list.js

@@ -0,0 +1,147 @@
+const app = getApp();
+import { pay_status } from "../../../utils/dict";
+Page({
+    data: {
+        frameStyle: { useTop: true, name: '基本页面', leftArrow: true, useBar: false },
+        // 赛事列表
+        matchList: [],
+        match: {},
+        list: [],
+        total: 0,
+        page: 0,
+        skip: 0,
+        limit: 5,
+    },
+    // 返回
+    back: function () { wx.navigateBack({ delta: 1 }) },
+    // 选择赛事
+    toChange: function (e) {
+        const that = this;
+        let data = that.data.matchList[e.detail.value];
+        if (data) { that.setData({ 'match.id': data._id, 'match.name': data.name }); that.search() }
+    },
+    // 手动添加
+    toCommon: function (e) {
+        const that = this;
+        const { item, route } = e.currentTarget.dataset;
+        that.setData({ skip: 0, page: 0, list: [] });
+        that.setData({ match: {} });
+        wx.navigateTo({ url: `/pagesMatch/${route}?id=${item && item._id ? item._id : ''}` })
+    },
+    // 删除
+    toDel: function (e) {
+        const that = this;
+        const { item } = e.currentTarget.dataset;
+        wx.showModal({
+            title: '提示',
+            content: '是否确认删除该条数据?',
+            async success(res) {
+                if (res.confirm) {
+                    const arr = await app.$delete(`/matchSign/${item._id}`, {}, 'race');
+                    if (arr.errcode == '0') {
+                        wx.showToast({ title: `删除信息成功`, icon: 'success', duration: 2000 })
+                        that.setData({ skip: 0, page: 0, list: [] })
+                        that.search()
+                    } else {
+                        wx.showToast({ title: `${arr.errmsg}`, icon: 'error', duration: 2000 })
+                    }
+                }
+            }
+        })
+    },
+    // 查询数据
+    search: async function () {
+        const that = this;
+        let info = { skip: that.data.skip, limit: that.data.limit, match_id: that.data.match.id }
+        const arr = await app.$get(`/matchSign`, { ...info }, 'race');
+        if (arr.errcode == '0') {
+            let list = [...that.data.list, ...arr.data];
+            for (const val of list) { val.zhpay_status = that.searchStatus(val.pay_status) }
+            that.setData({ list })
+            that.setData({ total: arr.total })
+        }
+    },
+    // 查询状态
+    searchStatus: function (e) {
+        let data = pay_status.find(i => i.value == e);
+        if (data) return data.label;
+        else return '暂无';
+    },
+
+    // 分页
+    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.search();
+            wx.hideLoading()
+        } else { wx.showToast({ title: '没有更多数据了', icon: 'none', duration: 2000 }) }
+    },
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad: function (options) { },
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady: function () { },
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow: function () {
+        const that = this;
+        // 监听用户是否登录
+        that.watchLogin();
+    },
+    // 监听用户是否登录
+    watchLogin: async function () {
+        const that = this;
+        wx.getStorage({
+            key: 'user',
+            success: async res => {
+                let arr;
+                arr = await app.$get(`/match`, { belong_id: '630ec0480a92b0a015ccfbe1' }, 'race');
+                if (arr.errcode == '0') that.setData({ matchList: arr.data })
+            },
+            fail: async res => {
+                wx.redirectTo({ url: '/pages/index/index' })
+            }
+        })
+    },
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide: function () {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload: function () {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh: function () {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage: function () {
+
+    }
+})

+ 6 - 0
pagesMatch/matchAdmin/sign/list.json

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

+ 92 - 0
pagesMatch/matchAdmin/sign/list.less

@@ -0,0 +1,92 @@
+@import (css) "/app.wxss";
+
+.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: 44vw;
+            display: flex;
+
+            button {
+                width: 22vw;
+                padding: 2vw 0;
+                font-size: var(--font14Size);
+                margin: 0 1vw;
+            }
+        }
+    }
+
+    .two {
+        position: relative;
+        flex-grow: 1;
+        background-color: var(--whiteColor);
+        padding: 0 2vw;
+
+        .list {
+            background-color: var(--f9Color);
+            margin: 0 0 2vw 0;
+            padding: 2vw;
+            margin: 0 2vw 2vw 2vw;
+            border-radius: 5px;
+
+            .name {
+                font-size: var(--font16Szie);
+                font-weight: bold;
+                margin: 0 0 1vw 0;
+            }
+
+            .other {
+                margin: 0 0 1vw 0;
+
+                .other_1 {
+                    margin: 0 0 1vw 0;
+                    font-size: var(--font16Size);
+
+                    text:first-child {
+                        color: var(--f85Color);
+                    }
+                }
+            }
+
+            .btn {
+                text-align: center;
+
+                button {
+                    margin: 0 2vw;
+                    font-size: var(--font14Size);
+                }
+            }
+        }
+    }
+
+}
+
+.scroll-view {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+
+    .list-scroll-view {
+        display: flex;
+        flex-direction: column;
+    }
+}

+ 51 - 0
pagesMatch/matchAdmin/sign/list.wxml

@@ -0,0 +1,51 @@
+<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">
+                <picker mode="selector" bindchange="toChange" name="id" value="{{match.id}}" range="{{matchList}}" range-key="name">
+                    <button type="primary" class="textOver">{{match.name||'选择赛事'}}</button>
+                </picker>
+                <button type="primary" bindtap="toCommon" data-route="matchAdmin/sign/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="index">
+                        <view class="name">{{item.user_name}}</view>
+                        <view class="other">
+                            <view class="other_1">
+                                <text>赛事组别:</text>
+                                <text>{{item.group_id_name||'暂无'}}</text>
+                            </view>
+                            <view class="other_1">
+                                <text>组内项目:</text>
+                                <text>{{item.project_id_name||'暂无'}}</text>
+                            </view>
+                            <view class="other_1">
+                                <text>支付金额:</text>
+                                <text>{{item.pay_id.money||'暂无'}}</text>
+                            </view>
+                            <view class="other_1">
+                                <text>支付时间:</text>
+                                <text>{{item.pay_id.time||'暂无'}}</text>
+                            </view>
+                            <view class="other_1">
+                                <text>支付状态:</text>
+                                <text>{{item.zhpay_status||'暂无'}}</text>
+                            </view>
+                        </view>
+                        <view class="btn">
+                            <button type="primary" size="mini" bindtap="toCommon" data-route="matchAdmin/sign/info" data-item="{{item}}">详细信息</button>
+                            <button type="primary" size="mini" bindtap="toCommon" data-route="matchAdmin/sign/add" data-item="{{item}}" wx:if="{{!item.pay_id}}">信息维护</button>
+                            <button type="warn" size="mini" bindtap="toDel" data-item="{{item}}" wx:if="{{!item.pay_id}}">信息删除</button>
+                        </view>
+                    </view>
+                </view>
+            </scroll-view>
+        </view>
+    </view>
+</mobile-main>

+ 75 - 0
pagesMatch/matchAdmin/sign/list.wxss

@@ -0,0 +1,75 @@
+@import "/app.wxss";
+.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: 44vw;
+  display: flex;
+}
+.main .one .one_2 button {
+  width: 22vw;
+  padding: 2vw 0;
+  font-size: var(--font14Size);
+  margin: 0 1vw;
+}
+.main .two {
+  position: relative;
+  flex-grow: 1;
+  background-color: var(--whiteColor);
+  padding: 0 2vw;
+}
+.main .two .list {
+  background-color: var(--f9Color);
+  margin: 0 0 2vw 0;
+  padding: 2vw;
+  margin: 0 2vw 2vw 2vw;
+  border-radius: 5px;
+}
+.main .two .list .name {
+  font-size: var(--font16Szie);
+  font-weight: bold;
+  margin: 0 0 1vw 0;
+}
+.main .two .list .other {
+  margin: 0 0 1vw 0;
+}
+.main .two .list .other .other_1 {
+  margin: 0 0 1vw 0;
+  font-size: var(--font16Size);
+}
+.main .two .list .other .other_1 text:first-child {
+  color: var(--f85Color);
+}
+.main .two .list .btn {
+  text-align: center;
+}
+.main .two .list .btn button {
+  margin: 0 2vw;
+  font-size: var(--font14Size);
+}
+.scroll-view {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+.scroll-view .list-scroll-view {
+  display: flex;
+  flex-direction: column;
+}

+ 1 - 0
utils/dict.js

@@ -195,6 +195,7 @@ export const match_menu = [
                     { title: '比赛信息', route: 'matchAdmin/match/list', icon: 'icon-xuexiao_xuexiaoxinxi' },
                     { title: '赛事组别', route: 'matchAdmin/group/list', icon: 'icon-xuexiao_xuexiaoxinxi' },
                     { title: '组别项目', route: 'matchAdmin/project/list', icon: 'icon-xuexiao_xuexiaoxinxi' },
+                    { title: '报名信息', route: 'matchAdmin/sign/list', icon: 'icon-xuexiao_xuexiaoxinxi' },
                     { title: '组队申请', route: 'matchAdmin/teamapply/list', icon: 'icon-xuexiao_xuexiaoxinxi' },
                     { title: '小组赛组设置', route: 'matchAdmin/mtgroup/list', icon: 'icon-xuexiao_xuexiaoxinxi' },
                     { title: '小组赛赛程设置', route: 'matchAdmin/mtschedule/list', icon: 'icon-xuexiao_xuexiaoxinxi' },