|
|
@@ -71,7 +71,7 @@
|
|
|
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
|
|
</el-card>
|
|
|
<!-- 添加或修改职务管理对话框 -->
|
|
|
- <!-- <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
|
|
+ <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
|
|
<el-form ref="judgePositionFormRef" :model="form" :rules="rules" label-width="80px">
|
|
|
<el-form-item label="职务名称" prop="name">
|
|
|
<el-input v-model="form.name" placeholder="请输入职务名称,如 裁判长" />
|
|
|
@@ -86,56 +86,6 @@
|
|
|
<el-button @click="cancel">取 消</el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
- </el-dialog>-->
|
|
|
- <el-dialog :title="dialog.title" v-model="dialog.visible" width="650px" append-to-body>
|
|
|
- <el-form ref="groupFormRef" :model="groupForm" :rules="groupRules" label-width="130px">
|
|
|
- <el-form-item label="名称" prop="judgeId">
|
|
|
- <el-input placeholder="请输入名称" />
|
|
|
- </el-form-item>
|
|
|
- <!-- 组别模板 -->
|
|
|
- <el-form-item label="常规组别模板" prop="templateName">
|
|
|
- <el-select v-model="groupForm.templateName" placeholder="请选择赛制类型" clearable>
|
|
|
- <el-option label="常规赛模版" value="regular" />
|
|
|
- <el-option label="决赛组别模版" value="final" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <!-- 赛制类型 -->
|
|
|
- <el-form-item label="决赛组别模板" prop="competitionType">
|
|
|
- <el-select v-model="groupForm.competitionType" placeholder="请选择赛制类型" clearable>
|
|
|
- <el-option label="常规赛模版" value="regular" />
|
|
|
- <el-option label="决赛组别模版" value="final" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <!-- 开始日期 -->
|
|
|
- <el-form-item label="日期" prop="startDate">
|
|
|
- <el-date-picker v-model="groupForm.startDate" type="date" placeholder="选择开始日期" style="width: 100%" />
|
|
|
- </el-form-item>
|
|
|
- <!-- 组别列表 -->
|
|
|
- <el-form-item label="组别">
|
|
|
- <div v-for="(item, index) in groupList" :key="index" style="display: flex; align-items: center; gap: 10px; margin-bottom: 10px">
|
|
|
- <span style="width: 60px">{{ item.name }}组</span>
|
|
|
- 间隔天数:<el-input-number
|
|
|
- v-model="item.intervalDays"
|
|
|
- :min="0"
|
|
|
- :max="7"
|
|
|
- controls-position="right"
|
|
|
- placeholder="间隔天数"
|
|
|
- style="width: 80px"
|
|
|
- />
|
|
|
- <el-time-picker v-model="item.time" value-format="HH:mm" format="HH:mm" placeholder="选择时间" style="flex: 1; min-width: 120px" />
|
|
|
- <el-button type="primary" icon="Plus" @click="addGroup" v-if="index === groupList.length - 1" style="width: 40px; height: 40px" />
|
|
|
- <el-button type="primary" icon="Minus" @click="removeGroup(index)" v-else style="width: 40px; height: 40px" />
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
-
|
|
|
- <template #footer>
|
|
|
- <div class="dialog-footer">
|
|
|
- <el-button :loading="buttonLoading" type="primary">确 定</el-button>
|
|
|
- <el-button>取 消</el-button>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -285,65 +235,4 @@ const handleExport = () => {
|
|
|
onMounted(() => {
|
|
|
getList();
|
|
|
});
|
|
|
-
|
|
|
-// 组别表单数据
|
|
|
-const groupForm = ref({
|
|
|
- templateName: '',
|
|
|
- competitionType: '',
|
|
|
- startDate: '',
|
|
|
- generateDays: 1,
|
|
|
- description: ''
|
|
|
-});
|
|
|
-
|
|
|
-// 组别列表(修改为包含时间和名称的对象数组)
|
|
|
-const groupList = ref<{ name: string; time: string; intervalDays: number }[]>([{ name: 'A', time: '', intervalDays: 0 }]);
|
|
|
-// 表单规则(修改)
|
|
|
-const groupRules = {
|
|
|
- templateName: [{ required: true, message: '请输入组别模板名称', trigger: 'blur' }],
|
|
|
- competitionType: [{ required: true, message: '请选择赛制类型', trigger: 'change' }],
|
|
|
- generateDays: [{ required: true, message: '请输入生成天数', trigger: 'blur' }]
|
|
|
-};
|
|
|
-
|
|
|
-// 添加组别方法(修改)
|
|
|
-// 添加组别方法(修改)
|
|
|
-const addGroup = () => {
|
|
|
- const lastGroup = groupList.value[groupList.value.length - 1];
|
|
|
- let nextLetter = 'A';
|
|
|
-
|
|
|
- // 获取最后一个组别的字母
|
|
|
- if (lastGroup && lastGroup.name) {
|
|
|
- const lastChar = lastGroup.name.toUpperCase();
|
|
|
- // 计算下一个字母的ASCII码
|
|
|
- const nextCharCode = lastChar.charCodeAt(0) + 1;
|
|
|
- nextLetter = String.fromCharCode(nextCharCode);
|
|
|
-
|
|
|
- // 如果超过Z,从A开始循环
|
|
|
- if (nextCharCode > 90) {
|
|
|
- nextLetter = 'A';
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- groupList.value.push({ name: nextLetter, time: '', intervalDays: 0 });
|
|
|
-};
|
|
|
-// 删除组别方法(修正)
|
|
|
-const removeGroup = (index: number) => {
|
|
|
- if (groupList.value.length > 1) {
|
|
|
- // 删除该组别
|
|
|
- groupList.value.splice(index, 1);
|
|
|
-
|
|
|
- // 重新生成所有组别的字母顺序(从A开始连续分配)
|
|
|
- const newGroupList = [];
|
|
|
- for (let i = 0; i < groupList.value.length; i++) {
|
|
|
- const letter = String.fromCharCode(65 + i); // 65是'A'的ASCII码
|
|
|
- newGroupList.push({
|
|
|
- name: letter,
|
|
|
- time: groupList.value[i].time,
|
|
|
- intervalDays: groupList.value[i].intervalDays
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- // 更新组别列表
|
|
|
- groupList.value = newGroupList;
|
|
|
- }
|
|
|
-};
|
|
|
</script>
|