diff --git a/.env.test b/.env.test index d02782f..696003b 100644 --- a/.env.test +++ b/.env.test @@ -1,5 +1,5 @@ # backend service base url, test environment -VITE_SERVICE_BASE_URL=http://192.168.1.6:9528 +VITE_SERVICE_BASE_URL=http://192.168.1.17:9528 # other backend service base url, test environment VITE_OTHER_SERVICE_BASE_URL= `{}` diff --git a/package.json b/package.json index f517dc7..2a44cd7 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "@better-scroll/core": "2.5.1", "@elysiajs/eden": "^1.4.5", "@iconify/vue": "5.0.0", - "@riwa/api-types": "http://192.168.1.8:9527/api/riwa-api-types-0.0.74.tgz", + "@riwa/api-types": "http://192.168.1.17:9527/api/riwa-eden-0.0.81.tgz", "@sa/axios": "workspace:*", "@sa/color": "workspace:*", "@sa/hooks": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b906fdc..00aafaf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ importers: specifier: 5.0.0 version: 5.0.0(vue@3.5.25(typescript@5.9.3)) '@riwa/api-types': - specifier: http://192.168.1.8:9527/api/riwa-api-types-0.0.74.tgz - version: http://192.168.1.8:9527/api/riwa-api-types-0.0.74.tgz(@elysiajs/eden@1.4.5(elysia@1.4.19(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3))) + specifier: http://192.168.1.17:9527/api/riwa-eden-0.0.81.tgz + version: '@riwa/eden@http://192.168.1.17:9527/api/riwa-eden-0.0.81.tgz(@elysiajs/eden@1.4.5(elysia@1.4.19(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3)))' '@sa/axios': specifier: workspace:* version: link:packages/axios @@ -1083,9 +1083,9 @@ packages: '@quansync/fs@0.1.6': resolution: {integrity: sha512-zoA8SqQO11qH9H8FCBR7NIbowYARIPmBz3nKjgAaOUDi/xPAAu1uAgebtV7KXHTc6CDZJVRZ1u4wIGvY5CWYaw==} - '@riwa/api-types@http://192.168.1.8:9527/api/riwa-api-types-0.0.74.tgz': - resolution: {tarball: http://192.168.1.8:9527/api/riwa-api-types-0.0.74.tgz} - version: 0.0.74 + '@riwa/eden@http://192.168.1.17:9527/api/riwa-eden-0.0.81.tgz': + resolution: {tarball: http://192.168.1.17:9527/api/riwa-eden-0.0.81.tgz} + version: 0.0.81 peerDependencies: '@elysiajs/eden': ^1.4.5 @@ -5080,7 +5080,7 @@ snapshots: dependencies: quansync: 0.3.0 - '@riwa/api-types@http://192.168.1.8:9527/api/riwa-api-types-0.0.74.tgz(@elysiajs/eden@1.4.5(elysia@1.4.19(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3)))': + '@riwa/eden@http://192.168.1.17:9527/api/riwa-eden-0.0.81.tgz(@elysiajs/eden@1.4.5(elysia@1.4.19(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3)))': dependencies: '@elysiajs/eden': 1.4.5(elysia@1.4.19(@sinclair/typebox@0.34.41)(exact-mirror@0.2.5(@sinclair/typebox@0.34.41))(file-type@21.1.1)(openapi-types@12.1.3)(typescript@5.9.3)) diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 7081c62..a394810 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -245,7 +245,9 @@ const local: App.I18n.Schema = { transfer: 'Transfer', withdraw_approved: 'Approved Withdraw', asset: 'Asset Management', - tradingpairs: 'Trading Pairs Management' + tradingpairs: 'Trading Pairs Management', + tokenization: 'Tokenization Management', + tokenization_product: 'Tokenization Product' }, page: { login: { diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index 1565ca4..27c829d 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -241,7 +241,9 @@ const local: App.I18n.Schema = { user_transfer: '用户转账记录', transfer: '转账管理', asset: '资产管理', - tradingpairs: '交易对管理' + tradingpairs: '交易对管理', + tokenization: '代币化管理', + tokenization_product: '代币化产品' }, page: { login: { diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index e9e6e34..62c424f 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -26,6 +26,7 @@ export const views: Record Promise import("@/views/rwa/product/index.vue"), rwa_producttype: () => import("@/views/rwa/productType/index.vue"), rwa_subscribe: () => import("@/views/rwa/subscribe/index.vue"), + tokenization_product: () => import("@/views/tokenization/product/index.vue"), tradingpairs: () => import("@/views/tradingPairs/index.vue"), transfer: () => import("@/views/transfer/index.vue"), user_bank: () => import("@/views/user/bank/index.vue"), diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index 14cfd7f..dd8e615 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -39,6 +39,17 @@ export const generatedRoutes: GeneratedRoute[] = [ hideInMenu: true } }, + { + name: 'home', + path: '/home', + component: 'layout.base$view.home', + meta: { + title: 'home', + i18nKey: 'route.home', + icon: 'mdi:monitor-dashboard', + order: 1 + } + }, { name: 'asset', path: '/asset', @@ -46,8 +57,66 @@ export const generatedRoutes: GeneratedRoute[] = [ meta: { title: 'asset', i18nKey: 'route.asset', - order: 5 + order: 2 } + }, + { + name: 'transfer', + path: '/transfer', + component: 'layout.base$view.transfer', + meta: { + title: 'transfer', + i18nKey: 'route.transfer', + order: 3 + } + }, + { + name: 'user', + path: '/user', + component: 'layout.base', + meta: { + title: 'user', + i18nKey: 'route.user', + order: 4 + }, + children: [ + { + name: 'user_bank', + path: '/user/bank', + component: 'view.user_bank', + meta: { + title: 'user_bank', + i18nKey: 'route.user_bank' + } + }, + { + name: 'user_bankcard', + path: '/user/bankcard', + component: 'view.user_bankcard', + meta: { + title: 'user_bankcard', + i18nKey: 'route.user_bankcard' + } + }, + { + name: 'user_list', + path: '/user/list', + component: 'view.user_list', + meta: { + title: 'user_list', + i18nKey: 'route.user_list' + } + }, + { + name: 'user_transfer', + path: '/user/transfer', + component: 'view.user_transfer', + meta: { + title: 'user_transfer', + i18nKey: 'route.user_transfer' + } + } + ] }, { name: 'deposit', @@ -56,7 +125,7 @@ export const generatedRoutes: GeneratedRoute[] = [ meta: { title: 'deposit', i18nKey: 'route.deposit', - order: 2 + order: 5 }, children: [ { @@ -70,17 +139,6 @@ export const generatedRoutes: GeneratedRoute[] = [ } ] }, - { - name: 'home', - path: '/home', - component: 'layout.base$view.home', - meta: { - title: 'home', - i18nKey: 'route.home', - icon: 'mdi:monitor-dashboard', - order: 1 - } - }, { name: 'iframe-page', path: '/iframe-page/:url', @@ -145,6 +203,27 @@ export const generatedRoutes: GeneratedRoute[] = [ } ] }, + { + name: 'tokenization', + path: '/tokenization', + component: 'layout.base', + meta: { + title: '代币化管理', + i18nKey: 'route.tokenization', + order: 6 + }, + children: [ + { + name: 'tokenization_product', + path: '/tokenization/product', + component: 'view.tokenization_product', + meta: { + title: '代币化产品', + i18nKey: 'route.tokenization_product' + } + } + ] + }, { name: 'tradingpairs', path: '/tradingpairs', @@ -152,67 +231,11 @@ export const generatedRoutes: GeneratedRoute[] = [ meta: { title: 'tradingpairs', i18nKey: 'route.tradingpairs', - order: 6 + order: 7 } }, - { - name: 'transfer', - path: '/transfer', - component: 'layout.base$view.transfer', - meta: { - title: 'transfer', - i18nKey: 'route.transfer', - order: 5 - } - }, - { - name: 'user', - path: '/user', - component: 'layout.base', - meta: { - title: 'user', - i18nKey: 'route.user', - order: 2 - }, - children: [ - { - name: 'user_bank', - path: '/user/bank', - component: 'view.user_bank', - meta: { - title: 'user_bank', - i18nKey: 'route.user_bank' - } - }, - { - name: 'user_bankcard', - path: '/user/bankcard', - component: 'view.user_bankcard', - meta: { - title: 'user_bankcard', - i18nKey: 'route.user_bankcard' - } - }, - { - name: 'user_list', - path: '/user/list', - component: 'view.user_list', - meta: { - title: 'user_list', - i18nKey: 'route.user_list' - } - }, - { - name: 'user_transfer', - path: '/user/transfer', - component: 'view.user_transfer', - meta: { - title: 'user_transfer', - i18nKey: 'route.user_transfer' - } - } - ] - }, + + { name: 'withdraw', path: '/withdraw', diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index 95eea82..d233542 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -176,6 +176,8 @@ const routeMap: RouteMap = { "rwa_product": "/rwa/product", "rwa_producttype": "/rwa/producttype", "rwa_subscribe": "/rwa/subscribe", + "tokenization": "/tokenization", + "tokenization_product": "/tokenization/product", "tradingpairs": "/tradingpairs", "transfer": "/transfer", "user": "/user", diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts index f24f310..96dc70b 100644 --- a/src/typings/elegant-router.d.ts +++ b/src/typings/elegant-router.d.ts @@ -30,6 +30,8 @@ declare module "@elegant-router/types" { "rwa_product": "/rwa/product"; "rwa_producttype": "/rwa/producttype"; "rwa_subscribe": "/rwa/subscribe"; + "tokenization": "/tokenization"; + "tokenization_product": "/tokenization/product"; "tradingpairs": "/tradingpairs"; "transfer": "/transfer"; "user": "/user"; @@ -80,6 +82,7 @@ declare module "@elegant-router/types" { | "iframe-page" | "login" | "rwa" + | "tokenization" | "tradingpairs" | "transfer" | "user" @@ -111,6 +114,7 @@ declare module "@elegant-router/types" { | "rwa_product" | "rwa_producttype" | "rwa_subscribe" + | "tokenization_product" | "tradingpairs" | "transfer" | "user_bank" diff --git a/src/views/rwa/product/components/tokenization.vue b/src/views/rwa/product/components/tokenization.vue new file mode 100644 index 0000000..dd9595b --- /dev/null +++ b/src/views/rwa/product/components/tokenization.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/src/views/rwa/product/index.vue b/src/views/rwa/product/index.vue index fcb5ab4..1d98964 100644 --- a/src/views/rwa/product/index.vue +++ b/src/views/rwa/product/index.vue @@ -8,6 +8,7 @@ import { RwaStatusEnum } from '@/enum'; import Add from './components/add.vue'; import Edit from './components/edit.vue'; import Editions from './components/editions.vue'; +import Tokenization from './components/tokenization.vue'; const dialog = useDialog(); const message = useMessage(); @@ -214,21 +215,18 @@ const filterColumns: TableFilterColumns = [ ]; function handleTokenization(row: any) { - dialog.create({ + const dialogInstance = dialog.create({ title: '代币化产品', - content: '确认将该产品代币化吗?', - positiveText: '确认', - negativeText: '取消', - onPositiveClick: async () => { - await safeClient(() => - client.api.admin.rwa.tokenization.issue.post({ - assetCode: row.code, - productId: row.id, - totalSupply: row.estimatedValue - }) - ); - tableInst.value?.reload(); - } + content: () => + h(Tokenization, { + data: row, + onClose: () => { + dialogInstance.destroy(); + tableInst.value?.reload(); + } + }), + style: { width: '600px' }, + showIcon: false }); } diff --git a/src/views/tokenization/product/index.vue b/src/views/tokenization/product/index.vue new file mode 100644 index 0000000..7aea776 --- /dev/null +++ b/src/views/tokenization/product/index.vue @@ -0,0 +1,70 @@ + + + + +