diff --git a/Yi.Ai.Vue3/publish_aihub_02.zip b/Yi.Ai.Vue3/publish_aihub_02.zip deleted file mode 100644 index 43102c89..00000000 Binary files a/Yi.Ai.Vue3/publish_aihub_02.zip and /dev/null differ diff --git a/Yi.Ai.Vue3/src/api/model/types.ts b/Yi.Ai.Vue3/src/api/model/types.ts index 82daa991..699f06d8 100644 --- a/Yi.Ai.Vue3/src/api/model/types.ts +++ b/Yi.Ai.Vue3/src/api/model/types.ts @@ -12,6 +12,8 @@ export interface GetSessionListVO { apiKey?: string; remark?: string; modelId?: string; + isFree?: boolean; // 是否为免费模型 + isPremiumPackage?: boolean; // 是否为尊享套餐模型 } // 模型类型枚举 diff --git a/Yi.Ai.Vue3/src/assets/images/taobao-qr.png b/Yi.Ai.Vue3/src/assets/images/taobao-qr.png new file mode 100644 index 00000000..d8e00cd8 Binary files /dev/null and b/Yi.Ai.Vue3/src/assets/images/taobao-qr.png differ diff --git a/Yi.Ai.Vue3/src/assets/images/wx-group-qr.jpg b/Yi.Ai.Vue3/src/assets/images/wx-group-qr.jpg new file mode 100644 index 00000000..e5c2488b Binary files /dev/null and b/Yi.Ai.Vue3/src/assets/images/wx-group-qr.jpg differ diff --git a/Yi.Ai.Vue3/src/components/ContactUs/index.vue b/Yi.Ai.Vue3/src/components/ContactUs/index.vue new file mode 100644 index 00000000..048e92c4 --- /dev/null +++ b/Yi.Ai.Vue3/src/components/ContactUs/index.vue @@ -0,0 +1,583 @@ + + + + + diff --git a/Yi.Ai.Vue3/src/components/ModelSelect/index.vue b/Yi.Ai.Vue3/src/components/ModelSelect/index.vue index 4f632d51..d9691670 100644 --- a/Yi.Ai.Vue3/src/components/ModelSelect/index.vue +++ b/Yi.Ai.Vue3/src/components/ModelSelect/index.vue @@ -12,7 +12,7 @@ import { isUserVip } from '@/utils/user'; const modelStore = useModelStore(); // 检查模型是否可用 function isModelAvailable(item: GetSessionListVO) { - return isUserVip() || item.modelId?.includes('DeepSeek-R1-0528'); + return isUserVip() || item.isFree; } onMounted(async () => { @@ -116,8 +116,8 @@ function getModelStyleClass(mode: any) { `; } - // 规则2:普通灰 - if (name.includes('deepseek-r1')) { + // 规则2:普通灰(免费模型) + if (mode.isFree) { return 'text-gray-700'; } diff --git a/Yi.Ai.Vue3/src/components/ProductPackage/index.vue b/Yi.Ai.Vue3/src/components/ProductPackage/index.vue index 4e6f63ce..859507ed 100644 --- a/Yi.Ai.Vue3/src/components/ProductPackage/index.vue +++ b/Yi.Ai.Vue3/src/components/ProductPackage/index.vue @@ -5,9 +5,10 @@ import { ElMessage } from 'element-plus'; import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'; import { createOrder, getOrderStatus } from '@/api'; import { getGoodsList, GoodsCategoryType } from '@/api/pay'; -import SupportModelList from '@/components/userPersonalCenter/components/SupportModelList.vue'; import ProductPage from '@/pages/products/index.vue'; import { useUserStore } from '@/stores'; +import { showContactUs } from '@/utils/contact-us.ts'; +import { contactConfig, promotionConfig, taobaoConfig } from '@/config/constants.ts'; const emit = defineEmits(['close']); @@ -37,6 +38,31 @@ const packagesData = ref<{ const userStore = useUserStore(); +// 复制淘口令 +function copyTaobaoCode() { + navigator.clipboard.writeText(taobaoConfig.code).then(() => { + ElMessage.success('淘口令已复制,打开手机淘宝即可购买'); + }).catch(() => { + ElMessage.error('复制失败,请手动复制'); + }); +} + +// 跳转淘宝 +function goToTaobao() { + window.open(taobaoConfig.link, '_blank'); +} + +// 跳转模型库 +function goToModelLibrary() { + close(); + window.location.href = '/model-library'; +} + +// 联系客服 +function contactService() { + showContactUs({ scenario: 'regular' }); +} + const visible = ref(true); const activeTab = ref('member'); const selectedId = ref(null); @@ -141,6 +167,7 @@ function cleanupPayment() { const tabs = [ { key: 'member', label: '会员套餐' }, { key: 'token', label: '尊享Token包' }, + { key: 'newbie', label: '新人特惠' }, { key: 'activation', label: '激活码' }, ]; @@ -381,18 +408,72 @@ function goToActivation() { - -
+ +
{{ tab.label }}
+ +
+
+
+
🎉
+

新人特惠组合包

+

超值优惠,仅限首次购买用户

+
+ +
+ +
+
+
+
方法一
+ + + 淘宝链接 + +
+
+
方法二
+ + + 复制淘口令 + +
+
+
+ + +
+
淘口令
+
{{ taobaoConfig.code }}
+
+ + +
+

温馨提示

+

新人特惠仅限首次购买 · 购买后联系客服激活

+

客服微信:{{ contactConfig.wechatId }}

+
+
+
+
+
@@ -543,19 +624,23 @@ function goToActivation() {
-
-
-

- 全站任意充值,每累计充值10元永久优惠尊享包10元,最高可优惠50元 +

+
+

+ {{ promotionConfig.rechargeDiscount }}

-

- 充值后,加客服微信回复账号名,可专享vip售后服务 -

-

- 客服微信号:chengzilaoge520 或扫描右侧二维码 +

+ {{ promotionConfig.vipServiceTip }}

+ + + 联系客服 +
-
@@ -572,11 +657,31 @@ function goToActivation() { - + +
+ +
+
+ +
+
+

查看支持的模型

+

查看意心AI支持的所有模型列表及详细信息

+
+ + 前往模型库 + + +
+
-
+
登录和注册都代表同意YiXinAI的会员协议
@@ -622,7 +727,7 @@ function goToActivation() {
-
+
-
-
-

- 全站任意充值,每累计充值10元永久优惠尊享包10元,最高可优惠50元 -

- -

- 充值后,加客服微信回复账号名,可专享vip售后服务 -

-

- 客服微信号:chengzilaoge520 或扫描右侧二维码 -

-
-
+
+

+ {{ promotionConfig.rechargeDiscount }} +

+

+ {{ promotionConfig.vipServiceTip }} +

+ + + 联系客服 +
@@ -827,8 +934,27 @@ function goToActivation() {
-
- +
+ +
+ +
+
+ +

查看支持的模型

+
+

查看意心AI支持的所有模型列表及详细信息

+ + 前往模型库 + + +
+
@@ -842,6 +968,45 @@ function goToActivation() { .product-package-dialog { .el-dialog__header { display: none; } + /* Tab 切换样式 */ + .tabs-container { + display: flex; + border-bottom: 2px solid #e5e7eb; + margin-bottom: 24px; + overflow-x: auto; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + scrollbar-width: none; /* Firefox */ + + &::-webkit-scrollbar { + display: none; /* Chrome, Safari */ + } + + .tab-item { + flex-shrink: 0; + padding: 12px 20px; + cursor: pointer; + font-size: 15px; + font-weight: 500; + color: #6b7280; + border-bottom: 3px solid transparent; + margin-bottom: -2px; + transition: all 0.3s; + white-space: nowrap; + user-select: none; + + &:hover { + color: #f97316; + } + + &.tab-active { + color: #f97316; + font-weight: 600; + border-bottom-color: #f97316; + } + } + } + /* 详情页样式(无修改) */ .details-view { height: 600px; overflow-y: auto; padding-right: 8px; @@ -859,6 +1024,297 @@ function goToActivation() { } } + /* 新人特惠页面样式 - 紧凑版(匹配激活码页面风格) */ + .newbie-guide-container { + padding: 20px 16px; + display: flex; + justify-content: center; + align-items: center; + min-height: 300px; + background: linear-gradient(to bottom, #fff, #fdfdfd); + border-radius: 8px; + + .newbie-content { + text-align: center; + max-width: 450px; + width: 100%; + + .newbie-header { + margin-bottom: 20px; + padding: 16px; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + border-radius: 10px; + color: white; + + .header-icon { + font-size: 32px; + margin-bottom: 6px; + } + + .header-title { + font-size: 20px; + font-weight: 700; + margin: 0 0 6px 0; + } + + .header-subtitle { + font-size: 13px; + margin: 0; + opacity: 0.95; + } + } + + .newbie-body { + display: flex; + flex-direction: column; + gap: 14px; + + // 购买方式卡片 + .purchase-card { + background: #f7f8fa; + border-radius: 10px; + padding: 16px; + border: 2px solid #e8ecf0; + + .card-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 16px; + + .card-col { + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; + + .method-label { + font-size: 13px; + font-weight: 600; + color: #606266; + } + + .el-button { + width: 100%; + } + } + } + } + + // 淘口令展示 + .taobao-code-box { + background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fe 100%); + border-radius: 8px; + padding: 14px; + border: 2px dashed #bae6fd; + + .code-label { + font-size: 12px; + color: #0369a1; + font-weight: 600; + margin-bottom: 8px; + } + + .code-text { + font-size: 11px; + color: #667eea; + font-family: 'Courier New', monospace; + line-height: 1.5; + word-break: break-all; + background: white; + padding: 8px; + border-radius: 6px; + text-align: left; + } + } + + // 温馨提示 + .tips-box { + background: #f0f9ff; + border: 1px solid #bae6fd; + border-radius: 8px; + padding: 14px; + text-align: left; + + .tips-title { + margin: 0 0 10px 0; + font-size: 13px; + font-weight: 600; + color: #0369a1; + display: flex; + align-items: center; + gap: 6px; + + .el-icon { + font-size: 16px; + } + } + + .tips-text { + margin: 4px 0; + font-size: 12px; + color: #0c4a6e; + line-height: 1.5; + } + } + } + } + } + + /* 响应式:移动端优化 */ + @media (max-width: 768px) { + /* Tab 移动端优化 */ + .tabs-container { + margin-bottom: 16px; + padding-bottom: 2px; + gap: 4px; + justify-content: flex-start; + + .tab-item { + padding: 10px 12px; + font-size: 13px; + min-width: fit-content; + } + } + + /* 新人特惠移动端优化 */ + .newbie-guide-container { + padding: 16px 12px; + min-height: auto; + + .newbie-content { + max-width: 100%; + + .newbie-header { + padding: 16px; + margin-bottom: 16px; + border-radius: 8px; + + .header-icon { + font-size: 28px; + margin-bottom: 6px; + } + + .header-title { + font-size: 18px; + margin-bottom: 6px; + } + + .header-subtitle { + font-size: 13px; + } + } + + .newbie-body { + gap: 12px; + + .purchase-card { + padding: 14px; + border-radius: 8px; + + .card-row { + grid-template-columns: 1fr; + gap: 10px; + + .card-col { + .method-label { + font-size: 12px; + } + + .el-button { + font-size: 13px; + } + } + } + } + + .taobao-code-box { + padding: 12px; + + .code-label { + font-size: 11px; + } + + .code-text { + font-size: 10px; + padding: 6px; + line-height: 1.4; + } + } + + .tips-box { + padding: 12px; + + .tips-title { + font-size: 12px; + margin-bottom: 8px; + + .el-icon { + font-size: 14px; + } + } + + .tips-text { + font-size: 11px; + } + } + } + } + } + } + + /* 小屏手机进一步优化 */ + @media (max-width: 480px) { + .tabs-container { + gap: 2px; + + .tab-item { + padding: 8px 10px; + font-size: 12px; + min-width: fit-content; + } + } + + .newbie-guide-container { + padding: 12px 8px; + + .newbie-content { + .newbie-header { + padding: 12px; + + .header-icon { + font-size: 24px; + } + + .header-title { + font-size: 16px; + } + + .header-subtitle { + font-size: 12px; + } + } + + .newbie-body { + .purchase-card { + padding: 12px; + } + + .taobao-code-box { + padding: 10px; + + .code-text { + font-size: 9px; + } + } + + .tips-box { + padding: 10px; + } + } + } + } + } + /* 激活码引导页样式 */ .activation-guide-container { padding: 40px 20px; @@ -1296,6 +1752,67 @@ function goToActivation() { font-weight: 500; } } + } + + /* 模型库卡片样式 - 桌面端 */ + .model-library-section { + margin-top: 16px; + + .model-library-card { + display: flex; + align-items: center; + gap: 16px; + padding: 16px; + background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fe 100%); + border-radius: 12px; + border: 2px solid #bae6fd; + transition: all 0.3s; + + &:hover { + border-color: #667eea; + box-shadow: 0 4px 12px rgba(102, 126, 234, 0.15); + transform: translateY(-2px); + } + + .card-icon { + display: flex; + align-items: center; + justify-content: center; + width: 56px; + height: 56px; + background: white; + border-radius: 12px; + color: #667eea; + flex-shrink: 0; + } + + .card-content { + flex: 1; + + .card-title { + margin: 0 0 4px 0; + font-size: 16px; + font-weight: 700; + color: #1a1a1a; + } + + .card-desc { + margin: 0; + font-size: 13px; + color: #606266; + line-height: 1.5; + } + } + + .goto-btn { + flex-shrink: 0; + font-weight: 600; + + .ml-1 { + margin-left: 4px; + } + } + } } .view-details-btn { @@ -1336,6 +1853,33 @@ function goToActivation() { /* 桌面端样式 */ .desktop-layout { + /* 套餐卡片容器样式 - 限制高度并添加滚动 */ + .package-cards-container { + max-height: 500px; + overflow-y: auto; + overflow-x: hidden; + padding-right: 8px; + + /* 滚动条样式 */ + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-track { + background: #f5f5f5; + border-radius: 3px; + } + + &::-webkit-scrollbar-thumb { + background: #d0d7de; + border-radius: 3px; + + &:hover { + background: #a8b3c1; + } + } + } + .package-card { cursor: pointer; position: relative; width: calc(50% - 0.5rem); border: 1px solid #e5e7eb; border-radius: 8px; padding: 16px; @@ -1612,6 +2156,55 @@ function goToActivation() { } } + /* 模型库卡片样式 - 移动端 */ + .model-library-section-mobile { + margin-top: 16px; + + .model-library-card-mobile { + padding: 16px; + background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fe 100%); + border-radius: 12px; + border: 2px solid #bae6fd; + transition: all 0.3s; + + .card-header-mobile { + display: flex; + align-items: center; + gap: 12px; + margin-bottom: 12px; + + .el-icon { + color: #667eea; + background: white; + padding: 8px; + border-radius: 8px; + } + + .card-title-mobile { + margin: 0; + font-size: 16px; + font-weight: 700; + color: #1a1a1a; + } + } + + .card-desc-mobile { + margin: 0 0 12px 0; + font-size: 13px; + color: #606266; + line-height: 1.5; + } + + .goto-btn-mobile { + font-weight: 600; + + .ml-1 { + margin-left: 4px; + } + } + } + } + // 累计充值优惠提示卡片样式 - 桌面端 .recharge-tip-card { display: flex; align-items: center; gap: 12px; padding: 12px 16px; diff --git a/Yi.Ai.Vue3/src/components/SupportModelProducts/indexl.vue b/Yi.Ai.Vue3/src/components/SupportModelProducts/indexl.vue index 182e62b2..df88ebd9 100644 --- a/Yi.Ai.Vue3/src/components/SupportModelProducts/indexl.vue +++ b/Yi.Ai.Vue3/src/components/SupportModelProducts/indexl.vue @@ -1,6 +1,4 @@