Browse Source

🚑 多租户编辑Bug

 用户修改密码功能
main-auditlogging 5.1.1.9
王军 4 years ago
parent
commit
7d610e95b1
  1. 94
      vben271/src/layouts/default/header/components/user-dropdown/ChangePassword.vue
  2. 21
      vben271/src/layouts/default/header/components/user-dropdown/index.vue
  3. 6
      vben271/src/locales/lang/en/routes/admin.ts
  4. 2
      vben271/src/locales/lang/en/routes/tenant.ts
  5. 6
      vben271/src/locales/lang/zh-CN/routes/admin.ts
  6. 2
      vben271/src/locales/lang/zh-CN/routes/tenant.ts
  7. 4
      vben271/src/views/admin/users/AbpUser.ts
  8. 1
      vben271/src/views/tenants/EditConnectionString.vue
  9. 1
      vben271/src/views/tenants/EditTenant.vue
  10. 10
      vben271/src/views/tenants/Tenant.ts
  11. 37
      vben271/src/views/tenants/Tenant.vue

94
vben271/src/layouts/default/header/components/user-dropdown/ChangePassword.vue

@ -0,0 +1,94 @@
<template>
<BasicModal
title="修改密码"
v-bind="$attrs"
@register="register"
:canFullscreen="false"
@ok="submit"
minHeight="100"
>
<BasicForm @register="registerForm" />
</BasicModal>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n';
import { BasicModal, useModalInner } from '/@/components/Modal/index';
import { BasicForm, useForm } from '/@/components/Form/index';
import { UsersServiceProxy, ChangePasswordInput } from '/@/services/ServiceProxies';
import { message } from 'ant-design-vue';
export default defineComponent({
name: 'DefaultWarehouse',
components: { BasicModal, BasicForm },
setup() {
const { t } = useI18n();
//const userStore = useUserStore();
const [register, { changeOkLoading, closeModal }] = useModalInner();
const [registerForm, { getFieldsValue, validate, resetFields }] = useForm({
showActionButtonGroup: false,
schemas: [
{
field: 'currentPassword',
label: t('routes.admin.currentPassword'),
component: 'InputPassword',
required: true,
labelWidth: 110,
colProps: {
span: 22,
},
},
{
field: 'newPassword',
label: t('routes.admin.newPassword'),
component: 'InputPassword',
required: true,
labelWidth: 110,
colProps: {
span: 22,
},
},
{
field: 'confirmPassword',
label: t('routes.admin.confirmPassword'),
component: 'InputPassword',
required: true,
labelWidth: 110,
colProps: {
span: 22,
},
},
],
});
const submit = async () => {
try {
changeOkLoading(true);
await validate();
const request = getFieldsValue();
if (request.newPassword != request.confirmPassword) {
message.error(t('editPasswordMessage'));
changeOkLoading(false);
return;
}
const _userServiceProxy = new UsersServiceProxy();
await _userServiceProxy.changePassword(request as ChangePasswordInput);
changeOkLoading(false);
closeModal();
resetFields();
} catch (error) {
changeOkLoading(false);
}
};
return {
t,
register,
registerForm,
submit,
};
},
});
</script>

21
vben271/src/layouts/default/header/components/user-dropdown/index.vue

@ -11,13 +11,7 @@
<template #overlay> <template #overlay>
<Menu @click="handleMenuClick"> <Menu @click="handleMenuClick">
<MenuItem <MenuItem key="password" text="修改密码" icon="ant-design:info-circle-outlined" />
key="doc"
:text="t('layout.header.dropdownItemDoc')"
icon="ion:document-text-outline"
v-if="getShowDoc"
/>
<MenuDivider v-if="getShowDoc" />
<MenuItem <MenuItem
v-if="getUseLockPage" v-if="getUseLockPage"
key="lock" key="lock"
@ -33,6 +27,7 @@
</template> </template>
</Dropdown> </Dropdown>
<LockAction @register="register" /> <LockAction @register="register" />
<PasswordAction @register="registerChangePasswordModal" />
</template> </template>
<script lang="ts"> <script lang="ts">
// components // components
@ -54,7 +49,7 @@
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
type MenuEvent = 'logout' | 'doc' | 'lock'; type MenuEvent = 'logout' | 'doc' | 'lock' | 'password';
export default defineComponent({ export default defineComponent({
name: 'UserDropdown', name: 'UserDropdown',
@ -64,6 +59,7 @@
MenuItem: createAsyncComponent(() => import('./DropMenuItem.vue')), MenuItem: createAsyncComponent(() => import('./DropMenuItem.vue')),
MenuDivider: Menu.Divider, MenuDivider: Menu.Divider,
LockAction: createAsyncComponent(() => import('../lock/LockModal.vue')), LockAction: createAsyncComponent(() => import('../lock/LockModal.vue')),
PasswordAction: createAsyncComponent(() => import('./ChangePassword.vue')),
}, },
props: { props: {
theme: propTypes.oneOf(['dark', 'light']), theme: propTypes.oneOf(['dark', 'light']),
@ -80,7 +76,10 @@
}); });
const [register, { openModal }] = useModal(); const [register, { openModal }] = useModal();
const [registerChangePasswordModal, { openModal: openChangePasswordModal }] = useModal();
function handleChangePassword() {
openChangePasswordModal(true);
}
function handleLock() { function handleLock() {
openModal(true); openModal(true);
} }
@ -100,6 +99,9 @@
case 'logout': case 'logout':
handleLoginOut(); handleLoginOut();
break; break;
case 'password':
handleChangePassword();
break;
case 'doc': case 'doc':
openDoc(); openDoc();
break; break;
@ -117,6 +119,7 @@
getShowDoc, getShowDoc,
register, register,
getUseLockPage, getUseLockPage,
registerChangePasswordModal,
}; };
}, },
}); });

