optimize(manage): replace Object.assign with jsonClone for safer data handling in model initialization

This commit is contained in:
Soybean
2025-10-27 18:18:33 +08:00
parent 93cbde737a
commit 0919dd0743
4 changed files with 14 additions and 20 deletions

View File

@@ -1,5 +1,6 @@
<script setup lang="ts">
import { computed, ref, watch } from 'vue';
import { jsonClone } from '@sa/utils';
import { enableStatusOptions, userGenderOptions } from '@/constants/business';
import { fetchGetAllRoles } from '@/service/api';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
@@ -93,7 +94,7 @@ function handleInitModel() {
model.value = createDefaultModel();
if (props.operateType === 'edit' && props.rowData) {
Object.assign(model.value, props.rowData);
Object.assign(model.value, jsonClone(props.rowData));
}
}

View File

@@ -1,5 +1,6 @@
<script setup lang="ts">
import { computed } from 'vue';
import { computed, toRaw } from 'vue';
import { jsonClone } from '@sa/utils';
import { enableStatusOptions, userGenderOptions } from '@/constants/business';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { translateOptions } from '@/utils/common';
@@ -30,17 +31,10 @@ const rules = computed<Record<RuleKey, App.Global.FormRule>>(() => {
};
});
const defaultModel = jsonClone(toRaw(model.value));
function resetModel() {
model.value = {
current: 1,
size: 10,
status: null,
userName: null,
userGender: null,
nickName: null,
userPhone: null,
userEmail: null
};
Object.assign(model.value, defaultModel);
}
async function reset() {