Kaynağa Gözat

feat: 新增一键已读功能

叶静 2 hafta önce
ebeveyn
işleme
9e43205120

+ 4 - 0
src/api/common.ts

@@ -79,6 +79,10 @@ export function noticeRead(id: number) {
   return http.put<any>(`${pre}/app/notice/read/${id}`)
 }
 
+// 全部通知已读
+export function readAllNotice() {
+  return http.get<any>(`${pre}/app/notice/readAll`)
+}
 // 删除通知
 export function noticeDel(id: number) {
   return http.delete<any>(`${pre}/app/notice/delete/${id}`)

+ 116 - 108
src/locale/bn.json

@@ -100,14 +100,8 @@
   "home.refer&earn": "রেফার\nএবং আয়",
   "home.vip": "ভিআইপি\nসদস্যতা",
   "home.bestSellers": "সেরা\nবিক্রেতা",
-  "home.topChampions": "শীর্ষ চ্যাম্পিয়ন",
-  "home.news": "নতুন",
-  "home.priceTab.allPrice": "All Price",
-  "home.priceTab.300spot": "৩০০স্পট",
-  "home.priceTab.500spot": "৫০০স্পট",
-  "home.priceTab.1000spot": "১০০০স্পট",
-  "home.priceTab.2000spot": "২০০০স্পট",
-  "home.priceTab.3000spot": "৩০০০স্পট",
+  "home.topChampions": "শীর্ষ\nচ্যাম্পিয়ন",
+  "home.news": "খবর",
   "mine.auth.register": "নিবন্ধন",
   "mine.auth.login": "লগইন",
   "mine.wallet.title": "BandhuBuy ওয়ালেট",
@@ -115,25 +109,46 @@
   "mine.wallet.recharge": "রিচার্জ",
   "mine.group.title": "আমার গ্রুপ",
   "mine.group.all": "সব গ্রুপ",
-  "mine.group.toPay": "পেমেন্ট করুন",
+  "mine.group.toPay": "পেমেন্ট বাকি",
   "mine.group.success": "সফল",
   "mine.group.failed": "ব্যর্থ",
   "mine.group.reward": "পুরস্কার",
   "mine.menu.profile": "আমার প্রোফাইল",
   "mine.menu.address": "ঠিকানা বই",
   "mine.menu.share": "শেয়ার",
-  "mine.menu.favorite": "আমার পছন্দের",
+  "mine.menu.favorite": "আমার পছন্দ",
   "mine.menu.chat": "লাইভ চ্যাট",
   "mine.menu.activity": "কার্যকলাপ গ্রুপ",
+  "home.priceTab.allPrice": "সব দাম",
+  "home.priceTab.300spot": "৩০০স্পট",
+  "home.priceTab.500spot": "৫০০স্পট",
+  "home.priceTab.1000spot": "১০০০স্পট",
+  "home.priceTab.2000spot": "২০০০স্পট",
+  "home.priceTab.3000spot": "৩০০০স্পট",
   "income.title": "রাজস্ব কেন্দ্র",
   "income.totalEarnings": "মোট আয়",
   "income.accountBalance": "রাজস্ব অ্যাকাউন্ট ব্যালেন্স",
-  "income.settledAmount": "নিষ্পত্তি করা অর্থ",
-  "income.pendingAmount": "অপেক্ষমান অর্থ",
+  "income.settledAmount": "নিষ্পত্তিকৃত পরিমাণ",
+  "income.pendingAmount": "অপেক্ষারত পরিমাণ",
   "income.tdEarnings": "আজকের আয়",
   "income.ydEarnings": "গতকালের আয়",
-  "income.mtdEarnings": "মাসের আয়",
+  "income.mtdEarnings": "এই মাসের আয়",
   "income.myGroupData": "আমার গ্রুপ ডেটা",
+  "income.withdrawNow": "এখনই উত্তোলন করুন",
+  "income.revenueRecord": "রাজস্ব রেকর্ড",
+  "income.filter.dt": "আজকে",
+  "income.filter.yt": "গতকাল",
+  "income.filter.l7d": "গত ৭ দিন",
+  "income.filter.mtd": "এই মাসে",
+  "income.filter.ytd": "এই বছরে",
+  "mine.pages.share.title": "শেয়ার",
+  "mine.pages.share.referrerCode": "আমার রেফারার কোড",
+  "mine.pages.share.qrCode": "কিউআর কোড",
+  "mine.pages.share.description": "আপনার বন্ধুদের সাথে আপনার কিউআর কোড শেয়ার করুন, তারা তাদের ক্যামেরা দিয়ে স্ক্যান করে আপনার ডাউনলাইন হিসাবে নিবন্ধন করতে পারবে।",
+  "mine.pages.share.copySuccess": "ক্লিপবোর্ডে অনুলিপি করা হয়েছে",
+  "mine.pages.share.shareTo": "{0} এ শেয়ার করুন",
+  "mine.pages.myFavorite.title": "আমার পছন্দ",
+  "mine.pages.myFavorite.empty": "এখনও পছন্দ নেই",
   "wallet.withdraw.title": "উত্তোলন",
   "wallet.withdraw.balance": "ওয়ালেট ব্যালেন্স",
   "wallet.withdraw.info": "উত্তোলনের তথ্য",
@@ -141,44 +156,29 @@
   "wallet.withdraw.form.bankAccountName": "ব্যাংক অ্যাকাউন্ট নাম",
   "wallet.withdraw.form.bankAccountNo": "ব্যাংক অ্যাকাউন্ট নং",
   "wallet.withdraw.form.amount": "উত্তোলনের পরিমাণ",
-  "wallet.withdraw.form.allAmount": "সমস্ত পরিমাণ",
+  "wallet.withdraw.form.allAmount": "স পরিমাণ",
   "wallet.withdraw.form.submit": "জমা দিন",
   "wallet.withdraw.record": "রেকর্ড",
-  "wallet.withdraw.error.bankName": "ব্যাংক নির্বাচন করুন",
-  "wallet.withdraw.error.bankAccountName": "ব্যাংক অ্যাকাউন্ট নাম লিখুন",
-  "wallet.withdraw.error.bankAccountNo": "ব্যাংক অ্যাকাউন্ট নম্বর লিখুন",
-  "wallet.withdraw.error.amount": "উত্তোলনের পরিমাণ লিখুন",
-  "wallet.withdraw.notes.title": "নোট:",
-  "wallet.withdraw.notes.1": "উত্তোলন পর্যালোচনার সময় সকাল ৯টা থেকে রাত ১০টা পর্যন্ত। উত্তোলনের পর ২ ঘন্টার মধ্যে পৌঁছানোর প্রত্যাশা করা হয়, প্রকৃত পৌঁছানোর সময় চূড়ান্ত সফল প্রক্রিয়াকরণের সময়ের উপর নির্ভর করে",
-  "wallet.withdraw.notes.2": "নিশ্চিত করুন যে আপনার ব্যাংক অ্যাকাউন্টের বিবরণ সঠিক।",
-  "wallet.withdraw.notes.3": "উত্তোলনের ব্যাংক অ্যাকাউন্টের তথ্য নিবন্ধিত অ্যাকাউন্টের তথ্যের সাথে মিলে যেতে হবে।",
-  "wallet.withdraw.notes.4": "একক উত্তোলনের নূন্যতম পরিমাণ ৳{0} এবং সর্বোচ্চ ৳{1};",
-  "wallet.withdraw.notes.5": "প্রতিটি উত্তোলনে {0}% উত্তোলন প্রক্রিয়াকরণ ফি লাগবে;",
-  "income.withdrawNow": "এখনই উত্তোলন করুন",
-  "income.revenueRecord": "আয়ের রেকর্ড",
-  "income.filter.dt": "আজ",
-  "income.filter.yt": "গতকাল",
-  "income.filter.l7d": "গত ৭ দিন",
-  "income.filter.mtd": "এই মাস",
-  "income.filter.ytd": "এই বছর",
+  "wallet.withdraw.error.bankName": "অনুগ্রহ করে ব্যাংক নির্বাচন করুন",
+  "wallet.withdraw.error.bankAccountName": "অনুগ্রহ করে ব্যাংক অ্যাকাউন্ট নাম লিখুন",
+  "wallet.withdraw.error.bankAccountNo": "অনুগ্রহ করে ব্যাংক অ্যাকাউন্ট নং লিখুন",
+  "wallet.withdraw.error.amount": "অনুগ্রহ করে উত্তোলনের পরিমাণ লিখুন",
+  "wallet.withdraw.notes.title": "দ্রষ্টব্য:",
+  "wallet.withdraw.notes.1": "উত্তোলনের পর্যালোচনা সময় সকাল ৯ টা থেকে রাত ১০ টা পর্যন্ত। উত্তোলনের পর ২ ঘন্টার মধ্যে পৌঁছানোর সম্ভাবনা, প্রকৃত পৌঁছানোর সময় চূড়ান্ত সফলভাবে প্রক্রিয়াকরণের সময়ের উপর নির্ভর করে",
+  "wallet.withdraw.notes.2": "আপনার ব্যাংক অ্যাকাউন্টের বিবরণ সঠিক কিনা তা নিশ্চিত করুন।",
+  "wallet.withdraw.notes.3": "উত্তোলনের ব্যাংক অ্যাকাউন্টের তথ্য নিবন্ধনের অ্যাকাউন্টের তথ্যের সাথে মেলানো প্রয়োজন।",
+  "wallet.withdraw.notes.4": "একক উত্তোলনের জন্য সর্বনিম্ন পরিমাণ ৳{0} এবং সর্বোচ্চ ৳{1} হবে;",
+  "wallet.withdraw.notes.5": "আপনার প্রতিটি উত্তোলনে {0}% উত্তোলন পরিচালনা ফি আরোপ করা হবে;",
   "search.placeholder": "অনুসন্ধান",
   "search.filterPrice": "সব দাম",
-  "search.filterCategory": "সব বিভাগ",
-  "search.filterSellers": "গরম বিক্রয়",
-  "search.filterSellers1": "নতুন পণ্য",
-  "mine.pages.share.title": "শেয়ার",
-  "mine.pages.share.referrerCode": "আমার রেফারার কোড",
-  "mine.pages.share.qrCode": "QR কোড",
-  "mine.pages.share.description": "আপনার বন্ধুদের সাথে আপনার QR কোড শেয়ার করুন, তারা তাদের ক্যামেরা দিয়ে স্ক্যান করে আপনার ডাউনলাইন হিসেবে নিবন্ধন করতে পারবেন।",
-  "mine.pages.share.copySuccess": "ক্লিপবোর্ডে কপি করা হয়েছে",
-  "mine.pages.share.shareTo": "{0} এ শেয়ার করুন",
-  "mine.pages.myFavorite.title": "আমার পছন্দের",
-  "mine.pages.myFavorite.empty": "এখনও কোনো পছন্দের নেই",
+  "search.filterCategory": "বিভাগ",
+  "search.filterSellers": "সেরা বিক্রেতা",
+  "search.filterSellers1": "সর্বশেষ",
   "auth.login.title": "লগইন",
   "auth.login.username.placeholder": "মোবাইল নম্বর / ব্যবহারকারীর নাম",
   "auth.login.password.placeholder": "পাসওয়ার্ড ৬-২০ অক্ষর",
   "auth.login.button": "লগইন",
-  "auth.login.noAccount": "এখনও কোনো অ্যাকাউন্ট নেই?",
+  "auth.login.noAccount": "এখনও অ্যাকাউন্ট নেই?",
   "auth.login.register": "নিবন্ধন",
   "auth.login.forgotPassword": "পাসওয়ার্ড ভুলে গেছেন?",
   "auth.login.error.emptyUsername": "অনুগ্রহ করে ব্যবহারকারীর নাম বা ফোন নম্বর লিখুন",
@@ -186,7 +186,7 @@
   "auth.login.error.passwordLength": "পাসওয়ার্ড ৬-২০ অক্ষরের হতে হবে",
   "auth.register.title": "নিবন্ধন",
   "auth.register.username.placeholder": "ব্যবহারকারীর নাম",
-  "auth.register.phone.placeholder": "+৮৮ মোবাইল নম্বর",
+  "auth.register.phone.placeholder": "+88 মোবাইল নম্বর",
   "auth.register.verifyCode.placeholder": "যাচাইকরণ কোড",
   "auth.register.password.placeholder": "পাসওয়ার্ড ৬-২০ অক্ষর",
   "auth.register.referrerCode.placeholder": "রেফারার কোড",
@@ -196,7 +196,7 @@
   "auth.register.loginNow": "এখনই লগইন করুন",
   "auth.register.error.emptyUsername": "অনুগ্রহ করে ব্যবহারকারীর নাম লিখুন",
   "auth.register.error.emptyPhone": "অনুগ্রহ করে ফোন নম্বর লিখুন",
-  "auth.register.error.invalidPhone": "অনুগ্রহ করে বৈধ বাংলাদেশি ফোন নম্বর লিখুন",
+  "auth.register.error.invalidPhone": "অনুগ্রহ করে একটি বৈধ বাংলাদেশ ফোন নম্বর লিখুন",
   "auth.register.error.emptyVerifyCode": "অনুগ্রহ করে যাচাইকরণ কোড লিখুন",
   "auth.register.error.emptyPassword": "অনুগ্রহ করে পাসওয়ার্ড লিখুন",
   "auth.register.error.passwordLength": "পাসওয়ার্ড ৬-২০ অক্ষরের হতে হবে",
@@ -269,7 +269,14 @@
   "notifications.tabs.orders": "অর্ডার",
   "notifications.tabs.revenue": "রাজস্ব",
   "notifications.tabs.account": "অ্যাকাউন্ট",
-  "notifications.tabs.promos": "প্রচার",
+  "notifications.tabs.promos": "Promos",
+  "notifications.time.sunday": "রবি",
+  "notifications.time.monday": "সোম",
+  "notifications.time.tuesday": "মঙ্গল",
+  "notifications.time.wednesday": "বুধ",
+  "notifications.time.thursday": "বৃহস্পতি",
+  "notifications.time.friday": "শুক্র",
+  "notifications.time.saturday": "শনি",
   "notifications.order.paymentSuccess.title": "গ্রুপ বাই পেমেন্ট সফল",
   "notifications.order.paymentSuccess.content": "আপনার অংশগ্রহণ করা গ্রুপ অর্ডার [{orderId}] সফলভাবে পেমেন্ট হয়েছে",
   "notifications.order.groupBuyWin.title": "গ্রুপ বাই সফল",
@@ -292,65 +299,65 @@
   "notifications.reward.directReferral.content": "আপনি সরাসরি রেফারেলের জন্য পুরস্কার পেয়েছেন",
   "notifications.reward.checkin.title": "চেক-ইন পুরস্কার",
   "notifications.reward.checkin.content": "আপনি চেক-ইনের জন্য পুরস্কার পেয়েছেন",
-  "notifications.reward.firstCommission.title": "Direct Referral Reward",
-  "notifications.reward.firstCommission.content": "You have received the reward for Direct Referral",
-  "notifications.reward.secondaryCommission.title": "Direct Referral Reward",
-  "notifications.reward.secondaryCommission.content": "You have received the reward for Direct Referral",
+  "notifications.reward.firstCommission.title": "সরাসরি রেফারেল পুরস্কার",
+  "notifications.reward.firstCommission.content": "আপনি সরাসরি রেফারেলের জন্য পুরস্কার পেয়েছেন",
+  "notifications.reward.secondaryCommission.title": "সরাসরি রেফারেল পুরস্কার",
+  "notifications.reward.secondaryCommission.content": "আপনি সরাসরি রেফারেলের জন্য পুরস্কার পেয়েছেন",
   "notifications.money.rechargeSuccess.title": "রিচার্জ সফল",
-  "notifications.money.rechargeSuccess.content": "আপনার KLICKওয়ালেট সফলভাবে রিচার্জ হয়েছে",
+  "notifications.money.rechargeSuccess.content": "আপনার KLICKwallet সফলভাবে রিচার্জ হয়েছে",
   "notifications.money.withdrawalAccountSuccess.title": "উত্তোলন সফল",
-  "notifications.money.withdrawalAccountSuccess.content": "আপনার রাজস্ব অ্যাকাউন্ট উত্তোলনের অনুরোধ প্রক্রিয়া করা হয়েছে",
+  "notifications.money.withdrawalAccountSuccess.content": "আপনার রাজস্ব অ্যাকাউন্ট উত্তোলনের অনুরোধ প্রক্রিয়াকরণ করা হয়েছে",
   "notifications.money.withdrawalWalletSuccess.title": "উত্তোলন সফল",
-  "notifications.money.withdrawalWalletSuccess.content": "আপনার KLICK ওয়ালেট উত্তোলনের অনুরোধ প্রক্রিয়া করা হয়েছে",
+  "notifications.money.withdrawalWalletSuccess.content": "আপনার KLICK ওয়ালেট উত্তোলনের অনুরোধ প্রক্রিয়াকরণ করা হয়েছে",
   "notifications.money.withdrawalFail.title": "উত্তোলন ব্যর্থ",
   "notifications.money.withdrawalFail.content": "আপনার উত্তোলনের অনুরোধ ব্যর্থ হয়েছে",
-  "productDetail.title": "পণ্যের বিবরণ",
-  "productDetail.notification.message": "{name} {time} সেকেন্ড আগে এই গ্রুপে {action}!",
-  "productDetail.notification.opened": "খুলেছে",
-  "productDetail.notification.joined": "যোগ দিয়েছে",
-  "webLink.title": "ওয়েব লিঙ্ক",
-  "missionCenter.signIn.title": "ক্রমাগত সাইন ইন করে পুরস্কার পান",
+  "productDetail.title": "পণ্যের বিস্তারিত",
+  "productDetail.notification.message": "{name} এই গ্রুপ {time} সেকেন্ড আগে {action}!",
+  "productDetail.notification.opened": "খুলেছে",
+  "productDetail.notification.joined": "যোগ দিয়েছে",
+  "webLink.title": "ওয়েব লিক",
+  "missionCenter.signIn.title": "পুরস্কার পেতে ধারাবাহিকভাবে সাইন ইন করুন",
   "missionCenter.signIn.button": "চেক-ইন",
   "missionCenter.dailyMission.title": "দৈনিক মিশন",
   "missionCenter.dailyMission.startNow": "এখনই শুরু করুন",
-  "vipMembership.inviteProgress": "আরও {0} জন বন্ধুকে আমন্ত্রণ জানাতে হবে। V{1} এ আপগ্রেড করতে পারে",
-  "vipMembership.invitedFriends": "আমন্ত্রিত বন্ধুরা",
-  "vipMembership.teamMembers": "টিম সদস্যরা",
+  "vipMembership.inviteProgress": "আমাদের এখনও {0} বন্ধুদের আমন্ত্রণ করতে হবে। V{1} এ আপগ্রেড করা যেতে পারে",
+  "vipMembership.invitedFriends": "আমন্ত্রিত বন্ধু",
+  "vipMembership.teamMembers": "দলের সদস্য",
   "vipMembership.l7dEarnings": "গত ৭ দিনের আয়",
   "vipMembership.benefitsTiers": "ভিআইপি সুবিধা/স্তর",
   "vipMembership.table.vipLevel": "ভিআইপি\nস্তর",
-  "vipMembership.table.invitedNo": "আমন্ত্রণ\nসংখ্যা",
+  "vipMembership.table.invitedNo": "আমন্ত্রিত\nনং",
   "vipMembership.table.directReferralReward": "সরাসরি রেফারেল\nপুরস্কার",
   "vipMembership.table.indirectReferralReward": "পরোক্ষ রেফারেল\nপুরস্কার",
-  "vipMembership.table.joinedGroupsNo": "যোগদানকৃত গ্রুপ\nসংখ্যা",
-  "referEarn.inviteFriends": "বন্ধুদের আমন্ত্রণ জানান",
-  "referEarn.earnCash": "নগদ আয় করুন",
+  "vipMembership.table.joinedGroupsNo": "যোগ দেওয়া গ্রুপ\nনং",
+  "referEarn.inviteFriends": "বন্ধুদের আমন্ত্রণ করুন",
+  "referEarn.earnCash": "নগদ টাকা উপার্জন করুন",
   "referEarn.shareNow": "এখনই শেয়ার করুন",
-  "referEarn.howToShare": "- কীভাবে শেয়ার করে অর্থ উপার্জন করবেন -",
-  "referEarn.step1": "বন্ধুদের আমন্ত্রণ শেয়ার করুন",
+  "referEarn.howToShare": "- কীভাবে শেয়ার করে টাকা উপার্জন করবেন -",
+  "referEarn.step1": "আমন্ত্রণ বন্ধুদের শেয়ার করুন",
   "referEarn.step2": "আপনার বন্ধু গ্রুপে যোগ দিন",
   "referEarn.step3": "আপনি ৳{0} পুরস্কার পান",
-  "referEarn.invitedFriends": "আমন্ত্রিত বন্ধুরা",
+  "referEarn.invitedFriends": "আমন্ত্রিত বন্ধু",
   "checkout.title": "চেকআউট",
   "checkout.selected": "নির্বাচিত",
   "checkout.quantity": "পরিমাণ",
-  "checkout.orderSummary": "অর্ডার সারসংক্ষেপ",
-  "checkout.subTotal": "উপমোট",
+  "checkout.orderSummary": "অর্ডার সারাংশ",
+  "checkout.subTotal": "মোট",
   "checkout.total": "মোট",
   "checkout.selectPaymentMethod": "পেমেন্ট পদ্ধতি নির্বাচন করুন",
   "checkout.walletBalance": "ব্যালেন্স",
   "checkout.placeOrder": "অর্ডার করুন",
   "checkout.dialog.insufficientBalance": "আপনার ওয়ালেট ব্যালেন্স অপর্যাপ্ত।\nঅনুগ্রহ করে রিচার্জ করুন!",
-  "checkout.dialog.rechargeDiscount": "রিচার্জ সর্বোচ্চ ৫% ছাড়",
+  "checkout.dialog.rechargeDiscount": "রিচার্জ সর্বোচ্চ ছাড় ৫%",
   "checkout.dialog.rechargeNow": "এখনই রিচার্জ করুন",
-  "checkout.dialog.paymentSuccess": "পেমেন্ট সফল!\nআপনার অর্ডার দেওয়া হয়েছে।",
+  "checkout.dialog.paymentSuccess": "পেমেন্ট সফল!\nআপনার অর্ডার করা হয়েছে।",
   "checkout.dialog.viewOrder": "অর্ডার দেখুন",
-  "checkout.dialog.paymentFailed": "পেমেন্ট ব্যর্থ!\nঅনুগ্রহ করে আবার চেষ্টা করুন বা সাপোর্টে যোগাযোগ করুন।",
-  "checkout.dialog.retryPayment": "পেমেন্ট পুনরায় চেষ্টা করুন",
+  "checkout.dialog.paymentFailed": "পেমেন্ট ব্যর্থ!\nঅনুগ্রহ করে আবার চেষ্টা করুন বা সমর্থন যোগাযোগ করুন।",
+  "checkout.dialog.retryPayment": "পেমেন্ট আবার চেষ্টা করুন",
   "checkout.dialog.networkError": "নেটওয়ার্ক সংযোগ ব্যর্থ।\nঅনুগ্রহ করে আপনার নেটওয়ার্ক সেটিংস পরীক্ষা করুন।",
   "checkout.dialog.retry": "আবার চেষ্টা করুন",
   "checkout.dialog.gotIt": "বুঝেছি",
-  "checkout.toast.redirecting": "অর্ডারে পুনঃনির্দেশ করা হচ্ছে...",
+  "checkout.toast.redirecting": "অর্ডারে পুনঃনির্দেশিত হচ্ছে...",
   "checkout.toast.retrying": "আবার চেষ্টা করা হচ্ছে...",
   "bestSellers.title": "সেরা বিক্রেতা",
   "bestSellers.successfullyGrouped": "গত ৭ দিনে {0} এর বেশি সফলভাবে গ্রুপ করা হয়েছে",
@@ -359,59 +366,60 @@
   "productDetail.groupRules": "গ্রুপ নিয়ম",
   "productDetail.viewRules": "নিয়ম দেখুন",
   "productDetail.ongoingGroup": "চলমান গ্রুপ",
-  "productDetail.need": "আরও",
-  "productDetail.more": "জন প্রয়োজন",
+  "productDetail.need": "প্রয়োজন",
+  "productDetail.more": "আরও",
   "productDetail.joinGroup": "গ্রুপে যোগ দিন",
-  "productDetail.details": "বিবরণ",
+  "productDetail.details": "বিস্তারিত",
   "productDetail.home": "হোম",
-  "productDetail.favorite": "পছন্দের",
-  "productDetail.favoriteSuccess": "পছন্দের তালিকায় যোগ করা হয়েছে",
-  "productDetail.unfavoriteSuccess": "পছন্দের তালিকা থেকে সরানো হয়েছে",
-  "productDetail.favoriteError": "অপারেশন ব্যর্থ, আবার চেষ্টা করুন",
+  "productDetail.favorite": "পছন্দ",
+  "productDetail.favoriteSuccess": "পছন্দে যোগ করা হয়েছে",
+  "productDetail.unfavoriteSuccess": "পছন্দ থেকে সরানো হয়েছে",
+  "productDetail.favoriteError": "অপারেশন ব্যর্থ, অনুগ্রহ করে আবার চেষ্টা করুন",
   "productDetail.openGroup": "গ্রুপ খুলুন",
   "productDetail.quantity": "পরিমাণ",
   "topChampions.title": "শীর্ষ চ্যাম্পিয়ন",
-  "topChampions.top": "TOP",
-  "topChampions.invitedFriends": "আমন্ত্রিত বন্ধুরা",
+  "topChampions.top": "শীর্ষ",
+  "topChampions.invitedFriends": "আমন্ত্রিত বন্ধু",
   "topChampions.l7dEarnings": "গত ৭ দিনের আয়",
-  "topChampions.teamMembers": "টিম সদস্যরা",
-  "topChampions.joinedGroups": "যোগদানকৃত গ্রুপ",
+  "topChampions.teamMembers": "দলের সদস্য",
+  "topChampions.joinedGroups": "যোগ েওয়া গ্রুপ",
   "wallet.recharge.title": "রিচার্জ",
   "wallet.recharge.submit": "জমা দিন",
   "orderDetail.deliveryPartner": "ডেলিভারি পার্টনার",
-  "orderDetail.subTotal": "উপমোট",
+  "orderDetail.subTotal": "মোট",
   "orderDetail.bandhuBuyWallet": "BandhuBuy ওয়ালেট",
   "orderDetail.paymentMethod": "পেমেন্ট পদ্ধতি",
   "orderDetail.walletBalanceText": "ওয়ালেট ব্যালেন্স",
-  "productDetail.fullRefundText": "জিতলে না হলে সম্পূর্ণ ফেরত + নগদ পুরস্কার",
-  "app.notificationPermission": "আপনি এখনও বিজ্ঞপ্তি অনুমতি খুলেন নি",
+  "productDetail.fullRefundText": "জিততে না পারলে পুরো ফেরত + নগদ পুরস্কার",
+  "app.notificationPermission": "আপনি বিজ্ঞপ্তি অনুমতি খুলেননি",
   "wallet.recharge.record": "রেকর্ড",
-  "wallet.recharge.selectProvider": "আপনার ওয়ালেট প্রভাইডার নির্বাচন করুন",
-  "wallet.recharge.depositAmount": "জমা পরিমাণ",
-  "wallet.recharge.reminder": "স্মরণ: রিচার্জ সফল না হলে, অন্য চ্যানেল নির্বাচন করুন। লেনদেন আইডি সঠিকভাবে পূরণ করতে হবে।",
-  "wallet.recharge.enterAmount": "রিচার্জ পরিমাণ লিখুন",
+  "wallet.recharge.selectProvider": "আপনার ওয়ালেট প্রভাইডার নির্বাচন করুন",
+  "wallet.recharge.depositAmount": "জমা পরিমাণ",
+  "wallet.recharge.reminder": "স্মরণ: রিচার্জ সফল না হলে, অনুগ্রহ করে অন্য চ্যানেল নির্বাচন করুন। লেনদেন আইডি সঠিকভাবে পূরণ করতে হবে।",
+  "wallet.recharge.enterAmount": "অনুগ্রহ করে রিচার্জ পরিমাণ লিখুন",
   "wallet.recharge.minAmount": "সর্বনিম্ন রিচার্জ পরিমাণ {minAmount}",
   "wallet.recharge.maxAmount": "সর্বোচ্চ রিচার্জ পরিমাণ {maxAmount}",
-  "orderDetail.rechargeDialog.title": "আপনার ওয়ালেট ব্যালেন্স অপর্যাপ্ত।\\nদয়া করে রিচার্জ করুন!",
-  "orderDetail.rechargeDialog.confirm": "এখন রিচার্জ করুন",
+  "orderDetail.rechargeDialog.title": "আপনার ওয়ালেট ব্যালেন্স অপর্যাপ্ত।\nঅনুগ্রহ করে রিচার্জ করুন!",
+  "orderDetail.rechargeDialog.confirm": "এখন রিচার্জ করুন",
   "orderDetail.payDialog.title": "পেমেন্ট",
-  "orderDetail.payDialog.confirm": "এখন পরিশোধ করুন",
+  "orderDetail.payDialog.confirm": "এখনই পেমেন্ট করুন",
   "orderDetail.time.placed": "অর্ডার করা হয়েছে",
-  "orderDetail.time.paid": "পরিশোধিত",
-  "orderDetail.time.shipped": "পাঠানো হয়েছে",
+  "orderDetail.time.paid": "পেমেন্ট করা হয়েছে",
+  "orderDetail.time.shipped": "শি করা হয়েছে",
   "orderDetail.time.completed": "সম্পন্ন হয়েছে",
   "orderDetail.copy.success": "ক্লিপবোর্ডে অনুলিপি করা হয়েছে",
-  "wallet.unpaidOrderDialog.title": "আপনার কাছে অসম্পন্ন টপ-আপ অর্ডার রয়েছে,\\nআপনি কি চালিয়ে যেতে চান?",
+  "wallet.unpaidOrderDialog.title": "আপনার কাছে অসম্পন্ন টপ আপ অর্ডার রয়েছে,\nআপনি কি চালিয়ে যেতে চান?",
   "wallet.unpaidOrderDialog.confirm": "দেখুন",
-  "wallet.unpaidOrderDialog.cancel": "বাতিল করুন",
-  "wallet.record.type.DT": "DT",
-  "wallet.record.type.YT": "YT",
-  "wallet.record.type.L7D": "L7D",
-  "wallet.record.type.MTD": "MTD",
-  "wallet.record.type.YTD": "YTD",
-  "login.slogan": "আরও বেশি গ্রুপ ক্রয়, আরও বেশি পুরস্কার",
+  "wallet.unpaidOrderDialog.cancel": "বাতিল",
+  "wallet.record.type.DT": "আজকে",
+  "wallet.record.type.YT": "গতকাল",
+  "wallet.record.type.L7D": "গত ৭ দিন",
+  "wallet.record.type.MTD": "এই মাসে",
+  "wallet.record.type.YTD": "এই বছরে",
+  "login.slogan": "আরও গ্রুপ ক্রয়, আরও বড় পুরস্কার",
   "orderDetail": {
     "walletBalanceText": "ব্যালেন্স",
     "paymentMethod": "পেমেন্ট"
-  }
+  },
+  "common.operate.success": "অপারেশন সফল"
 }

