增加个人比赛修改\详情

base
JayChou 6 months ago
parent 2e8d3fc21f
commit b26ab2d571
  1. 3
      src/Layout/tabbar/index.vue
  2. 9
      src/api/race.ts
  3. 4
      src/views/login/registered.vue
  4. 19
      src/views/registrationGroup/index.vue
  5. 119
      src/views/registrationPersonage/index.vue
  6. 67
      src/views/userInfo/components/reacList.vue
  7. 7
      src/views/userInfo/index.vue

@ -293,4 +293,7 @@ getLogoSetting()
background-color: transparent;
border-bottom: none;
}
.el-dropdown-link {
white-space: nowrap;
}
</style>

@ -118,4 +118,13 @@ export const sava = (data: any) => {
method: 'POST',
data,
})
}
// 取消比赛
export const cancelRace = (params: any) => {
return request({
url: '/annualcompetitionprojectregistration/annualCompetitionProjectRegistration/cancelRegistration',
method: 'GET',
params,
})
}

@ -163,8 +163,8 @@ const rules = {
workno: [
{ required: true, message: '请输入工号/学号', trigger: 'blur' },
{
pattern: /^\d{1,20}$/,
message: '工号/学号必须是8位数字',
pattern: /^[a-zA-Z0-9]{1,20}$/,
message: '工号/学号为1-20位数字或字母',
trigger: 'blur',
},
],

@ -114,16 +114,16 @@
class="demo-ruleForm"
>
<el-form-item label="年度比赛项目">
<el-input v-model="ruleForm.annualCompid" type="text" disabled />
<el-input v-model="ruleForm.objName" type="text" disabled />
</el-form-item>
<el-form-item label="参赛形式">
<el-input v-model="ruleForm.entryFormat" type="text" disabled />
</el-form-item>
<el-form-item label="队伍名称" prop="teamName">
<el-input v-model.number="ruleForm.teamName" :disabled="isDisable"/>
<el-input v-model="ruleForm.teamName" type="text" :disabled="isDisable"/>
</el-form-item>
<el-form-item label="选择题目" prop="teamName">
<el-select v-model="ruleForm.topicId" placeholder="请选择题目" :disabled="isDisable">
<el-form-item label="选择题目" prop="topicid">
<el-select v-model="ruleForm.topicid" placeholder="请选择题目" :disabled="isDisable">
<el-option
v-for="item in options"
:key="item.value"
@ -204,7 +204,8 @@ if (route.query.edit) {
console.log(res,'res~~~');
ruleForm.annualCompid = route.query.annualCompid
ruleForm.teamName = res.result.teamName
ruleForm.topicId = res.result.topicObj.id
ruleForm.topicid = res.result.topicObj ? res.result.topicObj.id : ''
ruleForm.objName = res.result.annualCompPointName
options.value = res.result.topicList.map((item) => {
return {
value: item.id,
@ -231,7 +232,7 @@ const getTopicListApi = async () => {
nextTick(() => {
if (res.result.length != 0) {
ruleForm.topicId = res.result[0].id
ruleForm.topicid = res.result[0].id
}
})
options.value = res.result.map((item) => {
@ -251,12 +252,13 @@ const activeName = ref('members')
const ruleFormRef = ref<FormInstance>()
const ruleForm = reactive<any>({
annualCompid: route.query.objName,
annualCompid:'' ,
entryFormat: '团队',
id: route.query.id,
teamName: '', //
instructorSheetList: [], //
teamManagementList: [], //
objName:route.query.objName
})
const rules = reactive<FormRules<typeof ruleForm>>({})
@ -267,11 +269,12 @@ const loading = ref(false)
const submit = () => {
if (!ruleForm.teamName) return ElMessage.warning('请输入队伍名称')
if (!ruleForm.topicId) return ElMessage.warning('请选择题目')
if (!ruleForm.topicid) return ElMessage.warning('请选择题目')
ruleForm.instructorSheetList = [...teaRef.value.submit()]
ruleForm.teamManagementList = [...stuRef.value.submit()]
loading.value = true
ruleForm.id = route.query.id
// ruleForm.annualCompid = route.query.id
if(route.query.edit){
ruleForm.enrollCode = route.query.enrollCode

@ -72,6 +72,36 @@
</div>
</el-card>
</div>
<el-acrd>
<div>
<el-form
ref="ruleFormRef"
style="max-width: 600px"
:model="ruleForm"
status-icon
label-width="auto"
class="demo-ruleForm"
>
<el-form-item label="年度比赛项目">
<el-input v-model="ruleForm.objName" type="text" disabled />
</el-form-item>
<el-form-item label="参赛形式">
<el-input v-model="ruleForm.entryFormat" type="text" disabled />
</el-form-item>
<el-form-item label="选择题目" prop="topicId">
<el-select v-model="ruleForm.topicId" placeholder="请选择题目" :disabled="isDisable">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
</div>
</el-acrd>
<el-card class="center">
<div class="personage-info">
<div class="head">
@ -138,28 +168,33 @@
</el-card>
<div class="bottom">
<el-button class="btn" @click="() => router.back()">取消报名</el-button>
<el-button class="btn cyan" :loading="subLoading" @click="submit">
确认报名
<el-button class="btn" @click="() => router.back()">{{ isDisable ? '返回' : isEdit ? '取消修改' : '取消报名' }}</el-button>
<el-button class="btn cyan" :loading="subLoading" @click="submit" :disabled="isDisable">
{{ isEdit ? '确认修改' : '确认报名' }}
</el-button>
</div>
</div>
</template>
<script lang="ts" setup>
import { ref, toRefs } from 'vue'
import { ref, toRefs, reactive, nextTick } from 'vue'
import { getSignUpApi } from '@/api/person'
import { ElMessage } from 'element-plus'
import { useRoute, useRouter } from 'vue-router'
import userStore from '@/store/module/user'
import { getNdbswxqList, getComppxqList } from '@/api/person'
import { getOldRaceList, getOldRaceInfo } from '@/api/oldRace'
import { getTopicList } from '@/api/race'
const user = userStore()
const route = useRoute()
const router = useRouter()
const { userInfo: info } = toRefs(user)
const isDisable = ref(false)
isDisable.value = route.query.info as any
const isEdit = ref(false)
isEdit.value = route.query.edit as any
//
function pasSex(num: number) {
if (num == 1) return '男'
@ -171,27 +206,22 @@ function pasSex(num: number) {
const upData = ref<Parameters<typeof getSignUpApi>[0]>({
annualCompid: route.query.objName as string,
entryFormat: '个人',
id: route.query.id,
id: route.query.edit ? route.query.annualCompid : route.query.id,
instructorSheetList: [],
teamManagementList: [{ realname: '', captain: '', teamSeq: '', userId: '' }],
teamName: '',
})
//
const ndbs = ref<any>({})
const ndbsXm = ref<any>({})
getNdbswxqList(route.query.bcId as string).then((res: any) => {
if (res.result) ndbs.value = res.result
})
getComppxqList(route.query.id as string).then((res: any) => {
console.log(res.result, 'xm')
if (res.result) ndbsXm.value = res.result
})
const subLoading = ref(false)
async function submit() {
if (!ruleForm.topicId) return ElMessage.warning('请选择题目')
upData.value.teamManagementList[0].realname = info.value.realname
upData.value.teamManagementList[0].userId = info.value.id
upData.value.annualCompid = route.query.annualCompid
upData.value.topicId = ruleForm.topicId
// if (!upData.value.teamName) {
// ElMessage({
// message: '',
@ -218,6 +248,67 @@ async function submit() {
subLoading.value = false
}
}
// form
const ruleFormRef = ref<FormInstance>()
const ruleForm = reactive<any>({
annualCompid: '',
entryFormat: '个人',
id: route.query.id,
topicId: '',
objName:route.query.objName
})
const options = ref([])
if (route.query.edit) {
const getOldRaceListEvent = async () => {
const res: any = await getOldRaceList({ id: route.query.id })
ndbs.value = res.result.annualComp
ndbsXm.value = res.result.annualCompPoint
}
const getOldRaceInfoEvent = async () => {
const res: any = await getOldRaceInfo({ id: route.query.id })
console.log(res, 'res~~~')
ruleForm.annualCompid = route.query.annualCompid
ruleForm.teamName = res.result.teamName
ruleForm.topicId = res.result.topicObj ? res.result.topicObj.id : ''
ruleForm.objName = res.result.annualCompPointName
options.value = res.result.topicList.map((item) => {
return {
value: item.id,
label: item.name,
}
})
}
getOldRaceListEvent()
getOldRaceInfoEvent()
} else {
getNdbswxqList(route.query.bcId as string).then((res: any) => {
if (res.result) ndbs.value = res.result
})
getComppxqList(route.query.id as string).then((res: any) => {
console.log(res.result, 'xm')
if (res.result) ndbsXm.value = res.result
})
}
const getTopicListApi = async () => {
const res: any = await getTopicList({ annualCompid: route.query.id })
console.log(res)
nextTick(() => {
if (res.result.length != 0) {
ruleForm.topicId = res.result[0].id
}
})
options.value = res.result.map((item) => {
return {
value: item.id,
label: item.name,
}
})
}
getTopicListApi()
</script>
<style lang="scss" scoped>

@ -62,19 +62,29 @@
link
type="primary"
size="small"
@click="editEvent(row.id,row.annualCompid,row.enrollCode)"
@click="editEvent(row.id,row.annualCompid,row.enrollCode,row.entryFormat)"
v-if="row.enrollStatic == '1' || row.enrollStatic == '3'"
>
编辑
</el-button>
<el-button
link
type="primary"
size="small"
@click="InfoEvent(row.id,row.annualCompid,row.enrollCode)"
@click="InfoEvent(row.id,row.annualCompid,row.enrollCode,row.entryFormat)"
>
详情
</el-button>
<el-button
link
type="warning"
size="small"
v-if="row.enrollStatic == '1'"
@click="cancelEvent(row.id)"
>
取消
</el-button>
</template>
</el-table-column>
</el-table>
@ -132,7 +142,7 @@
<script setup lang="ts">
import { ref } from 'vue'
import { getStuRaceList, uploadFileZp, sava } from '@/api/race'
import { getStuRaceList, uploadFileZp, sava ,cancelRace} from '@/api/race'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'
const router = useRouter()
@ -236,8 +246,8 @@ const formatstatus = (status: any) => {
}
}
const editEvent = (id: any,annualCompid: any,enrollCode:any) => {
console.log(id);
const editEvent = (id: any,annualCompid: any,enrollCode:any,entryFormat:any) => {
if(entryFormat == '团队'){
router.push({
path: '/registrationGroup',
query:{
@ -247,11 +257,25 @@ const editEvent = (id: any,annualCompid: any,enrollCode:any) => {
edit: true
}
})
}else{
router.push({
path: 'registrationPersonage',
query:{
id,
annualCompid,
enrollCode,
edit: true
}
})
}
console.log(id);
}
const InfoEvent = (id: any,annualCompid: any,enrollCode:any) => {
router.push({
const InfoEvent = (id: any,annualCompid: any,enrollCode:any,entryFormat:any) => {
if(entryFormat == '团队'){
router.push({
path: '/registrationGroup',
query:{
id,
@ -261,6 +285,35 @@ const InfoEvent = (id: any,annualCompid: any,enrollCode:any) => {
info: true
}
})
}else{
router.push({
path: 'registrationPersonage',
query:{
id,
annualCompid,
enrollCode,
edit: true,
info: true
}
})
}
// router.push({
// path: '/registrationGroup',
// query:{
// id,
// annualCompid,
// enrollCode,
// edit: true,
// info: true
// }
// })
}
const cancelEvent = async (id: any) => {
const res: any = await cancelRace({id })
ElMessage.success(res.message)
getList()
}
</script>

@ -31,7 +31,10 @@
/>
</div>
</div>
<div class="info-box">
<div class="label">账号</div>
<div class="text">{{ useUserStore.userInfo.username }}</div>
</div>
<div class="info-box">
<div class="label">姓名</div>
<div class="text">{{ useUserStore.userInfo.realname }}</div>
@ -491,7 +494,7 @@ const setImageUrl = (url: string) => {
width: 377.333px;
}
width: 176px;
width: 165px;
height: 80px;
display: flex;
flex-direction: column;

Loading…
Cancel
Save