6
vben271/src/locales/lang/en/routes/admin.ts

@ -11,7 +11,7 @@ export default {
userManagement_create_user: 'Create User', userManagement_create_user: 'Create User',
userManagement_edit_user: 'Edit User', userManagement_edit_user: 'Edit User',
userManagement_password: 'Password', userManagement_password: 'Password',
userManagement_comfirm_password: 'Password(Confirm)', userManagement_confirm_password: 'Password(Confirm)',
userManagement_userInfo: 'UserInfo', userManagement_userInfo: 'UserInfo',
userManagement_role: 'Role', userManagement_role: 'Role',
@ -62,4 +62,8 @@ export default {
nonZeroMessage: 'Please enter a non-zero positive integer', nonZeroMessage: 'Please enter a non-zero positive integer',
fileName: 'FileName', fileName: 'FileName',
fileNameManagement: 'FileNameManagement', fileNameManagement: 'FileNameManagement',
currentPassword: 'CurrentPassword',
newPassword: 'NewPassword',
confirmPassword: 'ConfirmPassword',
editPasswordMessage: 'The passwords entered twice are inconsistent. Procedure',
}; };

2
vben271/src/locales/lang/en/routes/tenant.ts

@ -3,4 +3,6 @@ export default {
connectionString: 'ConnectionString', connectionString: 'ConnectionString',
tenantManagement: 'TenantManagement', tenantManagement: 'TenantManagement',
tenantList: 'TenantList', tenantList: 'TenantList',
adminPassword: 'AdminPassword',
adminEmailAddress: 'AdminEmailAddress',
}; };

6
vben271/src/locales/lang/zh-CN/routes/admin.ts

@ -9,7 +9,7 @@ export default {
userManagement_phone: '手机号码', userManagement_phone: '手机号码',
userManagement_createTime: '创建时间', userManagement_createTime: '创建时间',
userManagement_password: '密码', userManagement_password: '密码',
userManagement_comfirm_password: '密码(再次确认)', userManagement_confirm_password: '密码(再次确认)',
userManagement_create_user: '新增用户', userManagement_create_user: '新增用户',
userManagement_edit_user: '编辑用户', userManagement_edit_user: '编辑用户',
userManagement_userInfo: '用户信息', userManagement_userInfo: '用户信息',
@ -61,4 +61,8 @@ export default {
nonZeroMessage: '请输入非零的正整数', nonZeroMessage: '请输入非零的正整数',
fileName: '文件名称', fileName: '文件名称',
fileNameManagement: '文件管理', fileNameManagement: '文件管理',
currentPassword: '当前密码',
newPassword: '新密码',
confirmPassword: '确认密码',
editPasswordMessage: '输入的2次密码不一致',
}; };

2
vben271/src/locales/lang/zh-CN/routes/tenant.ts

@ -3,4 +3,6 @@ export default {
connectionString: '连接字符串', connectionString: '连接字符串',
tenantManagement: '租户管理', tenantManagement: '租户管理',
tenantList: '租户列表', tenantList: '租户列表',
adminPassword: '管理员密码',
adminEmailAddress: '管理员邮箱',
}; };

4
vben271/src/views/admin/users/AbpUser.ts

