diff --git a/client-configs.json b/client-configs.json index 0189f8d..c712e36 100644 --- a/client-configs.json +++ b/client-configs.json @@ -34,7 +34,7 @@ } }, "xiaoqi": { - "clientId": "9", + "clientId": "6", "appId": "wx8531ca7339685eca", "name": "小七", "theme": { diff --git a/scripts/update-appid.js b/scripts/update-appid.js index 0f2b990..443c663 100755 --- a/scripts/update-appid.js +++ b/scripts/update-appid.js @@ -102,7 +102,7 @@ function updateBaseJs(clientName) { content = content.replace(regex, newExport); fs.writeFileSync(basePath, content, "utf8"); console.log( - `✅ base.js 更新成功,切换到 ${CLIENT_CONFIGS[clientName].name} 配置` + `✅ base.js 更新成功,切换到 ${CLIENT_CONFIGS[clientName].name} 配置`, ); return true; } else { @@ -125,12 +125,10 @@ function updateManifestJson(newAppId) { // 由于manifest.json包含注释,需要特殊处理 // 使用正则表达式替换mp-weixin中的appid - const regex = /"mp-weixin":\s*{[^}]*"appid":\s*"[^"]*"/; + const regex = /("mp-weixin"\s*:\s*\{[\s\S]*?"appid"\s*:\s*")[^"]*(")/; if (regex.test(content)) { - content = content.replace(regex, (match) => { - return match.replace(/"appid":\s*"[^"]*"/, `"appid": "${newAppId}"`); - }); + content = content.replace(regex, `$1${newAppId}$2`); fs.writeFileSync(manifestPath, content, "utf8"); console.log("✅ manifest.json 更新成功"); } else { @@ -158,7 +156,7 @@ function updateProjectConfigJson(newAppId) { fs.writeFileSync( projectConfigPath, JSON.stringify(config, null, 2), - "utf8" + "utf8", ); console.log("✅ project.config.json 更新成功"); console.log(` 旧appid: ${oldAppId}`); @@ -210,11 +208,11 @@ function main() { clientName = input; newAppId = CLIENT_CONFIGS[input].appId; console.log( - `🎯 检测到客户端配置: ${CLIENT_CONFIGS[input].name} (${clientName})` + `🎯 检测到客户端配置: ${CLIENT_CONFIGS[input].name} (${clientName})`, ); console.log( - `目标客户端: ${CLIENT_CONFIGS[clientName].name} (${clientName})` + `目标客户端: ${CLIENT_CONFIGS[clientName].name} (${clientName})`, ); console.log(`目标appid: ${newAppId}\n`); @@ -233,7 +231,9 @@ function main() { console.log("\n🎉 所有文件更新完成!"); console.log(`💡 已切换到 ${CLIENT_CONFIGS[clientName].name} 客户端配置`); console.log("💡 提示: 请检查文件内容确认更新正确"); - console.log("\n💡 版本升级: 请到request/api/config.js文件中更新versionValue版本号\n"); + console.log( + "\n💡 版本升级: 请到request/api/config.js文件中更新versionValue版本号\n", + ); } else { console.log("\n❌ 部分文件更新失败,请检查错误信息"); process.exit(1); diff --git a/src/components/AiTabSwitch/images/L_01.png b/src/components/AiTabSwitch/images/L_01.png index 4fd32e9..cfca2f4 100644 Binary files a/src/components/AiTabSwitch/images/L_01.png and b/src/components/AiTabSwitch/images/L_01.png differ diff --git a/src/components/AiTabSwitch/images/L_02.png b/src/components/AiTabSwitch/images/L_02.png index 3124cbe..de2b368 100644 Binary files a/src/components/AiTabSwitch/images/L_02.png and b/src/components/AiTabSwitch/images/L_02.png differ diff --git a/src/components/AiTabSwitch/images/R_01.png b/src/components/AiTabSwitch/images/R_01.png index 87e3bb3..61078fd 100644 Binary files a/src/components/AiTabSwitch/images/R_01.png and b/src/components/AiTabSwitch/images/R_01.png differ diff --git a/src/components/AiTabSwitch/images/R_02.png b/src/components/AiTabSwitch/images/R_02.png index 97a7f0a..9faf263 100644 Binary files a/src/components/AiTabSwitch/images/R_02.png and b/src/components/AiTabSwitch/images/R_02.png differ diff --git a/src/components/AiTabSwitch/index.vue b/src/components/AiTabSwitch/index.vue index 8514c45..ba64c50 100644 --- a/src/components/AiTabSwitch/index.vue +++ b/src/components/AiTabSwitch/index.vue @@ -1,51 +1,23 @@ diff --git a/src/components/AiTabSwitch/styles/index.scss b/src/components/AiTabSwitch/styles/index.scss index 6b1b96d..70248ba 100644 --- a/src/components/AiTabSwitch/styles/index.scss +++ b/src/components/AiTabSwitch/styles/index.scss @@ -7,89 +7,47 @@ width: 100%; height: 50px; display: flex; + gap: 40px; overflow: hidden; } .tab-item { - position: relative; flex: 1; height: 50px; display: flex; align-items: center; justify-content: center; + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; transition: all 0.3s ease; } -.tab-item.active { - z-index: 10; -} - -.tab-content { - position: absolute; - inset: 0; - display: flex; - align-items: center; - justify-content: center; - line-height: 0; - transition: background 0.3s; - overflow: hidden; -} - .tab-text { + display: block; font-size: 18px; font-weight: 500; color: rgba(255, 255, 255, 0.65); } -.tab-image { - position: absolute; - left: 0; - right: 0; - top: auto; - bottom: 0; - width: 100%; - height: 48px; - display: block; - vertical-align: bottom; - z-index: 5; -} - -.tab-label { - display: flex; - align-items: center; - justify-content: center; - position: relative; - z-index: 20; -} - .tab-item.active .tab-text { color: #2e312f; font-weight: bold; } -.is-left { - margin-right: -24px; -} - -.is-left .tab-label { +.is-left .tab-text { transform: translateX(-20px); } -.is-right { - margin-left: -24px; -} - -.is-right .tab-label { +.is-right .tab-text { transform: translateX(20px); } .status-dot { - display: inline-block; - margin-left: 6px; + margin-left: 26px; width: 6px; height: 6px; border-radius: 50%; - z-index: 22; transform: translateY(-1px); } diff --git a/src/manifest.json b/src/manifest.json index 3757d8b..c76fe3b 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -61,7 +61,7 @@ }, "quickapp" : {}, "mp-weixin" : { - "appid" : "wx5e79df5996572539", + "appid" : "wx8531ca7339685eca", "setting" : { "urlCheck" : false, "minified" : true diff --git a/src/pages/ChatMain/ChatMainList/index.vue b/src/pages/ChatMain/ChatMainList/index.vue index b5f08ef..d474832 100644 --- a/src/pages/ChatMain/ChatMainList/index.vue +++ b/src/pages/ChatMain/ChatMainList/index.vue @@ -2,20 +2,13 @@ - + - - + @@ -33,114 +26,60 @@ - - - - - - + + + + + - - - + + + diff --git a/src/pages/Discovery/components/DiscoveryAudioToolCard/index.vue b/src/pages/Discovery/components/DiscoveryAudioToolCard/index.vue new file mode 100644 index 0000000..a458cfe --- /dev/null +++ b/src/pages/Discovery/components/DiscoveryAudioToolCard/index.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/pages/Discovery/components/DiscoveryAudioToolCard/styles/index.scss b/src/pages/Discovery/components/DiscoveryAudioToolCard/styles/index.scss new file mode 100644 index 0000000..625a144 --- /dev/null +++ b/src/pages/Discovery/components/DiscoveryAudioToolCard/styles/index.scss @@ -0,0 +1,124 @@ +.discovery-audio-tool-card { + width: 100%; + height: 96px; + display: flex; + align-items: flex-start; + box-sizing: border-box; +} + +.discovery-audio-tool-card.is-pressed { + opacity: 0.94; +} + +.audio-visual { + position: relative; + z-index: 2; + flex: 0 0 88px; + width: 88px; + height: 88px; + overflow: hidden; + border-radius: 28px; + background: #c8f4ab; + box-sizing: border-box; +} + +.audio-content { + flex: 1; + min-width: 0; + height: 88px; + display: flex; + flex-direction: column; + padding: 18px 12px 14px; + border-radius: 28px; + background: #ffffff; + box-sizing: border-box; +} + +.audio-title { + display: block; + max-width: 100%; + color: #123737; + font-size: 19px; + line-height: 25px; + font-weight: 900; + letter-spacing: 0; +} + +.audio-subtitle { + display: block; + max-width: 100%; + margin-top: 2px; + color: #9aa4b4; + font-size: 15px; + line-height: 20px; + font-weight: 600; + letter-spacing: 0; +} + +.audio-cover { + width: 100%; + height: 100%; + display: block; +} + +.audio-cover-fallback { + background: + radial-gradient(circle at 58% 12%, rgba(255, 255, 255, 0.38) 0 14px, transparent 15px), + linear-gradient(115deg, rgba(11, 41, 26, 0.12), rgba(14, 55, 36, 0.42)), + linear-gradient(145deg, #578a3e 0%, #99bb67 36%, #eff7ff 37%, #cadbcb 44%, #1a6d58 45%, #2c7966 100%); +} + +.audio-play { + position: absolute; + left: 50%; + top: 50%; + width: 52px; + height: 52px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + background: rgba(24, 31, 43, 0.38); + transform: translate(-50%, -50%); +} + +.audio-play-triangle { + width: 0; + height: 0; + margin-left: 4px; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + border-left: 15px solid #ffffff; +} + +.audio-progress-row { + display: flex; + align-items: center; + margin-top: 16px; +} + +.audio-progress-track { + flex: 1 1 auto; + height: 6px; + overflow: hidden; + border-radius: 999px; + background: #edf2f7; +} + +.audio-progress-fill { + height: 100%; + border-radius: inherit; + background: linear-gradient(90deg, $theme-color-500 0%, #12b981 100%); +} + +.audio-time { + flex: 0 0 90px; + max-width: 90px; + margin-left: 12px; + color: #94a0b2; + font-size: 15px; + line-height: 20px; + font-weight: 600; + text-align: right; + letter-spacing: 0; +} diff --git a/src/pages/Discovery/components/DiscoveryGuideMapToolCard/index.vue b/src/pages/Discovery/components/DiscoveryGuideMapToolCard/index.vue new file mode 100644 index 0000000..c7d6deb --- /dev/null +++ b/src/pages/Discovery/components/DiscoveryGuideMapToolCard/index.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/pages/Discovery/components/DiscoveryGuideMapToolCard/styles/index.scss b/src/pages/Discovery/components/DiscoveryGuideMapToolCard/styles/index.scss new file mode 100644 index 0000000..a36e888 --- /dev/null +++ b/src/pages/Discovery/components/DiscoveryGuideMapToolCard/styles/index.scss @@ -0,0 +1,189 @@ +.discovery-guide-map-tool-card { + width: 100%; + height: 96px; + display: flex; + align-items: flex-start; + box-sizing: border-box; +} + +.discovery-guide-map-tool-card.is-pressed { + opacity: 0.94; +} + +.guide-map-visual { + position: relative; + z-index: 2; + flex: 0 0 88px; + width: 88px; + height: 88px; + overflow: hidden; + border-radius: 28px; + background: #c8f4ab; + box-sizing: border-box; +} + +.guide-map-content { + flex: 1; + min-width: 0; + height: 88px; + display: flex; + flex-direction: column; + justify-content: center; + padding: 18px 12px 14px; + border-radius: 28px; + background: #ffffff; + box-sizing: border-box; +} + +.guide-map-title { + display: block; + max-width: 100%; + color: #123737; + font-size: 19px; + line-height: 25px; + font-weight: 900; + letter-spacing: 0; +} + +.guide-map-subtitle { + display: block; + max-width: 100%; + margin-top: 2px; + color: #9aa4b4; + font-size: 15px; + line-height: 20px; + font-weight: 600; + letter-spacing: 0; +} + +.guidepost-illustration { + position: absolute; + left: 50%; + top: 20px; + width: 56px; + height: 58px; + transform: translateX(-50%); +} + +.guidepost-sign { + position: absolute; + left: 4px; + width: 46px; + height: 18px; + border-radius: 8px; +} + +.guidepost-sign::before { + content: ""; + position: absolute; + left: -6px; + top: 0; + width: 18px; + height: 18px; + border-radius: 6px 0 0 6px; + transform: skewX(-26deg); +} + +.guidepost-sign.is-pink { + top: 0; + background: #f27591; +} + +.guidepost-sign.is-pink::before { + background: #f27591; +} + +.guidepost-sign.is-yellow { + top: 23px; + left: 14px; + background: #ffd65f; +} + +.guidepost-sign.is-yellow::before { + background: #ffd65f; +} + +.guidepost-sign.is-yellow::after { + content: ""; + position: absolute; + right: -10px; + top: 0; + width: 18px; + height: 18px; + border-radius: 0 7px 7px 0; + background: #ffd65f; + transform: skewX(-28deg); +} + +.guidepost-line { + position: absolute; + left: 18px; + top: 7px; + width: 17px; + height: 3px; + border-radius: 999px; + background: rgba(210, 66, 91, 0.55); +} + +.guidepost-sign.is-yellow .guidepost-line { + background: #ff9e05; +} + +.guidepost-pole { + position: absolute; + left: 27px; + top: 39px; + width: 12px; + height: 16px; + background: #b98969; +} + +.guidepost-base { + position: absolute; + left: 7px; + bottom: 0; + width: 54px; + height: 24px; + border-radius: 9px 9px 8px 8px; + background: #66d9bf; +} + +.guidepost-base::before { + content: ""; + position: absolute; + left: -5px; + top: -2px; + width: 18px; + height: 13px; + border-radius: 8px 0 8px 0; + background: #66d9bf; + transform: rotate(-14deg); +} + +.guidepost-eye { + position: absolute; + top: 8px; + width: 8px; + height: 8px; + border-radius: 50%; + background: #463b36; +} + +.guidepost-eye::after { + content: ""; + position: absolute; + left: -2px; + top: 7px; + width: 6px; + height: 3px; + border-radius: 999px; + background: #ff9ab0; +} + +.guidepost-eye.is-left { + left: 18px; +} + +.guidepost-eye.is-right { + right: 8px; +} diff --git a/src/pages/Discovery/components/DiscoveryPhotoToolCard/index.vue b/src/pages/Discovery/components/DiscoveryPhotoToolCard/index.vue new file mode 100644 index 0000000..c19b388 --- /dev/null +++ b/src/pages/Discovery/components/DiscoveryPhotoToolCard/index.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/pages/Discovery/components/DiscoveryPhotoToolCard/styles/index.scss b/src/pages/Discovery/components/DiscoveryPhotoToolCard/styles/index.scss new file mode 100644 index 0000000..55477b2 --- /dev/null +++ b/src/pages/Discovery/components/DiscoveryPhotoToolCard/styles/index.scss @@ -0,0 +1,259 @@ +.discovery-photo-tool-card { + width: 100%; + height: 142px; + display: flex; + align-items: flex-start; + box-sizing: border-box; +} + +.discovery-photo-tool-card.is-pressed { + opacity: 0.94; +} + +.photo-visual { + position: relative; + z-index: 2; + flex: 0 0 88px; + width: 88px; + height: 142px; + overflow: hidden; + border-radius: 28px; + background: #c8f4ab; + box-sizing: border-box; +} + +.photo-content { + flex: 1; + min-width: 0; + height: 142px; + display: flex; + flex-direction: column; + padding: 16px 12px 12px; + border-radius: 28px; + background: #ffffff; + box-sizing: border-box; +} + +.photo-title { + display: block; + max-width: 100%; + color: #142034; + font-size: 19px; + line-height: 25px; + font-weight: 900; + letter-spacing: 0; +} + +.photo-subtitle { + display: block; + max-width: 100%; + margin-top: 2px; + color: #9aa4b4; + font-size: 15px; + line-height: 20px; + font-weight: 600; + letter-spacing: 0; +} + +.camera-illustration { + position: absolute; + left: 50%; + top: 34px; + width: 66px; + height: 58px; + transform: translateX(-50%); +} + +.camera-top { + position: absolute; + left: 25px; + top: 0; + width: 28px; + height: 30px; + border-radius: 9px 9px 0 0; + background: #5b6d84; +} + +.camera-top::before { + content: ""; + position: absolute; + left: 6px; + top: 9px; + width: 18px; + height: 12px; + border-radius: 4px; + background: #ffe97b; +} + +.camera-flash { + position: absolute; + right: 0; + top: -10px; + width: 26px; + height: 26px; + border-radius: 9px; + background: #ffd85c; + transform: rotate(45deg); +} + +.camera-body { + position: absolute; + left: 0; + bottom: 0; + width: 66px; + height: 42px; + border-radius: 12px; + background: #526376; +} + +.camera-body::before { + content: ""; + position: absolute; + left: 5px; + top: 0; + width: 11px; + height: 11px; + border-radius: 4px; + background: #f2768d; +} + +.camera-lens { + position: absolute; + left: 20px; + top: 5px; + width: 32px; + height: 32px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + background: #f8fbff; + box-shadow: -6px 7px 0 rgba(35, 48, 67, 0.4); +} + +.camera-lens-inner { + width: 18px; + height: 18px; + border-radius: 50%; + background: #6fd7ee; +} + +.camera-dot { + position: absolute; + right: 5px; + border-radius: 50%; + background: #7f91a5; +} + +.camera-dot.is-large { + top: 7px; + width: 5px; + height: 5px; +} + +.camera-dot.is-small { + top: 15px; + width: 3px; + height: 3px; +} + +.photo-badge { + position: absolute; + left: 9px; + right: 9px; + bottom: 15px; + height: 18px; + display: flex; + align-items: center; + justify-content: center; + color: #142034; + font-size: 13px; + line-height: 18px; + font-weight: 900; + letter-spacing: 0; +} + +.photo-badge::before, +.photo-badge::after { + content: ""; + flex: 0 0 4px; + width: 4px; + height: 12px; + margin: 0 4px; + border-top: 4px solid #142034; + border-bottom: 4px solid #142034; + box-sizing: border-box; +} + +.photo-badge::before { + border-left: 4px solid #142034; +} + +.photo-badge::after { + border-right: 4px solid #142034; +} + +.photo-options { + display: flex; + align-items: flex-start; + gap: 8px; + margin-top: 10px; +} + +.photo-option { + flex: 1 1 0; + min-width: 0; + text-align: center; +} + +.photo-option.is-option-pressed { + opacity: 0.9; +} + +.photo-option-thumb { + width: 70px; + height: 48px; + margin: 0 auto; + overflow: hidden; + border-radius: 8px; + background: #dff5ef; +} + +.photo-option-image, +.photo-option-placeholder { + width: 100%; + height: 100%; + display: block; +} + +.photo-option-placeholder { + background: + radial-gradient(circle at 28% 68%, rgba(255, 255, 255, 0.9) 0 5px, transparent 6px), + linear-gradient(145deg, rgba(9, 83, 68, 0.75), rgba(14, 170, 112, 0.2)), + linear-gradient(135deg, #0c5f58 0%, #4ecf9d 100%); +} + +.photo-option-placeholder.is-1 { + background: + radial-gradient(circle at 50% 24%, rgba(255, 255, 255, 0.82) 0 5px, transparent 6px), + linear-gradient(180deg, rgba(6, 87, 73, 0.18), rgba(11, 91, 76, 0.7)), + linear-gradient(135deg, #196d63 0%, #50c6b3 100%); +} + +.photo-option-placeholder.is-2 { + background: + radial-gradient(circle at 70% 48%, rgba(255, 217, 91, 0.8) 0 5px, transparent 6px), + linear-gradient(140deg, rgba(14, 50, 37, 0.68), rgba(67, 149, 83, 0.3)), + linear-gradient(135deg, #28583b 0%, #9ac978 100%); +} + +.photo-option-label { + display: block; + max-width: 76px; + margin: 5px auto 0; + color: $theme-color-500; + font-size: 14px; + line-height: 18px; + font-weight: 800; + letter-spacing: 0; +} diff --git a/src/pages/Discovery/index.vue b/src/pages/Discovery/index.vue index 21dc772..0b7efb3 100644 --- a/src/pages/Discovery/index.vue +++ b/src/pages/Discovery/index.vue @@ -1,43 +1,26 @@ - + diff --git a/src/request/base/config.js b/src/request/base/config.js index b885fc4..0329d23 100644 --- a/src/request/base/config.js +++ b/src/request/base/config.js @@ -7,7 +7,7 @@ import { getServiceUrl } from "../api/GetServiceUrlApi"; const versionValue = "1.1.3"; /// 是否是测试版本, 测试版本为true, 发布版本为false -const developVersion = true; +const developVersion = false; // 获取服务地址 const getEvnUrl = async () => {