diff --git a/components.d.ts b/components.d.ts
index 521da65..ae3925a 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -51,6 +51,7 @@ declare module 'vue' {
IonTabButton: typeof import('@ionic/vue')['IonTabButton']
IonTabs: typeof import('@ionic/vue')['IonTabs']
IonText: typeof import('@ionic/vue')['IonText']
+ IonTextarea: typeof import('@ionic/vue')['IonTextarea']
IonTitle: typeof import('@ionic/vue')['IonTitle']
IonToolbar: typeof import('@ionic/vue')['IonToolbar']
LayoutDefault: typeof import('./src/components/layout/default.vue')['default']
@@ -62,12 +63,15 @@ declare module 'vue' {
UiCollapse: typeof import('./src/components/ui/collapse/index.vue')['default']
UiDatetime: typeof import('./src/components/ui/datetime/index.vue')['default']
UiDivider: typeof import('./src/components/ui/divider/index.vue')['default']
+ UiFileUpload: typeof import('./src/components/ui/file-upload/index.vue')['default']
UiInput: typeof import('./src/components/ui/input/index.vue')['default']
UiInputLabel: typeof import('./src/components/ui/input-label/index.vue')['default']
UiResult: typeof import('./src/components/ui/result/index.vue')['default']
UiTabPane: typeof import('./src/components/ui/tab-pane/index.vue')['default']
UiTabs: typeof import('./src/components/ui/tabs/index.vue')['default']
UiTag: typeof import('./src/components/ui/tag/index.vue')['default']
+ UiTextarea: typeof import('./src/components/ui/textarea/index.vue')['default']
+ UiTextareaLabel: typeof import('./src/components/ui/textarea-label/index.vue')['default']
}
}
@@ -112,6 +116,7 @@ declare global {
const IonTabButton: typeof import('@ionic/vue')['IonTabButton']
const IonTabs: typeof import('@ionic/vue')['IonTabs']
const IonText: typeof import('@ionic/vue')['IonText']
+ const IonTextarea: typeof import('@ionic/vue')['IonTextarea']
const IonTitle: typeof import('@ionic/vue')['IonTitle']
const IonToolbar: typeof import('@ionic/vue')['IonToolbar']
const LayoutDefault: typeof import('./src/components/layout/default.vue')['default']
@@ -123,10 +128,13 @@ declare global {
const UiCollapse: typeof import('./src/components/ui/collapse/index.vue')['default']
const UiDatetime: typeof import('./src/components/ui/datetime/index.vue')['default']
const UiDivider: typeof import('./src/components/ui/divider/index.vue')['default']
+ const UiFileUpload: typeof import('./src/components/ui/file-upload/index.vue')['default']
const UiInput: typeof import('./src/components/ui/input/index.vue')['default']
const UiInputLabel: typeof import('./src/components/ui/input-label/index.vue')['default']
const UiResult: typeof import('./src/components/ui/result/index.vue')['default']
const UiTabPane: typeof import('./src/components/ui/tab-pane/index.vue')['default']
const UiTabs: typeof import('./src/components/ui/tabs/index.vue')['default']
const UiTag: typeof import('./src/components/ui/tag/index.vue')['default']
+ const UiTextarea: typeof import('./src/components/ui/textarea/index.vue')['default']
+ const UiTextareaLabel: typeof import('./src/components/ui/textarea-label/index.vue')['default']
}
\ No newline at end of file
diff --git a/src/components/ui/file-upload/index.vue b/src/components/ui/file-upload/index.vue
new file mode 100644
index 0000000..4c8752b
--- /dev/null
+++ b/src/components/ui/file-upload/index.vue
@@ -0,0 +1,248 @@
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+ {{ placeholder || t('common.uploadFile') }}
+
+
+
+
+
+
+
+
+
+ {{ file.name }}
+
+
+ {{ formatFileSize(file.size) }}
+
+
+
+
+
+
+
+
+
+
+ {{ files.length }} / {{ maxFiles }} {{ t('common.files') }}
+
+
+
+
+
diff --git a/src/components/ui/textarea-label/index.vue b/src/components/ui/textarea-label/index.vue
new file mode 100644
index 0000000..2d04109
--- /dev/null
+++ b/src/components/ui/textarea-label/index.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
diff --git a/src/locales/ar.json b/src/locales/ar.json
index 67b49a0..6581d53 100644
--- a/src/locales/ar.json
+++ b/src/locales/ar.json
@@ -146,8 +146,7 @@
"productValue": "تقييم المنتج",
"enterProductValue": "الرجاء إدخال تقييم المنتج (بالدولار الأمريكي)",
"assetProof": "إثبات الأصول",
- "enterAssetProof": "الرجاء إدخال إثبات الأصول",
- "totalSupplyLimit": "الحد الأقصى لإجمالي الإصدار",
+ "enterAssetProof": "الرجاء إدخال إثبات الأصول", "uploadAssetProof": "تحميل مستندات إثبات الأصول", "totalSupplyLimit": "الحد الأقصى لإجمالي الإصدار",
"enterTotalSupplyLimit": "الرجاء إدخال الحد الأقصى لإجمالي الإصدار",
"editionName": "اسم فترة الإصدار",
"enterEditionName": "الرجاء إدخال اسم فترة الإصدار",
@@ -163,6 +162,8 @@
"enterUnitPrice": "الرجاء إدخال سعر الوحدة",
"dividendRate": "معدل الأرباح",
"enterDividendRate": "معدل الأرباح (مثل 0.01 يمثل 1٪)",
+ "description": "وصف المنتج",
+ "enterDescription": "الرجاء إدخال وصف المنتج",
"issuePeriodIndex": "فترة الإصدار {index}",
"realEstate": "العقارات",
"snickers": "الحلوى",
@@ -274,10 +275,12 @@
"chat": "الدردشة",
"user": "حسابي"
},
+ "common": {
+ "failedSendCode": "فشل إرسال رمز التحقق",
+ "uploadFile": "تحميل ملف",
+ "files": "ملفات"
+ },
"auth": {
- "common": {
- "failedSendCode": "فشل إرسال رمز التحقق."
- },
"login": {
"title": "تسجيل الدخول",
"loginButton": "تسجيل الدخول",
diff --git a/src/locales/en-US.json b/src/locales/en-US.json
index 9d399a8..4e0fd1a 100644
--- a/src/locales/en-US.json
+++ b/src/locales/en-US.json
@@ -147,6 +147,7 @@
"enterProductValue": "Please enter product valuation (USD)",
"assetProof": "Asset Proof",
"enterAssetProof": "Please enter asset proof",
+ "uploadAssetProof": "Upload Asset Proof Documents",
"totalSupplyLimit": "Total Supply Limit",
"enterTotalSupplyLimit": "Please enter total supply limit",
"editionName": "Edition Name",
@@ -163,6 +164,8 @@
"enterUnitPrice": "Please enter unit price",
"dividendRate": "Dividend Rate",
"enterDividendRate": "Dividend rate (e.g., 0.01 for 1%)",
+ "description": "Product Description",
+ "enterDescription": "Please enter product description",
"issuePeriodIndex": "Issue Period {index}",
"realEstate": "Real Estate",
"snickers": "Snickers",
@@ -274,10 +277,12 @@
"chat": "Chat",
"user": "Profile"
},
+ "common": {
+ "failedSendCode": "Failed to send verification code",
+ "uploadFile": "Upload File",
+ "files": "files"
+ },
"auth": {
- "common": {
- "failedSendCode": "Failed to send verification code"
- },
"login": {
"title": "Log in",
"loginButton": "Log in",
diff --git a/src/locales/zh-CN.json b/src/locales/zh-CN.json
index 30c8b99..42ccea3 100644
--- a/src/locales/zh-CN.json
+++ b/src/locales/zh-CN.json
@@ -147,6 +147,7 @@
"enterProductValue": "请输入产品估值(美元)",
"assetProof": "资产证明",
"enterAssetProof": "请输入资产证明",
+ "uploadAssetProof": "上传资产证明文件",
"totalSupplyLimit": "总发行量上限",
"enterTotalSupplyLimit": "请输入总发行量上限",
"editionName": "发行期名称",
@@ -163,6 +164,8 @@
"enterUnitPrice": "请输入单价",
"dividendRate": "分红率",
"enterDividendRate": "分红率(如0.01代表1%)",
+ "description": "产品描述",
+ "enterDescription": "请输入产品描述",
"issuePeriodIndex": "发行期 {index}",
"realEstate": "房地产",
"snickers": "糖果",
@@ -274,10 +277,12 @@
"chat": "聊天",
"user": "我的"
},
+ "common": {
+ "failedSendCode": "发送验证码失败",
+ "uploadFile": "上传文件",
+ "files": "个文件"
+ },
"auth": {
- "common": {
- "failedSendCode": "发送验证码失败"
- },
"login": {
"title": "登录",
"loginButton": "登录",
diff --git a/src/locales/zh-HK.json b/src/locales/zh-HK.json
index 562e2d8..b5c1049 100644
--- a/src/locales/zh-HK.json
+++ b/src/locales/zh-HK.json
@@ -147,6 +147,7 @@
"enterProductValue": "請輸入產品估值(美元)",
"assetProof": "資產證明",
"enterAssetProof": "請輸入資產證明",
+ "uploadAssetProof": "上傳資產證明文件",
"totalSupplyLimit": "總發行量上限",
"enterTotalSupplyLimit": "請輸入總發行量上限",
"editionName": "發行期名稱",
@@ -163,6 +164,8 @@
"enterUnitPrice": "請輸入單價",
"dividendRate": "分紅率",
"enterDividendRate": "分紅率(如0.01代表1%)",
+ "description": "產品描述",
+ "enterDescription": "請輸入產品描述",
"issuePeriodIndex": "發行期 {index}",
"realEstate": "房地產",
"snickers": "糖果",
@@ -274,10 +277,12 @@
"chat": "聊天",
"user": "我的"
},
+ "common": {
+ "failedSendCode": "發送驗證碼失敗",
+ "uploadFile": "上傳文件",
+ "files": "個文件"
+ },
"auth": {
- "common": {
- "failedSendCode": "發送驗證碼失敗"
- },
"login": {
"title": "登錄",
"loginButton": "登錄",
diff --git a/src/views/issue/issuing-apply/base.vue b/src/views/issue/issuing-apply/base.vue
index da57ec7..d45b2b6 100644
--- a/src/views/issue/issuing-apply/base.vue
+++ b/src/views/issue/issuing-apply/base.vue
@@ -95,19 +95,6 @@ function handleSubmit(values: GenericObject) {
-
-
-
-
-
-
-
-
-
@@ -122,6 +109,35 @@ function handleSubmit(values: GenericObject) {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ t('asset.issue.apply.next') }}
@@ -129,4 +145,12 @@ function handleSubmit(values: GenericObject) {
-
+