|
@@ -34,16 +34,38 @@
|
|
|
</div>
|
|
|
<div style="margin-bottom: 10px;">
|
|
|
<Input placeholder="搜索醍摩豆帐号" style="width: 300px; margin-right: 10px;" />
|
|
|
- <Button type="success" @click="getTeacherList()" v-show="actInfo.scope === 'area' && !isArea">邀请老师</Button>
|
|
|
+ <Button type="success" @click="getTeacherList()" v-show="actInfo.joinMode === 'invite' && !isArea">邀请老师</Button>
|
|
|
</div>
|
|
|
- <Table :columns="applicationColumns" :data="applicationList" row-key="id" stripe>
|
|
|
- <template #action="{row, index}">
|
|
|
- <Button type="error" size="small" @click="deleteApplica(row, index, 'join')">删除</Button>
|
|
|
+ <Table :columns="applicationColumns" :data="applicationList" stripe row-key="id">
|
|
|
+ <template #head="{}">
|
|
|
+ <span> </span>
|
|
|
+ </template>
|
|
|
+ <template #poster="{row}">
|
|
|
+ <PersonalPhoto :name="row.name || row.iname" :picture="row.picture" />
|
|
|
+ </template>
|
|
|
+ <template #joinStatus="{row}">
|
|
|
+ <Tag color="success" v-if="row.inviteStatus && row.signContestStatus === 1">已报名</Tag>
|
|
|
+ <template v-else-if="!row.inviteStatus">
|
|
|
+ <Tag color="green">已邀请</Tag>
|
|
|
+ <Tag color="orange" v-show="!row.signContestStatus">未报名</Tag>
|
|
|
+ <Tag color="default" v-show="row.signContestStatus === -2">未到报名时间</Tag>
|
|
|
+ </template>
|
|
|
+ <span v-else-if="row.inviteStatus != -2">-</span>
|
|
|
+ </template>
|
|
|
+ <template #uploadContestType="{row}">
|
|
|
+ <span>{{ row.uploadContestType === 'file' ? '文件' : (row.uploadContestType ? '苏格拉底' : '-') }}</span>
|
|
|
+ </template>
|
|
|
+ <template #uploadContestScore="{row}">
|
|
|
+ <span>{{ row.uploadContestScore === -1 ? '-' : row.uploadContestScore }}</span>
|
|
|
+ </template>
|
|
|
+ <template #action="{row}">
|
|
|
+ <Button type="success" size="small" style="margin-right: 10px;" @click="getTeaInfo(row)" v-show="row.inviteStatus != -2">查看</Button>
|
|
|
+ <!-- <Button type="error" size="small" @click="deleteApplica(row, index, 'join')">删除</Button> -->
|
|
|
</template>
|
|
|
</Table>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <template v-if="actInfo.scope === 'area' && isArea || actInfo.scope === 'school'">
|
|
|
+ <template v-if="actInfo.scope != 'school' && isArea || actInfo.scope === 'school'">
|
|
|
<div class="data-box">
|
|
|
<div class="module-title">评审管理</div>
|
|
|
<div class="module-data">
|
|
@@ -105,6 +127,24 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
+ <Drawer title="评审规则" :width="50" v-model="ruleDrawer">
|
|
|
+ <RuleDrawer :ruleDrawerAdd="0" :ruleInfoParent="ruleInfo" @saveRule="saveRule" />
|
|
|
+ </Drawer>
|
|
|
+ <Drawer title="教师报名信息" :width="25" v-model="teaDrawer">
|
|
|
+ <Form :model="teaSignInfo" :label-width="80">
|
|
|
+ <FormItem v-for="(item, index) in teaSignInfo.contest.enrollInfos" :key="index" :label="infoArr[item.code]">
|
|
|
+ <p>{{ item.code === 'sex' ? (item.val === 'secrecy' ? '保密' : (item.val === 'male' ? '男' : '女')) : item.val }}</p>
|
|
|
+ </FormItem>
|
|
|
+ <template v-if="contestInfo.sign.type">
|
|
|
+ <FormItem label="团队名称">
|
|
|
+ <p>{{ teaSignInfo.contest.teamName }}</p>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem label="团队编码">
|
|
|
+ <p>{{ teaSignInfo.contest.cipher }}</p>
|
|
|
+ </FormItem>
|
|
|
+ </template>
|
|
|
+ </Form>
|
|
|
+ </Drawer>
|
|
|
<Modal v-model="teacherModal" title="邀请老师" width="650" :footer-hide="true">
|
|
|
<Table :columns="teacherCloumns" :data="showTeachers" height="500" @on-selection-change="getSelTea">
|
|
|
<template #poster="{row}">
|
|
@@ -118,23 +158,6 @@
|
|
|
<Button type="success" long @click="saveInviteTea()">保存</Button>
|
|
|
</Modal>
|
|
|
<Modal v-model="processShow" title="邀请评审专家" width="1000" :footer-hide="true">
|
|
|
- <!-- <div style="margin-bottom: 10px;">
|
|
|
- <Input search enter-button placeholder="输入手机号查找" @on-search="searchPro" />
|
|
|
- </div>
|
|
|
- <template v-if="isSearch">
|
|
|
- <div style="display: flex; justify-content: space-between; align-items: center; margin: 20px; margin-bottom: 30px;" v-show="isTmd">
|
|
|
- <img src="./demo.jpeg" alt="" style="width: 50px; height: 50px; border-radius: 50px;">
|
|
|
- <p>罗老师</p>
|
|
|
- <p>1595321354</p>
|
|
|
- <Button type="success" size="small">邀请</Button>
|
|
|
- </div>
|
|
|
- <div style="text-align: center; margin: 30px 0;" v-show="!isTmd">
|
|
|
- <p style="font-size: 20px; margin-bottom: 10px;">手机号未创建醍摩豆帐号,是否邀请该手机号并创建醍摩豆帐号?</p>
|
|
|
- <Button type="success" size="small" style="margin-right: 10px;">邀请并创建</Button>
|
|
|
- <Button size="small">取消</Button>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <Button type="primary" long>邀请</Button> -->
|
|
|
<expertImport :actInfo="actInfo" @processList="setProList"></expertImport>
|
|
|
</Modal>
|
|
|
<Modal v-model="awardsShow" title="批量设置奖项">
|
|
@@ -157,9 +180,11 @@
|
|
|
|
|
|
<script>
|
|
|
import expertImport from './expertImport.vue'
|
|
|
+import RuleDrawer from './ruleDrawer.vue'
|
|
|
export default {
|
|
|
components: {
|
|
|
expertImport,
|
|
|
+ RuleDrawer
|
|
|
},
|
|
|
props: {
|
|
|
actInfo: {
|
|
@@ -174,112 +199,84 @@ export default {
|
|
|
type: Array,
|
|
|
default: [],
|
|
|
},
|
|
|
+ ruleInfo: {
|
|
|
+ type: Object,
|
|
|
+ default: {},
|
|
|
+ },
|
|
|
},
|
|
|
data () {
|
|
|
return {
|
|
|
applicationColumns: [
|
|
|
{
|
|
|
- title: '姓名',
|
|
|
- key: 'name',
|
|
|
- tree: true,
|
|
|
+ title: ' ',
|
|
|
+ slot: 'head',
|
|
|
+ align: 'center',
|
|
|
+ width: 40,
|
|
|
+ tree: true
|
|
|
},
|
|
|
{
|
|
|
- title: '性别',
|
|
|
- key: 'sex',
|
|
|
- // width: 80,
|
|
|
+ title: ' ',
|
|
|
+ slot: 'poster',
|
|
|
+ align: 'center',
|
|
|
+ width: 50,
|
|
|
},
|
|
|
{
|
|
|
- title: '手机号码',
|
|
|
- key: 'phone',
|
|
|
- // width: 100,
|
|
|
+ title: '姓名',
|
|
|
+ key: 'name',
|
|
|
+ // tree: true,
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
{
|
|
|
- title: '电子邮箱',
|
|
|
- key: 'email',
|
|
|
- // width: 500,
|
|
|
+ title: '醍摩豆ID',
|
|
|
+ key: 'id',
|
|
|
+ // width: 80,
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
{
|
|
|
title: '学校',
|
|
|
- key: 'school',
|
|
|
- // width: 100,
|
|
|
- filters: [
|
|
|
- {
|
|
|
- label: '醍摩豆学校',
|
|
|
- value: '醍摩豆学校'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '研发学校',
|
|
|
- value: '研发学校'
|
|
|
- },
|
|
|
- ],
|
|
|
- filterMultiple: false,
|
|
|
- filterMethod (value, row) {
|
|
|
- return row.school === value
|
|
|
- }
|
|
|
+ key: 'schoolName',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
{
|
|
|
- title: '职务',
|
|
|
- key: 'zhiwu',
|
|
|
- // width: 100,
|
|
|
+ title: '组名',
|
|
|
+ key: 'teamNameContest',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
{
|
|
|
- title: '学段',
|
|
|
- key: 'period',
|
|
|
- // width: 100,
|
|
|
+ title: '学校',
|
|
|
+ key: 'schoolName',
|
|
|
+ align: 'center'
|
|
|
},
|
|
|
{
|
|
|
- title: '学科',
|
|
|
- key: 'subject',
|
|
|
+ title: '参赛状态',
|
|
|
+ slot: 'joinStatus',
|
|
|
+ align: 'center'
|
|
|
// width: 100,
|
|
|
},
|
|
|
{
|
|
|
- title: '组名',
|
|
|
- key: 'team',
|
|
|
+ title: '报名时间',
|
|
|
+ key: 'joinTime',
|
|
|
+ align: 'center'
|
|
|
// width: 100,
|
|
|
- filters: [
|
|
|
- {
|
|
|
- label: '数学组',
|
|
|
- value: '数学组'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '语文组',
|
|
|
- value: '语文组'
|
|
|
- },
|
|
|
- ],
|
|
|
- filterMultiple: false,
|
|
|
- filterMethod (value, row) {
|
|
|
- return row.team === value
|
|
|
- }
|
|
|
},
|
|
|
- {
|
|
|
- title: '组内身份',
|
|
|
- key: 'identity',
|
|
|
+ /* {
|
|
|
+ title: '作品',
|
|
|
+ slot: 'uploadContestType',
|
|
|
+ align: 'center'
|
|
|
// width: 100,
|
|
|
- filters: [
|
|
|
- {
|
|
|
- label: '组长',
|
|
|
- value: '组长'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '组员',
|
|
|
- value: '组员'
|
|
|
- },
|
|
|
- ],
|
|
|
- filterMultiple: false,
|
|
|
- filterMethod (value, row) {
|
|
|
- return row.identity === value
|
|
|
- }
|
|
|
- },
|
|
|
+ // fixed: 'right',
|
|
|
+ }, */
|
|
|
{
|
|
|
- title: '报名时间',
|
|
|
- key: 'time',
|
|
|
+ title: '上传时间',
|
|
|
+ key: 'uploadTime',
|
|
|
+ align: 'center'
|
|
|
// width: 100,
|
|
|
},
|
|
|
{
|
|
|
- title: '作品',
|
|
|
- key: 'work',
|
|
|
+ title: '分数',
|
|
|
+ slot: 'uploadContestScore',
|
|
|
+ align: 'center'
|
|
|
// width: 100,
|
|
|
- // fixed: 'right',
|
|
|
},
|
|
|
{
|
|
|
title: '操作',
|
|
@@ -289,104 +286,7 @@ export default {
|
|
|
// fixed: 'right',
|
|
|
},
|
|
|
],
|
|
|
- applicationList: [
|
|
|
- {
|
|
|
- id: '000',
|
|
|
- name: '张三',
|
|
|
- sex: '男',
|
|
|
- phone: '110',
|
|
|
- email: '111222@qq.com',
|
|
|
- school: '醍摩豆学校',
|
|
|
- zhiwu: '年级主任',
|
|
|
- period: '初中',
|
|
|
- subject: '数学',
|
|
|
- time: '2023-08-08',
|
|
|
- team: '数学组',
|
|
|
- identity: '组长',
|
|
|
- work: '',
|
|
|
- _showChildren: true,
|
|
|
- children: [
|
|
|
- {
|
|
|
- id: '001',
|
|
|
- name: '李四',
|
|
|
- sex: '女',
|
|
|
- phone: '911',
|
|
|
- email: '331321@qq.com',
|
|
|
- school: '醍摩豆学校',
|
|
|
- zhiwu: '普通教师',
|
|
|
- period: '初中',
|
|
|
- subject: '数学',
|
|
|
- time: '2023-08-10',
|
|
|
- team: '数学组',
|
|
|
- identity: '组员',
|
|
|
- work: '',
|
|
|
- },
|
|
|
- {
|
|
|
- id: '002',
|
|
|
- name: '李四',
|
|
|
- sex: '女',
|
|
|
- phone: '911',
|
|
|
- email: '331321@qq.com',
|
|
|
- school: '醍摩豆学校',
|
|
|
- zhiwu: '普通教师',
|
|
|
- period: '初中',
|
|
|
- subject: '数学',
|
|
|
- time: '2023-08-10',
|
|
|
- team: '数学组',
|
|
|
- identity: '组员',
|
|
|
- work: '',
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- {
|
|
|
- id: '010',
|
|
|
- name: '柳五',
|
|
|
- sex: '女',
|
|
|
- phone: '110',
|
|
|
- email: '111222@qq.com',
|
|
|
- school: '醍摩豆学校',
|
|
|
- zhiwu: '语文组长',
|
|
|
- period: '初中',
|
|
|
- subject: '语文',
|
|
|
- time: '2023-08-09',
|
|
|
- team: '语文组',
|
|
|
- identity: '组长',
|
|
|
- work: '',
|
|
|
- children: [
|
|
|
- {
|
|
|
- id: '011',
|
|
|
- name: '李四',
|
|
|
- sex: '女',
|
|
|
- phone: '911',
|
|
|
- email: '331321@qq.com',
|
|
|
- school: '研发学校',
|
|
|
- zhiwu: '普通教师',
|
|
|
- period: '初中',
|
|
|
- subject: '数学',
|
|
|
- time: '2023-08-10',
|
|
|
- team: '数学组',
|
|
|
- identity: '组员',
|
|
|
- work: '',
|
|
|
- },
|
|
|
- {
|
|
|
- id: '012',
|
|
|
- name: '李四',
|
|
|
- sex: '女',
|
|
|
- phone: '911',
|
|
|
- email: '331321@qq.com',
|
|
|
- school: '研发学校',
|
|
|
- zhiwu: '普通教师',
|
|
|
- period: '初中',
|
|
|
- subject: '数学',
|
|
|
- time: '2023-08-10',
|
|
|
- team: '数学组',
|
|
|
- identity: '组员',
|
|
|
- work: '',
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
-
|
|
|
- ],
|
|
|
+ applicationList: [],
|
|
|
processShow: false,
|
|
|
isTmd: false,
|
|
|
workPro: false,
|
|
@@ -432,26 +332,7 @@ export default {
|
|
|
align: 'center',
|
|
|
},
|
|
|
],
|
|
|
- processList: [
|
|
|
- {
|
|
|
- name: '张专家',
|
|
|
- sex: '男',
|
|
|
- phone: '110',
|
|
|
- email: '111222@qq.com',
|
|
|
- period: '初中',
|
|
|
- subject: '英语、数学',
|
|
|
- num: 4,
|
|
|
- },
|
|
|
- {
|
|
|
- name: '赵专家',
|
|
|
- sex: '女',
|
|
|
- phone: '110',
|
|
|
- email: '111222@qq.com',
|
|
|
- period: '初中',
|
|
|
- subject: '语文、生物',
|
|
|
- num: 3,
|
|
|
- },
|
|
|
- ],
|
|
|
+ processList: [],
|
|
|
awardsList: [
|
|
|
{
|
|
|
value: '特等奖',
|
|
@@ -578,15 +459,34 @@ export default {
|
|
|
}, */
|
|
|
],
|
|
|
showTeachers: [],
|
|
|
+ teaDrawer: false,
|
|
|
+ teaSignInfo: {
|
|
|
+ contest: {
|
|
|
+ enrollInfos: []
|
|
|
+ }
|
|
|
+ }, //教师报名信息
|
|
|
+ infoArr: {
|
|
|
+ name: '姓名',
|
|
|
+ sex: '性别',
|
|
|
+ phone: '手机号码',
|
|
|
+ email: '电子邮箱',
|
|
|
+ period: '学段',
|
|
|
+ subject: '学科',
|
|
|
+ },
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
isArea() {
|
|
|
return localStorage.getItem('platform') === 'area'
|
|
|
},
|
|
|
+ areaId() {
|
|
|
+ return sessionStorage.getItem('areaId')
|
|
|
+ },
|
|
|
},
|
|
|
created () {
|
|
|
+ // this.applicationColumns[2].filters = this.actInfo.invitedSchools
|
|
|
this.getProList()
|
|
|
+ this.actTeaList()
|
|
|
},
|
|
|
methods: {
|
|
|
// 获取老师列表
|
|
@@ -659,6 +559,9 @@ export default {
|
|
|
// this.inviteTeachers = res.inviteTeachers
|
|
|
this.$emit('inviTea', res.inviteTeachers)
|
|
|
this.teacherModal = false
|
|
|
+ this.$Message.warning('邀请成功')
|
|
|
+ } else {
|
|
|
+ this.$Message.warning('邀请失败')
|
|
|
}
|
|
|
})
|
|
|
},
|
|
@@ -670,7 +573,7 @@ export default {
|
|
|
this.$api.areaActivity.manageAct(params).then(res => {
|
|
|
console.log(res);
|
|
|
if(res.code === 200) {
|
|
|
- this.processList = res?.activityExpert.experts.map(item => {
|
|
|
+ this.processList = res?.activityExpert?.experts.map(item => {
|
|
|
item.num = 0
|
|
|
return item
|
|
|
})
|
|
@@ -708,6 +611,87 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ actTeaList() {
|
|
|
+ let params = {
|
|
|
+ grant_type: 'invited-and-enroll-teachers',
|
|
|
+ activityId: this.actInfo.id,
|
|
|
+ activityOwner: this.isArea ? this.areaId : '', //选填(默认当前学校) 区级id:活动所有老师 校级id:本校邀请的老师
|
|
|
+ }
|
|
|
+ this.$api.areaActivity.manageAct(params).then(res => {
|
|
|
+ if(res.code === 200) {
|
|
|
+ let lists = res?.inviteEnrollTeachers.map(item => {
|
|
|
+ item.joinTime = item.signContestTime ? this.$tools.formatTime(item.signContestTime, 'yyyy-MM-dd') : '-'
|
|
|
+ item.uploadTime = item.uploadContestTime ? this.$tools.formatTime(item.uploadContestTime, 'yyyy-MM-dd') : '-'
|
|
|
+ item.teamNameContest = item.teamNameContest || '-'
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ if(this.contestInfo.sign.type) {
|
|
|
+ lists.forEach(item => {
|
|
|
+ if(item.teamCipherContest) {
|
|
|
+ let isTeam = this.applicationList.findIndex(list => list.teamCipherContest === item.teamCipherContest)
|
|
|
+ if(isTeam != -1) {
|
|
|
+ if(item.teamLeaderContest) {
|
|
|
+ item._showChildren = true
|
|
|
+ item.children = this.applicationList[isTeam].children
|
|
|
+ this.applicationList[isTeam] = item
|
|
|
+ } else {
|
|
|
+ this.applicationList[isTeam].children.push(item)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if(item.teamLeaderContest) {
|
|
|
+ item._showChildren = true
|
|
|
+ item.children = []
|
|
|
+ this.applicationList.push(item)
|
|
|
+ } else {
|
|
|
+ this.applicationList.push({
|
|
|
+ inviteStatus: -2, // -2表示当前队员未找到队长
|
|
|
+ teamCipherContest: item.teamCipherContest,
|
|
|
+ _showChildren: true,
|
|
|
+ children: [item]
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ item.children = []
|
|
|
+ this.applicationList.push(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.applicationColumns.splice(4, 1)
|
|
|
+ this.applicationList = lists
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ saveRule(data) {
|
|
|
+ let {info, isEdit} = data
|
|
|
+ /* if(isEdit) {
|
|
|
+ this.reviewList[this.reviewSel] = info
|
|
|
+ } else {
|
|
|
+ this.reviewList.push(info)
|
|
|
+ } */
|
|
|
+ this.ruleDrawer = false
|
|
|
+ },
|
|
|
+ getTeaInfo(data) {
|
|
|
+ this.$parent.isLoading = true
|
|
|
+ let params = {
|
|
|
+ grant_type: 'get-teacher-enroll',
|
|
|
+ teacherId: data.id,
|
|
|
+ activityId: this.actInfo.id,
|
|
|
+ }
|
|
|
+ this.$api.areaActivity.manageAct(params).then(res => {
|
|
|
+ if(res.code === 1) {
|
|
|
+ this.$Message.warning('暂无报名信息')
|
|
|
+ } else if(res.code === 200) {
|
|
|
+ this.teaSignInfo = res?.enroll
|
|
|
+ this.teaDrawer = true
|
|
|
+ }
|
|
|
+ }).finally(() => {
|
|
|
+ this.$parent.isLoading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
deleteApplica(data, index, type) {
|
|
|
console.log(data, index);
|
|
|
if(type === 'join') {
|