fix(ui): 修复修改追踪不生效问题
- 将 Map 改为普通对象,确保 Vue 2 能检测变化 - 使用 添加新属性,触发响应式更新 - 使用 强制更新视图 - 同时修复全局配置和项目配置页面
This commit is contained in:
@@ -56,8 +56,8 @@ export default {
|
|||||||
return {
|
return {
|
||||||
// 模型参数数据(按模型分组)
|
// 模型参数数据(按模型分组)
|
||||||
modelGroups: [],
|
modelGroups: [],
|
||||||
// 修改记录(记录哪些参数被修改过)
|
// 修改记录(使用对象而非Map,确保Vue能检测变化)
|
||||||
modifiedParams: new Map(),
|
modifiedParams: {},
|
||||||
// 保存状态
|
// 保存状态
|
||||||
saving: false
|
saving: false
|
||||||
};
|
};
|
||||||
@@ -66,7 +66,7 @@ export default {
|
|||||||
/** 计算已修改参数数量 */
|
/** 计算已修改参数数量 */
|
||||||
modifiedCount() {
|
modifiedCount() {
|
||||||
let count = 0;
|
let count = 0;
|
||||||
this.modifiedParams.forEach(params => {
|
Object.values(this.modifiedParams).forEach(params => {
|
||||||
count += params.size;
|
count += params.size;
|
||||||
});
|
});
|
||||||
return count;
|
return count;
|
||||||
@@ -82,7 +82,7 @@ export default {
|
|||||||
const res = await listAllParams({ projectId: 0 });
|
const res = await listAllParams({ projectId: 0 });
|
||||||
this.modelGroups = res.data.models;
|
this.modelGroups = res.data.models;
|
||||||
// 清空修改记录
|
// 清空修改记录
|
||||||
this.modifiedParams.clear();
|
this.modifiedParams = {};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.$message.error('加载参数失败:' + error.message);
|
this.$message.error('加载参数失败:' + error.message);
|
||||||
console.error('加载参数失败', error);
|
console.error('加载参数失败', error);
|
||||||
@@ -91,10 +91,14 @@ export default {
|
|||||||
|
|
||||||
/** 标记参数为已修改 */
|
/** 标记参数为已修改 */
|
||||||
markAsModified(modelCode, row) {
|
markAsModified(modelCode, row) {
|
||||||
if (!this.modifiedParams.has(modelCode)) {
|
// 使用 $set 确保 Vue 能检测到对象属性的新增
|
||||||
this.modifiedParams.set(modelCode, new Set());
|
if (!this.modifiedParams[modelCode]) {
|
||||||
|
this.$set(this.modifiedParams, modelCode, new Set());
|
||||||
}
|
}
|
||||||
this.modifiedParams.get(modelCode).add(row.paramCode);
|
this.modifiedParams[modelCode].add(row.paramCode);
|
||||||
|
|
||||||
|
// 强制更新视图
|
||||||
|
this.$forceUpdate();
|
||||||
},
|
},
|
||||||
|
|
||||||
/** 保存所有修改 */
|
/** 保存所有修改 */
|
||||||
@@ -111,8 +115,10 @@ export default {
|
|||||||
models: []
|
models: []
|
||||||
};
|
};
|
||||||
|
|
||||||
this.modifiedParams.forEach((paramCodes, modelCode) => {
|
Object.entries(this.modifiedParams).forEach(([modelCode, paramCodes]) => {
|
||||||
const modelGroup = this.modelGroups.find(m => m.modelCode === modelCode);
|
const modelGroup = this.modelGroups.find(m => m.modelCode === modelCode);
|
||||||
|
if (!modelGroup) return;
|
||||||
|
|
||||||
const modifiedParamList = modelGroup.params
|
const modifiedParamList = modelGroup.params
|
||||||
.filter(p => paramCodes.has(p.paramCode))
|
.filter(p => paramCodes.has(p.paramCode))
|
||||||
.map(p => ({
|
.map(p => ({
|
||||||
@@ -134,7 +140,7 @@ export default {
|
|||||||
await saveAllParams(saveDTO);
|
await saveAllParams(saveDTO);
|
||||||
this.$modal.msgSuccess('保存成功');
|
this.$modal.msgSuccess('保存成功');
|
||||||
// 清空修改记录并重新加载
|
// 清空修改记录并重新加载
|
||||||
this.modifiedParams.clear();
|
this.modifiedParams = {};
|
||||||
await this.loadAllParams();
|
await this.loadAllParams();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.response && error.response.data && error.response.data.msg) {
|
if (error.response && error.response.data && error.response.data.msg) {
|
||||||
|
|||||||
@@ -61,8 +61,8 @@ export default {
|
|||||||
return {
|
return {
|
||||||
// 模型参数数据(按模型分组)
|
// 模型参数数据(按模型分组)
|
||||||
modelGroups: [],
|
modelGroups: [],
|
||||||
// 修改记录(记录哪些参数被修改过)
|
// 修改记录(使用对象而非Map,确保Vue能检测变化)
|
||||||
modifiedParams: new Map(),
|
modifiedParams: {},
|
||||||
// 保存状态
|
// 保存状态
|
||||||
saving: false
|
saving: false
|
||||||
}
|
}
|
||||||
@@ -71,7 +71,7 @@ export default {
|
|||||||
/** 计算已修改参数数量 */
|
/** 计算已修改参数数量 */
|
||||||
modifiedCount() {
|
modifiedCount() {
|
||||||
let count = 0;
|
let count = 0;
|
||||||
this.modifiedParams.forEach(params => {
|
Object.values(this.modifiedParams).forEach(params => {
|
||||||
count += params.size;
|
count += params.size;
|
||||||
});
|
});
|
||||||
return count;
|
return count;
|
||||||
@@ -96,7 +96,7 @@ export default {
|
|||||||
const res = await listAllParams({ projectId: this.projectId });
|
const res = await listAllParams({ projectId: this.projectId });
|
||||||
this.modelGroups = res.data.models;
|
this.modelGroups = res.data.models;
|
||||||
// 清空修改记录
|
// 清空修改记录
|
||||||
this.modifiedParams.clear();
|
this.modifiedParams = {};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.$message.error('加载参数失败:' + error.message);
|
this.$message.error('加载参数失败:' + error.message);
|
||||||
console.error('加载参数失败', error);
|
console.error('加载参数失败', error);
|
||||||
@@ -105,10 +105,14 @@ export default {
|
|||||||
|
|
||||||
/** 标记参数为已修改 */
|
/** 标记参数为已修改 */
|
||||||
markAsModified(modelCode, row) {
|
markAsModified(modelCode, row) {
|
||||||
if (!this.modifiedParams.has(modelCode)) {
|
// 使用 $set 确保 Vue 能检测到对象属性的新增
|
||||||
this.modifiedParams.set(modelCode, new Set());
|
if (!this.modifiedParams[modelCode]) {
|
||||||
|
this.$set(this.modifiedParams, modelCode, new Set());
|
||||||
}
|
}
|
||||||
this.modifiedParams.get(modelCode).add(row.paramCode);
|
this.modifiedParams[modelCode].add(row.paramCode);
|
||||||
|
|
||||||
|
// 强制更新视图
|
||||||
|
this.$forceUpdate();
|
||||||
},
|
},
|
||||||
|
|
||||||
/** 保存所有修改 */
|
/** 保存所有修改 */
|
||||||
@@ -125,8 +129,10 @@ export default {
|
|||||||
models: []
|
models: []
|
||||||
};
|
};
|
||||||
|
|
||||||
this.modifiedParams.forEach((paramCodes, modelCode) => {
|
Object.entries(this.modifiedParams).forEach(([modelCode, paramCodes]) => {
|
||||||
const modelGroup = this.modelGroups.find(m => m.modelCode === modelCode);
|
const modelGroup = this.modelGroups.find(m => m.modelCode === modelCode);
|
||||||
|
if (!modelGroup) return;
|
||||||
|
|
||||||
const modifiedParamList = modelGroup.params
|
const modifiedParamList = modelGroup.params
|
||||||
.filter(p => paramCodes.has(p.paramCode))
|
.filter(p => paramCodes.has(p.paramCode))
|
||||||
.map(p => ({
|
.map(p => ({
|
||||||
@@ -148,7 +154,7 @@ export default {
|
|||||||
await saveAllParams(saveDTO);
|
await saveAllParams(saveDTO);
|
||||||
this.$message.success('保存成功');
|
this.$message.success('保存成功');
|
||||||
// 清空修改记录并重新加载
|
// 清空修改记录并重新加载
|
||||||
this.modifiedParams.clear();
|
this.modifiedParams = {};
|
||||||
await this.loadAllParams();
|
await this.loadAllParams();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (error.response && error.response.data && error.response.data.msg) {
|
if (error.response && error.response.data && error.response.data.msg) {
|
||||||
|
|||||||
Reference in New Issue
Block a user