+ 9 - 1
src/locale/en.json

@@ -271,6 +271,13 @@
   "notifications.tabs.revenue": "Revenue",
   "notifications.tabs.account": "Account",
   "notifications.tabs.promos": "Promos",
+  "notifications.time.sunday": "Sun",
+  "notifications.time.monday": "Mon",
+  "notifications.time.tuesday": "Tue",
+  "notifications.time.wednesday": "Wed",
+  "notifications.time.thursday": "Thu",
+  "notifications.time.friday": "Fri",
+  "notifications.time.saturday": "Sat",
   "notifications.order.paymentSuccess.title": "Group Buy Payment Successful",
   "notifications.order.paymentSuccess.content": "The group order you participated in [{orderId}] has been successfully paid",
   "notifications.order.groupBuyWin.title": "Group Buy Successful",
@@ -414,5 +421,6 @@
   "orderDetail": {
     "walletBalanceText": "Balance",
     "paymentMethod": "Payment"
-  }
+  },
+  "common.operate.success": "Operation successful"
 }

+ 14 - 6
src/locale/zh-Hans.json

@@ -269,7 +269,14 @@
   "notifications.tabs.orders": "订单",
   "notifications.tabs.revenue": "收益",
   "notifications.tabs.account": "账户",
-  "notifications.tabs.promos": "活动",
+  "notifications.tabs.promos": "Promos",
+  "notifications.time.sunday": "周日",
+  "notifications.time.monday": "周一",
+  "notifications.time.tuesday": "周二",
+  "notifications.time.wednesday": "周三",
+  "notifications.time.thursday": "周四",
+  "notifications.time.friday": "周五",
+  "notifications.time.saturday": "周六",
   "notifications.order.paymentSuccess.title": "团购支付成功",
   "notifications.order.paymentSuccess.content": "您参与的团购订单[{orderId}]已支付成功",
   "notifications.order.groupBuyWin.title": "团购成功",
