修改数据类型.

This commit is contained in:
lijiahang
2023-09-25 16:07:52 +08:00
parent 09610b3c82
commit 3c930a1b8b
12 changed files with 53 additions and 84 deletions

View File

@@ -4,8 +4,8 @@ import axios from 'axios';
* 登陆请求
*/
export interface LoginRequest {
username: string;
password: string;
username: string | undefined;
password: string | undefined;
}
/**

View File

@@ -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;
}
/**

View File

@@ -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>

View File

@@ -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
});

View File

@@ -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;
};
// 保存配置

View File

@@ -19,9 +19,10 @@ export const AuthTypeEnum = {
/**
* 主机所有配置
*/
// fixme
export interface HostConfigWrapper {
SSH: HostSshConfig | unknown;
[key: string]: unknown;
}
/**

View File

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

View File

@@ -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 {

View File

@@ -139,7 +139,7 @@
const pagination = reactive(defaultPagination()) as PaginationProps;
const formModel = ref<RoleQueryRequest>({
const formModel = reactive<RoleQueryRequest>({
id: undefined,
name: undefined,
code: undefined,

View File

@@ -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();

View File

@@ -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('修改成功');
// 清空

View File

@@ -164,7 +164,7 @@
const pagination = reactive(defaultPagination()) as PaginationProps;
const formModel = ref<UserQueryRequest>({
const formModel = reactive<UserQueryRequest>({
id: undefined,
username: undefined,
password: undefined,