diff --git a/config/proxy.ts b/config/proxy.ts index 4f407c4..3bc1829 100644 --- a/config/proxy.ts +++ b/config/proxy.ts @@ -9,9 +9,9 @@ export default { dev: { // localhost:8000/api/** -> https://preview.pro.ant.design/api/** - '/admin/': { + '/tbg/api/v1': { // 要代理的地址 - target: '', + target: 'http://192.168.1.226:9999', // 配置了这个可以从 http 代理到 https // 依赖 origin 的功能可能需要这个,比如 cookie changeOrigin: true, diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index 150cbce..6a41551 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -1,5 +1,5 @@ -import React, { useCallback } from 'react'; -import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; +import React, { useState, useCallback } from 'react'; +import { LogoutOutlined, SettingOutlined, UserOutlined, EditOutlined } from '@ant-design/icons'; import { Avatar, Menu, Spin } from 'antd'; import { history } from 'umi'; import { stringify } from 'querystring'; @@ -8,6 +8,7 @@ import styles from './index.less'; import type { MenuInfo } from 'rc-menu/lib/interface'; import RoutePath from '@/routes/routePath'; import { CACHE_TOKEN } from '@/constants/cacheKey'; +import ModifyPasswordModal from '@/pages/Login/components/modifyPasswordModal'; export type GlobalHeaderRightProps = { menu?: boolean; @@ -32,8 +33,18 @@ const loginOut = async () => { }; const AvatarDropdown: React.FC = ({ menu }) => { + const [isModalVisible, setIsModalVisible] = useState(false); + + const modifyPassword = async () => { + setIsModalVisible(true); + }; + const onMenuClick = useCallback((event: MenuInfo) => { const { key } = event; + if (key === 'modify') { + modifyPassword(); + return; + } if (key === 'logout') { loginOut(); return; @@ -77,7 +88,10 @@ const AvatarDropdown: React.FC = ({ menu }) => { )} {menu && } - + + + 修改密码 + 退出登录 @@ -85,12 +99,24 @@ const AvatarDropdown: React.FC = ({ menu }) => { ); return ( - - - - {currentUser.name} - - +
+ + + + {currentUser.name} + + + +
); }; diff --git a/src/pages/Login/components/modifyPasswordModal.tsx b/src/pages/Login/components/modifyPasswordModal.tsx new file mode 100644 index 0000000..a373f38 --- /dev/null +++ b/src/pages/Login/components/modifyPasswordModal.tsx @@ -0,0 +1,65 @@ +// 创建弹窗 +import React, { useRef } from 'react'; +import { createForm } from '@formily/core'; +import { createSchemaField } from '@formily/react'; +import Modal, { ModalProps } from '@/components/Modal'; +import { Form, FormItem, Input, Select } from '@formily/antd'; +import { modifyPassword } from '@/services/login'; + +interface ModifyPasswordModalPropsType extends ModalProps { + onCancel: () => void; + onOk: () => void; +} + +const SchemaField = createSchemaField({ + components: { + FormItem, + Input, + Select, + }, +}); + +const form = createForm({}); + +const ModifyPasswordModal = ({ onOk, onCancel, ...rest }: ModifyPasswordModalPropsType) => { + const handleOk = async () => { + onOk(); + const formState = form.getFormState(); + await modifyPassword(formState.values); + }; + + const handleCancel = () => { + onCancel(); + }; + + return ( + +
+ + + + +
+
+ ); +}; + +export default ModifyPasswordModal; diff --git a/src/pages/Recharge/Address/List/components/addAddressModal.tsx b/src/pages/Recharge/Address/List/components/addAddressModal.tsx index df62cff..8853205 100644 --- a/src/pages/Recharge/Address/List/components/addAddressModal.tsx +++ b/src/pages/Recharge/Address/List/components/addAddressModal.tsx @@ -1,4 +1,4 @@ -// 创建收款地址弹窗 +// 创建弹窗 import React, { useRef } from 'react'; import { createForm } from '@formily/core'; import { createSchemaField } from '@formily/react'; diff --git a/src/pages/Recharge/Address/List/components/editAddressModal.tsx b/src/pages/Recharge/Address/List/components/editAddressModal.tsx index aca7318..07a69f9 100644 --- a/src/pages/Recharge/Address/List/components/editAddressModal.tsx +++ b/src/pages/Recharge/Address/List/components/editAddressModal.tsx @@ -1,4 +1,4 @@ -// 修改收款地址弹窗 +// 修改弹窗 import React, { useRef, useEffect } from 'react'; import { createForm } from '@formily/core'; import { createSchemaField } from '@formily/react'; diff --git a/src/pages/Recharge/CoinType/List/components/editCoinTypeModal.tsx b/src/pages/Recharge/CoinType/List/components/editCoinTypeModal.tsx index f9b7aa3..503c418 100644 --- a/src/pages/Recharge/CoinType/List/components/editCoinTypeModal.tsx +++ b/src/pages/Recharge/CoinType/List/components/editCoinTypeModal.tsx @@ -1,4 +1,4 @@ -// 修改收款地址弹窗 +// 修改弹窗 import React, { useRef, useEffect } from 'react'; import { createForm } from '@formily/core'; import { createSchemaField } from '@formily/react'; diff --git a/src/pages/Recharge/Record/List/index.tsx b/src/pages/Recharge/Record/List/index.tsx index c5b6b65..919b1ff 100644 --- a/src/pages/Recharge/Record/List/index.tsx +++ b/src/pages/Recharge/Record/List/index.tsx @@ -59,30 +59,28 @@ const RecordList = () => { }, ]; return ( -
- { - if ((params.time ?? '') !== '') { - params.start_time = params.time[0]; - params.end_time = params.time[1]; +
{ + if ((params.time ?? '') !== '') { + params.start_time = params.time[0]; + params.end_time = params.time[1]; + } + const res = await fetchTableData(getRecordList, params); + for (const key in res.data) { + if (Object.prototype.hasOwnProperty.call(res.data, key)) { + const element = res.data[key]; + element.price = getBalanceAmount( + new BigNumber(element.price), + element.decimals, + ).toNumber(); } - const res = await fetchTableData(getRecordList, params); - for (const key in res.data) { - if (Object.prototype.hasOwnProperty.call(res.data, key)) { - const element = res.data[key]; - element.price = getBalanceAmount( - new BigNumber(element.price), - element.decimals, - ).toNumber(); - } - } - return res; - }} - /> - + } + return res; + }} + /> ); }; diff --git a/src/pages/System/Account/List/index.tsx b/src/pages/System/Account/List/index.tsx index bf36d4c..65124d1 100644 --- a/src/pages/System/Account/List/index.tsx +++ b/src/pages/System/Account/List/index.tsx @@ -4,9 +4,18 @@ import { getAccountList, deleteUser } from '@/services/System/accountManage'; import { fetchTableData } from '@/utils/table'; import DeleteButton from '@/components/Table/DeleteButton'; import { Switch } from 'antd'; +import AddAccountModal from '../components/addAccountModal'; const AccountManageList = () => { - const handleEdit = (row: any) => {}; + const [isModalVisible, setIsModalVisible] = useState(false); + const [isEditModal, setIsEditModal] = useState(false); + const [modalData, setModalData] = useState({}); + + const handleEdit = (row: any) => { + setModalData(row); + setIsEditModal(true); + setIsModalVisible(true); + }; const handleDelete = async (name: any) => { await deleteUser({ name: name }); @@ -63,7 +72,9 @@ const AccountManageList = () => { toolBarActions={[ { type: 'add', - onConfirm: () => {}, + onConfirm: () => { + setIsModalVisible(true); + }, }, ]} actionRef={tableRef} @@ -72,6 +83,17 @@ const AccountManageList = () => { return res; }} /> + { + setIsModalVisible(false); + }} + /> ); }; diff --git a/src/pages/System/Account/components/addAccountModal.tsx b/src/pages/System/Account/components/addAccountModal.tsx new file mode 100644 index 0000000..97c3189 --- /dev/null +++ b/src/pages/System/Account/components/addAccountModal.tsx @@ -0,0 +1,81 @@ +// 创建弹窗 +import React, { useRef, useEffect } from 'react'; +import { createForm } from '@formily/core'; +import { createSchemaField } from '@formily/react'; +import Modal, { ModalProps } from '@/components/Modal'; +import { Form, FormItem, Input, Select } from '@formily/antd'; +import { addUser } from '@/services/System/accountManage'; + +interface AddUserModalPropsType extends ModalProps { + isEdit: boolean; + editModalData: any; + onCancel: () => void; + onOk: () => void; +} + +const SchemaField = createSchemaField({ + components: { + FormItem, + Input, + Select, + }, +}); + +const form = createForm({}); + +const AddUserModal = ({ onOk, onCancel, editModalData, ...rest }: AddUserModalPropsType) => { + useEffect(() => { + form.setInitialValues(editModalData); + }); + + const handleOk = async () => { + onOk(); + const formState = form.getFormState(); + await addUser(formState.values); + }; + + const handleCancel = () => { + onCancel(); + }; + + return ( + +
+ + + + + + +
+ ); +}; + +export default AddUserModal; diff --git a/src/pages/User/List/index.tsx b/src/pages/User/List/index.tsx index e10cc1f..dd178fc 100644 --- a/src/pages/User/List/index.tsx +++ b/src/pages/User/List/index.tsx @@ -25,23 +25,21 @@ const UserManageList = () => { }, ]; return ( -
-
{}, - }, - ]} - actionRef={tableRef} - request={async (params) => { - const res = await fetchTableData(getUserList, params); - return res; - }} - /> - +
{}, + }, + ]} + actionRef={tableRef} + request={async (params) => { + const res = await fetchTableData(getUserList, params); + return res; + }} + /> ); }; diff --git a/src/services/Recharge/address.ts b/src/services/Recharge/address.ts index 4acbba8..628296e 100644 --- a/src/services/Recharge/address.ts +++ b/src/services/Recharge/address.ts @@ -9,7 +9,7 @@ import request from '@/utils/request'; */ export const getAddressList = (params) => { return request.request({ - url: '/api/v1/address/get', + url: '/address/get', method: 'get', params, }); @@ -24,7 +24,7 @@ export const getAddressList = (params) => { */ export const createAddress = (data) => { return request.request({ - url: '/api/v1/address/make', + url: '/address/make', method: 'post', data, }); @@ -38,7 +38,7 @@ export const createAddress = (data) => { */ export const deleteAddress = (data) => { return request.request({ - url: '/api/v1/address/del', + url: '/address/del', method: 'post', data, }); @@ -54,7 +54,7 @@ export const deleteAddress = (data) => { */ export const modifyAddress = (data) => { return request.request({ - url: '/api/v1/address/del', + url: '/address/del', method: 'post', data, }); diff --git a/src/services/Recharge/coinType.ts b/src/services/Recharge/coinType.ts index 816e7d1..83c536b 100644 --- a/src/services/Recharge/coinType.ts +++ b/src/services/Recharge/coinType.ts @@ -12,7 +12,7 @@ import request from '@/utils/request'; */ export const getCoinTypeList = (params) => { return request.request({ - url: '/api/v1/token/get', + url: '/token/get', method: 'get', params, }); @@ -29,7 +29,7 @@ export const getCoinTypeList = (params) => { */ export const addCoinType = (data) => { return request.request({ - url: '/api/v1/token/make', + url: '/token/make', method: 'post', data, }); @@ -46,7 +46,7 @@ export const addCoinType = (data) => { */ export const modifyCoinType = (data) => { return request.request({ - url: '/api/v1/token/chg', + url: '/token/chg', method: 'post', data, }); diff --git a/src/services/Recharge/record.ts b/src/services/Recharge/record.ts index 09ba77b..aa99708 100644 --- a/src/services/Recharge/record.ts +++ b/src/services/Recharge/record.ts @@ -13,7 +13,7 @@ import request from '@/utils/request'; */ export const getRecordList = (data) => { return request.request({ - url: '/tgb/api/v1/recharge/record', + url: '/recharge/record', method: 'post', data, }); diff --git a/src/services/Recharge/withdraw.ts b/src/services/Recharge/withdraw.ts index 3c5f25b..a3ad27e 100644 --- a/src/services/Recharge/withdraw.ts +++ b/src/services/Recharge/withdraw.ts @@ -13,7 +13,7 @@ import request from '@/utils/request'; */ export const getWithdrawList = (params) => { return request.request({ - url: '/tgb/api/v1/withdrawal/get', + url: '/withdrawal/get', method: 'get', params, }); @@ -27,7 +27,7 @@ export const getWithdrawList = (params) => { */ export const solveWithdraw = (params) => { return request.request({ - url: '/tgb/api/v1/withdrawal/solve', + url: '/withdrawal/solve', method: 'get', params, }); diff --git a/src/services/System/accountManage.ts b/src/services/System/accountManage.ts index 140812a..fdf8dbe 100644 --- a/src/services/System/accountManage.ts +++ b/src/services/System/accountManage.ts @@ -7,12 +7,28 @@ import request from '@/utils/request'; */ export const getAccountList = (params) => { return request.request({ - url: '/tgb/api/v1/user/get', + url: '/user/get', method: 'get', params, }); }; +/** + * 添加后台用户 + * @param {object} data + * name 账号名称 + * password 密码 + * role 权限角色 + * @returns {array} data + */ +export const addUser = (data) => { + return request.request({ + url: '/user/create', + method: 'post', + data, + }); +}; + /** * 删除后台用户 * @param {object} data @@ -21,7 +37,7 @@ export const getAccountList = (params) => { */ export const deleteUser = (data) => { return request.request({ - url: '/tgb/api/v1/user/get', + url: '/user/get', method: 'post', data, }); diff --git a/src/services/System/role.ts b/src/services/System/role.ts index b07ea73..7813827 100644 --- a/src/services/System/role.ts +++ b/src/services/System/role.ts @@ -9,7 +9,7 @@ import request from '@/utils/request'; */ export const getRoleList = (params) => { return request.request({ - url: '/tgb/api/v1/user/role', + url: '/user/role', method: 'get', params, }); @@ -23,7 +23,7 @@ export const getRoleList = (params) => { */ export const deleteRole = (data) => { return request.request({ - url: '/tgb/api/v1/user/role/delete', + url: '/user/role/delete', method: 'post', data, }); diff --git a/src/services/User/user.ts b/src/services/User/user.ts index 769f116..19f5f20 100644 --- a/src/services/User/user.ts +++ b/src/services/User/user.ts @@ -9,7 +9,7 @@ import request from '@/utils/request'; */ export const getUserList = (params) => { return request.request({ - url: '/tgb/api/v1/account/get', + url: '/account/get', method: 'get', params, }); diff --git a/src/services/login.ts b/src/services/login.ts index ae0cf3e..39eace9 100644 --- a/src/services/login.ts +++ b/src/services/login.ts @@ -2,7 +2,22 @@ import request from '@/utils/request'; export const login = (data) => { return request.request({ - url: '/tbg/api/v1/admin/login', + url: '/admin/login', + method: 'post', + data, + }); +}; + +/** + * 修改用户密码 + * @param data + * password 用户旧密码 + * new_password 用户新密码 + * @returns + */ +export const modifyPassword = (data) => { + return request.request({ + url: '/admin/update', method: 'post', data, }); diff --git a/src/utils/request.ts b/src/utils/request.ts index 6664c28..4a6c46b 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -6,13 +6,13 @@ import { CACHE_TOKEN } from '@/constants/cacheKey'; // create an axios instance const request = axios.create({ - baseURL: '', // + baseURL: '/tbg/api/v1', // timeout: 10000, // request timeout }); // request interceptor request.interceptors.request.use( (memo: any) => { - memo.headers.token = localStorage.getItem(CACHE_TOKEN); + memo.headers.Authorization = localStorage.getItem(CACHE_TOKEN); return memo; }, (error) => { @@ -24,7 +24,7 @@ request.interceptors.response.use( (response) => { const res: any = response.data; if (res.code !== 200) { - if (res.code === 401) { + if (res.code === 401 || res.code === 10001) { notification.error({ message: '错误信息', description: '登录失效',