feat: 更新价格编辑界面;完成编辑角色;新增角色;重置账号密码

perf/export-docx feat-RBAC-0.6
Jimmy Liow 1 year ago
parent 2a8dcabdec
commit c4145a13df

Binary file not shown.

@ -10,6 +10,13 @@ export const postAccountStatus = async (formData) => {
return errcode !== 0 ? {} : result return errcode !== 0 ? {} : result
} }
export const postAccountPassword = async (formData) => {
const { errcode, result } = await postForm(
`${HT_HOST}/service-CooperateSOA/reset_account_password`, formData)
return errcode !== 0 ? {} : result
}
export const fetchAccountList = async (params) => { export const fetchAccountList = async (params) => {
const { errcode, result } = await fetchJSON( const { errcode, result } = await fetchJSON(
@ -42,25 +49,35 @@ const useAccountStore = create((set, get) => ({
accountList: [], accountList: [],
selectedAccount: null,
selectAccount: (account) => {
set(() => ({
selectedAccount: account
}))
},
disableAccount: async (accountId) => { disableAccount: async (accountId) => {
const formData = new FormData() const formData = new FormData()
formData.append('wu_id', accountId) formData.append('wu_id', accountId)
formData.append('account_status', 'enable') // enable disable
formData.append('account_status', 'disable')
const result = await postAccountStatus(formData) const result = await postAccountStatus(formData)
console.info(result) console.info(result)
}, },
resetAccountPassword: async (accountId, password) => {
const formData = new FormData()
formData.append('wu_id', accountId)
formData.append('newPassword', password)
return postAccountPassword(formData)
},
newRole: () => {
return {
role_id: null,
role_name: '',
role_ids: ''
}
},
saveOrUpdateRole: async (formValues) => { saveOrUpdateRole: async (formValues) => {
const formData = new FormData() const formData = new FormData()
formData.append('role_id', formValues.role_id) formData.append('role_id', formValues.role_id)
@ -71,12 +88,11 @@ const useAccountStore = create((set, get) => ({
}, },
saveOrUpdateAccount: async (formValues) => { saveOrUpdateAccount: async (formValues) => {
const { selectedAccount } = get()
const { userId } = usingStorage() const { userId } = usingStorage()
const formData = new FormData() const formData = new FormData()
formData.append('wu_id', selectedAccount.userId) formData.append('wu_id', formValues.userId)
formData.append('lmi_sn', selectedAccount.lmi_sn) formData.append('lmi_sn', formValues.lmi_sn)
formData.append('lmi2_sn', selectedAccount.lmi2_sn) formData.append('lmi2_sn', formValues.lmi2_sn)
formData.append('user_name', formValues.username) formData.append('user_name', formValues.username)
formData.append('real_name', formValues.realname) formData.append('real_name', formValues.realname)
formData.append('email', formValues.email) formData.append('email', formValues.email)
@ -110,7 +126,8 @@ const useAccountStore = create((set, get) => ({
lastLogin: r.wu_lastlogindate, lastLogin: r.wu_lastlogindate,
travelAgency: r.travel_agency_name, travelAgency: r.travel_agency_name,
travelAgencyId: r.travel_agency_id, travelAgencyId: r.travel_agency_id,
roleId: r.roles, // 数据库支持逗号分隔多角色(5,6,7),目前界面只需单个。
roleId: parseInt(r.roles),
role: r.roles_name, role: r.roles_name,
} }
}) })

@ -12,92 +12,6 @@ import { PERM_ROLE_NEW } from '@/config'
const { Title } = Typography const { Title } = Typography
const permissionData = [
{
title: '海外供应商',
value: 'oversea-0',
key: 'oversea-0',
children: [
{
title: '所有海外功能',
value: 'oversea-0-0',
key: 'oversea-0-0',
},
],
},
{
title: '机票管理',
value: '0-0',
key: '0-0',
children: [
{
title: '录入机票价格',
value: '0-0-0',
key: '0-0-0',
},
],
},
{
title: '产品管理',
value: '0-1',
key: '0-1',
children: [
{
title: '搜索供应商产品',
value: 'B-1-0',
key: 'B-1-0',
},
{
title: '录入产品价格',
value: '0-1-0',
key: '0-1-0',
},
{
title: '新增产品描述',
value: '0-1-1',
key: '0-1-1',
},
{
title: '复制供应商产品信息',
value: '0-1-2',
key: '0-1-2',
},
],
},
{
title: '账号管理',
value: '2-1',
key: '2-1',
children: [
{
title: '搜索账号',
value: '2-1-01',
key: '2-1-01',
},
{
title: '新增账号',
value: '2-1-11',
key: '2-1-11',
},
{
title: '禁用账号',
value: '2-1-21',
key: '2-1-21',
},
{
title: '重置账号密码',
value: '2-1-31',
key: '2-1-31',
},
{
title: '新增角色',
value: '2-1-41',
key: '2-1-41',
},
],
},
]
function Management() { function Management() {
const { t } = useTranslation() const { t } = useTranslation()
@ -121,8 +35,7 @@ function Management() {
}, },
{ {
title: t('account:role'), title: t('account:role'),
dataIndex: 'role', dataIndex: 'role'
render: roleRender
}, },
{ {
title: t('account:lastLogin'), title: t('account:lastLogin'),
@ -141,12 +54,6 @@ function Management() {
) )
} }
function roleRender(text) {
return (
<Button type='link' onClick={() => setRoleModalOpen(true)}>{text}</Button>
)
}
function actionRender(text, account) { function actionRender(text, account) {
return ( return (
<Space key='actionRenderSpace' size='middle'> <Space key='actionRenderSpace' size='middle'>
@ -156,28 +63,19 @@ function Management() {
) )
} }
const onPermissionChange = (newValue) => {
console.log('onChange ', newValue)
setPermissionValue(newValue)
}
const [permissionValue, setPermissionValue] = useState(['0-0-0'])
const [isAccountModalOpen, setAccountModalOpen] = useState(false) const [isAccountModalOpen, setAccountModalOpen] = useState(false)
const [isRoleModalOpen, setRoleModalOpen] = useState(false)
const [dataLoading, setDataLoading] = useState(false) const [dataLoading, setDataLoading] = useState(false)
const [roleAllList, setRoleAllList] = useState([]) const [roleAllList, setRoleAllList] = useState([])
const [accountForm] = Form.useForm() const [accountForm] = Form.useForm()
const [searchAccountByCriteria, accountList, disableAccount, selectedAccount, saveOrUpdateAccount, selectAccount] = const [searchAccountByCriteria, accountList, disableAccount, saveOrUpdateAccount, resetAccountPassword] =
useAccountStore((state) => useAccountStore((state) =>
[state.searchAccountByCriteria, state.accountList, state.disableAccount, state.selectedAccount, state.saveOrUpdateAccount, state.selectAccount]) [state.searchAccountByCriteria, state.accountList, state.disableAccount, state.saveOrUpdateAccount, state.resetAccountPassword])
const { notification, modal } = App.useApp() const { notification, modal } = App.useApp()
const onAccountSeleted = async (account) => { const onAccountSeleted = async (account) => {
accountForm.setFieldsValue(account) accountForm.setFieldsValue(account)
selectAccount(account)
console.info(account)
const roleList = await fetchRoleList() const roleList = await fetchRoleList()
setRoleAllList(roleList.map(r => { setRoleAllList(roleList.map(r => {
return { return {
@ -193,7 +91,6 @@ function Management() {
console.log(values) console.log(values)
saveOrUpdateAccount(values) saveOrUpdateAccount(values)
.catch(ex => { .catch(ex => {
console.info(ex.message)
notification.error({ notification.error({
message: 'Notification', message: 'Notification',
description: ex.message, description: ex.message,
@ -222,11 +119,21 @@ function Management() {
} }
const showResetPasswordConfirm = (account) => { const showResetPasswordConfirm = (account) => {
const randomPassword = account.username + (Math.floor(Math.random() * 900) + 100)
modal.confirm({ modal.confirm({
title: 'Do you want to reset password?', title: 'Do you want to reset password?',
icon: <ExclamationCircleFilled />, icon: <ExclamationCircleFilled />,
content: `Username: ${account.username}, Realname: ${account.realname}`, content: `Username: ${account.username}, Realname: ${account.realname}`,
onOk() { onOk() {
resetAccountPassword(account.userId, randomPassword)
.then(() => {
notification.info({
message: '新密码:' + randomPassword,
description: `请复制密码给 [${account.realname}]`,
placement: 'top',
duration: 60,
})
})
console.log('ResetPassword') console.log('ResetPassword')
}, },
onCancel() { onCancel() {
@ -263,6 +170,9 @@ function Management() {
</Form> </Form>
)} )}
> >
<Form.Item name='userId' className='hidden' ><Input /></Form.Item>
<Form.Item name='lmi_sn' className='hidden' ><Input /></Form.Item>
<Form.Item name='lmi2_sn' className='hidden' ><Input /></Form.Item>
<Form.Item <Form.Item
label={t('account:management.username')} label={t('account:management.username')}
name='username' name='username'

@ -105,7 +105,6 @@ function RoleList() {
{ {
title: t('account:rolename'), title: t('account:rolename'),
dataIndex: 'role_name', dataIndex: 'role_name',
render: roleRender
}, },
{ {
title: t('account:createdOn'), title: t('account:createdOn'),
@ -118,19 +117,12 @@ function RoleList() {
}, },
] ]
function roleRender(text, role) { function actionRender(text, role) {
if (role.role_id > 1) {
return ( return (
<Button type='link' onClick={() => onRoleSeleted(role)}>{text}</Button> <Button type='link' key='edit' onClick={() => onRoleSeleted(role)}>{t('account:action.edit')}</Button>
) )
} }
function actionRender(text, account) {
return (
<Space key='actionRenderSpace' size='middle'>
<Button type='link' key='disable' onClick={() => showDisableConfirm(account)}>{t('account:action.disable')}</Button>
<Button type='link' key='resetPassword' onClick={() => showResetPasswordConfirm(account)}>{t('account:action.resetPassword')}</Button>
</Space>
)
} }
const onPermissionChange = (newValue) => { const onPermissionChange = (newValue) => {
@ -139,10 +131,14 @@ function RoleList() {
} }
useEffect (() => { useEffect (() => {
setDataLoading(true)
fetchRoleList() fetchRoleList()
.then(r => { .then(r => {
setRoleAllList(r) setRoleAllList(r)
}) })
.finally(() => {
setDataLoading(false)
})
}, []) }, [])
const [permissionValue, setPermissionValue] = useState(['0-0-0']) const [permissionValue, setPermissionValue] = useState(['0-0-0'])
@ -151,16 +147,20 @@ function RoleList() {
const [roleAllList, setRoleAllList] = useState([]) const [roleAllList, setRoleAllList] = useState([])
const [roleForm] = Form.useForm() const [roleForm] = Form.useForm()
const [saveOrUpdateRole] = const [saveOrUpdateRole, newRole] =
useAccountStore((state) => useAccountStore((state) =>
[state.saveOrUpdateRole]) [state.saveOrUpdateRole, state.newRole])
const { notification, modal } = App.useApp() const { notification, modal } = App.useApp()
const onRoleSeleted = async (role) => { const onRoleSeleted = (role) => {
roleForm.setFieldsValue(role)
setRoleModalOpen(true)
}
const onNewRole = () => {
const role = newRole()
roleForm.setFieldsValue(role) roleForm.setFieldsValue(role)
// selectAccount(account)
// console.info(account)
setRoleModalOpen(true) setRoleModalOpen(true)
} }
@ -212,11 +212,7 @@ function RoleList() {
</Form> </Form>
)} )}
> >
<Form.Item <Form.Item name='role_id' className='hidden' ><Input /></Form.Item>
name='role_id'
>
<Input styles={{display: 'none'}} />
</Form.Item>
<Form.Item <Form.Item
label={t('account:management.roleName')} label={t('account:management.roleName')}
name='role_name' name='role_name'
@ -256,7 +252,7 @@ function RoleList() {
<Col span={24}> <Col span={24}>
<Space> <Space>
<RequireAuth subject={PERM_ROLE_NEW}> <RequireAuth subject={PERM_ROLE_NEW}>
<Button onClick={() => setRoleModalOpen(true)}>{t('account:management.newRole')}</Button> <Button onClick={() => onNewRole()}>{t('account:management.newRole')}</Button>
</RequireAuth> </RequireAuth>
</Space> </Space>
</Col> </Col>

Loading…
Cancel
Save