修改数据类型.
This commit is contained in:
@@ -4,8 +4,8 @@ import axios from 'axios';
|
||||
* 登陆请求
|
||||
*/
|
||||
export interface LoginRequest {
|
||||
username: string;
|
||||
password: string;
|
||||
username: string | undefined;
|
||||
password: string | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -44,11 +44,10 @@ export interface RoleQueryResponse extends TableData {
|
||||
name?: string;
|
||||
code?: string;
|
||||
status?: number;
|
||||
// FIXME 恢复
|
||||
createTime?: number;
|
||||
updateTime?: number;
|
||||
creator?: string;
|
||||
updater?: string;
|
||||
createTime: number;
|
||||
updateTime: number;
|
||||
creator: string;
|
||||
updater: string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<template>
|
||||
<a-select v-model:model-value="value"
|
||||
<a-select v-model:model-value="value as any"
|
||||
:options="optionData()"
|
||||
:allow-search="true"
|
||||
:multiple="multiple"
|
||||
:loading="loading"
|
||||
:disabled="loading"
|
||||
:filter-option="filterOption"
|
||||
placeholder="请选择角色" />
|
||||
</template>
|
||||
|
||||
@@ -38,13 +38,14 @@
|
||||
import { useCacheStore } from '@/store';
|
||||
import { getHostKeyList } from '@/api/asset/host-key';
|
||||
import { getHostIdentityList } from '@/api/asset/host-identity';
|
||||
import { HostConfigWrapper } from '@/views/asset/host/types/host-config.types';
|
||||
|
||||
const { visible, setVisible } = useVisible();
|
||||
const { loading, setLoading } = useLoading();
|
||||
const cacheStore = useCacheStore();
|
||||
|
||||
const record = ref();
|
||||
const config = ref<Record<string, any>>({
|
||||
const config = ref<HostConfigWrapper>({
|
||||
SSH: undefined
|
||||
});
|
||||
|
||||
|
||||
@@ -128,10 +128,6 @@
|
||||
</a-space>
|
||||
</div>
|
||||
</a-spin>
|
||||
<!-- FIXME -->
|
||||
{{ formModel }}
|
||||
<br><br>
|
||||
{{ content }}
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
@@ -151,6 +147,7 @@
|
||||
import HostIdentitySelector from '@/components/asset/host-identity/host-identity-selector.vue';
|
||||
import { toOptions } from '@/utils/enum';
|
||||
import { FieldRule, Message } from '@arco-design/web-vue';
|
||||
import { RoleUpdateRequest } from '@/api/user/role';
|
||||
|
||||
const { loading, setLoading } = useLoading();
|
||||
|
||||
@@ -166,7 +163,7 @@
|
||||
});
|
||||
|
||||
const formRef = ref();
|
||||
const formModel = reactive<HostSshConfig>({
|
||||
const formModel = ref<HostSshConfig>({
|
||||
username: undefined,
|
||||
port: undefined,
|
||||
password: undefined,
|
||||
@@ -185,8 +182,7 @@
|
||||
watch(() => props.content, (v: any) => {
|
||||
config.value.status = v?.status;
|
||||
config.value.version = v?.version;
|
||||
// FIXME
|
||||
resetConfig(v.config);
|
||||
resetConfig();
|
||||
});
|
||||
|
||||
// 用户名验证
|
||||
@@ -196,7 +192,7 @@
|
||||
cb('用户名长度不能大于128位');
|
||||
return;
|
||||
}
|
||||
if (formModel.authType !== AuthTypeEnum.IDENTITY.value && !value) {
|
||||
if (formModel.value.authType !== AuthTypeEnum.IDENTITY.value && !value) {
|
||||
cb('请输入用户名');
|
||||
return;
|
||||
}
|
||||
@@ -210,7 +206,7 @@
|
||||
cb('密码长度不能大于256位');
|
||||
return;
|
||||
}
|
||||
if (formModel.useNewPassword && !value) {
|
||||
if (formModel.value.useNewPassword && !value) {
|
||||
cb('请输入密码');
|
||||
return;
|
||||
}
|
||||
@@ -236,15 +232,9 @@
|
||||
|
||||
// 重置配置
|
||||
const resetConfig = () => {
|
||||
// FIXME
|
||||
Object.keys(formModel).forEach(k => {
|
||||
console.log(k, props.content?.config?.hasOwnProperty(k));
|
||||
if (props.content?.config?.hasOwnProperty(k)) {
|
||||
formModel[k] = props.content?.config[k];
|
||||
}
|
||||
});
|
||||
formModel.value = Object.assign({}, props.content?.config);
|
||||
// 使用新密码默认为不包含密码
|
||||
formModel.useNewPassword = !formModel.hasPassword;
|
||||
formModel.value.useNewPassword = !formModel.value.hasPassword;
|
||||
};
|
||||
|
||||
// 保存配置
|
||||
|
||||
@@ -19,9 +19,10 @@ export const AuthTypeEnum = {
|
||||
/**
|
||||
* 主机所有配置
|
||||
*/
|
||||
// fixme
|
||||
export interface HostConfigWrapper {
|
||||
SSH: HostSshConfig | unknown;
|
||||
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
const { loading, setLoading } = useLoading();
|
||||
const userStore = useUserStore();
|
||||
|
||||
const userInfo = reactive({
|
||||
const userInfo = reactive<LoginRequest>({
|
||||
username: undefined,
|
||||
password: undefined,
|
||||
});
|
||||
@@ -75,14 +75,14 @@
|
||||
values,
|
||||
}: {
|
||||
errors: Record<string, ValidatedError> | undefined;
|
||||
values: Record<string, any>;
|
||||
values: LoginRequest;
|
||||
}) => {
|
||||
if (loading.value) return;
|
||||
if (!errors) {
|
||||
setLoading(true);
|
||||
try {
|
||||
// 执行登陆
|
||||
await userStore.login(values as LoginRequest);
|
||||
await userStore.login(values);
|
||||
// 跳转路由
|
||||
const { redirect, ...othersQuery } = router.currentRoute.value.query;
|
||||
router.push({
|
||||
|
||||
@@ -57,11 +57,10 @@
|
||||
const { loading, setLoading } = useLoading();
|
||||
|
||||
const tree = ref();
|
||||
const roleRecord = ref<RoleQueryResponse>({});
|
||||
const roleRecord = ref<RoleQueryResponse>({} as RoleQueryResponse);
|
||||
|
||||
// 打开新增
|
||||
const open = async (record: any) => {
|
||||
// fixme 改成 props
|
||||
renderRecord(record);
|
||||
setVisible(true);
|
||||
try {
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
const pagination = reactive(defaultPagination()) as PaginationProps;
|
||||
|
||||
const formModel = ref<RoleQueryRequest>({
|
||||
const formModel = reactive<RoleQueryRequest>({
|
||||
id: undefined,
|
||||
name: undefined,
|
||||
code: undefined,
|
||||
|
||||
@@ -21,11 +21,11 @@
|
||||
:wrapper-col-props="{ span: 18 }">
|
||||
<!-- 用户名 -->
|
||||
<a-form-item field="username" label="用户名">
|
||||
<a-input v-model="formModel.username" :disabled="true" />
|
||||
<a-input v-model="updateUser.username" :disabled="true" />
|
||||
</a-form-item>
|
||||
<!-- 花名 -->
|
||||
<a-form-item field="nickname" label="花名">
|
||||
<a-input v-model="formModel.nickname" :disabled="true" />
|
||||
<a-input v-model="updateUser.nickname" :disabled="true" />
|
||||
</a-form-item>
|
||||
<!-- 角色 -->
|
||||
<a-form-item field="roles" label="角色">
|
||||
@@ -45,48 +45,38 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { reactive, ref } from 'vue';
|
||||
import { ref } from 'vue';
|
||||
import useLoading from '@/hooks/loading';
|
||||
import useVisible from '@/hooks/visible';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
import UserRoleSelector from '@/components/user/role/user-role-selector.vue';
|
||||
import { getRoleList } from '@/api/user/role';
|
||||
import { useCacheStore } from '@/store';
|
||||
import { getUserRoleIdList, grantUserRole } from '@/api/user/user';
|
||||
import { getUserRoleIdList, grantUserRole, UserQueryResponse, UserUpdateRequest } from '@/api/user/user';
|
||||
|
||||
const { visible, setVisible } = useVisible();
|
||||
const { loading: saveLoading, setLoading: setSaveLoading } = useLoading();
|
||||
const { loading: roleLoading, setLoading: setRoleLoading } = useLoading();
|
||||
|
||||
const defaultForm = () => {
|
||||
return {
|
||||
id: undefined,
|
||||
username: undefined,
|
||||
nickname: undefined,
|
||||
roleIdList: undefined,
|
||||
};
|
||||
};
|
||||
|
||||
const formRef = ref();
|
||||
// fixme
|
||||
const formModel = reactive<Record<string, any>>(defaultForm());
|
||||
const formModel = ref<UserUpdateRequest>({});
|
||||
const updateUser = ref<UserQueryResponse>({} as UserQueryResponse);
|
||||
const cacheStore = useCacheStore();
|
||||
|
||||
// 打开
|
||||
const open = (record: any) => {
|
||||
renderForm({ ...defaultForm(), ...record });
|
||||
renderForm(record);
|
||||
setVisible(true);
|
||||
loadRoles();
|
||||
};
|
||||
|
||||
// 渲染表单
|
||||
const renderForm = (record: any) => {
|
||||
// fixme
|
||||
Object.keys(formModel).forEach(k => {
|
||||
if (record.hasOwnProperty(k)) {
|
||||
formModel[k] = record[k];
|
||||
}
|
||||
});
|
||||
updateUser.value = Object.assign({}, record);
|
||||
formModel.value = {
|
||||
id: record.id,
|
||||
roleIdList: []
|
||||
};
|
||||
};
|
||||
|
||||
// 加载角色
|
||||
@@ -99,8 +89,8 @@
|
||||
cacheStore.set('roles', data);
|
||||
}
|
||||
// 加载用户角色
|
||||
const { data: roleIdList } = await getUserRoleIdList(formModel.id);
|
||||
formModel.roleIdList = roleIdList;
|
||||
const { data: roleIdList } = await getUserRoleIdList(formModel.value.id as number);
|
||||
formModel.value.roleIdList = roleIdList;
|
||||
} catch (e) {
|
||||
} finally {
|
||||
setRoleLoading(false);
|
||||
@@ -113,10 +103,7 @@
|
||||
const handlerOk = async () => {
|
||||
setSaveLoading(true);
|
||||
try {
|
||||
await grantUserRole({
|
||||
id: formModel.id,
|
||||
roleIdList: formModel.roleIdList
|
||||
});
|
||||
await grantUserRole(formModel.value);
|
||||
Message.success('修改成功');
|
||||
// 清空
|
||||
handlerClear();
|
||||
|
||||
@@ -21,11 +21,11 @@
|
||||
:wrapper-col-props="{ span: 18 }">
|
||||
<!-- 用户名 -->
|
||||
<a-form-item field="username" label="用户名">
|
||||
<a-input v-model="formModel.username" :disabled="true" />
|
||||
<a-input v-model="updateUser.username" :disabled="true" />
|
||||
</a-form-item>
|
||||
<!-- 花名 -->
|
||||
<a-form-item field="nickname" label="花名">
|
||||
<a-input v-model="formModel.nickname" :disabled="true" />
|
||||
<a-input v-model="updateUser.nickname" :disabled="true" />
|
||||
</a-form-item>
|
||||
<!-- 密码 -->
|
||||
<a-form-item field="password" label="新密码" :rules="password">
|
||||
@@ -43,42 +43,33 @@
|
||||
</script>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { reactive, ref } from 'vue';
|
||||
import { ref } from 'vue';
|
||||
import useLoading from '@/hooks/loading';
|
||||
import useVisible from '@/hooks/visible';
|
||||
import { password } from '../types/form.rules';
|
||||
import { resetUserPassword } from '@/api/user/user';
|
||||
import { resetUserPassword, UserQueryResponse, UserUpdateRequest } from '@/api/user/user';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
import { md5 } from '@/utils';
|
||||
|
||||
const { visible, setVisible } = useVisible();
|
||||
const { loading, setLoading } = useLoading();
|
||||
|
||||
const defaultForm = () => {
|
||||
return {
|
||||
id: undefined,
|
||||
username: undefined,
|
||||
nickname: undefined,
|
||||
password: undefined,
|
||||
};
|
||||
};
|
||||
|
||||
const formRef = ref();
|
||||
const formModel = reactive<Record<string, any>>(defaultForm());
|
||||
const formModel = ref<UserUpdateRequest>({});
|
||||
const updateUser = ref<UserQueryResponse>({} as UserQueryResponse);
|
||||
|
||||
// 打开
|
||||
const open = (record: any) => {
|
||||
renderForm({ ...defaultForm(), ...record });
|
||||
renderForm(record);
|
||||
setVisible(true);
|
||||
};
|
||||
|
||||
// 渲染表单
|
||||
const renderForm = (record: any) => {
|
||||
Object.keys(formModel).forEach(k => {
|
||||
if (record.hasOwnProperty(k)) {
|
||||
formModel[k] = record[k];
|
||||
}
|
||||
});
|
||||
updateUser.value = Object.assign({}, record);
|
||||
formModel.value = {
|
||||
password: undefined
|
||||
};
|
||||
};
|
||||
|
||||
defineExpose({ open });
|
||||
@@ -94,8 +85,8 @@
|
||||
}
|
||||
// 修改
|
||||
await resetUserPassword({
|
||||
id: formModel.id,
|
||||
password: md5(formModel.password)
|
||||
id: updateUser.value.id,
|
||||
password: md5(formModel.value.password as string)
|
||||
});
|
||||
Message.success('修改成功');
|
||||
// 清空
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
|
||||
const pagination = reactive(defaultPagination()) as PaginationProps;
|
||||
|
||||
const formModel = ref<UserQueryRequest>({
|
||||
const formModel = reactive<UserQueryRequest>({
|
||||
id: undefined,
|
||||
username: undefined,
|
||||
password: undefined,
|
||||
|
||||
Reference in New Issue
Block a user