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