@@ -292,12 +299,12 @@
   "notifications.reward.directReferral.content": "您已获得直接推荐奖励",
   "notifications.reward.checkin.title": "签到奖励",
   "notifications.reward.checkin.content": "您已获得签到奖励",
-  "notifications.money.rechargeSuccess.title": "充值成功",
-  "notifications.money.rechargeSuccess.content": "您的KLICK钱包已成功充值",
   "notifications.reward.firstCommission.title": "Direct Referral Reward",
   "notifications.reward.firstCommission.content": "You have received the reward for Direct Referral",
   "notifications.reward.secondaryCommission.title": "Direct Referral Reward",
   "notifications.reward.secondaryCommission.content": "You have received the reward for Direct Referral",
+  "notifications.money.rechargeSuccess.title": "充值成功",
+  "notifications.money.rechargeSuccess.content": "您的KLICK钱包已成功充值",
   "notifications.money.withdrawalAccountSuccess.title": "提现成功",
   "notifications.money.withdrawalAccountSuccess.content": "您的收益账户提现请求已处理",
   "notifications.money.withdrawalWalletSuccess.title": "提现成功",
@@ -392,7 +399,7 @@
   "wallet.recharge.enterAmount": "请输入充值金额",
   "wallet.recharge.minAmount": "最小充值金额为 {minAmount}",
   "wallet.recharge.maxAmount": "最大充值金额为 {maxAmount}",
