完成申请延期接口
This commit is contained in:
parent
9246d19806
commit
92ee88a961
17
api/task.js
17
api/task.js
|
|
@ -81,3 +81,20 @@ export const submitTask = ({ id, submitAttaches, submitRemark }) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 申请任务延期(发起审核)
|
||||||
|
* @param {Object} payload 请求数据
|
||||||
|
* @param {string|number} payload.bstId 任务ID
|
||||||
|
* @param {string} payload.bstType 审核类型
|
||||||
|
* @param {string} payload.createRemark 申请说明
|
||||||
|
* @param {string} payload.data 业务数据JSON字符串
|
||||||
|
* @returns {Promise} 返回接口响应
|
||||||
|
*/
|
||||||
|
export const applyTaskDelay = (payload) => {
|
||||||
|
return uni.$uv.http.post('/bst/verify', payload, {
|
||||||
|
custom: {
|
||||||
|
auth: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -111,8 +111,9 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted } from 'vue';
|
import { ref, computed } from 'vue';
|
||||||
import { onLoad } from '@dcloudio/uni-app';
|
import { onLoad } from '@dcloudio/uni-app';
|
||||||
|
import { applyTaskDelay } from '@/api';
|
||||||
|
|
||||||
// 表单数据
|
// 表单数据
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
|
|
@ -281,6 +282,15 @@ const selectedTime = computed(() => {
|
||||||
return formData.value.selectedTime;
|
return formData.value.selectedTime;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 组合延期时间(YYYY-MM-DD HH:mm:ss)
|
||||||
|
const buildExpireDateTime = () => {
|
||||||
|
if (!formData.value.selectedDate) return '';
|
||||||
|
const rawTime = formData.value.selectedTime || '00:00';
|
||||||
|
const hasSeconds = /^\d{2}:\d{2}:\d{2}$/.test(rawTime);
|
||||||
|
const timeSegment = hasSeconds ? rawTime : `${rawTime}:00`;
|
||||||
|
return `${formData.value.selectedDate} ${timeSegment}`;
|
||||||
|
};
|
||||||
|
|
||||||
// 打开时间选择器
|
// 打开时间选择器
|
||||||
const openTimePicker = () => {
|
const openTimePicker = () => {
|
||||||
const timeParts = formData.value.selectedTime.split(':');
|
const timeParts = formData.value.selectedTime.split(':');
|
||||||
|
|
@ -331,7 +341,7 @@ const handleCancel = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
// 提交申请
|
// 提交申请
|
||||||
const handleSubmit = () => {
|
const handleSubmit = async () => {
|
||||||
if (!canSubmit.value) {
|
if (!canSubmit.value) {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '请填写申请说明',
|
title: '请填写申请说明',
|
||||||
|
|
@ -340,54 +350,58 @@ const handleSubmit = () => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!taskId.value) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '缺少任务ID',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const expireDateTime = buildExpireDateTime();
|
||||||
|
const payload = {
|
||||||
|
bstId: taskId.value,
|
||||||
|
bstType: 'UPDATE_TASK',
|
||||||
|
createRemark: formData.value.description.trim(),
|
||||||
|
data: JSON.stringify({
|
||||||
|
expireTime: expireDateTime
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: '提交中...'
|
title: '提交中...'
|
||||||
});
|
});
|
||||||
|
|
||||||
// 准备提交数据
|
try {
|
||||||
const submitData = {
|
await applyTaskDelay(payload);
|
||||||
taskId: taskId.value,
|
|
||||||
description: formData.value.description.trim(),
|
|
||||||
delayDate: formData.value.selectedDate,
|
|
||||||
delayTime: formData.value.selectedTime
|
|
||||||
};
|
|
||||||
|
|
||||||
// TODO: 调用提交接口
|
|
||||||
// 实际使用时,应该调用API接口上传数据
|
|
||||||
// uni.request({
|
|
||||||
// url: '/api/task/delay/apply',
|
|
||||||
// method: 'POST',
|
|
||||||
// data: submitData,
|
|
||||||
// success: (res) => {
|
|
||||||
// // 处理成功响应
|
|
||||||
// },
|
|
||||||
// fail: (err) => {
|
|
||||||
// // 处理错误
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
|
|
||||||
// 模拟提交请求
|
|
||||||
setTimeout(() => {
|
|
||||||
uni.hideLoading();
|
|
||||||
|
|
||||||
// 将延期申请数据存储到本地,供任务详情页使用
|
// 将延期申请数据存储到本地,供任务详情页使用
|
||||||
uni.setStorageSync('delayApplication', {
|
uni.setStorageSync('delayApplication', {
|
||||||
taskId: taskId.value,
|
taskId: taskId.value,
|
||||||
description: submitData.description,
|
description: payload.createRemark,
|
||||||
delayDate: submitData.delayDate,
|
delayDate: formData.value.selectedDate,
|
||||||
delayTime: submitData.delayTime
|
delayTime: formData.value.selectedTime,
|
||||||
|
expireTime: expireDateTime
|
||||||
});
|
});
|
||||||
|
|
||||||
|
uni.hideLoading();
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: '申请提交成功',
|
title: '申请提交成功',
|
||||||
icon: 'success'
|
icon: 'success'
|
||||||
});
|
});
|
||||||
|
|
||||||
// 延迟返回,让用户看到成功提示
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
uni.navigateBack();
|
uni.navigateBack();
|
||||||
}, 1500);
|
}, 1500);
|
||||||
}, 1000);
|
} catch (error) {
|
||||||
|
uni.hideLoading();
|
||||||
|
console.error('申请延期失败:', error);
|
||||||
|
const message = error?.data?.message || error?.errMsg || '申请失败,请稍后再试';
|
||||||
|
uni.showToast({
|
||||||
|
title: message,
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user