feat: 个人中心信息api

This commit is contained in:
汪少伟
2025-03-19 12:31:02 +08:00
parent 8c229edfdf
commit 393c1f7299
2 changed files with 102 additions and 22 deletions

View File

@@ -134,6 +134,32 @@ export const getVulnList = (data): Promise<any> => {
);
};
// 获取SBOM依赖树
export const dependencyTree = (softwareId: any): Promise<any> => {
return reqCatchV2(() =>
request({
url: `/api/v1/repo/dependency/tree`,
method: 'POST',
data: {
softwareId,
current: 1,
size: 99999
}
})
);
};
// 编辑用户信息(包含订阅默认预警方式)
export const userEdit = (data: any): Promise<any> => {
return reqCatchV2(() =>
request({
url: `/api/v1/user/edit`,
method: 'POST',
data
})
);
};
// 获取漏洞数据
export const getVulnDetail = (data): Promise<any> => {
return reqCatchV2(() =>
@@ -143,18 +169,18 @@ export const getVulnDetail = (data): Promise<any> => {
data
})
);
}
};
// 迁移批量导入
export function repoImport(data: types.commonRepoReqType){
export function repoImport(data: types.commonRepoReqType) {
return reqCatchV2(() =>
request({
url: `/api/v1/home/software/valid`,
method: 'post',
data,
headers: {
'Content-Type': 'multipart/form-data', // 设置请求头
},
'Content-Type': 'multipart/form-data' // 设置请求头
}
})
);
}
@@ -165,10 +191,10 @@ export const getNoticeList = (data): Promise<any> => {
request({
url: `/api/v1/alert/notice/list`,
method: 'POST',
data,
data
})
);
}
};
// 个人中心-获取组织级预警列表
export const getgroupNoticeList = (data): Promise<any> => {
@@ -176,7 +202,7 @@ export const getgroupNoticeList = (data): Promise<any> => {
request({
url: `/api/v1/alert/group/notice/list`,
method: 'POST',
data,
data
})
);
}
};

View File

@@ -4,21 +4,33 @@
<div class="text-[14px] w-full flex items-center justify-between">
<div class="font-bold mb-[16px]">基础信息</div>
</div>
<d-form layout="vertical" class="ml-3 mr-3" :data="forms">
<d-form ref="formRef" layout="vertical" class="ml-3 mr-3" :data="forms">
<d-row :gutter="16">
<d-col span="8">
<d-form-item field="name" label="名称" required>
<d-input v-model="forms.name" />
<d-form-item
field="nickname"
label="名称"
:rules="[{ required: true, message: '请填写名称', trigger: 'blur' }]"
>
<d-input v-model="forms.nickname" />
</d-form-item>
</d-col>
<d-col span="8">
<d-form-item field="email" label="邮件" required>
<d-form-item
field="email"
label="邮件"
:rules="[{ required: true, message: '请填写邮件', trigger: 'blur' }]"
>
<d-input v-model="forms.email" />
</d-form-item>
</d-col>
<d-col span="8">
<d-form-item field="phone" label="电话" required>
<d-input v-model="forms.phone" />
<d-form-item
field="mobile"
label="电话"
:rules="[{ required: true, message: '请填写电话', trigger: 'blur' }]"
>
<d-input v-model="forms.mobile" />
</d-form-item>
</d-col>
</d-row>
@@ -30,28 +42,70 @@
</div>
<d-form layout="vertical">
<d-form-item field="radio" label="是否开启预警通知">
<d-radio-group direction="row" v-model="radio">
<d-radio value="0">开启</d-radio>
<d-radio value="1">关闭</d-radio>
<d-radio-group direction="row" v-model="forms.userExt.emailAlertSwitch">
<d-radio :value="true">开启</d-radio>
<d-radio :value="false">关闭</d-radio>
</d-radio-group>
</d-form-item>
</d-form>
</d-card>
<div class="flex">
<d-button variant="solid" class="mr-[8px]">保存</d-button>
<d-button variant="solid" class="mr-[8px]" @click="save" :loading="loading">保存</d-button>
<!-- <d-button color="secondary" class="mr-[8px]">保存草稿</d-button> -->
</div>
</div>
</template>
<script setup lang="ts">
import { reactive, ref, shallowRef } from 'vue';
const radio = ref('0');
import { userEdit } from '@/api/jyh';
import { getUserInfo } from '@/api/user';
import { onMounted, reactive, ref, shallowRef } from 'vue';
import { Message } from 'vue-devui';
import { useAccountStore } from '@/stores/user';
const loading = ref(false);
const forms = reactive({
name: '',
nickname: '',
mobile: '',
email: '',
phone: ''
userExt: {
emailAlertSwitch: true
}
});
const getInfo = async () => {
const userRes = await getUserInfo();
const user = userRes.data.data.data || {};
forms.nickname = user.nickname;
forms.mobile = user.mobile;
forms.email = user.email;
forms.userExt.emailAlertSwitch = user.userExt?.emailAlertSwitch || false;
if (userRes.data?.data) {
localStorage.setItem('userInfo', JSON.stringify(userRes.data?.data));
useAccountStore().saveAccountInfo({
...userRes.data?.data
});
// }
}
};
const formRef = ref();
const save = () => {
formRef.value.validate(async (isValid, invalidFields) => {
if (isValid) {
loading.value = true;
await userEdit(forms);
loading.value = false;
Message.success('保存成功');
getInfo();
}
});
};
onMounted(() => {
getInfo();
});
</script>