-  "orderDetail.rechargeDialog.title": "您的钱包余额不足。\\n请充值!",
+  "orderDetail.rechargeDialog.title": "您的钱包余额不足。\n请充值!",
   "orderDetail.rechargeDialog.confirm": "立即充值",
   "orderDetail.payDialog.title": "支付",
   "orderDetail.payDialog.confirm": "立即支付",
@@ -401,7 +408,7 @@
   "orderDetail.time.shipped": "发货时间",
   "orderDetail.time.completed": "完成时间",
   "orderDetail.copy.success": "已复制到剪贴板",
-  "wallet.unpaidOrderDialog.title": "您有未完成的充值订单,\\n是否继续?",
+  "wallet.unpaidOrderDialog.title": "您有未完成的充值订单,\n是否继续?",
   "wallet.unpaidOrderDialog.confirm": "查看",
   "wallet.unpaidOrderDialog.cancel": "取消",
   "wallet.record.type.DT": "今天",
@@ -409,5 +416,6 @@
   "wallet.record.type.L7D": "近7天",
   "wallet.record.type.MTD": "本月",
   "wallet.record.type.YTD": "本年",
-  "login.slogan": "更多团购,更多奖励"
+  "login.slogan": "更多团购,更多奖励",
+  "common.operate.success": "操作成功"
 }

