重构设备管理新增逻辑
This commit is contained in:
parent
eb12d8f38a
commit
0ffc2a3098
@ -52,6 +52,23 @@ const router = useRouter();
|
||||
const route = useRoute();
|
||||
const formOptions: VbenFormProps = {
|
||||
schema: querySchema.value,
|
||||
submitOnChange: false,
|
||||
handleValuesChange: async (values, changedFields) => {
|
||||
// 当产品切换时,触发搜索
|
||||
if (changedFields.includes('ioTPlatformProductId')) {
|
||||
// 延迟一下,确保表单值已更新
|
||||
await nextTick();
|
||||
if (gridApi?.reload && gridApi?.formApi) {
|
||||
try {
|
||||
// 获取最新的表单值并传递给 reload
|
||||
const latestValues = await gridApi.formApi.getValues();
|
||||
await gridApi.reload(latestValues);
|
||||
} catch (error) {
|
||||
console.error('重新加载数据时出错:', error);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
const gridOptions: VxeGridProps<any> = {
|
||||
checkboxConfig: {
|
||||
@ -71,11 +88,19 @@ const gridOptions: VxeGridProps<any> = {
|
||||
proxyConfig: {
|
||||
ajax: {
|
||||
query: async ({ page }, formValues) => {
|
||||
// 总是从表单API获取最新的表单值,确保参数完整(分页、刷新时formValues可能不完整)
|
||||
const currentFormValues = gridApi?.formApi
|
||||
? await gridApi.formApi.getValues()
|
||||
: formValues || {};
|
||||
|
||||
// 优先使用从表单API获取的值(最新的),如果没有则使用传入的formValues
|
||||
const finalFormValues = { ...(formValues || {}), ...currentFormValues };
|
||||
|
||||
const { data } = await postDeviceInfoPage({
|
||||
body: {
|
||||
pageIndex: page.currentPage,
|
||||
pageSize: page.pageSize,
|
||||
...formValues,
|
||||
...finalFormValues,
|
||||
},
|
||||
});
|
||||
return data;
|
||||
@ -180,12 +205,8 @@ watch(
|
||||
}
|
||||
|
||||
if (newQuery.ioTPlatformDeviceOpenInfo) {
|
||||
// 根据平台类型设置对应的产品ID字段
|
||||
if (newQuery.ioTPlatform === '2' || newQuery.ioTPlatform === 2) {
|
||||
filterValues.oneNETProductId = newQuery.ioTPlatformDeviceOpenInfo;
|
||||
} else if (newQuery.ioTPlatform === '1' || newQuery.ioTPlatform === 1) {
|
||||
filterValues.ctWingProductId = newQuery.ioTPlatformDeviceOpenInfo;
|
||||
}
|
||||
// 设置产品ID字段
|
||||
filterValues.ioTPlatformProductId = newQuery.ioTPlatformDeviceOpenInfo;
|
||||
// 同时设置通用字段用于查询
|
||||
filterValues.ioTPlatformDeviceOpenInfo = newQuery.ioTPlatformDeviceOpenInfo;
|
||||
}
|
||||
@ -211,22 +232,14 @@ watch(
|
||||
() => gridApi?.formApi?.getValues,
|
||||
(formValues) => {
|
||||
if (formValues) {
|
||||
const { oneNETProductId, ctWingProductId } = formValues;
|
||||
const { ioTPlatformProductId } = formValues;
|
||||
|
||||
// 如果选择了OneNET产品,设置ioTPlatformDeviceOpenInfo
|
||||
if (oneNETProductId) {
|
||||
console.log('检测到OneNET产品选择变化:', oneNETProductId);
|
||||
gridApi?.formApi?.setFieldValue('ioTPlatformDeviceOpenInfo', oneNETProductId);
|
||||
console.log('已设置ioTPlatformDeviceOpenInfo为:', oneNETProductId);
|
||||
}
|
||||
// 如果选择了CTWing产品,设置ioTPlatformDeviceOpenInfo
|
||||
else if (ctWingProductId) {
|
||||
console.log('检测到CTWing产品选择变化:', ctWingProductId);
|
||||
gridApi?.formApi?.setFieldValue('ioTPlatformDeviceOpenInfo', ctWingProductId);
|
||||
console.log('已设置ioTPlatformDeviceOpenInfo为:', ctWingProductId);
|
||||
}
|
||||
// 如果都没有选择,清空ioTPlatformDeviceOpenInfo
|
||||
else if (!oneNETProductId && !ctWingProductId) {
|
||||
// 如果选择了产品,设置ioTPlatformDeviceOpenInfo
|
||||
if (ioTPlatformProductId) {
|
||||
console.log('检测到产品选择变化:', ioTPlatformProductId);
|
||||
gridApi?.formApi?.setFieldValue('ioTPlatformDeviceOpenInfo', ioTPlatformProductId);
|
||||
console.log('已设置ioTPlatformDeviceOpenInfo为:', ioTPlatformProductId);
|
||||
} else {
|
||||
console.log('清空产品选择');
|
||||
gridApi?.formApi?.setFieldValue('ioTPlatformDeviceOpenInfo', '');
|
||||
}
|
||||
@ -379,6 +392,12 @@ const [AddForm, addFormApi] = useVbenForm({
|
||||
showCollapseButton: false,
|
||||
showDefaultActions: false,
|
||||
wrapperClass: 'grid-cols-2',
|
||||
handleValuesChange: async (values, changedFields) => {
|
||||
// 当账号切换时,清空产品名称字段
|
||||
if (changedFields.includes('ioTPlatformAccountId')) {
|
||||
await addFormApi.setFieldValue('ioTPlatformProductId', undefined);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const [EditForm, editFormApi] = useVbenForm({
|
||||
@ -397,6 +416,12 @@ const [EditForm, editFormApi] = useVbenForm({
|
||||
showCollapseButton: false,
|
||||
showDefaultActions: false,
|
||||
wrapperClass: 'grid-cols-2',
|
||||
handleValuesChange: async (values, changedFields) => {
|
||||
// 当账号切换时,清空产品名称字段
|
||||
if (changedFields.includes('ioTPlatformAccountId')) {
|
||||
await editFormApi.setFieldValue('ioTPlatformProductId', undefined);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const [CommandForm, commandFormApi] = useVbenForm({
|
||||
@ -477,6 +502,12 @@ const [BatchAddForm, batchAddFormApi] = useVbenForm({
|
||||
wrapperClass: 'grid-cols-2',
|
||||
// 添加响应式监听
|
||||
autoSubmitOnEnter: false,
|
||||
handleValuesChange: async (values, changedFields) => {
|
||||
// 当账号切换时,清空产品名称字段
|
||||
if (changedFields.includes('ioTPlatformAccountId')) {
|
||||
await batchAddFormApi.setFieldValue('ioTPlatformProductId', undefined);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const [BatchAddModal, batchAddModalApi] = useVbenModal({
|
||||
@ -513,36 +544,13 @@ async function submit() {
|
||||
|
||||
const formValues = await formApi.getValues();
|
||||
|
||||
// 根据平台类型处理数据
|
||||
const processedFormValues = { ...formValues };
|
||||
|
||||
if (formValues.ioTPlatform === 2 || formValues.ioTPlatform === '2') {
|
||||
// OneNET平台
|
||||
processedFormValues.ioTPlatformAccountId = formValues.oneNETAccountId;
|
||||
processedFormValues.ioTPlatformProductId = formValues.oneNETProductId;
|
||||
// 清理不需要的字段
|
||||
delete processedFormValues.oneNETAccountId;
|
||||
delete processedFormValues.oneNETProductId;
|
||||
delete processedFormValues.ctWingAccountId;
|
||||
delete processedFormValues.ctWingProductId;
|
||||
} else if (formValues.ioTPlatform === 1 || formValues.ioTPlatform === '1') {
|
||||
// CTWing平台
|
||||
processedFormValues.ioTPlatformAccountId = formValues.ctWingAccountId;
|
||||
processedFormValues.ioTPlatformProductId = formValues.ctWingProductId;
|
||||
// 清理不需要的字段
|
||||
delete processedFormValues.ctWingAccountId;
|
||||
delete processedFormValues.ctWingProductId;
|
||||
delete processedFormValues.oneNETAccountId;
|
||||
delete processedFormValues.oneNETProductId;
|
||||
}
|
||||
|
||||
const fetchParams: any = isEdit
|
||||
? {
|
||||
id: editRow.value.id,
|
||||
...processedFormValues,
|
||||
...formValues,
|
||||
}
|
||||
: {
|
||||
...processedFormValues,
|
||||
...formValues,
|
||||
};
|
||||
|
||||
try {
|
||||
@ -574,7 +582,7 @@ async function onEdit(record: any) {
|
||||
editRow.value = record;
|
||||
userModalApi.open();
|
||||
|
||||
// 根据平台类型设置表单值
|
||||
// 设置表单值
|
||||
const formValues = { ...record };
|
||||
|
||||
// 确保ioTPlatform是字符串格式,因为ApiSelect组件的valueField是'key'
|
||||
@ -582,16 +590,6 @@ async function onEdit(record: any) {
|
||||
formValues.ioTPlatform = String(formValues.ioTPlatform);
|
||||
}
|
||||
|
||||
if (record.ioTPlatform === 2 || record.ioTPlatform === '2') {
|
||||
// OneNET平台
|
||||
formValues.oneNETAccountId = record.ioTPlatformAccountId;
|
||||
formValues.oneNETProductId = record.ioTPlatformProductId;
|
||||
} else if (record.ioTPlatform === 1 || record.ioTPlatform === '1') {
|
||||
// CTWing平台
|
||||
formValues.ctWingAccountId = record.ioTPlatformAccountId;
|
||||
formValues.ctWingProductId = record.ioTPlatformProductId;
|
||||
}
|
||||
|
||||
editFormApi.setValues(formValues);
|
||||
}
|
||||
|
||||
@ -955,15 +953,11 @@ async function submitBatchAdd() {
|
||||
return;
|
||||
}
|
||||
|
||||
// 根据平台类型处理数据
|
||||
let ioTPlatformProductId = '';
|
||||
if (formValues.ioTPlatform === 2 || formValues.ioTPlatform === '2') {
|
||||
// OneNET平台
|
||||
ioTPlatformProductId = formValues.oneNETProductId;
|
||||
} else if (formValues.ioTPlatform === 1 || formValues.ioTPlatform === '1') {
|
||||
// CTWing平台
|
||||
ioTPlatformProductId = formValues.ctWingProductId;
|
||||
}
|
||||
// 获取产品ID(兼容新旧字段名)
|
||||
const ioTPlatformProductId =
|
||||
formValues.ioTPlatformProductId ||
|
||||
formValues.oneNETProductId ||
|
||||
formValues.ctWingProductId;
|
||||
|
||||
if (!ioTPlatformProductId) {
|
||||
Message.error('请选择产品');
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user