|
...
|
...
|
@@ -97,13 +97,13 @@ |
|
|
|
</template>
|
|
|
|
<script setup>
|
|
|
|
import { ref, onMounted, reactive, nextTick, watch } from 'vue'
|
|
|
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
|
|
|
|
|
|
|
import { Minus, Plus } from '@element-plus/icons-vue'
|
|
|
|
import { TrainingTemplatesApi } from '@/api/store/training/templates'
|
|
|
|
import { ExercisesApi } from '@/api/store/training/pose'
|
|
|
|
import ExerciseSetTable from '../templates/ExerciseSetTable.vue'
|
|
|
|
import { SupersetsApi } from '@/api/store/training/Supersets'
|
|
|
|
|
|
|
|
const message=useMessage() // 消息弹窗
|
|
|
|
// ==================== 常量定义 ====================
|
|
|
|
const UNIT_TYPE = { GROUP: 1, SUPERSET: 2 }
|
|
|
|
|
|
...
|
...
|
@@ -169,7 +169,7 @@ const loadSuperGroupList = async () => { |
|
|
|
superGroupList.value = res || []
|
|
|
|
} catch (err) {
|
|
|
|
console.error('加载超级组列表失败:', err)
|
|
|
|
ElMessage.error('加载超级组列表失败')
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -179,7 +179,7 @@ const loadExercisesList = async () => { |
|
|
|
exercisesList.value = res || []
|
|
|
|
} catch (err) {
|
|
|
|
console.error('加载动作列表失败:', err)
|
|
|
|
ElMessage.error('加载动作列表失败')
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -217,7 +217,7 @@ const loadTemplateDetail = async (id) => { |
|
|
|
})
|
|
|
|
} catch (err) {
|
|
|
|
console.error('获取模板详情失败:', err)
|
|
|
|
ElMessage.error('获取模板详情失败')
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
loading.value = false
|
|
|
|
}
|
|
...
|
...
|
@@ -256,21 +256,21 @@ const getExerciseName = (id) => { |
|
|
|
const addUnit = () => {
|
|
|
|
formData.units.push(createDefaultUnit(formData.units.length + 1))
|
|
|
|
updateDynamicRules()
|
|
|
|
ElMessage.success('新增单元成功(可切换为超级组)')
|
|
|
|
message.success('新增单元成功(可切换为超级组)')
|
|
|
|
}
|
|
|
|
|
|
|
|
const delUnit = (unitIndex) => {
|
|
|
|
if (formData.units.length <= 1) {
|
|
|
|
ElMessage.warning('至少保留一个单元')
|
|
|
|
message.warning('至少保留一个单元')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
ElMessageBox.confirm('确定要删除这个单元吗?', '提示', { type: 'warning' }).then(() => {
|
|
|
|
message.confirm('确定要删除这个单元吗?', '提示', { type: 'warning' }).then(() => {
|
|
|
|
formData.units.splice(unitIndex, 1)
|
|
|
|
formData.units.forEach((unit, index) => {
|
|
|
|
unit.sortOrder = index + 1
|
|
|
|
})
|
|
|
|
updateDynamicRules()
|
|
|
|
ElMessage.success('单元删除成功')
|
|
|
|
message.success('单元删除成功')
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -313,7 +313,7 @@ const onSelectItem = async (unitIndex, selectId) => { |
|
|
|
|
|
|
|
// ==================== 表单提交 ====================
|
|
|
|
const handleCancel = () => {
|
|
|
|
ElMessage.info('取消保存表单内容')
|
|
|
|
|
|
|
|
formRef.value?.resetFields()
|
|
|
|
Object.assign(formData, {
|
|
|
|
id: 0,
|
|
...
|
...
|
@@ -333,13 +333,13 @@ const handleSubmit = async () => { |
|
|
|
try {
|
|
|
|
await formRef.value.validate()
|
|
|
|
} catch {
|
|
|
|
ElMessage.error('请按照要求填写')
|
|
|
|
message.error('请按照要求填写')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
const hasEmptyExercise = formData.units.some((unit) => !unit.exercises[0].exerciseId)
|
|
|
|
if (hasEmptyExercise) {
|
|
|
|
ElMessage.warning('请为所有动作组选择动作名称')
|
|
|
|
message.warning('请为所有动作组选择动作名称')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -378,11 +378,11 @@ const handleSubmit = async () => { |
|
|
|
} else {
|
|
|
|
await TrainingTemplatesApi.createTrainingTemplates(submitData)
|
|
|
|
}
|
|
|
|
ElMessage.success('模板保存成功!')
|
|
|
|
message.success('模板保存成功!')
|
|
|
|
router.back()
|
|
|
|
} catch (err) {
|
|
|
|
console.error('保存失败:', err?.message || err)
|
|
|
|
ElMessage.error(`保存失败:${err?.message || '网络/服务异常'}`)
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
loading.value = false
|
|
|
|
}
|
...
|
...
|
|