+ 87 - 15
src/pages/notifications/notifications.vue

@@ -15,9 +15,10 @@ import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
 import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
 // 必须导入需要用到的页面生命周期(即使在当前页面上没有直接使用到)
 
-import { noticeDel, noticeList, noticeRead } from '@/api/common'
+import { noticeDel, noticeList, noticeRead, readAllNotice } from '@/api/common'
 import { t } from '@/locale'
 import { toPage } from '@/utils/page'
+import { toast } from '@/utils/toast'
 
 defineOptions({
   name: 'Notifications', // 通知
@@ -79,6 +80,11 @@ const contentTypeMap = {
     contentKey: 'notifications.reward.referFriends.content',
     link: '/pages/income/income',
   },
+  REWARD_OPEN_GROUP_BUY: {
+    titleKey: 'notifications.reward.openGroupBuy.title',
+    contentKey: 'notifications.reward.openGroupBuy.content',
+    link: '/pages/income/income',
+  },
   REWARD_GROUP_BUY: {
     titleKey: 'notifications.reward.groupBuy.title',
     contentKey: 'notifications.reward.groupBuy.content',
@@ -104,11 +110,6 @@ const contentTypeMap = {
     contentKey: 'notifications.reward.secondaryCommission.content',
     link: '/pages/income/income',
   },
-  REWARD_OPEN_GROUP_BUY: {
-    titleKey: 'notifications.reward.openGroupBuy.title',
-    contentKey: 'notifications.reward.openGroupBuy.content',
-    link: '/pages/income/income',
-  },
   MONEY_RECHARGE_SUCCESS: {
     titleKey: 'notifications.money.rechargeSuccess.title',
     contentKey: 'notifications.money.rechargeSuccess.content',
@@ -217,6 +218,67 @@ async function handleAction(action: string, item: any) {
     }
   }
 }
+
+// 格式化时间显示
+function formatNoticeTime(timeString: string) {
+  const noticeDate = new Date(timeString)
+  const now = new Date()
+
+  // 设置时间为当天的开始和结束
+  const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate())
+  const todayEnd = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1)
+
+  // 如果是当天
+  if (noticeDate >= todayStart && noticeDate < todayEnd) {
+    // 返回 HH:mm 格式
+    return `${String(noticeDate.getHours()).padStart(2, '0')}:${String(noticeDate.getMinutes()).padStart(2, '0')}`
+  }
+
+  // 计算时间差(毫秒)
+  const timeDiff = now.getTime() - noticeDate.getTime()
+  const daysDiff = timeDiff / (1000 * 60 * 60 * 24)
+
+  // 如果是近一周内
+  if (daysDiff <= 7) {
+    // 返回星期几
+    const weekdays = [
+      t('notifications.time.sunday'),
+      t('notifications.time.monday'),
+      t('notifications.time.tuesday'),
+      t('notifications.time.wednesday'),
+      t('notifications.time.thursday'),
+      t('notifications.time.friday'),
+      t('notifications.time.saturday'),
+    ]
+    return weekdays[noticeDate.getDay()]
+  }
+
+  // 7天前显示短日期年月日 格式为 yy/mm/dd
+  const year = String(noticeDate.getFullYear()).slice(-2)
+  const month = String(noticeDate.getMonth() + 1).padStart(2, '0')
+  const day = String(noticeDate.getDate()).padStart(2, '0')
+  return `${year}/${month}/${day}`
+}
+
+// 清理所有未读通知
+async function clearAllNotifications() {
+  try {
+    const res = await readAllNotice()
+    if (res.code === '200') {
+      // 更新本地数据状态
+      dataList.value.forEach((item) => {
+        item.readFlag = true
+      })
+      // 刷新列表
+      paging.value.reload()
+      // 显示成功提示
+      toast.success(t('common.operate.success'))
+    }
+  }
+  catch (error) {
+    console.error('清理通知失败:', error)
+  }
+}
 </script>
 
 <template>
