功能调整

sale
tianea
parent 1bf104b7d4
commit 30617a4c76

@ -21,6 +21,7 @@
"sortablejs": "^1.14.0",
"tinymce": "^5.10.3",
"vue": "2.6.10",
"vue-calendar-component": "^2.8.2",
"vue-router": "3.0.6",
"vuedraggable": "^2.24.3",
"vuex": "3.1.0",
@ -18652,6 +18653,11 @@
"resolved": "https://registry.npmmirror.com/vue/-/vue-2.6.10.tgz",
"integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ=="
},
"node_modules/vue-calendar-component": {
"version": "2.8.2",
"resolved": "https://registry.npmmirror.com/vue-calendar-component/-/vue-calendar-component-2.8.2.tgz",
"integrity": "sha512-BJh7xOBzM7QVcapcN4EbPQ1eZ8Pii1/oy+dzqjZTilRSIDD7SRPdFpnUJwZvs8lCrhtBAyJbYFsdm2SogXWHVQ=="
},
"node_modules/vue-eslint-parser": {
"version": "7.11.0",
"resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz",
@ -35315,6 +35321,11 @@
"resolved": "https://registry.npmmirror.com/vue/-/vue-2.6.10.tgz",
"integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ=="
},
"vue-calendar-component": {
"version": "2.8.2",
"resolved": "https://registry.npmmirror.com/vue-calendar-component/-/vue-calendar-component-2.8.2.tgz",
"integrity": "sha512-BJh7xOBzM7QVcapcN4EbPQ1eZ8Pii1/oy+dzqjZTilRSIDD7SRPdFpnUJwZvs8lCrhtBAyJbYFsdm2SogXWHVQ=="
},
"vue-eslint-parser": {
"version": "7.11.0",
"resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz",

@ -26,6 +26,7 @@
"sortablejs": "^1.14.0",
"tinymce": "^5.10.3",
"vue": "2.6.10",
"vue-calendar-component": "^2.8.2",
"vue-router": "3.0.6",
"vuedraggable": "^2.24.3",
"vuex": "3.1.0",

@ -6,3 +6,10 @@ export function getById(id){
method: 'get'
})
}
export function listDate(id) {
return request({
url: baseUrl+'listDate?userNo='+id,
method: 'get'
})
}

