فهرست منبع

Merge branch 'master' of http://118.190.145.217:3000/xiaojincai/wanzb_admin

tanyanfei 3 سال پیش
والد
کامیت
ad10aec991
10فایلهای تغییر یافته به همراه740 افزوده شده و 94 حذف شده
  1. 47 0
      src/api.js
  2. 20 3
      src/router.js
  3. 3 3
      src/style/home.scss
  4. 54 4
      src/views/Home.vue
  5. 3 3
      src/views/Login.vue
  6. 78 59
      src/views/data/index.vue
  7. 149 0
      src/views/match/group.vue
  8. 169 2
      src/views/match/index.vue
  9. 204 0
      src/views/player/index.vue
  10. 13 20
      src/views/user/index.vue

+ 47 - 0
src/api.js

@@ -55,6 +55,9 @@ export default {
 	logout: params => {
 		return axios.post(`${baseURL}/api/account/logout`, params);
 	},
+	reset: params => {
+		return axios.put(`${baseURL}/api/account/pwd/reset`, params);
+	},
 	// 全局账号信息
 	getAccountInfo: params => {
 		return axios.get(`${baseURL}/api/account/info`)
@@ -116,6 +119,10 @@ export default {
 	getGroupList: params => {
 		return axios.get(`${baseURL}/api/admin/match/group/search`, { params: params })
 	},
+	// 股票列表
+	getStockList: params => {
+		return axios.get(`${baseURL}/api/admin/stock/search`, { params: params })
+	},
 	//获取所有模板列表
 	getAllTemplateList: params => {
 		return axios.get(`${baseURL}/api/admin/message/template/all`, { params: params })
@@ -139,5 +146,45 @@ export default {
 	getRoleInfo: params => {
 		return axios.get(`${baseURL}/api/admin/role`, { params: params });
 	},
+	// 选手列表
+	getPlayers: params => {
+		return axios.get(`${baseURL}/api/admin/player/list`, { params: params })
+	},
+	// 新增选手
+	addPlayer: params => {
+		return axios.post(`${baseURL}/api/admin/player`, params)
+	},
+	// 编辑选手
+	updatePlayer: params => {
+		return axios.put(`${baseURL}/api/admin/player`, params)
+	},
+	// 用户搜索
+	getUserSearch: params => {
+		return axios.get(`${baseURL}/api/admin/user/search`, { params: params })
+	},
+	// 赛事列表
+	getMatchs: params => {
+		return axios.get(`${baseURL}/api/admin/match/list`, { params: params })
+	},
+	// 分组管理
+	getGroups: params => {
+		return axios.get(`${baseURL}/api/admin/match/group/list`, { params: params })
+	},
+	// 新增赛事
+	addMatch: params => {
+		return axios.post(`${baseURL}/api/admin/match`, params);
+	},
+	// 修改赛事
+	updateMatch: params => {
+		return axios.put(`${baseURL}/api/admin/match`, params);
+	},
+	// 新增分组
+	addGroup: params => {
+		return axios.post(`${baseURL}/api/admin/match/group`, params);
+	},
+	// 修改分组
+	updateGroup: params => {
+		return axios.put(`${baseURL}/api/admin/match/group`, params);
+	},
 
 }

+ 20 - 3
src/router.js

@@ -11,11 +11,11 @@ export default new Router({
     },
     {
       path: '/data',
-      name: '数据统计',
+      name: '参赛数据',
       icon: 'el-icon-pie-chart',
       component: () => import('./views/Home.vue'),
       show: 1,
-      isLeaf: 1,
+      isLeaf: 0,
       children: [{
         path: '/data',
         component: () => import('./views/data/index.vue'),
@@ -28,14 +28,31 @@ export default new Router({
       icon: 'el-icon-trophy-1',
       component: () => import('./views/Home.vue'),
       show: 1,
-      isLeaf: 1,
+      isLeaf: 0,
       children: [{
         path: '/match',
         component: () => import('./views/match/index.vue'),
         name: '赛事管理'
+      },{
+        path: '/group',
+        component: () => import('./views/match/group.vue'),
+        name: '赛事分组'
       }, ]
     },
     {
+      path: '/player',
+      name: '选手管理',
+      icon: 'el-icon-trophy-1',
+      component: () => import('./views/Home.vue'),
+      show: 1,
+      isLeaf: 0,
+      children: [{
+        path: '/player',
+        component: () => import('./views/player/index.vue'),
+        name: '参数选手'
+      } ]
+    },
+    {
       path: '/user',
       name: '用户管理',
       icon: 'el-icon-s-tools',

+ 3 - 3
src/style/home.scss

@@ -234,7 +234,7 @@ tbody{
 	}
 }
 
-.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before, .el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{
-	content: '';
-}
+// .el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before, .el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{
+// 	content: '';
+// }
 

+ 54 - 4
src/views/Home.vue

@@ -11,6 +11,14 @@
 		<el-header>
 			<div class="header">
 				<span class="logout" @click="logout">退出登陆</span>
+				<el-dropdown class="logout" v-if='info.name' style="margin-right:10px;">
+					<span class="el-dropdown-link" style="color:#fff;font-size:16px;">
+						{{info.name}}<i class="el-icon-arrow-down el-icon--right"></i>
+					</span>
+					<el-dropdown-menu slot="dropdown">
+						<el-dropdown-item @click.native="changePsw">修改密码</el-dropdown-item>
+					</el-dropdown-menu>
+				</el-dropdown>
 				<div class="siteTitle">顽主杯实盘大赛后台</div>
 				
 			</div>	
@@ -24,7 +32,7 @@
 								<i :class="item.icon"></i>
 								<span slot="title">{{item.name}}</span>
 							</el-menu-item>
-							<!-- <el-submenu   v-if='item.show&&!item.isLeaf' :index="'index_'+index"  :key='index'>
+							<el-submenu   v-if='item.show&&!item.isLeaf' :index="'index_'+index"  :key='index'>
 								<template slot="title" >
 								<i :class="item.icon"></i>
 								<span>{{item.name}}</span>
@@ -34,7 +42,7 @@
 									{{child.name}}
 									</el-menu-item>
 								</el-menu-item-group>
-							</el-submenu> -->
+							</el-submenu>
 					</template>
 				</el-menu>
 			</el-aside>
@@ -49,6 +57,25 @@
 				<!-- <el-footer>Footer</el-footer> -->
 			</el-container>
 		</el-container>
+
+
+		<el-dialog title="修改密码" :visible.sync="open" width="500px" append-to-body>
+            <el-form ref="form" :model="form"  label-width="80px">
+                <!-- <el-form-item label="旧密码">
+                    <el-input clearable v-model="form.password" placeholder=""></el-input>
+                </el-form-item> -->
+                <el-form-item label="新密码">
+                    <el-input type="password" v-model="form.password" placeholder=""></el-input>
+                </el-form-item>
+				<el-form-item label="确认密码">
+                    <el-input type="password" v-model="form.repassword" placeholder=""></el-input>
+                </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-container>
 </template>
 
@@ -59,11 +86,34 @@ export default {
 
 	data() {
 		return {
-		
+			info:{},
+			open:false,
+			form:{}
 		};
 	},
 	methods: {
-	
+		changePsw(){
+			this.open=true;
+
+		},
+		submitForm(){
+			if(!this.form.password){
+				this.msgError('请输入新密码');
+				return
+			}
+			if(!this.form.repassword){
+				this.msgError('请确认密码');
+				return
+			}
+			this.$api.reset(this.form).then(res=>{
+				if(res.data.code == 0){
+					this.$router.push({path:'/'})
+				}else{
+					this.msgError(res.data.message);
+				}
+				
+			})
+		},
 		logout(){
 			this.$api.logout().then(res=>{
 				// this.$router.push({path:'/login'})

+ 3 - 3
src/views/Login.vue

@@ -106,7 +106,7 @@
             <el-button @click="login" @keyup.enter="login" class="login-btn" type="primary">登  录</el-button>
         </form>
       </div>
-      <p class="footer">Copyright © {{copyrightdate}} 中国科学院 版权所有</p>
+      <p class="footer">Copyright © {{copyrightdate}} 湖南顽主杯 版权所有</p>
   </div>
 </template>
 
@@ -118,8 +118,8 @@ export default {
       tp:'xt',
       code:'',
       logindata:{
-        username:'',
-        password:'',
+        username:'root',
+        password:'123456',
         imgcode_id:'',
         imgcode:'',
         utype:2

+ 78 - 59
src/views/data/index.vue

@@ -11,84 +11,83 @@
 </style>
 <template>
     <section class="content data">
-        <h1>数据统计</h1>
+        <h4>数据统计</h4>
         <el-divider></el-divider>
         <el-form label-width="80px" class="filter-form">
             <el-row>
-                <el-col :span="9">
+                <el-col :span="5">
+                    <el-form-item label="比赛名称" prop="match_id">
+                        <el-select v-model="queryParams.match_id" placeholder="请选择比赛" size="mini">
+                            <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="4">
                     <el-form-item label="选手名字">
-                        <el-input v-model="queryParams.username" placeholder="请输入选手名字/代码"></el-input>
+                        <el-input v-model="queryParams.username" placeholder="请输入选手名字/代码" size="mini"></el-input>
                     </el-form-item>
                 </el-col>
-                <el-col :span="9">
+                <el-col :span="5">
                     <el-form-item label="比赛日期">
                         <el-date-picker
                         v-model="queryParams.date"
                         type="date"
                         placeholder="选择日期"
                         format="yyyy-MM-dd"
-                        value-format="yyyy-MM-dd">
+                        value-format="yyyy-MM-dd"
+                        size="mini"
+                        >
                         </el-date-picker>
                     </el-form-item>
                 </el-col>
-                <el-col :span="9">
-                    <el-form-item label="比赛名称" prop="match_id">
-                        <el-select v-model="queryParams.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-col>
-                <el-col :span="9">
+                <el-col :span="5">
                     <el-form-item label="比赛分组">
-                        <el-select v-model="queryParams.groupId" placeholder="请选择比赛分组">
-                        <el-option v-for="item in groupList" :key='item.id' :label="item.name" :value="item.id"></el-option>
-
+                        <el-select v-model="queryParams.groupId" placeholder="请选择比赛分组" size="mini">
+                            <el-option v-for="item in groupList" :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>
-                        <el-button type="primary" @click="getData">筛选</el-button>
+                <el-col :span="5">
+                    <el-form-item style="margin-left:10px;" label-width="10">
+                        <el-button type="primary" @click="getData" size="mini">筛选</el-button>
+                        <el-button
+                        type="primary"
+                        plain
+                        icon="el-icon-plus"
+                        size="mini"
+                        @click="handleAdd"
+                        >上传数据</el-button>
                     </el-form-item>
                 </el-col>
             </el-row>
         </el-form>
-        <el-row :gutter="10" class="mb8">
-            <el-col :span="1.5">
-                <el-button
-                type="primary"
-                plain
-                icon="el-icon-plus"
-                size="mini"
-                @click="handleAdd"
-                >新增</el-button>
-            </el-col>
-        </el-row>
-        <el-table :data="list" height='39vh' style="width: 100%;margin-top:10px;">
+        <el-table :data="list" height='55vh' style="width: 100%;margin-top:10px;" v-loading='loading'>
                 <el-table-column prop="rank" label="排名"/>
                 <el-table-column prop="username" label="选手"/>
+                <el-table-column prop="stock_date" label="持股日期" width="150"/>
                 <el-table-column prop="init_fund" label="初始资产"/>
                 <el-table-column prop="yesterday_fund" label="昨日资产"/>
                 <el-table-column prop="today_fund" label="今日资产"/>
                 <el-table-column prop="today_income" label="今日盈亏"/>
-                <el-table-column prop="date" label="总盈亏"/>
-                <el-table-column prop="date" label="日持股" width="150">
+                <el-table-column prop="total_income" label="总盈亏" width="100"/>
+                <el-table-column prop="date" label="今日持股" width="150">
                     <template slot-scope="scope">
                         <p v-for="(item,index) in scope.row.today_stock" :key='index'>
-                            {{item.name}}({{item.code}})
+                            {{item.name}}
                         </p>
                     </template>
                 </el-table-column>
                 <el-table-column prop="date" label="昨日持股" width="150">
                     <template slot-scope="scope">
                         <p v-for="(item,index) in scope.row.yesterday_stock" :key='index'>
-                            {{item.name}}({{item.code}})
+                            {{item.name}}
                         </p>
                     </template>
                 </el-table-column>
-                <el-table-column prop="date" label="操作">
+                <el-table-column prop="ctime" label="创建时间" width="160"/>
+                <el-table-column prop="date" label="操作" fixed="right">
                     <template slot-scope="scope">
-                        <el-button @click="title='编辑数据',open=true,form=scope.row" size="mini" type="primary">编辑</el-button>
+                        <el-button @click="title='编辑数据',open=true,form=scope.row" size="mini" type="warning">编辑</el-button>
                     </template>
                 </el-table-column>
         </el-table>
@@ -101,11 +100,16 @@
         />
         <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-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 v-model="form.player_id" placeholder="请选择用户代码">
+                        <el-option v-for="item in playerList" :key='item.id' :label="item.username" :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"
@@ -116,27 +120,23 @@
                         </el-date-picker>
                 </el-form-item>
                 <el-form-item label="今日资产" prop="today_fund">
-                    <el-input clearable v-model="form.today_fund" placeholder="请输入代码"></el-input>
-                </el-form-item>
-                <el-form-item label="用户代码" prop="player_id">
-                    <el-select v-model="form.player_id" placeholder="请选择用户代码">
-                            <el-option v-for="item in matchList" :key='item.id' :label="item.usercode" :value="item.id"></el-option>
-                    </el-select>
-                    <!-- <el-input clearable v-model="form.player_id" placeholder="请输入代码"></el-input> -->
+                    <el-input clearable v-model="form.today_fund" placeholder="请输入今日资产">
+                        <template slot="append">万元</template>
+                    </el-input>
                 </el-form-item>
-                <el-form-item label="股票名称">
+                <el-form-item label="股票名称" prop="today_stock">
                     <div v-for="(item,index) in form.today_stock" :key='index' style="margin-bottom:5px;">
-                        <el-select style="width:28%" v-model="form.player_id" placeholder="请选择用户代码">
-                            <el-option v-for="item in matchList" :key='item.id' :label="item.usercode" :value="item.id"></el-option>
-                    </el-select>
-                        <!-- <el-input style="width:28%" clearable v-model="item.name" placeholder="名称"></el-input> -->
-                        <!-- &nbsp;<el-input style="width:28%" clearable v-model="item.code" placeholder="代码"></el-input> -->
-                        &nbsp;<el-input style="width:29%" clearable v-model="item.fund" placeholder="资金"></el-input>
+                        <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>
+                        &nbsp;<el-input style="width:39%" clearable v-model="item.fund" placeholder="资金">
+                            <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="danger" size="small" plain>新增代码</el-button>
+                    <el-button @click="addCode" type="primary" size="small" plain>新增股票</el-button>
                 </el-form-item>
-                <el-form-item label="股票名称">
+                <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>
@@ -146,7 +146,7 @@
                         :show-file-list	='false'
                         :on-success="handleSuccess"
                         action="/api/admin/uploadfile">
-                        <el-button size="small" type="danger" plain>上传图片</el-button>
+                        <el-button size="small" type="primary" plain>上传股票截图</el-button>
                     </el-upload>
                 </el-form-item>
             </el-form>
@@ -167,6 +167,7 @@ export default {
         return{
             loading:false,
             queryParams:{
+                match_id:0,
                 page:1
             },
             form:{
@@ -189,10 +190,17 @@ export default {
                 today_fund: [
                     { required: true, message: '请输入今日资产', trigger: 'blur' }
                 ],
+                today_stock: [
+                    { required: true, message: '请添加股票', trigger: 'blur' }
+                ],
+                today_stock_img: [
+                    { required: true, message: '请输入股票截图', trigger: 'blur' }
+                ]
             },
             matchList:[],
             playerList:[],
-            groupList:[]
+            groupList:[],
+            stockList:[]
         }
     },
     methods:{
@@ -230,6 +238,15 @@ export default {
         submitForm() {
             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.msgError('请选择股票并输入资金额');
+                        return
+                    }
+                }
                 if (this.form.id != null) {
                     this.$api.editRecord(this.form).then(response => {
                         if(response.data.code != 0){
@@ -256,9 +273,10 @@ export default {
     },
     },
     created(){
-       this.getData() 
        this.$api.getMatchList().then(res=>{
            this.matchList=res.data.data
+           this.queryParams.match_id = this.matchList[0].id
+           this.getData()
        })
        this.$api.getPlayerList().then(res=>{
            this.playerList=res.data.data
@@ -266,8 +284,9 @@ export default {
        this.$api.getGroupList().then(res=>{
            this.groupList=res.data.data
        })
-       
-       
+       this.$api.getStockList().then(res=>{
+           this.stockList=res.data.data
+       })
     }
 }
 </script>

+ 149 - 0
src/views/match/group.vue

@@ -0,0 +1,149 @@
+<template>
+    <section class="content">
+        <h4>赛事分组</h4>
+        <el-divider></el-divider>
+        <el-form label-width="80px" class="filter-form">
+            <el-row>
+                <el-col :span="6">
+                    <el-form-item label="赛事名称">
+                        <el-select v-model="queryParams.match_id" placeholder="请选择比赛" size="mini">
+                            <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="4">
+                    <el-form-item label-width="10" style='margin-left:10px'>
+                        <el-button type="primary" @click="getData" size="mini">筛选</el-button>
+                        <el-button
+                        type="primary"
+                        plain
+                        icon="el-icon-plus"
+                        size="mini"
+                        @click="handleAdd"
+                        >新增分组</el-button>
+                    </el-form-item>
+                </el-col>
+            </el-row>   
+        </el-form>
+        <el-table v-loading='loading' :data="list" style="width: 100%;margin-top:10px;" height="50vh">
+                <el-table-column align="center" prop="name" label="分组名称"/>
+                <el-table-column align="center"  prop="join_count" label="参赛人数"/>
+                <el-table-column align="center"  prop="out_count" label="退赛人数"/>
+                <el-table-column align="center"  prop="date" label="操作">
+                    <template slot-scope="scope">
+                        <el-button @click="title='编辑分组',open=true,form=scope.row" size="mini" type="warning">编辑</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="name">
+                    <el-input clearable v-model="form.name" placeholder="请输入分组名称"  ></el-input>
+                </el-form-item>
+                <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>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="submitForm">确 定</el-button>
+                <el-button @click="open=false">取 消</el-button>
+            </div>
+        </el-dialog>
+    </section>
+</template>
+<script>
+import Page from "../../components/Page";
+export default {
+    components: {
+        Page,
+    },
+    data(){
+        return{
+            loading:false,
+            queryParams:{
+                page:1
+            },
+            form:{},
+            list:[{},{}],
+            total:0,
+            title:'新增分组',
+            open:false,
+            rules:{
+                name: [
+                    { required: true, message: '请输入分组名称', trigger: 'blur' }
+                ],
+                match_id: [
+                    { required: true, message: '请选择比赛', trigger: 'blur' }
+                ],
+            },
+            matchList:[],
+            groupList:[],
+            userList:[]
+        }
+    },
+    methods:{
+        gopage(size) {
+            if (size) {
+                this.queryParams.page_size = size;
+            }
+            this.queryParams.page = this.$refs.pageButton.page;
+            this.getData();
+        },
+        getData(){
+            this.loading = true;
+            this.$api.getMatchList().then(res=>{
+                this.matchList=res.data.data
+            })
+            this.$api.getGroupList().then(res=>{
+                this.groupList=res.data.data
+            })
+            this.$api.getUserSearch().then(res=>{
+                this.userList=res.data.data
+            })
+            // 
+            this.$api.getGroups(this.queryParams).then(res=>{
+                this.list=res.data.data.list
+                this.total = res.data.data.total;
+                this.loading = false;
+            })
+        },
+        handleAdd(){
+            this.open=true;
+            this.title='新增分组';
+            this.form={}
+        },
+        /** 提交按钮 */
+        submitForm() {
+            this.$refs["form"].validate(valid => {
+                if (valid) {
+                if (this.form.id != null) {
+                    this.$api.updateGroup(this.form).then(response => {
+                    this.msgSuccess("修改成功");
+                    this.open = false;
+                    this.getData();
+                    });
+                } else {
+                    this.$api.addGroup(this.form).then(response => {
+                    this.msgSuccess("新增成功");
+                    this.open = false;
+                    this.getData();
+                    });
+                }
+        }
+      });
+    },
+    },
+    created(){
+       this.getData() 
+    }
+}
+</script>

+ 169 - 2
src/views/match/index.vue

@@ -1,3 +1,170 @@
 <template>
-    <section>比赛</section>
-</template>
+    <section class="content">
+        <h4>赛事管理</h4>
+        <el-divider></el-divider>
+        <el-form label-width="80px" class="filter-form">
+            <el-row>
+                <el-col :span="6">
+                    <el-form-item label="赛事名称">
+                        <el-input clearable v-model="queryParams.name" placeholder="请输入赛事名称" size="mini"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="4">
+                    <el-form-item label-width="10" style='margin-left:10px'>
+                        <el-button type="primary" @click="getData" size="mini">筛选</el-button>
+                        <el-button
+                        type="primary"
+                        plain
+                        icon="el-icon-plus"
+                        size="mini"
+                        @click="handleAdd"
+                        >新增赛事</el-button>
+                    </el-form-item>
+                </el-col>
+            </el-row>   
+        </el-form>
+        <el-table v-loading='loading' :data="list" style="width: 100%;margin-top:10px;" height="50vh">
+                <el-table-column align="center" prop="name" label="赛事名称"/>
+                <el-table-column align="center"  prop="join_count" label="参赛人数"/>
+                <el-table-column align="center"  prop="out_count" label="退赛人数"/>
+                <el-table-column align="center"  prop="groups" label="比赛分组"/>
+                <el-table-column align="center"  prop="start_time" label="开始时间"/>
+                <el-table-column align="center"  prop="end_time" label="结束时间"/>
+                <el-table-column align="center"  prop="date" label="操作">
+                    <template slot-scope="scope">
+                        <el-button @click="title='编辑赛事',open=true,form=scope.row" size="mini" type="warning">编辑</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="name">
+                    <el-input clearable v-model="form.name" placeholder="请输入比赛名称"></el-input>
+                </el-form-item>
+                <el-form-item label="开始时间" prop="start_time">
+                    <el-date-picker
+                    v-model="form.start_time"
+                    type="date"
+                    placeholder="选择日期"
+                    format="yyyy-MM-dd"
+                    value-format="yyyy-MM-dd"
+                    size="mini"
+                    >
+                    </el-date-picker>
+                </el-form-item>
+                <el-form-item label="结束时间" prop="end_time">
+                    <el-date-picker
+                    v-model="form.end_time"
+                    type="date"
+                    placeholder="选择日期"
+                    format="yyyy-MM-dd"
+                    value-format="yyyy-MM-dd"
+                    size="mini"
+                    >
+                    </el-date-picker>
+                </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>
+    </section>
+</template>
+<script>
+import Page from "../../components/Page";
+export default {
+    components: {
+        Page,
+    },
+    data(){
+        return{
+            loading:false,
+            queryParams:{
+                page:1
+            },
+            form:{},
+            list:[{},{}],
+            total:0,
+            title:'新增赛事',
+            open:false,
+            rules:{
+                name: [
+                    { required: true, message: '请输入比赛名称', trigger: 'blur' }
+                ],
+                start_time: [
+                    { required: true, message: '请输入开始时间', trigger: 'blur' }
+                ],
+                end_time: [
+                    { required: true, message: '请输入结束时间', trigger: 'blur' }
+                ]
+            },
+            matchList:[],
+            groupList:[],
+            userList:[]
+        }
+    },
+    methods:{
+        gopage(size) {
+            if (size) {
+                this.queryParams.page_size = size;
+            }
+            this.queryParams.page = this.$refs.pageButton.page;
+            this.getData();
+        },
+        getData(){
+            this.loading = true;
+            this.$api.getMatchList().then(res=>{
+                this.matchList=res.data.data
+            })
+            this.$api.getGroupList().then(res=>{
+                this.groupList=res.data.data
+            })
+            this.$api.getUserSearch().then(res=>{
+                this.userList=res.data.data
+            })
+            // 
+            this.$api.getMatchs(this.queryParams).then(res=>{
+                this.list=res.data.data.list
+                this.total = res.data.data.total;
+                this.loading = false;
+            })
+        },
+        handleAdd(){
+            this.open=true;
+            this.title='新增赛事';
+            this.form={}
+        },
+        /** 提交按钮 */
+        submitForm() {
+            this.$refs["form"].validate(valid => {
+                if (valid) {
+                if (this.form.id != null) {
+                    this.$api.updateMatch(this.form).then(response => {
+                    this.msgSuccess("修改成功");
+                    this.open = false;
+                    this.getData();
+                    });
+                } else {
+                    this.$api.addMatch(this.form).then(response => {
+                    this.msgSuccess("新增成功");
+                    this.open = false;
+                    this.getData();
+                    });
+                }
+        }
+      });
+    },
+    },
+    created(){
+       this.getData() 
+    }
+}
+</script>

+ 204 - 0
src/views/player/index.vue

@@ -0,0 +1,204 @@
+<template>
+    <section class="content">
+        <h4>选手管理</h4>
+        <el-divider></el-divider>
+        <el-form label-width="80px" class="filter-form">
+            <el-row>
+                <el-col :span="5">
+                    <el-form-item label="用户">
+                        <el-input clearable v-model="queryParams.username" placeholder="请输入用户名/代码" size="mini"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="5">
+                    <el-form-item label="比赛名称" prop="match_id">
+                        <el-select v-model="queryParams.match_id" placeholder="请选择比赛" size="mini">
+                            <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="5">
+                    <el-form-item label="比赛分组">
+                        <el-select v-model="queryParams.groupId" placeholder="请选择比赛分组" size="mini">
+                        <el-option v-for="item in groupList" :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 label-width="10" style='margin-left:10px'>
+                        <el-button type="primary" @click="getData" size="mini">筛选</el-button>
+                        <el-button
+                        type="primary"
+                        plain
+                        icon="el-icon-plus"
+                        size="mini"
+                        @click="handleAdd"
+                        >新增选手</el-button>
+                    </el-form-item>
+                </el-col>
+            </el-row>   
+        </el-form>
+        <el-table v-loading='loading' :data="list" style="width: 100%;margin-top:10px;" height="50vh">
+                <el-table-column align="center" prop="usercode" label="选手代码"/>
+                <el-table-column align="center"  prop="username" label="选手名称"/>
+                <el-table-column align="center"  prop="match_name" label="比赛名称"/>
+                <el-table-column align="center"  prop="match_group" label="比赛分组"/>
+                <el-table-column align="center"  prop="fund" label="参赛资金"/>
+                <el-table-column align="center"  prop="date" label="参赛状态">
+                    <template slot-scope="scope">
+                        <span v-if='scope.row.match_status==1'>参赛中</span>
+                        <span v-if='scope.row.match_status==0'>暂停</span>
+                        <span v-if='scope.row.match_status==-1'>退赛</span>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center"  prop="date" label="操作">
+                    <template slot-scope="scope">
+                        <el-button @click="title='编辑选手',open=true,form=scope.row" size="mini" type="warning">编辑</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="user_id">
+                    <el-select filterable v-model="form.user_id" placeholder="请选择用户代码">
+                        <el-option v-for="item in userList" :key='item.id' :label="item.label" :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="比赛资金" prop="fund">
+                    <el-input clearable v-model="form.fund" placeholder="请输入比赛资金">
+                        <template slot="append">万元</template>
+                    </el-input>
+                </el-form-item>
+                <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="match_group">
+                    <el-select v-model="form.match_group" placeholder="请选择比赛分组">
+                        <el-option v-for="item in groupList" :key='item.id' :label="item.name" :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="参数状态" prop="match_status">
+                    <el-select v-model="form.match_status" placeholder="请选择参数状态">
+                        <el-option key='1' label="参赛中" :value="1"></el-option>
+                        <el-option key='0' label="暂停" :value="0"></el-option>
+                        <el-option key='-1' label="已退赛" :value="-1"></el-option>
+                    </el-select>
+                </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>
+    </section>
+</template>
+<script>
+import Page from "../../components/Page";
+export default {
+    components: {
+        Page,
+    },
+    data(){
+        return{
+            loading:false,
+            queryParams:{
+                page:1
+            },
+            form:{
+                match_status:1
+            },
+            list:[{},{}],
+            total:0,
+            title:'新增选手',
+            open:false,
+            rules:{
+                user_id: [
+                    { required: true, message: '请选择选手', trigger: 'change' }
+                ],
+                fund: [
+                    { required: true, message: '请输入比赛资金', trigger: 'blur' }
+                ],
+                match_id: [
+                    { required: true, message: '请选择比赛', trigger: 'change' }
+                ],
+                usercode: [
+                    { required: true, message: '请输入用户代码', trigger: 'blur' }
+                ],
+                match_group: [
+                    { required: true, message: '请选择分组', trigger: 'change' }
+                ],
+                match_status: [
+                    { required: true, message: '请选择参数状态', trigger: 'change' }
+                ],
+            },
+            matchList:[],
+            groupList:[],
+            userList:[]
+        }
+    },
+    methods:{
+        gopage(size) {
+            if (size) {
+                this.queryParams.page_size = size;
+            }
+            this.queryParams.page = this.$refs.pageButton.page;
+            this.getData();
+        },
+        getData(){
+            this.loading = true;
+            this.$api.getMatchList().then(res=>{
+                this.matchList=res.data.data
+            })
+            this.$api.getGroupList().then(res=>{
+                this.groupList=res.data.data
+            })
+            this.$api.getUserSearch().then(res=>{
+                this.userList=res.data.data
+            })
+            // 
+            this.$api.getPlayers(this.queryParams).then(res=>{
+                this.list=res.data.data.list
+                this.total = res.data.data.total;
+                this.loading = false;
+            })
+        },
+        handleAdd(){
+            this.open=true;
+            this.title='新增选手';
+            this.form={}
+        },
+        /** 提交按钮 */
+        submitForm() {
+            this.$refs["form"].validate(valid => {
+                if (valid) {
+                if (this.form.id != null) {
+                    this.$api.updatePlayer(this.form).then(response => {
+                    this.msgSuccess("修改成功");
+                    this.open = false;
+                    this.getData();
+                    });
+                } else {
+                    this.$api.addPlayer(this.form).then(response => {
+                    this.msgSuccess("新增成功");
+                    this.open = false;
+                    this.getData();
+                    });
+                }
+        }
+      });
+    },
+    },
+    created(){
+       this.getData() 
+    }
+}
+</script>

+ 13 - 20
src/views/user/index.vue

@@ -1,32 +1,28 @@
 <template>
     <section class="content">
-        <h1>用户管理</h1>
+        <h4>用户管理</h4>
         <el-divider></el-divider>
         <el-form label-width="40px" class="filter-form">
             <el-row>
-                <el-col :span="9">
+                <el-col :span="4">
                     <el-form-item label="用户">
-                        <el-input clearable v-model="queryParams.username" placeholder="请输入用户名/代码"></el-input>
+                        <el-input clearable v-model="queryParams.username" placeholder="请输入用户名/代码" size="mini"></el-input>
                     </el-form-item>
                 </el-col>
                 <el-col :span="4">
-                    <el-form-item>
-                        <el-button type="danger" @click="getData">筛选</el-button>
+                    <el-form-item label-width="10" style='margin-left:10px'>
+                        <el-button type="primary" @click="getData" size="mini">筛选</el-button>
+                        <el-button
+                        type="primary"
+                        plain
+                        icon="el-icon-plus"
+                        size="mini"
+                        @click="handleAdd"
+                        >新增用户</el-button>
                     </el-form-item>
                 </el-col>
             </el-row>   
         </el-form>
-        <el-row :gutter="10" class="mb8">
-            <el-col :span="1.5">
-                <el-button
-                type="primary"
-                plain
-                icon="el-icon-plus"
-                size="mini"
-                @click="handleAdd"
-                >新增</el-button>
-            </el-col>
-        </el-row>
         <el-table v-loading='loading' :data="list" style="width: 100%;margin-top:10px;" height="50vh">
                 <el-table-column align="center" prop="usercode" label="代码"/>
                 <el-table-column align="center"  prop="username" label="用户名"/>
@@ -39,7 +35,7 @@
                 <el-table-column align="center"  prop="date" label="资产"/>
                 <el-table-column align="center"  prop="date" label="操作">
                     <template slot-scope="scope">
-                        <el-button @click="title='编辑用户',open=true,form=scope.row" size="mini" type="primary">编辑</el-button>
+                        <el-button @click="title='编辑用户',open=true,form=scope.row" size="mini" type="warning">编辑</el-button>
                     </template>
                 </el-table-column>
         </el-table>
@@ -93,9 +89,6 @@ export default {
                 username: [
                     { required: true, message: '请输入用户名', trigger: 'blur' }
                 ],
-                usercode: [
-                    { required: true, message: '请输入用户代码', trigger: 'blur' }
-                ],
             }
         }
     },