diff --git a/package.json b/package.json index 215fa71..b7de7e6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "moneynote-pc", - "version": "1.0.91", + "version": "1.0.92", "private": true, "scripts": { "analyze": "cross-env ANALYZE=1 max build", diff --git a/src/locales/en-US/account.ts b/src/locales/en-US/account.ts index a336480..afabf2e 100644 --- a/src/locales/en-US/account.ts +++ b/src/locales/en-US/account.ts @@ -29,5 +29,6 @@ export default { 'account.audit': 'Audit', 'currency.description': 'Description', 'currency.base': 'Base Currency', + 'currency.update': 'Change Rate', } diff --git a/src/locales/zh-CN/account.ts b/src/locales/zh-CN/account.ts index 67491c9..4977a60 100644 --- a/src/locales/zh-CN/account.ts +++ b/src/locales/zh-CN/account.ts @@ -29,5 +29,6 @@ export default { 'account.audit': '对账', 'currency.description': '描述', 'currency.base': '基准币种', + 'currency.update': '修改汇率', } diff --git a/src/pages/Currency/DataTable.jsx b/src/pages/Currency/DataTable.jsx index ff4e987..70ca02f 100644 --- a/src/pages/Currency/DataTable.jsx +++ b/src/pages/Currency/DataTable.jsx @@ -5,14 +5,20 @@ import {query1, queryAll} from '@/services/common'; import {selectSingleProp, tableProp} from '@/utils/prop'; import {tableSortFormat} from "@/utils/util"; import {refresh} from "@/services/currency"; +import RateForm from './RateForm'; import t from "@/utils/i18n"; export default () => { - const { initialState } = useModel('@@initialState'); const { data : currencyOptions = [], loading : currencyLoading, run : loadCurrencies} = useRequest(() => queryAll('currencies'), { manual: true }); const { loading : refreshCurrencyLoading, run : runRefreshCurrency} = useRequest(refresh, { manual: true }); + const { show } = useModel('modal'); + const { actionRef } = useModel('Currency.model'); + + const changeRate = (record) => { + show(, 2, record) + }; const columns = [ { @@ -32,7 +38,7 @@ export default () => { dataIndex: 'base', hideInTable: true, valueType: 'select', - initialValue: initialState.currentGroup.defaultCurrencyCode, + initialValue: 'USD', fieldProps: { ...selectSingleProp, allowClear: false, @@ -53,13 +59,32 @@ export default () => { dataIndex: 'description', hideInSearch: true, }, + { + title: t('operation'), + align: 'center', + hideInSearch: true, + width: 250, + render: (_, record) => [ + , + ], + }, ] return ( [ - , ]} diff --git a/src/pages/Currency/RateForm.jsx b/src/pages/Currency/RateForm.jsx new file mode 100644 index 0000000..a0c52a7 --- /dev/null +++ b/src/pages/Currency/RateForm.jsx @@ -0,0 +1,54 @@ +import {useEffect, useState} from "react"; +import {useModel, useRequest} from '@umijs/max'; +import {ProFormSelect, ProFormText} from '@ant-design/pro-components'; +import {requiredRules} from "@/utils/rules"; +import {queryAll, update} from "@/services/common"; +import {updateRates} from "@/services/currency"; +import {selectSingleProp} from "@/utils/prop"; +import MyModalForm from '@/components/MyModalForm'; +import t from '@/utils/i18n'; + +export default ({ item }) => { + + const { actionRef } = useModel('Currency.model'); + const { action, currentRow } = useModel('modal'); + const { data : currencyOptions = [], loading : currencyLoading, run : loadCurrencies} = useRequest(() => queryAll('currencies'), { manual: true }); + + const [initialValues, setInitialValues] = useState({}); + useEffect(() => { + setInitialValues({...currentRow}); + }, [action, currentRow]); + + const successHandler = () => { + actionRef.current?.reload(); + } + + const requestHandler = async (values) => { + await updateRates(currentRow.id, values); + } + + return ( + + + + + ); +} diff --git a/src/pages/Currency/model.js b/src/pages/Currency/model.js new file mode 100644 index 0000000..704b40d --- /dev/null +++ b/src/pages/Currency/model.js @@ -0,0 +1,9 @@ +import { useRef } from 'react'; + +export default () => { + const actionRef = useRef(); + + return { + actionRef, + }; +}; diff --git a/src/pages/Group/DataTable.jsx b/src/pages/Group/DataTable.jsx index b06323d..219306e 100644 --- a/src/pages/Group/DataTable.jsx +++ b/src/pages/Group/DataTable.jsx @@ -15,7 +15,6 @@ export default () => { const { actionRef } = useModel('Group.model'); const { show } = useModel('modal'); - const { initialState, setInitialState } = useModel('@@initialState'); function successHandler() { actionRef.current?.reload(); @@ -65,14 +64,6 @@ export default () => { const setDefaultHandler = async (record) => { await setDefaultGroup(record.id); window.location.reload(); - // const response = await initialState.fetchUserInfo(); - // setInitialState(prevState => ({ - // ...prevState, - // currentUser: response.user, - // currentBook: response.book, - // currentGroup: response.group, - // })); - // successHandler(); }; const columns = [ diff --git a/src/services/currency.js b/src/services/currency.js index 8f77318..7772f44 100644 --- a/src/services/currency.js +++ b/src/services/currency.js @@ -17,3 +17,11 @@ export async function rate(from, to) { }, }); } + +export async function updateRates(id, data) { + return request(`${prefix}/${id}/rate`, { + method: 'PUT', + data: data, + }); + +}