|
...
|
...
|
@@ -8,7 +8,7 @@ |
|
|
|
<text class="time">{{ formattedTime.substring(3) }}</text>
|
|
|
|
<view class="triangle-icon"></view>
|
|
|
|
</view>
|
|
|
|
<view class="finish-btn" @click="save">完成</view>
|
|
|
|
<view class="finish-btn" :class="{ disabled: !allUnitsChecked }" @click="save">完成</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="action-list">
|
|
...
|
...
|
@@ -415,6 +415,14 @@ |
|
|
|
unitActiveStates.value = [...unitActiveStates.value]
|
|
|
|
}
|
|
|
|
|
|
|
|
// 全部 unit 已勾选后才能提交
|
|
|
|
const allUnitsChecked = computed(() => {
|
|
|
|
const list = actionDetail.value?.units || []
|
|
|
|
if (list.length === 0) return false
|
|
|
|
if (unitActiveStates.value.length !== list.length) return false
|
|
|
|
return unitActiveStates.value.every((v) => v === true)
|
|
|
|
})
|
|
|
|
|
|
|
|
const openSummaryPopup = () => {
|
|
|
|
summaryShow.value = true;
|
|
|
|
summaryContent.value = '';
|
|
...
|
...
|
@@ -491,6 +499,17 @@ |
|
|
|
});
|
|
|
|
|
|
|
|
const save = async () => {
|
|
|
|
// 前置校验:所有 unit 必须已勾选(顶部 ✓)才能提交
|
|
|
|
if (!allUnitsChecked.value) {
|
|
|
|
uni.showModal({
|
|
|
|
title: '提示',
|
|
|
|
content: '还有训练没有完成,请先勾选所有动作后再提交',
|
|
|
|
showCancel: false,
|
|
|
|
confirmText: '知道了',
|
|
|
|
});
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
await nextTick();
|
|
|
|
const units = [];
|
|
|
|
const unitList = actionDetail.value?.units || [];
|
|
...
|
...
|
@@ -553,16 +572,17 @@ |
|
|
|
|
|
|
|
try {
|
|
|
|
if (trainingStore.isTraining) {
|
|
|
|
await TrainingApi.createTrainHistory({ units });
|
|
|
|
await TrainingApi.createTrainHistory({ units, allCompleted: allUnitsChecked.value });
|
|
|
|
uni.showToast({ title: '训练提交成功', icon: 'success' });
|
|
|
|
} else if (trainingStore.type === 3 && trainingStore.dailyTemplateId) {
|
|
|
|
await dailytemplateApi.updateDailyTemplate({
|
|
|
|
dailyTemplateId: trainingStore.dailyTemplateId,
|
|
|
|
units,
|
|
|
|
allCompleted: allUnitsChecked.value,
|
|
|
|
});
|
|
|
|
uni.showToast({ title: '模板修改成功', icon: 'success' });
|
|
|
|
} else {
|
|
|
|
await TrainingApi.createTrainHistory({ units });
|
|
|
|
await TrainingApi.createTrainHistory({ units, allCompleted: allUnitsChecked.value });
|
|
|
|
uni.showToast({ title: '训练提交成功', icon: 'success' });
|
|
|
|
}
|
|
|
|
setTimeout(() => {
|
|
...
|
...
|
@@ -682,6 +702,14 @@ |
|
|
|
border-radius: 30rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 28rpx;
|
|
|
|
transition: opacity 0.2s;
|
|
|
|
|
|
|
|
&.disabled {
|
|
|
|
background-color: #555;
|
|
|
|
color: #999;
|
|
|
|
opacity: 0.6;
|
|
|
|
pointer-events: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
...
|
...
|
|