refactor(wcs): 统一优化异常处理与接口类型定义

1.  替换页面内console.error为统一的$modal.msgError提示用户
2.  为列表查询添加try-finally确保loading状态正确关闭
3.  补全所有CRUD接口的AxiosPromise返回类型
4.  新增时间范围工具类统一秒级时间格式处理
5.  优化表单提交数据构建逻辑与表单校验规则
main
zch 4 weeks ago
parent c5234d3093
commit c8d4c65203

@ -80,7 +80,7 @@ export const existsDeviceHost = (query?: DeviceHostQuery): AxiosPromise<boolean>
*
* @param data
*/
export const addDeviceHost = (data: DeviceHostForm) => {
export const addDeviceHost = (data: DeviceHostForm): AxiosPromise<void> => {
return request({
url: '/wcs/deviceHost',
method: 'post',
@ -92,7 +92,7 @@ export const addDeviceHost = (data: DeviceHostForm) => {
*
* @param data
*/
export const updateDeviceHost = (data: DeviceHostForm) => {
export const updateDeviceHost = (data: DeviceHostForm): AxiosPromise<void> => {
return request({
url: '/wcs/deviceHost',
method: 'put',
@ -104,7 +104,7 @@ export const updateDeviceHost = (data: DeviceHostForm) => {
*
* @param objId
*/
export const delDeviceHost = (objId: DeviceHostId | DeviceHostIds) => {
export const delDeviceHost = (objId: DeviceHostId | DeviceHostIds): AxiosPromise<void> => {
return request({
url: '/wcs/deviceHost/' + objId,
method: 'delete'

@ -80,7 +80,7 @@ export const existsDeviceInfo = (query?: DeviceInfoQuery): AxiosPromise<boolean>
*
* @param data
*/
export const addDeviceInfo = (data: DeviceInfoForm) => {
export const addDeviceInfo = (data: DeviceInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/deviceInfo',
method: 'post',
@ -92,7 +92,7 @@ export const addDeviceInfo = (data: DeviceInfoForm) => {
*
* @param data
*/
export const updateDeviceInfo = (data: DeviceInfoForm) => {
export const updateDeviceInfo = (data: DeviceInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/deviceInfo',
method: 'put',
@ -104,7 +104,7 @@ export const updateDeviceInfo = (data: DeviceInfoForm) => {
*
* @param objId
*/
export const delDeviceInfo = (objId: DeviceInfoId | DeviceInfoIds) => {
export const delDeviceInfo = (objId: DeviceInfoId | DeviceInfoIds): AxiosPromise<void> => {
return request({
url: '/wcs/deviceInfo/' + objId,
method: 'delete'

@ -67,7 +67,7 @@ export const existsDeviceParam = (query?: DeviceParamQuery): AxiosPromise<boolea
*
* @param data
*/
export const addDeviceParam = (data: DeviceParamForm) => {
export const addDeviceParam = (data: DeviceParamForm): AxiosPromise<void> => {
return request({
url: '/wcs/deviceParam',
method: 'post',
@ -79,7 +79,7 @@ export const addDeviceParam = (data: DeviceParamForm) => {
*
* @param data
*/
export const updateDeviceParam = (data: DeviceParamForm) => {
export const updateDeviceParam = (data: DeviceParamForm): AxiosPromise<void> => {
return request({
url: '/wcs/deviceParam',
method: 'put',
@ -91,7 +91,7 @@ export const updateDeviceParam = (data: DeviceParamForm) => {
*
* @param objId
*/
export const delDeviceParam = (objId: DeviceParamId | DeviceParamIds) => {
export const delDeviceParam = (objId: DeviceParamId | DeviceParamIds): AxiosPromise<void> => {
return request({
url: '/wcs/deviceParam/' + objId,
method: 'delete'

@ -67,7 +67,7 @@ export const existsLocationInfo = (query?: LocationInfoQuery): AxiosPromise<bool
*
* @param data
*/
export const addLocationInfo = (data: LocationInfoForm) => {
export const addLocationInfo = (data: LocationInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/locationInfo',
method: 'post',
@ -79,7 +79,7 @@ export const addLocationInfo = (data: LocationInfoForm) => {
*
* @param data
*/
export const updateLocationInfo = (data: LocationInfoForm) => {
export const updateLocationInfo = (data: LocationInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/locationInfo',
method: 'put',
@ -91,7 +91,7 @@ export const updateLocationInfo = (data: LocationInfoForm) => {
*
* @param objId
*/
export const delLocationInfo = (objId: LocationInfoId | LocationInfoIds) => {
export const delLocationInfo = (objId: LocationInfoId | LocationInfoIds): AxiosPromise<void> => {
return request({
url: '/wcs/locationInfo/' + objId,
method: 'delete'

@ -80,7 +80,7 @@ export const existsMaterialInfo = (query?: MaterialInfoQuery): AxiosPromise<bool
*
* @param data
*/
export const addMaterialInfo = (data: MaterialInfoForm) => {
export const addMaterialInfo = (data: MaterialInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/materialInfo',
method: 'post',
@ -92,7 +92,7 @@ export const addMaterialInfo = (data: MaterialInfoForm) => {
*
* @param data
*/
export const updateMaterialInfo = (data: MaterialInfoForm) => {
export const updateMaterialInfo = (data: MaterialInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/materialInfo',
method: 'put',
@ -104,7 +104,7 @@ export const updateMaterialInfo = (data: MaterialInfoForm) => {
*
* @param objId
*/
export const delMaterialInfo = (objId: MaterialInfoId | MaterialInfoIds) => {
export const delMaterialInfo = (objId: MaterialInfoId | MaterialInfoIds): AxiosPromise<void> => {
return request({
url: '/wcs/materialInfo/' + objId,
method: 'delete'

@ -67,7 +67,7 @@ export const existsPathDetails = (query?: PathDetailsQuery): AxiosPromise<boolea
*
* @param data
*/
export const addPathDetails = (data: PathDetailsForm) => {
export const addPathDetails = (data: PathDetailsForm): AxiosPromise<void> => {
return request({
url: '/wcs/pathDetails',
method: 'post',
@ -79,7 +79,7 @@ export const addPathDetails = (data: PathDetailsForm) => {
*
* @param data
*/
export const updatePathDetails = (data: PathDetailsForm) => {
export const updatePathDetails = (data: PathDetailsForm): AxiosPromise<void> => {
return request({
url: '/wcs/pathDetails',
method: 'put',
@ -91,7 +91,7 @@ export const updatePathDetails = (data: PathDetailsForm) => {
*
* @param objId
*/
export const delPathDetails = (objId: PathDetailsId | PathDetailsIds) => {
export const delPathDetails = (objId: PathDetailsId | PathDetailsIds): AxiosPromise<void> => {
return request({
url: '/wcs/pathDetails/' + objId,
method: 'delete'

@ -80,7 +80,7 @@ export const existsPathInfo = (query?: PathInfoQuery): AxiosPromise<boolean> =>
*
* @param data
*/
export const addPathInfo = (data: PathInfoForm) => {
export const addPathInfo = (data: PathInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/pathInfo',
method: 'post',
@ -92,7 +92,7 @@ export const addPathInfo = (data: PathInfoForm) => {
*
* @param data
*/
export const updatePathInfo = (data: PathInfoForm) => {
export const updatePathInfo = (data: PathInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/pathInfo',
method: 'put',
@ -104,7 +104,7 @@ export const updatePathInfo = (data: PathInfoForm) => {
*
* @param objId
*/
export const delPathInfo = (objId: PathInfoId | PathInfoIds) => {
export const delPathInfo = (objId: PathInfoId | PathInfoIds): AxiosPromise<void> => {
return request({
url: '/wcs/pathInfo/' + objId,
method: 'delete'

@ -80,7 +80,7 @@ export const existsStoreInfo = (query?: StoreInfoQuery): AxiosPromise<boolean> =
*
* @param data
*/
export const addStoreInfo = (data: StoreInfoForm) => {
export const addStoreInfo = (data: StoreInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/storeInfo',
method: 'post',
@ -92,7 +92,7 @@ export const addStoreInfo = (data: StoreInfoForm) => {
*
* @param data
*/
export const updateStoreInfo = (data: StoreInfoForm) => {
export const updateStoreInfo = (data: StoreInfoForm): AxiosPromise<void> => {
return request({
url: '/wcs/storeInfo',
method: 'put',
@ -104,7 +104,7 @@ export const updateStoreInfo = (data: StoreInfoForm) => {
*
* @param objId
*/
export const delStoreInfo = (objId: StoreInfoId | StoreInfoIds) => {
export const delStoreInfo = (objId: StoreInfoId | StoreInfoIds): AxiosPromise<void> => {
return request({
url: '/wcs/storeInfo/' + objId,
method: 'delete'

@ -1,6 +1,7 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { TaskDetailVO, TaskDetailForm, TaskDetailId, TaskDetailIds, TaskDetailQuery } from '@/api/wcs/taskDetail/types';
import type { WcsDropdownQuery } from '@/api/wcs/types';
/**
*
@ -43,7 +44,7 @@ export const getTaskDetailByIds = (ids: TaskDetailIds): AxiosPromise<TaskDetailV
*
* @param query
*/
export const getTaskDetailList = (query?: TaskDetailQuery) => {
export const getTaskDetailList = (query?: WcsDropdownQuery<TaskDetailQuery>): AxiosPromise<TaskDetailVO[]> => {
return request({
url: '/wcs/taskDetail/getTaskDetailList',
method: 'get',
@ -79,7 +80,7 @@ export const existsTaskDetail = (query?: TaskDetailQuery): AxiosPromise<boolean>
*
* @param data
*/
export const addTaskDetail = (data: TaskDetailForm) => {
export const addTaskDetail = (data: TaskDetailForm): AxiosPromise<void> => {
return request({
url: '/wcs/taskDetail',
method: 'post',
@ -91,7 +92,7 @@ export const addTaskDetail = (data: TaskDetailForm) => {
*
* @param data
*/
export const updateTaskDetail = (data: TaskDetailForm) => {
export const updateTaskDetail = (data: TaskDetailForm): AxiosPromise<void> => {
return request({
url: '/wcs/taskDetail',
method: 'put',
@ -103,7 +104,7 @@ export const updateTaskDetail = (data: TaskDetailForm) => {
*
* @param objId
*/
export const delTaskDetail = (objId: TaskDetailId | TaskDetailIds) => {
export const delTaskDetail = (objId: TaskDetailId | TaskDetailIds): AxiosPromise<void> => {
return request({
url: '/wcs/taskDetail/' + objId,
method: 'delete'

@ -80,7 +80,7 @@ export const existsTaskQueue = (query?: TaskQueueQuery): AxiosPromise<boolean> =
*
* @param data
*/
export const addTaskQueue = (data: TaskQueueForm) => {
export const addTaskQueue = (data: TaskQueueForm): AxiosPromise<void> => {
return request({
url: '/wcs/taskQueue',
method: 'post',
@ -92,7 +92,7 @@ export const addTaskQueue = (data: TaskQueueForm) => {
*
* @param data
*/
export const updateTaskQueue = (data: TaskQueueForm) => {
export const updateTaskQueue = (data: TaskQueueForm): AxiosPromise<void> => {
return request({
url: '/wcs/taskQueue',
method: 'put',
@ -104,7 +104,7 @@ export const updateTaskQueue = (data: TaskQueueForm) => {
*
* @param objId
*/
export const delTaskQueue = (objId: TaskQueueId | TaskQueueIds) => {
export const delTaskQueue = (objId: TaskQueueId | TaskQueueIds): AxiosPromise<void> => {
return request({
url: '/wcs/taskQueue/' + objId,
method: 'delete'

@ -182,6 +182,13 @@ const data = reactive<PageData<DeviceHostForm, DeviceHostQuery>>({
hostCode: [
{ required: true, message: "主机编号不能为空", trigger: "blur" }
],
hostIp: [
{
pattern: /^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}$/,
message: "主机IP格式不正确",
trigger: "blur"
}
],
}
});
@ -189,10 +196,13 @@ const { queryParams, form, rules } = toRefs(data);
const getList = async () => {
loading.value = true;
const res = await listDeviceHost(queryParams.value);
deviceHostList.value = res.rows;
total.value = res.total;
loading.value = false;
try {
const res = await listDeviceHost(queryParams.value);
deviceHostList.value = res.rows;
total.value = res.total;
} finally {
loading.value = false;
}
}
const cancel = () => {
@ -236,14 +246,26 @@ const handleUpdate = async (row?: DeviceHostVO) => {
dialog.title = "修改设备主机";
}
const buildSubmitData = (): DeviceHostForm => ({
objId: form.value.objId,
hostCode: form.value.hostCode,
hostName: form.value.hostName,
hostIp: form.value.hostIp,
hostPort: form.value.hostPort,
hostPath: form.value.hostPath,
isFlag: form.value.isFlag,
remark: form.value.remark
});
const submitForm = () => {
deviceHostFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.objId) {
await updateDeviceHost(form.value).finally(() => buttonLoading.value = false);
const submitData = buildSubmitData();
if (submitData.objId) {
await updateDeviceHost(submitData).finally(() => buttonLoading.value = false);
} else {
await addDeviceHost(form.value).finally(() => buttonLoading.value = false);
await addDeviceHost(submitData).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
@ -261,7 +283,7 @@ const handleDelete = async (row?: DeviceHostVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除设备主机失败', e);
proxy?.$modal.msgError("删除设备主机失败");
}
}
}

@ -211,10 +211,13 @@ const { queryParams, form, rules } = toRefs(data);
const getList = async () => {
loading.value = true;
const res = await listDeviceInfo(queryParams.value);
deviceInfoList.value = res.rows;
total.value = res.total;
loading.value = false;
try {
const res = await listDeviceInfo(queryParams.value);
deviceInfoList.value = res.rows;
total.value = res.total;
} finally {
loading.value = false;
}
}
const getHostList = async () => {
@ -222,8 +225,8 @@ const getHostList = async () => {
// 使 any
const res = await getDeviceHostList({ params: {} });
hostList.value = res.data || [];
} catch (e) {
console.error('获取设备主机下拉列表失败', e);
} catch {
proxy?.$modal.msgError("获取设备主机下拉列表失败");
}
}
@ -270,14 +273,26 @@ const handleUpdate = async (row?: DeviceInfoVO) => {
dialog.title = "修改设备信息";
}
const buildSubmitData = (): DeviceInfoForm => ({
objId: form.value.objId,
deviceCode: form.value.deviceCode,
deviceName: form.value.deviceName,
hostCode: form.value.hostCode,
deviceType: form.value.deviceType,
deviceStatus: form.value.deviceStatus,
isFlag: form.value.isFlag,
remark: form.value.remark
});
const submitForm = () => {
deviceInfoFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.objId) {
await updateDeviceInfo(form.value).finally(() => buttonLoading.value = false);
const submitData = buildSubmitData();
if (submitData.objId) {
await updateDeviceInfo(submitData).finally(() => buttonLoading.value = false);
} else {
await addDeviceInfo(form.value).finally(() => buttonLoading.value = false);
await addDeviceInfo(submitData).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
@ -295,7 +310,7 @@ const handleDelete = async (row?: DeviceInfoVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除设备信息失败', e);
proxy?.$modal.msgError("删除设备信息失败");
}
}
}

@ -219,10 +219,13 @@ const { queryParams, form, rules } = toRefs(data);
const getList = async () => {
loading.value = true;
const res = await listDeviceParam(queryParams.value);
deviceParamList.value = res.rows;
total.value = res.total;
loading.value = false;
try {
const res = await listDeviceParam(queryParams.value);
deviceParamList.value = res.rows;
total.value = res.total;
} finally {
loading.value = false;
}
}
const getDeviceList = async () => {
@ -230,8 +233,8 @@ const getDeviceList = async () => {
// 使 any
const res = await getDeviceInfoList({ params: {} });
deviceList.value = res.data || [];
} catch (e) {
console.error('获取设备信息下拉列表失败', e);
} catch {
proxy?.$modal.msgError("获取设备信息下拉列表失败");
}
}
@ -303,7 +306,7 @@ const handleDelete = async (row?: DeviceParamVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除设备参数失败', e);
proxy?.$modal.msgError("删除设备参数失败");
}
}
}

@ -301,11 +301,14 @@ const { queryParams, form, rules } = toRefs(data);
const getList = async () => {
loading.value = true;
// addDateRange params.beginTime/endTime SysUser
const res = await listLocationInfo(proxy?.addDateRange(queryParams.value, dateRange.value));
locationInfoList.value = res.rows;
total.value = res.total;
loading.value = false;
try {
// addDateRange params.beginTime/endTime SysUser
const res = await listLocationInfo(proxy?.addDateRange(queryParams.value, dateRange.value));
locationInfoList.value = res.rows;
total.value = res.total;
} finally {
loading.value = false;
}
}
const getRefLists = async () => {
@ -318,8 +321,8 @@ const getRefLists = async () => {
]);
storeList.value = storeRes.data || [];
materialList.value = materialRes.data || [];
} catch (e) {
console.error('获取库位关联下拉列表失败', e);
} catch {
proxy?.$modal.msgError("获取库位关联下拉列表失败");
}
}
@ -413,7 +416,7 @@ const handleDelete = async (row?: LocationInfoVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除库位信息失败', e);
proxy?.$modal.msgError("删除库位信息失败");
}
}
}

@ -185,10 +185,13 @@ const { queryParams, form, rules } = toRefs(data);
const getList = async () => {
loading.value = true;
const res = await listMaterialInfo(queryParams.value);
materialInfoList.value = res.rows;
total.value = res.total;
loading.value = false;
try {
const res = await listMaterialInfo(queryParams.value);
materialInfoList.value = res.rows;
total.value = res.total;
} finally {
loading.value = false;
}
}
const cancel = () => {
@ -257,7 +260,7 @@ const handleDelete = async (row?: MaterialInfoVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除物料信息失败', e);
proxy?.$modal.msgError("删除物料信息失败");
}
}
}

@ -188,8 +188,8 @@ const loadPathList = async () => {
// 使 any
const res = await getPathInfoList({ isFlag: 1, params: {} });
pathList.value = res.data || [];
} catch (e) {
console.error('获取路径信息下拉列表失败', e);
} catch {
proxy?.$modal.msgError('获取路径信息下拉列表失败');
}
};
@ -265,7 +265,7 @@ const handleDelete = async (row?: PathDetailsVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除路径明细失败', e);
proxy?.$modal.msgError('删除路径明细失败');
}
}
};

@ -221,11 +221,14 @@ const { queryParams, form, rules } = toRefs(data);
const getList = async () => {
loading.value = true;
// addDateRange params.beginTime/endTime SysUser
const res = await listPathInfo(proxy?.addDateRange(queryParams.value, dateRange.value));
pathInfoList.value = res.rows;
total.value = res.total;
loading.value = false;
try {
// addDateRange params.beginTime/endTime SysUser
const res = await listPathInfo(proxy?.addDateRange(queryParams.value, dateRange.value));
pathInfoList.value = res.rows;
total.value = res.total;
} finally {
loading.value = false;
}
}
const cancel = () => {
@ -334,7 +337,7 @@ const handleDelete = async (row?: PathInfoVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除路径信息失败', e);
proxy?.$modal.msgError("删除路径信息失败");
}
}
}

@ -155,10 +155,13 @@ const { queryParams, form, rules } = toRefs(data);
const getList = async () => {
loading.value = true;
const res = await listStoreInfo(queryParams.value);
storeInfoList.value = res.rows;
total.value = res.total;
loading.value = false;
try {
const res = await listStoreInfo(queryParams.value);
storeInfoList.value = res.rows;
total.value = res.total;
} finally {
loading.value = false;
}
}
const cancel = () => {
@ -227,7 +230,7 @@ const handleDelete = async (row?: StoreInfoVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除仓库信息失败', e);
proxy?.$modal.msgError("删除仓库信息失败");
}
}
}

@ -435,7 +435,7 @@ const handleDelete = async (row?: TaskDetailVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除实时任务明细失败', e);
proxy?.$modal.msgError("删除实时任务明细失败");
}
}
}

@ -599,7 +599,7 @@ const handleDelete = async (row?: TaskQueueVO) => {
await getList();
} catch (e) {
if (e !== 'cancel' && e !== 'close') {
console.error('删除实时任务队列失败', e);
proxy?.$modal.msgError("删除实时任务队列失败");
}
}
}

Loading…
Cancel
Save