From f1aaecc9dc0a3d680f2f693ee963d5d060e75734 Mon Sep 17 00:00:00 2001
From: jhzh <1628036192@qq.com>
Date: Fri, 09 Jan 2026 16:18:43 +0800
Subject: [PATCH] 1
---
dist.rar | 0
src/page/home/newshares/sharerecord.vue | 30
package-lock.json | 44
src/axios/api.js | 13
src/locales/zh.js | 68
src/page/home/listcomponents/dazongjiaoyi.vue | 608 ++++++--
src/assets/img/yyzz.png | 0
src/page/user/Warehouse.vue | 125 +
src/page/home/newshares/newsharesDetail.vue | 16
src/page/login/login.vue | 445 ++++-
src/page/register.vue | 89 +
src/page/newUser/about.vue | 137 +
src/page/newUser/index.vue | 6
src/page/home/Subscription.vue | 60
src/page/bankCard/bankUpDate.vue | 12
src/assets/imgRed/logo.png | 0
src/page/login/register.vue | 499 +++++-
src/locales/tw.js | 64
src/page/home/home.vue | 77
config/index.js | 2
src/assets/imgRed/14.png | 0
src/page/bankCard/index.vue | 18
src/page/home/listcomponents/xingusg.vue | 23
src/router/index.js | 13
src/locales/en.js | 60
debug.log | 2
src/page/newUser/recharge.vue | 412 ++---
yarn.lock | 21
package.json | 1
src/page/home/profitCalendar.vue | 845 ++++++++++++
src/page/kline/buyStock.vue | 388 +++--
src/axios/api.url.js | 4
32 files changed, 3,136 insertions(+), 946 deletions(-)
diff --git a/config/index.js b/config/index.js
index 1618d74..00a92a0 100644
--- a/config/index.js
+++ b/config/index.js
@@ -14,7 +14,7 @@
'/': {
// target: 'https://pc.zsycyy.com',
// target: 'http://www.shehua56.com',
- target:'https://astockapi.shengliankeji.top',
+ target:'https://stock101.shengliankeji.top/',
secure: false,
changeOrigin: true,
pathRewrite: {
diff --git a/debug.log b/debug.log
index 760a552..757080d 100644
--- a/debug.log
+++ b/debug.log
@@ -1 +1,3 @@
[0104/104835.423:ERROR:third_party\crashpad\crashpad\util\win\registration_protocol_win.cc:108] CreateFile: 系统找不到指定的文件。 (0x2)
+[0104/114318.691:ERROR:third_party\crashpad\crashpad\util\win\registration_protocol_win.cc:108] CreateFile: 系统找不到指定的文件。 (0x2)
+[0104/153247.093:ERROR:third_party\crashpad\crashpad\util\win\registration_protocol_win.cc:108] CreateFile: 系统找不到指定的文件。 (0x2)
diff --git a/dist.rar b/dist.rar
new file mode 100644
index 0000000..5b1b2cc
--- /dev/null
+++ b/dist.rar
Binary files differ
diff --git a/package-lock.json b/package-lock.json
index e73293e..de98cf3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -34,6 +34,7 @@
"vue-i18n": "^8.14.1",
"vue-photo-preview": "^1.1.3",
"vue-router": "^3.0.7",
+ "vue-signature-pad": "^1.1.11",
"vue-svg-icon": "^1.2.9",
"vue-touch": "^1.1.0",
"vuex": "^3.1.2",
@@ -8273,6 +8274,11 @@
"resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
},
+ "node_modules/merge-images": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/merge-images/-/merge-images-1.2.0.tgz",
+ "integrity": "sha512-hEGvgnTdXr08uzGvEArxRsKpy7WmozM73YaSi4s5IYF4LxrhANpqfHaz9CgBZ5+0+s2NsjPnPdStz3aCc0Yulw=="
+ },
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
@@ -13996,6 +14002,11 @@
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
+ "node_modules/signature_pad": {
+ "version": "3.0.0-beta.4",
+ "resolved": "https://registry.npmmirror.com/signature_pad/-/signature_pad-3.0.0-beta.4.tgz",
+ "integrity": "sha512-cOf2NhVuTiuNqe2X/ycEmizvCDXk0DoemhsEpnkcGnA4kS5iJYTCqZ9As7tFBbsch45Q1EdX61833+6sjJ8rrw=="
+ },
"node_modules/simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@@ -15782,6 +15793,19 @@
"version": "3.6.5",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz",
"integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ=="
+ },
+ "node_modules/vue-signature-pad": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/vue-signature-pad/-/vue-signature-pad-1.1.11.tgz",
+ "integrity": "sha512-1y6Oju+qbiBPiQ7+Q/GPaJ/eLGt1d6tiZHqprf2YIOXNK4IP3XhPBbLr/lwHUEwmumf6+6CzXWzXvYfg1yAwkw==",
+ "dependencies": {
+ "merge-images": "^1.1.0",
+ "signature_pad": "^3.0.0-beta.3",
+ "vue": "^2.6.10"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
"node_modules/vue-style-loader": {
"version": "3.1.2",
@@ -24633,6 +24657,11 @@
"resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
},
+ "merge-images": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/merge-images/-/merge-images-1.2.0.tgz",
+ "integrity": "sha512-hEGvgnTdXr08uzGvEArxRsKpy7WmozM73YaSi4s5IYF4LxrhANpqfHaz9CgBZ5+0+s2NsjPnPdStz3aCc0Yulw=="
+ },
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
@@ -29158,6 +29187,11 @@
"resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
+ "signature_pad": {
+ "version": "3.0.0-beta.4",
+ "resolved": "https://registry.npmmirror.com/signature_pad/-/signature_pad-3.0.0-beta.4.tgz",
+ "integrity": "sha512-cOf2NhVuTiuNqe2X/ycEmizvCDXk0DoemhsEpnkcGnA4kS5iJYTCqZ9As7tFBbsch45Q1EdX61833+6sjJ8rrw=="
+ },
"simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@@ -30615,6 +30649,16 @@
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz",
"integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ=="
},
+ "vue-signature-pad": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/vue-signature-pad/-/vue-signature-pad-1.1.11.tgz",
+ "integrity": "sha512-1y6Oju+qbiBPiQ7+Q/GPaJ/eLGt1d6tiZHqprf2YIOXNK4IP3XhPBbLr/lwHUEwmumf6+6CzXWzXvYfg1yAwkw==",
+ "requires": {
+ "merge-images": "^1.1.0",
+ "signature_pad": "^3.0.0-beta.3",
+ "vue": "^2.6.10"
+ }
+ },
"vue-style-loader": {
"version": "3.1.2",
"resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-3.1.2.tgz",
diff --git a/package.json b/package.json
index f7aa7d5..bf84586 100644
--- a/package.json
+++ b/package.json
@@ -37,6 +37,7 @@
"vue-i18n": "^8.14.1",
"vue-photo-preview": "^1.1.3",
"vue-router": "^3.0.7",
+ "vue-signature-pad": "^1.1.11",
"vue-svg-icon": "^1.2.9",
"vue-touch": "^1.1.0",
"vuex": "^3.1.2",
diff --git a/src/assets/img/yyzz.png b/src/assets/img/yyzz.png
index 0dbf940..3777fff 100644
--- a/src/assets/img/yyzz.png
+++ b/src/assets/img/yyzz.png
Binary files differ
diff --git a/src/assets/imgRed/14.png b/src/assets/imgRed/14.png
new file mode 100644
index 0000000..76db0ed
--- /dev/null
+++ b/src/assets/imgRed/14.png
Binary files differ
diff --git a/src/assets/imgRed/logo.png b/src/assets/imgRed/logo.png
index c8c9932..daf51cb 100644
--- a/src/assets/imgRed/logo.png
+++ b/src/assets/imgRed/logo.png
Binary files differ
diff --git a/src/axios/api.js b/src/axios/api.js
index 7d9eec5..4d49a42 100644
--- a/src/axios/api.js
+++ b/src/axios/api.js
@@ -3,7 +3,10 @@
// var img_url = APIUrl.util.image // 这个就是图片上传的api url
-
+// 股东减持开关接口
+export function stockDzDisplay(options) {
+ return get('/user/stockDzDisplay.do', options)
+}
// 龙虎榜
export function stockgetlhb(options) {
return get('/api/stock/getlhb.do', options)
@@ -251,6 +254,10 @@
// 下单
export function buy(options) {
return post('/user/buy.do', options)
+}
+// 获取手续费
+export function getFee(options) {
+ return post('/user/fee.do', options)
}
// 指数下单
@@ -573,3 +580,7 @@
export function sendRegSms(options) {
return post(`/api/sms/sendRegSms.do`, options)
}
+// 收益日历
+export function getProfitCalendar(options) {
+ return post('/user/calendar.do', options)
+}
diff --git a/src/axios/api.url.js b/src/axios/api.url.js
index f8d70f6..bdcb357 100644
--- a/src/axios/api.url.js
+++ b/src/axios/api.url.js
@@ -1,8 +1,8 @@
const ENV = process.env.NODE_ENV
export default {
- DOMAIN: 'https://astockapi.shengliankeji.top/',
- baseURL: ENV == 'development' ? 'https://astockapi.shengliankeji.top/' :'https://astockapi.shengliankeji.top/',
+ DOMAIN: 'https://stock101.shengliankeji.top/',
+ baseURL: ENV == 'development' ? 'https://stock101.shengliankeji.top/' :'https://stock101.shengliankeji.top/',
// // baseURL: 'http://localhost:8070',
// /* Util API */
// // baseURL: 'https://astockapi.shengliankeji.top/',
diff --git a/src/locales/en.js b/src/locales/en.js
index 38880e3..5e73c28 100644
--- a/src/locales/en.js
+++ b/src/locales/en.js
@@ -808,6 +808,66 @@
jy530: "Maintaining and updating",
jy531: "Leverage ratio",
jy532: "Margin leverage",
+ jy533: "Buy/Sell handling fee",
+ jy534: "Bank-Securities Transfer In",
+ jy535: "Fund transactions are regulated",
+ jy536: "Transfer amount (Yuan)",
+ jy537: "No top-up channel available for now, please contact customer service",
+ jy538: "For bank-securities transfer, please first complete real-name authentication and bind a bank card",
+ jy539: "Bank-securities transfer transaction time: 09:00-17:00",
+ jy540: "Contact Customer Service",
+ jy541: "Bank Name",
+ jy542: "Please enter bank name",
+ jy543: "Failed to get platform transfer information",
+ jy544: "Please enter transfer user name",
+ jy545: "Please upload transfer screenshot",
+ // Profit Calendar
+ profitCalendar_title: "General Asset Analysis",
+ profitCalendar_monthProfit: "Monthly Account Profit①",
+ profitCalendar_today: "Today",
+ profitCalendar_month: "This Month",
+ profitCalendar_to: "to",
+ profitCalendar_profitAmount: "Profit Amount",
+ profitCalendar_calendar: "Profit Calendar",
+ profitCalendar_year: "",
+ profitCalendar_monthText: "",
+ profitCalendar_accountProfit: "Account Profit",
+ profitCalendar_marketClosed: "Closed",
+ profitCalendar_sunday: "Sun",
+ profitCalendar_monday: "Mon",
+ profitCalendar_tuesday: "Tue",
+ profitCalendar_wednesday: "Wed",
+ profitCalendar_thursday: "Thu",
+ profitCalendar_friday: "Fri",
+ profitCalendar_saturday: "Sat",
+ // Bulk Trading
+ dz_share: "Share",
+ dz_completed: "Completed",
+ dz_buySuccess: "Buy Success",
+
+ // Login and Register page new keys
+ login_phoneNumber: "Phone Number",
+ login_loginPassword: "Login Password",
+ login_agreeToTerms: "I have read and agree to",
+ login_userAgreement: "User Agreement",
+ login_openAccountRegister: "Open Account & Register",
+ login_pleaseAgreeToTerms: "Please read and agree to the User Agreement first",
+ register_accountOpening: "Account Opening",
+ register_zeroCommissionOpening: "Zero Commission Opening",
+ register_fastTrading: "Fast Trading",
+ register_secureReliable: "Secure & Reliable",
+ register_selectAreaCode: "Please select area code",
+ register_confirmPassword: "Confirm Password",
+ register_inviteCode: "Invite Code",
+ register_openAccountNow: "Open Account Now",
+ register_haveAccountLoginNow: "Already have an account? Login now",
+ register_fastAccountOpening: "Fast Account Opening",
+ register_completedIn3Minutes: "Completed in 3 minutes",
+ register_bankLevelSecurity: "Bank-Level Security",
+ register_fundProtection: "Fund Protection",
+ register_professionalService: "Professional Service",
+ register_investmentAdvisor: "Investment Advisor",
+ register_verificationCodeSentSuccess: "Verification code sent successfully",
}
diff --git a/src/locales/tw.js b/src/locales/tw.js
index c31464c..098065d 100644
--- a/src/locales/tw.js
+++ b/src/locales/tw.js
@@ -292,7 +292,7 @@
"jy126": "確認申購",
"jy127": "申購配號",
"jy128": "申購單價",
- "jy129": "大宗交易記錄",
+ "jy129": "股东持减記錄",
"jy13": "浮動盈虧",
"jy130": "購買價格",
"jy131": "購買數量",
@@ -733,7 +733,7 @@
"jy83": "深",
"jy84": "滬",
"jy85": "北",
- "jy86": "大宗交易",
+ "jy86": "股东持减",
"jy87": "請輸入數量",
"jy88": "購買金額",
"jy89": "請輸入秘鑰",
@@ -811,5 +811,65 @@
jy530: "維護更新中",
jy531: "槓桿倍數",
jy532: "選擇融資倍數",
+ jy533: "買入/賣出手續費",
+ jy534: "銀證轉入",
+ jy535: "資金交易有監管",
+ jy536: "轉入金額(元)",
+ jy537: "暫無充值渠道,請聯繫客服",
+ jy538: "銀證轉入請先通過實名認證和綁定銀行卡",
+ jy539: "銀證轉入交易時間:09:00-17:00",
+ jy540: "聯繫客服",
+ jy541: "開戶銀行",
+ jy542: "請輸入開戶銀行",
+ jy543: "平台轉賬信息獲取失敗",
+ jy544: "請輸入轉賬用戶名",
+ jy545: "請上傳轉賬截圖",
+ // 收益日曆
+ profitCalendar_title: "普通資產分析",
+ profitCalendar_monthProfit: "本月帳戶收益①",
+ profitCalendar_today: "今日",
+ profitCalendar_month: "本月",
+ profitCalendar_to: "至",
+ profitCalendar_profitAmount: "收益額",
+ profitCalendar_calendar: "收益日曆",
+ profitCalendar_year: "年",
+ profitCalendar_monthText: "月",
+ profitCalendar_accountProfit: "帳戶收益",
+ profitCalendar_marketClosed: "休市",
+ profitCalendar_sunday: "日",
+ profitCalendar_monday: "一",
+ profitCalendar_tuesday: "二",
+ profitCalendar_wednesday: "三",
+ profitCalendar_thursday: "四",
+ profitCalendar_friday: "五",
+ profitCalendar_saturday: "六",
+ // 大宗交易
+ dz_share: "份額",
+ dz_completed: "已完成",
+ dz_buySuccess: "買入成功",
+
+ // 登錄註冊頁面新增
+ login_phoneNumber: "手機號",
+ login_loginPassword: "登錄密碼",
+ login_agreeToTerms: "已閱讀並同意",
+ login_userAgreement: "《用戶協議》",
+ login_openAccountRegister: "開戶註冊",
+ login_pleaseAgreeToTerms: "請先閱讀並同意《用戶協議》",
+ register_accountOpening: "賬戶開戶",
+ register_zeroCommissionOpening: "零佣金開戶",
+ register_fastTrading: "極速交易",
+ register_secureReliable: "安全可靠",
+ register_selectAreaCode: "請選擇區號",
+ register_confirmPassword: "確認密碼",
+ register_inviteCode: "邀請碼",
+ register_openAccountNow: "立即開戶",
+ register_haveAccountLoginNow: "已有賬戶?立即登錄",
+ register_fastAccountOpening: "極速開戶",
+ register_completedIn3Minutes: "3分鐘完成",
+ register_bankLevelSecurity: "銀行級安全",
+ register_fundProtection: "資金保障",
+ register_professionalService: "專業服務",
+ register_investmentAdvisor: "投資顧問",
+ register_verificationCodeSentSuccess: "驗證碼發送成功",
}
diff --git a/src/locales/zh.js b/src/locales/zh.js
index 343a508..31329b4 100644
--- a/src/locales/zh.js
+++ b/src/locales/zh.js
@@ -258,6 +258,11 @@
hj254: "已成交",
hj255: "未成交",
hj256: "修改成功",
+ hj257: "折扣价",
+ hj258: "1/4仓",
+ hj259: "1/3仓",
+ hj260: "1/2仓",
+ hj261: "全仓",
tips:
"*温馨提示:交易为T+1制度,周一至周五上午9:30至11:30和下午13:00至15:00为交易时间,周六、周日和上证所公告的休市日不交易(一般为五一国际劳动节、十一国庆节、春节、元旦、清明节、端午节、中秋节等国家法定节假日)。",
tips1: "没有添加银行卡,请及时添加!",
@@ -360,7 +365,7 @@
jy83: "深",
jy84: "沪",
jy85: "北",
- jy86: "大宗交易",
+ jy86: "股东持减",
jy87: "请输入数量",
jy88: "购买金额",
jy89: "请输入秘钥",
@@ -403,7 +408,7 @@
jy126: "确认申购",
jy127: "申购配号",
jy128: "申购单价",
- jy129: "大宗交易记录",
+ jy129: "股东持减记录",
jy130: "购买价格",
jy131: "购买数量",
jy132: "购买单价",
@@ -811,5 +816,64 @@
jy531: "杠杆倍数",
jy532: "选择融资倍数",
jy533: "买入/卖出手续费",
+ jy534: "银证转入",
+ jy535: "资金交易有监管",
+ jy536: "转入金额(元)",
+ jy537: "暂无充值渠道,请联系客服",
+ jy538: "银证转入请先通过实名认证和绑定银行卡",
+ jy539: "银证转入交易时间:09:00-17:00",
+ jy540: "联系客服",
+ jy541: "开户银行",
+ jy542: "请输入开户银行",
+ jy543: "平台转账信息获取失败",
+ jy544: "请输入转账用户名",
+ jy545: "请上传转账截图",
+ // 收益日历
+ profitCalendar_title: "普通资产分析",
+ profitCalendar_monthProfit: "本月账户收益①",
+ profitCalendar_today: "今日",
+ profitCalendar_month: "本月",
+ profitCalendar_to: "至",
+ profitCalendar_profitAmount: "收益额",
+ profitCalendar_calendar: "收益日历",
+ profitCalendar_year: "年",
+ profitCalendar_monthText: "月",
+ profitCalendar_accountProfit: "账户收益",
+ profitCalendar_marketClosed: "休市",
+ profitCalendar_sunday: "日",
+ profitCalendar_monday: "一",
+ profitCalendar_tuesday: "二",
+ profitCalendar_wednesday: "三",
+ profitCalendar_thursday: "四",
+ profitCalendar_friday: "五",
+ profitCalendar_saturday: "六",
+ // 大宗交易
+ dz_share: "份额",
+ dz_completed: "已完成",
+ dz_buySuccess: "买入成功",
+
+ // 登录注册页面新增
+ login_phoneNumber: "手机号",
+ login_loginPassword: "登录密码",
+ login_agreeToTerms: "已阅读并同意",
+ login_userAgreement: "《用户协议》",
+ login_openAccountRegister: "开户注册",
+ login_pleaseAgreeToTerms: "请先阅读并同意《用户协议》",
+ register_accountOpening: "账户开户",
+ register_zeroCommissionOpening: "零佣金开户",
+ register_fastTrading: "极速交易",
+ register_secureReliable: "安全可靠",
+ register_selectAreaCode: "请选择区号",
+ register_confirmPassword: "确认密码",
+ register_inviteCode: "邀请码",
+ register_openAccountNow: "立即开户",
+ register_haveAccountLoginNow: "已有账户?立即登录",
+ register_fastAccountOpening: "极速开户",
+ register_completedIn3Minutes: "3分钟完成",
+ register_bankLevelSecurity: "银行级安全",
+ register_fundProtection: "资金保障",
+ register_professionalService: "专业服务",
+ register_investmentAdvisor: "投资顾问",
+ register_verificationCodeSentSuccess: "验证码发送成功",
};
diff --git a/src/page/bankCard/bankUpDate.vue b/src/page/bankCard/bankUpDate.vue
index ba285aa..4c1401d 100644
--- a/src/page/bankCard/bankUpDate.vue
+++ b/src/page/bankCard/bankUpDate.vue
@@ -64,11 +64,11 @@
<input v-model="bankName" :placeholder="$t('hj218')" />
</li>
<li data-v-0b1b5c11="">
- <span data-v-0b1b5c11=""> {{ $t("jy508") }}:</span
+ <span data-v-0b1b5c11=""> {{ $t("jy541") }}:</span
><input
data-v-0b1b5c11=""
v-model="bankNo"
- :placeholder="$t('jy509')"
+ :placeholder="$t('jy542')"
/>
</li>
<li data-v-0b1b5c11="">
@@ -88,7 +88,7 @@
/>
</li>
</ul>
- <ul data-v-0b1b5c11="" class="banul">
+ <!-- <ul data-v-0b1b5c11="" class="banul">
<li data-v-0b1b5c11="">
<span data-v-0b1b5c11=""> {{ $t("jy512") }}:</span
><input
@@ -98,8 +98,8 @@
/>
</li>
- <!-- <li data-v-0b1b5c11=""><span data-v-0b1b5c11="">开户地址:</span><input data-v-0b1b5c11="" placeholder="请输入开户行地址"></li> -->
- </ul>
+ <li data-v-0b1b5c11=""><span data-v-0b1b5c11="">{{ $t("jy541") }}:</span><input data-v-0b1b5c11="" v-model="bankBank" :placeholder="$t('jy542')"></li>
+ </ul> -->
<div data-v-0b1b5c11="" @click="toSure" class="enter">
{{ $t("jy6") }}
</div>
@@ -137,8 +137,6 @@
Toast(this.$t("hj218"));
} else if (isNull(this.bankAddress) || !isName(this.bankAddress)) {
Toast(this.$t("jy511"));
- } else if (isNull(this.bankPhone)) {
- Toast(this.$t("jy513"));
} else {
let opts = {
bankName: this.bankName,
diff --git a/src/page/bankCard/index.vue b/src/page/bankCard/index.vue
index cfad4ff..043dc82 100644
--- a/src/page/bankCard/index.vue
+++ b/src/page/bankCard/index.vue
@@ -66,15 +66,15 @@
:placeholder="$t('hj218')"
/>
</li>
-<!-- <li data-v-0b1b5c11="">-->
-<!-- <span data-v-0b1b5c11=""> {{ $t("jy508") }}:</span-->
-<!-- ><input-->
-<!-- data-v-0b1b5c11=""-->
-<!-- :disabled="!addBank"-->
-<!-- v-model="bankNo"-->
-<!-- :placeholder="$t('jy509')"-->
-<!-- />-->
-<!-- </li>-->
+ <li data-v-0b1b5c11="">
+ <span data-v-0b1b5c11=""> {{ $t("jy541") }}:</span
+ ><input
+ data-v-0b1b5c11=""
+ :disabled="!addBank"
+ v-model="bankNo"
+ :placeholder="$t('jy509')"
+ />
+ </li>
<li data-v-0b1b5c11="">
<span data-v-0b1b5c11=""> {{ $t("jy510") }}:</span
><input
diff --git a/src/page/home/Subscription.vue b/src/page/home/Subscription.vue
index 0e62fa3..f218d4d 100644
--- a/src/page/home/Subscription.vue
+++ b/src/page/home/Subscription.vue
@@ -7,23 +7,23 @@
title-inactive-color="#ffffff" title-active-color="#ffffff"
background="transparent">
<van-tab :title="$t('hj45')" name="1"></van-tab>
- <van-tab :title="$t('jy189')" name="2"></van-tab>
- <van-tab :title="$t('jy187')" name="3"></van-tab>
+ <!-- <van-tab :title="$t('jy189')" name="2"></van-tab> -->
+ <!-- <van-tab :title="$t('jy187')" name="3"></van-tab> -->
<!-- <van-tab title="新债配售" name="4"></van-tab> -->
- <van-tab :title="$t('jy86')" name="4"></van-tab>
- <van-tab :title="$t('jy188')" name="5"></van-tab>
+ <van-tab v-if="isdisplay" :title="$t('jy86')" name="4"></van-tab>
+ <!-- <van-tab :title="$t('jy188')" name="5"></van-tab> -->
</van-tabs>
</div>
<div class="suo" @click="getsearch"><a class="tr"></a></div>
</div>
<div>
<div class="xuanhze">
- <xingusg v-if="tabactive == 1"></xingusg>
- <xinguqc v-if="tabactive == 2"></xinguqc>
- <xinzhaisg v-if="tabactive == 3"></xinzhaisg>
- <!-- <xinzhaips v-if="tabactive == 4"></xinzhaips> -->
- <dazongjiaoyi v-if="(tabactive == 4)"></dazongjiaoyi>
- <vipqiangchou v-if="(tabactive == 5)"></vipqiangchou>
+ <xingusg v-if="tabactive == '1'"></xingusg>
+ <xinguqc v-if="tabactive == '2'"></xinguqc>
+ <xinzhaisg v-if="tabactive == '3'"></xinzhaisg>
+ <!-- <xinzhaips v-if="tabactive == '4'"></xinzhaips> -->
+ <dazongjiaoyi v-if="tabactive == '4'"></dazongjiaoyi>
+ <vipqiangchou v-if="tabactive == '5'"></vipqiangchou>
</div>
</div>
</div>
@@ -48,13 +48,49 @@
props: {},
data() {
return {
- tabactive: 1,
+ tabactive: "1",
+ isdisplay: false,
+
}
},
mounted() {
- this.tabactive = this.$route.query.idx
+ this.initTab();
+ this.getstockDzDisplay();
+ },
+ watch: {
+ '$route'(to, from) {
+ this.initTab();
+ },
+ 'isdisplay'(newVal) {
+ // 当 isdisplay 变为 true 后,如果当前 tabactive 是 4,需要重新设置以确保正确选中
+ if (newVal) {
+ this.$nextTick(() => {
+ const idx = this.$route.query.idx;
+ if (idx) {
+ this.tabactive = String(idx);
+ }
+ });
+ }
+ }
},
methods: {
+ initTab() {
+ const idx = this.$route.query.idx;
+ this.tabactive = idx ? String(idx) : "1";
+ },
+ async getstockDzDisplay(){
+ let data = await api.stockDzDisplay();
+ this.isdisplay = data.data;
+ // 接口返回后,使用 nextTick 确保 DOM 更新完成后再设置 tabactive
+ if (this.isdisplay) {
+ this.$nextTick(() => {
+ const idx = this.$route.query.idx;
+ if (idx) {
+ this.tabactive = String(idx);
+ }
+ });
+ }
+ },
getNewsList() {
},
diff --git a/src/page/home/home.vue b/src/page/home/home.vue
index 56a3efe..c3f3f1b 100644
--- a/src/page/home/home.vue
+++ b/src/page/home/home.vue
@@ -53,17 +53,21 @@
<img src="@/assets/img/b1.png" style="width: 100%;height: 170px;border-radius: 14px;" />
</div> -->
<div style="margin: 0 10px;margin-top: 30px;margin-bottom: 30px;">
- <img src="@/assets/img/banner-home.png" style="width: 100%;height: 170px;border-radius: 14px;" />
+ <van-swipe :autoplay="3000" indicator-color="white" :show-indicators="true">
+ <van-swipe-item v-for="(item, index) in bannerList" :key="index">
+ <img :src="item" style="width: 100%;height: 170px;border-radius: 14px;object-fit: cover;" />
+ </van-swipe-item>
+ </van-swipe>
</div>
</div>
<div style="width: 100%; height: 40px;"></div>
<div class="dang">
- <div class="xbox" @click="$router.push('/smrz')">
+ <!-- <div class="xbox" @click="$router.push('/smrz')">
<img
src="data:image/png;base64,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"
/>
<p>{{ $t("hj146") }}</p>
- </div>
+ </div> -->
<!-- <div class="xbox" @click="getHeaderlink1(1)">
<img
src="data:image/png;base64,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"
@@ -77,60 +81,63 @@
/>
<p>{{ $t("hj227") }}{{ $t("hj2") }}</p>
</div>
+ <div class="xbox" @click="getHeaderlink1(1)">
+ <img
+ src="data:image/png;base64,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"
+ />
+ <p>{{ $t("hj45") }}</p>
+ </div>
<!-- <div class="xbox" @click="getHeaderlink1(2)">
<img
src="data:image/png;base64,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"
/>
<p>{{ $t("jy187") }}</p>
</div> -->
- <!-- <div class="xbox" @click="getHeaderlink1(3)">
+ <div class="xbox" v-if="isdisplay" @click="getHeaderlink1(3)">
<img
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAYAAADhu0ooAAAAAXNSR0IArs4c6QAABWpJREFUaEPtWl1sFFUU/s7spluVH6m1y8xssDYEDcaAhCBsl5b+PIhoYkiA4Is/iUFRQR/EaDAYiA8mPmhAIRKivhCFaIwi8gCldtsCCmIwEkkqNs3u3S4tIDFgO9mZY+6GNrvD1s7uztKp7H2953zn++bcmbnn3Eu4RQbdIjpRFvp/y3Q5oyMZDQaDdwQCgQqvZnh4eNhIJpNXx+OXM6O6rrcw85MAlgNQxwPxwHwCwPdEtDcejx/JxSdLaDAYrPP5fB8DaPEA+UIpHDZNc10ymTyfCTAqNBQKLbIs6xCAGYVG8JDfJUVRlsdisR9HOKWF6roeYuafAdztIbLFUrloWdbC/v7+XgmUFqqq6ndE9OgYyNcAJImIi43stj8zS/5BALfnwmbmg4lEYkVaqKZpEQDRHIbnmHljIpE4DMB0m6SLeD5VVVuJ6AMA9+XAXSqE6JRCtwN4KdOAmf8IBAILe3t7/3KRUEmhamtr7zQM4ycAs22BdgghXpZCf8/xJNYKIT4vKbMSgGuatgaAnfc5IcT9Uug/ACoz4/r9/qq+vr7LJeBSUshZs2bNSKVSl2xBhoQQt0mhN3xkhBCTdms4lp6y0JKusRKClzNafkdLuLxKCV1euvksXU3TNgHYCEBzmJU+AFuFEHvGso9GIjN8FYosKGodYkqzAWbeHT4a3UxA1u+x6Izqur6CmQ/kQWbElBVFWZxZMo1OAHSsufErgJ8oABcMera+7YdPMn2LFqqq6jYi2lwIIbmXFkJ8aPftamrcQMRyM17o2BVu63jBVaGapj0O4JtCGCmK8rA9o53Lli1UFKsLQMH9KAI/s6Qt+qmrQiWYqqpvEtGrAKodCu4H8I4QYkem/cnW1umGZcj3ss4hjt3sCjPviVfP3LR6//6sErLopVsgoZxu3c0N+wCsyjH5Xrit47ViYnlGaFdT43oivuF9JcLxaVWDjQ/sP2tMeqHdrQ0PwUK3vSwEcJksZcGS9vZ0f6eYMeEZ7ayvn0oB30kC5tiEMIhXho9Evy5G4IjvhAvtbl66F6C1djEM3l7fFt3ghkiJ4YpQBuh4U2QRFP/UfIhZbC0mYNuNPnRq+l0DYflehkKhBy3Lkh09J+OaEEL2bFN246KF/rZqbsWVi9UHXeziXzHJWrD0SOd5TdPkx2m9E4UZNqcMw2gaHBz829X/aHdLwzowduVJZkxzYqxZcrRj33+0W52E2iKE2Oqq0GPNDVsYeNtJ9PFsGLyzvi2azqCqqiuJ6MvxfMaY/0gI8aKrQk+0ROaYrJweqyueB9HTw5YSbmpvH5I+VVVV0yorK88AuCcPDGlqKopSH4vFTrgqVIJFmyLz/EQbGTQlT1Kj5habb0WOdp3L9A+FQrplWW8AqHGIK49Jdgsh5F45axT9MXJIYMLNykLz6TBMeLocEChn9FbK6IC9kE6lUjMvXLiQdLBSPGVSU1MT9Pv9stjPHFeFEFPk2Yv8N87PnCGi9fF4fKenVDggo+v688xs531GCDGPdF1/X55s23AGFEUJx2KxHgf4njAJhUKzLcuStW7WPQx5Eh6Px1+h61XDLwAUG+OLALYA+FYIEffo8b5P0zQdgGzcye2pvZdlKYoyPxaL/Zo+B9U0TXbSnvJEatwl8ZkQ4mkJmRZaV1c3fWhoSO4Zc112cDf0zUPrud5mTZ+Aj55sB4PBe30+n+zEz715XEoW6axpmo8lk8k/RyJkHeFXV1dPraioeBfAcwD8JaNROmDZcdhtGMbr9oI8512F63cCVxPRI8wsr7PkvLBUOr55IV8joh5mPmSa5heZWcz6ZeYFOYmNJ+3tk3yfeVlovk/M6/bljHo9Q/ny+xcuWZRZFpiovgAAAABJRU5ErkJggg=="
/>
- <p>{{ $t("jy86") }}</p>
- </div> -->
- <div class="xbox" @click="$router.push('/mylist')">
+ <p>股东减持</p>
+ </div>
+ <div class="xbox" @click="getHeaderlink(4)">
+ <img
+ src="data:image/png;base64,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"
+ />
+ <p>{{ $t("jy186") }}</p>
+ </div>
+ <div class="xbox" @click="$router.push('/FundingDetails')">
+ <img
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAYAAADhu0ooAAAAAXNSR0IArs4c6QAACyFJREFUaEPlW3l0XFUZ/33vzbRpWSQtITP3TbdYoVBFoCxtQ5amtiwHhQOKLEcURAFFBUGOLGJRKQhWEEHZjxYVpMIBoQVKTUKzlCIgBaosbWnpvPtaCk2h0Gab+3m+6SR9eZ3JzLwJ1XP4/slJ3v2W37vfu992Q/iEEH1CcOJjARqLxSqI6CQimgHgYABjAOwNoBvAJgCvM/MyIlqktV4GgD/uFz6kQGOx2GTLsq4E8GUA0QKNfxPADVrrPwDoLZCn6GVDAnT8+PFlXV1dc4noewAiRVsBgIheNcac7Xne82H48/GUDDSRSDjGmMcBHJJPWQHPe5j5Qs/z7ixgbVFLSgKqlJJvrxXA2KK05llMRJe6rjtvSGWGFVZVVfWpzs7OfwL4TA4ZmpnvJaIny8rKXl2zZs37AOxEIjGBmauZ+TQAx4jXZuFPAThZa/33sPYF+ULvqFLqfgBibJC6AFxdXl5+88qVK+WUzUlKqcMA3AVAfgZpKxEd7rruG0MBNhTQWCx2nGVZi7IYsBHAKVrrtkKNk4Osu7v7HgBnBHmYudnzPAlRJVMYoKSUegHAoQHtWy3Lqk4mk6+EsEpk/iWHh8zSWi8JIXMAS9FA4/F4LRE9k0Xxt7TWd4c1qLKycg/btv+TSS78YhZqrU8IK7ePLwzQ24novIDiV7TWssNyiIQmx3G+zsySOPip17KsymQyuTm04Bwn3qDyHMdZzcxV/kVEdIHrureXYkiGN6KUehtA3C+LmU/xPO/hUuQXtaNjx44t7+3t3eXN2rbtrF+/XpdiSB+vUupeAGcHgP7C87yflCK/KKCJROJgY8yKgML1WushSxiUUhcC+G3AY+5zXfes3QY0Ho8fTUQtAYUrtNZDkf6lxSqlJMz8OaDjMa31l3YbUMdxpkp5FVC4Umv92VKM8PPG4/GvEdH8wI4+5LquVEShqSjXdRxnf2Z+PaBtq9Z6HwAmtBU+RqXU1QCuCQC903Xd4ElflLqigE6ZMiXqed6HAIYFDJnmuu6zRWnOsVgp9RSA2QH5l7iu++tS5BcFNPMNSbJQGzgVb/I874elGCK8Y8aMUalUam2waCeikl9kGKA/ko5AANS2aDQ6cd26dV4pYB3HuYOZvx2QsVFr7ZSajBQNNFNorwm6L4AHtdZfDQs0kUgcZYyR2jbYobhRa31ZWLl9fEUDzbiv5LTfDConoqtd1/15sUYlEomJxpgmAIkAb6dt258eimQkFNDMtyQJuHT2gnTPyJEjv7tq1SqpS/OS4zgzmPlBAPtmWXyN1npOXiEFLAgFVORmi3c+faul+NZa/zXXt1VZWTkhEon8jJklQbCy2PpCeXn59HzFewEY00tCA82AnUdEg5227xDRYmZ+hZm3EFFECgIiOhrAkYPoT0q7xfM8SfCHhEoCKoYqpW4F8J0hsWaHkPXMfIznefJpDBmVCjRtiFLq+5mQM7xEy1osyzo9mUy6fXLaGhrGWUgdz8xTGHwAEUkWtjfADNAHALYwSLK152xDT0xtbk5ms6FkoNLyJKKzmPkCABLvwlAHM1/jed5t0q3nObCWPVN7GggXATiiCIEy2niWGL+aWrf0EZqzMy0NDVQpdQCAHwM4s4jxQ9DmlyWB3759+12bN2+W3UF7ff0k2OZ+cMkN8ecYkTOqGxvlYCz+MJJ+bldX1xzpqIcdPwCQdomcyuv9yNtn1NSBaCGAPYrYxcGWbiE2x05ral1e1I46jjOTmaWEUiUa8pTW+li/jOUzZ45Occ+/AewXkJ1ioBHAP4j5Jdvit3os/tBKDSfDXXvaFKliNlIPzwaR5ODBUOVaw7sOKhSonK5SOsmkLFvM67PNSGFujHkSQBsRnQPgG1leSldZWVllpnufftzWUDuHgJ8OWEuYH7Fx1ZGLlw7Y+Vwvefns2gmpXroB4AG1KxMuzQt08uTJwzo6Ov6Yo+fap3MDEd3W3d1996ZNmzb0/VEptW6QucxpmYQivby9oXZAVcTMc6ubWuTFFk1tDTW3ENKTvR1EWDgo0AzIx4L1oU/zB8x8vW3bNyeTye1+izLjBml056IHtNan9z1sb6h9GcDndi6mM6Y3PiNjj6JpWUPdBQz+XR8jM7cOBtTOzFe+kkPTYgDnBg8U326Kq0u3oH/XAcR8yt8fNWrUfn0p3q5AsVlKtuqmlocKRSph6dmldecx+JcA9ioIqFJKFmcrjyRWSbL9s8FG8kqplwB83meknNLCM8pnwLGe50lHQVw3sKP9nM+BMN+Y1JLqprY3KHANQMAtb6mZZECz0udBlrCUc0cdxzmBmWVkF9zxFDPLVPq+wd6yJOy2bUvN2kfGtu0xvb2910ly4QN6u+d5kmgMBtSvSj6PtSB8BCbBLGFoPICywezJClQpJeXSawBGB5iZmc/yPO9P+VwpHo9fREQ3+dYt11pPjcfjJxOR3xW11lpqUB5kR/Opy/s8F9BdOuUiiZmv9Dxvbl6pO0q4JiKq9+3c5Z7nXV9RUbFnNBp9B8CIvmeWZU1NJpPLswD9V8b1Bwtn2cyR+c+L/tRxF6CZdob0bYMu+6TW+vhCrsk4jjOamWVOavusOFBrLV4iBcCjAPqb0UR0neu6VwSBWpZV04Oet61U5CSCOQ5Eco0nV6KSBGEFG1rEkd5HIhytMsb0N9p3Aeo4ziJmPi7wmj6IRqOTCm18xePxM4nI797S771Ya31rLBabZFmWfN/+CXe60x8EysAx1Y1L5WTvp6b6+n0ikd5R0RTK5Y89NjpGoOy9w5cskWsD/dQ2o+ZEInrE51E7w0ssFjvIsqxXg7vJzBd7nndzIS6b2bFzM+P6IIvsqEzhBvSEAbyhtT4gSxx9AbBPnN7Y2F+yFWJD64zqyRbZCwAcmBWoUuo3AKSu9JMuLy+fUEw7IzPQlbH/gN5vDiM/kpG+XMrIcRh9yMy3MMz8o5vaghOCASIFIME6h4gkjA14mX7XleRAxn7BhPoyrfWNhbzJwBpLKXU+gGsBSKGcjR7P3CmSNDFveGHGeiJawTBvEegjAoiBPQio4h13nHIWGv1Ac0zJelOplLNx40Y5JUPRuHHj4j09PeL2p/oEuMz8A8/zBmQ8uyW8KKWkagi2FZ/WWg+YgYRCuyPczM4kCqs7Ozvn9RXZfnlZgG4DMDKkzq1ZU8B4PL6QiCR8+Cms24ayLQiULGsWTCrBsE4B+Av5sh8A2wBazMDDxEaDqP8mS7/rKqUkXZvgt5CZazzPkxHBbqH2hlrRVd2vjPmK6U0t18nvTfX1kRF2av8UcBAZaxQTp8MLMXUwzHvE9spkRcWbpy5YkL4s0j6zbi6YL/cZ/gRNnDhx+LZt28RNBmQgxpgJw4YNGxCfhhKxZVm8du3aLX0ysxhnCLipt9tcW9Pa2lGI7ufr6/ftJjMHlG6/9ic9BFwlnQO5uDhkjeJCDPKtkab2Fa7r/r51VrWyUul7RsExx3YCPQoYqXJejhr77TUVFR0VmzbRXsA+3REzBozD2GAWUTrj6k8vRQ8D70YoOokyicLKIg0c0uXMfITc013WUPdFBv8tS1IRVt92Bk6oblzaSI7jHMLMkkD/z4iIzndd947099VQcySYHgANPDNCGPcaG+v06uZmqYtBiURihDFm1RB09kLYkmbpMcYcumHDhn6vap82bQSNGHYuw1wC0LjiBPNqgjVv79Hv3jN5wc7bpekPNtPfkR7L/sUJLXn1u8wsJVzWdol0D9pb6o4iYBaYDwcwEUAlkE7qpdMhh9Q7kJEEmxcN209XNzdLD3eXf0bI2wUsGcr/iYBPDND/Ag9chvV4Zk5XAAAAAElFTkSuQmCC"
+ />
+ <p>{{ $t("jy326") }}</p>
+ </div>
+ <!-- <div class="xbox" @click="$router.push('/mylist')">
<img
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAYAAADhu0ooAAAAAXNSR0IArs4c6QAABWpJREFUaEPtWl1sFFUU/s7spluVH6m1y8xssDYEDcaAhCBsl5b+PIhoYkiA4Is/iUFRQR/EaDAYiA8mPmhAIRKivhCFaIwi8gCldtsCCmIwEkkqNs3u3S4tIDFgO9mZY+6GNrvD1s7uztKp7H2953zn++bcmbnn3Eu4RQbdIjpRFvp/y3Q5oyMZDQaDdwQCgQqvZnh4eNhIJpNXx+OXM6O6rrcw85MAlgNQxwPxwHwCwPdEtDcejx/JxSdLaDAYrPP5fB8DaPEA+UIpHDZNc10ymTyfCTAqNBQKLbIs6xCAGYVG8JDfJUVRlsdisR9HOKWF6roeYuafAdztIbLFUrloWdbC/v7+XgmUFqqq6ndE9OgYyNcAJImIi43stj8zS/5BALfnwmbmg4lEYkVaqKZpEQDRHIbnmHljIpE4DMB0m6SLeD5VVVuJ6AMA9+XAXSqE6JRCtwN4KdOAmf8IBAILe3t7/3KRUEmhamtr7zQM4ycAs22BdgghXpZCf8/xJNYKIT4vKbMSgGuatgaAnfc5IcT9Uug/ACoz4/r9/qq+vr7LJeBSUshZs2bNSKVSl2xBhoQQt0mhN3xkhBCTdms4lp6y0JKusRKClzNafkdLuLxKCV1euvksXU3TNgHYCEBzmJU+AFuFEHvGso9GIjN8FYosKGodYkqzAWbeHT4a3UxA1u+x6Izqur6CmQ/kQWbElBVFWZxZMo1OAHSsufErgJ8oABcMera+7YdPMn2LFqqq6jYi2lwIIbmXFkJ8aPftamrcQMRyM17o2BVu63jBVaGapj0O4JtCGCmK8rA9o53Lli1UFKsLQMH9KAI/s6Qt+qmrQiWYqqpvEtGrAKodCu4H8I4QYkem/cnW1umGZcj3ss4hjt3sCjPviVfP3LR6//6sErLopVsgoZxu3c0N+wCsyjH5Xrit47ViYnlGaFdT43oivuF9JcLxaVWDjQ/sP2tMeqHdrQ0PwUK3vSwEcJksZcGS9vZ0f6eYMeEZ7ayvn0oB30kC5tiEMIhXho9Evy5G4IjvhAvtbl66F6C1djEM3l7fFt3ghkiJ4YpQBuh4U2QRFP/UfIhZbC0mYNuNPnRq+l0DYflehkKhBy3Lkh09J+OaEEL2bFN246KF/rZqbsWVi9UHXeziXzHJWrD0SOd5TdPkx2m9E4UZNqcMw2gaHBz829X/aHdLwzowduVJZkxzYqxZcrRj33+0W52E2iKE2Oqq0GPNDVsYeNtJ9PFsGLyzvi2azqCqqiuJ6MvxfMaY/0gI8aKrQk+0ROaYrJweqyueB9HTw5YSbmpvH5I+VVVV0yorK88AuCcPDGlqKopSH4vFTrgqVIJFmyLz/EQbGTQlT1Kj5habb0WOdp3L9A+FQrplWW8AqHGIK49Jdgsh5F45axT9MXJIYMLNykLz6TBMeLocEChn9FbK6IC9kE6lUjMvXLiQdLBSPGVSU1MT9Pv9stjPHFeFEFPk2Yv8N87PnCGi9fF4fKenVDggo+v688xs531GCDGPdF1/X55s23AGFEUJx2KxHgf4njAJhUKzLcuStW7WPQx5Eh6Px1+h61XDLwAUG+OLALYA+FYIEffo8b5P0zQdgGzcye2pvZdlKYoyPxaL/Zo+B9U0TXbSnvJEatwl8ZkQ4mkJmRZaV1c3fWhoSO4Zc112cDf0zUPrud5mTZ+Aj55sB4PBe30+n+zEz715XEoW6axpmo8lk8k/RyJkHeFXV1dPraioeBfAcwD8JaNROmDZcdhtGMbr9oI8512F63cCVxPRI8wsr7PkvLBUOr55IV8joh5mPmSa5heZWcz6ZeYFOYmNJ+3tk3yfeVlovk/M6/bljHo9Q/ny+xcuWZRZFpiovgAAAABJRU5ErkJggg=="
/>
<p>{{ $t("hj61") }}{{ $t("hj52") }}</p>
- </div>
+ </div> -->
<!-- <div class="xbox" @click="getHeaderlink1(4)">
<img
src="data:image/png;base64,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"
/>
<p>{{ $t("jy188") }}</p>
</div> -->
- <div class="xbox" @click="getHeaderlink1(1)">
- <img
- src="data:image/png;base64,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"
- />
- <p>{{ $t("hj45") }}</p>
- </div>
- <!-- <div class="xbox" @click="getHeaderlink1(5)">
+
+ <div class="xbox" @click="$router.push('/profitCalendar')">
<img
src="data:image/png;base64,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"
/>
- <p>{{ $t("jy189") }}</p>
- </div> -->
- <div class="xbox" @click="$router.push('/FundingDetails')">
- <img
- src="data:image/png;base64,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"
- />
- <p>{{ $t("jy326") }}</p>
- </div>
+ <p>收益日历</p>
+ </div>
+
<!-- <div class="xbox" @click="getHeaderlink1(6)">
<img
src="data:image/png;base64,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"
/>
<p>{{ $t("jy169") }}</p>
</div> -->
- <div class="xbox" @click="getHeaderlink(4)">
- <img
- src="data:image/png;base64,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"
- />
- <p>{{ $t("jy186") }}</p>
- </div>
+
<div class="xbox" @click="getHeaderlink1(7)">
<img
src="data:image/png;base64,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"
@@ -261,10 +268,16 @@
hushentiao: "",
isshow: true,
show: false,
- secret: ""
+ secret: "",
+ isdisplay: false,
+ bannerList: [
+ require("@/assets/img/banner-home.png"),
+ require("@/assets/img/banner-home.png")
+ ]
};
},
mounted() {
+ this.getstockDzDisplay();
this.getNewsList(1);
this.stockgetZdfNumber();
this.kLineChart = init("Zline");
@@ -280,6 +293,10 @@
this.isshow = false;
},
methods: {
+ async getstockDzDisplay(){
+ let data = await api.stockDzDisplay();
+ this.isdisplay = data.data;
+ },
onBeforeClose(action, done) {
// 点击了确定按钮
if (action === "confirm") {
diff --git a/src/page/home/listcomponents/dazongjiaoyi.vue b/src/page/home/listcomponents/dazongjiaoyi.vue
index ff01761..5a93270 100644
--- a/src/page/home/listcomponents/dazongjiaoyi.vue
+++ b/src/page/home/listcomponents/dazongjiaoyi.vue
@@ -11,38 +11,111 @@
</div>
</div>
<div class="dbox">
- <div class="daz"><span class="d1">{{ $t("MingCheng") }}</span><span class="d2">{{ $t("hj81") }}</span><span class="d3"></span></div>
+ <div class="daz">
+ <span class="d1">{{ $t("MingCheng") }}</span>
+ <span class="d2">{{ $t("hj81") }}</span>
+ </div>
</div>
<div class="list" v-for="(item, index) in dazongList" :key="index">
<div class="lbox">
- <div class="lb1">
- <h6>{{ item.stockName }}</h6>
- <p>
- <span v-if="item.stockType == 'sz'">{{ $t("jy83") }}</span>
- <span class="sh" v-if="item.stockType == 'sh'">{{ $t("jy84") }}</span>
- <span class="bj" v-if="item.stockType == 'bj'">{{ $t("jy85") }}</span>
- <a :class="item.stockType == 'sh' ? 'shbg' : item.stockType == 'bj' ? 'bjbg' : ''">{{
- item.stockGid
- }}</a>
- </p>
+ <div class="top-section">
+ <div class="lb1">
+ <h6>{{ item.stockName }}</h6>
+ <p>
+ <span v-if="item.stockType == 'sz'">{{ $t("jy83") }}</span>
+ <span class="sh" v-if="item.stockType == 'sh'">{{ $t("jy84") }}</span>
+ <span class="bj" v-if="item.stockType == 'bj'">{{ $t("jy85") }}</span>
+ <a :class="item.stockType == 'sh' ? 'shbg' : item.stockType == 'bj' ? 'bjbg' : ''">{{
+ item.stockGid
+ }}</a>
+ </p>
+ </div>
+ <div class="top-right">
+ <div class="lb2">
+ <div class="price-value">{{ item.price }}{{ $t('jy51') }}</div>
+ <div class="price-label">{{ $t("hj81") }}</div>
+ </div>
+ <div class="lb3"><a @click="getdetail(item)">{{ $t("hj238") }}</a></div>
+ </div>
</div>
- <div class="lb2"> {{ item.price }} </div>
- <div class="lb3"><a @click="getdetail(item)">{{ $t("hj238") }}</a></div>
+ <div class="middle-section">
+ <div class="share-info">
+ <span class="label">{{ $t('dz_share') }}:</span>
+ <span class="value">{{ formatAmount(item.stockShare || 0) }}</span>
+ </div>
+ <div class="surplus-info">
+ <span class="label">{{ $t('dz_completed') }}:</span>
+ <span class="value">{{ formatAmount(item.stockSurplus || 0) }}</span>
+ </div>
+ </div>
+ <div class="progress-section">
+ <div class="progress-bar">
+ <div class="progress-fill" :style="{ width: getProgressPercent(item) + '%' }">
+ <div class="progress-text-wrap">
+ <div class="progress-text">{{ getProgressPercent(item) }}%</div>
+ </div>
+ </div>
+ </div>
+ </div>
</div>
</div>
<van-popup v-model="show" round position="bottom">
<div class="boxd">
- <div class="boxh"> {{ $t("jy86") }} <span @click="show = false"></span></div>
- <h5>{{ $t("hj130") }}</h5>
- <h6>{{ currentItem.price ? currentItem.price : '' }}</h6>
- <div class="erty tghj"><input :placeholder="$t('jy87')" type="number" class="inpy" v-model="num"
- @input="num = num.replace(/^(0+)|[^\d]+/g, '')"><a>{{ $t("hj117") }}</a></div>
- <p class="plm"><span>{{ $t("jy88") }}</span><a>{{ currentItem.price ? (currentItem.price * num * 100).toFixed(2) :
- '0.00'
- }}</a></p>
- <div class="erty"><input :placeholder="$t('jy89')" type="password" class="inpy" v-model="password"></div>
- <p class="plm"><span>{{ $t("hj54") }}</span><a>{{ userinfo.enableAmt }}</a></p>
- <div class="maik" @click="getxiadan">{{ $t("hj85") }}</div>
+ <!-- 顶部份额和已完成金额 -->
+ <!-- <div class="popup-header">
+ <span class="header-left">{{ $t("dz_share") }}: {{ formatAmount(currentItem.stockShare || 0) }}</span>
+ <span class="header-right">{{ $t("dz_completed") }}: {{ formatAmount(currentItem.stockSurplus || 0) }}</span>
+ </div> -->
+ <!-- 标题和关闭按钮 -->
+ <div class="boxh">
+ <span class="close-btn" @click="show = false">×</span>
+ <h5>{{ $t("hj85") }}</h5>
+ </div>
+ <!-- 价格输入 -->
+ <div class="price-section">
+ <div class="erty price-input">
+ <input type="number" class="inpy" v-model="price" disabled :placeholder="currentItem.price || ''">
+ <a class="current-price-btn" @click="setCurrentPrice">{{ $t("hj81") }}</a>
+ </div>
+ </div>
+ <!-- 买入数量 -->
+ <div class="quantity-section">
+ <label class="section-label">{{ $t("jy87") }}</label>
+ <div class="erty quantity-input">
+ <input :placeholder="$t('jy87')" type="number" class="inpy" v-model="num"
+ @input="num = num.replace(/^(0+)|[^\d]+/g, '')">
+ <a>{{ $t("hj117") }}</a>
+ </div>
+ </div>
+ <!-- 仓位选择 -->
+ <div class="position-section">
+ <label class="section-label">{{ $t("hj226") }}</label>
+ <div class="position-buttons">
+ <div class="position-btn" :class="{ active: selectedPosition === '1/4' }" @click="selectPosition('1/4')">{{ $t('hj258') }}</div>
+ <div class="position-btn" :class="{ active: selectedPosition === '1/3' }" @click="selectPosition('1/3')">{{ $t('hj259') }}</div>
+ <div class="position-btn" :class="{ active: selectedPosition === '1/2' }" @click="selectPosition('1/2')">{{ $t('hj260') }}</div>
+ <div class="position-btn" :class="{ active: selectedPosition === 'full' }" @click="selectPosition('full')">{{ $t('hj261') }}</div>
+ </div>
+ </div>
+ <!-- 金额信息 -->
+ <div class="amount-info">
+ <p class="plm">
+ <span>{{ $t("hj54") }}</span>
+ <a>¥{{ (userinfo.enableAmt || 0).toFixed(2) }}</a>
+ </p>
+ <p class="plm">
+ <span>{{ $t("jy88") }}</span>
+ <a class="red-amount">¥{{ getActualAmount() }}</a>
+ </p>
+ </div>
+ <!-- 密码输入 -->
+ <!-- <div class="password-section">
+ <div class="erty">
+ <input :placeholder="$t('jy89')" type="password" class="inpy" v-model="password">
+ </div>
+ </div> -->
+ <!-- 下单按钮 -->
+ <div class="maik" @click="getxiadan">{{ $t("hj85") }}{{ $t("jy150") }}</div>
</div>
</van-popup>
</div>
@@ -59,9 +132,11 @@
show: false,
dazongList: [],
num: '',
- currentItem: '',
- userinfo: '',
- password: ''
+ currentItem: {},
+ userinfo: {},
+ password: '',
+ price: '',
+ selectedPosition: ''
}
},
mounted() {
@@ -74,31 +149,85 @@
},
getdetail(item) {
this.currentItem = item
+ this.price = item.price || ''
+ this.num = ''
+ this.selectedPosition = ''
+ this.password = ''
this.show = true
},
+ setCurrentPrice() {
+ if (this.currentItem.price) {
+ this.price = this.currentItem.price
+ }
+ },
+ selectPosition(position) {
+ this.selectedPosition = position
+ if (this.userinfo.enableAmt && this.price) {
+ let availableAmount = parseFloat(this.userinfo.enableAmt) || 0
+ let currentPrice = parseFloat(this.price) || 0
+ let positionRatio = 0
+
+ switch(position) {
+ case '1/4':
+ positionRatio = 0.25
+ break
+ case '1/3':
+ positionRatio = 0.333
+ break
+ case '1/2':
+ positionRatio = 0.5
+ break
+ case 'full':
+ positionRatio = 1
+ break
+ }
+
+ // 计算可买入的手数(1手=100股)
+ let maxAmount = availableAmount * positionRatio
+ let maxHands = Math.floor(maxAmount / (currentPrice * 100))
+ this.num = maxHands.toString()
+ }
+ },
+ getActualAmount() {
+ if (this.price && this.num) {
+ let price = parseFloat(this.price) || 0
+ let num = parseFloat(this.num) || 0
+ return (price * num * 100).toFixed(2)
+ }
+ return '0.00'
+ },
async getxiadan() {
+ if (!this.price) {
+ this.$toast('请输入价格')
+ return
+ }
if (!this.num) {
- this.show = false
- this.$toast('请输入数量')
+ this.$toast(this.$t('jy87'))
return
}
- if (!this.password) {
- this.show = false
- this.$toast('请输入秘钥')
- return
- }
+ // if (!this.password) {
+ // this.$toast(this.$t('jy89'))
+ // return
+ // }
var opt = {
stockCode: this.currentItem.stockCode,
password: this.password,
num: this.num * 100,
+ price: this.price
}
let res = await api.buyStockDz(opt)
- if (res.status == 0) {
- this.$toast('买入成功')
- } else {
- this.$toast(res.msg)
- }
+ // 先关闭弹窗,避免遮罩层遮挡 Toast
this.show = false
+ if (res.status == 0) {
+ this.$nextTick(() => {
+ this.$toast(this.$t('dz_buySuccess'))
+ })
+ this.stockgetDzList()
+ } else {
+ this.$nextTick(() => {
+ this.$toast(res.msg)
+ })
+ }
},
async stockgetDzList() {
let res = await api.stockgetDzList()
@@ -112,6 +241,19 @@
if (data.status === 0) {
this.userinfo = data.data;
}
+ },
+ getProgressPercent(item) {
+ if (!item.stockShare || item.stockShare === 0) {
+ return 0;
+ }
+ const percent = (item.stockSurplus || 0) / item.stockShare * 100;
+ return Math.min(100, Math.max(0, Math.round(percent * 100) / 100));
+ },
+ formatAmount(amount) {
+ return Number(amount).toLocaleString('zh-CN', {
+ minimumFractionDigits: 2,
+ maximumFractionDigits: 2
+ });
},
},
}
@@ -127,6 +269,7 @@
margin: 0 auto;
display: flex;
justify-content: space-between;
+ align-items: center;
span {
color: #666;
@@ -134,16 +277,13 @@
}
.d1 {
- width: 40%;
+ flex: 1;
+ text-align: left;
}
.d2 {
- width: 20%;
- text-align: center;
- }
-
- .d3 {
- width: 40%;
+ flex: 1;
+ text-align: right;
}
}
}
@@ -173,93 +313,191 @@
.list {
width: 100%;
- padding: 0.4rem 0;
- border-bottom: 1px solid #e0e0e0;
+ padding: 0.4rem 0.3rem;
+ margin-bottom: 0.3rem;
+ background: #fff;
+ border-radius: 0.25rem;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
.lbox {
width: 9.35rem;
margin: 0 auto;
- display: flex;
- justify-content: space-between;
- .lb1 {
- h6 {
- color: #333;
- font-size: .4rem;
- font-weight: 600;
- }
+ .top-section {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ margin-bottom: 0.4rem;
- p {
- color: #333;
- font-size: .32rem;
- margin-top: 0.13rem;
-
- span {
- width: 0.4rem;
- height: 0.4rem;
- background: #3b4fde;
- border-radius: 0.05rem;
- padding: 0.04rem;
- text-align: center;
- line-height: .4rem;
- color: #fff;
- font-size: .3rem;
+ .lb1 {
+ flex: 1;
+ h6 {
+ color: #333;
+ font-size: .4rem;
+ font-weight: 600;
+ margin-bottom: 0.13rem;
}
- a {
- display: inline-block;
- height: 0.4rem;
- line-height: .4rem;
- padding: 0 0.11rem;
- background: rgba(59, 79, 222, .1);
- border-radius: 0.05rem;
- color: #3b4fde;
+ p {
+ color: #333;
font-size: .32rem;
- vertical-align: middle;
+ margin: 0;
+
+ span {
+ width: 0.4rem;
+ height: 0.4rem;
+ background: #4caf50;
+ border-radius: 0.05rem;
+ padding: 0.04rem;
+ text-align: center;
+ line-height: .4rem;
+ color: #fff;
+ font-size: .3rem;
+ display: inline-block;
+ margin-right: 0.1rem;
+ }
+
+ a {
+ display: inline-block;
+ height: 0.4rem;
+ line-height: .4rem;
+ padding: 0 0.11rem;
+ background: rgba(59, 79, 222, .1);
+ border-radius: 0.05rem;
+ color: #3b4fde;
+ font-size: .32rem;
+ vertical-align: middle;
+ }
+
+ .bj {
+ background: #ea6248;
+ }
+
+ .sh {
+ background: #aa3bde;
+ }
+
+ .shbg {
+ color: #aa3bde;
+ background: rgba(170, 59, 222, .1);
+ }
+
+ .bjbg {
+ color: #ea6248;
+ background: rgba(234, 98, 72, .1);
+ }
+ }
+ }
+
+ .top-right {
+ display: flex;
+ align-items: flex-end;
+ gap: 0.2rem;
+
+ .lb2 {
+ // text-align: right;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ .price-value {
+ color: #d73d3d;
+ font-size: .4rem;
+ font-weight: 600;
+ }
+ .price-label {
+ color: #999;
+ font-size: .28rem;
+ margin-top: 0.15rem;
+ }
}
- .bj {
- background: #ea6248;
- }
-
- .sh {
- background: #aa3bde;
- }
-
- .shbg {
- color: #aa3bde;
- background: rgba(170, 59, 222, .1);
- }
-
- .bjbg {
- color: #ea6248;
- background: rgba(234, 98, 72, .1);
+ .lb3 {
+ a {
+ display: inline-block;
+ width: 1.6rem;
+ height: 100%;
+ background: linear-gradient(-55deg, rgb(241, 22, 20), rgb(240, 40, 37));
+ border-radius: 0.35rem;
+ text-align: center;
+ color: #fff;
+ font-size: .32rem;
+ line-height: .67rem;
+ }
}
}
}
- .lb2 {
- color: #d73d3d;
- font-size: .32rem;
- margin-top: 0.32rem;
- }
+ .middle-section {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 0.1rem;
- .lb3 {
- text-align: right;
+ .share-info, .surplus-info {
+ display: flex;
+ align-items: center;
+ gap: 0.1rem;
- a {
- display: inline-block;
- width: 1.6rem;
- height: 0.67rem;
- background: linear-gradient(-55deg,rgb(241, 22, 20),rgb(240, 40, 37));
- border-radius: 0.35rem;
- text-align: center;
- color: #fff;
- font-sizE: .32rem;
- line-height: .67rem;
- margin-top: 0.08rem;
+ .label {
+ color: #666;
+ font-size: .32rem;
+ }
+
+ .value {
+ color: #333;
+ font-size: .32rem;
+ font-weight: 500;
+ }
}
}
+
+ .progress-section {
+ width: 100%;
+ height: 10px; /* 核心:降低整体容器高度,匹配图片紧凑感 */
+ display: flex;
+ align-items: center;
+}
+
+.progress-bar {
+ position: relative;
+ width: 100%;
+ height: 100%; /* 跟随外层容器高度 */
+ background: #f0f0f0;
+ border-radius: 8px; /* 圆角适配小高度,更精致 */
+ overflow: visible;
+}
+
+.progress-fill {
+ position: relative;
+ height: 100%;
+ background: linear-gradient(-55deg, rgb(241, 22, 20), rgb(240, 40, 37));
+ transition: width 0.3s ease;
+ border-radius: 8px; /* 同步圆角 */
+ min-width: 40px;
+ display: flex;
+ align-items: center;
+}
+
+.progress-text-wrap {
+ position: absolute;
+ right: 0;
+ top: -0.15556rem;
+ height: 300%;
+}
+
+.progress-text {
+ font-size: 14px; /* 缩小字体适配小高度 */
+ color: #fff;
+ background-color: red;
+ padding: 0 10px; /* 紧凑内边距,不宽不高 */
+ height: 100%;
+ border-radius: 18px; /* 圆角和进度条一致,适配小高度 */
+ font-weight: 600;
+ white-space: nowrap;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ max-width: max-content;
+}
}
}
@@ -267,6 +505,19 @@
background: #fff;
border-radius: 0.266rem 0.266rem 0 0;
padding-bottom: 0.53rem;
+
+ .popup-header {
+ background: #4a4a4a;
+ color: #fff;
+ padding: 0.3rem 0.53rem;
+ display: flex;
+ justify-content: space-between;
+ font-size: 0.32rem;
+
+ .header-left, .header-right {
+ color: #fff;
+ }
+ }
.boxh {
height: 1.2rem;
@@ -278,76 +529,125 @@
width: 9.48rem;
margin: 0 auto;
position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
- span {
+ .close-btn {
position: absolute;
- width: 0.32rem;
- height: 0.32rem;
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAStJREFUSEutlk1qhDAUgF+EzG5EWsYTzK6HKO0hcgB3gscR3IgH8BBTeojuegJLQWg3NqDlyUQwRn0xcWeQ7zMv7ycMAKCu61PTNOcsy77x3fUpy/IhDMNfIcQfQ3jbtvUwDFfO+UuSJF8ugqqqLlLKN8bYZxRFguV5/sg5fweAJwD4cJEouGJJKZ8Z/m1RFHEQBDcXiQ7v+/41TdNmFLhK1uDInQRHJVvwhcBWsgc3CqgSCnxVsCehwjcFaxJcxzynZtzskE0Fpqfw/RtyzewKDDvBJXJBkgRazP0K9AP1GiIdjn2q6zpm01ZWQ2SCq05r07uMgi24be9aCChwG8lMYAOnSibBEThFMgpc4HsSryNTz65xZPoe+koyDX3cou9rC14k4jj+wWvLP1ylVM57GzhpAAAAAElFTkSuQmCC) no-repeat 50%;
- background-size: 100%;
- right: 0.266rem;
- top: 0.4rem;
+ left: 0.266rem;
+ width: 0.8rem;
+ height: 0.8rem;
+ font-size: 0.6rem;
+ color: #999;
+ line-height: 0.8rem;
+ text-align: center;
+ cursor: pointer;
+ }
+
+ h5 {
+ color: #333;
+ font-size: 0.43rem;
+ font-weight: 500;
+ margin: 0;
}
}
- h5 {
- color: #333;
- font-size: .37rem;
- font-weight: 500;
- width: 9.48rem;
- margin: 0 auto;
- margin-top: 0.32rem;
+ .price-section {
+ padding: 0.4rem 0.53rem 0;
}
- h6 {
- color: #ea3544;
- font-size: .43rem;
- width: 9.48rem;
- margin: 0 auto;
- margin-top: 0.32rem;
- font-weight: 600;
+ .quantity-section, .position-section {
+ padding: 0.4rem 0.53rem 0;
+
+ .section-label {
+ display: block;
+ color: #333;
+ font-size: 0.35rem;
+ margin-bottom: 0.2rem;
+ }
}
.erty {
- width: 9.21rem;
+ width: 100%;
height: 1.07rem;
border: 0.0266rem solid #999;
border-radius: 0.13rem;
margin: 0 auto;
display: flex;
justify-content: space-between;
- margin-top: 0.59rem;
+ align-items: center;
+
+ &.price-input {
+ margin-top: 0;
+ }
.inpy {
height: 1.07rem;
- width: 5.34rem;
+ flex: 1;
margin-left: 0.266rem;
background: transparent;
font-size: .37rem;
color: #000;
+ border: none;
+ outline: none;
}
a {
height: 0.64rem;
border-left: 0.0266rem solid #999;
- width: 1.15rem;
- margin-top: 0.266rem;
+ width: 1.5rem;
+ margin-right: 0.266rem;
text-align: center;
- font-size: .37rem;
- color: #000;
+ font-size: .32rem;
+ color: #666;
line-height: .64rem;
+
+ &.current-price-btn {
+ color: #666;
+ cursor: pointer;
+ }
}
}
- .tghj {
- border: 0.0266rem solid #3b4fde;
- margin-top: 0.45rem;
+ .position-buttons {
+ display: flex;
+ gap: 0.2rem;
+ margin-top: 0.2rem;
+
+ .position-btn {
+ flex: 1;
+ height: 0.8rem;
+ border: 0.0266rem solid #999;
+ border-radius: 0.13rem;
+ text-align: center;
+ line-height: 0.8rem;
+ font-size: 0.32rem;
+ color: #666;
+ cursor: pointer;
+ transition: all 0.3s;
+
+ &.active {
+ border-color: #3b4fde;
+ background: rgba(59, 79, 222, 0.1);
+ color: #3b4fde;
+ }
+ }
+ }
+
+ .amount-info {
+ padding: 0.4rem 0.53rem 0;
+ }
+
+ .password-section {
+ padding: 0.4rem 0.53rem 0;
}
.plm {
- width: 8.94rem;
- margin: 0 auto;
- margin-top: 0.266rem;
+ width: 100%;
+ margin: 0.2rem 0;
+ display: flex;
+ justify-content: space-between;
span {
color: #999;
@@ -355,8 +655,12 @@
}
a {
- color: #f33030;
- margin-left: 0.11rem;
+ color: #333;
+ font-size: .32rem;
+
+ &.red-amount {
+ color: #f33030;
+ }
}
}
@@ -365,12 +669,12 @@
height: 1.07rem;
background: linear-gradient(-55deg,rgb(241, 22, 20),rgb(240, 40, 37));
border-radius: 0.26rem;
- margin: 0 auto;
- margin-top: 0.56rem;
+ margin: 0.4rem auto 0;
text-align: center;
line-height: 1.07rem;
color: #fff;
font-size: .37rem;
+ cursor: pointer;
}
}
</style>
\ No newline at end of file
diff --git a/src/page/home/listcomponents/xingusg.vue b/src/page/home/listcomponents/xingusg.vue
index a55beb3..5622d6c 100644
--- a/src/page/home/listcomponents/xingusg.vue
+++ b/src/page/home/listcomponents/xingusg.vue
@@ -19,7 +19,7 @@
<div>
<van-list v-model="loading" :finished="finished" :finished-text="$t('hj43')" @load="onLoad" offset="500"
:immediate-check="false">
- <div class="skm" v-for="(item, index) in shengouList" :key="index">
+ <div class="skm" v-for="(item, index) in shengouList" @click="getshengou(1, item)" :key="index">
<div class="shead shn">
<div class="shl">
<h6>{{ item.name }}</h6>
@@ -34,10 +34,10 @@
</p>
</div>
<div v-if="shengouIdx == 0">
- <div class="she1" @click="getshengou(1, item)"><span
+ <!-- <div class="she1" @click="getshengou(1, item)"><span
style="font-size: 0.32rem;"> {{ $t("jy98") }}</span><span> {{ $t("jy94") }}</span></div>
<div class="she2" @click="getshengou(2, item)"><span
- style="font-size: 0.32rem;"> {{ $t("jy99") }}</span><span> {{ $t("jy100") }}</span></div>
+ style="font-size: 0.32rem;"> {{ $t("jy99") }}</span><span> {{ $t("jy100") }}</span></div> -->
</div>
<p class="shr" v-if="shengouIdx == 1"> {{ $t("hj59") }}
<span>{{ dayjs(item.subscribeTime).format('YYYY-MM-DD') }}</span>
@@ -51,6 +51,8 @@
<p><span> {{ $t("jy102") }}</span><a>{{ item.pe }}</a></p>
<p style="display: none;"><span> {{ $t("jy103") }}</span><a> 0.75{{ $t("jy104") }}</a></p>
<p><span> {{ $t("jy105") }}</span><a>{{ item.orderNumber }} {{ $t("jy104") }}</a></p>
+ <p><span>{{ $t('hj257') }}</span><a>{{ item.discount }} </a></p>
+
</div>
</div>
</van-list>
@@ -144,6 +146,7 @@
var list = data.data.list
if (list.length == 0) {
this.finished = true;
+ this.loading = false;
return
} else if (data.data.list.length > 0 && data.data.list.length < 9) {
this.finished = true;
@@ -151,14 +154,21 @@
} else {
this.getfilterdate(list)
}
+ } else {
+ this.loading = false;
}
},
getfilterdate(list) {
if (this.shengouIdx == 0) {
+
+ if (list.length > 0) {
+ console.log(this.dayjs(list[0].subscribeTime).format('YYYY-MM-DD'));
+ console.log(this.dayjs(new Date().getTime()).format('YYYY-MM-DD'));
+ }
for (let i = 0; i < list.length; i++) {
- if (this.dayjs(list[i].subscribeTime).format('YYYY-MM-DD') == this.dayjs(new Date().getTime()).format('YYYY-MM-DD')) {
+ // if (this.dayjs(list[i].subscribeTime).format('YYYY-MM-DD') == this.dayjs(new Date().getTime()).format('YYYY-MM-DD')) {
this.shengouList.push(list[i])
- }
+ // }
}
} else {
for (let i = 0; i < list.length; i++) {
@@ -167,6 +177,9 @@
}
}
}
+ // 数据处理完成后,将 loading 设置为 false
+ this.loading = false;
+ console.log(this.shengouList);
},
shengoujilu() {
this.$router.push({
diff --git a/src/page/home/newshares/newsharesDetail.vue b/src/page/home/newshares/newsharesDetail.vue
index a85edc3..3f164ff 100644
--- a/src/page/home/newshares/newsharesDetail.vue
+++ b/src/page/home/newshares/newsharesDetail.vue
@@ -22,8 +22,8 @@
<div class="dashedf"></div>
<div class="plkm">
<p><span>{{ $t('jy110') }}</span><a>{{ currentItem.price }}/{{ $t('jy96') }}</a></p>
+ <p><span>折扣</span><a>{{ currentItem.discount }}</a></p>
<p><span>{{ $t('jy102') }}</span><a>{{ currentItem.pe }}</a></p>
- <p style="display: none;"><span>{{ $t('jy103') }}</span><a>0.75{{ $t('jy104') }}</a></p>
<p><span>{{ $t('jy111') }}</span><a>{{ currentItem.orderNumber }}{{ $t('jy104') }}</a></p>
</div>
<div class="jindu">
@@ -65,8 +65,8 @@
<h5><span>{{ $t('jy121') }}</span><a>{{ dayjs(currentItem.subscribeTime).format('YYYY-MM-DD') }}</a></h5>
</div>
<div class="shuliang">
- <div class="hnjk"><span>{{ $t('hj57') }}</span><a>{{ $t('jy122') }}:<i>{{ userinfo.enableAmt }}</i></a></div><input
- v-model="applyNums" :placeholder="$t('jy123')" type="number" class="inkl" @input="applyNums = applyNums.replace(/^(0+)|[^\d]+/g, '')">
+ <!-- <div class="hnjk"><span>{{ $t('hj57') }}</span></div><input
+ v-model="applyNums" :placeholder="$t('jy123')" type="number" class="inkl" @input="applyNums = applyNums.replace(/^(0+)|[^\d]+/g, '')"> -->
<div class="sjnmh" @click="getNewAdd">{{ $t('jy94') }}</div>
</div>
</div>
@@ -94,10 +94,10 @@
},
methods: {
async getNewAdd() {
- if (this.applyNums == '') {
- this.$toast(this.$t('jy123'))
- return
- }
+ // if (this.applyNums == '') {
+ // this.$toast(this.$t('jy123'))
+ // return
+ // }
var opt = {
newCode: this.currentItem.code,
applyNums: this.applyNums,
@@ -409,7 +409,7 @@
height: 1.17rem;
border-radius: 0.13rem;
margin: 0 auto;
- margin-top: 0.43rem;
+ // margin-top: 0.43rem;
font-size: .37rem;
}
}
diff --git a/src/page/home/newshares/sharerecord.vue b/src/page/home/newshares/sharerecord.vue
index ee69ad7..4fa898b 100644
--- a/src/page/home/newshares/sharerecord.vue
+++ b/src/page/home/newshares/sharerecord.vue
@@ -28,15 +28,19 @@
}}</a>
</p>
</div>
- <div class="rlt"> {{ $t('hj130') }} <span>{{ item.bond }}</span></div>
+ <div class="rlt-container" v-if="item.status == 3">
+ <div class="rlt"> {{ $t('hj130') }} <span>{{ item.bond }}</span></div>
+ <div class="rlt">{{ $t('hj253') }} <span>{{ item.applyNums != null ? item.applyNums : 0 }}</span></div>
+ </div>
<div v-if="item.type == 1 && item.status == 3" @click="getrenjiao(item.id)" class="renjiao">{{ $t('hj250') }}</div>
</div>
<div class="gnj"></div>
<div class="plkm">
- <p><span>{{ $t('hj57') }}</span><a>{{ item.applyNums }}</a></p>
+ <!-- <p><span>{{ $t('hj57') }}</span><a>{{ item.applyNums }}</a></p> -->
<p><span>{{ $t('jy128') }}</span><a>{{ item.buyPrice }}</a></p>
- <p><span>{{ $t('jy127') }}</span><span>{{ item.orderNo }}</span></p>
+ <p><span>{{ $t('hj257') }}</span><a class="red-price">{{ item.discountPrice }}</a></p>
<p><span>{{ $t('hj59') }}</span><span>{{ item.addTime }}</span></p>
+ <p><span>{{ $t('jy127') }}</span><span>{{ item.orderNo }}</span></p>
</div>
</div>
</div>
@@ -253,10 +257,20 @@
}
}
- .rlt {
- font-sizE: .38rem;
- color: #666;
+ .rlt-container {
+ display: flex;
+ flex-direction: column;
margin-top: 0.266rem;
+ }
+
+ .rlt {
+ font-size: .32rem;
+ color: #666;
+ margin-top: 0.1rem;
+
+ &:first-child {
+ margin-top: 0;
+ }
span {
color: #d73d3d;
@@ -304,6 +318,10 @@
a {
color: #d73d3d;
font-size: 0.35rem;
+
+ &.red-price {
+ color: #d73d3d;
+ }
}
}
}
diff --git a/src/page/home/profitCalendar.vue b/src/page/home/profitCalendar.vue
new file mode 100644
index 0000000..a428c04
--- /dev/null
+++ b/src/page/home/profitCalendar.vue
@@ -0,0 +1,845 @@
+<template>
+ <div class="profit-calendar-page">
+ <!-- Header -->
+ <div class="header">
+ <div class="header-top">
+ <a class="back-btn" @click="$router.go(-1)"></a>
+ <h2 class="page-title">{{ $t('profitCalendar_title') }}</h2>
+ </div>
+ <div class="profit-display">
+ <div class="profit-label">{{ $t('profitCalendar_monthProfit') }}</div>
+ <div class="profit-value">{{ formatProfit(currentMonthProfit) }}</div>
+ </div>
+ <div class="date-tabs" v-if="false">
+ <div
+ class="tab-item"
+ :class="{ active: activeTab === 'today' }"
+ @click="activeTab = 'today'"
+ >
+ 今日
+ </div>
+ <div
+ class="tab-item"
+ :class="{ active: activeTab === 'month' }"
+ @click="activeTab = 'month'"
+ >
+ 本月
+ </div>
+ </div>
+ </div>
+
+ <!-- Chart Section -->
+ <div class="chart-section">
+ <div class="chart-date-range">{{ chartStartDate }} {{ $t('profitCalendar_to') }} {{ chartEndDate }}</div>
+ <div class="chart-title">{{ $t('profitCalendar_profitAmount') }}</div>
+ <div class="chart-container" ref="chartContainer"></div>
+ </div>
+
+ <!-- Calendar Section -->
+ <div class="calendar-section">
+ <div class="calendar-title">{{ $t('profitCalendar_calendar') }}</div>
+ <div class="month-navigation">
+ <span class="nav-arrow" @click="prevMonth">‹</span>
+ <div class="month-selector">
+ <span>{{ currentYear }}{{ $t('profitCalendar_year') }}{{ String(currentMonth).padStart(2, '0') }}{{ $t('profitCalendar_monthText') }}</span>
+ <span class="dropdown-icon">▼</span>
+ </div>
+ <span class="nav-arrow" @click="nextMonth">›</span>
+ </div>
+ <div class="month-summary">
+ <span class="summary-label">{{ String(currentMonth).padStart(2, '0') }}{{ $t('profitCalendar_monthText') }} {{ $t('profitCalendar_accountProfit') }}</span>
+ <span class="summary-value">{{ formatProfitShort(monthProfit) }}</span>
+ </div>
+ <div class="calendar-grid">
+ <div class="weekdays">
+ <div class="weekday" v-for="day in weekdays" :key="day">{{ day }}</div>
+ </div>
+ <div class="calendar-days">
+ <div
+ v-for="(day, index) in calendarDays"
+ :key="index"
+ class="calendar-day"
+ :class="{
+ 'other-month': day.otherMonth,
+ 'active': day.active,
+ 'today': day.isToday
+ }"
+ >
+ <span class="day-number">{{ day.date }}</span>
+ <span v-if="day.marketClosed" class="market-status">{{ $t('profitCalendar_marketClosed') }}</span>
+ <span v-if="!day.marketClosed && !day.otherMonth && day.profit !== 0"
+ class="profit-amount"
+ :class="{ 'profit-up': day.profit > 0, 'profit-down': day.profit < 0 }">
+ {{ day.profit > 0 ? '+' : '' }}{{ formatProfitShort(day.profit) }}
+ </span>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+import * as api from '@/axios/api'
+
+export default {
+ name: 'ProfitCalendar',
+ data() {
+ return {
+ activeTab: 'month',
+ currentMonthProfit: 0,
+ monthProfit: 0,
+ currentYear: new Date().getFullYear(),
+ currentMonth: new Date().getMonth() + 1,
+ chartStartDate: '',
+ chartEndDate: '',
+ calendarDays: [],
+ chartData: [],
+ chartDates: [],
+ marketClosedFlags: [], // 记录每个数据点是否是休市日
+ myChart: null,
+ profitData: {}, // 存储从接口获取的收益数据
+ loading: false
+ }
+ },
+ computed: {
+ weekdays() {
+ return [
+ this.$t('profitCalendar_sunday'),
+ this.$t('profitCalendar_monday'),
+ this.$t('profitCalendar_tuesday'),
+ this.$t('profitCalendar_wednesday'),
+ this.$t('profitCalendar_thursday'),
+ this.$t('profitCalendar_friday'),
+ this.$t('profitCalendar_saturday')
+ ]
+ }
+ },
+ mounted() {
+ this.loadProfitData()
+ },
+ beforeDestroy() {
+ if (this.myChart) {
+ this.myChart.dispose()
+ }
+ },
+ methods: {
+ // 加载收益数据
+ async loadProfitData() {
+ this.loading = true
+ try {
+ // 格式化年月参数为 "2026-01" 格式
+ const yearMonth = `${this.currentYear}-${String(this.currentMonth).padStart(2, '0')}`
+ const params = {
+ yearMonth: yearMonth
+ }
+ const res = await api.getProfitCalendar(params)
+
+ // 处理返回的数据
+ // 接口返回格式:data: [{recordDate: "2026-01-01", profit: 0, isWeekendAndHoliday: true}, ...]
+
+ if (res && res.data && Array.isArray(res.data)) {
+ const dataList = res.data
+
+ // 将数组转换为日历数据对象,以 recordDate 为 key
+ const calendarDataObj = {}
+ let totalProfit = 0 // 本月总收益
+
+ dataList.forEach(item => {
+ const { recordDate, profit, isWeekendAndHoliday } = item
+ const profitValue = profit || 0
+ calendarDataObj[recordDate] = {
+ active: profitValue !== 0, // 有收益数据(无论正负)的日期显示为active
+ marketClosed: isWeekendAndHoliday, // 周末或节假日显示休市
+ profit: profitValue
+ }
+ totalProfit += profitValue
+ })
+
+ // 更新收益数据
+ this.currentMonthProfit = totalProfit
+ this.monthProfit = totalProfit
+
+ // 更新图表数据,处理休市日:休市日保持前一个交易日的值,使线条连贯
+ this.chartDates = dataList.map(item => item.recordDate)
+ const processedChartData = []
+ const marketClosedFlags = [] // 记录每个数据点是否是休市日
+ let lastTradingDayProfit = null // 记录最后一个交易日的收益
+
+ dataList.forEach((item, index) => {
+ if (item.isWeekendAndHoliday) {
+ // 休市日:使用前一个交易日的收益值,保持水平
+ // 如果还没有交易日数据,使用0
+ processedChartData.push(lastTradingDayProfit !== null ? lastTradingDayProfit : 0)
+ marketClosedFlags.push(true) // 标记为休市日
+ } else {
+ // 交易日:使用实际收益值
+ const profitValue = item.profit || 0
+ lastTradingDayProfit = profitValue
+ processedChartData.push(profitValue)
+ marketClosedFlags.push(false) // 标记为交易日
+ }
+ })
+
+ this.chartData = processedChartData
+ this.marketClosedFlags = marketClosedFlags // 保存休市日标记
+
+ if (this.chartDates.length > 0) {
+ this.chartStartDate = this.chartDates[0]
+ this.chartEndDate = this.chartDates[this.chartDates.length - 1]
+ }
+
+ // 存储日历数据
+ this.profitData = calendarDataObj
+
+ // 初始化日历和图表
+ this.initCalendar()
+ this.initChart()
+ } else {
+ // 如果接口返回格式不同,可以根据实际情况调整
+ console.warn('收益数据格式异常:', res)
+ this.profitData = {}
+ this.chartDates = []
+ this.chartData = []
+ this.currentMonthProfit = 0
+ this.monthProfit = 0
+ this.initCalendar()
+ this.initChart()
+ }
+ } catch (error) {
+ console.error('加载收益数据失败:', error)
+ // 出错时仍然显示日历框架
+ this.initCalendar()
+ this.initChart()
+ } finally {
+ this.loading = false
+ }
+ },
+ initCalendar() {
+ const year = this.currentYear
+ const month = this.currentMonth
+ const firstDay = new Date(year, month - 1, 1)
+ const lastDay = new Date(year, month, 0)
+ const firstDayWeek = firstDay.getDay()
+ const daysInMonth = lastDay.getDate()
+
+ // 获取上个月的最后几天
+ const prevMonthLastDay = new Date(year, month - 1, 0).getDate()
+ const days = []
+
+ // 上个月的日期
+ for (let i = firstDayWeek - 1; i >= 0; i--) {
+ days.push({
+ date: prevMonthLastDay - i,
+ otherMonth: true,
+ active: false,
+ isToday: false,
+ marketClosed: false,
+ profit: 0
+ })
+ }
+
+ // 当前月的日期
+ const today = new Date()
+ for (let i = 1; i <= daysInMonth; i++) {
+ const date = new Date(year, month - 1, i)
+ const isToday = date.getDate() === today.getDate() &&
+ date.getMonth() === today.getMonth() &&
+ date.getFullYear() === today.getFullYear()
+
+ // 格式化日期字符串,用于查找收益数据(支持多种格式)
+ const dateStr1 = `${year}-${String(month).padStart(2, '0')}-${String(i).padStart(2, '0')}`
+ const dateStr2 = `${year}/${String(month).padStart(2, '0')}/${String(i).padStart(2, '0')}`
+ const dateStr3 = `${year}${String(month).padStart(2, '0')}${String(i).padStart(2, '0')}`
+
+ const dayData = this.profitData[dateStr1] || this.profitData[dateStr2] || this.profitData[dateStr3] || {}
+ const hasProfit = dayData.profit !== undefined && dayData.profit !== null && dayData.profit !== 0
+
+ days.push({
+ date: i,
+ otherMonth: false,
+ active: dayData.active === true || hasProfit, // 如果有收益数据(无论正负)则显示为active
+ isToday: isToday,
+ marketClosed: dayData.marketClosed === true,
+ profit: dayData.profit !== undefined && dayData.profit !== null ? dayData.profit : 0
+ })
+ }
+
+ // 补齐到42个格子(6行x7列)
+ const remaining = 42 - days.length
+ for (let i = 1; i <= remaining; i++) {
+ days.push({
+ date: i,
+ otherMonth: true,
+ active: false,
+ isToday: false,
+ marketClosed: false,
+ profit: 0
+ })
+ }
+
+ this.calendarDays = days
+ },
+ initChart() {
+ this.$nextTick(() => {
+ if (this.$refs.chartContainer) {
+ // 如果图表已存在,则销毁后重新创建
+ if (this.myChart) {
+ this.myChart.dispose()
+ }
+
+ this.myChart = echarts.init(this.$refs.chartContainer)
+
+ // 计算y轴最小值和最大值
+ let minValue = 0
+ let maxValue = 0
+ if (this.chartData.length > 0) {
+ const values = this.chartData.map(item => typeof item === 'object' ? item.value : item)
+ minValue = Math.min(...values, this.currentMonthProfit || 0)
+ maxValue = Math.max(...values, this.currentMonthProfit || 0)
+ } else {
+ minValue = this.currentMonthProfit || 0
+ maxValue = this.currentMonthProfit || 70000
+ }
+
+ // 如果有负数,需要向下取整;如果有正数,需要向上取整
+ // 确保 yAxisMin 和 yAxisMax 有合理的范围
+ let yAxisMin = minValue < 0 ? Math.floor(minValue / 10000) * 10000 : 0
+ let yAxisMax = maxValue > 0 ? Math.ceil(maxValue / 10000) * 10000 : 70000
+
+ // 如果数据全为负数,确保 yAxisMax 至少为 0
+ if (maxValue <= 0) {
+ yAxisMax = 0
+ }
+ // 如果数据全为正数,确保 yAxisMin 至少为 0
+ if (minValue >= 0) {
+ yAxisMin = 0
+ }
+
+ // 如果 minValue 和 maxValue 都为 0,设置默认范围
+ if (minValue === 0 && maxValue === 0) {
+ yAxisMin = 0
+ yAxisMax = 70000
+ }
+
+ // 计算合适的间隔
+ const range = yAxisMax - yAxisMin
+ const interval = range > 0 ? Math.ceil(range / 7) : 10000
+
+ // 准备分段数据:将数据分成多个连续段,每段使用不同颜色
+ // 涨:红色,跌:绿色,休市:黑色
+ const segments = []
+ let currentSegment = null
+
+ this.chartData.forEach((value, index) => {
+ const isClosed = this.marketClosedFlags && this.marketClosedFlags[index]
+ const isPositive = value >= 0
+ let segmentType = isClosed ? 'closed' : (isPositive ? 'positive' : 'negative')
+
+ if (!currentSegment || currentSegment.type !== segmentType) {
+ // 开始新的一段
+ if (currentSegment) {
+ segments.push(currentSegment)
+ }
+ currentSegment = {
+ type: segmentType,
+ data: [],
+ startIndex: index
+ }
+ }
+
+ currentSegment.data.push(value)
+ })
+
+ // 添加最后一段
+ if (currentSegment) {
+ segments.push(currentSegment)
+ }
+
+ const option = {
+ backgroundColor: 'transparent',
+ grid: {
+ left: '12%',
+ right: '8%',
+ top: '12%',
+ bottom: '12%',
+ containLabel: true
+ },
+ xAxis: {
+ type: 'category',
+ data: this.chartDates.length > 0 ? this.chartDates : [],
+ boundaryGap: false,
+ axisLine: {
+ show: false
+ },
+ axisLabel: {
+ show: true,
+ color: '#999',
+ fontSize: 11,
+ margin: 8
+ },
+ axisTick: {
+ show: false
+ },
+ splitLine: {
+ show: false
+ }
+ },
+ yAxis: {
+ type: 'value',
+ min: yAxisMin,
+ max: yAxisMax,
+ interval: interval,
+ axisLine: {
+ show: false
+ },
+ axisLabel: {
+ show: true,
+ color: '#999',
+ fontSize: 11,
+ formatter: (value) => {
+ return (value / 10000).toFixed(2) + 'w'
+ }
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: '#f5f5f5',
+ type: 'solid',
+ width: 1
+ }
+ }
+ },
+ tooltip: {
+ trigger: 'axis',
+ backgroundColor: 'rgba(50, 50, 50, 0.9)',
+ borderColor: 'transparent',
+ borderWidth: 0,
+ textStyle: {
+ color: '#fff',
+ fontSize: 12
+ },
+ padding: [8, 12],
+ formatter: (params) => {
+ const param = params[0]
+ const value = param.value
+ const idx = param.dataIndex
+ const isClosed = this.marketClosedFlags && this.marketClosedFlags[idx]
+ const color = isClosed ? '#333' : (value >= 0 ? '#d73d3d' : '#4caf50')
+ return `<div style="color: ${color}; font-weight: 600;">${param.name}</div><div style="margin-top: 4px;">${this.$t('profitCalendar_profitAmount')}: <span style="color: ${color};">${this.formatProfit(value)}</span></div>`
+ },
+ axisPointer: {
+ type: 'line',
+ lineStyle: {
+ color: '#999',
+ width: 1,
+ type: 'dashed'
+ }
+ }
+ },
+ series: segments.map((segment, segIndex) => {
+ // 为每段创建数据,其他位置填充 null
+ // 为了确保段与段之间连接,在段的开始位置包含前一个段的最后一个点
+ const segmentData = this.chartData.map((val, idx) => {
+ if (idx === segment.startIndex - 1 && segIndex > 0) {
+ // 包含前一个段的最后一个点,确保连接
+ return this.chartData[segment.startIndex - 1]
+ }
+ if (idx >= segment.startIndex && idx < segment.startIndex + segment.data.length) {
+ return segment.data[idx - segment.startIndex]
+ }
+ return null
+ })
+
+ // 根据段类型设置颜色
+ let lineColor = '#333'
+ let itemColor = '#333'
+ if (segment.type === 'positive') {
+ lineColor = '#d73d3d' // 涨:红色
+ itemColor = '#d73d3d'
+ } else if (segment.type === 'negative') {
+ lineColor = '#4caf50' // 跌:绿色
+ itemColor = '#4caf50'
+ } else {
+ lineColor = '#333' // 休市:黑色
+ itemColor = '#333'
+ }
+
+ return {
+ name: this.$t('profitCalendar_profitAmount'),
+ type: 'line',
+ data: segmentData,
+ smooth: false, // 不使用平滑,让休市日保持水平
+ connectNulls: true, // 连接空值,确保段与段之间连接
+ symbol: 'circle',
+ symbolSize: 6,
+ showSymbol: false,
+ lineStyle: {
+ width: 3,
+ color: lineColor
+ },
+ itemStyle: {
+ color: itemColor,
+ borderColor: '#fff',
+ borderWidth: 2
+ },
+ areaStyle: segment.type === 'positive' ? {
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: [{
+ offset: 0,
+ color: 'rgba(215, 61, 61, 0.15)'
+ }, {
+ offset: 1,
+ color: 'rgba(215, 61, 61, 0.02)'
+ }]
+ }
+ } : (segment.type === 'negative' ? {
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 0,
+ x2: 0,
+ y2: 1,
+ colorStops: [{
+ offset: 0,
+ color: 'rgba(76, 175, 80, 0.15)'
+ }, {
+ offset: 1,
+ color: 'rgba(76, 175, 80, 0.02)'
+ }]
+ }
+ } : null),
+ emphasis: {
+ focus: 'series',
+ itemStyle: {
+ shadowBlur: 8,
+ shadowColor: 'rgba(0, 0, 0, 0.3)'
+ }
+ },
+ z: 10 - segIndex // 确保后面的段覆盖前面的段
+ }
+ })
+ }
+
+ this.myChart.setOption(option)
+
+ // 响应式调整
+ window.addEventListener('resize', () => {
+ if (this.myChart) {
+ this.myChart.resize()
+ }
+ })
+ }
+ })
+ },
+ prevMonth() {
+ if (this.currentMonth === 1) {
+ this.currentMonth = 12
+ this.currentYear--
+ } else {
+ this.currentMonth--
+ }
+ this.loadProfitData()
+ },
+ nextMonth() {
+ if (this.currentMonth === 12) {
+ this.currentMonth = 1
+ this.currentYear++
+ } else {
+ this.currentMonth++
+ }
+ this.loadProfitData()
+ },
+ formatProfit(value) {
+ return value.toLocaleString('zh-CN')
+ },
+ formatProfitShort(value) {
+ const absValue = Math.abs(value)
+ if (absValue >= 10000) {
+ return (value / 10000).toFixed(2) + 'w'
+ }
+ return value.toFixed(2)
+ }
+ }
+}
+</script>
+
+<style lang="less" scoped>
+.profit-calendar-page {
+ background: #f5f5f5;
+ min-height: 100vh;
+}
+
+.header {
+ background: linear-gradient(-55deg, rgb(241, 22, 20), rgb(240, 40, 37));
+ padding: 0.4rem 0.3rem 0.6rem;
+ color: #fff;
+
+ .header-top {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 0.5rem;
+
+ .back-btn {
+ width: 0.48rem;
+ height: 0.48rem;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23ffffff'%3E%3Cpath d='M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z'/%3E%3C/svg%3E") no-repeat center;
+ background-size: 0.48rem 0.48rem;
+ cursor: pointer;
+ }
+
+ .page-title {
+ font-size: 0.48rem;
+ font-weight: 500;
+ margin: 0;
+ flex: 1;
+ text-align: center;
+ }
+
+ .header-actions {
+ display: flex;
+ gap: 0.3rem;
+
+ .action-icon {
+ font-size: 0.32rem;
+ cursor: pointer;
+ }
+ }
+ }
+
+ .profit-display {
+ text-align: center;
+ margin-bottom: 0.4rem;
+
+ .profit-label {
+ font-size: 0.32rem;
+ opacity: 0.9;
+ margin-bottom: 0.2rem;
+ }
+
+ .profit-value {
+ font-size: 0.8rem;
+ font-weight: 600;
+ }
+ }
+
+ .date-tabs {
+ display: flex;
+ gap: 0.2rem;
+ justify-content: center;
+
+ .tab-item {
+ padding: 0.2rem 0.4rem;
+ font-size: 0.32rem;
+ border-radius: 0.2rem;
+ cursor: pointer;
+ opacity: 0.7;
+ transition: all 0.3s;
+
+ &.active {
+ opacity: 1;
+ background: rgba(255, 255, 255, 0.2);
+ }
+ }
+ }
+}
+
+.chart-section {
+ background: #fff;
+ margin: 0.3rem;
+ border-radius: 0.24rem;
+ padding: 0.5rem 0.4rem;
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
+
+ .chart-date-range {
+ font-size: 0.28rem;
+ color: #999;
+ margin-bottom: 0.3rem;
+ font-weight: 400;
+ }
+
+ .chart-title {
+ font-size: 0.38rem;
+ color: #333;
+ font-weight: 600;
+ margin-bottom: 0.4rem;
+ letter-spacing: 0.5px;
+ }
+
+ .chart-container {
+ width: 100%;
+ height: 4.5rem;
+ margin-top: 0.2rem;
+ }
+}
+
+.calendar-section {
+ background: #fff;
+ margin: 0.3rem;
+ border-radius: 0.24rem;
+ padding: 0.5rem 0.4rem;
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
+
+ .calendar-title {
+ font-size: 0.42rem;
+ color: #333;
+ font-weight: 600;
+ margin-bottom: 0.4rem;
+ letter-spacing: 0.5px;
+ }
+
+ .month-navigation {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 0.3rem;
+
+ .nav-arrow {
+ font-size: 0.6rem;
+ color: #666;
+ cursor: pointer;
+ padding: 0.15rem 0.25rem;
+ transition: all 0.3s;
+ border-radius: 0.1rem;
+
+ &:hover {
+ background: #f5f5f5;
+ color: #333;
+ }
+
+ &:active {
+ background: #e9ecef;
+ }
+ }
+
+ .month-selector {
+ display: flex;
+ align-items: center;
+ gap: 0.1rem;
+ font-size: 0.38rem;
+ color: #333;
+ font-weight: 500;
+
+ .dropdown-icon {
+ font-size: 0.24rem;
+ color: #999;
+ margin-left: 0.05rem;
+ }
+ }
+ }
+
+ .month-summary {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0.35rem 0;
+ border-bottom: 1px solid #f0f0f0;
+ margin-bottom: 0.35rem;
+
+ .summary-label {
+ font-size: 0.32rem;
+ color: #666;
+ font-weight: 400;
+ }
+
+ .summary-value {
+ font-size: 0.38rem;
+ color: #d73d3d;
+ font-weight: 700;
+ letter-spacing: 0.5px;
+ }
+ }
+
+ .calendar-grid {
+ .weekdays {
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ margin-bottom: 0.2rem;
+
+ .weekday {
+ text-align: center;
+ font-size: 0.28rem;
+ color: #999;
+ padding: 0.2rem 0;
+ }
+ }
+
+ .calendar-days {
+ display: grid;
+ grid-template-columns: repeat(7, 1fr);
+ gap: 0.1rem;
+
+ .calendar-day {
+ aspect-ratio: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ border-radius: 0.12rem;
+ position: relative;
+ transition: all 0.2s;
+
+ .day-number {
+ font-size: 0.33rem;
+ color: #333;
+ font-weight: 500;
+ }
+
+ .market-status {
+ font-size: 0.2rem;
+ color: #999;
+ margin-top: 0.05rem;
+ }
+
+ .profit-amount {
+ font-size: 0.22rem;
+ margin-top: 0.08rem;
+ font-weight: 600;
+ padding: 0.02rem 0.08rem;
+ border-radius: 0.08rem;
+ background: rgba(255, 255, 255, 0.8);
+
+ &.profit-up {
+ color: #d73d3d; // 红色表示涨
+ background: rgba(215, 61, 61, 0.1);
+ }
+
+ &.profit-down {
+ color: #4caf50; // 绿色表示跌
+ background: rgba(76, 175, 80, 0.1);
+ }
+ }
+
+ &.other-month {
+ .day-number {
+ color: #ccc;
+ }
+ }
+
+ &.active {
+ background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
+ font-weight: 600;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+ }
+
+ &.today {
+ background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%);
+ border: 1px solid #90caf9;
+
+ .day-number {
+ color: #1976d2;
+ font-weight: 700;
+ }
+ }
+ }
+ }
+ }
+}
+</style>
diff --git a/src/page/kline/buyStock.vue b/src/page/kline/buyStock.vue
index 915c220..07b43e8 100644
--- a/src/page/kline/buyStock.vue
+++ b/src/page/kline/buyStock.vue
@@ -4,62 +4,54 @@
<div class="wenebn">
<h6>{{name}}</h6>
<p class="">{{nowPrice}}</p>
- <!-- <p class="">{{ currentItem.p }} {{ currentItem.zdp ? currentItem.zdp.toFixed(2) + '%' : '0.00%' }}</p> -->
</div>
</div>
- <div style="height:1.5rem">
-
- </div>
+ <div style="height:1.5rem"></div>
<div class="goumais">
- <div class="xiaoge"><span><img
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABEklEQVQ4jaVSwUoDMRScl2alsIuIB89C9Su8iHqrWryKFy12Tz36cd79BfFiS13woKAfINuMpG7SbGjL2r5bJvMmM0Ow6ci6++eDIifwoNc2ILIvIh3VlH9287IdCcwCNBLo5cVxmmZf3fu3g0ABBJoJALJrAK1arR2H2GUjSxxc5cXR6fVz4s6mWvizXWFiHSwQuOiPDw35lGZZL3zNZZ5jAi50INK2ZBJbAeYzewHn4PJudNK9fd2Lyaau6jOHDixHKa0fkyQZhmSfOSqMQQRTubAfSRPQ4YUsKSzEfIS43VWFhQ6coIrJqwqr9TLDAEViPCUnDi/L6QeBgkp5zBDvBvj+KcvPOcYJyVGt638PgF/kfWPjHkHUbAAAAABJRU5ErkJggg==">{{ $t('jy18') }}</span>
- <div class="rtyh">
- <div class="kunk"><input :placeholder="$t('jy125')" v-model="buyNum"
- @input="buyNum = buyNum.replace(/^(0+)|[^\d]+/g, '')" type="number"><a class="shou">{{ $t('hj117') }}</a>
- </div>
+ <!-- 买入价格 -->
+ <div class="price-section">
+ <label class="section-label">{{ $t("hj130") }}</label>
+ <div class="erty price-input">
+ <input type="number" class="inpy" v-model="buyPrice" disabled :placeholder="nowPrice.toString()">
+ <a class="current-price-btn" @click="setCurrentPrice">{{ $t("hj81") }}</a>
</div>
</div>
- <p class="shougu">1{{ $t('hj117') }}=100{{ $t('jy96') }}</p>
- <div class="xiaoge">
- <span class="eduleft"><img class="eduleftimg"
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABp0lEQVQ4jZXRTUsbURgF4HPeSZuIm9goFOpXQrtrQaiICG4KGVGxwU1WwYWgpeBPKCn1X2jSrHQjbiJaYUoX7nXlQhAUg13ED2bcuTH3lTstbarNtJ6Bgbnc59yXO0REcrNHgxTZpkgnQGj4AErL7Df2WhZYLI7jgdxTReUveATkQiwK2xMCP3i7sz5wPTl71GXxl8+ZC7tnYq5GEVmQSBxchTg3XytKLFZ3nFh96t3px3Djz0n4L5wtHKTa2tvPAC4a1YYCiw1jnoo4WYqsShS2648TCdqTjKqAdCiixijD+wAgUdhmq5y+NKpFkB9AFo3RT14lff7jQgWMws15M3OYiscT3C71Xg7n99s6Up0bDdUBTs+d1EF+9/1gtBVujsXJJ6kNJV/fGOOKAlVVvEp2JN2H4m9Lz3bF876+V+iKAmtT87XcQ3D4N+0r0bcs2bGxEsCCAvnN5d7q/+BfBTbx/rJkXbekQAFkfmupJyyJwn8U2DzqL4vbNIkfBF4UvlcQlqQrvycRZ98AmVbYxrm7YK6qeuy/3Mw8f9Gt5NCNMeOtMADcAijV/2tFJVE6AAAAAElFTkSuQmCC">{{ $t('jy135') }}</span>
- <div class="eduright">
- <a class="ertyu">¥{{ userinfo.userAmt }}</a>
+ <!-- 买入数量 -->
+ <div class="quantity-section">
+ <label class="section-label">{{ $t("jy87") }}</label>
+ <div class="erty quantity-input">
+ <input :placeholder="$t('jy87')" type="number" class="inpy" v-model="buyNum"
+ @input="buyNum = buyNum.replace(/^(0+)|[^\d]+/g, ''); updateHandlingFee()">
+ <a>{{ $t("hj117") }}</a>
</div>
</div>
- <div class="rtyh">
- <!-- <div class="fangxi">
- <a class="fanh" :class="buyType == 0 ? 'xuk' : ''" @click="buyType = 0">买涨</a>
- <a class="fanh" :class="buyType == 1 ? 'xuk' : ''" @click="buyType = 1">买跌</a>
- </div> -->
- </div>
- <div class="xiaoge">
- <span class="eduleft"><img
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB7UlEQVQ4ja2SwWsTQRjF3zc7MbuJpQgFD1LbIIIHQbwKFtEexGJ7iKigUovm6klP/gEG6s2LJUgPWulBRawH0cQUMYqHCiUVFEPSePNiEsWa2t15sjGpW8mKgu8wwwzzfvO9b0aOnS9dIDm/XK0WF7LDxD/KB6xCZBMgHw35FJCs63m5B9M7q3+DkrGzb+NaR+5AJEJihcB+EdVLoESRLMnct2Yz//jmrk9dAf6QTJVnACnezSTSe4fzamBwcA9FDgKYhMgyRLYD8to1JqcsK1ur1wvPZ3c3A4DKDIHivUwi3SGPTJR6dSRSX3PdrZalt0CpowRGIbIPkO8ECi55WSVTlbQhRwG5NHaufKoDaHVTpHXHXGbg3dxU/9WHU/1DJC4SKHvAGkT1ac+YW0pZ875BLOvNr3A/zea3zARcAyw8ur5t3F/r+zd2LAFY6tYe06mkrcOpD1EqtRmQ6NBEpefZdOKLDnse36zWK2kjtT5OyBWKwHZi/tZJFQYI9qCjwouXt2uNhlOrNxyxrDOtCGEA23HoeWZDhM+LSe/VIrzgudAKms1VzzebQIRuCgUYMu6bCYn/CbABf2j8fY9tO7MEDlCpGCHwG2aIFQPkldYnnlzr+xoaIRq1T0PkSNDcnmNQasQzXP9o/0cAfgDTaMAiD+M0wAAAAABJRU5ErkJggg==">{{ $t('jy532') }}</span>
- <div class="rtyh" @click="showPicker = true">
- <div class="kunk">
- <input placeholder="请选择" disabled="disabled" v-model="lever" class="canwei">
- <img class="gangganicon"
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAGCAYAAAAVMmT4AAAAAXNSR0IArs4c6QAAAGRJREFUKFNjnDFjhiUjI2Pr////GRlwAEZGxpcsLCypYAUzZ87MYWBgmMTAwIBNw8v///87ZWRkXINL4tAAVwgyFMUkNA0oCjEUIzmp+v///84gq5G9gdVT/f39AoWFhR/Q/QsATGgt64otJQ8AAAAASUVORK5CYII=">
- </div>
+ <!-- 仓位选择 -->
+ <div class="position-section">
+ <label class="section-label">{{ $t("hj226") }}</label>
+ <div class="position-buttons">
+ <div class="position-btn" :class="{ active: selectedPosition === '1/4' }" @click="selectPosition('1/4')">{{ $t('hj258') }}</div>
+ <div class="position-btn" :class="{ active: selectedPosition === '1/3' }" @click="selectPosition('1/3')">{{ $t('hj259') }}</div>
+ <div class="position-btn" :class="{ active: selectedPosition === '1/2' }" @click="selectPosition('1/2')">{{ $t('hj260') }}</div>
+ <div class="position-btn" :class="{ active: selectedPosition === 'full' }" @click="selectPosition('full')">{{ $t('hj261') }}</div>
</div>
</div>
- <div class="xiaoge">
- <span class="eduleft"><img
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACEElEQVQ4jY1TPWhTURg9331vcdP6PzSpTtahi0InFS2CjakxEoNgFNrykqibTgpqdXDTRVAbWsRJfNBBGqKmFasoWBCEWEX8qfkRcWptHRTk3SPJa14ebah+cIcL55x7zvm4gqUjB/s+diplxAnEACGBEYe0R4c3TwKgn+EJRPs+bDcMs0o6DMhqTY4CYusqXam4iPRockaUsh1H29mhtleeQMz6/JhEJ0SyJOyZ2dkHEyPbfvlf2hF7vWJVS0u3iIo7ZBgik9nB1i64AtOM9n/qaBKn6YSsUkc4/bUWRWEhFIk//ytAVLFuelWvgstz0JOqnN2fLKcX4z0Hvj4RsYqnI8lSoH4PJ8tXCJwRpV7W8VpcvNnUgUg7RJ5GUpUuDZwkcEyTe3KDrQUskJU/Qq0DaTh4lM+nSIw7ZIHAUU3uzmUChUYH4uFdAZE5AGvrgN9FS08Xi0kCF0WpXblM4J3foDLNdZr44UUgOQaRBIBnddBUfiengKvNtyC9GnzY2ILIZWUYiQPJcugfy8DeE99jDlk9lzyB+5ngG615SgN2yCpFlyEfp8gdivRO3Nr43q3fN+FU5QiBIUBuz83Pn3t+d+vPGjH9bSVEXaPIIYdMPLm5IestbPEr3Va5XRnGsAMENTFAEVOUMeCQb5Vp9o9dX/PFj2/2nbFl3wsJtm1KUOQCRFED58dvrL+3BAjgL/OP2zMWLMK9AAAAAElFTkSuQmCC">{{ $t('jy136') }}</span>
- <div class="eduright"><a class="ertyu"> ¥{{ (nowPrice * buyNum * 100 ).toFixed(2) }}</a>
- </div>
+ <!-- 金额信息 -->
+ <div class="amount-info">
+ <p class="plm">
+ <span>{{ $t("hj54") }}</span>
+ <a>¥{{ (userinfo.enableAmt || userinfo.userAmt || 0).toFixed(2) }}</a>
+ </p>
+ <p class="plm">
+ <span>{{ $t("hj44") }}</span>
+ <a>¥{{ handlingFee }}</a>
+ </p>
+ <p class="plm">
+ <span>{{ $t("jy88") }}</span>
+ <a class="red-amount">¥{{ getActualAmount() }}</a>
+ </p>
</div>
- <!-- <div class="xiaoge">
- <span class="eduleft"><img
- src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAbdJREFUOE+N0z9IG1EcB/Dv76URtGiXekEsgRCHunToXZrV5A7XIB0LzeTUreJQMnTRrYODCFUchDpauulwgSCK4AUXyVAIpVCKuUtSIdr8UfJ+5bB3TVLUu+3de78P3/vd7xEGHgaophofJSFLxJ3B/X9rYsUyH1HvAbe4qukbTDQHxlakaL69DXA040IpmqM+4BWDEBGMvS4o7gG2mo4LUOay3l2LfS+0XbQP6C0eb1Ze1kYmspIx7QKVZ7MPEZYZIbDNQFw5D/+k8m7HBwaLqVS6qiaMeQ+wNeMLETLepzCwGLHMDz7gaPobEK0yo0rA9c1BHgGwphTzuZqaSkqIDAS9Y5avScoj5aRQ9oGqZrwHsWy2O6u9DYueHjQI6LrvKmoqKYTI/Wq0Xz39enjR1wMXkITfbqzbf9n/O30J7gLqyeTYZTMc8ohoa7TZ18T7EjiaUWAg5gGCsDxumeuBEzjPZ6ZCHBrygFYY9pPjfD0wYCf0zwSK+gnAK4+t/KfAwJmWfvGAQsMecIXOt0lr/0dgwEnoGwAm/UFi2owUzZ3AwL2XyVb1BRK0BPDfKQw+DYqVH/sD+c0JIKaNn8sAAAAASUVORK5CYII=">手续费</span>
- <div class="eduright"><a class="ertyu">HKD26600640.90</a></div>
- </div> -->
</div>
- <div class="mail" @click="setBuy">{{ $t('hj85') }}</div>
- <van-popup v-model="showPicker" round position="bottom">
- <van-picker :columns="siteLeverList" @cancel="showPicker = false" @confirm="onConfirm" show-toolbar />
- </van-popup>
+ <div class="mail" @click="setBuy">{{ $t("hj85") }}{{ $t("jy150") }}</div>
</div>
</template>
<script>
@@ -74,8 +66,8 @@
return {
showPicker: false,
currentItem: '',
- userinfo: '',
- settingdetail: '',
+ userinfo: {},
+ settingdetail: {},
siteLeverList: [],
nowPrice: 0,
buyType: 0, // 0 买入 1 卖出
@@ -85,6 +77,9 @@
code:'',
id:'',
buying: false,
+ buyPrice: '',
+ selectedPosition: '',
+ handlingFee: '0.00'
}
},
mounted() {
@@ -99,13 +94,89 @@
}
if (this.$route.query.m) {
this.nowPrice = Number(this.$route.query.m)
+ this.buyPrice = this.nowPrice.toString()
}
- // this.currentItem = JSON.parse(decodeURIComponent(this.$route.query.item))
-
this.getUserInfo()
this.getuserSetting()
},
+ watch: {
+ buyPrice() {
+ this.updateHandlingFee()
+ },
+ buyNum() {
+ this.updateHandlingFee()
+ }
+ },
methods: {
+ setCurrentPrice() {
+ this.buyPrice = this.nowPrice.toString()
+ this.updateHandlingFee()
+ },
+ selectPosition(position) {
+ this.selectedPosition = position
+ if (this.userinfo.enableAmt && this.buyPrice) {
+ let availableAmount = parseFloat(this.userinfo.enableAmt || this.userinfo.userAmt || 0)
+ let currentPrice = parseFloat(this.buyPrice) || 0
+ let positionRatio = 0
+
+ switch(position) {
+ case '1/4':
+ positionRatio = 0.25
+ break
+ case '1/3':
+ positionRatio = 0.333
+ break
+ case '1/2':
+ positionRatio = 0.5
+ break
+ case 'full':
+ positionRatio = 1
+ break
+ }
+
+ // 计算可买入的手数(1手=100股)
+ let maxAmount = availableAmount * positionRatio
+ let maxHands = Math.floor(maxAmount / (currentPrice * 100))
+ this.buyNum = maxHands.toString()
+ this.updateHandlingFee()
+ }
+ },
+ async updateHandlingFee() {
+ if (this.buyPrice && this.buyNum) {
+ await this.getHandlingFee()
+ } else {
+ this.handlingFee = '0.00'
+ }
+ },
+ async getHandlingFee() {
+ if (!this.buyPrice || !this.buyNum) {
+ return '0.00'
+ }
+ try {
+ let opt = {
+ nowPrice: this.buyPrice,
+ buyNum: Number(this.buyNum) * 100
+ }
+ let data = await api.getFee(opt)
+ if (data.status === 0) {
+ this.handlingFee = (data.data || 0).toFixed(2)
+ return this.handlingFee
+ } else {
+ return '0.00'
+ }
+ } catch (error) {
+ console.error('获取手续费失败:', error)
+ return '0.00'
+ }
+ },
+ getActualAmount() {
+ if (this.buyPrice && this.buyNum) {
+ let price = parseFloat(this.buyPrice) || 0
+ let num = parseFloat(this.buyNum) || 0
+ return (price * num * 100).toFixed(2)
+ }
+ return '0.00'
+ },
onConfirm(item) {
console.log(item)
this.showPicker = false
@@ -164,6 +235,10 @@
this.$router.push('/smrz')
return
}
+ if (!this.buyPrice) {
+ Toast('请输入价格')
+ return
+ }
if (this.buyNum * 100 < this.settingdetail.buyMinNum) {
this.$message.error(this.$t('jy137') + this.settingdetail.buyMinNum / 100 + this.$t('hj117'));
return
@@ -172,29 +247,13 @@
this.$message.error(this.$t('jy138') + this.settingdetail.buyMaxNum / 100 + this.$t('hj117'));
return
}
- // if (!this.agree) {
- // Toast('需同意合作协议才能交易!')
- // } else if (isNull(this.selectNumber) && isNull(this.autoNumber)) {
- // Toast('请选择购买手数')
- // } else if (isNull(this.selectType)) {
- // Toast('请选择买卖方向')
- // } else if(isNull(this.subaccountNumber)) {
- // Toast('请选择子账户')
- // } else {}
if (this.buying) {
return;
}
this.buying = true
let opts = {}
opts = {
- // stockId: this.detail.id,
- // buyNum: this.selectNumber ? this.selectNumber * 100 : 0, // 单位为手
- // buyType: this.selectType,
- // lever: this.selectCycle ? this.selectCycle : 0,
- // subaccountNumber:this.subaccountNumber
- //买入是买涨buyType:0, 卖出是买跌buyType:1,卖出的状态是0,买入的状态是1
buyNum: Number(this.buyNum) * 100, // 单位为手
- //buyNum: (this.num.match(/\d+/g))[0] * 100, // 单位为手
lever: this.lever,
buyType :0,
stockId: this.id,
@@ -224,18 +283,6 @@
}
</script>
<style lang="less" scoped>
-/deep/ .van-picker__cancel{
- font-size: 0.4rem;
-}
-/deep/ .van-picker__confirm{
- font-size: 0.4rem;
-}
-/deep/ .van-picker__toolbar{
- height: 1.3rem;
-}
-/deep/ .van-picker-column{
- font-size: 0.4rem;
-}
.headf {
height: 1.17rem;
position: fixed;
@@ -279,115 +326,105 @@
.goumais {
width: 9.21rem;
margin: 0 auto;
+ padding: 0.4rem 0;
- .xiaoge {
- margin-top: 10px;
+ .price-section, .quantity-section, .position-section {
+ margin-bottom: 0.4rem;
+
+ .section-label {
+ display: block;
+ color: #333;
+ font-size: 0.35rem;
+ margin-bottom: 0.2rem;
+ }
+ }
+
+ .erty {
+ width: 100%;
+ height: 1.07rem;
+ border: 0.0266rem solid #999;
+ border-radius: 0.13rem;
display: flex;
- height: 1.50rem;
justify-content: space-between;
align-items: center;
- margin: 5px 0;
+
+ .inpy {
+ height: 1.07rem;
+ flex: 1;
+ margin-left: 0.266rem;
+ background: transparent;
+ font-size: .37rem;
+ color: #000;
+ border: none;
+ outline: none;
+ }
+
+ a {
+ height: 0.64rem;
+ border-left: 0.0266rem solid #999;
+ width: 1.5rem;
+ margin-right: 0.266rem;
+ text-align: center;
+ font-size: .32rem;
+ color: #666;
+ line-height: .64rem;
+
+ &.current-price-btn {
+ color: #666;
+ cursor: pointer;
+ }
+ }
+ }
+
+ .position-buttons {
+ display: flex;
+ gap: 0.2rem;
+ margin-top: 0.2rem;
+
+ .position-btn {
+ flex: 1;
+ height: 0.8rem;
+ border: 0.0266rem solid #999;
+ border-radius: 0.13rem;
+ text-align: center;
+ line-height: 0.8rem;
+ font-size: 0.32rem;
+ color: #666;
+ cursor: pointer;
+ transition: all 0.3s;
+
+ &.active {
+ border-color: #f33030;
+ background: #f33030;
+ color: #fff;
+ }
+ }
+ }
+
+ .amount-info {
+ margin-top: 0.4rem;
+ }
+
+ .plm {
+ width: 100%;
+ margin: 0.2rem 0;
+ display: flex;
+ justify-content: space-between;
span {
- display: flex;
- align-items: center;
- color: #333;
- font-size: .43rem;
- line-height: 1.5rem;
-
- img {
- width: 0.43rem;
- height: 0.43rem;
- margin-right: 0.133rem;
- }
- }
-
- .rtyh {
- background-color: rgb(245, 245, 245);
- width: 4.75rem;
- border: 1px solid rgb(224, 224, 224);
- border-radius: 5px;
- display: flex;
-
-
- .kunk {
- border-radius: 0.08rem;
- display: flex;
- align-items: center;
-
- input {
- color: #000;
- font-size: .37rem;
- background-color: rgb(245, 245, 245);
- width: 4rem;
- padding-left: 10px;
- height: 1.07rem !important;
- }
-
- a {
- color: #333;
- font-size: .4rem;
- line-height: 1.07rem;
- margin-right: 0.266rem;
- }
-
- .gangganicon {
- width: 0.26rem;
- height: 0.24rem;
- }
- }
- }
-
- .eduleft {
- display: flex;
- align-items: center;
-
- .eduleftimg {
- width: 0.43rem;
- height: 0.43rem;
- margin-right: 0.13rem;
- }
- }
-
- .eduright {
- justify-content: space-between;
- }
-
- .ertyu {
- color: #333;
- font-size: .4rem;
- line-height: 1.5rem;
- }
- }
-
- .fangxi {
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-size: .4rem;
- text-align: center;
- margin-top: 20px;
-
- .fanh {
- width: 49%;
- height: 1.07rem;
- line-height: 1.07rem;
- border-radius: 5px;
color: #999;
- border: 1px solid #e0e0e0;
+ font-size: .32rem;
}
- .xuk {
- color: #fff;
- background: linear-gradient(-55deg,rgb(241, 22, 20),rgb(240, 40, 37));
- border: 1px solid #fff;
+ a {
+ color: #333;
+ font-size: .32rem;
+
+ &.red-amount {
+ color: #f33030;
+ }
}
}
-}
-
-.shougu {
- color: rgb(153, 153, 153);
- text-align: right;
}
.mail {
@@ -400,5 +437,6 @@
font-size: .43rem;
text-align: center;
background: linear-gradient(-55deg,rgb(241, 22, 20),rgb(240, 40, 37));
+ cursor: pointer;
}
</style>
diff --git a/src/page/login/login.vue b/src/page/login/login.vue
index 722ac7c..6157d0e 100644
--- a/src/page/login/login.vue
+++ b/src/page/login/login.vue
@@ -41,30 +41,74 @@
style="color: rgb(54,124,248);">{{ $t('hj15') }}</span> </div>
</div>
<el-alert v-show="alertShow" :closable="closable" :title="texts" :type="eltype" center></el-alert> -->
- <div class="header">
- <div class="bock" @click="$router.go(-1)"></div>
- </div>
- <div class="logo">
- </div>
- <div class="formInt">
- <div class="formDemo">
- <span></span>
- <input :placeholder="$t('jy311')" v-model="userName"/>
+ <div class="login_content">
+ <!-- Logo区域 -->
+ <div class="logo_container">
+ <img :src="Logo" alt="logo" class="logo_icon" />
</div>
- <div class="formDemos">
- <span class="pwdIcon"></span>
- <input type="password" :placeholder="$t('hj30')" v-model="userPassword" @input="handleInput()"/>
+
+ <!-- 输入框区域 -->
+ <div class="input_container">
+ <div class="input_group">
+ <label class="input_label">{{ $t('login_phoneNumber') }}</label>
+ <div class="input_wrapper">
+ <input
+ class="input_field"
+ type="tel"
+ :placeholder="$t('jy311')"
+ v-model="userName"
+ maxlength="11"
+ />
+ <span v-if="userName" class="clear_icon" @click="userName = ''">×</span>
+ </div>
+ </div>
+ <div class="input_group">
+ <label class="input_label">{{ $t('login_loginPassword') }}</label>
+ <div class="input_wrapper">
+ <input
+ class="input_field password_input"
+ :type="showPassword ? 'text' : 'password'"
+ :placeholder="$t('hj30')"
+ v-model="userPassword"
+ @input="handleInput()"
+ />
+ <span
+ class="password_toggle"
+ @click="togglePassword"
+ :class="showPassword ? 'icon_eye_open' : 'icon_eye_close'"
+ ></span>
+ <span v-if="userPassword" class="clear_icon" @click="userPassword = ''">×</span>
+ </div>
+ </div>
+ </div>
+
+ <!-- 用户协议复选框 -->
+ <div class="agreement_container">
+ <input
+ type="checkbox"
+ id="agreement"
+ v-model="agreedToTerms"
+ class="agreement_checkbox"
+ />
+ <label for="agreement" class="agreement_label">
+ {{ $t('login_agreeToTerms') }}<span class="agreement_link" @click.stop="viewAgreement">《{{ $t('login_userAgreement') }}》</span>
+ </label>
+ </div>
+
+ <!-- 按钮区域 -->
+ <div class="button_container">
+ <div @click="loginIN" v-loading="loginBtn" class="login_btn">{{ $t('hj24') }}</div>
+ <div @click="$router.push('/register')" class="register_btn">{{ $t('login_openAccountRegister') }}</div>
</div>
</div>
- <div class="djzc" @click="$router.push('/register')">{{ $t('jy310') }}</div>
- <div @click="loginIN" v-loading="loginBtn" class="loginBtn">{{ $t('hj24') }}</div>
+
<el-alert v-show="alertShow" :closable="closable" :title="texts" :type="eltype" center></el-alert>
</div>
</template>
<script>
import { Toast } from 'mint-ui'
import headers from "./components/header.vue";
-import Logo from "@/assets/img/LOGO2.png";
+import Logo from "@/assets/imgRed/logo.png";
import * as api from '@/axios/api';
export default {
@@ -88,6 +132,8 @@
docmHeight: document.documentElement.clientHeight, //默认屏幕高度
showHeight: document.documentElement.clientHeight, //实时屏幕高度
hideshow: true, //显示或者隐藏footer
+ showPassword: false, // 密码显示/隐藏
+ agreedToTerms: false, // 是否同意用户协议
};
},
components: {
@@ -133,8 +179,18 @@
this.btnClass = false;
}
},
+ togglePassword() {
+ this.showPassword = !this.showPassword;
+ },
+ viewAgreement() {
+ // 跳转到用户协议页面
+ this.$router.push('/about?e=2');
+ },
async loginIN() {
-
+ if (!this.agreedToTerms) {
+ Toast(this.$t('login_pleaseAgreeToTerms'));
+ return;
+ }
this.dengl = true
setTimeout(() => {
this.dengl = false
@@ -187,11 +243,251 @@
<style scoped lang="less">
.login_page {
position: relative;
- background-color: #fff !important;
+ background: url('~@/assets/imgRed/14.png') no-repeat center center;
+ background-size: cover;
width: 100%;
- height: 100%;
- overflow: hidden;
+ min-height: 100vh;
+ display: flex;
+ // align-items: center;
+ justify-content: center;
+ // padding: 1rem;
overflow-y: auto;
+}
+
+.login_content {
+ margin-top: 50px;
+ width: 100%;
+ max-width: 8.5rem;
+ max-height: 61vh;
+ border-radius: 0.4rem;
+ padding: .375rem;
+ background-color: rgba(255, 255, 255, .5);
+ box-shadow: 0 0.1rem 0.3rem rgba(0, 0, 0, 0.1);
+}
+
+// Logo区域
+.logo_container {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.logo_icon {
+ height: 3rem;
+ object-fit: contain;
+ display: block;
+}
+
+.logo_text {
+ display: flex;
+ flex-direction: column;
+}
+
+.logo_title {
+ font-size: 0.7rem;
+ font-weight: 600;
+ color: #000;
+ line-height: 1.2;
+}
+
+.logo_subtitle {
+ font-size: 0.28rem;
+ color: #666;
+ letter-spacing: 0.05rem;
+ margin-top: 0.1rem;
+}
+
+// 输入框区域
+.input_container {
+ width: 100%;
+ margin-bottom: 0.8rem;
+}
+
+.input_group {
+ margin-bottom: 0.6rem;
+}
+
+.input_label {
+ display: block;
+ font-size: 0.32rem;
+ color: #000;
+ margin-bottom: 0.25rem;
+ font-weight: 500;
+}
+
+.input_wrapper {
+ position: relative;
+ width: 100%;
+}
+
+.input_field {
+ width: 100%;
+ height: 1rem;
+ background: #fff;
+ border: 1px solid #e0e0e0;
+ border-radius: 0.15rem;
+ padding: 0 0.3rem;
+ padding-right: 0.7rem;
+ font-size: 0.32rem;
+ color: #000;
+ box-sizing: border-box;
+
+ &::placeholder {
+ color: #999;
+ font-size: 0.32rem;
+ }
+
+ &:focus {
+ outline: none;
+ border-color: #2567ff;
+ }
+}
+
+.password_input {
+ padding-right: 1.4rem;
+}
+
+.clear_icon {
+ position: absolute;
+ right: 0.3rem;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 0.35rem;
+ height: 0.35rem;
+ line-height: 0.35rem;
+ text-align: center;
+ color: #999;
+ font-size: 0.4rem;
+ cursor: pointer;
+ background: #f5f5f5;
+ border-radius: 50%;
+
+ &:hover {
+ background: #e0e0e0;
+ }
+}
+
+.password_toggle {
+ position: absolute;
+ right: 0.3rem;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 0.4rem;
+ height: 0.4rem;
+ cursor: pointer;
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: center;
+ z-index: 1;
+}
+
+.password_wrapper .clear_icon {
+ right: 0.75rem;
+}
+
+.icon_eye_close {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24'%3E%3C/path%3E%3Cline x1='1' y1='1' x2='23' y2='23'%3E%3C/line%3E%3C/svg%3E");
+}
+
+.icon_eye_open {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'%3E%3C/path%3E%3Ccircle cx='12' cy='12' r='3'%3E%3C/circle%3E%3C/svg%3E");
+}
+
+// 用户协议区域
+.agreement_container {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-bottom: 1rem;
+}
+
+.agreement_checkbox {
+ width: 0.32rem;
+ height: 0.32rem;
+ margin-right: 0.25rem;
+ cursor: pointer;
+ appearance: none;
+ border: 2px solid #2567ff;
+ border-radius: 50%;
+ position: relative;
+
+ &:checked {
+ background-color: #2567ff;
+ border-color: #2567ff;
+
+ &::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: 0.12rem;
+ height: 0.12rem;
+ background: #fff;
+ border-radius: 50%;
+ }
+ }
+}
+
+.agreement_label {
+ font-size: 0.28rem;
+ color: #000;
+ cursor: pointer;
+ user-select: none;
+}
+
+.agreement_link {
+ color: #2567ff;
+ cursor: pointer;
+}
+
+// 按钮区域
+.button_container {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+ margin-top: 1rem;
+}
+
+.login_btn {
+ width: 100%;
+ height: 1rem;
+ background: #e03936;
+ border-radius: 0.15rem;
+ color: #fff;
+ font-size: 0.36rem;
+ font-weight: 600;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ transition: background 0.3s;
+ border: none;
+
+ &:active {
+ background: #c62828;
+ }
+}
+
+.register_btn {
+ width: 100%;
+ height: 1rem;
+ background: #2567ff;
+ border-radius: 0.15rem;
+ color: #fff;
+ font-size: 0.36rem;
+ font-weight: 600;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ transition: background 0.3s;
+ border: none;
+
+ &:active {
+ background: #1a56d9;
+ }
}
.logins_content {
@@ -425,116 +721,5 @@
/deep/.el-input__clear {
font-size: 0.5rem !important;
-}
-.header{
- height: 5.7rem;
- width: 100%;
- background: url('~@/assets/img/huxbj.8fe20e1f.png') no-repeat 50%;
- background-size: 100%;
- position: relative;
-}
-.bock{
- position: absolute;
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAAAXNSR0IArs4c6QAAAVdJREFUSEut1usqBVEYxvH/c1MuRJJDkhwTEpIkJUlyCEk++CJJckpycw49Gs3Wa+y9Z82ePd/Xr5n38KwRNR7bE0APMK1OHdtTwAWQGZcdQbZngPMc+QImK0O2Z4GzgIxLuqoE2Z4DTgMyJuk6K08yZHseOAnIqKSbRo2TINsLwHFARiTdxkaVQrYXgaOADEu6K3a7LWR7CTjMD2XdaYq0rZHtFWA/Rz6BIUn3reau6RvZXgX28kMfOfLQbnj/QbbXgN380HuOPJZtwB/I9jqwE5ABSc9lyJ8a2d4AtgPSL+klBfmFbG8CWwHpk/SaivxAtjMgg7Inq0mvpLcqSHehTOvKpzU+oSvFDlj99gesOJCDkp7Kip+yIknT3XL7C0tbum9lMbIMHKQkQEqwJWVSKZTPWTElq0dt6GYxt6uHf8DqX0cBq39BBqz+lR2w+j8RAfv9rfkGqF24CUdT9E4AAAAASUVORK5CYII=) no-repeat 50%;
- background-size: 100%;
- width: 0.23rem;
- height: 0.41rem;
- left: 0.38461rem;
- top: 0.38461rem;
-}
-.logo{
- width: 2.03rem;
- height: 2.03rem;
- background: url('~@/assets/imgRed/logo.png') no-repeat 50%;
- background-size: 100%;
- margin: 0 auto;
- border-radius: 50%;
- margin-top: -1.0153rem;
- position: relative;
-}
-.formInt{
- width: 8.63rem;
- margin: 0 auto;
- margin-top: 1rem;
-}
-.formDemo{
- display: flex;
- height: 1.26923rem;
- width: 8.63rem;
- background: #f5f5f5;
- border-radius: 0.126923rem;
- position: relative;
- margin-bottom: 0.253846rem;
-}
-.formDemo span{
- width: 0.406rem;
- height: 0.406rem;
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAEAklEQVRYhbWXXWgcVRTHf2dmk1jjS4QK9qEKKamFYrDgixUfShKUipYiRgRL6iZtRUSpJpsvRCFN3V0CihY02fTDFmmKeVBTkIjBmvSh2Ddb1GLRllDMuxHzMXPkzkcy2WayOzb9s7Azd845//8998y5d4QE+PiUpubmeQHYi/A4yiaFeWAa4WdVRquqGH1znyyWG7VsAflB3S1CHtjmean3WxFF/ctfXKU90ybny4lrlTLY0TAhA0PaL8I3ZZCb/20ijOUKevTRpgslJ1jSID+onSIcXbJW/lYYVuUrV7lm26hCncAehTRwXyTykY609P5vAQNDukthHLAD8imF5vY2ubWafa6gm4ARhCeDIVWlMdMq38dxxC6BSb3CRxHyS7P/0hBHbtDRKrf+maMBuLQ0QeHD7U0/xk409kFuUBstYTwgn1tw2Np1SG7E2UfRP6gPpWx+U6gyw67S1NUq361mG5sBS3g+UnBflEtu0H1Abhif8F7huVie2CjCY2G1q1LWK1WEsYDcTGZHcgF+kwnFXE/K7irXI/4PJhag4ATOJgOJOmYgwAr9CWMlEQDMhLRiUZtUgG18lmXPJBcg/MRyh9uTVACmiAMofqxkAuDLSHttzg9rXbnc2ROe7Uuw1LJHEwtob5UpgctBgJQq5/oHtboUed+QVhtbz8cfutz1qkwlFmDguLzFcjHWp2wm88d1S5x99oRuSdlMAPUBuRPEiEXJ6s4V9B38bTjEvMJp4GsRfldfaK1leWv+ClAZvn6u0tmTluwdCfBmVtB2ET4wGdPIePGWHBlzA/Ko8FVR8jyQLehmEUxROWWSGziWxdYjx3VzqfhrZiBb0DeCs0B1DPlCcFURfe41L/9qVqGzZ798kkhAblgrgWNAKytndsVRzqoyYVn8cebcRa/BvLh35wMpm4cRdlkWLytsLxJaUHi9t0XmSwoIyM1G0hgJcg14+/ORyfNXx5/SYp8oHnn6ouxrfmK3wgBQF8mG2Y6fLRaxWg0UisiHLYv6TFrGSpEb/PrtTu3eL2PGB2E44tCocGrNDGQLmhbxBITk+UxaOkqRroW+k5ozfS0UotD2bosUbstA36e6UYRchPzM6ZHJzJ2QG/S2SEfQN8K4uZ6CbrxNQGUFh4H7A6Obiw6HrpSR8nKw6PCawk3PVKip8rmWBbx3TM3Z7WCkg3X3HJDZ9SA3eD8tsyZmZMEPZj7zOH0B997DMwo1Afl0VSUj60Ue4s8ZzqrLdHBbYziXBLjqV703YDFyOMG3Xbk42SmObfsTC86ZjUsCJDg0BhvLhfUmD+EqP4TLHHKGRVgbPrAsrt4tAY67Ira3rXsCFDb4sliwLf66WwIqUt7ZMNw/NgD8B2plfW1RGaDfAAAAAElFTkSuQmCC) no-repeat 50%;
- background-size: 100%;
- margin-top: 0.431rem;
- margin-left: 0.25346rem;
-}
-.formDemos{
- display: flex;
- height: 1.26923rem;
- width: 8.63rem;
- background: #f5f5f5;
- border-radius: 0.126923rem;
- position: relative;
-}
-.pwdIcon{
- width: 0.406rem;
- height: 0.406rem;
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADMklEQVRYha2WXYhMYRjHf88xu2uJ5EZJWiFFkq8LJYRSvpILRMQ2NheIlWXJd5F2JKTY3Qi5FeFKiciNC+Vjb2R9XOyVVqHFzJ7z6Mx5j52ZPWfmHTP/5nSa877P8/+/z9c5Qploa9fxjrADWK4wEQH16EZ4qMqVlib5Uo7HsgS0tes+RzgF1Gtordlf6O2XwtGWpKSqLiDVoacFWgk4fyHcVY+XPrkIcxHWKNQbTWdaknKoagJSHbpS4L4hf66waf/2/FCf7cim5rbCfPNoVUtSHlQs4NINddJp3gBTXeV1IsG85kbpi9p77poOcz1eADMQumprmL5ni3jF/DulBKTTLPDJNTj9zjhyH/sapc/12GWONTWdydoWRUkBnrLQFFz3gSZ5Vmp/a7CnO7StWIBCg6n2d6X2/rNR3prOaKhYgONQa1rth60AhJ8E3VFbsYC8Pi8TNnY2KQhQ5sy0FR3p9my7LhwiJBUm41/CaIVegY8aY537XGECMBqhF3jvX65H5+GkPC0pINWpR1FO5J5cB6auDXn8unCsdZucjBWQ6tSVKPeNQQ/CY4W+CsmHAYsRxqpfT8Kqw9sGJmQi7/hKs3HyKlHDor1b5TtVQNtNHZnp54kKM4Fm4J8AJ5+fOeZ+oVrkPvZvke8eXDDRmZO7VtgFI0zOv1aLPETWZ+B7RLyAnIKrNkSiWzOvBkLyoq8vgyOXtW74UF4YtfMONkq6RAQGd1KhgHCDzRCpr2MMwiyC000CukrZRPktLEJrSE6eXI8htuSFHJGjWMooAtuIRZFHCyiTHEvBcSIHdUG55NnOsQhB3EstEbHXKqQZl2+1NfT65BmPTxYmkQcclALbfB5rkh/9LlNcZcrx7VLyYyXkLtqGcZUahyNJsZ+YMYOoMAK/jYBR1o4tkePzdzEB74zKddOWPavaRG5Y8VJEWB9y5K7lpcBVrjvCbMdh9eb18x/JBr3jKf3ZRVPtGsqSwSmL+mYQIeEpa4El/n9HuBYr4HOPXpkwTpYCa3wDTwOj/yXPDqn8xN/70MPViK0DOH9LE38y7FZImu/BxP+SG/gR/AC019Vw8eBGCSLqA/gLhUArt4NKdJwAAAAASUVORK5CYII=) no-repeat 50%;
- background-size: 100%;
- margin-top: 0.431rem;
- margin-left: 0.25346rem;
-}
-.formDemos input{
- background: transparent;
- height: 1.25rem;
- width: 7rem;
- font-size: .4rem;
- color: #000;
- margin-left: 0.25rem;
-}
-.formDemo input{
- background: transparent;
- height: 1.25rem;
- width: 7rem;
- font-size: .4rem;
- color: #000;
- margin-left: 0.25rem;
-}
-
-//input默认字样式
-::-webkit-input-placeholder {
- color: #999;
- font-size: .4rem;
-}
-.djzc{
- width: 8.5rem;
- margin: 0.45rem auto;
- display: -webkit-box;
- display: -ms-flexbox;
- display: flex;
- -webkit-box-pack: justify;
- -ms-flex-pack: justify;
- justify-content: flex-end;
- font-size: .375rem;
- color: #5d7dfb;
-}
-.loginBtn{
- width: 8.5rem;
- height: 1.1rem;
- background: linear-gradient(-55deg,rgb(241, 22, 20),rgb(240, 40, 37));
- border-radius: 0.125rem;
- margin: 0 auto;
- margin-top: 1rem;
- color: #fff;
- font-weight: 600;
- font-size: .4rem;
- text-align: center;
- line-height: 1.125rem;
}
</style>
diff --git a/src/page/login/register.vue b/src/page/login/register.vue
index 7a981b4..59b7f2d 100644
--- a/src/page/login/register.vue
+++ b/src/page/login/register.vue
@@ -34,50 +34,115 @@
</div>
<el-alert v-show="alertShow" :closable="closable" :title="texts" :type="elType" center></el-alert> -->
- <div class="header">
- <div class="bock" @click="$router.go(-1)"></div>
- </div>
- <div class="logo"></div>
- <div class="formInt">
- <div class="formDemo">
- <span></span>
- <el-select v-model="areaCode" placeholder="请选择区号">
- <el-option label="86" :value="86"> </el-option>
- </el-select>
- <input :placeholder="$t('jy311')" v-model="phone" />
- </div>
- <div class="flex">
- <span></span>
- <input :placeholder="$t('jy459')" v-model="yzmCode" type="text" />
- <div class="num" @click="getCodeRandom()" :class="{ block: !showTime }">
- {{ $t("jy455") }}
+ <div class="header-section">
+ <div class="back-btn" @click="$router.go(-1)"></div>
+ <div class="header-content">
+ <h1 class="page-title">{{ $t('register_accountOpening') }}</h1>
+ <div class="features">
+ <div class="feature-item">
+ <span class="check-icon">✓</span>
+ <span>{{ $t('register_zeroCommissionOpening') }}</span>
+ </div>
+ <div class="feature-item">
+ <span class="check-icon">✓</span>
+ <span>{{ $t('register_fastTrading') }}</span>
+ </div>
+ <div class="feature-item">
+ <span class="check-icon">✓</span>
+ <span>{{ $t('register_secureReliable') }}</span>
+ </div>
</div>
- <div class="num" :class="{ block: showTime }">{{ countNum }}</div>
- </div>
- <div class="formDemos">
- <span class="pwdIcon"></span>
- <input
- :placeholder="$t('hj30')"
- v-model="userPassword"
- type="password"
- />
- </div>
- <div class="formDemos">
- <span class="pwdIcon"></span>
- <input
- :placeholder="$t('jy312')"
- v-model="rePassword"
- type="password"
- />
- </div>
- <div class="formDemos">
- <span class="pwdIcons"></span>
- <input :placeholder="$t('jy313')" v-model="userName" />
</div>
</div>
+ <div class="form-container">
+ <div class="form-card">
+ <div class="form-field">
+ <label class="field-label">{{ $t('login_phoneNumber') }}</label>
+ <div class="input-wrapper">
+ <el-select v-model="areaCode" :placeholder="$t('register_selectAreaCode')" class="area-select">
+ <el-option label="86" :value="86"> </el-option>
+ </el-select>
+ <input :placeholder="$t('jy311')" v-model="phone" class="field-input" />
+ </div>
+ </div>
+
+ <div class="form-field">
+ <label class="field-label">{{ $t('login_loginPassword') }}</label>
+ <input
+ :placeholder="$t('hj30')"
+ v-model="userPassword"
+ type="password"
+ class="field-input"
+ />
+ </div>
+
+ <div class="form-field">
+ <label class="field-label">{{ $t('register_confirmPassword') }}</label>
+ <input
+ :placeholder="$t('jy312')"
+ v-model="rePassword"
+ type="password"
+ class="field-input"
+ />
+ </div>
+
+ <div class="form-field">
+ <label class="field-label">{{ $t('register_inviteCode') }}</label>
+ <input :placeholder="$t('jy313')" v-model="userName" class="field-input" />
+ </div>
+
+ <div class="agreement">
+ <input type="checkbox" id="agreement" v-model="agree" />
+ <label for="agreement">
+ {{ $t('login_agreeToTerms') }} <span class="agreement-link" @click.stop="viewAgreement">{{ $t('login_userAgreement') }}</span>
+ </label>
+ </div>
+
+ <div class="loginBtn" v-loading="loginBtn" @click="gook">
+ {{ $t('register_openAccountNow') }}
+ </div>
+
+ <div class="login-link">
+ <span @click="$router.push('/login')">{{ $t('register_haveAccountLoginNow') }}</span>
+ </div>
- <div class="loginBtn" v-loading="loginBtn" @click="gook">
- {{ $t("hj15") }}
+ <div class="features-section">
+ <div class="feature-item">
+ <div class="feature-icon">
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
+ <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
+ <polyline points="14 2 14 8 20 8"></polyline>
+ <line x1="16" y1="13" x2="8" y2="13"></line>
+ <line x1="16" y1="17" x2="8" y2="17"></line>
+ </svg>
+ </div>
+ <div class="feature-title">{{ $t('register_fastAccountOpening') }}</div>
+ <div class="feature-desc">{{ $t('register_completedIn3Minutes') }}</div>
+ </div>
+
+ <div class="feature-item">
+ <div class="feature-icon">
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
+ <path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path>
+ </svg>
+ </div>
+ <div class="feature-title">{{ $t('register_bankLevelSecurity') }}</div>
+ <div class="feature-desc">{{ $t('register_fundProtection') }}</div>
+ </div>
+
+ <div class="feature-item">
+ <div class="feature-icon">
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
+ <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
+ </svg>
+ </div>
+ <div class="feature-title">{{ $t('register_professionalService') }}</div>
+ <div class="feature-desc">{{ $t('register_investmentAdvisor') }}</div>
+ </div>
+ </div>
+ </div>
+
+
</div>
</div>
</template>
@@ -142,6 +207,10 @@
}, 1000);
}
},
+ viewAgreement() {
+ // 跳转到用户协议页面
+ this.$router.push('/about?e=2');
+ },
getCodeRandom(){
const code = Math.floor(1000 + Math.random() * 9000).toString();
this.yzmCode = code;
@@ -159,7 +228,7 @@
phoneNum: this.phone
});
if (data.status === 0) {
- Toast("验证码发送成功")
+ Toast(this.$t('register_verificationCodeSentSuccess'))
this.setTime();
} else {
return Toast(data.msg);
@@ -415,7 +484,10 @@
<style scoped lang="less">
.login_page {
position: relative;
- background-color: #fff !important;
+ background-image: url("~@/assets/imgRed/14.png");
+ background-size: cover;
+ background-position: center;
+ background-repeat: no-repeat;
width: 100%;
height: 100%;
overflow: hidden;
@@ -659,89 +731,135 @@
margin-top: 0.2rem;
}
-.header {
- height: 5.7rem;
+.header-section {
width: 100%;
- background: url("~@/assets/img/huxbj.8fe20e1f.png") no-repeat 50%;
- background-size: 100%;
position: relative;
+ margin-bottom: 0.5rem;
}
-.bock {
+
+.back-btn {
position: absolute;
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAAAXNSR0IArs4c6QAAAVdJREFUSEut1usqBVEYxvH/c1MuRJJDkhwTEpIkJUlyCEk++CJJckpycw49Gs3Wa+y9Z82ePd/Xr5n38KwRNR7bE0APMK1OHdtTwAWQGZcdQbZngPMc+QImK0O2Z4GzgIxLuqoE2Z4DTgMyJuk6K08yZHseOAnIqKSbRo2TINsLwHFARiTdxkaVQrYXgaOADEu6K3a7LWR7CTjMD2XdaYq0rZHtFWA/Rz6BIUn3reau6RvZXgX28kMfOfLQbnj/QbbXgN380HuOPJZtwB/I9jqwE5ABSc9lyJ8a2d4AtgPSL+klBfmFbG8CWwHpk/SaivxAtjMgg7Inq0mvpLcqSHehTOvKpzU+oSvFDlj99gesOJCDkp7Kip+yIknT3XL7C0tbum9lMbIMHKQkQEqwJWVSKZTPWTElq0dt6GYxt6uHf8DqX0cBq39BBqz+lR2w+j8RAfv9rfkGqF24CUdT9E4AAAAASUVORK5CYII=)
+ left: 0.5rem;
+ top: 0.5rem;
+ width: 0.5rem;
+ height: 0.5rem;
+ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAAAXNSR0IArs4c6QAAAVdJREFUSEut1usqBVEYxvH/c1MuRJJDkhwTEpIkJUlyCEk++CJJckpycw49Gs3Wa+y9Z82eNd/Xr5n38KwRNR7bE0APMK1OHdtTwAWQGZcdQbZngPMc+QImK0O2Z4GzgIxLuqoE2Z4DTgMyJuk6K08yZHseOAnIqKSbRo2TINsLwHFARiTdxkaVQrYXgaOADEu6K3a7LWR7CTjMD2XdaYq0rZHtFWA/Rz6BIUn3reau6RvZXgX28kMfOfLQbnj/QbbXgN380HuOPJZtwB/I9jqwE5ABSc9lyJ8a2d4AtgPSL+klBfmFbG8CWwHpk/SaivxAtjMgg7Inq0mvpLcqSHehTOvKpzU+oSvFDlj99gesOJCDkp7Kip+yIknT3XL7C0tbum9lMbIMHKQkQEqwJWVSKZTPWTElq0dt6GYxt6uHf8DqX0cBq39BBqz+lR2w+j8RAfv9rfkGqF24CUdT9E4AAAAASUVORK5CYII=)
no-repeat 50%;
background-size: 100%;
- width: 0.23rem;
- height: 0.41rem;
- left: 0.38461rem;
- top: 0.38461rem;
+ cursor: pointer;
+ z-index: 10;
}
-.logo {
- width: 2.03rem;
- height: 2.03rem;
- background: url("~@/assets/imgRed/logo.png") no-repeat 50%;
- background-size: 100%;
- margin: 0 auto;
- border-radius: 50%;
- margin-top: -1.0153rem;
- position: relative;
+
+.header-content {
+ padding-top: 1rem;
+
+ .page-title {
+ font-size: 0.65rem;
+ font-weight: 600;
+ color: #333;
+ margin: 0 0 0.5rem 0;
+ padding-left: 0.5rem;
+ }
+
+ .features {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.3rem;
+ padding-left: 0.5rem;
+
+ .feature-item {
+ display: flex;
+ align-items: center;
+ gap: 0.2rem;
+ font-size: 0.28rem;
+ color: #666;
+
+ .check-icon {
+ width: 0.4rem;
+ height: 0.4rem;
+ border-radius: 50%;
+ background: #4CAF50;
+ color: #fff;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 0.25rem;
+ font-weight: bold;
+ }
+ }
+ }
}
-.formInt {
- width: 8.63rem;
- margin: 0 auto;
- margin-top: 1rem;
+
+.form-container {
+ width: 100%;
+ margin-top: 100px;
}
-.formDemo {
- display: flex;
- height: 1.26923rem;
- width: 8.63rem;
- background: #f5f5f5;
- border-radius: 0.126923rem;
- position: relative;
- margin-bottom: 0.253846rem;
+
+.form-card {
+ background: #fff;
+ border-radius: 0.3rem;
+ padding: 30px 15px;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
-.flex {
- display: flex;
- height: 1.26923rem;
- width: 8.63rem;
- align-items: center;
- margin-bottom: 0.253846rem;
-}
-.block {
- display: block !important;
-}
-.flex input {
- background: #f5f5f5;
- height: 1.25rem;
- width: 5rem;
- font-size: 0.4rem;
- color: #000;
- padding-left: 0.4rem;
-}
-.flex .num {
- flex: 1;
- background: #f5f5f5;
- color: #ec4a58;
- text-align: center;
- height: 100%;
- line-height: 4;
- border-radius: 0.1rem;
- margin-left: 0.25rem;
- display: none;
-}
-.formDemo .el-select {
- height: 100%;
- width: 2rem;
- background: #f5f5f5;
- border: none;
-}
-/deep/ .formDemo .el-select .el-input {
- height: 100%;
-}
-/deep/ .formDemo .el-select .el-input__inner {
- height: 100%;
- border: none;
- background: transparent;
+
+.form-field {
+ margin-bottom: 1rem;
+
+ .field-label {
+ display: block;
+ font-size: 0.32rem;
+ font-weight: 600;
+ color: #333;
+ margin-bottom: 0.3rem;
+ }
+
+ .input-wrapper {
+ display: flex;
+ align-items: center;
+ border: 1px solid #e0e0e0;
+ border-radius: 0.2rem;
+ overflow: hidden;
+ background: #F5F7FA;
+
+ .area-select {
+ width: 2rem;
+ border: none;
+ border-right: 1px solid #e0e0e0;
+ background: #F5F7FA;
+
+ /deep/ .el-input__inner {
+ border: none;
+ height: 1.3rem;
+ padding: 0 0.3rem;
+ font-size: 0.32rem;
+ background: #F5F7FA;
+ }
+ }
+
+ .field-input {
+ flex: 1;
+ border: none;
+ height: 1.3rem;
+ padding: 0 0.3rem;
+ font-size: 0.32rem;
+ background: #F5F7FA;
+ }
+ }
+
+ .field-input {
+ width: 100%;
+ height: 1.3rem;
+ border: 1px solid #e0e0e0;
+ border-radius: 0.2rem;
+ padding: 0 0.3rem;
+ font-size: 0.32rem;
+ background: #F5F7FA;
+
+ &:focus {
+ outline: none;
+ border-color: #1890ff;
+ }
+ }
}
.formDemo span {
@@ -757,11 +875,13 @@
.formDemos {
display: flex;
height: 1.26923rem;
- width: 8.63rem;
- background: #f5f5f5;
- border-radius: 0.126923rem;
+ width: 100%;
+ background: #fff;
+ border: 1px solid #e0e0e0;
+ border-radius: 0.2rem;
position: relative;
- margin-bottom: 0.253846rem;
+ margin-bottom: 0.4rem;
+ align-items: center;
}
.pwdIcon {
width: 0.406rem;
@@ -801,7 +921,7 @@
//input默认字样式
::-webkit-input-placeholder {
color: #999;
- font-size: 0.4rem;
+ font-size: 0.32rem;
}
.djzc {
width: 8.5rem;
@@ -815,17 +935,142 @@
font-size: 0.375rem;
color: #ec4a58;
}
+.agreement {
+ display: flex;
+ align-items: center;
+ margin: 0.5rem 0;
+ font-size: 0.28rem;
+ color: #666;
+
+ input[type="checkbox"] {
+ width: 0.45rem;
+ height: 0.45rem;
+ margin-right: 0.25rem;
+ cursor: pointer;
+ appearance: none;
+ -webkit-appearance: none;
+ border: 2px solid #d9d9d9;
+ border-radius: 0.08rem;
+ background-color: #fff;
+ position: relative;
+ flex-shrink: 0;
+ transition: all 0.3s ease;
+
+ &:checked {
+ background-color: #1890ff;
+ border-color: #1890ff;
+
+ &::after {
+ content: '✓';
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ color: #fff;
+ font-size: 0.32rem;
+ font-weight: bold;
+ line-height: 1;
+ }
+ }
+
+ &:hover {
+ border-color: #1890ff;
+ }
+
+ &:focus {
+ outline: none;
+ box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
+ }
+ }
+
+ label {
+ display: flex;
+ align-items: center;
+ cursor: pointer;
+ user-select: none;
+ }
+
+ .agreement-link {
+ color: #1890ff;
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+}
+
.loginBtn {
- width: 8.5rem;
- height: 1.1rem;
+ width: 100%;
+ height: 1.3rem;
background: linear-gradient(-55deg, rgb(241, 22, 20), rgb(240, 40, 37));
- border-radius: 0.125rem;
- margin: 0 auto;
- margin-top: 1rem;
+ border-radius: 0.2rem;
+ margin: 0.5rem 0;
color: #fff;
font-weight: 600;
- font-size: 0.4rem;
+ font-size: 0.38rem;
text-align: center;
- line-height: 1.125rem;
+ line-height: 1.3rem;
+ cursor: pointer;
+ border: none;
+}
+
+.login-link {
+ text-align: center;
+ margin-top: 0.5rem;
+
+ span {
+ font-size: 0.28rem;
+ color: #999;
+ cursor: pointer;
+
+ &:hover {
+ color: #1890ff;
+ }
+ }
+}
+
+.features-section {
+ display: flex;
+ justify-content: space-around;
+ align-items: center;
+ padding: 1rem 0.5rem;
+ background: #fff;
+
+ .feature-item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ flex: 1;
+
+ .feature-icon {
+ width: 1rem;
+ height: 1rem;
+ background: #1890ff;
+ border-radius: 0.2rem;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-bottom: 0.3rem;
+
+ svg {
+ width: 0.6rem;
+ height: 0.6rem;
+ color: #fff;
+ }
+ }
+
+ .feature-title {
+ font-size: 0.28rem;
+ font-weight: 600;
+ color: #333;
+ margin-bottom: 0.15rem;
+ }
+
+ .feature-desc {
+ font-size: 0.24rem;
+ color: #999;
+ }
+ }
}
</style>
diff --git a/src/page/newUser/about.vue b/src/page/newUser/about.vue
index 57085ec..31737ab 100644
--- a/src/page/newUser/about.vue
+++ b/src/page/newUser/about.vue
@@ -30,6 +30,25 @@
style="width: 100%; cursor: pointer;"
@click="showModal = true"
/>
+
+<!-- <div class="signature-area">
+ <h4>请完成电子签名</h4>
+ <vue-signature-pad
+ ref="mySignaturePad"
+ class="signature-canvas"
+ :options="signatureOptions"
+ ></vue-signature-pad>
+ <div class="signature-btns">
+ <button @click="clearSignature" class="btn-clear">清空签名</button>
+ <button @click="confirmSignature" class="btn-confirm" :disabled="!isAgree || !hasSignature">确认签名</button>
+ </div>
+ </div>
+
+ <div class="signature-preview" v-if="signatureImg">
+ <h4>签名预览</h4>
+ <img :src="signatureImg" alt="电子签名" />
+ </div> -->
+
<!-- 模态框,用于显示放大的图片 -->
<div
@@ -49,8 +68,12 @@
</template>
<script>
import * as api from "@/axios/api";
+import VueSignaturePad from 'vue-signature-pad'
export default {
name: "about",
+ components: {
+ VueSignaturePad
+ },
created() {
var that = this;
//接收页面传值
@@ -86,11 +109,25 @@
title: this.$t("jy314"),
type: 0,
userInfo: {},
- showModal: false
+ showModal: false,
+ signatureImg: '',
+ isAgree: false,
+ hasSignature: false,
+ signatureOptions: {
+ penColor: '#000000',
+ penWidth: 2,
+ },
+ signatureInstance: null
};
},
mounted() {
this.getUserInfo();
+ // vue-signature-pad@2.x 的实例在 this.$refs.xxx.signaturePad 里
+ this.signatureInstance = this.$refs.mySignaturePad.signaturePad
+ // 监听签名变化,更新 hasSignature 状态
+ this.$refs.mySignaturePad.$on('signatureChanged', (isEmpty) => {
+ this.hasSignature = !isEmpty
+ })
},
methods: {
async getUserInfo() {
@@ -100,6 +137,47 @@
this.userInfo = data.data;
} else {
}
+ },
+ // 清空签名(调用真实实例的方法)
+ clearSignature() {
+ if (this.signatureInstance) {
+ this.signatureInstance.clear()
+ this.signatureImg = ''
+ this.hasSignature = false
+ } else {
+ alert('签名组件未初始化!')
+ }
+ },
+ // 确认签名(调用真实实例的方法)
+ confirmSignature() {
+ if (!this.isAgree) {
+ alert('请先阅读并同意用户协议!')
+ return
+ }
+ if (this.signatureInstance) {
+ // 检查是否有签名
+ if (!this.signatureInstance.isEmpty()) {
+ // 导出 Base64 图片
+ this.signatureImg = this.signatureInstance.toDataURL('image/png')
+ this.hasSignature = true
+ this.submitAgreement()
+ } else {
+ alert('请先完成电子签名!')
+ }
+ } else {
+ alert('签名组件未初始化!')
+ }
+ },
+ // 提交协议
+ submitAgreement() {
+ const submitData = {
+ userId: '当前用户ID',
+ isAgree: this.isAgree,
+ signature: this.signatureImg,
+ agreeTime: new Date().getTime()
+ }
+ console.log('提交数据:', submitData)
+ alert('签名成功,协议已提交!')
}
}
};
@@ -107,6 +185,63 @@
<style scoped>
+ .agreement-page {
+ padding: 20px;
+ max-width: 800px;
+ margin: 0 auto;
+}
+.agreement-content {
+ margin-bottom: 30px;
+}
+.agreement-text {
+ height: 200px;
+ overflow-y: auto;
+ padding: 10px;
+ border: 1px solid #eee;
+ margin: 10px 0;
+}
+.agreement-check {
+ margin: 10px 0;
+ font-size: 14px;
+}
+.signature-area {
+ margin: 20px 0;
+}
+.signature-canvas {
+ width: 100%;
+ height: 200px;
+ border: 1px dashed #ccc;
+ margin: 10px 0;
+}
+.signature-btns {
+ margin: 10px 0;
+}
+.btn-clear, .btn-confirm {
+ padding: 8px 16px;
+ margin-right: 10px;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+}
+.btn-clear {
+ background: #eee;
+ color: #333;
+}
+.btn-confirm {
+ background: #409eff;
+ color: #fff;
+}
+.btn-confirm:disabled {
+ background: #ccc;
+ cursor: not-allowed;
+}
+.signature-preview {
+ margin-top: 20px;
+}
+.signature-preview img {
+ max-width: 300px;
+ border: 1px solid #eee;
+}
.modal {
position: fixed;
top: 0;
diff --git a/src/page/newUser/index.vue b/src/page/newUser/index.vue
index ed0975a..fb335c5 100644
--- a/src/page/newUser/index.vue
+++ b/src/page/newUser/index.vue
@@ -238,7 +238,7 @@
</div>
</div>
<div class="zijk">
- <h5>{{ $t("jy334") }}({{ $t("hj156") }})</h5>
+ <h5>{{ $t("jy334") }}(融资融券账户)</h5>
<div class="kunk">
<van-circle
v-model="currentRate"
@@ -306,7 +306,7 @@
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABVVJREFUWEfFl2tsk2UUx3/Pu7Zrd2FjwNaNSwYbasAAKsotYKYSEUk0GAKSoEZGApKYaKKSGMOInyYfQINfQESjYUrw8gGMCmQagqiJiiMgchsXGYONiVvbbe3Wx5w+79Z27dsVQ+JJlqXt85zzf87lf85RZCmaEwWQ9zhEa0DNACYCRfb1f4Bm0MfAaoTQfsXUQDaq1XCHNGerwXoNeBrIH+68/XsQaIBovaL6bKY7jgA0zV6I1oF6CfBkaXjosTDorWBtVEzsSacjLQDNmSrI2QuIq2+HHIPosnTeSAGguXAvRL8Cym6H5QQd18BarKj8NVFvEgA73j8AY26z8QF1bRCdm+iJQQCayz6IHAWmpxif4IIn82C+F6Z6wJ8DIyzQGjo1XO2D4xE43ANfBqGlPxP+JnDPVozvlkMJAM7Vg3o16WaVGzaXwBN5YAFX+uH3XrjcDzej5uhoC8a6YIYNTGx/HoRXOuBinwMQ/ZaiSirLALCT7g/APXhjZi586wefgnc6YWcXnI5kjswUN6wuhHUjIKRhQQucTHsnAtEpEgobwPkdQG2S9p8rjKsfboUzwxgeCusuN3xfDk1hWNjqBHqnYlKt0pwqBM/VFJIJVcKHAVjX/t/ycW8pLPBC6SWn+0EIlytN83LQn6Sc+qIMHvVBbTvszopVjQrx6foRsHUUNARgVVuGB6gVSnN+O7Am5dRDPjjkN18fDxtvNHbDiQj06uTjXmWSUO48UwB32qk0swV+6c3kwR0C4EdgVsqpoxVQ5YK3O2FVglJJ/pY+6NbmtT4LKnLi9SRx3xuEDcWmLBc55oCY/EkAiI9GpwDoqYT3u+CFG+YneZXE9A43jHdBgZLygYCGS31wKgJHeuKVIjnwoBfGOOaAaG0XAOKj1GZzwA8P5MLS63AoxhmZRQA+WwDTPCAhmes17p8v+e0oYWcAs3NBwiCv/KYbPgoYINfSsFzdSHi9CJSCE2HDAXe7ocCC/SFY2QadNnElY4kBSB8C8YC8YkcXLMs3cY45rd8wYUc/WArKckAI6NMgvHwjTsN5Cl4sgjeL4Ts7F1Kxx0KQPgklB4T91t8Al4I5uTA3N54D0guEhoWu9wRhxXXjLXF/oQVttrU1hbB9NDzfDru6hsYiloTpy3CgCoQJpQzTycZieGMkTLhkXl5kwUG/ASUMKDkglXJynAG0ICUfpAwdiGiAB8LaxF/+jvaCfB6QfWUwThrRFchVcLgcpnugPQoSgnl2L9g2Cp4rhIILQ54RIyIHKhYmfMwH+0KwJM8YkNr/MwIXhAeiUOMzHW92CxRbcHqcMSC9Y5bXcMDBbtgyCtYWgi8JQAjC/oFm9B6wOglebyXsCsDadiix4BGfmQek3OTVEmtpViJjLkJQm1mh0Q8lOVDbBh/YFH6kHPIt46m4mGYkn+1J6GRSO/5trDEscXPq61Ilorzub9h006iuFoA5JvNFBLhU1IYOqJfpPSYR0FMVVWecB5J5Xvi6DGSm2NYJHweM+4fKnlJYmm9KUM4llvtCHzSUmpK954rxkpHNikmx4WfoSCYlOW3QxmQ3bC2BRfZE9Jc9esn/jqjhzwoXLLfXBYn9ge7Y+7jfY3hEQC9uhfOD01ETeOcoKkJJABJCkTqUTnKZREzMASm5fg1d2oToVNiAuc9jeEOmJ2nj73ZBYNAtzkPpwKv/17E8DiK2jn2WFI7U6N/KN00QfSqrxSQOIraabbJXs/iweitmTbZvueXVLNGG5txke1xfCeRlaV/6927Q9VJqme4Mux3HPRJbz5eArrF3RlnPi+3fhQSagWOgZD3fl+16/i91NuTW6o8hHwAAAABJRU5ErkJggg=="
style="width: 0.4272rem; height: 0.4272rem; margin-right: 0.1602rem;"
/>
- {{ $t("jy333") }}
+ 两融可取资金
</p>
<h6>
¥
@@ -324,7 +324,7 @@
src="data:image/png;base64,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"
style="width: 0.4272rem; height: 0.4272rem; margin-right: 0.1602rem;"
/>
- {{ $t("jy70") }}
+ 两融可用资金
</p>
<h6 style="margin-left: 0.534rem;">
<span class="bzz" v-if="!selectUserFlag">{{
diff --git a/src/page/newUser/recharge.vue b/src/page/newUser/recharge.vue
index b835988..efabbb8 100644
--- a/src/page/newUser/recharge.vue
+++ b/src/page/newUser/recharge.vue
@@ -1,85 +1,39 @@
<template>
- <div class="">
- <div class="head">
- <div rech="true">
- <h2><span class="hbnh"><a class="fan" @click="$router.go(-1)"></a></span> {{ $t('jy330') }} </h2>
- </div>
- <h6 v-if="this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay">¥ {{
- $store.state.hide ? '****' : Number($store.state.userInfo.userAmt +
- $store.state.userInfo.userIndexAmt).toFixed(2)
- }}</h6>
-
- <h6 v-else-if="!this.$store.state.settingForm.indexDisplay && this.$store.state.settingForm.futuresDisplay"
- class="account">
- ¥ {{
- $store.state.hide ? '****' : Number($store.state.userInfo.userAmt +
- $store.state.userInfo.userFuturesAmt).toFixed(2)
- }}
- </h6>
- <h6 v-else-if="!this.$store.state.settingForm.indexDisplay && !this.$store.state.settingForm.futuresDisplay"
- class="account">¥ {{ $store.state.hide ? '****' : Number($store.state.userInfo.userAmt).toFixed(2) }}</h6>
-
- <p> {{ $t('jy347') }}</p>
+ <div class="recharge-page">
+ <!-- Header -->
+ <div class="header">
+ <a class="back-btn" @click="$router.go(-1)"></a>
+ <h2 class="title">{{ $t('jy534') }}</h2>
</div>
- <!-- <div class="jine">
+ <!-- Security Banner -->
+ <div class="security-banner">
+ <span class="check-icon">✓</span>
+ <span class="security-text">{{ $t('jy535') }}</span>
+ </div>
-
- <div class="boxk">
- <p @touchstart="onTouchStart($event,1)" @touchend="onTouchEnd" @mousedown="onMouseDown" @mouseup="onMouseUp"
- @mouseleave="onMouseUp" class="cz" style="margin-top: 0.801rem;">平台银行卡号: {{ this.channelAccount }} </p>
- <p @touchstart="onTouchStart($event,2)" @touchend="onTouchEnd" @mousedown="onMouseDown" @mouseup="onMouseUp"
- @mouseleave="onMouseUp" class="cz" style="margin-top: 0.801rem;">开户行: {{ this.channelDesc }} </p>
- <p @touchstart="onTouchStart($event,3)" @touchend="onTouchEnd" @mousedown="onMouseDown" @mouseup="onMouseUp"
- @mouseleave="onMouseUp" class="cz" style="margin-top: 0.801rem;">银行收款人: {{ this.channelName }}</p>
- <p class="cz" style="margin-top: 0.801rem;">转账用户名:</p><input :placeholder=" $t('jy125')"
- type="transferName"
- v-model="transferName" class="inpt">
- <p class="cz" style="margin-top: 0.801rem;"> {{ $t('hj170') }}</p>
- <p class="min"> {{ $t('jy346') }}<span> {{ $t('jy345') }}</span></p><input :placeholder="$t('jy125')"
- type="number" v-model="money"
- class="inpt">
- <div class="xuank">
- <a class="" @click="xz(item)" v-for="item in moneyList"
- :class="(money == Number(item)) ? 'xl' : ''">{{ item }}</a>
+ <!-- Content Card -->
+ <div class="content-card">
+ <div class="amount-section">
+ <label class="amount-label">{{ $t('jy536') }}</label>
+ <div class="amount-input-wrapper">
+ <span class="currency-symbol">¥</span>
+ <input
+ type="text"
+ class="amount-input"
+ :placeholder="$t('jy537')"
+ disabled
+ />
</div>
- <p class="cz" style="margin-top: 0.801rem;">{{ $t('jy344') }}</p><input :placeholder=" $t('jy125')"
- type="password"
- v-model="password" class="inpt">
- <div class="jyzh">
- <p class="cz" style="margin-top: 0.401rem;">转账截图</p>
- <el-upload
- :with-credentials="true"
- class="avatar-uploader"
- :action="admin + 'user/upload.do'"
- :class="img1key ? 'tou' : 'butou'"
- list-type="picture-card"
- name="upload_file"
- :show-file-list="false"
- :on-success="handleAvatarSuccess"
- :on-error="handleError"
- :before-upload="beforeAvatarUpload"
- :disabled="!showBtn"
- :headers="headers"
- >
- <img
- v-if="img1key"
- :src="img1key"
- class="id-img avatar"
- style="width: 100%;height: 100%;"
- v-show="img1key"
- />
- <i v-else class="iconfont icon-zhaopian"></i>
- <span v-if="imgStatus" class="btn-title">{{ $t("hj198") }}</span>
- </el-upload>
- </div> -->
- <div class="enyt" @click="getHeaderlink(4)">{{ $t('jy528') }}</div>
- <div class="enyt" @click="rechargeMsg()">{{ $t('jy529') }}</div>
-
+ </div>
- <!-- <p class="czl"> {{ $t('jy342') }}</p>
- <p class="czl">{{ $t('jy341') }}</p>
- <p class="czl"> {{ $t('jy340') }}</p> -->
+ <div class="instructions">
+ <p class="instruction-item">1、{{ $t('jy538') }}</p>
+ <p class="instruction-item">2、{{ $t('jy539') }}</p>
+ </div>
+
+ <div class="contact-btn" @click="getHeaderlink(4)">
+ {{ $t('jy540') }}
</div>
</div>
</div>
@@ -217,7 +171,7 @@
this.channelDesc = channelDesc;
this.channelAccount = channelAccount;
} else {
- Toast(this.$t("平台转账信息获取失败"));
+ Toast(this.$t("jy543"));
}
},
Recharge() {
@@ -231,11 +185,11 @@
return
}
if (this.transferName == '' || this.transferName == null || this.transferName == undefined) {
- this.$toast("请输入转账用户名")
+ this.$toast(this.$t("jy544"))
return
}
if (this.img1key == '' || this.img1key == null || this.img1key == undefined) {
- this.$toast("请上传转账截图")
+ this.$toast(this.$t("jy545"))
return
}
this.setRecharge()
@@ -279,178 +233,152 @@
},
}
</script>
-<style scoped>
-.head {
+<style scoped lang="less">
+.recharge-page {
width: 100%;
- height: 6.141rem;
- background: linear-gradient(-55deg, rgb(241, 22, 20), rgb(240, 40, 37));
- text-align: center;
+ min-height: 100vh;
+ background: #f5f5f5;
}
-.head h2 {
- text-align: center;
- height: 1.2549rem;
+.header {
width: 100%;
- position: relative;
- line-height: 1.2549rem;
- font-size: 0.4806rem;
- color: #fff;
- background: transparent;
- font-weight: 500;
- z-index: 3;
-}
-.avatar-uploader {
- overflow: hidden;
-}.hbnh {
- position: absolute;
- left: 0.4005rem;
- font-size: 0.4272rem;
- font-weight: 500;
-
-}
-
-.fan {
- width: 0.2403rem;
- height: 0.4272rem;
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAAAXNSR0IArs4c6QAAAVdJREFUSEut1usqBVEYxvH/c1MuRJJDkhwTEpIkJUlyCEk++CJJckpycw49Gs3Wa+y9Z82ePd/Xr5n38KwRNR7bE0APMK1OHdtTwAWQGZcdQbZngPMc+QImK0O2Z4GzgIxLuqoE2Z4DTgMyJuk6K08yZHseOAnIqKSbRo2TINsLwHFARiTdxkaVQrYXgaOADEu6K3a7LWR7CTjMD2XdaYq0rZHtFWA/Rz6BIUn3reau6RvZXgX28kMfOfLQbnj/QbbXgN380HuOPJZtwB/I9jqwE5ABSc9lyJ8a2d4AtgPSL+klBfmFbG8CWwHpk/SaivxAtjMgg7Inq0mvpLcqSHehTOvKpzU+oSvFDlj99gesOJCDkp7Kip+yIknT3XL7C0tbum9lMbIMHKQkQEqwJWVSKZTPWTElq0dt6GYxt6uHf8DqX0cBq39BBqz+lR2w+j8RAfv9rfkGqF24CUdT9E4AAAAASUVORK5CYII=) no-repeat 50%;
- background-size: 100%;
- display: inline-block;
- margin-right: 0.1335rem;
- vertical-align: middle;
- margin-top: -0.0534rem;
-}
-
-.xind {
- position: absolute;
- right: 0.4005rem;
- color: #fff;
- font-size: 0.3738rem;
- font-weight: 500;
-}
-
-.shaux {
- position: absolute;
- width: 0.4806rem;
- height: 0.4806rem;
- background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAA8VJREFUWEfNmEloXVUYx3//e18qCWitA4JUFLEURdOotcWpEKsLFbUVBONKKYIbRcEJ3VhwarvSiAspVlzoRpyow0Lr0No2LbW4cACllCK2DhREjWhy71/OzU087/W9vPuSl5K7u2f4zu9+9xuPmGeP5hkPlYFsLyTjBsQgZgBxDrAQMPA75gBiP+YTUrZK+nsmH9sWyPZSch4GhoDeiof8CbxCwiZJhyruKZa1BLLdR86TwL1ArROh0dqgpY0kPCVprIqMpkC2l5DzJnBhEyGjiBHMt8DRcv5UxPmYlU21aPaQslbST+2gjgGyfSk5HwCn1202O4DnSXlX0j/NBNvuJeMW4D7E5Q1rfiRhUNIP00HVAdk+j5ydDTBHMPeopnfafV0873HfjhgGTovGA9QKSYdbyZoCKm1mpO43mRFSbpb0Sycwk2ttLyZnK7Bsar/ZScoqSVkzmf8DZd4EPBhtDDCrJf01E5gIahE5nwEXRXIeUaqNLYFKI/4a6CkXHSbhYkk/zwYmgjqLnK+AReXYHyQsaSa/0JAzvwzcFWlnrWp6uxswU1DjvhOxJZK5QakebTxDtk8k5wjQV0yaHarp6m7CFGLthJwvI3v6jYQzG+OTSm94PdLObarpjW4DFVDjXofYPCU75zr16KP4LDnzS8Dd5eAoCae0ijOzhbQdDPxXIC1lPa1Uj9cDjXs3KiJsSCTblGj1bA+ebr8z7wcGyvM+VKLrGzUUiCeD1wtKFXJX154ivsEJkUlsxtxavn9HwhWNQCENLCgH1yvVE12jCXYz5kESPp4ukUfnbQk2NKdAhTFnfq7Ib9M/h0joD0Bz+stKl+8lJ9jO0hZMJuda9WhbcPvjYtS2V5LzReRhMduwUhUaPL5unzkUfHVuDnxPwoCk0QmgcQ8hXou8YO4Co72AnD1RtM5IuErS7snzm6WO7appVTc9LZZlu5+cvaVnP6NUj9W5fekFIZyvi7S0ptOCrJMPcOaQVIdIuEzSv8cCTVSK38xV+dEIazukjrMlHWiciwu0UDA9FGmpKwVaJ5orjHpyQ1nC7gL6G6BmU8KeCyyW9HlVsDkp8m2LjDsQLwJjJCyXdLAKVLM26BJy3gfOqBNgtgPDbdqgPjLWAA8glkf795FwZZWyplWjGIz8rY4aRXMBYkWLRnEvKTdVqdHbtdLrgftn0UqHxL2hbKXr3LvV76ty2RDa6om4Uf2yIbROr5LwbNcuG5rEjpPIuBFxDWZZeR1zcumpRzEHEfswn5Ly3kz7ubYaquIZ3Vwz74D+A2+DgOcUuMpOAAAAAElFTkSuQmCC) no-repeat 50%;
- background-size: 100%;
- right: 0.4005rem;
- top: 0.4005rem;
-}
-
-.head h6 {
- font-weight: 500;
- font-size: 0.6408rem;
- color: #fff;
- margin-top: 0.9345rem;
-}
-
-.head p {
- color: #9fb1ff;
- font-size: 0.3204rem;
- margin-top: 0.3738rem;
-}
-
-.jine {
+ height: 1.2rem;
background: #fff;
- border-radius: 0.4005rem 0.4005rem 0 0;
- min-height: 2.136rem;
- margin-top: -2.0025rem;
- padding-top: 0.534rem;
position: relative;
- z-index: 9;
-}
-
-.boxk {
- width: 9.345rem;
- margin: 0 auto;
-
-}
-
-.cz {
- color: #333;
- font-size: 0.4005rem;
-}
-
-.min {
- color: #999;
- font-size: 0.3738rem;
- margin-top: 0.267rem;
-}
-
-.min span {
- color: #3b71b9;
-}
-
-.boxk input {
- width: 100%;
- height: 1.1748rem;
- background: #e6e6e6;
- border-radius: 0.1335rem;
- margin-top: 0.4005rem;
- padding-left: 0.267rem;
- font-size: 0.4272rem;
- color: #000;
-}
-
-.xuank {
- width: 9.345rem;
- margin: 0 auto;
- display: -webkit-box;
- display: -ms-flexbox;
display: flex;
- -webkit-box-pack: justify;
- -ms-flex-pack: justify;
- justify-content: space-between;
- margin-top: 0.267rem;
+ align-items: center;
+ justify-content: center;
+ border-bottom: 1px solid #e5e5e5;
+
+ .back-btn {
+ position: absolute;
+ left: 0.4rem;
+ width: 0.48rem;
+ height: 0.48rem;
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%232196f3'%3E%3Cpath d='M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z'/%3E%3C/svg%3E") no-repeat center;
+ background-size: 0.48rem 0.48rem;
+ cursor: pointer;
+ }
+
+ .title {
+ font-size: 0.48rem;
+ font-weight: 500;
+ color: #333;
+ margin: 0;
+ }
}
-.xuank a {
- width: 2.2428rem;
- height: 1.1748rem;
- background: #e6e6e6;
- border-radius: 0.1335rem;
- color: #999;
- font-size: 0.4272rem;
- text-align: center;
- line-height: 1.1748rem;
-}
-
-.enyt {
- width: 9.345rem;
- height: 1.1748rem;
- background: linear-gradient(-55deg, rgb(241, 22, 20), rgb(240, 40, 37));
- border-radius: 0.1335rem;
- margin: 0 auto;
- margin-top: 0.5073rem;
- color: #fff;
- font-size: 0.4272rem;
- text-align: center;
- line-height: 1.1748rem;
- margin-bottom: 0.869rem;
-}
-
-.czl {
- color: #666;
- font-size: 0.3471rem;
- line-height: 0.5607rem;
-}
-
-.xl {
- background: #3b71b9 !important;
- color: #fff !important;
-}
-
-.jyzh {
- width: 96%;
- height: auto;
- margin: 0 auto;
- margin-bottom: 0.8rem;
-}
-
-.jyzh img {
+.security-banner {
width: 100%;
- height: auto;
+ background: #e8f5e9;
+ padding: 0.4rem 0.6rem;
+ display: flex;
+ align-items: center;
+ gap: 0.2rem;
+ .check-icon {
+ width: 0.4rem;
+ height: 0.4rem;
+ background: #4caf50;
+ border-radius: 50%;
+ color: #fff;
+ font-size: 0.28rem;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: bold;
+ flex-shrink: 0;
+ }
+
+ .security-text {
+ font-size: 0.32rem;
+ color: #2e7d32;
+ }
}
-</style>
+
+.content-card {
+ background: #fff;
+ margin: 0.4rem;
+ border-radius: 0.28rem;
+ padding: 0.6rem;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
+
+ .amount-section {
+ margin-bottom: 0.8rem;
+
+ .amount-label {
+ display: block;
+ font-size: 0.36rem;
+ color: #333;
+ font-weight: 500;
+ margin-bottom: 0.3rem;
+ }
+
+ .amount-input-wrapper {
+ display: flex;
+ align-items: center;
+ background: #f5f5f5;
+ border-radius: 0.2rem;
+ padding: 0 0.4rem;
+ height: 1.2rem;
+
+ .currency-symbol {
+ font-size: 0.4rem;
+ color: #666;
+ margin-right: 0.2rem;
+ }
+
+ .amount-input {
+ flex: 1;
+ border: none;
+ background: transparent;
+ font-size: 0.36rem;
+ color: #999;
+ outline: none;
+
+ &::placeholder {
+ color: #999;
+ }
+
+ &:disabled {
+ cursor: not-allowed;
+ }
+ }
+ }
+ }
+
+ .instructions {
+ margin-bottom: 0.8rem;
+
+ .instruction-item {
+ font-size: 0.32rem;
+ color: #666;
+ line-height: 0.56rem;
+ margin-bottom: 0.3rem;
+
+ &:last-child {
+ margin-bottom: 0;
+ }
+ }
+ }
+
+ .contact-btn {
+ width: 100%;
+ height: 1.2rem;
+ background: #2196f3;
+ border-radius: 0.2rem;
+ color: #fff;
+ font-size: 0.4rem;
+ font-weight: 500;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ margin-top: 0.4rem;
+
+ &:active {
+ opacity: 0.8;
+ }
+ }
+}
+</style>
\ No newline at end of file
diff --git a/src/page/register.vue b/src/page/register.vue
index 919443e..871e797 100644
--- a/src/page/register.vue
+++ b/src/page/register.vue
@@ -73,13 +73,17 @@
v-model="invitecode"
>
</div>
- <div
- class="register-form-item agree-model"
- >
- <i @click="isAgree"
- :class="agree?'glyphicon glyphicon glyphicon-ok-sign red':'glyphicon glyphicon-ok-circle'"></i>
- {{ $t('jy148') }}
- <a @click="toagreeUrl" style="color:#fff">《{{ $t('jy488') }}》</a>
+ <!-- 用户协议复选框 -->
+ <div class="agreement_container">
+ <input
+ type="checkbox"
+ id="agreement"
+ v-model="agreedToTerms"
+ class="agreement_checkbox"
+ />
+ <label for="agreement" class="agreement_label">
+ 已阅读并同意<span class="agreement_link" @click.stop="viewAgreement">《用户协议》</span>
+ </label>
</div>
<div
class="register-form-item submit-model"
@@ -197,7 +201,7 @@
checkCodeState: true,
dialogImgShow: false, // 图片显示
logo: '',
- agree: false,
+ agreedToTerms: false, // 是否同意用户协议
logindialogShow: false, // 注册协议
agreeUrl: '', // 注册协议地址
siteInfo: {},
@@ -325,8 +329,8 @@
},
async gook () {
// 注册
- if (!this.agree) {
- Toast(this.$t('jy485'))
+ if (!this.agreedToTerms) {
+ Toast('请先阅读并同意《用户协议》')
} else if (isNull(this.phone) || !isPhone(this.phone)) {
Toast(this.$t('hj28'))
} else if (isNull(this.psd)) {
@@ -376,13 +380,9 @@
this_.dialogImgShow = true
}, 500)
},
- isAgree () {
- let i = false
- let j = true
- this.agree = this.agree ? i : j
- },
- toagreeUrl () {
- this.$router.push('/agree')
+ viewAgreement() {
+ // 跳转到用户协议页面
+ this.$router.push('/about?e=2');
}
}
}
@@ -469,6 +469,56 @@
}
}
}
+
+ // 用户协议区域
+ .agreement_container {
+ width: 100%;
+ display: flex;
+ align-items: center;
+ margin-bottom: 0.4rem;
+ margin-top: 0.3rem;
+ padding: 0 0.6rem;
+ }
+
+ .agreement_checkbox {
+ width: 0.32rem;
+ height: 0.32rem;
+ margin-right: 0.25rem;
+ cursor: pointer;
+ appearance: none;
+ border: 2px solid #2567ff;
+ border-radius: 50%;
+ position: relative;
+
+ &:checked {
+ background-color: #2567ff;
+ border-color: #2567ff;
+
+ &::after {
+ content: '';
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: 0.12rem;
+ height: 0.12rem;
+ background: #fff;
+ border-radius: 50%;
+ }
+ }
+ }
+
+ .agreement_label {
+ font-size: 0.28rem;
+ color: #86CBD1;
+ cursor: pointer;
+ user-select: none;
+ }
+
+ .agreement_link {
+ color: #2567ff;
+ cursor: pointer;
+ }
.glyphicon-ok-sign.red {
color: #409EFF;
}
@@ -494,6 +544,11 @@
color: #BB1815 !important;
}
}
+ .agreement_container {
+ .agreement_label {
+ color: #000;
+ }
+ }
.register-form-item.submit-model {
background-color: #BB1815;
}
diff --git a/src/page/user/Warehouse.vue b/src/page/user/Warehouse.vue
index 1113962..15616ba 100644
--- a/src/page/user/Warehouse.vue
+++ b/src/page/user/Warehouse.vue
@@ -8,7 +8,7 @@
<div class="sert">
<span v-for="(item, index) in chicangList" :key="index" @click="chicangidx = index"
:class="chicangidx == index ? 'sdpl' : ''">{{ item.name }}</span>
- <a :style="chicangidx == 0 ? 'left: 0.8rem;' : 'left: 4.54rem;'"></a>
+ <a :style="{ left: getIndicatorLeft() + 'rem' }"></a>
</div>
<div class="bnm"></div>
</div>
@@ -29,8 +29,8 @@
</p>
</div>
<div class="button-container">
- <div class="dr" style="margin-right: 16px" v-if="chicangidx == 0" @click="goBuyDetail(item)">买入</div>
- <div class="dr-blue" style="margin-right: 16px" v-if="chicangidx == 0" @click="getpingcangbf(item.positionSn,item.orderNum)"> 部分平仓 </div>
+ <!-- <div class="dr" style="margin-right: 16px" v-if="chicangidx == 0" @click="goBuyDetail(item)">买入</div>
+ <div class="dr-blue" style="margin-right: 16px" v-if="chicangidx == 0" @click="getpingcangbf(item.positionSn,item.orderNum)"> 部分平仓 </div> -->
<div class="dr-blue" style="margin-right: 16px" v-if="chicangidx == 0" @click="getpingcang(item.positionSn)"> {{ $t('hj121') }} </div>
</div>
@@ -104,6 +104,46 @@
</div>
</van-list>
+ <van-list v-model="loadingss" :finished="finishedss" :finished-text="$t('hj43')" @load="onLoadss"
+ :immediate-check="immediate" v-show="(chicangidx === 2)">
+ <div class="cichang" v-for="(item,index) in wtlist" :key="item.id" @click="goDetail(item)">
+ <div class="dingbu">
+ <div class="dl">
+ <h6>{{ item.stockName ? item.stockName : item.indexName }}</h6>
+ <p>
+ <span v-show="(item.stockGid.indexOf('sz')>=0)">{{ $t('jy83') }}</span>
+ <span class="sh" v-show="(item.stockGid.indexOf('sh')>=0)">{{ $t('jy84') }}</span>
+ <span class="bj" v-show="(item.stockGid.indexOf('bj')>=0)">{{ $t('jy85') }}</span>
+ <a class="">{{item.stockGid}}</a>
+ </p>
+ </div>
+ <!-- <div class="dr" v-if="chicangidx == 2" > {{ $t('hj121') }} </div> -->
+ </div>
+ <div class="fudo" v-if="chicangidx == 2">
+ <!-- <h6> {{ $t('jy20') }} <span class="red">{{ item.now_price }}</span></h6> -->
+ <!-- <p>{{ item.buyOrderTime | gettime }}</p> -->
+ </div>
+ <div class="fudo" v-else>
+ <h6> {{ $t('jy449') }} </h6>
+ <p>{{item.sellOrderTime | gettime}}</p>
+ </div>
+ <!-- <div class="fudong redbg">
+ <div class="kuij">
+ <p><span>{{ $t('jy13') }}:</span><a class="red">{{item.profitAndLose > 0 ? ('+' + item.profitAndLose) : item.profitAndLose}}</a></p>
+ <p><span>{{ $t('jy12') }}:</span><a class="red">{{item.allProfitAndLose}}</a></p>
+ </div>
+ </div> -->
+ <div class="plkm">
+ <p><span>{{ $t('jy19') }}</span><a class="red">{{item.buyOrderPrice}}/{{ $t('jy96') }}</a></p>
+ <p v-if="chicangidx == 1"><span>{{ $t('jy25') }}</span><a class="red">{{item.sellOrderPrice}}/{{ $t('jy96') }}</a></p>
+ <p><span>{{ $t('jy18') }}</span><a class="red">{{item.orderNum}}</a></p>
+ <p><span>挂单时间</span><a class="red">{{ item.buyOrderTime | gettime }}</a></p>
+ <p><span>{{ $t('jy17') }}</span><a class="red">{{item.orderTotalPrice}}</a></p>
+ <!-- <p><span>{{ $t('jy153') }}</span><a class="red">{{item.orderSpread}}</a></p> -->
+ <p v-if="chicangidx == 1"><span>{{ $t('jy15') }}</span><a class="red">{{item.orderStayFee}}</a></p>
+ </div>
+ </div>
+ </van-list>
</div>
<div style="height:2rem">
@@ -128,19 +168,28 @@
},
{
name: this.$t('jy410')
+ },
+ {
+ name: '我的委托'
}
],
chicangidx: 0,
loading: false,
loadings: false,
+ loadingss: false,
+
finished: false,
finisheds: false,
+ finishedss: false,
+
page:1,
pages:1,
+ pagess:1,
immediate: false,
tabsPositionNumArr: [],
tabsPositionObj: null,
tabsPcArr: [],
+ wtlist:[],
intervalId: null, // 用于存储定时器 ID
}
},
@@ -148,12 +197,26 @@
this.getUserInfo()
this.getListDetail()
this.getListDetails()
+ this.getListDetailss()
this.startPolling();
},
beforeDestroy() {
this.stopPolling(); // 销毁组件时停止轮询
},
methods: {
+ // 计算滑动指示器的位置
+ getIndicatorLeft() {
+ const totalWidth = 5.34 // .sert 的总宽度(rem)
+ const tabCount = this.chicangList.length
+ const indicatorWidth = 0.53 // 指示器宽度(rem)
+
+ // 计算每个标签的中心位置
+ const tabWidth = totalWidth / tabCount
+ const centerPosition = (this.chicangidx + 0.7) * tabWidth
+
+ // 减去指示器宽度的一半,使其居中
+ return centerPosition - indicatorWidth / 2
+ },
goDetail(item) {
this.$router.push(`/WarehouseDetail?positionSn=${item.positionSn}`)
},
@@ -229,12 +292,18 @@
path: '/Searchlist'
})
},
- onLoads() {
- //平仓
- this.pages++;
- //沪深京平仓
- this.getListDetails();
- },
+ onLoads() {
+ //平仓
+ this.pages++;
+ //沪深京平仓
+ this.getListDetails();
+ },
+ onLoadss() {
+ //委托
+ this.pagess++;
+ //沪深京委托
+ this.getListDetailss();
+ },
getpingcangbf(val,orderNum) {
// 如果 chicangidx 为 0,表示是沪深京市场(可能是股票市场的不同板块)
if (this.chicangidx == 0) {
@@ -333,7 +402,7 @@
//获取沪深我的平仓列表
this.loadings = true;
let opt = {
- state: 1,
+ state: 2,
stockCode: '', // 代码
stockSpell: '', // 简拼
pageNum: this.pages,
@@ -353,12 +422,43 @@
Toast(data.msg)
}
},
+ async getListDetailss() {
+ //获取沪深我的委托列表
+ this.loadingss = true;
+ // this.tabsPositionNumArr = [];
+ let opt = {
+ state: 0,
+ stockCode: '', // 代码
+ stockSpell: '', // 简拼
+ pageNum: this.page,
+ pageSize: 15,
+ }
+ let data = await api.getOrderList(opt)
+ this.loadingss = false;
+ if (data.status === 0) {
+ if (data.data.list.length < 20) {
+ this.finishedss = true;
+ }
+ // data.data.list.forEach(element => {
+ // this.tabsPositionNumArr.push(element)
+ // })
+ console.log(data.data.list);
+ this.wtlist = data.data.list;
+ console.log('========================');
+ // data.data.list.forEach((element, index) => {
+ // this.tabsPositionObj[index] = element;
+ // });
+ //this.total = data.data.total
+ } else {
+ Toast(data.msg)
+ }
+ },
async getListDetail() {
//获取沪深我的持仓列表
this.loading = true;
// this.tabsPositionNumArr = [];
let opt = {
- state: 0,
+ state: 1,
stockCode: '', // 代码
stockSpell: '', // 简拼
pageNum: this.page,
@@ -456,7 +556,6 @@
background: #dcf7ee !important;
}
-.chicangcontainer {}
.toubu {
width: 100%;
@@ -677,7 +776,7 @@
flex-wrap: wrap;
p {
- width: 47%;
+ width: 49%;
margin-top: 0.4rem;
display: flex;
justify-content: space-between;
diff --git a/src/router/index.js b/src/router/index.js
index 69e3423..5605a97 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -69,6 +69,7 @@
import College from '@/page/home/college.vue' // 首页学院
import About from '@/page/newUser/about.vue' // 我的关于我们等详情
import DragonTiger from '@/page/home/DragonTiger.vue' // 首页龙虎榜
+import ProfitCalendar from '@/page/home/profitCalendar.vue' // 收益日历
import topTen from '@/page/home/topTen.vue' // 首页十大成交股
import Daylimit from '@/page/home/daylimit.vue' // 首页每日涨停
import StopRecovery from '@/page/home/stopRecovery.vue' // 每日停复牌
@@ -144,6 +145,18 @@
component: DragonTiger
},
{
+ path: '/profitCalendar',
+ name: 'ProfitCalendar',
+ meta: {
+ title: '收益日历',
+ requireAuth: true,
+ hasHeader: false,
+ show: true,
+ index: 1
+ },
+ component: ProfitCalendar
+ },
+ {
path: '/topTen',
name: 'topTen',
meta: {
diff --git a/yarn.lock b/yarn.lock
index db5d66f..9b5a7b6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5470,6 +5470,11 @@
"resolved" "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
"version" "1.0.1"
+"merge-images@^1.1.0":
+ "integrity" "sha512-hEGvgnTdXr08uzGvEArxRsKpy7WmozM73YaSi4s5IYF4LxrhANpqfHaz9CgBZ5+0+s2NsjPnPdStz3aCc0Yulw=="
+ "resolved" "https://registry.npmmirror.com/merge-images/-/merge-images-1.2.0.tgz"
+ "version" "1.2.0"
+
"methods@~1.1.2":
"integrity" "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
"resolved" "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz"
@@ -8060,6 +8065,11 @@
"resolved" "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz"
"version" "3.0.7"
+"signature_pad@^3.0.0-beta.3":
+ "integrity" "sha512-cOf2NhVuTiuNqe2X/ycEmizvCDXk0DoemhsEpnkcGnA4kS5iJYTCqZ9As7tFBbsch45Q1EdX61833+6sjJ8rrw=="
+ "resolved" "https://registry.npmmirror.com/signature_pad/-/signature_pad-3.0.0-beta.4.tgz"
+ "version" "3.0.0-beta.4"
+
"simple-swizzle@^0.2.2":
"integrity" "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="
"resolved" "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
@@ -9119,6 +9129,15 @@
"resolved" "https://registry.npmmirror.com/vue-router/-/vue-router-3.6.5.tgz"
"version" "3.6.5"
+"vue-signature-pad@^1.1.11":
+ "integrity" "sha512-1y6Oju+qbiBPiQ7+Q/GPaJ/eLGt1d6tiZHqprf2YIOXNK4IP3XhPBbLr/lwHUEwmumf6+6CzXWzXvYfg1yAwkw=="
+ "resolved" "https://registry.npmmirror.com/vue-signature-pad/-/vue-signature-pad-1.1.11.tgz"
+ "version" "1.1.11"
+ dependencies:
+ "merge-images" "^1.1.0"
+ "signature_pad" "^3.0.0-beta.3"
+ "vue" "^2.6.10"
+
"vue-style-loader@^3.0.0", "vue-style-loader@^3.1.2":
"integrity" "sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q=="
"resolved" "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-3.1.2.tgz"
@@ -9158,7 +9177,7 @@
dependencies:
"hammerjs" "^2.0.6"
-"vue@^2.0.0", "vue@^2.0.1", "vue@^2.3.0", "vue@^2.4.4", "vue@^2.5.17", "vue@^2.5.2", "vue@^2.6.9", "vue@>= 2.6.0":
+"vue@^2.0.0", "vue@^2.0.1", "vue@^2.3.0", "vue@^2.4.4", "vue@^2.5.17", "vue@^2.5.2", "vue@^2.6.10", "vue@^2.6.9", "vue@>= 2.6.0":
"integrity" "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ=="
"resolved" "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz"
"version" "2.7.14"
--
Gitblit v1.9.3