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 { useBoolean } from '@sa/hooks';
import { enableStatusOptions } from '@/constants/business';
import { useFormRules, useNaiveForm } from '@/hooks/common/form';
@@ -72,7 +73,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,4 +1,6 @@
<script setup lang="ts">
import { toRaw } from 'vue';
import { jsonClone } from '@sa/utils';
import { enableStatusOptions } from '@/constants/business';
import { translateOptions } from '@/utils/common';
import { $t } from '@/locales';
@@ -15,14 +17,10 @@ const emit = defineEmits<Emits>();
const model = defineModel<Api.SystemManage.RoleSearchParams>('model', { required: true });
const defaultModel = jsonClone(toRaw(model.value));
function resetModel() {
model.value = {
current: 1,
size: 10,
roleName: null,
roleCode: null,
status: null
};
Object.assign(model.value, defaultModel);
}
function search() {

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() {