feat(打卡): 支持计数打卡类型并优化提交逻辑
添加计数打卡类型的支持,包括动态字段显示和额外数据提交 重构提交逻辑,将校验和数据处理分离到单独方法 优化UI文本显示,使其更通用化
Showing
2 changed files
with
14 additions
and
6 deletions
| ... | @@ -20,9 +20,12 @@ export function useCheckin() { | ... | @@ -20,9 +20,12 @@ export function useCheckin() { |
| 20 | const loading = ref(false) | 20 | const loading = ref(false) |
| 21 | const message = ref('') | 21 | const message = ref('') |
| 22 | const fileList = ref([]) | 22 | const fileList = ref([]) |
| 23 | - const activeType = ref('text') // 当前选中的打卡类型 | 23 | + const activeType = ref('') // 当前选中的打卡类型 |
| 24 | const maxCount = ref(5) | 24 | const maxCount = ref(5) |
| 25 | 25 | ||
| 26 | + // 打卡类型 | ||
| 27 | + const checkinType = computed(() => route.query.type) | ||
| 28 | + | ||
| 26 | // 用于记忆不同类型的文件列表 | 29 | // 用于记忆不同类型的文件列表 |
| 27 | const fileListMemory = ref({ | 30 | const fileListMemory = ref({ |
| 28 | text: [], | 31 | text: [], |
| ... | @@ -35,6 +38,11 @@ export function useCheckin() { | ... | @@ -35,6 +38,11 @@ export function useCheckin() { |
| 35 | * 是否可以提交 | 38 | * 是否可以提交 |
| 36 | */ | 39 | */ |
| 37 | const canSubmit = computed(() => { | 40 | const canSubmit = computed(() => { |
| 41 | + // 如果是计数打卡,交由组件内部校验 | ||
| 42 | + if (checkinType.value === 'count') { | ||
| 43 | + return true | ||
| 44 | + } | ||
| 45 | + | ||
| 38 | if (activeType.value === 'text') { | 46 | if (activeType.value === 'text') { |
| 39 | // 文字打卡:必须填写内容且长度不少于10个字符 | 47 | // 文字打卡:必须填写内容且长度不少于10个字符 |
| 40 | return message.value.trim() !== '' && message.value.trim().length >= 10 | 48 | return message.value.trim() !== '' && message.value.trim().length >= 10 |
| ... | @@ -249,11 +257,13 @@ export function useCheckin() { | ... | @@ -249,11 +257,13 @@ export function useCheckin() { |
| 249 | 257 | ||
| 250 | /** | 258 | /** |
| 251 | * 提交打卡 | 259 | * 提交打卡 |
| 260 | + * @param {Object} extraData - 额外提交数据 | ||
| 252 | */ | 261 | */ |
| 253 | - const onSubmit = async () => { | 262 | + const onSubmit = async (extraData = {}) => { |
| 254 | if (uploading.value) return | 263 | if (uploading.value) return |
| 255 | 264 | ||
| 256 | // 表单验证 | 265 | // 表单验证 |
| 266 | + if (checkinType.value !== 'count') { | ||
| 257 | if (activeType.value === 'text') { | 267 | if (activeType.value === 'text') { |
| 258 | if (message.value.trim().length < 10) { | 268 | if (message.value.trim().length < 10) { |
| 259 | showToast('打卡内容至少需要10个字符') | 269 | showToast('打卡内容至少需要10个字符') |
| ... | @@ -264,10 +274,7 @@ export function useCheckin() { | ... | @@ -264,10 +274,7 @@ export function useCheckin() { |
| 264 | showToast('请先上传文件') | 274 | showToast('请先上传文件') |
| 265 | return | 275 | return |
| 266 | } | 276 | } |
| 267 | - // if (message.value.trim() === '') { | 277 | + } |
| 268 | - // showToast('请输入打卡留言') | ||
| 269 | - // return | ||
| 270 | - // } | ||
| 271 | } | 278 | } |
| 272 | 279 | ||
| 273 | uploading.value = true | 280 | uploading.value = true |
| ... | @@ -284,6 +291,7 @@ export function useCheckin() { | ... | @@ -284,6 +291,7 @@ export function useCheckin() { |
| 284 | file_type: activeType.value, | 291 | file_type: activeType.value, |
| 285 | meta_id: [], | 292 | meta_id: [], |
| 286 | makeup_time: route.query.is_patch ? route.query.date : '', | 293 | makeup_time: route.query.is_patch ? route.query.date : '', |
| 294 | + ...extraData | ||
| 287 | } | 295 | } |
| 288 | 296 | ||
| 289 | // 如果有文件,添加文件ID | 297 | // 如果有文件,添加文件ID | ... | ... |
This diff is collapsed. Click to expand it.
-
Please register or login to post a comment