mirror of
https://github.com/imsyy/SPlayer.git
synced 2025-11-25 19:37:35 +08:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
019b78bf38 | ||
|
|
cf88c7669f | ||
|
|
f4383ba848 |
17
.github/ISSUE_TEMPLATE/add.yml
vendored
17
.github/ISSUE_TEMPLATE/add.yml
vendored
@@ -1,17 +0,0 @@
|
||||
name: 添加功能
|
||||
description: 请填写希望添加的功能的具体信息
|
||||
title: 【添加功能】请填写标题
|
||||
labels: [add]
|
||||
body:
|
||||
- type: input
|
||||
id: name
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: "希望添加什么功能?"
|
||||
placeholder: "请填写功能名称"
|
||||
- type: textarea
|
||||
id: other
|
||||
attributes:
|
||||
label: "具体信息"
|
||||
description: "请详细描述希望添加的功能的具体信息"
|
||||
4
.github/ISSUE_TEMPLATE/bug.yml
vendored
4
.github/ISSUE_TEMPLATE/bug.yml
vendored
@@ -1,6 +1,6 @@
|
||||
name: 遇到问题
|
||||
description: 关于使用过程中遇到的问题
|
||||
title: 【遇到问题】请填写标题
|
||||
title: 请填写标题
|
||||
labels: [bug]
|
||||
body:
|
||||
- type: input
|
||||
@@ -31,4 +31,4 @@ body:
|
||||
id: other
|
||||
attributes:
|
||||
label: "具体信息"
|
||||
description: "有需要补充的信息吗?比如控制台的报错什么的"
|
||||
description: "有需要补充的信息吗?比如控制台的报错什么的( Ctrl + Shift + i 打开控制台 )"
|
||||
|
||||
3
.github/ISSUE_TEMPLATE/config.yml
vendored
3
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,5 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 添加功能
|
||||
url: https://github.com/imsyy/SPlayer/discussions/new?category=%E6%83%B3%E6%B3%95-ideas
|
||||
about: 新的功能建议和提问答疑请到讨论区发起
|
||||
- name: 转到讨论区
|
||||
url: https://github.com/imsyy/SPlayer/discussions
|
||||
about: Issues 用于反馈 Bug, 新的功能建议和提问答疑请到讨论区发起
|
||||
|
||||
@@ -42,7 +42,7 @@ export default defineConfig(({ mode }) => {
|
||||
build: {
|
||||
rollupOptions: {
|
||||
input: {
|
||||
index: resolve(__dirname, "electron/preload/index.js"),
|
||||
index: resolve(__dirname, "electron/preload/index.mjs"),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -121,8 +121,8 @@ class MainProcess {
|
||||
icon: nativeImage.createFromPath(join(__dirname, "../../public/images/icons/favicon.png")),
|
||||
// 预加载
|
||||
webPreferences: {
|
||||
devTools: is.dev,
|
||||
preload: join(__dirname, "../preload/index.js"),
|
||||
// devTools: is.dev,
|
||||
preload: join(__dirname, "../preload/index.mjs"),
|
||||
sandbox: false,
|
||||
webSecurity: false,
|
||||
hardwareAcceleration: true,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
const netEaseApi = require("NeteaseCloudMusicApi");
|
||||
import netEaseApi from "NeteaseCloudMusicApi";
|
||||
|
||||
/**
|
||||
* 启动网易云音乐 API 服务器
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "splayer",
|
||||
"version": "2.0.1",
|
||||
"version": "2.0.2",
|
||||
"description": "A minimalist music player",
|
||||
"main": "./out/main/index.js",
|
||||
"author": "imsyy",
|
||||
@@ -14,6 +14,7 @@
|
||||
"npm": ">=9.6.7",
|
||||
"pnpm": ">=8.14.0"
|
||||
},
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"format": "prettier --write .",
|
||||
"lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts,.vue --fix",
|
||||
@@ -70,6 +71,6 @@
|
||||
"vite": "^5.0.11",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-pwa": "^0.17.4",
|
||||
"vue": "3.4.4"
|
||||
"vue": "3.4.8"
|
||||
}
|
||||
}
|
||||
|
||||
158
pnpm-lock.yaml
generated
158
pnpm-lock.yaml
generated
@@ -55,7 +55,7 @@ dependencies:
|
||||
version: 5.2.3
|
||||
pinia:
|
||||
specifier: ^2.1.7
|
||||
version: 2.1.7(vue@3.4.4)
|
||||
version: 2.1.7(vue@3.4.8)
|
||||
pinia-plugin-persistedstate:
|
||||
specifier: ^3.2.1
|
||||
version: 3.2.1(pinia@2.1.7)
|
||||
@@ -67,7 +67,7 @@ dependencies:
|
||||
version: 6.0.2
|
||||
vue-router:
|
||||
specifier: ^4.2.5
|
||||
version: 4.2.5(vue@3.4.4)
|
||||
version: 4.2.5(vue@3.4.8)
|
||||
vue-slider-component:
|
||||
specifier: 4.1.0-beta.7
|
||||
version: 4.1.0-beta.7
|
||||
@@ -81,7 +81,7 @@ devDependencies:
|
||||
version: 1.6.1
|
||||
'@vitejs/plugin-vue':
|
||||
specifier: ^5.0.2
|
||||
version: 5.0.2(vite@5.0.11)(vue@3.4.4)
|
||||
version: 5.0.2(vite@5.0.11)(vue@3.4.8)
|
||||
'@vue/eslint-config-prettier':
|
||||
specifier: ^9.0.0
|
||||
version: 9.0.0(eslint@8.56.0)(prettier@3.1.1)
|
||||
@@ -108,7 +108,7 @@ devDependencies:
|
||||
version: 9.19.2(eslint@8.56.0)
|
||||
naive-ui:
|
||||
specifier: ^2.37.3
|
||||
version: 2.37.3(vue@3.4.4)
|
||||
version: 2.37.3(vue@3.4.8)
|
||||
prettier:
|
||||
specifier: ^3.1.1
|
||||
version: 3.1.1
|
||||
@@ -123,7 +123,7 @@ devDependencies:
|
||||
version: 0.17.3(rollup@2.79.1)
|
||||
unplugin-vue-components:
|
||||
specifier: ^0.26.0
|
||||
version: 0.26.0(rollup@2.79.1)(vue@3.4.4)
|
||||
version: 0.26.0(rollup@2.79.1)(vue@3.4.8)
|
||||
vite:
|
||||
specifier: ^5.0.11
|
||||
version: 5.0.11(sass@1.69.7)(terser@5.26.0)
|
||||
@@ -134,8 +134,8 @@ devDependencies:
|
||||
specifier: ^0.17.4
|
||||
version: 0.17.4(vite@5.0.11)(workbox-build@7.0.0)(workbox-window@7.0.0)
|
||||
vue:
|
||||
specifier: 3.4.4
|
||||
version: 3.4.4
|
||||
specifier: 3.4.8
|
||||
version: 3.4.8
|
||||
|
||||
packages:
|
||||
|
||||
@@ -1341,12 +1341,12 @@ packages:
|
||||
css-render: 0.15.12
|
||||
dev: true
|
||||
|
||||
/@css-render/vue3-ssr@0.15.12(vue@3.4.4):
|
||||
/@css-render/vue3-ssr@0.15.12(vue@3.4.8):
|
||||
resolution: {integrity: sha512-AQLGhhaE0F+rwybRCkKUdzBdTEM/5PZBYy+fSYe1T9z9+yxMuV/k7ZRqa4M69X+EI1W8pa4kc9Iq2VjQkZx4rg==}
|
||||
peerDependencies:
|
||||
vue: ^3.0.11
|
||||
dependencies:
|
||||
vue: 3.4.4
|
||||
vue: 3.4.8
|
||||
dev: true
|
||||
|
||||
/@develar/schema-utils@2.6.5:
|
||||
@@ -2147,7 +2147,7 @@ packages:
|
||||
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
|
||||
dev: true
|
||||
|
||||
/@vitejs/plugin-vue@5.0.2(vite@5.0.11)(vue@3.4.4):
|
||||
/@vitejs/plugin-vue@5.0.2(vite@5.0.11)(vue@3.4.8):
|
||||
resolution: {integrity: sha512-kEjJHrLb5ePBvjD0SPZwJlw1QTRcjjCA9sB5VyfonoXVBxTS7TMnqL6EkLt1Eu61RDeiuZ/WN9Hf6PxXhPI2uA==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
@@ -2155,42 +2155,42 @@ packages:
|
||||
vue: ^3.2.25
|
||||
dependencies:
|
||||
vite: 5.0.11(sass@1.69.7)(terser@5.26.0)
|
||||
vue: 3.4.4
|
||||
vue: 3.4.8
|
||||
dev: true
|
||||
|
||||
/@vue/compiler-core@3.4.4:
|
||||
resolution: {integrity: sha512-U5AdCN+6skzh2bSJrkMj2KZsVkUpgK8/XlxjSRYQZhNPcvt9/kmgIMpFEiTyK+Dz5E1J+8o8//BEIX+bakgVSw==}
|
||||
/@vue/compiler-core@3.4.8:
|
||||
resolution: {integrity: sha512-GjAwOydZV6UyVBi1lYW5v4jjfU6wOeyi3vBATKJOwV7muYF0/nZi4kfdJc0pwdT5lXwbbx57lyA2Y356rFpw1A==}
|
||||
dependencies:
|
||||
'@babel/parser': 7.23.6
|
||||
'@vue/shared': 3.4.4
|
||||
'@vue/shared': 3.4.8
|
||||
entities: 4.5.0
|
||||
estree-walker: 2.0.2
|
||||
source-map-js: 1.0.2
|
||||
|
||||
/@vue/compiler-dom@3.4.4:
|
||||
resolution: {integrity: sha512-iSwkdDULCN+Vr8z6uwdlL044GJ/nUmECxP9vu7MzEs4Qma0FwDLYvnvRcyO0ZITuu3Os4FptGUDnhi1kOLSaGw==}
|
||||
/@vue/compiler-dom@3.4.8:
|
||||
resolution: {integrity: sha512-GsPyji42zmkSJlaDFKXvwB97ukTlHzlFH/iVzPFYz/APnSzuhu/CMFQbsYmrtsnc2yscF39eC4rKzvKR27aBug==}
|
||||
dependencies:
|
||||
'@vue/compiler-core': 3.4.4
|
||||
'@vue/shared': 3.4.4
|
||||
'@vue/compiler-core': 3.4.8
|
||||
'@vue/shared': 3.4.8
|
||||
|
||||
/@vue/compiler-sfc@3.4.4:
|
||||
resolution: {integrity: sha512-OTFcU6vUxUNHBcarzkp4g6d25nvcmDvFDzPRvSrIsByFFPRYN+y3b+j9HxYwt6nlWvGyFCe0roeJdJlfYxbCBg==}
|
||||
/@vue/compiler-sfc@3.4.8:
|
||||
resolution: {integrity: sha512-3ZcurOa6bQdZ6VZLtMqYSUZqpsMqfX0MC3oCxQG0VIJFCqouZAgRYJN1c8QvGs7HW5wW8aXVvUOQU0ILVlYHKA==}
|
||||
dependencies:
|
||||
'@babel/parser': 7.23.6
|
||||
'@vue/compiler-core': 3.4.4
|
||||
'@vue/compiler-dom': 3.4.4
|
||||
'@vue/compiler-ssr': 3.4.4
|
||||
'@vue/shared': 3.4.4
|
||||
'@vue/compiler-core': 3.4.8
|
||||
'@vue/compiler-dom': 3.4.8
|
||||
'@vue/compiler-ssr': 3.4.8
|
||||
'@vue/shared': 3.4.8
|
||||
estree-walker: 2.0.2
|
||||
magic-string: 0.30.5
|
||||
postcss: 8.4.33
|
||||
source-map-js: 1.0.2
|
||||
|
||||
/@vue/compiler-ssr@3.4.4:
|
||||
resolution: {integrity: sha512-1DU9DflSSQlx/M61GEBN+NbT/anUki2ooDo9IXfTckCeKA/2IKNhY8KbG3x6zkd3KGrxzteC7de6QL88vEb41Q==}
|
||||
/@vue/compiler-ssr@3.4.8:
|
||||
resolution: {integrity: sha512-nxN79LHeAemhBpIa2PQ6rz57cW7W4C/XIJCOMSn2g49u6q2ekirmJI0osAOTErQPApOR0KwP2QyeTexX4zQCrw==}
|
||||
dependencies:
|
||||
'@vue/compiler-dom': 3.4.4
|
||||
'@vue/shared': 3.4.4
|
||||
'@vue/compiler-dom': 3.4.8
|
||||
'@vue/shared': 3.4.8
|
||||
|
||||
/@vue/devtools-api@6.5.1:
|
||||
resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
|
||||
@@ -2210,35 +2210,35 @@ packages:
|
||||
- '@types/eslint'
|
||||
dev: true
|
||||
|
||||
/@vue/reactivity@3.4.4:
|
||||
resolution: {integrity: sha512-DFsuJBf6sfhd5SYzJmcBTUG9+EKqjF31Gsk1NJtnpJm9liSZ806XwGJUeNBVQIanax7ODV7Lmk/k17BgxXNuTg==}
|
||||
/@vue/reactivity@3.4.8:
|
||||
resolution: {integrity: sha512-UJYMQ3S2rqIGw9IvKomD4Xw2uS5VlcKEEmwcfboGOdrI79oqebxnCgTvXWLMClvg3M5SF0Cyn+9eDQoyGMLu9Q==}
|
||||
dependencies:
|
||||
'@vue/shared': 3.4.4
|
||||
'@vue/shared': 3.4.8
|
||||
|
||||
/@vue/runtime-core@3.4.4:
|
||||
resolution: {integrity: sha512-zWWwNQAj5JdxrmOA1xegJm+c4VtyIbDEKgQjSb4va5v7gGTCh0ZjvLI+htGFdVXaO9bs2J3C81p5p+6jrPK8Bw==}
|
||||
/@vue/runtime-core@3.4.8:
|
||||
resolution: {integrity: sha512-sMRXOy89KnwY6fWG5epgPOsCWzpo/64FrA0QkjIeNeGnoA2YyZ6bBUxpFUyqhJ8VbrDhXEFH+6LHMOYrpzX/ZQ==}
|
||||
dependencies:
|
||||
'@vue/reactivity': 3.4.4
|
||||
'@vue/shared': 3.4.4
|
||||
'@vue/reactivity': 3.4.8
|
||||
'@vue/shared': 3.4.8
|
||||
|
||||
/@vue/runtime-dom@3.4.4:
|
||||
resolution: {integrity: sha512-Nlh2ap1J/eJQ6R0g+AIRyGNwpTJQACN0dk8I8FRLH8Ev11DSvfcPOpn4+Kbg5xAMcuq0cHB8zFYxVrOgETrrvg==}
|
||||
/@vue/runtime-dom@3.4.8:
|
||||
resolution: {integrity: sha512-L4gZcYo8f3d7rQqQIHkPvyczkjjQ55cJqz2G0v6Ptmqa1mO2zkqN9F8lBT6aGPYy3hd0RDiINbs4jxhSvvy10Q==}
|
||||
dependencies:
|
||||
'@vue/runtime-core': 3.4.4
|
||||
'@vue/shared': 3.4.4
|
||||
'@vue/runtime-core': 3.4.8
|
||||
'@vue/shared': 3.4.8
|
||||
csstype: 3.1.3
|
||||
|
||||
/@vue/server-renderer@3.4.4(vue@3.4.4):
|
||||
resolution: {integrity: sha512-+AjoiKcC41k7SMJBYkDO9xs79/Of8DiThS9mH5l2MK+EY0to3psI0k+sElvVqQvsoZTjHMEuMz0AEgvm2T+CwA==}
|
||||
/@vue/server-renderer@3.4.8(vue@3.4.8):
|
||||
resolution: {integrity: sha512-pBeHM59Owevr3P0Fl1XOjBmq4DTy5JDcjMG4NuzJEVDlZYzY8fHybx0wdjkY5lK5mCtUyBtw6Mz4d87aosc1Sw==}
|
||||
peerDependencies:
|
||||
vue: 3.4.4
|
||||
vue: 3.4.8
|
||||
dependencies:
|
||||
'@vue/compiler-ssr': 3.4.4
|
||||
'@vue/shared': 3.4.4
|
||||
vue: 3.4.4
|
||||
'@vue/compiler-ssr': 3.4.8
|
||||
'@vue/shared': 3.4.8
|
||||
vue: 3.4.8
|
||||
|
||||
/@vue/shared@3.4.4:
|
||||
resolution: {integrity: sha512-abSgiVRhfjfl3JALR/cSuBl74hGJ3SePgf1mKzodf1eMWLwHZbfEGxT2cNJSsNiw44jEgrO7bNkhchaWA7RwNw==}
|
||||
/@vue/shared@3.4.8:
|
||||
resolution: {integrity: sha512-ChLCWzXiJboQ009oVkemhEoUdrxHme7v3ip+Kh+/kDDeF1WtHWGt0knRLGm1Y4YqCRTSs9QxsZIY8paJj5Szrw==}
|
||||
|
||||
/@xmldom/xmldom@0.8.10:
|
||||
resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==}
|
||||
@@ -5142,13 +5142,13 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/naive-ui@2.37.3(vue@3.4.4):
|
||||
/naive-ui@2.37.3(vue@3.4.8):
|
||||
resolution: {integrity: sha512-aUkHFXVIluSi8Me+npbcsdv1NYhVMj5t9YaruoCESlqmfqspj+R2QHEVXkTtUI1kQwVrABMCtAGq/wountqjZA==}
|
||||
peerDependencies:
|
||||
vue: ^3.0.0
|
||||
dependencies:
|
||||
'@css-render/plugin-bem': 0.15.12(css-render@0.15.12)
|
||||
'@css-render/vue3-ssr': 0.15.12(vue@3.4.4)
|
||||
'@css-render/vue3-ssr': 0.15.12(vue@3.4.8)
|
||||
'@types/katex': 0.16.7
|
||||
'@types/lodash': 4.14.202
|
||||
'@types/lodash-es': 4.17.12
|
||||
@@ -5163,10 +5163,10 @@ packages:
|
||||
lodash-es: 4.17.21
|
||||
seemly: 0.3.8
|
||||
treemate: 0.3.11
|
||||
vdirs: 0.1.8(vue@3.4.4)
|
||||
vooks: 0.2.12(vue@3.4.4)
|
||||
vue: 3.4.4
|
||||
vueuc: 0.4.58(vue@3.4.4)
|
||||
vdirs: 0.1.8(vue@3.4.8)
|
||||
vooks: 0.2.12(vue@3.4.8)
|
||||
vue: 3.4.8
|
||||
vueuc: 0.4.58(vue@3.4.8)
|
||||
dev: true
|
||||
|
||||
/nanoid@3.3.7:
|
||||
@@ -5495,10 +5495,10 @@ packages:
|
||||
peerDependencies:
|
||||
pinia: ^2.0.0
|
||||
dependencies:
|
||||
pinia: 2.1.7(vue@3.4.4)
|
||||
pinia: 2.1.7(vue@3.4.8)
|
||||
dev: false
|
||||
|
||||
/pinia@2.1.7(vue@3.4.4):
|
||||
/pinia@2.1.7(vue@3.4.8):
|
||||
resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==}
|
||||
peerDependencies:
|
||||
'@vue/composition-api': ^1.4.0
|
||||
@@ -5511,8 +5511,8 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@vue/devtools-api': 6.5.1
|
||||
vue: 3.4.4
|
||||
vue-demi: 0.14.6(vue@3.4.4)
|
||||
vue: 3.4.8
|
||||
vue-demi: 0.14.6(vue@3.4.8)
|
||||
dev: false
|
||||
|
||||
/pkg-types@1.0.3:
|
||||
@@ -6722,7 +6722,7 @@ packages:
|
||||
- rollup
|
||||
dev: true
|
||||
|
||||
/unplugin-vue-components@0.26.0(rollup@2.79.1)(vue@3.4.4):
|
||||
/unplugin-vue-components@0.26.0(rollup@2.79.1)(vue@3.4.8):
|
||||
resolution: {integrity: sha512-s7IdPDlnOvPamjunVxw8kNgKNK8A5KM1YpK5j/p97jEKTjlPNrA0nZBiSfAKKlK1gWZuyWXlKL5dk3EDw874LQ==}
|
||||
engines: {node: '>=14'}
|
||||
peerDependencies:
|
||||
@@ -6745,7 +6745,7 @@ packages:
|
||||
minimatch: 9.0.3
|
||||
resolve: 1.22.8
|
||||
unplugin: 1.6.0
|
||||
vue: 3.4.4
|
||||
vue: 3.4.8
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
- supports-color
|
||||
@@ -6821,13 +6821,13 @@ packages:
|
||||
engines: {node: '>= 0.8'}
|
||||
dev: false
|
||||
|
||||
/vdirs@0.1.8(vue@3.4.4):
|
||||
/vdirs@0.1.8(vue@3.4.8):
|
||||
resolution: {integrity: sha512-H9V1zGRLQZg9b+GdMk8MXDN2Lva0zx72MPahDKc30v+DtwKjfyOSXWRIX4t2mhDubM1H09gPhWeth/BJWPHGUw==}
|
||||
peerDependencies:
|
||||
vue: ^3.0.11
|
||||
dependencies:
|
||||
evtd: 0.2.4
|
||||
vue: 3.4.4
|
||||
vue: 3.4.8
|
||||
dev: true
|
||||
|
||||
/verror@1.10.0:
|
||||
@@ -6918,16 +6918,16 @@ packages:
|
||||
fsevents: 2.3.3
|
||||
dev: true
|
||||
|
||||
/vooks@0.2.12(vue@3.4.4):
|
||||
/vooks@0.2.12(vue@3.4.8):
|
||||
resolution: {integrity: sha512-iox0I3RZzxtKlcgYaStQYKEzWWGAduMmq+jS7OrNdQo1FgGfPMubGL3uGHOU9n97NIvfFDBGnpSvkWyb/NSn/Q==}
|
||||
peerDependencies:
|
||||
vue: ^3.0.0
|
||||
dependencies:
|
||||
evtd: 0.2.4
|
||||
vue: 3.4.4
|
||||
vue: 3.4.8
|
||||
dev: true
|
||||
|
||||
/vue-demi@0.14.6(vue@3.4.4):
|
||||
/vue-demi@0.14.6(vue@3.4.8):
|
||||
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
|
||||
engines: {node: '>=12'}
|
||||
hasBin: true
|
||||
@@ -6939,7 +6939,7 @@ packages:
|
||||
'@vue/composition-api':
|
||||
optional: true
|
||||
dependencies:
|
||||
vue: 3.4.4
|
||||
vue: 3.4.8
|
||||
dev: false
|
||||
|
||||
/vue-eslint-parser@9.4.0(eslint@8.56.0):
|
||||
@@ -6960,46 +6960,46 @@ packages:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
/vue-router@4.2.5(vue@3.4.4):
|
||||
/vue-router@4.2.5(vue@3.4.8):
|
||||
resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==}
|
||||
peerDependencies:
|
||||
vue: ^3.2.0
|
||||
dependencies:
|
||||
'@vue/devtools-api': 6.5.1
|
||||
vue: 3.4.4
|
||||
vue: 3.4.8
|
||||
dev: false
|
||||
|
||||
/vue-slider-component@4.1.0-beta.7:
|
||||
resolution: {integrity: sha512-Qb7K920ZG7PoQswoF6Ias+i3W2rd3k4fpk04JUl82kEUcN86Yg6et7bVSKWt/7VpQe8a5IT3BqCKSCOZ7AJgCA==}
|
||||
dev: false
|
||||
|
||||
/vue@3.4.4:
|
||||
resolution: {integrity: sha512-suZXgDVT8lRNhKmxdkwOsR0oyUi8is7mtqI18qW97JLoyorEbE9B2Sb4Ws/mR/+0AgA/JUtsv1ytlRSH3/pDIA==}
|
||||
/vue@3.4.8:
|
||||
resolution: {integrity: sha512-vJffFOe6DqWsAI10v3tDhb1nJrj7CF3CbdQwOznywAsFNoyvrQ1AWQdcIWJpmRpRnw7NFzstzh6fh4w7n1PNdg==}
|
||||
peerDependencies:
|
||||
typescript: '*'
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@vue/compiler-dom': 3.4.4
|
||||
'@vue/compiler-sfc': 3.4.4
|
||||
'@vue/runtime-dom': 3.4.4
|
||||
'@vue/server-renderer': 3.4.4(vue@3.4.4)
|
||||
'@vue/shared': 3.4.4
|
||||
'@vue/compiler-dom': 3.4.8
|
||||
'@vue/compiler-sfc': 3.4.8
|
||||
'@vue/runtime-dom': 3.4.8
|
||||
'@vue/server-renderer': 3.4.8(vue@3.4.8)
|
||||
'@vue/shared': 3.4.8
|
||||
|
||||
/vueuc@0.4.58(vue@3.4.4):
|
||||
/vueuc@0.4.58(vue@3.4.8):
|
||||
resolution: {integrity: sha512-Wnj/N8WbPRSxSt+9ji1jtDHPzda5h2OH/0sFBhvdxDRuyCZbjGg3/cKMaKqEoe+dErTexG2R+i6Q8S/Toq1MYg==}
|
||||
peerDependencies:
|
||||
vue: ^3.0.11
|
||||
dependencies:
|
||||
'@css-render/vue3-ssr': 0.15.12(vue@3.4.4)
|
||||
'@css-render/vue3-ssr': 0.15.12(vue@3.4.8)
|
||||
'@juggle/resize-observer': 3.4.0
|
||||
css-render: 0.15.12
|
||||
evtd: 0.2.4
|
||||
seemly: 0.3.8
|
||||
vdirs: 0.1.8(vue@3.4.4)
|
||||
vooks: 0.2.12(vue@3.4.4)
|
||||
vue: 3.4.4
|
||||
vdirs: 0.1.8(vue@3.4.8)
|
||||
vooks: 0.2.12(vue@3.4.8)
|
||||
vue: 3.4.8
|
||||
dev: true
|
||||
|
||||
/webidl-conversions@4.0.2:
|
||||
|
||||
@@ -439,6 +439,7 @@ const delCloudSong = (data, song, index) => {
|
||||
|
||||
// 歌单歌曲删除
|
||||
const deletePlaylistSong = (pid, song, data, index) => {
|
||||
if (!pid || !song) return $message.error("无法正确定位到歌单,请重试");
|
||||
$dialog.warning({
|
||||
title: "确认删除",
|
||||
content: `确认从歌单中移除 ${song.name}?该操作无法撤销!`,
|
||||
|
||||
@@ -130,7 +130,7 @@
|
||||
@click="
|
||||
() => {
|
||||
drawerShow = false;
|
||||
emit('deletePlaylistSong', playlistData, songData, songIndex);
|
||||
emit('deletePlaylistSong', songSourceId, songData, playlistData, songIndex);
|
||||
}
|
||||
"
|
||||
>
|
||||
|
||||
@@ -240,7 +240,7 @@ const openDropdown = (e, data, song, index, sourceId, type) => {
|
||||
show: !isCloud && isUserPlaylist,
|
||||
props: {
|
||||
onClick: () => {
|
||||
emit("deletePlaylistSong", data, song, index);
|
||||
emit("deletePlaylistSong", sourceId, song, data, index);
|
||||
},
|
||||
},
|
||||
icon: renderIcon("delete"),
|
||||
|
||||
@@ -104,36 +104,39 @@ const getCaptcha = (phone) => {
|
||||
|
||||
// 手机号登录
|
||||
const phoneLogin = (e) => {
|
||||
e.preventDefault();
|
||||
phoneFormRef.value?.validate(async (errors) => {
|
||||
if (!errors) {
|
||||
const verifyRes = await verifyCaptcha(
|
||||
phoneFormData._value.phone,
|
||||
phoneFormData._value.captcha,
|
||||
);
|
||||
console.log(verifyRes);
|
||||
if (verifyRes.code == 200) {
|
||||
const result = await toLogin(phoneFormData._value.phone, phoneFormData._value.captcha);
|
||||
console.log(result);
|
||||
if (result.code === 200) {
|
||||
// 去除 HTTPOnly
|
||||
result.cookie = result.cookie.replaceAll(" HTTPOnly", "");
|
||||
// 是否含有 MUSIC_U
|
||||
if (result.cookie && result.cookie.includes("MUSIC_U")) {
|
||||
// 储存登录信息
|
||||
emit("setLoginData", result);
|
||||
} else {
|
||||
$message.error("登录出错,请重试");
|
||||
try {
|
||||
e.preventDefault();
|
||||
phoneFormRef.value?.validate(async (errors) => {
|
||||
if (!errors) {
|
||||
const verifyRes = await verifyCaptcha(
|
||||
phoneFormData._value.phone,
|
||||
phoneFormData._value.captcha,
|
||||
);
|
||||
console.log(verifyRes);
|
||||
if (verifyRes.code == 200) {
|
||||
const result = await toLogin(phoneFormData._value.phone, phoneFormData._value.captcha);
|
||||
console.log(result);
|
||||
if (result.code === 200) {
|
||||
// 去除 HTTPOnly
|
||||
result.cookie = result.cookie.replaceAll(" HTTPOnly", "");
|
||||
// 是否含有 MUSIC_U
|
||||
if (result.cookie && result.cookie.includes("MUSIC_U")) {
|
||||
// 储存登录信息
|
||||
emit("setLoginData", result);
|
||||
} else {
|
||||
$message.error("登录出错,请重试");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
phoneFormData.value.captcha = null;
|
||||
$message.error("登录出错,请重试");
|
||||
}
|
||||
} else {
|
||||
$message.error("请检查你的输入");
|
||||
}
|
||||
} else {
|
||||
$message.error("请检查你的输入");
|
||||
}
|
||||
});
|
||||
});
|
||||
} catch (error) {
|
||||
phoneFormData.value.captcha = null;
|
||||
console.error("登录出错:", error);
|
||||
$message.error("登录出错,请重试");
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
|
||||
@@ -131,6 +131,46 @@
|
||||
>
|
||||
<SvgIcon icon="comment-text" />
|
||||
</n-icon>
|
||||
<!-- 音量 -->
|
||||
<n-popover trigger="hover" :show-arrow="false" raw>
|
||||
<template #trigger>
|
||||
<n-icon
|
||||
class="volume hidden"
|
||||
size="22"
|
||||
@click.stop="setVolumeMute"
|
||||
@wheel="changeVolume"
|
||||
>
|
||||
<SvgIcon v-if="playVolume === 0" icon="no-sound-rounded" />
|
||||
<SvgIcon v-else-if="playVolume > 0 && playVolume < 0.4" icon="volume-mute-rounded" />
|
||||
<SvgIcon
|
||||
v-else-if="playVolume >= 0.4 && playVolume < 0.7"
|
||||
icon="volume-down-rounded"
|
||||
/>
|
||||
<SvgIcon v-else icon="volume-up-rounded" />
|
||||
</n-icon>
|
||||
</template>
|
||||
<!-- 音量调整 -->
|
||||
<div
|
||||
:style="{
|
||||
'--cover-main-color': `rgb(${coverTheme?.light?.shadeTwo})` || '#efefef',
|
||||
'--cover-second-color': `rgba(${coverTheme?.light?.shadeTwo}, 0.14)` || '#efefef14',
|
||||
}"
|
||||
class="slider-content hidden"
|
||||
@wheel="changeVolume"
|
||||
>
|
||||
<n-slider
|
||||
v-model:value="playVolume"
|
||||
:tooltip="false"
|
||||
:min="0"
|
||||
:max="1"
|
||||
:step="0.01"
|
||||
vertical
|
||||
style="height: 120px"
|
||||
@update:value="setVolume"
|
||||
/>
|
||||
<n-text class="slider-num" depth="3">{{ (playVolume * 100).toFixed(0) }}%</n-text>
|
||||
</div>
|
||||
</n-popover>
|
||||
<!-- 播放模式 -->
|
||||
<n-icon v-if="playMode === 'normal'" class="hidden" size="22" @click.stop="togglePlayMode">
|
||||
<SvgIcon
|
||||
@@ -163,7 +203,14 @@
|
||||
import { storeToRefs } from "pinia";
|
||||
import { musicData, siteStatus, siteData } from "@/stores";
|
||||
import { useRouter } from "vue-router";
|
||||
import { playOrPause, fadePlayOrPause, setSeek, changePlayIndex } from "@/utils/Player";
|
||||
import {
|
||||
playOrPause,
|
||||
fadePlayOrPause,
|
||||
setSeek,
|
||||
changePlayIndex,
|
||||
setVolume,
|
||||
setVolumeMute,
|
||||
} from "@/utils/Player";
|
||||
import debounce from "@/utils/debounce";
|
||||
import VueSlider from "vue-slider-component";
|
||||
import "vue-slider-component/theme/default.css";
|
||||
@@ -185,6 +232,8 @@ const {
|
||||
playMode,
|
||||
playSongMode,
|
||||
playHeartbeatMode,
|
||||
playVolume,
|
||||
coverTheme,
|
||||
} = storeToRefs(status);
|
||||
|
||||
// 子组件
|
||||
@@ -234,6 +283,24 @@ const togglePlayMode = () => {
|
||||
playSongMode.value = modeMap[playSongMode.value] || "normal";
|
||||
};
|
||||
|
||||
// 音量条鼠标滚动
|
||||
const changeVolume = (e) => {
|
||||
const deltaY = e.deltaY;
|
||||
if (deltaY > 0) {
|
||||
// 向下滚动
|
||||
if (playVolume.value >= 0) {
|
||||
playVolume.value = Math.max(playVolume.value - 0.05, 0);
|
||||
}
|
||||
} else if (deltaY < 0) {
|
||||
// 向上滚动
|
||||
if (playVolume.value < 1) {
|
||||
playVolume.value = Math.min(playVolume.value + 0.05, 1);
|
||||
}
|
||||
}
|
||||
// 更新音量
|
||||
setVolume(playVolume.value);
|
||||
};
|
||||
|
||||
// 控制面板移入
|
||||
const controlEnter = () => {
|
||||
if (controlTimeOut.value) clearTimeout(controlTimeOut.value);
|
||||
@@ -398,4 +465,23 @@ const controlMove = (e) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
// 音量控制
|
||||
.slider-content {
|
||||
padding: 10px 0px;
|
||||
width: 50px;
|
||||
border-radius: 12px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
background-color: var(--cover-second-color);
|
||||
.n-slider {
|
||||
--n-fill-color: var(--cover-main-color);
|
||||
--n-fill-color-hover: var(--cover-main-color);
|
||||
--n-handle-color: var(--cover-main-color);
|
||||
}
|
||||
.slider-num {
|
||||
margin-top: 4px;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user