diff --git a/src/app.config.js b/src/app.config.js index 541f6e0..145f834 100644 --- a/src/app.config.js +++ b/src/app.config.js @@ -1,6 +1,8 @@ export default defineAppConfig({ pages: [ "pages/index/index", + "pages/game/index", + "pages/history/index", "pages/funList/index", ], diff --git a/src/assets/ai.png b/src/assets/ai.png new file mode 100644 index 0000000..37ae944 Binary files /dev/null and b/src/assets/ai.png differ diff --git a/src/assets/ble.png b/src/assets/ble.png new file mode 100644 index 0000000..439fc2a Binary files /dev/null and b/src/assets/ble.png differ diff --git a/src/assets/check.png b/src/assets/check.png new file mode 100644 index 0000000..9cc72c9 Binary files /dev/null and b/src/assets/check.png differ diff --git a/src/assets/empty.png b/src/assets/empty.png new file mode 100644 index 0000000..1fb00cc Binary files /dev/null and b/src/assets/empty.png differ diff --git a/src/assets/game.png b/src/assets/game.png new file mode 100644 index 0000000..048fd8b Binary files /dev/null and b/src/assets/game.png differ diff --git a/src/assets/nextpiece.png b/src/assets/nextpiece.png new file mode 100644 index 0000000..31747a3 Binary files /dev/null and b/src/assets/nextpiece.png differ diff --git a/src/assets/play.png b/src/assets/play.png new file mode 100644 index 0000000..3d20fca Binary files /dev/null and b/src/assets/play.png differ diff --git a/src/assets/prepiece.png b/src/assets/prepiece.png new file mode 100644 index 0000000..e3979c5 Binary files /dev/null and b/src/assets/prepiece.png differ diff --git a/src/assets/soundCard.png b/src/assets/soundCard.png new file mode 100644 index 0000000..6bd5336 Binary files /dev/null and b/src/assets/soundCard.png differ diff --git a/src/assets/triangle-l.png b/src/assets/triangle-l.png new file mode 100644 index 0000000..9486802 Binary files /dev/null and b/src/assets/triangle-l.png differ diff --git a/src/assets/triangle-r.png b/src/assets/triangle-r.png new file mode 100644 index 0000000..ee1aaac Binary files /dev/null and b/src/assets/triangle-r.png differ diff --git a/src/components/color-diy/index.jsx b/src/components/color-picker/index.jsx similarity index 98% rename from src/components/color-diy/index.jsx rename to src/components/color-picker/index.jsx index 8a23ecd..30d939c 100644 --- a/src/components/color-diy/index.jsx +++ b/src/components/color-picker/index.jsx @@ -3,6 +3,7 @@ import { View } from '@tarojs/components' import './index.less' import { useEffect, useState } from 'react' import Taro from '@tarojs/taro' +import { Popup } from "@taroify/core" export default function Index({ open, handleColorPicker }) { let [data, setData] = useState({ @@ -43,6 +44,8 @@ export default function Index({ open, handleColorPicker }) { return { ...state } }) }, []) + + useEffect(() => { if (open) { setTimeout(() => { @@ -347,8 +350,8 @@ export default function Index({ open, handleColorPicker }) { useEffect(() => { }, []) return ( - - + + 颜色选取 @@ -375,7 +378,8 @@ export default function Index({ open, handleColorPicker }) { - + + ) } diff --git a/src/components/color-diy/index.less b/src/components/color-picker/index.less similarity index 93% rename from src/components/color-diy/index.less rename to src/components/color-picker/index.less index ffb9ed8..ff64b8e 100644 --- a/src/components/color-diy/index.less +++ b/src/components/color-picker/index.less @@ -1,39 +1,13 @@ -.cp-wrapper { - position: fixed; - top: 0; - bottom: 0; - left: 0; - right: 0; - overflow: hidden; - box-sizing: border-box; - z-index: -100; - background: rgba(0, 0, 0, 0.4); - transition: all 0.3s; - opacity: 0; -} - -.wrapper_show { - opacity: 1; - z-index: 9999; -} - - .cp-box { width: 100%; - position: absolute; - bottom: 0; padding: 30rpx 0 50rpx; padding-top: 0; background: #fff; transition: all 0.3s; - transform: translate(0, 100%); border-radius: 16rpx 16rpx 0 0; overflow: hidden; } -.dialog_show { - transform: translate(0, 0); -} .cp-header { display: flex; diff --git a/src/pages/game/index.config.js b/src/pages/game/index.config.js new file mode 100644 index 0000000..932c2d2 --- /dev/null +++ b/src/pages/game/index.config.js @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: "首页", +}); diff --git a/src/pages/game/index.jsx b/src/pages/game/index.jsx new file mode 100644 index 0000000..68a1692 --- /dev/null +++ b/src/pages/game/index.jsx @@ -0,0 +1,37 @@ +import { View, Image } from '@tarojs/components' +import './index.less' +import ColorPicker from "@/components/color-picker"; +import { useEffect, useState } from 'react'; +import history from "../../assets/history.png"; + +export default function Index() { + const list = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',] + const [open, setOpen] = useState(false) + + + const handleColorPicker = (e) => { + setOpen(false) + } + useEffect(() => { + + }, []) + return ( + + + 像素跳动 + 历史记录 + + + {list.map((item, index) => )} + + + + setOpen(true)}> + setOpen(true)}>#EDEDED + + *请选取喜欢的颜色,再点击小方格填入颜色; + 传输画面到音响屏幕 + + + ) +} diff --git a/src/pages/game/index.less b/src/pages/game/index.less new file mode 100644 index 0000000..290402f --- /dev/null +++ b/src/pages/game/index.less @@ -0,0 +1,116 @@ +.index { + background: #F7F7F7; + + // overflow-y: scroll; + .head { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 32rpx; + margin-top: 32rpx; + box-sizing: border-box; + + .head-left { + color: #5F93FA; + font-size: 32rpx; + display: flex; + align-items: center; + + &::before { + content: ''; + width: 6rpx; + height: 36rpx; + border-radius: 4rpx; + background: #5F93FA; + display: inline-block; + margin-right: 12rpx; + } + } + + .head-right { + width: 184rpx; + height: 50rpx; + border-radius: 44rpx; + background: #DEE9FF; + text-indent: 58rpx; + font-size: 26rpx; + color: #5F93FA; + display: flex; + align-items: center; + justify-content: center; + + .icon { + width: 26rpx; + height: 26rpx; + margin-right: 10rpx; + } + } + } + + .grid { + display: grid; + grid-template-columns: repeat(9, 1fr); + gap: 8rpx; + padding: 32rpx; + box-sizing: border-box; + + .grid-item { + width: 64px; + height: 64px; + border-radius: 8px; + background: #FAFAFA; + border: 1px solid #999999; + + &.active { + border: 1px solid #5F93FA; + } + } + } + + .hint { + color: #999999; + font-size: 26rpx; + margin: 32rpx 0 64rpx; + margin-left: 48rpx; + } + + .colorbox { + display: flex; + align-items: center; + justify-content: center; + + .colorbox-icon { + width: 54rpx; + height: 54rpx; + background: url('../../assets/chromaticCircle.png') no-repeat; + background-size: 100% 100%; + margin-right: 16rpx; + } + + .colorbox-btn { + width: 180rpx; + height: 64rpx; + border-radius: 90rpx; + background: #38F1E5; + border: 2rpx solid #EDEDED; + text-align: center; + line-height: 64rpx; + font-size: 26rpx; + color: #fff; + } + } + + .btn { + width: 686rpx; + height: 80rpx; + border-radius: 50rpx; + background: #5F93FA; + text-align: center; + line-height: 80rpx; + color: #FFFFFF; + font-size: 30rpx; + margin: 0 auto; + } + + +} diff --git a/src/pages/history/index.config.js b/src/pages/history/index.config.js new file mode 100644 index 0000000..f883668 --- /dev/null +++ b/src/pages/history/index.config.js @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: "历史记录", +}); diff --git a/src/pages/history/index.jsx b/src/pages/history/index.jsx new file mode 100644 index 0000000..20a1939 --- /dev/null +++ b/src/pages/history/index.jsx @@ -0,0 +1,44 @@ +import { View, Image } from "@tarojs/components"; + +import "./index.less"; +import { useEffect, useState } from "react"; +import Taro from "@tarojs/taro"; +import empty from "@/assets/empty.png"; +import { ActionSheet } from "@taroify/core" + +export default function Index() { + const list = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',] + const history = [{}] + const [open, setOpen] = useState(false) + const actions = [ + { name: "使用此套颜色方案", value: "1", style: { color: "#5A8FFA" } }, + { name: "删除此套颜色方案", value: "2", style: { color: "#FF575F" } }, + ] + return ( + + { + history.length ? + + { + history.map((item, index) => { + return setOpen(true)}> + {list.map((ite, ide) => )} + + }) + } + + : + + 暂无历史记录 + + } + setOpen(false)} + onCancel={() => setOpen(false)} + /> + + ); +} diff --git a/src/pages/history/index.less b/src/pages/history/index.less new file mode 100644 index 0000000..4b97bd0 --- /dev/null +++ b/src/pages/history/index.less @@ -0,0 +1,56 @@ +.index { + overflow: scroll; + padding: 32rpx; + display: flex; + flex-direction: column; + + .grid { + flex-shrink: 0; + border-radius: 16rpx; + background: #F9F9F9; + overflow: hidden; + border: 1px solid #999999; + display: grid; + grid-template-columns: repeat(9, 1fr); + gap: 8rpx; + padding: 32rpx; + box-sizing: border-box; + margin-bottom: 30rpx; + + .grid-item { + width: 50px; + height: 50px; + border-radius: 8px; + border: 1px solid #999999; + flex-shrink: 0; + } + } + + .empty { + position: absolute; + top: 40%; + left: 50%; + transform: translate(-40%, -50%); + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + .empty-img { + width: 120rpx; + height: 120rpx; + margin: 0 auto; + } + + .empty-text { + font-size: 30rpx; + color: #CCCCCC; + text-align: center; + margin-top: 32rpx; + } + } + + .taroify-safe-area { + padding-bottom: 60rpx; + } +} diff --git a/src/pages/index/index.jsx b/src/pages/index/index.jsx index 23cc8e3..774b2fb 100644 --- a/src/pages/index/index.jsx +++ b/src/pages/index/index.jsx @@ -1,39 +1,117 @@ -import { View, Image } from '@tarojs/components' +import { View, Image, Text } from '@tarojs/components' import './index.less' -import ColorPicker from "@/components/color-diy"; -import { useEffect, useState } from 'react'; -import history from "../../assets/history.png"; +import { Switch, Slider } from "@taroify/core" +import ble from "@/assets/ble.png"; +import soundCard from "@/assets/soundCard.png"; +import game from "@/assets/game.png"; +import ai from "@/assets/ai.png"; export default function Index() { - const list = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',] - const [open, setOpen] = useState(false) - - - const handleColorPicker = (e) => { - setOpen(false) - } - useEffect(() => { - - }, []) + const sourceList = ['Line', 'OPT', 'ARC', 'USB'] return ( - - 像素跳动 - 历史记录 + + + 音乐信号(音源) + + { + sourceList.map((item, index) => { + return + + + {item} + + }) + } + + + + + + 开关状态 + + + 蓝牙 + + + + + 声卡 + + + - - {list.map((item, index) => )} - - - - setOpen(true)}> - setOpen(true)}>#EDEDED + + + + - *请选取喜欢的颜色,再点击小方格填入颜色; - - 传输画面到音响屏幕 - - - + + + 音乐音量 + + + MODE 1 + + + + + + + 超低音强度 + + + + 1 + + + + + + + 话筒音量 + + 50% + + + + + + + 话筒音量 + + 50% + + + + + 话筒混响音量 + + 50% + + + + + 话筒混响模式 + + 1 + 2 + 3 + 4 + 5 + 6 + + + + + + + GAME + + + + AI + + + ) } diff --git a/src/pages/index/index.less b/src/pages/index/index.less index 290402f..8b20bf9 100644 --- a/src/pages/index/index.less +++ b/src/pages/index/index.less @@ -1,116 +1,312 @@ .index { + padding: 24rpx 40rpx 60rpx; background: #F7F7F7; + overflow: auto; + scrollbar-width: none; + -ms-overflow-style: none; - // overflow-y: scroll; - .head { + &::-webkit-scrollbar { + display: none; + } + + .headbox { + display: flex; + justify-content: space-between; + + .source { + width: 355rpx; + height: 226rpx; + border-radius: 24rpx; + background: #FFFFFF; + padding: 24rpx 20rpx; + box-sizing: border-box; + + .list { + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 24rpx; + + .list-item { + display: flex; + flex-direction: column; + align-items: center; + + &.active { + .yuan { + background: url('../../assets/check.png') no-repeat; + background-size: 56rpx 56rpx; + } + + .line { + background: #5A8FFA; + } + + .text { + color: #5A8FFA; + font-weight: 700; + } + } + + .yuan { + width: 56rpx; + height: 56rpx; + border-radius: 132rpx; + border: 5rpx solid #DBE7FF; + } + + .line { + width: 15rpx; + height: 4rpx; + border-radius: 12rpx; + transform: rotate(-90deg); + background: #DBE7FF; + margin-top: 8rpx; + } + + .text { + color: #5A8FFA; + font-size: 26rpx; + } + } + } + + .title { + font-size: 30rpx; + color: #212121; + font-weight: 700; + } + } + + .switch { + width: 291rpx; + height: 226rpx; + border-radius: 32rpx; + background: #FFFFFF; + padding: 24rpx 20rpx; + box-sizing: border-box; + + .title { + font-size: 30rpx; + color: #212121; + font-weight: 700; + + } + + .switch-item { + display: flex; + align-items: center; + margin-top: 24rpx; + + .img { + width: 38rpx; + height: 38rpx; + } + + .text { + color: #212121; + font-size: 28rpx; + margin-left: 12rpx; + margin-right: 50rpx; + } + } + } + } + + .play { + width: 670rpx; + height: 130rpx; + border-radius: 88rpx; + background: #FFFFFF; display: flex; align-items: center; justify-content: space-between; - padding: 0 32rpx; - margin-top: 32rpx; + margin: 82rpx 0; + padding: 0 90rpx; box-sizing: border-box; - .head-left { - color: #5F93FA; - font-size: 32rpx; - display: flex; - align-items: center; + .play-icon { + width: 46rpx; + height: 39rpx; - &::before { - content: ''; - width: 6rpx; - height: 36rpx; - border-radius: 4rpx; - background: #5F93FA; - display: inline-block; - margin-right: 12rpx; + &:active { + transform: scale(1.2); } } - .head-right { - width: 184rpx; - height: 50rpx; - border-radius: 44rpx; - background: #DEE9FF; - text-indent: 58rpx; - font-size: 26rpx; - color: #5F93FA; + .pre { + background: url('../../assets/prepiece.png') no-repeat; + background-size: 46rpx 39rpx; + } + + .next { + background: url('../../assets/nextpiece.png') no-repeat; + background-size: 46rpx 39rpx; + } + + .play-play { + width: 246rpx; + height: 246rpx; + background: url('../../assets/play.png') no-repeat; + background-size: 246rpx 246rpx; + + &:active { + transform: scale(0.95); + } + } + } + + .card { + width: 670rpx; + border-radius: 32rpx; + background: #FFFFFF; + margin-bottom: 24rpx; + } + + .funitem { + display: flex; + align-items: center; + justify-content: space-between; + padding: 32rpx 20rpx; + box-sizing: border-box; + + .funitem-text { + color: #212121; + font-size: 30rpx; + font-weight: 700; + width: 190rpx; + margin-right: 50rpx; + flex-shrink: 0; + } + + .funitem-right { + flex: 1; display: flex; align-items: center; - justify-content: center; + margin-right: 30rpx; - .icon { - width: 26rpx; - height: 26rpx; + .num { + width: 110rpx; + height: 58rpx; + border-radius: 32rpx; + background: #F0F5FF; + text-align: center; + line-height: 58rpx; + color: #5A8FFA; + font-size: 26rpx; + font-weight: 700; + margin-right: 40rpx; + flex-shrink: 0; + } + } + + .mode { + flex: 1; + display: flex; + align-items: center; + + .l { + width: 58rpx; + height: 58rpx; + background: url('../../assets/triangle-l.png') no-repeat; + background-size: 58rpx 58rpx; + + &:active { + transform: scale(1.2); + } + } + + .r { + width: 58rpx; + height: 58rpx; + background: url('../../assets/triangle-r.png') no-repeat; + background-size: 58rpx 58rpx; + + &:active { + transform: scale(1.2); + } + } + + .input { + width: 220rpx; + height: 58rpx; + line-height: 58rpx; + border-radius: 32rpx; + background: #F0F5FF; + text-align: center; + color: #5A8FFA; + font-size: 25rpx; + font-weight: 700; + margin: 0 20rpx; + flex-shrink: 0; + } + + } + + .numlist { + flex: 1; + border-radius: 69rpx; + background: #F0F5FF; + border: 3rpx solid #5A8FFA; + display: flex; + align-items: center; + justify-content: space-between; + padding: 7rpx 10rpx; + + .numlist-num { + width: 56rpx; + height: 56rpx; + border-radius: 132rpx; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + color: #5A8FFA; + font-size: 28rpx; + + &.active { + background-color: #5C93FF; + color: #ffffff; + font-weight: 700; + } + } + } + } + + .btns { + display: flex; + align-items: center; + justify-content: space-between; + + + .btn-item { + width: 303rpx; + height: 70rpx; + border-radius: 84rpx; + background: linear-gradient(160deg, #99C0FF 0%, #5D90F5 100%); + display: flex; + justify-content: center; + align-items: center; + color: #FFFFFF; + font-size: 28rpx; + font-weight: 700; + + &:active { + transform: scale(0.95); + } + + .img { + width: 30rpx; + height: 30rpx; margin-right: 10rpx; } } + + } - - .grid { - display: grid; - grid-template-columns: repeat(9, 1fr); - gap: 8rpx; - padding: 32rpx; - box-sizing: border-box; - - .grid-item { - width: 64px; - height: 64px; - border-radius: 8px; - background: #FAFAFA; - border: 1px solid #999999; - - &.active { - border: 1px solid #5F93FA; - } - } - } - - .hint { - color: #999999; - font-size: 26rpx; - margin: 32rpx 0 64rpx; - margin-left: 48rpx; - } - - .colorbox { - display: flex; - align-items: center; - justify-content: center; - - .colorbox-icon { - width: 54rpx; - height: 54rpx; - background: url('../../assets/chromaticCircle.png') no-repeat; - background-size: 100% 100%; - margin-right: 16rpx; - } - - .colorbox-btn { - width: 180rpx; - height: 64rpx; - border-radius: 90rpx; - background: #38F1E5; - border: 2rpx solid #EDEDED; - text-align: center; - line-height: 64rpx; - font-size: 26rpx; - color: #fff; - } - } - - .btn { - width: 686rpx; - height: 80rpx; - border-radius: 50rpx; - background: #5F93FA; - text-align: center; - line-height: 80rpx; - color: #FFFFFF; - font-size: 30rpx; - margin: 0 auto; - } - - +} + + +.custom-color { + --slider-active-background-color: #5A8FFA; }