|
@@ -22,12 +22,12 @@
|
|
|
<el-col :span="1.5">
|
|
<el-col :span="1.5">
|
|
|
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['business:eventGroupConfig:add']">新增</el-button>
|
|
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['business:eventGroupConfig:add']">新增</el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
-<!-- <el-col :span="1.5">
|
|
|
|
|
|
|
+ <!-- <el-col :span="1.5">
|
|
|
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['business:eventGroupConfig:edit']"
|
|
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['business:eventGroupConfig:edit']"
|
|
|
>修改</el-button
|
|
>修改</el-button
|
|
|
>
|
|
>
|
|
|
</el-col>-->
|
|
</el-col>-->
|
|
|
-<!-- <el-col :span="1.5">
|
|
|
|
|
|
|
+ <!-- <el-col :span="1.5">
|
|
|
<el-button
|
|
<el-button
|
|
|
type="danger"
|
|
type="danger"
|
|
|
plain
|
|
plain
|
|
@@ -38,7 +38,7 @@
|
|
|
>删除</el-button
|
|
>删除</el-button
|
|
|
>
|
|
>
|
|
|
</el-col>-->
|
|
</el-col>-->
|
|
|
-<!-- <el-col :span="1.5">
|
|
|
|
|
|
|
+ <!-- <el-col :span="1.5">
|
|
|
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['business:eventGroupConfig:export']">导出</el-button>
|
|
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['business:eventGroupConfig:export']">导出</el-button>
|
|
|
</el-col>-->
|
|
</el-col>-->
|
|
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
|
@@ -46,7 +46,7 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<el-table v-loading="loading" border :data="eventGroupConfigList">
|
|
<el-table v-loading="loading" border :data="eventGroupConfigList">
|
|
|
-<!-- <el-table-column type="selection" width="55" align="center" />-->
|
|
|
|
|
|
|
+ <!-- <el-table-column type="selection" width="55" align="center" />-->
|
|
|
<el-table-column label="编号" align="center" prop="id" v-if="true" width="70" />
|
|
<el-table-column label="编号" align="center" prop="id" v-if="true" width="70" />
|
|
|
<el-table-column label="名称" align="center" prop="name" />
|
|
<el-table-column label="名称" align="center" prop="name" />
|
|
|
<el-table-column label="决赛组模板" align="center" prop="finalTemplateName" />
|
|
<el-table-column label="决赛组模板" align="center" prop="finalTemplateName" />
|
|
@@ -129,28 +129,15 @@
|
|
|
<el-form-item label="名称" prop="name">
|
|
<el-form-item label="名称" prop="name">
|
|
|
<el-input v-model="groupForm.name" placeholder="请输入名称" />
|
|
<el-input v-model="groupForm.name" placeholder="请输入名称" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
-
|
|
|
|
|
- <el-form-item label="常规组模板" prop="regularTemplateId">
|
|
|
|
|
- <el-select v-model="groupForm.regularTemplateId" placeholder="选项">
|
|
|
|
|
- <el-option v-for="item in itemOptionsTournamentTemplateList" :key="item.id" :label="item.label" :value="item.id" />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
-
|
|
|
|
|
<el-form-item label="决赛组模板" prop="finalTemplateId">
|
|
<el-form-item label="决赛组模板" prop="finalTemplateId">
|
|
|
<el-select v-model="groupForm.finalTemplateId" placeholder="选项">
|
|
<el-select v-model="groupForm.finalTemplateId" placeholder="选项">
|
|
|
<el-option v-for="item in itemOptionsTournamentTemplateList" :key="item.id" :label="item.label" :value="item.id" />
|
|
<el-option v-for="item in itemOptionsTournamentTemplateList" :key="item.id" :label="item.label" :value="item.id" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <!-- 开始日期 -->
|
|
|
|
|
- <el-form-item label="决赛组日期" prop="finalStartDate">
|
|
|
|
|
- <el-date-picker
|
|
|
|
|
- v-model="groupForm.finalStartDate"
|
|
|
|
|
- type="datetime"
|
|
|
|
|
- value-format="YYYY-MM-DD HH:mm"
|
|
|
|
|
- format="YYYY-MM-DD HH:mm"
|
|
|
|
|
- placeholder="选择开始日期和时间"
|
|
|
|
|
- style="width: 100%"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-form-item label="常规组模板" prop="regularTemplateId">
|
|
|
|
|
+ <el-select v-model="groupForm.regularTemplateId" placeholder="选项">
|
|
|
|
|
+ <el-option v-for="item in itemOptionsTournamentTemplateList" :key="item.id" :label="item.label" :value="item.id" />
|
|
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<!-- 开始日期 -->
|
|
<!-- 开始日期 -->
|
|
|
<el-form-item label="常规组日期" prop="startDate">
|
|
<el-form-item label="常规组日期" prop="startDate">
|
|
@@ -173,6 +160,38 @@
|
|
|
<el-button type="primary" icon="Minus" @click="removeGroup(index)" v-else style="width: 40px; height: 40px" />
|
|
<el-button type="primary" icon="Minus" @click="removeGroup(index)" v-else style="width: 40px; height: 40px" />
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
+ <el-form-item label="决赛组别">
|
|
|
|
|
+ <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 10px">
|
|
|
|
|
+ <span style="width: 60px">决赛组</span>
|
|
|
|
|
+ 间隔天数:<el-input-number
|
|
|
|
|
+ v-model="groupForm.finalIntervalDays"
|
|
|
|
|
+ :min="0"
|
|
|
|
|
+ :max="7"
|
|
|
|
|
+ controls-position="right"
|
|
|
|
|
+ placeholder="间隔天数"
|
|
|
|
|
+ style="width: 80px"
|
|
|
|
|
+ />
|
|
|
|
|
+ <el-time-picker
|
|
|
|
|
+ v-model="groupForm.finalTime"
|
|
|
|
|
+ value-format="HH:mm"
|
|
|
|
|
+ format="HH:mm"
|
|
|
|
|
+ placeholder="选择时间"
|
|
|
|
|
+ style="flex: 1; min-width: 120px"
|
|
|
|
|
+ />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <!-- 开始日期 -->
|
|
|
|
|
+ <el-form-item label="决赛组日期" prop="finalStartDate">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="groupForm.finalStartDate"
|
|
|
|
|
+ disabled
|
|
|
|
|
+ type="datetime"
|
|
|
|
|
+ value-format="YYYY-MM-DD HH:mm"
|
|
|
|
|
+ format="YYYY-MM-DD HH:mm"
|
|
|
|
|
+ placeholder="选择开始日期和时间"
|
|
|
|
|
+ style="width: 100%"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
|
|
|
|
|
<template #footer>
|
|
<template #footer>
|
|
@@ -289,12 +308,29 @@ const handleSelectionChange = (selection: EventGroupConfigVO[]) => {
|
|
|
|
|
|
|
|
/** 新增按钮操作 */
|
|
/** 新增按钮操作 */
|
|
|
const handleAdd = () => {
|
|
const handleAdd = () => {
|
|
|
- reset();
|
|
|
|
|
|
|
+ resetAll();
|
|
|
dialog.visible = true;
|
|
dialog.visible = true;
|
|
|
dialog.title = '添加';
|
|
dialog.title = '添加';
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
-/** 修改按钮操作 */
|
|
|
|
|
|
|
+// 在 script setup 中添加
|
|
|
|
|
+const resetAll = () => {
|
|
|
|
|
+ reset(); // 重置 form.value
|
|
|
|
|
+
|
|
|
|
|
+ // 重置 groupForm
|
|
|
|
|
+ groupForm.value = {
|
|
|
|
|
+ regularTemplateId: '',
|
|
|
|
|
+ finalTemplateId: '',
|
|
|
|
|
+ startDate: '',
|
|
|
|
|
+ finalStartDate: '',
|
|
|
|
|
+ generateDays: 1,
|
|
|
|
|
+ name: '',
|
|
|
|
|
+ finalIntervalDays: 0,
|
|
|
|
|
+ finalTime: ''
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ // 重置 groupList
|
|
|
|
|
+ groupList.value = [{ name: 'A', time: '', intervalDays: 0 }];
|
|
|
|
|
+};
|
|
|
/** 修改按钮操作 */
|
|
/** 修改按钮操作 */
|
|
|
const handleUpdate = async (row?: EventGroupConfigVO) => {
|
|
const handleUpdate = async (row?: EventGroupConfigVO) => {
|
|
|
reset();
|
|
reset();
|
|
@@ -306,7 +342,8 @@ const handleUpdate = async (row?: EventGroupConfigVO) => {
|
|
|
|
|
|
|
|
// 将数据赋值到 form.value
|
|
// 将数据赋值到 form.value
|
|
|
Object.assign(form.value, res.data);
|
|
Object.assign(form.value, res.data);
|
|
|
-
|
|
|
|
|
|
|
+ form.value.regularTemplateId = Number(res.data.regularTemplateId);
|
|
|
|
|
+ form.value.finalTemplateId = Number(res.data.finalTemplateId);
|
|
|
// 处理 groupList 数据
|
|
// 处理 groupList 数据
|
|
|
if (res.data.groups && Array.isArray(res.data.groups)) {
|
|
if (res.data.groups && Array.isArray(res.data.groups)) {
|
|
|
groupList.value = res.data.groups.map((group) => ({
|
|
groupList.value = res.data.groups.map((group) => ({
|
|
@@ -318,10 +355,10 @@ const handleUpdate = async (row?: EventGroupConfigVO) => {
|
|
|
// 如果没有 groups 数据,初始化默认值
|
|
// 如果没有 groups 数据,初始化默认值
|
|
|
groupList.value = [{ name: 'A', time: '', intervalDays: 0 }];
|
|
groupList.value = [{ name: 'A', time: '', intervalDays: 0 }];
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+ await handleBlindStructureChange(); // 确保选项已加载
|
|
|
// 设置表单其他字段
|
|
// 设置表单其他字段
|
|
|
- groupForm.value.regularTemplateId = res.data.regularTemplateId;
|
|
|
|
|
- groupForm.value.finalTemplateId = res.data.finalTemplateId;
|
|
|
|
|
|
|
+ groupForm.value.regularTemplateId = Number(res.data.regularTemplateId);
|
|
|
|
|
+ groupForm.value.finalTemplateId = Number(res.data.finalTemplateId);
|
|
|
groupForm.value.startDate = res.data.startDate;
|
|
groupForm.value.startDate = res.data.startDate;
|
|
|
groupForm.value.name = res.data.name;
|
|
groupForm.value.name = res.data.name;
|
|
|
groupForm.value.finalStartDate = res.data.finalStartDate;
|
|
groupForm.value.finalStartDate = res.data.finalStartDate;
|
|
@@ -393,13 +430,17 @@ const groupForm = ref<{
|
|
|
finalStartDate: string;
|
|
finalStartDate: string;
|
|
|
generateDays: number;
|
|
generateDays: number;
|
|
|
name: string;
|
|
name: string;
|
|
|
|
|
+ finalIntervalDays: number;
|
|
|
|
|
+ finalTime: string;
|
|
|
}>({
|
|
}>({
|
|
|
regularTemplateId: '',
|
|
regularTemplateId: '',
|
|
|
finalTemplateId: '',
|
|
finalTemplateId: '',
|
|
|
startDate: '',
|
|
startDate: '',
|
|
|
finalStartDate: '',
|
|
finalStartDate: '',
|
|
|
generateDays: 1,
|
|
generateDays: 1,
|
|
|
- name: ''
|
|
|
|
|
|
|
+ name: '',
|
|
|
|
|
+ finalIntervalDays: 0,
|
|
|
|
|
+ finalTime: ''
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
// 组别列表(修改为包含时间和名称的对象数组)
|
|
// 组别列表(修改为包含时间和名称的对象数组)
|
|
@@ -503,4 +544,34 @@ const handleGenerateMatchesForNextSevenDays = async (row?: EventGroupConfigVO) =
|
|
|
proxy?.$modal.msgSuccess('生成成功');
|
|
proxy?.$modal.msgSuccess('生成成功');
|
|
|
await getList();
|
|
await getList();
|
|
|
};
|
|
};
|
|
|
|
|
+// 添加计算属性来自动计算决赛组日期
|
|
|
|
|
+const computedFinalStartDate = computed(() => {
|
|
|
|
|
+ if (!groupForm.value.startDate || !groupForm.value.finalTime) {
|
|
|
|
|
+ return '';
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 解析常规组日期
|
|
|
|
|
+ const startDate = new Date(groupForm.value.startDate);
|
|
|
|
|
+
|
|
|
|
|
+ // 添加间隔天数
|
|
|
|
|
+ const intervalDays = parseInt(groupForm.value.finalIntervalDays.toString()) || 0;
|
|
|
|
|
+ startDate.setDate(startDate.getDate() + intervalDays);
|
|
|
|
|
+
|
|
|
|
|
+ // 设置时间为决赛组时间
|
|
|
|
|
+ const timeParts = groupForm.value.finalTime.split(':');
|
|
|
|
|
+ startDate.setHours(parseInt(timeParts[0]), parseInt(timeParts[1]));
|
|
|
|
|
+
|
|
|
|
|
+ // 格式化为 YYYY-MM-DD HH:mm
|
|
|
|
|
+ return `${startDate.getFullYear()}-${String(startDate.getMonth() + 1).padStart(2, '0')}-${String(startDate.getDate()).padStart(2, '0')} ${timeParts[0]}:${timeParts[1]}`;
|
|
|
|
|
+});
|
|
|
|
|
+// 在 script setup 中添加
|
|
|
|
|
+watch(
|
|
|
|
|
+ [() => groupForm.value.finalIntervalDays, () => groupForm.value.finalTime],
|
|
|
|
|
+ () => {
|
|
|
|
|
+ if (groupForm.value.finalIntervalDays !== undefined && groupForm.value.finalTime) {
|
|
|
|
|
+ groupForm.value.finalStartDate = computedFinalStartDate.value;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ { deep: true }
|
|
|
|
|
+);
|
|
|
</script>
|
|
</script>
|