@ -18,14 +18,15 @@
highlight-current-row
style="font-size:12px;"
>
<el-table-column label="用户名" align="center">
<el-table-column label="用户名" width="80px" align="center">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="班级" align="center">
<el-table-column label="班级" align="center">
<template slot-scope="scope">
{{ scope.row.className }}
<tips :content="scope.row.className"></tips>
<!-- {{ scope.row.className }} -->
</template>
</el-table-column>
<el-table-column label="所属团队" align="center">
@ -33,12 +34,12 @@
<span>{{ scope.row.teamName }}</span>
</template>
</el-table-column>
<el-table-column label="收益率折算分" align="center">
<el-table-column label="收益率折算分" width="68px" align="center">
<template slot-scope="scope">
<span>{{ numberFixed(scope.row.financeScore)}}</span>
</template>
</el-table-column>
<el-table-column label="排名" align="center">
<el-table-column label="排名" width="50px" align="center">
<template slot-scope="scope">
<span>{{ scope.row.personalRank }}</span>
</template>
@ -78,42 +79,42 @@
<span>{{ numberFixed(scope.row.cumCommission) }}</span>
</template>
</el-table-column>
<el-table-column label="累计收益率" align="center">
<el-table-column label="累计收益率" width="66px" align="center">
<template slot-scope="scope">
<span>{{ numberFixed(scope.row.pnlRatio*100)+"%" }}</span>
</template>
</el-table-column>
<el-table-column label="基准收益率(沪深300)" align="center">
<el-table-column label="基准收益率(沪深300)" width="87px" align="center">
<template slot-scope="scope">
<span>{{ numberFixed(scope.row.baseRatio*100)+"%" }}</span>
</template>
</el-table-column>
<el-table-column label="年化收益率" align="center">
<el-table-column label="年化收益率" width="81px" align="center">
<template slot-scope="scope">
<span>{{ numberFixed(scope.row.pnlRatioAnnual*100)+"%" }}</span>
</template>
</el-table-column>
<el-table-column label="最大回测" align="center">
<el-table-column label="最大回测" width="52px" align="center">
<template slot-scope="scope">
<span>{{ numberFixed(scope.row.maxDrawdown*100) }}</span>
</template>
</el-table-column>
<el-table-column label="卡玛比率" align="center">
<el-table-column label="卡玛比率" width="70px" align="center">
<template slot-scope="scope">
<span>{{ numberFixed(scope.row.calmarRatio) }}</span>
</template>
</el-table-column>
<el-table-column label="夏普比率" align="center">
<el-table-column label="夏普比率" width="50px" align="center">
<template slot-scope="scope">
<span>{{ numberFixed(scope.row.sharpRatio) }}</span>
</template>
</el-table-column>
<el-table-column label="开仓次数" align="center">
<el-table-column label="开仓次数" width="50px" align="center">
<template slot-scope="scope">
<span>{{ scope.row.openCount }}</span>
</template>
</el-table-column>
<el-table-column label="平仓次数" align="center">
<el-table-column label="平仓次数" width="50px" align="center">
<template slot-scope="scope">
<span>{{ scope.row.closeCount }}</span>
</template>
@ -129,7 +130,7 @@
</el-table>
<el-pagination
:current-page.sync="rankQuery.pageNo"
:page-sizes="[10,15,20,50]"
:page-sizes="[10,15,20,50,100,200,300,500,1000]"
:page-size.sync="rankQuery.pageSize"
layout="total,prev,pager,next,jumper,sizes"
:total="total"
@ -148,9 +149,11 @@ import * as rankingApi from '@/api/ranking'
import TradeRecord from './tradeRecord.vue'
import * as gradeApi from '@/api/grade'
import Tips from '@/components/tips.vue'
export default {
components:{
'trade-record': TradeRecord
'trade-record': TradeRecord,
'tips': Tips,
},
filters: {
statusFilter(status) {
@ -233,7 +236,7 @@ export default {
exportRank(){
this.downloadLoading = true
import('@/vendor/Export2Excel').then(excel => {
const tHeader = ['用户名', '班级', '所属团队', '收益率折算分', '排名',"期初资金","总资产",'可用资金','市值','累计盈亏','浮动盈亏','累计手续费','累计收益率','基准收益率(沪深300)','年化收益率','最大回测','卡玛比率','夏普比率','开次数','平仓次数']
const tHeader = ['用户名', '班级', '所属团队', '收益率折算分', '排名',"期初资金","总资产",'可用资金','市值','累计盈亏','浮动盈亏','累计手续费','累计收益率','基准收益率(沪深300)','年化收益率','最大回测','卡玛比率','夏普比率','开次数','平仓次数']
const filterVal = ['name', 'className', 'teamName', 'financeScore', 'personalRank',"initFounds","nav",'available','marketValue','profitLoss','fpnl','cumCommission','pnlRatio','baseRatio','pnlRatioAnnual','maxDrawdown','calmarRatio','sharpRatio','openCount','closeCount']
const list = this.list
const data = this.formatJson(filterVal, list)

@ -129,8 +129,15 @@ export default {
})
},
handleScroll(e){
if(e.srcElement.scrollTopMax == e.srcElement.scrollTop&&!this.loading){
// console.log(e ,e.srcElement.scrollTop,this.loading)
// if(e.srcElement.scrollTopMax == e.srcElement.scrollTop&&!this.loading){
// console.log(e)
// this.$emit("pageDown")
// }
let scrollHeight = e.target.scrollHeight - e.target.clientHeight
if(scrollHeight - e.target.scrollTop == 0){
this.$emit("pageDown")
}

@ -14,7 +14,7 @@
<div class="tabBox">
<div class="boxHeader">成绩权重设置</div>
<div>
综合得分=证券投资×<el-input-number v-model="temp.financePower" />+金融实操×<el-input-number v-model="temp.examPower" />
综合得分=证券投资交易<el-input-number v-model="temp.financePower" />+投资者教育<el-input-number v-model="temp.examPower" />
</div>
</div>
<div class="tabBox">

@ -56,7 +56,7 @@
<el-input v-model="memberQuery2.name" placeholder="姓名/学号" />
<el-button @click="listMember2"></el-button>
<el-button v-if="this.survey.type == 2" @click="addMemberVisable2 = true"></el-button>
<el-button v-if="this.survey.type == 2" @click="addMemberVisable = true" >添加成员(查询)</el-button>
<el-button v-if="this.survey.type == 2" @click="addPersonal" >添加成员(查询)</el-button>
<el-button v-if="this.survey.type == 2" @click="importMember" >
批量导入
<input ref="member-upload-input" type="file" accept=".xlsx" style="display:none;" @change="handleClick2">
@ -129,7 +129,7 @@
<el-button class="small" @click="confirmEditTeam" >确定</el-button>
<el-button class="small">取消</el-button>
</el-dialog>
<el-dialog title="添加成员" :visible.sync="addMemberVisable">
<!-- <el-dialog title="添加成员" :visible.sync="addMemberVisable">
<div class="filter-container">
<el-input v-model="userQuery2.name" placeholder="输入学号或姓名"/>
<el-button @click="searchMember"></el-button>
@ -156,8 +156,8 @@
</el-table>
<el-button @click="addTeamMember"></el-button>
<el-button @click="addMemberVisable = false">取消</el-button>
</el-dialog>
<!-- <el-dialog title="添加个人赛成员" :visible.sync="addMemberVisable">
</el-dialog> -->
<el-dialog title="添加个人赛成员" :visible.sync="addMemberVisable">
<div class="filter-container">
<el-input v-model="createMember.teacher" placeholder="请输入指导老师"/>
<el-input v-model="userQuery2.name" placeholder="输入学号或姓名"/>
@ -197,8 +197,8 @@
/>
<el-button @click="addTeamMember2"></el-button>
<el-button @click="addMemberVisable2 = false">取消</el-button>
</el-dialog> -->
<el-button @click="addMemberVisable = false">取消</el-button>
</el-dialog>
<el-dialog title="添加个人赛成员" :visible.sync="addMemberVisable2">
<div>
<el-checkbox-group v-model="checkedGrade">
@ -377,6 +377,10 @@ export default {
this.listMember2()
},
methods: {
addPersonal(){
this.addMemberVisable = true
this.searchUser()
},
changeTab(index,id){
this.tabId = index
this.stageId = id

@ -178,21 +178,29 @@
</el-table-column>
</el-table>
</div>
<div v-if="activeName == '每日复盘'">
<div class="tz-note-title">今日大盘行情</div>
<div>
<el-input type="textarea" v-model="note.market" />
<div v-if="activeName == '每日复盘'" class="tz-note">
<div style="width:25%">
<Calendar ref="Calendar"
v-on:choseDay="clickDay"
:markDate.sync=marks
></Calendar>
</div>
<div class="tz-note-title">个股复盘</div>
<div>
<el-input type="textarea" v-model="note.stock" />
<div style="width:100%; margin-left: 50px;">
<div class="tz-note-title">今日大盘行情</div>
<div>
<el-input type="textarea" v-model="note.market" />
</div>
<div class="tz-note-title">个股复盘</div>
<div>
<el-input type="textarea" v-model="note.stock" />
</div>
<div class="tz-note-title">明日计划</div>
<div > <el-input type="textarea" v-model="note.plain" /></div>
<div class="tz-note-title">持仓分析</div>
<div><el-input type="textarea" v-model="note.position" /></div>
<div class="tz-note-title">重点关注</div>
<div><el-input type="textarea" v-model="note.mark" /></div>
</div>
<div class="tz-note-title">明日计划</div>
<div > <el-input type="textarea" v-model="note.plain" /></div>
<div class="tz-note-title">持仓分析</div>
<div><el-input type="textarea" v-model="note.position" /></div>
<div class="tz-note-title">重点关注</div>
<div><el-input type="textarea" v-model="note.mark" /></div>
</div>
<!-- </keep-alive> -->
</el-tab-pane>
@ -203,7 +211,11 @@
import * as competitionApi from '@/api/competition'
import * as noteApi from '@/api/note'
import user from '../../../store/modules/user'
import Calendar from 'vue-calendar-component';
export default {
components: {
Calendar
},
props:{
userInfo:{
type: Object,
@ -223,14 +235,18 @@ export default {
}
},
created(){
console.log(this.userInfo)
},
mounted(){
noteApi.listDate(this.userInfo.userNo).then(res=>{
this.marks = res.data.noteDate
})
this.loadPosition()
},
data(){
return {
activeName: '',
marks: [],
activeName: '账户持仓',
arr:[
{
id: 1,
@ -265,8 +281,27 @@ export default {
}
},
methods:{
clickDay(data) {
var dt = new Date(data);
this.note.noteDate = dt;
var id = this.userInfo.userNo+"_"+dt.Format("yyyy-MM-dd")
noteApi.getById(id).then(res=>{
if(res.code == 200&&res.data){
this.note = res.data
}else{
this.note = {
noteDate: '',
market: '',
stock: '',
plain: '',
mark: '',
position: '',
id: ''
}
}})
},
loadPosition(){
this.positionList = []
this.positionList = []
competitionApi.position({userId:this.userInfo.userNo ,compId: this.compId,stageId: this.stageId }).then(res=>{
if(res.code == 200){
this.positionList = res.data
@ -327,6 +362,9 @@ export default {
userInfo:{
handler(nv,ov){
this.loadPosition()
noteApi.listDate(this.userInfo.userNo).then(res=>{
this.marks = res.data.noteDate
})
},
deep: true
}
@ -338,4 +376,82 @@ export default {
width: 80% !important;
font-size: 12px !important;
}
.now-data-myself {
width: 40%;
position: absolute;
border-right: 1px solid rgba(227, 227, 227, 0.6);
}
.con {
position: relative;
max-width: 280px;
}
.wh_content_all {
background: transparent !important;
}
.wh_top_changge li {
color: #0f1622 !important;
font-size: 15px !important;
}
.wh_content_item, .wh_content_item_tag {
color: #303133 !important;
}
.wh_content_item .wh_isToday {
background: #00d985 !important;
color: #fff !important;
}
.wh_content_item .wh_chose_day {
background: #409EFF !important;
color: #ffff !important;
}
.wh_item_date:hover {
background: rgb(217, 236, 255) !important;
border-radius: 100px !important;
color: rgb(102, 177, 255) !important;
}
.wh_jiantou1[data-v-2ebcbc83] {
border-top: 2px solid #909399;
border-left: 2px solid #909399;
width: 7px;
height: 7px;
}
.wh_jiantou2[data-v-2ebcbc83] {
border-top: 2px solid #909399;
border-right: 2px solid #909399;
width: 7px;
height: 7px;
}
.wh_top_tag[data-v-2ebcbc83] {
color: #409EFF;
border-top: 1px solid rgba(227, 227, 227, 0.6);
border-bottom: 1px solid rgba(227, 227, 227, 0.6);
}
.wh_container {
max-width: 280px;
}
/* .wh_top_changge[data-v-2ebcbc83] {
display: flex;
width: 50%;
margin-left: 43%;
} */
.now-data-myself-time {
color: #0f1622;
font-size: 28px;
height: 30px;
font-family: "Helvetica Neue";
}
.now-data-myself-week {
font-size: 10px;
color: #909399;
}
.wh_top_changge .wh_content_li[data-v-2ebcbc83] {
font-family: Helvetica;
}
.wh_content_item > .wh_isMark{
background:#0264d2 !important;
color: white;
}
.tz-note {
display: flex;
flex-direction: row;
}
</style>

@ -38,11 +38,11 @@
<span>{{ scope.row.stem }}</span>
</template>
</el-table-column>
<el-table-column label="导入日期" align="center">
<!-- <el-table-column label="导入日期" align="center">
<template slot-scope="scope">
<span>{{ new Date(scope.row.createTime).Format("yyyy-MM-dd") }}</span>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="案例层次" align="center">
<template slot-scope="scope">
<span>{{ levelToName(scope.row.levelId) }}</span>

@ -39,11 +39,11 @@
<span>{{ scope.row.stem }}</span>
</template>
</el-table-column>
<el-table-column label="导入日期" align="center">
<!-- <el-table-column label="导入日期" align="center">
<template slot-scope="scope">
<span>{{ new Date(scope.row.createTime).Format("yyyy-MM-dd") }}</span>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="案例层次" align="center">
<template slot-scope="scope">
<span>{{ levelToName(scope.row.levelId) }}</span>

@ -39,11 +39,11 @@
<span>{{ scope.row.stem }}</span>
</template>
</el-table-column>
<el-table-column label="导入日期" align="center">
<!-- <el-table-column label="导入日期" align="center">
<template slot-scope="scope">
<span>{{ new Date(scope.row.createTime).Format("yyyy-MM-dd") }}</span>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="题型" align="center">
<template slot-scope="scope">
<span>{{ typeToName(scope.row.questionType) }}</span>

@ -28,7 +28,7 @@
<b-img src="/static/image/icon_ranking_1.png"/>
综合排行榜
</div>
<div v-if="!selectStage&&selectStage.enableFinance" :class=" rankingId ==3? 'ranking-selected':''" @click="changeType(3)">
<div v-if="selectStage&&selectStage.enableFinance" :class=" rankingId ==3? 'ranking-selected':''" @click="changeType(3)">
<b-img src="/static/image/icon_ranking_3.png"/>
证券投资赛项排行榜
</div>
@ -43,7 +43,7 @@
<div class="tz-left-tab">
<div v-if="competition.type == 1" :class="rankingSubType==1?'ranking-sub-type-selected':''" @click="changeType2(1)" >团队排行榜</div>
<div :class="rankingSubType==2?'ranking-sub-type-selected':''" @click="changeType2(2)" >个人排行榜</div>
<div v-if="!isMobilePlatform" :class="rankingSubType==3?'ranking-sub-type-selected':''" @click="changeType2(3)" >大屏排行榜</div>
<div v-if="!isMobilePlatform&&competition.type == 1" :class="rankingSubType==3?'ranking-sub-type-selected':''" @click="changeType2(3)" >大屏排行榜</div>
</div>
<div class="tz-table-container" v-if="rankingSubType == 1">
<div class="tz-table-filter">
@ -68,22 +68,35 @@
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList4_20x20.png" />
指导老师
</b-col>
<b-col v-if="selectStage.enableExam" sm="">
<b-col v-if="selectStage.enableExam&&rankingId==2" sm="">
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList5_20x20.png" />
投资者教育得分
</b-col>
<b-col v-if="selectStage.enableFinance" sm="">
<b-col v-if="selectStage.enableFinance&&rankingId==3" sm="">
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList6_20x20.png" />
证券投资得分
</b-col>
<b-col sm="">
<b-col v-if="rankingId == 1" sm="">
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList7_20x20.png" />
综合平均分
</b-col>
<b-col sm="">
<b-col v-if="rankingId == 1" sm="">
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList7_20x20.png" />
综合总分
</b-col>
<b-col v-if="rankingId ==2 " sm="">
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList7_20x20.png" />
平均用时
</b-col>
<b-col v-if="rankingId == 3" sm="">
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList7_20x20.png" />
平均累计收益率
</b-col>
<b-col v-if="rankingId == 3" sm="">
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList7_20x20.png" />
平均年化收益率
</b-col>
<b-col sm>
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList10_20x20.png" />
备注
@ -108,18 +121,27 @@
<b-col sm="">
{{item.teacher}}
</b-col>
<b-col v-if="selectStage.enableExam" sm="">
<b-col v-if="selectStage.enableExam&&rankingId==2" sm="">
{{numberFixed(item.examScore)}}
</b-col>
<b-col v-if="selectStage.enableFinance" sm="">
<b-col v-if="selectStage.enableFinance&&rankingId==3" sm="">
{{numberFixed(item.financeScore)}}
</b-col>
<b-col sm="">
<b-col v-if="rankingId == 1" sm="">
{{numberFixed(item.combineScore)}}
</b-col>
<b-col sm>
<b-col v-if="rankingId == 1" sm>
{{numberFixed(item.totalScore)}}
</b-col>
</b-col>
<b-col v-if="rankingId ==2" sm="">
{{numberFixed(item.examCostTime)}}
</b-col>
<b-col v-if="rankingId ==3" sm="">
{{numberFixed(item.currentRatio)}}
</b-col>
<b-col v-if="rankingId ==3" sm="">
{{numberFixed(item.yearRatio)}}
</b-col>
<b-col sm @click="showMemberScore(item)">
<span>
查看
@ -147,18 +169,27 @@
<b-col sm="">
{{item.teacher}}
</b-col>
<b-col v-if="selectStage.enableExam" sm="">
<b-col v-if="selectStage.enableExam&&rankingId==2" sm="">
{{numberFixed(item.examScore)}}
</b-col>
<b-col v-if="selectStage.enableFinance" sm="">
<b-col v-if="selectStage.enableFinance&&rankingId==3" sm="">
{{numberFixed(item.financeScore)}}
</b-col>
<b-col sm="">
<b-col v-if="rankingId == 1" sm="">
{{numberFixed(item.combineScore)}}
</b-col>
<b-col sm>
<b-col v-if="rankingId == 1" sm>
{{numberFixed(item.totalScore)}}
</b-col>
</b-col>
<b-col v-if="rankingId ==2" sm="">
{{numberFixed(item.examCostTime)}}
</b-col>
<b-col v-if="rankingId ==3" sm="">
{{numberFixed(item.currentRatio)}}
</b-col>
<b-col v-if="rankingId ==3" sm="">
{{numberFixed(item.yearRatio)}}
</b-col>
<b-col sm @click="showMemberScore(item)">
<span>
查看
@ -192,19 +223,30 @@
<b-img src="/static/image/icon_rankList4_20x20.png" />
指导老师
</b-col>
<b-col v-if="selectStage.enableExam" sm="">
<b-col v-if="selectStage.enableExam&&rankingId == 2" sm="">
<b-img src="/static/image/icon_rankList5_20x20.png" />
投资者教育得分
</b-col>
<b-col v-if="selectStage.enableFinance" sm="">
<b-col v-if="selectStage.enableFinance&&rankingId == 3" sm="">
<b-img src="/static/image/icon_rankList6_20x20.png" />
证券投资得分
</b-col>
<b-col sm="">
<b-col v-if="rankingId == 1" sm="">
<b-img src="/static/image/icon_rankList7_20x20.png" />
综合得分
</b-col>
<b-col v-if="rankingId == 2" sm="">
<b-img src="/static/image/icon_rankList7_20x20.png" />
用时
</b-col>
<b-col v-if="rankingId == 3" sm="">
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList7_20x20.png" />
累计收益率
</b-col>
<b-col v-if="rankingId == 3" sm="">
<b-img v-if="!isMobilePlatform" src="/static/image/icon_rankList7_20x20.png" />
年化收益率
</b-col>
<!-- <b-col sm>
<b-img src="/static/image/icon_rankList10_20x20.png" />
备注
@ -229,18 +271,24 @@
<b-col sm>
{{item.teacher}}
</b-col>
<b-col v-if="selectStage.enableExam" sm>
<b-col v-if="selectStage.enableExam&&rankingId == 2" sm>
{{numberFixed(item.examScore)}}
</b-col>
<b-col v-if="selectStage.enableFinance" sm>
<b-col v-if="selectStage.enableFinance&&rankingId == 3" sm>
{{numberFixed(item.financeScore)}}
</b-col>
<b-col sm>
<b-col v-if="rankingId == 1" sm>
{{ numberFixed(item.combineScore)}}
</b-col>
<!-- <b-col sm>
</b-col>
<b-col v-if="rankingId == 2" sm>
{{item.examCostTime}}
</b-col> -->
</b-col>
<b-col v-if="rankingId ==3" sm="">
{{numberFixed(item.currentRatio)}}
</b-col>
<b-col v-if="rankingId ==3" sm="">
{{numberFixed(item.yearRatio)}}
</b-col>
</b-row>
<div class="s_container">
<div class="scroll-list">
@ -263,18 +311,24 @@
<b-col sm>
{{item.teacher}}
</b-col>
<b-col v-if="selectStage.enableExam" sm>
<b-col v-if="selectStage.enableExam&&rankingId == 2" sm>
{{numberFixed(item.examScore)}}
</b-col>
<b-col v-if="selectStage.enableFinance" sm>
<b-col v-if="selectStage.enableFinance&&rankingId == 3" sm>
{{numberFixed(item.financeScore)}}
</b-col>
<b-col sm>
<b-col v-if="rankingId == 1" sm>
{{ numberFixed(item.combineScore)}}
</b-col>
<!-- <b-col sm>
<b-col v-if="rankingId == 2" sm>
{{item.examCostTime}}
</b-col> -->
</b-col>
<b-col v-if="rankingId ==3" sm="">
{{numberFixed(item.currentRatio)}}
</b-col>
<b-col v-if="rankingId ==3" sm="">
{{numberFixed(item.yearRatio)}}
</b-col>
</b-row>
</div>
</div>
@ -702,7 +756,7 @@ export default {
if(this.queryData.type2 == 3){
if(this.levelList){
let ids = ''
console.log( this.levelList)
// console.log( this.levelList)
if(!this.levelList||this.levelList.length==0){
this.fullInfo.name =''
}else{
@ -788,6 +842,9 @@ export default {
let examScore = 0
let financeScore = 0
let combineScore = 0
let currentRatio = 0
let yearRatio = 0
let examCostTime = 0
memberList.forEach(m=>{
if(m.examScore){
examScore+=m.examScore
@ -798,6 +855,15 @@ export default {
if(m.combineScore){
combineScore += m.combineScore
}
if(m.currentRatio){
currentRatio += m.currentRatio
}
if(m.yearRatio){
yearRatio +=m.yearRatio
}
if(m.examCostTime){
examCostTime +=m.examCostTime
}
})
let tr = 0
if(!!this.queryData.kw&&this.queryData.kw.length>0){
@ -816,6 +882,9 @@ export default {
examScore: examScore/teamCount,
financeScore: financeScore/teamCount,
combineScore: combineScore/teamCount,
currentRatio: currentRatio/teamCount,
yearRatio: yearRatio/teamCount,
examCostTime: examCostTime/teamCount,
totalScore: combineScore,
memberList: memberList,
className: memberList[0].className
@ -832,14 +901,11 @@ export default {
this.regionId = item.id
let ids = ''
item.catList.forEach(cat=>{
ids+=cat.id+","
ids+=cat.outerId+","
})
if(ids.endsWith(",")){
ids = ids.substring(0,ids.length-1)
}
if(ids.endsWith(",")){
ids = ids.substring(0,ids.length-1)
}
this.queryData.pids = ids
}
this.loadMemberRank()
@ -866,14 +932,14 @@ export default {
this.levelId = 0;
this.queryData.lids = ''
}else{
this.levelId = item.id
let ids = ''
item.catList.forEach(cat=>{
ids+=cat.id+","
})
if(ids.endsWith(",")){
ids = ids.substring(0,ids.length-1)
}
this.levelId = item.outerId
let ids = item.outerId
// item.catList.forEach(cat=>{
// ids+=cat.id+","
// })
// if(ids.endsWith(",")){
// ids = ids.substring(0,ids.length-1)
// }
this.queryData.lids = ids
}
this.loadMemberRank()
@ -921,6 +987,10 @@ export default {
this.wordLen = 7
}
this.userInfo = getInfo()
if(this.competition.type==2){
this.queryData.type2=2
this.rankingSubType =2
}
this.loadData()
},
@ -1198,7 +1268,8 @@ export default {
}
.tz-filter-container span{
display: inline-block;
font-weight: bold;
/* font-weight: bold; */
font-size: small;
margin-left: 1.5rem;
margin-right: 1.5rem;
}
@ -1213,7 +1284,7 @@ export default {
content: "";
position: absolute;
width: 1rem;
height: 1.5rem;
height: 1.2rem;
margin-left: -1rem;
background-color: #ff8533;
}
@ -1223,7 +1294,7 @@ export default {
content: "";
position: absolute;
width: 1rem;
height: 1.5rem;
height: 1.2rem;
margin-right: -1rem;
background-color: #ff8533;
}
@ -1233,7 +1304,7 @@ export default {
content: "";
position: absolute;
width: 1rem;
height: 1.5rem;
height: 1.2rem;
margin-left: -1rem;
background-color: #ff8533;
}
@ -1244,7 +1315,7 @@ export default {
content: "";
position: absolute;
width: 1rem;
height: 1.5rem;
height: 1.2rem;
margin-right: -1rem;
background-color: #ff8533;
}
@ -1254,7 +1325,7 @@ export default {
content: "";
position: absolute;
width: 1rem;
height: 1.5rem;
height: 1.2rem;
margin-left: -1rem;
background-color: #ff8533;
}
@ -1265,7 +1336,7 @@ export default {
content: "";
position: absolute;
width: 1rem;
height: 1.5rem;
height: 1.2rem;
margin-right: -1rem;
background-color: #ff8533;
}
@ -1344,6 +1415,7 @@ export default {
justify-content: space-around; */
align-items: center;
background: #f5f5f5;
font-size: small;
}
.table-header div{
border-right: 1px solid #cdcdcd;

@ -408,16 +408,21 @@ export default {
}
]
};
console.log(id,id == 'personalRatio')
if(id == 'personalRatio'){
if(!this.personalCharts){
this.personalCharts = echarts.init(document.getElementById(id))
}
this.personalCharts.setOption(option,true)
try{
if(!this.personalCharts){
this.personalCharts = echarts.init(document.getElementById(id))
}
this.personalCharts.setOption(option,true)
}catch(e){}
}else{
if(!this.teamCharts){
this.teamCharts = echarts.init(document.getElementById(id))
}
this.teamCharts.setOption(option)
try{
if(!this.teamCharts){
this.teamCharts = echarts.init(document.getElementById(id))
}
this.teamCharts.setOption(option)
}catch(e){}
}
},
drawRanking(id,rankList){
@ -460,16 +465,21 @@ export default {
}
]
}
console.log(id,id == 'personalRanking')
if(id == 'personalRanking'){
try{
if(!this.personalRankingCharts){
this.personalRankingCharts = echarts.init(document.getElementById(id))
}
this.personalRankingCharts.setOption(option)
}catch(e){}
}else{
try{
if(!this.teamRankingCharts){
this.teamRankingCharts = echarts.init(document.getElementById(id))
}
this.teamRankingCharts.setOption(option)
}catch(e){}
}
}
}

@ -101,7 +101,7 @@ public class CompetitionIndexBiz {
}
public Result<JSONArray> position(Long userNo,Long compId,Integer stageId){
String key = "position_"+userNo+"_"+stageId+"_"+compId;
String key = "position_sale_"+userNo+"_"+stageId+"_"+compId;
Object positions = template.opsForValue().get(key);
if(positions == null){
JueJinToken jueJinToken = jueJinTokenDao.getById(1);
@ -292,11 +292,11 @@ public class CompetitionIndexBiz {
if(type2!=3){
if(pids!=null&&pids.size()>0){
pids.removeIf(Objects::isNull);
resultList = resultList.stream().filter(competitionMember -> pids.contains(competitionMember.getProvinceId())).collect(Collectors.toList());
resultList = resultList.stream().filter(competitionMember -> pids.contains(competitionMember.getClassId())).collect(Collectors.toList());
}
if(lids!=null &&lids.size()>0){
lids.removeIf(Objects::isNull);
resultList = resultList.stream().filter(competitionMember -> lids.contains(competitionMember.getLevelId())).collect(Collectors.toList());
resultList = resultList.stream().filter(competitionMember -> lids.contains(competitionMember.getClassId())).collect(Collectors.toList());
}
@ -361,13 +361,13 @@ public class CompetitionIndexBiz {
return Result.success(dto);
}else{
List<CompetitionMember> memberList1 = null;
if(pids!=null&&pids.size()>0){
pids.removeIf(Objects::isNull);
resultList = resultList.stream().filter(competitionMember -> pids.contains(competitionMember.getProvinceId())).collect(Collectors.toList());
}
// if(pids!=null&&pids.size()>0){
// pids.removeIf(Objects::isNull);
// resultList = resultList.stream().filter(competitionMember -> pids.contains(competitionMember.getProvinceId())).collect(Collectors.toList());
// }
if(lids!=null &&lids.size()>0){
lids.removeIf(Objects::isNull);
memberList1 = resultList.stream().filter(competitionMember -> lids.contains(competitionMember.getLevelId())).collect(Collectors.toList());
memberList1 = resultList.stream().filter(competitionMember -> lids.contains(competitionMember.getClassId())).collect(Collectors.toList());
}
List<CompetitionMember> levelMemberList = null;
if(lids2!=null&&lids2.size()>0){
@ -415,8 +415,7 @@ public class CompetitionIndexBiz {
}
private List<CompetitionMember> sortRank(List<CompetitionMember> resultList,Integer type1,Integer type2,ListMemberRankingDTO dto){
long fc = resultList.stream().filter(m->m.getTeamId() == 81701).count();
System.out.println(fc+":"+resultList.size());
List<CompetitionMember> sortedList = new ArrayList<>();
if(type2 == 1){
Map<Integer,List<CompetitionMember>> tmpList = resultList.stream().collect(Collectors.groupingBy(CompetitionMember::getTeamId));
@ -471,6 +470,9 @@ public class CompetitionIndexBiz {
sortedList.addAll(resultList);
}else if( type2 == 3){
if(resultList==null) {
return sortedList;
}
if(type1 == 1){
resultList.sort((o1, o2) -> {
Double a = o1.getCombineScore() == null?0:o1.getCombineScore();

@ -104,15 +104,15 @@ public class CompetitionMemberBiz {
Competition competition =competitionDao.getById(compId);
Stage cStage = competition.getStageList().stream().filter(stage -> stage.getId() == stageId).findFirst().orElse(null);
String competitionTaskKey = "competition_task_"+compId+"_"+stageId;
Object taskObj = template.opsForValue().get(competitionTaskKey);
CompetitionTask competitionTask = null;
if(taskObj == null){
competitionTask = competitionTaskDao.getByCompetitionIdAndStageId(compId,stageId);
template.opsForValue().set(competitionTaskKey,competitionTask,5, TimeUnit.MINUTES);
}else{
competitionTask = (CompetitionTask) taskObj;
}
// String competitionTaskKey = "competition_task_"+compId+"_"+stageId;
// Object taskObj = template.opsForValue().get(competitionTaskKey);
CompetitionTask competitionTask = competitionTaskDao.getByCompetitionIdAndStageId(compId,stageId);
// if(taskObj == null){
// competitionTask = competitionTaskDao.getByCompetitionIdAndStageId(compId,stageId);
// template.opsForValue().set(competitionTaskKey,competitionTask,5, TimeUnit.MINUTES);
// }else{
// competitionTask = (CompetitionTask) taskObj;
// }
//未开赛后不生成交易系统权限
if(competitionTask.getOperationStartTime()==null||competitionTask.getOperationStartTime().getTime()> System.currentTimeMillis()||!cStage.isEnableFinance()){
@ -120,14 +120,14 @@ public class CompetitionMemberBiz {
}
String juejinTokenKey = "juejin_token";
JueJinToken jueJinToken = null;
Object jtObj = template.opsForValue().get(juejinTokenKey);
if(jtObj == null){
jueJinToken =jueJinTokenDao.getById(1);
template.opsForValue().set(juejinTokenKey,jueJinToken,1, TimeUnit.DAYS);
}else{
jueJinToken = (JueJinToken) jtObj;
}
JueJinToken jueJinToken = jueJinTokenDao.getById(1);
// Object jtObj = template.opsForValue().get(juejinTokenKey);
// if(jtObj == null){
// jueJinToken =jueJinTokenDao.getById(1);
// template.opsForValue().set(juejinTokenKey,jueJinToken,1, TimeUnit.DAYS);
// }else{
// jueJinToken = (JueJinToken) jtObj;
// }
JueJinApi jueJinApi = new JueJinApi(jueJinToken.getToken());
Integer tradeType = 1;

@ -20,6 +20,6 @@ public class MemberRankingDTO implements Serializable {
private Integer regionId;
private Integer provinceId;
private String className;
private Double totalRatio;
private Double yearRatio;
private Double currentRatio;
}

@ -270,7 +270,12 @@ public class RankingBiz {
}
});
computeScore(rankingList,currentTask,competition,baseRatio);
computeRanking(rankingList,currentTask,competition.getTeamMaxCount(),now);
if(competition.getTeamMaxCount() == null){
computeRanking(rankingList,currentTask,1,now);
}else{
computeRanking(rankingList,currentTask,competition.getTeamMaxCount(),now);
}
competition.setUpdateRankDate(now);
competitionDao.save(competition);
}

@ -2,7 +2,9 @@ package com.tz.platform.competitiion.pc;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.common.core.tools.BeanUtils;
import com.tz.platform.competitiion.api.biz.NoteBiz;
import com.tz.platform.competitiion.api.dto.NoteDTO;
import com.tz.platform.competitiion.api.dto.NoteDateDTO;
import com.tz.platform.entity.MarketNote;
import com.tz.platform.repository.MarketNoteDao;
import org.springframework.beans.factory.annotation.Autowired;
@ -18,10 +20,19 @@ public class MarketNotePcController {
@Autowired
private MarketNoteDao marketNoteDao;
@Autowired
private NoteBiz noteBiz;
@GetMapping("getById")
public Result<NoteDTO> getById(@RequestParam("id") String id){
MarketNote note = marketNoteDao.getById(id);
NoteDTO dto = BeanUtils.copyProperties(note,NoteDTO.class);
return Result.success(dto);
}
@GetMapping("listDate")
public Result<NoteDateDTO> listDate(@RequestParam("userNo") Long userNo ){
return noteBiz.listDate(userNo);
}
}

@ -8,7 +8,9 @@ import com.tz.platform.competitiion.pc.vo.MemberInfoVO;
import com.tz.platform.entity.CompetitionMember;
import com.tz.platform.entity.CompetitionTeam;
import com.tz.platform.feign.user.IFeignUser;
import com.tz.platform.repository.CompetitionDao;
import com.tz.platform.repository.CompetitionMemberDao;
import com.tz.platform.repository.CompetitionTeamDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -22,6 +24,13 @@ public class MemberInfoBiz {
private CompetitionMemberDao memberDao;
@Autowired
private CompetitionTeamDao teamDao;
@Autowired
private CompetitionDao competitionDao;
@Autowired
private IFeignUser feignUser;
@ -66,13 +75,23 @@ public class MemberInfoBiz {
member.setStageId(vo.getStageId());
member.setTeacher(vo.getTeacher());
member.setTeamId(0);
member.setClassName(m.getClassName());
member.setClassNo(m.getClassNo());
member.setClassId(m.getClassId());
member.setTeamName("个人赛");
memberList.add(member);
});
memberDao.saveAll(memberList);
updatePeopleCount(vo.getCompetitionId());
return Result.success("success");
}
private void updatePeopleCount(Long competitionId){
int peopleCount = memberDao.countByCompetitionId(competitionId);
int teamCount = teamDao.countByCompetitionId(competitionId);
competitionDao.updatePeopleCount(peopleCount,teamCount,competitionId);
}
public Result<String> addMember(AddMemberVO vo){
if(vo.getIds() == null||vo.getIds().size() == 0){
@ -110,6 +129,7 @@ public class MemberInfoBiz {
});
memberDao.saveAll(memberList);
updatePeopleCount(vo.getCompetitionId());
return Result.success("success");
}
}

@ -242,7 +242,7 @@ public class JueJinApi {
String start = "2022-04-01";
String end = "2022-05-05";
String content = api.listAccountHaveTrade(1,100);
String content = api.getTenPosition("1664a38b-3fc7-11ed-8b9c-00163e0e6ad0");
System.out.println(content);
// api.deleteAccount("4811913f-9dba-11ec-89b3-00163e0e6ad0");
// api.getCashInfo("d91c3a8f-cba8-11ec-a483-00163e0e6ad0");

@ -5,6 +5,7 @@ import com.tz.platform.common.core.bo.SubQuestionVO;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
import java.util.List;
@Data
@Accessors(chain = true)
@ -27,4 +28,5 @@ public class QuestionVo {
private List<Integer> answerId;
private List<SubQuestionVO> children;
private Integer outerId;
private Date createTime;
}

@ -19,4 +19,8 @@ public interface IFeignSchool {
@RequestMapping(value = "/feign/system/school/add")
void addSchool(@RequestBody String json);
@RequestMapping(value = "/feign/system/school/add2")
SchoolVo addSchool2(@RequestParam("schoolId") Integer schoolId,@RequestParam("school") String school,@RequestParam("levelId") Integer levelId);
}

@ -2,10 +2,11 @@ package com.tz.platform.feign.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class SchoolVo {
public class SchoolVo implements Serializable {
private Integer id;
private String name;
private Integer provinceId;

@ -3,12 +3,14 @@ package com.tz.platform.system.feign;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.tz.platform.common.core.base.Result;
import com.tz.platform.common.core.tools.BeanUtils;
import com.tz.platform.entity.School;
import com.tz.platform.feign.IFeignSchool;
import com.tz.platform.feign.vo.SchoolVo;
import com.tz.platform.repository.SchoolDao;
import com.tz.platform.system.pc.biz.SchoolBiz;
import com.tz.platform.system.pc.dto.SchoolDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
@ -46,16 +48,18 @@ public class FeignSchoolController implements IFeignSchool {
jsonArray.forEach(object -> {
JSONObject schoolInfo = (JSONObject) object;
int id = schoolInfo.getInt("id");
if(id == 72){
System.out.println("stop");
}
String name = schoolInfo.getStr("name");
int level = schoolInfo.getInt("level");
if(name.isEmpty() ==false){
schoolBiz.save(id,name,level);
}
});
}
}
@Override
public SchoolVo addSchool2(Integer schoolId, String school, Integer levelId) {
Result<SchoolDTO> rs = schoolBiz.save(schoolId,school,levelId);
return BeanUtils.copyProperties(rs.getData(),SchoolVo.class);
}
}

@ -57,14 +57,20 @@ public class UserLoginController extends BaseController {
//http://localhost:8900/server?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InR6czAwMSIsInBhc3N3b3JkIjoiMTIzcXdlIiwicm9sZWlkIjo0fQ.5amVFNkllzOhP9CDWuPaVThVDivp0KUOh3nYFQGIPI4
// String test = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InR6czAwMSIsInBhc3N3b3JkIjoiMTIzcXdlIiwicm9sZWlkIjo0fQ.5amVFNkllzOhP9CDWuPaVThVDivp0KUOh3nYFQGIPI4";
String username= "";
Integer schoolId =0;
String school ="";
Integer classId = 0;
String className = "";
// Integer roleId = 1;
try {
int year = Calendar.getInstance().get(Calendar.YEAR)*7;
DecodedJWT decodedJWT = JWT.require(Algorithm.HMAC256("wx_zjjy_"+year)).build().verify(tk.getTk());
Map<String, Claim> rs = decodedJWT.getClaims();
username = decodedJWT.getClaim("username").asString();
// roleId = decodedJWT.getClaim("roleid").asInt();
schoolId = decodedJWT.getClaim("schoolId").asInt();
school = decodedJWT.getClaim("schoolName").asString();
classId = decodedJWT.getClaim("classId").asInt();
className = decodedJWT.getClaim("className").asString();
} catch (Exception e) {
e.printStackTrace();
return Result.error("数据不正确");
@ -101,4 +107,19 @@ public class UserLoginController extends BaseController {
public Result<String> update(MultipartFile file){
return apiUserLoginBiz.update(file);
}
public static void main(String[] args) {
String test = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImNlc2hpMjAyMjA5MjkiLCJwYXNzd29yZCI6IjEyM3F3ZSIsInJvbGVpZCI6NCwic2Nob29sSWQiOjEsInNjaG9vbE5hbWUiOiLlpKnmi6nlpKflraYiLCJjbGFzc0lkIjo1NDIsImNsYXNzTmFtZSI6IuW5v-ilv-Wkp-WtpuihjOWBpeaWh-eQhuWtpumZoiJ9.l808C58iX4houFdY3qGDugsCEpYkomzZXeJuLPp5xy0";
int year = Calendar.getInstance().get(Calendar.YEAR)*7;
DecodedJWT decodedJWT = JWT.require(Algorithm.HMAC256("wx_zjjy_"+year)).build().verify(test);
Map<String, Claim> rs = decodedJWT.getClaims();
String username = decodedJWT.getClaim("username").asString();
Integer schoolId = decodedJWT.getClaim("schoolId").asInt();
String school = decodedJWT.getClaim("schoolName").asString();
Integer classId = decodedJWT.getClaim("classId").asInt();
String className = decodedJWT.getClaim("className").asString();
System.out.println(username+":"+schoolId+":"+school+":"+classId+":"+className);
}
}

@ -8,6 +8,7 @@ import com.tz.platform.common.core.api.ZhiYunApi;
import com.tz.platform.common.core.bo.Answer;
import com.tz.platform.common.core.config.SystemUtil;
import com.tz.platform.common.core.enmus.UserTypeEnum;
import com.tz.platform.common.core.tools.DateUtil;
import com.tz.platform.common.core.tools.StrUtil;
import com.tz.platform.entity.User;
import com.tz.platform.feign.IFeignGrade;
@ -167,6 +168,12 @@ public class ZhiyunAccountBiz {
String answer = qObject.getStr("answers");
Long score = qObject.getLong("score");
String desc = qObject.getStr("description");
JSONArray results =qObject.getJSONArray("results");
Long createTime = System.currentTimeMillis();
if(results.size()>0){
JSONObject rs=(JSONObject) results.get(0);
createTime = rs.getLong("creationTime");
}
QuestionVo questionVo = feignQuestion.getByOuterId(id);
if(questionVo == null){
questionVo = new QuestionVo();
@ -183,8 +190,9 @@ public class ZhiyunAccountBiz {
questionVo.setAnswerId(convertAnswerId(answer));
questionVo.setScore(score);
questionVo.setType(0);
questionVo.setCreateTime(new Date(createTime));
questionVo.setQuestionType(convertQType(type));
JSONArray results =qObject.getJSONArray("results");
List<Answer> answerList = new ArrayList<>();
for(int i = 0;i<results.size();i++){
JSONObject rs=(JSONObject) results.get(i);
@ -213,7 +221,6 @@ public class ZhiyunAccountBiz {
}
private Integer convertQType(Integer outerType){
switch (outerType){
case 1:

Loading…
Cancel
Save