@@ -226,7 +288,11 @@ async function handleAction(action: string, item: any) {
         <wd-tab v-for="tabItem in tabs" :key="tabItem.value" :name="tabItem.value" :title="tabItem.title" />
       </wd-tabs>
     </template>
-    <view class="py-20rpx">
+    <!-- 清理按钮 -->
+    <view class="flex items-center justify-end pr-20rpx pt-14rpx" @click="clearAllNotifications">
+      <image src="/static/icons/cl.png" class="h-40rpx w-40rpx" />
+    </view>
+    <view class="py-14rpx">
       <wd-swipe-action v-for="item in dataList" :key="item.id" class="mb-20rpx">
         <view
           class="bg-white px-22rpx py-18rpx"
@@ -247,20 +313,26 @@ async function handleAction(action: string, item: any) {
                 {{ getNoticeTitle(item) }}
               </text>
             </view>
-            <text
-              class="text-22rpx"
-              :class="item.readFlag ? 'text-#CCCCCC' : 'text-#3A444C'"
-            >
-              {{ item.createTime }}
-            </text>
+            <view class="flex items-center">
+              <text
+                class="text-22rpx"
+                :class="item.readFlag ? 'text-#CCCCCC' : 'text-#3A444C'"
+              >
+                {{ formatNoticeTime(item.createTime) }}
+              </text>
+            </view>
           </view>
-          <view class="flex items-center text-22rpx">
+          <view class="flex items-center justify-between text-22rpx">
             <view
-              class="truncate"
+              class="flex-1 truncate"
               :class="item.readFlag ? 'text-#BBBBBB' : 'text-#3A444C'"
             >
               {{ getNoticeContent(item) }}
             </view>
+            <view
+              v-if="!item.readFlag"
+              class="ml-8rpx h-12rpx w-12rpx flex-shrink-0 rounded-full bg-#FF0000"
+            />
           </view>
         </view>
         <template #right>

BIN
src/static/icons/cl.png