xjc 3 年之前
父節點
當前提交
54f58c416f
共有 6 個文件被更改,包括 1201 次插入2 次删除
  1. 4 0
      src/api.js
  2. 30 0
      src/router.js
  3. 386 0
      src/views/comments/comments.vue
  4. 379 0
      src/views/comments/consult.vue
  5. 400 0
      src/views/signup/index.vue
  6. 2 2
      vue.config.js

+ 4 - 0
src/api.js

@@ -264,4 +264,8 @@ export default {
 	resetInitFund: params => {
 		return axios.post(`${baseURL}/api/admin/reset/initfund`, params)
 	},
+	// 订单列表
+	getSignupList: params => {
+		return axios.get(`${baseURL}/api/admin/signup/list`, { params: params })
+	},
 }

+ 30 - 0
src/router.js

@@ -23,6 +23,36 @@ export default new Router({
       }, ]
     },
     {
+      path: '/signup',
+      name: '报名管理',
+      icon: 'el-icon-pie-chart',
+      component: () => import('./views/Home.vue'),
+      show: 1,
+      isLeaf: 0,
+      children: [{
+        path: '/signup/list',
+        component: () => import('./views/signup/index.vue'),
+        name: '订单管理'
+      }, ]
+    },
+    {
+      path: '/comments',
+      name: '咨询/评论',
+      icon: 'el-icon-pie-chart',
+      component: () => import('./views/Home.vue'),
+      show: 1,
+      isLeaf: 0,
+      children: [{
+        path: '/comments/list',
+        component: () => import('./views/comments/comments.vue'),
+        name: '评论管理'}, 
+        {
+          path: '/consult/list',
+          component: () => import('./views/comments/consult.vue'),
+          name: '顽主咨询'}
+      ]
+    },
+    {
       path: '/match',
       name: '赛事管理',
       icon: 'el-icon-trophy-1',

+ 386 - 0
src/views/comments/comments.vue

@@ -0,0 +1,386 @@
+<style lang="scss">
+    .del{
+            display: inline-block;
+            vertical-align: top;
+            font-size: 28px;
+            font-weight: 500;
+            margin-left: 10px;
+            color: #000;
+            cursor: pointer;
+    }
+</style>
+<template>
+    <section class="content data">
+        <h4>评论管理</h4>
+        <el-divider></el-divider>
+        <el-form label-width="80px" class="filter-form">
+            <el-row>
+                <el-col :span="4">
+                    <el-form-item label="比赛名称" prop="match_id">
+                        <el-select v-model="queryParams.match_id" placeholder="请选择比赛" size="mini" @change="getData()">
+                            <el-option v-for="item in matchList" :key='item.id' :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="3">
+                    <el-form-item label="选手名字">
+                        <el-input clearable @clear="getData()" v-model="queryParams.username" placeholder="请输入选手名字/代码" size="mini"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="4">
+                    <el-form-item style="margin-left:10px;" label-width="10">
+                        <el-button type="primary" @click="getData" size="mini">筛选</el-button>
+                        <el-button type="normal" @click="queryParams={},getData()" size="mini">重置</el-button>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row :gutter="10">
+                <el-col :span="6"></el-col>
+            </el-row>
+        </el-form>
+        <el-table :data="list" height='55vh' style="width: 100%;margin-top:10px;" v-loading='loading'>
+                <el-table-column prop="user_name" label="选手名称"/>
+                <el-table-column prop="user_phone" label="手机号"/>
+                <el-table-column prop="match_name" label="报名赛事"/>
+                <el-table-column prop="signup_type" label="报名类型">
+                    <template slot-scope="scope">
+                        <span v-if="scope.row.signup_type==2" style="color:red;">选手</span>
+                        <span v-else>游客</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="total_fee" label="报名费用"/>
+                <el-table-column prop="order_status" label="订单状态" width="150">
+                    <template slot-scope="scope">
+                        <!-- <span v-if="scope.row.order_status==1" style="color:#67c23a;">已支付</span> -->
+                        <el-button v-if="scope.row.order_status==1" type="success" size="mini">已支付</el-button>
+                        <span v-else>未支付</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="pay_status" label="支付状态" width="150">
+                    <template slot-scope="scope">
+                        <!-- <span v-if="scope.row.pay_status==1" class="color:green;">已支付</span> -->
+                        <el-button v-if="scope.row.order_status==1" type="success" size="mini">已支付</el-button>
+                        <span v-else>未支付</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="pay_time" label="支付时间" width="160" show-overflow-tooltip />
+                <el-table-column prop="ctime" label="下单时间" width="160"/>
+                <el-table-column prop="date" label="操作" fixed="right" width="220">
+                    <template slot-scope="scope">
+                        <el-button @click="edit(scope.row.id)" size="mini" type="warning">编辑</el-button>
+                        <el-button @click="del(scope.row.id)" size="mini" type="danger">删除</el-button>
+                    </template>
+                </el-table-column>
+        </el-table>
+        <Page
+            ref="pageButton"
+            :current="form.page"
+            :page_size="form.page_size"
+            :total="total"
+            @pageChange="gopage"
+        />
+        <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+            <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+                <el-form-item label="赛事名称" prop="match_id">
+                        <el-select v-model="form.match_id" placeholder="请选择比赛">
+                            <el-option v-for="item in matchList" :key='item.id' :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                </el-form-item>
+                <el-form-item label="参赛选手" prop="player_id">
+                    <el-select filterable v-model="form.player_id" placeholder="请选择用户代码">
+                        <el-option v-for="item in playerList" :key='item.id' :label="item.label" :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="持仓日期" prop="stock_date">
+                        <el-date-picker
+                        v-model="form.stock_date"
+                        type="date" style="width:100%"
+                        placeholder="选择日期"
+                        format="yyyy-MM-dd"
+                        value-format="yyyy-MM-dd">
+                        </el-date-picker>
+                </el-form-item>
+                <el-form-item label="今日资产" prop="today_fund">
+                    <el-input clearable v-model="form.today_fund" placeholder="请输入今日资产" type="number">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item v-if="form.id" label="昨日资产" prop="yesterday_fund">
+                    <el-input clearable v-model="form.yesterday_fund" placeholder="请输入昨日资产" type="number">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item v-if="form.id" label="初始资产" prop="init_fund">
+                    <el-input clearable v-model="form.init_fund" placeholder="请输入初始资产" type="number">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="开超市" prop="is_markt">
+                    <el-switch
+                        v-model="form.is_markt">
+                    </el-switch>
+                </el-form-item>
+                <el-form-item label="股票名称" prop="today_stock">
+                    <div v-for="(item,index) in form.today_stock" :key='index' style="margin-bottom:5px;">
+                        <!-- <el-select  filterable v-model="item.name" placeholder="请选择股票" style="width:48%;display:inline-block">
+                            <el-option v-for="item in stockList" :key='item.id' :label="item.label" :value="item.label"></el-option>
+                        </el-select> -->
+                        <el-input style="width:48%;display:inline-block" v-model="item.name" placeholder="请输入股票名称" :disabled="form.is_markt==true"></el-input>
+                        &nbsp;<el-input style="width:39%" clearable v-model="item.fund" placeholder="资金" :disabled="form.is_markt==true">
+                            <template slot="append">万元</template>
+                        </el-input>
+                        <i @click="form.today_stock.splice(index,1)" style="margin-top:5px;" class="el-icon-circle-close del"></i>
+                    </div>
+                    <el-button @click="addCode" type="primary" size="small" plain>新增股票</el-button>
+                </el-form-item>
+                <el-form-item label="股票截图" prop="today_stock_img">
+                    <div class="imgs" v-for="(item,index) in form.today_stock_img" :key='index'>
+                        <img  width="150" :src="item" alt="">
+                        <i @click="form.today_stock_img.splice(index,1)" class="el-icon-circle-close del"></i>
+                    </div>
+                    <el-upload
+                        class="upload-demo"
+                        :show-file-list	='false'
+                        :on-success="handleSuccess"
+                        action="/api/admin/uploadfile">
+                        <el-button size="small" type="primary" plain>上传股票截图</el-button>
+                    </el-upload>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="submitForm">确 定</el-button>
+                <el-button @click="open=false">取 消</el-button>
+            </div>
+        </el-dialog>
+        <!-- 点评 -->
+        <el-dialog :title="title" :visible.sync="open1" width="500px" append-to-body>
+            <el-form ref="form1" :model="form1" label-width="80px">
+                <el-form-item label="顽主点评">
+                    <el-input v-model="form1.wanzhu_comment" placeholder="" type="textarea" rows="10"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="saveComment" size="mini">确 定</el-button>
+                <el-button @click="open1=false" size="mini">取 消</el-button>
+            </div>
+        </el-dialog>
+    </section>
+</template>
+<script>
+import Page from "../../components/Page";
+export default {
+    components: {
+        Page,
+    },
+    data(){
+        return{
+            loading:false,
+            queryParams:{
+                match_id:0,
+                page:1,
+                stock_date:this.getNowDate()
+            },
+            form:{
+                stock_date:this.getNowDate()
+            },
+            form1:{},
+            list:[{},{}],
+            total:0,
+            title:'新增用户',
+            open:false,
+            open1:false,
+            rules:{
+                match_id: [
+                    { required: true, message: '请选择比赛', trigger: 'change' }
+                ],
+                player_id: [
+                    { required: true, message: '请输入用户代码', trigger: 'blur' }
+                ],
+                stock_date: [
+                    { required: true, message: '请选择持仓日期', trigger: 'blur' }
+                ],
+                today_fund: [
+                    { required: true, message: '请输入今日资产', trigger: 'blur' }
+                ],
+                is_markt: [
+                    { required: false, message: '请选择', trigger: 'change' }
+                ]
+            },
+            matchList:[],
+            playerList:[],
+            groupList:[],
+            stockList:[],
+            missDayList:[
+                {id:0,name:"否"},
+                {id:1,name:"是"}
+            ],
+            orderStatusList:[
+                {id:0,name:"未支付"},
+                {id:1,name:"已支付"}
+            ],
+            signupTypeList:[
+                {id:1,name:"选手"},
+                {id:2,name:"游客"}
+            ]
+        }
+    },
+    methods:{
+        updateRank(){
+            this.loading = true
+            this.$api.updateRank(this.queryParams).then((res)=>{
+                this.loading = false
+                this.$message({
+                    message: "更新成功!",
+                    type: "success",
+                });
+            })
+        },
+        getNowDate(){
+            var y=new Date().getFullYear() 
+            var m=Number(new Date().getMonth() + 1)
+            var d = new Date().getDate()
+            m=m>9?m:'0'+m;
+            d=d>9?d:'0'+d
+            return y+'-'+m+'-'+d;
+        },
+        autoCompleteData(){
+            this.loading = true
+            this.$api.autoCompleteData(this.queryParams).then((res)=>{
+                this.getData();
+                this.loading = false;
+            })
+        },
+        downloadExcel(){
+            this.$api.downloadRecords(this.queryParams).then((res)=>{
+                var elink = document.createElement('a');
+                let blob=new Blob([res.data], {type: 'application/vnd.ms-excel,charset=UTF-8'});
+                let objUrl=URL.createObjectURL(blob);
+                let file_name=decodeURIComponent(res.headers['content-disposition'].split('=')[1]);
+                console.log(file_name)
+                elink.download = "参赛数据";
+                elink.style.display = 'none';                
+                elink.href = objUrl;
+                document.body.appendChild(elink);
+                elink.click();
+                document.body.removeChild(elink);      
+                this.download_loading = false;
+            })
+        },
+        del(id) {
+        this.$confirm("确定删除吗?", "提示", {
+            type: "warning",
+        }).then(() => {
+            this.$api.delRecord({ id: id }).then((res) => {
+            this.$message({
+                message: "删除成功",
+                type: "success",
+            });
+            this.getData();
+            });
+        });
+        },
+        gopage(size) {
+            if (size) {
+                this.queryParams.page_size = size;
+            }
+            this.queryParams.page = this.$refs.pageButton.page;
+            this.getData();
+        },
+        getData(){
+            this.loading = true;
+            this.$api.getSignupList(this.queryParams).then(res=>{
+                this.list=res.data.data.list
+                this.total = res.data.data.total;
+                this.loading = false;
+            })
+        },
+        edit(id){
+            this.title = "编辑数据"
+            this.$api.getRecordInfo({id:id}).then(res=>{
+                this.form = res.data.data
+                this.open = true
+            })
+        },
+        editComment(id){
+            this.title = "顽主点评"
+            this.$api.getRecordInfo({id:id}).then(res=>{
+                this.form1 = res.data.data
+                this.open1 = true
+            })
+        },
+        saveComment(){
+            this.$api.updateComment({id:this.form1.id,wanzhu_comment:this.form1.wanzhu_comment}).then(response => {
+                if(response.data.code != 0){
+                    this.msgError(response.data.message);
+                    return
+                }
+                this.msgSuccess("修改成功");
+                this.open1 = false;
+                this.getData();
+            });
+        },
+        handleAdd(){
+            this.open=true;
+            this.title='新增数据';
+            this.form={
+                match_id:this.matchList[0].id,
+                today_stock:[{code: "", name:"",fund:''}],
+                today_stock_img:[],
+                stock_date:this.getNowDate()
+            }
+        },
+        addCode(){
+             this.form.today_stock.push({code: "", name:"",fund:''})
+        },
+        handleSuccess(res, file) {
+            console.log(res)
+            this.form.today_stock_img.push(res.data.url);
+        },
+        /** 提交按钮 */
+        submitForm() {
+            console.log(this.form)
+            this.$refs["form"].validate(valid => {
+                if (valid) {
+                // if(this.form.today_stock.length<=0){
+                //     this.msgError('请添加股票');
+                //     return
+                // }else{
+                //     if((!this.form.today_stock[0].name || !this.form.today_stock[0].fund) && !this.form.is_markt){
+                //         this.msgError('请选择股票并输入资金额');
+                //         return
+                //     }
+                // }
+                if (this.form.id != null) {
+                    this.$api.editRecord(this.form).then(response => {
+                        if(response.data.code != 0){
+                            this.msgError(response.data.message);
+                            return
+                        }
+                        this.msgSuccess("修改成功");
+                        this.open = false;
+                        this.getData();
+                    });
+                } else {
+                    this.$api.addRecord(this.form).then(response => {
+                        if(response.data.code != 0){
+                            this.msgError(response.data.message);
+                            return
+                        }
+                        this.msgSuccess("新增成功");
+                        this.open = false;
+                        this.getData();
+                    });
+                }
+        }
+      });
+    },
+    },
+    created(){
+       this.$api.getMatchList().then(res=>{
+           this.matchList=res.data.data
+           this.queryParams.match_id = this.matchList[0].id
+           this.getData()
+       })
+    }
+}
+</script>

+ 379 - 0
src/views/comments/consult.vue

@@ -0,0 +1,379 @@
+<style lang="scss">
+    .del{
+            display: inline-block;
+            vertical-align: top;
+            font-size: 28px;
+            font-weight: 500;
+            margin-left: 10px;
+            color: #000;
+            cursor: pointer;
+    }
+</style>
+<template>
+    <section class="content data">
+        <h4>顽主咨询</h4>
+        <el-divider></el-divider>
+        <el-form label-width="80px" class="filter-form">
+            <el-row>
+                <el-col :span="3">
+                    <el-form-item label="选手名字">
+                        <el-input clearable @clear="getData()" v-model="queryParams.username" placeholder="请输入选手名字/代码" size="mini"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="4">
+                    <el-form-item style="margin-left:10px;" label-width="10">
+                        <el-button type="primary" @click="getData" size="mini">筛选</el-button>
+                        <el-button type="normal" @click="queryParams={},getData()" size="mini">重置</el-button>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row :gutter="10">
+                <el-col :span="6"></el-col>
+            </el-row>
+        </el-form>
+        <el-table :data="list" height='55vh' style="width: 100%;margin-top:10px;" v-loading='loading'>
+                <el-table-column prop="user_name" label="选手名称"/>
+                <el-table-column prop="user_phone" label="手机号"/>
+                <el-table-column prop="match_name" label="报名赛事"/>
+                <el-table-column prop="signup_type" label="报名类型">
+                    <template slot-scope="scope">
+                        <span v-if="scope.row.signup_type==2" style="color:red;">选手</span>
+                        <span v-else>游客</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="total_fee" label="报名费用"/>
+                <el-table-column prop="order_status" label="订单状态" width="150">
+                    <template slot-scope="scope">
+                        <!-- <span v-if="scope.row.order_status==1" style="color:#67c23a;">已支付</span> -->
+                        <el-button v-if="scope.row.order_status==1" type="success" size="mini">已支付</el-button>
+                        <span v-else>未支付</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="pay_status" label="支付状态" width="150">
+                    <template slot-scope="scope">
+                        <!-- <span v-if="scope.row.pay_status==1" class="color:green;">已支付</span> -->
+                        <el-button v-if="scope.row.order_status==1" type="success" size="mini">已支付</el-button>
+                        <span v-else>未支付</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="pay_time" label="支付时间" width="160" show-overflow-tooltip />
+                <el-table-column prop="ctime" label="下单时间" width="160"/>
+                <el-table-column prop="date" label="操作" fixed="right" width="220">
+                    <template slot-scope="scope">
+                        <el-button @click="edit(scope.row.id)" size="mini" type="warning">编辑</el-button>
+                        <el-button @click="del(scope.row.id)" size="mini" type="danger">删除</el-button>
+                    </template>
+                </el-table-column>
+        </el-table>
+        <Page
+            ref="pageButton"
+            :current="form.page"
+            :page_size="form.page_size"
+            :total="total"
+            @pageChange="gopage"
+        />
+        <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+            <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+                <el-form-item label="赛事名称" prop="match_id">
+                        <el-select v-model="form.match_id" placeholder="请选择比赛">
+                            <el-option v-for="item in matchList" :key='item.id' :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                </el-form-item>
+                <el-form-item label="参赛选手" prop="player_id">
+                    <el-select filterable v-model="form.player_id" placeholder="请选择用户代码">
+                        <el-option v-for="item in playerList" :key='item.id' :label="item.label" :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="持仓日期" prop="stock_date">
+                        <el-date-picker
+                        v-model="form.stock_date"
+                        type="date" style="width:100%"
+                        placeholder="选择日期"
+                        format="yyyy-MM-dd"
+                        value-format="yyyy-MM-dd">
+                        </el-date-picker>
+                </el-form-item>
+                <el-form-item label="今日资产" prop="today_fund">
+                    <el-input clearable v-model="form.today_fund" placeholder="请输入今日资产" type="number">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item v-if="form.id" label="昨日资产" prop="yesterday_fund">
+                    <el-input clearable v-model="form.yesterday_fund" placeholder="请输入昨日资产" type="number">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item v-if="form.id" label="初始资产" prop="init_fund">
+                    <el-input clearable v-model="form.init_fund" placeholder="请输入初始资产" type="number">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="开超市" prop="is_markt">
+                    <el-switch
+                        v-model="form.is_markt">
+                    </el-switch>
+                </el-form-item>
+                <el-form-item label="股票名称" prop="today_stock">
+                    <div v-for="(item,index) in form.today_stock" :key='index' style="margin-bottom:5px;">
+                        <!-- <el-select  filterable v-model="item.name" placeholder="请选择股票" style="width:48%;display:inline-block">
+                            <el-option v-for="item in stockList" :key='item.id' :label="item.label" :value="item.label"></el-option>
+                        </el-select> -->
+                        <el-input style="width:48%;display:inline-block" v-model="item.name" placeholder="请输入股票名称" :disabled="form.is_markt==true"></el-input>
+                        &nbsp;<el-input style="width:39%" clearable v-model="item.fund" placeholder="资金" :disabled="form.is_markt==true">
+                            <template slot="append">万元</template>
+                        </el-input>
+                        <i @click="form.today_stock.splice(index,1)" style="margin-top:5px;" class="el-icon-circle-close del"></i>
+                    </div>
+                    <el-button @click="addCode" type="primary" size="small" plain>新增股票</el-button>
+                </el-form-item>
+                <el-form-item label="股票截图" prop="today_stock_img">
+                    <div class="imgs" v-for="(item,index) in form.today_stock_img" :key='index'>
+                        <img  width="150" :src="item" alt="">
+                        <i @click="form.today_stock_img.splice(index,1)" class="el-icon-circle-close del"></i>
+                    </div>
+                    <el-upload
+                        class="upload-demo"
+                        :show-file-list	='false'
+                        :on-success="handleSuccess"
+                        action="/api/admin/uploadfile">
+                        <el-button size="small" type="primary" plain>上传股票截图</el-button>
+                    </el-upload>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="submitForm">确 定</el-button>
+                <el-button @click="open=false">取 消</el-button>
+            </div>
+        </el-dialog>
+        <!-- 点评 -->
+        <el-dialog :title="title" :visible.sync="open1" width="500px" append-to-body>
+            <el-form ref="form1" :model="form1" label-width="80px">
+                <el-form-item label="顽主点评">
+                    <el-input v-model="form1.wanzhu_comment" placeholder="" type="textarea" rows="10"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="saveComment" size="mini">确 定</el-button>
+                <el-button @click="open1=false" size="mini">取 消</el-button>
+            </div>
+        </el-dialog>
+    </section>
+</template>
+<script>
+import Page from "../../components/Page";
+export default {
+    components: {
+        Page,
+    },
+    data(){
+        return{
+            loading:false,
+            queryParams:{
+                match_id:0,
+                page:1,
+                stock_date:this.getNowDate()
+            },
+            form:{
+                stock_date:this.getNowDate()
+            },
+            form1:{},
+            list:[{},{}],
+            total:0,
+            title:'新增用户',
+            open:false,
+            open1:false,
+            rules:{
+                match_id: [
+                    { required: true, message: '请选择比赛', trigger: 'change' }
+                ],
+                player_id: [
+                    { required: true, message: '请输入用户代码', trigger: 'blur' }
+                ],
+                stock_date: [
+                    { required: true, message: '请选择持仓日期', trigger: 'blur' }
+                ],
+                today_fund: [
+                    { required: true, message: '请输入今日资产', trigger: 'blur' }
+                ],
+                is_markt: [
+                    { required: false, message: '请选择', trigger: 'change' }
+                ]
+            },
+            matchList:[],
+            playerList:[],
+            groupList:[],
+            stockList:[],
+            missDayList:[
+                {id:0,name:"否"},
+                {id:1,name:"是"}
+            ],
+            orderStatusList:[
+                {id:0,name:"未支付"},
+                {id:1,name:"已支付"}
+            ],
+            signupTypeList:[
+                {id:1,name:"选手"},
+                {id:2,name:"游客"}
+            ]
+        }
+    },
+    methods:{
+        updateRank(){
+            this.loading = true
+            this.$api.updateRank(this.queryParams).then((res)=>{
+                this.loading = false
+                this.$message({
+                    message: "更新成功!",
+                    type: "success",
+                });
+            })
+        },
+        getNowDate(){
+            var y=new Date().getFullYear() 
+            var m=Number(new Date().getMonth() + 1)
+            var d = new Date().getDate()
+            m=m>9?m:'0'+m;
+            d=d>9?d:'0'+d
+            return y+'-'+m+'-'+d;
+        },
+        autoCompleteData(){
+            this.loading = true
+            this.$api.autoCompleteData(this.queryParams).then((res)=>{
+                this.getData();
+                this.loading = false;
+            })
+        },
+        downloadExcel(){
+            this.$api.downloadRecords(this.queryParams).then((res)=>{
+                var elink = document.createElement('a');
+                let blob=new Blob([res.data], {type: 'application/vnd.ms-excel,charset=UTF-8'});
+                let objUrl=URL.createObjectURL(blob);
+                let file_name=decodeURIComponent(res.headers['content-disposition'].split('=')[1]);
+                console.log(file_name)
+                elink.download = "参赛数据";
+                elink.style.display = 'none';                
+                elink.href = objUrl;
+                document.body.appendChild(elink);
+                elink.click();
+                document.body.removeChild(elink);      
+                this.download_loading = false;
+            })
+        },
+        del(id) {
+        this.$confirm("确定删除吗?", "提示", {
+            type: "warning",
+        }).then(() => {
+            this.$api.delRecord({ id: id }).then((res) => {
+            this.$message({
+                message: "删除成功",
+                type: "success",
+            });
+            this.getData();
+            });
+        });
+        },
+        gopage(size) {
+            if (size) {
+                this.queryParams.page_size = size;
+            }
+            this.queryParams.page = this.$refs.pageButton.page;
+            this.getData();
+        },
+        getData(){
+            this.loading = true;
+            this.$api.getSignupList(this.queryParams).then(res=>{
+                this.list=res.data.data.list
+                this.total = res.data.data.total;
+                this.loading = false;
+            })
+        },
+        edit(id){
+            this.title = "编辑数据"
+            this.$api.getRecordInfo({id:id}).then(res=>{
+                this.form = res.data.data
+                this.open = true
+            })
+        },
+        editComment(id){
+            this.title = "顽主点评"
+            this.$api.getRecordInfo({id:id}).then(res=>{
+                this.form1 = res.data.data
+                this.open1 = true
+            })
+        },
+        saveComment(){
+            this.$api.updateComment({id:this.form1.id,wanzhu_comment:this.form1.wanzhu_comment}).then(response => {
+                if(response.data.code != 0){
+                    this.msgError(response.data.message);
+                    return
+                }
+                this.msgSuccess("修改成功");
+                this.open1 = false;
+                this.getData();
+            });
+        },
+        handleAdd(){
+            this.open=true;
+            this.title='新增数据';
+            this.form={
+                match_id:this.matchList[0].id,
+                today_stock:[{code: "", name:"",fund:''}],
+                today_stock_img:[],
+                stock_date:this.getNowDate()
+            }
+        },
+        addCode(){
+             this.form.today_stock.push({code: "", name:"",fund:''})
+        },
+        handleSuccess(res, file) {
+            console.log(res)
+            this.form.today_stock_img.push(res.data.url);
+        },
+        /** 提交按钮 */
+        submitForm() {
+            console.log(this.form)
+            this.$refs["form"].validate(valid => {
+                if (valid) {
+                // if(this.form.today_stock.length<=0){
+                //     this.msgError('请添加股票');
+                //     return
+                // }else{
+                //     if((!this.form.today_stock[0].name || !this.form.today_stock[0].fund) && !this.form.is_markt){
+                //         this.msgError('请选择股票并输入资金额');
+                //         return
+                //     }
+                // }
+                if (this.form.id != null) {
+                    this.$api.editRecord(this.form).then(response => {
+                        if(response.data.code != 0){
+                            this.msgError(response.data.message);
+                            return
+                        }
+                        this.msgSuccess("修改成功");
+                        this.open = false;
+                        this.getData();
+                    });
+                } else {
+                    this.$api.addRecord(this.form).then(response => {
+                        if(response.data.code != 0){
+                            this.msgError(response.data.message);
+                            return
+                        }
+                        this.msgSuccess("新增成功");
+                        this.open = false;
+                        this.getData();
+                    });
+                }
+        }
+      });
+    },
+    },
+    created(){
+       this.$api.getMatchList().then(res=>{
+           this.matchList=res.data.data
+           this.queryParams.match_id = this.matchList[0].id
+           this.getData()
+       })
+    }
+}
+</script>

+ 400 - 0
src/views/signup/index.vue

@@ -0,0 +1,400 @@
+<style lang="scss">
+    .del{
+            display: inline-block;
+            vertical-align: top;
+            font-size: 28px;
+            font-weight: 500;
+            margin-left: 10px;
+            color: #000;
+            cursor: pointer;
+    }
+</style>
+<template>
+    <section class="content data">
+        <h4>订单管理</h4>
+        <el-divider></el-divider>
+        <el-form label-width="80px" class="filter-form">
+            <el-row>
+                <el-col :span="4">
+                    <el-form-item label="比赛名称" prop="match_id">
+                        <el-select v-model="queryParams.match_id" placeholder="请选择比赛" size="mini" @change="getData()">
+                            <el-option v-for="item in matchList" :key='item.id' :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="3">
+                    <el-form-item label="选手名字">
+                        <el-input clearable @clear="getData()" v-model="queryParams.username" placeholder="请输入选手名字/代码" size="mini"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="3">
+                    <el-form-item label="报名类型">
+                        <el-select clearable @clear="getData()" v-model="queryParams.signup_type" placeholder="请选择" size="mini" @change="getData()">
+                            <el-option v-for="item in signupTypeList" :key='item.id' :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="3">
+                    <el-form-item label="订单状态">
+                        <el-select clearable @clear="getData()" v-model="queryParams.order_status" placeholder="请选择" size="mini" @change="getData()">
+                            <el-option v-for="item in orderStatusList" :key='item.id' :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="4">
+                    <el-form-item style="margin-left:10px;" label-width="10">
+                        <el-button type="primary" @click="getData" size="mini">筛选</el-button>
+                        <el-button type="normal" @click="queryParams={},getData()" size="mini">重置</el-button>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+            <el-row :gutter="10">
+                <el-col :span="6"></el-col>
+            </el-row>
+        </el-form>
+        <el-table :data="list" height='55vh' style="width: 100%;margin-top:10px;" v-loading='loading'>
+                <el-table-column prop="user_name" label="选手名称"/>
+                <el-table-column prop="user_phone" label="手机号"/>
+                <el-table-column prop="match_name" label="报名赛事"/>
+                <el-table-column prop="signup_type" label="报名类型">
+                    <template slot-scope="scope">
+                        <span v-if="scope.row.signup_type==2" style="color:red;">选手</span>
+                        <span v-else>游客</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="total_fee" label="报名费用"/>
+                <el-table-column prop="order_status" label="订单状态" width="150">
+                    <template slot-scope="scope">
+                        <!-- <span v-if="scope.row.order_status==1" style="color:#67c23a;">已支付</span> -->
+                        <el-button v-if="scope.row.order_status==1" type="success" size="mini">已支付</el-button>
+                        <span v-else>未支付</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="pay_status" label="支付状态" width="150">
+                    <template slot-scope="scope">
+                        <!-- <span v-if="scope.row.pay_status==1" class="color:green;">已支付</span> -->
+                        <el-button v-if="scope.row.order_status==1" type="success" size="mini">已支付</el-button>
+                        <span v-else>未支付</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="pay_time" label="支付时间" width="160" show-overflow-tooltip />
+                <el-table-column prop="ctime" label="下单时间" width="160"/>
+                <el-table-column prop="date" label="操作" fixed="right" width="220">
+                    <template slot-scope="scope">
+                        <el-button @click="edit(scope.row.id)" size="mini" type="warning">编辑</el-button>
+                        <el-button @click="del(scope.row.id)" size="mini" type="danger">删除</el-button>
+                    </template>
+                </el-table-column>
+        </el-table>
+        <Page
+            ref="pageButton"
+            :current="form.page"
+            :page_size="form.page_size"
+            :total="total"
+            @pageChange="gopage"
+        />
+        <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+            <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+                <el-form-item label="赛事名称" prop="match_id">
+                        <el-select v-model="form.match_id" placeholder="请选择比赛">
+                            <el-option v-for="item in matchList" :key='item.id' :label="item.name" :value="item.id"></el-option>
+                        </el-select>
+                </el-form-item>
+                <el-form-item label="参赛选手" prop="player_id">
+                    <el-select filterable v-model="form.player_id" placeholder="请选择用户代码">
+                        <el-option v-for="item in playerList" :key='item.id' :label="item.label" :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="持仓日期" prop="stock_date">
+                        <el-date-picker
+                        v-model="form.stock_date"
+                        type="date" style="width:100%"
+                        placeholder="选择日期"
+                        format="yyyy-MM-dd"
+                        value-format="yyyy-MM-dd">
+                        </el-date-picker>
+                </el-form-item>
+                <el-form-item label="今日资产" prop="today_fund">
+                    <el-input clearable v-model="form.today_fund" placeholder="请输入今日资产" type="number">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item v-if="form.id" label="昨日资产" prop="yesterday_fund">
+                    <el-input clearable v-model="form.yesterday_fund" placeholder="请输入昨日资产" type="number">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item v-if="form.id" label="初始资产" prop="init_fund">
+                    <el-input clearable v-model="form.init_fund" placeholder="请输入初始资产" type="number">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="开超市" prop="is_markt">
+                    <el-switch
+                        v-model="form.is_markt">
+                    </el-switch>
+                </el-form-item>
+                <el-form-item label="股票名称" prop="today_stock">
+                    <div v-for="(item,index) in form.today_stock" :key='index' style="margin-bottom:5px;">
+                        <!-- <el-select  filterable v-model="item.name" placeholder="请选择股票" style="width:48%;display:inline-block">
+                            <el-option v-for="item in stockList" :key='item.id' :label="item.label" :value="item.label"></el-option>
+                        </el-select> -->
+                        <el-input style="width:48%;display:inline-block" v-model="item.name" placeholder="请输入股票名称" :disabled="form.is_markt==true"></el-input>
+                        &nbsp;<el-input style="width:39%" clearable v-model="item.fund" placeholder="资金" :disabled="form.is_markt==true">
+                            <template slot="append">万元</template>
+                        </el-input>
+                        <i @click="form.today_stock.splice(index,1)" style="margin-top:5px;" class="el-icon-circle-close del"></i>
+                    </div>
+                    <el-button @click="addCode" type="primary" size="small" plain>新增股票</el-button>
+                </el-form-item>
+                <el-form-item label="股票截图" prop="today_stock_img">
+                    <div class="imgs" v-for="(item,index) in form.today_stock_img" :key='index'>
+                        <img  width="150" :src="item" alt="">
+                        <i @click="form.today_stock_img.splice(index,1)" class="el-icon-circle-close del"></i>
+                    </div>
+                    <el-upload
+                        class="upload-demo"
+                        :show-file-list	='false'
+                        :on-success="handleSuccess"
+                        action="/api/admin/uploadfile">
+                        <el-button size="small" type="primary" plain>上传股票截图</el-button>
+                    </el-upload>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="submitForm">确 定</el-button>
+                <el-button @click="open=false">取 消</el-button>
+            </div>
+        </el-dialog>
+        <!-- 点评 -->
+        <el-dialog :title="title" :visible.sync="open1" width="500px" append-to-body>
+            <el-form ref="form1" :model="form1" label-width="80px">
+                <el-form-item label="顽主点评">
+                    <el-input v-model="form1.wanzhu_comment" placeholder="" type="textarea" rows="10"></el-input>
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="saveComment" size="mini">确 定</el-button>
+                <el-button @click="open1=false" size="mini">取 消</el-button>
+            </div>
+        </el-dialog>
+    </section>
+</template>
+<script>
+import Page from "../../components/Page";
+export default {
+    components: {
+        Page,
+    },
+    data(){
+        return{
+            loading:false,
+            queryParams:{
+                match_id:0,
+                page:1,
+                stock_date:this.getNowDate()
+            },
+            form:{
+                stock_date:this.getNowDate()
+            },
+            form1:{},
+            list:[{},{}],
+            total:0,
+            title:'新增用户',
+            open:false,
+            open1:false,
+            rules:{
+                match_id: [
+                    { required: true, message: '请选择比赛', trigger: 'change' }
+                ],
+                player_id: [
+                    { required: true, message: '请输入用户代码', trigger: 'blur' }
+                ],
+                stock_date: [
+                    { required: true, message: '请选择持仓日期', trigger: 'blur' }
+                ],
+                today_fund: [
+                    { required: true, message: '请输入今日资产', trigger: 'blur' }
+                ],
+                is_markt: [
+                    { required: false, message: '请选择', trigger: 'change' }
+                ]
+            },
+            matchList:[],
+            playerList:[],
+            groupList:[],
+            stockList:[],
+            missDayList:[
+                {id:0,name:"否"},
+                {id:1,name:"是"}
+            ],
+            orderStatusList:[
+                {id:0,name:"未支付"},
+                {id:1,name:"已支付"}
+            ],
+            signupTypeList:[
+                {id:1,name:"选手"},
+                {id:2,name:"游客"}
+            ]
+        }
+    },
+    methods:{
+        updateRank(){
+            this.loading = true
+            this.$api.updateRank(this.queryParams).then((res)=>{
+                this.loading = false
+                this.$message({
+                    message: "更新成功!",
+                    type: "success",
+                });
+            })
+        },
+        getNowDate(){
+            var y=new Date().getFullYear() 
+            var m=Number(new Date().getMonth() + 1)
+            var d = new Date().getDate()
+            m=m>9?m:'0'+m;
+            d=d>9?d:'0'+d
+            return y+'-'+m+'-'+d;
+        },
+        autoCompleteData(){
+            this.loading = true
+            this.$api.autoCompleteData(this.queryParams).then((res)=>{
+                this.getData();
+                this.loading = false;
+            })
+        },
+        downloadExcel(){
+            this.$api.downloadRecords(this.queryParams).then((res)=>{
+                var elink = document.createElement('a');
+                let blob=new Blob([res.data], {type: 'application/vnd.ms-excel,charset=UTF-8'});
+                let objUrl=URL.createObjectURL(blob);
+                let file_name=decodeURIComponent(res.headers['content-disposition'].split('=')[1]);
+                console.log(file_name)
+                elink.download = "参赛数据";
+                elink.style.display = 'none';                
+                elink.href = objUrl;
+                document.body.appendChild(elink);
+                elink.click();
+                document.body.removeChild(elink);      
+                this.download_loading = false;
+            })
+        },
+        del(id) {
+        this.$confirm("确定删除吗?", "提示", {
+            type: "warning",
+        }).then(() => {
+            this.$api.delRecord({ id: id }).then((res) => {
+            this.$message({
+                message: "删除成功",
+                type: "success",
+            });
+            this.getData();
+            });
+        });
+        },
+        gopage(size) {
+            if (size) {
+                this.queryParams.page_size = size;
+            }
+            this.queryParams.page = this.$refs.pageButton.page;
+            this.getData();
+        },
+        getData(){
+            this.loading = true;
+            this.$api.getSignupList(this.queryParams).then(res=>{
+                this.list=res.data.data.list
+                this.total = res.data.data.total;
+                this.loading = false;
+            })
+        },
+        edit(id){
+            this.title = "编辑数据"
+            this.$api.getRecordInfo({id:id}).then(res=>{
+                this.form = res.data.data
+                this.open = true
+            })
+        },
+        editComment(id){
+            this.title = "顽主点评"
+            this.$api.getRecordInfo({id:id}).then(res=>{
+                this.form1 = res.data.data
+                this.open1 = true
+            })
+        },
+        saveComment(){
+            this.$api.updateComment({id:this.form1.id,wanzhu_comment:this.form1.wanzhu_comment}).then(response => {
+                if(response.data.code != 0){
+                    this.msgError(response.data.message);
+                    return
+                }
+                this.msgSuccess("修改成功");
+                this.open1 = false;
+                this.getData();
+            });
+        },
+        handleAdd(){
+            this.open=true;
+            this.title='新增数据';
+            this.form={
+                match_id:this.matchList[0].id,
+                today_stock:[{code: "", name:"",fund:''}],
+                today_stock_img:[],
+                stock_date:this.getNowDate()
+            }
+        },
+        addCode(){
+             this.form.today_stock.push({code: "", name:"",fund:''})
+        },
+        handleSuccess(res, file) {
+            console.log(res)
+            this.form.today_stock_img.push(res.data.url);
+        },
+        /** 提交按钮 */
+        submitForm() {
+            console.log(this.form)
+            this.$refs["form"].validate(valid => {
+                if (valid) {
+                // if(this.form.today_stock.length<=0){
+                //     this.msgError('请添加股票');
+                //     return
+                // }else{
+                //     if((!this.form.today_stock[0].name || !this.form.today_stock[0].fund) && !this.form.is_markt){
+                //         this.msgError('请选择股票并输入资金额');
+                //         return
+                //     }
+                // }
+                if (this.form.id != null) {
+                    this.$api.editRecord(this.form).then(response => {
+                        if(response.data.code != 0){
+                            this.msgError(response.data.message);
+                            return
+                        }
+                        this.msgSuccess("修改成功");
+                        this.open = false;
+                        this.getData();
+                    });
+                } else {
+                    this.$api.addRecord(this.form).then(response => {
+                        if(response.data.code != 0){
+                            this.msgError(response.data.message);
+                            return
+                        }
+                        this.msgSuccess("新增成功");
+                        this.open = false;
+                        this.getData();
+                    });
+                }
+        }
+      });
+    },
+    },
+    created(){
+       this.$api.getMatchList().then(res=>{
+           this.matchList=res.data.data
+           this.queryParams.match_id = this.matchList[0].id
+           this.getData()
+       })
+    }
+}
+</script>

+ 2 - 2
vue.config.js

@@ -3,9 +3,9 @@ module.exports={
         proxy:{
             '/api':{
                 // target:'http://39.107.246.59:81',
-                target:'https://api.hunanwanzhu.com',
+                // target:'https://api.hunanwanzhu.com',
                 // target:'http://caos.tederen.com',
-                // target:'https://wx.scxjc.club',
+                target:'https://wx.scxjc.club',
                 changeOrigin: true,
             }
         }