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