@ -126,7 +126,7 @@ export const createFormSchema: FormSchema[] = [
componentProps: { componentProps: {
autocomplete: 'off', autocomplete: 'off',
}, },
label: t('routes.admin.userManagement_comfirm_password'), label: t('routes.admin.userManagement_confirm_password'),
required: true, required: true,
labelWidth: 130, labelWidth: 130,
colProps: { colProps: {
@ -193,7 +193,7 @@ export const editFormSchema: FormSchema[] = [
{ {
field: 'confirmPassword', field: 'confirmPassword',
component: 'InputPassword', component: 'InputPassword',
label: t('routes.admin.userManagement_comfirm_password'), label: t('routes.admin.userManagement_confirm_password'),
required: false, required: false,
labelWidth: 130, labelWidth: 130,
colProps: { colProps: {

1
vben271/src/views/tenants/EditConnectionString.vue

@ -5,6 +5,7 @@
@ok="submit" @ok="submit"
@cancel="cancel" @cancel="cancel"
@register="registerModal" @register="registerModal"
minHeight="100"
> >
<BasicForm @register="registerApiScopeForm" /> <BasicForm @register="registerApiScopeForm" />
</BasicModal> </BasicModal>

1
vben271/src/views/tenants/EditTenant.vue

@ -5,6 +5,7 @@
@ok="submit" @ok="submit"
@cancel="cancel" @cancel="cancel"
@register="registerModal" @register="registerModal"
minHeight="100"
> >
<BasicForm @register="registerApiScopeForm" /> <BasicForm @register="registerApiScopeForm" />
</BasicModal> </BasicModal>

10
vben271/src/views/tenants/Tenant.ts

@ -25,7 +25,7 @@ export const tableColumns: BasicColumn[] = [
export const createFormSchema: FormSchema[] = [ export const createFormSchema: FormSchema[] = [
{ {
field: 'name', field: 'name',
label: 'Name', label: t('routes.tenant.name'),
component: 'Input', component: 'Input',
required: true, required: true,
labelWidth: 150, labelWidth: 150,
@ -33,7 +33,7 @@ export const createFormSchema: FormSchema[] = [
}, },
{ {
field: 'adminEmailAddress', field: 'adminEmailAddress',
label: 'AdminEmailAddress', label: t('routes.tenant.adminEmailAddress'),
component: 'Input', component: 'Input',
required: true, required: true,
labelWidth: 150, labelWidth: 150,
@ -41,7 +41,7 @@ export const createFormSchema: FormSchema[] = [
}, },
{ {
field: 'adminPassword', field: 'adminPassword',
label: 'AdminPassword', label: t('routes.tenant.adminPassword'),
component: 'InputPassword', component: 'InputPassword',
required: true, required: true,
labelWidth: 150, labelWidth: 150,
@ -60,7 +60,7 @@ export const editFormSchema: FormSchema[] = [
}, },
{ {
field: 'name', field: 'name',
label: 'Name', label: t('routes.tenant.name'),
component: 'Input', component: 'Input',
required: true, required: true,
labelWidth: 150, labelWidth: 150,
@ -79,7 +79,7 @@ export const updateConnectionStringFormSchema: FormSchema[] = [
}, },
{ {
field: 'connectionString', field: 'connectionString',
label: 'ConnectionString', label: t('routes.tenant.connectionString'),
component: 'Input', component: 'Input',
labelWidth: 150, labelWidth: 150,
colProps: { span: 20 }, colProps: { span: 20 },

37
vben271/src/views/tenants/Tenant.vue

@ -12,7 +12,7 @@
</a-button> </a-button>
</template> </template>
<template #action="{ action }"> <template #action="{ record }">
<TableAction <TableAction
:actions="[ :actions="[
{ {
@ -36,34 +36,6 @@
]" ]"
/> />
</template> </template>
<!-- <template #action="{ record }">
<a-button
type="link"
size="small"
@click="handleEdit(record)"
v-auth="'AbpTenantManagement.Tenants.Update'"
>
{{ t('common.editText') }}
</a-button>
<a-button
type="link"
size="small"
@click="handleDelete(record)"
v-auth="'AbpTenantManagement.Tenants.Delete'"
>
{{ t('common.delText') }}
</a-button>
<a-button
type="link"
size="small"
@click="handleConnectionString(record)"
v-auth="'AbpTenantManagement.Tenants.ManageConnectionStrings'"
>
{{ t('routes.tenant.connectionString') }}
</a-button>
</template> -->
</BasicTable> </BasicTable>
<EditTenant <EditTenant
@register="registerEditTenantModal" @register="registerEditTenantModal"
@ -86,7 +58,7 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
import { BasicModal, useModal } from '/@/components/Modal'; import { useModal } from '/@/components/Modal';
import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { getTenantListAsync, tableColumns, searchFormSchema, deleteTenantAsync } from './Tenant'; import { getTenantListAsync, tableColumns, searchFormSchema, deleteTenantAsync } from './Tenant';
@ -99,7 +71,6 @@
name: 'Tenant', name: 'Tenant',
components: { components: {
BasicTable, BasicTable,
BasicModal,
TableAction, TableAction,
CreateTenant, CreateTenant,
EditTenant, EditTenant,
@ -135,12 +106,12 @@
}, },
}); });
const { createConfirm } = useMessage(); const { createConfirm } = useMessage();
// //
const handleEdit = (record: Recordable) => { const handleEdit = (record: Recordable) => {
openEditTenantModal(true, { record: record }); openEditTenantModal(true, { record: record });
}; };
// //
const handleDelete = async (record: Recordable) => { const handleDelete = async (record: Recordable) => {
let msg = t('common.askDelete'); let msg = t('common.askDelete');
createConfirm({ createConfirm({

Loading…
Cancel
Save