eslint检查所有文件
This commit is contained in:
parent
6f165f997a
commit
529557fc75
@ -1,14 +1,19 @@
|
|||||||
/* eslint-env node */
|
/* eslint-env node */
|
||||||
require('@rushstack/eslint-patch/modern-module-resolution')
|
require('@rushstack/eslint-patch/modern-module-resolution');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
root: true,
|
root: true,
|
||||||
'extends': [
|
'extends': [
|
||||||
'plugin:vue/vue3-essential',
|
'plugin:vue/vue3-essential',
|
||||||
'eslint:recommended',
|
'eslint:recommended',
|
||||||
|
'@vue/eslint-config-typescript',
|
||||||
'@vue/eslint-config-prettier/skip-formatting'
|
'@vue/eslint-config-prettier/skip-formatting'
|
||||||
],
|
],
|
||||||
parserOptions: {
|
parserOptions: {
|
||||||
ecmaVersion: 'latest'
|
ecmaVersion: 'latest'
|
||||||
}
|
},
|
||||||
}
|
rules: {
|
||||||
|
'vue/multi-word-component-names': 0
|
||||||
|
},
|
||||||
|
'ignorePatterns': ['vite.config.js', 'mobile-select.js']
|
||||||
|
};
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
|
|
||||||
let read = './data/detail_comments_2024-03-29.json'
|
let read = './data/detail_comments_2024-03-29.json'
|
||||||
let save = './data/'
|
|
||||||
|
|
||||||
let video_ids = [
|
let video_ids = [
|
||||||
'7260749400622894336',
|
'7260749400622894336',
|
||||||
|
|||||||
@ -10,7 +10,7 @@ let saveFilePath = './imgs/'
|
|||||||
const downloadImage = async (src, dest) => {
|
const downloadImage = async (src, dest) => {
|
||||||
console.log('下载:', src)
|
console.log('下载:', src)
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
request.head(src, (err, res, body) => {
|
request.head(src, (err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
return
|
return
|
||||||
|
|||||||
@ -2,7 +2,6 @@ import fs from 'fs'
|
|||||||
import { users } from './user/data.js'
|
import { users } from './user/data.js'
|
||||||
|
|
||||||
let read = './post/data/'
|
let read = './post/data/'
|
||||||
let save = './format/'
|
|
||||||
|
|
||||||
let max = 0
|
let max = 0
|
||||||
let map = []
|
let map = []
|
||||||
|
|||||||
@ -9,7 +9,7 @@ let inputData = JSON.parse(saveFileStr)
|
|||||||
const downloadImage = async (src, dest, callback) => {
|
const downloadImage = async (src, dest, callback) => {
|
||||||
console.log('下载:', src, dest, Date.now())
|
console.log('下载:', src, dest, Date.now())
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
request.head(src, (err, res, body) => {
|
request.head(src, (err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
return
|
return
|
||||||
@ -27,12 +27,6 @@ const downloadImage = async (src, dest, callback) => {
|
|||||||
|
|
||||||
let saveFilePath = './user-imgs/'
|
let saveFilePath = './user-imgs/'
|
||||||
|
|
||||||
async function sleep(val) {
|
|
||||||
return new Promise((resolve) => {
|
|
||||||
setTimeout(resolve, val)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
async function test(list) {
|
async function test(list) {
|
||||||
for (let j = 0; j < list.length; j++) {
|
for (let j = 0; j < list.length; j++) {
|
||||||
let a = list[j]
|
let a = list[j]
|
||||||
@ -70,11 +64,7 @@ for (let i = 0; i < inputData.slice(0, 1111).length; i++) {
|
|||||||
await test(v.white_cover_url)
|
await test(v.white_cover_url)
|
||||||
delete v.cover_and_head_image_info
|
delete v.cover_and_head_image_info
|
||||||
fs.writeFileSync(fileName, JSON.stringify(inputData, null, 2))
|
fs.writeFileSync(fileName, JSON.stringify(inputData, null, 2))
|
||||||
if (
|
if (v.share_info && v.share_info.share_image_url && v.share_info.share_image_url.url_list) {
|
||||||
v.share_info &&
|
|
||||||
v.share_info.share_image_url &&
|
|
||||||
v.share_info.share_image_url.url_list
|
|
||||||
) {
|
|
||||||
let r = await test2(v.share_info.share_image_url.url_list)
|
let r = await test2(v.share_info.share_image_url.url_list)
|
||||||
if (r.length) {
|
if (r.length) {
|
||||||
v.share_info.share_image_url.url_list = r
|
v.share_info.share_image_url.url_list = r
|
||||||
|
|||||||
@ -10,7 +10,7 @@ let inputData = JSON.parse(saveFileStr)
|
|||||||
const downloadImage = async (src, dest, callback) => {
|
const downloadImage = async (src, dest, callback) => {
|
||||||
console.log('下载:', src, dest, Date.now())
|
console.log('下载:', src, dest, Date.now())
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
request.head(src, (err, res, body) => {
|
request.head(src, (err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
return
|
return
|
||||||
@ -41,16 +41,16 @@ async function test(list) {
|
|||||||
let name = nanoid() + '.png'
|
let name = nanoid() + '.png'
|
||||||
imgList.push({
|
imgList.push({
|
||||||
name,
|
name,
|
||||||
url: coverUrl,
|
url: coverUrl
|
||||||
})
|
})
|
||||||
await downloadImage(coverUrl, saveFilePath + name, () => {
|
await downloadImage(coverUrl, saveFilePath + name, () => {
|
||||||
// console.log('close', name)
|
// console.log('close', name)
|
||||||
list[j] = {
|
list[j] = {
|
||||||
info_list: [
|
info_list: [
|
||||||
{
|
{
|
||||||
url: name,
|
url: name
|
||||||
},
|
}
|
||||||
],
|
]
|
||||||
}
|
}
|
||||||
fs.writeFileSync(savefileName, JSON.stringify(inputData, null, 2))
|
fs.writeFileSync(savefileName, JSON.stringify(inputData, null, 2))
|
||||||
})
|
})
|
||||||
@ -59,9 +59,9 @@ async function test(list) {
|
|||||||
list[j] = {
|
list[j] = {
|
||||||
info_list: [
|
info_list: [
|
||||||
{
|
{
|
||||||
url: imgList[rIndex].name,
|
url: imgList[rIndex].name
|
||||||
},
|
}
|
||||||
],
|
]
|
||||||
}
|
}
|
||||||
console.log('重复')
|
console.log('重复')
|
||||||
fs.writeFileSync(savefileName, JSON.stringify(inputData, null, 2))
|
fs.writeFileSync(savefileName, JSON.stringify(inputData, null, 2))
|
||||||
@ -77,7 +77,7 @@ for (let i = 0; i < inputData.slice(0, 111111).length; i++) {
|
|||||||
let name = nanoid() + '.png'
|
let name = nanoid() + '.png'
|
||||||
imgList.push({
|
imgList.push({
|
||||||
name,
|
name,
|
||||||
url: url,
|
url: url
|
||||||
})
|
})
|
||||||
await downloadImage(url, saveFilePath + name, () => {
|
await downloadImage(url, saveFilePath + name, () => {
|
||||||
// console.log('close', name)
|
// console.log('close', name)
|
||||||
|
|||||||
31
package.json
31
package.json
@ -17,6 +17,7 @@
|
|||||||
"core-js": "3.21.1",
|
"core-js": "3.21.1",
|
||||||
"dayjs": "1.11.0",
|
"dayjs": "1.11.0",
|
||||||
"gl-matrix": "3.4.3",
|
"gl-matrix": "3.4.3",
|
||||||
|
"jquery": "^3.7.1",
|
||||||
"mitt": "3.0.0",
|
"mitt": "3.0.0",
|
||||||
"mobile-select": "1.1.2",
|
"mobile-select": "1.1.2",
|
||||||
"mockjs": "^1.1.0",
|
"mockjs": "^1.1.0",
|
||||||
@ -27,20 +28,36 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@iconify/vue": "^4.1.1",
|
"@iconify/vue": "^4.1.1",
|
||||||
|
"@rushstack/eslint-patch": "^1.3.3",
|
||||||
|
"@types/jquery": "3.5.29",
|
||||||
"@types/lodash-es": "^4.17.9",
|
"@types/lodash-es": "^4.17.9",
|
||||||
"@vitejs/plugin-vue": "4.0.0",
|
"@vitejs/plugin-vue": "4.0.0",
|
||||||
|
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
||||||
|
"@vue/eslint-config-prettier": "^8.0.0",
|
||||||
|
"@vue/eslint-config-typescript": "^12.0.0",
|
||||||
|
"eslint": "^8.57.0",
|
||||||
|
"eslint-plugin-vue": "^9.17.0",
|
||||||
|
"husky": "^9.0.11",
|
||||||
"less": "4.1.3",
|
"less": "4.1.3",
|
||||||
|
"lint-staged": "^15.2.2",
|
||||||
|
"prettier": "^3.2.5",
|
||||||
"rollup-plugin-visualizer": "^5.9.2",
|
"rollup-plugin-visualizer": "^5.9.2",
|
||||||
"unplugin-vue-define-options": "^1.4.1",
|
"unplugin-vue-define-options": "^1.4.1",
|
||||||
"vite": "4.5.2",
|
"vite": "4.5.2",
|
||||||
"vite-plugin-cdn-import": "0.3.5",
|
"vite-plugin-cdn-import": "0.3.5",
|
||||||
"vite-plugin-compression": "^0.5.1",
|
"vite-plugin-compression": "^0.5.1",
|
||||||
"vite-plugin-imagemin": "^0.6.1",
|
"vite-plugin-imagemin": "^0.6.1"
|
||||||
"@rushstack/eslint-patch": "^1.3.3",
|
},
|
||||||
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
"husky":{
|
||||||
"@vue/eslint-config-prettier": "^8.0.0",
|
"hooks": {
|
||||||
"eslint": "^8.49.0",
|
"pre-commit": "lint-staged"
|
||||||
"eslint-plugin-vue": "^9.17.0",
|
}
|
||||||
"prettier": "^3.0.3"
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"src/**": [
|
||||||
|
"prettier --write src/",
|
||||||
|
"eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
|
||||||
|
"git add"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
516
pnpm-lock.yaml
516
pnpm-lock.yaml
@ -23,6 +23,9 @@ dependencies:
|
|||||||
gl-matrix:
|
gl-matrix:
|
||||||
specifier: 3.4.3
|
specifier: 3.4.3
|
||||||
version: 3.4.3
|
version: 3.4.3
|
||||||
|
jquery:
|
||||||
|
specifier: ^3.7.1
|
||||||
|
version: 3.7.1
|
||||||
mitt:
|
mitt:
|
||||||
specifier: 3.0.0
|
specifier: 3.0.0
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
@ -34,10 +37,10 @@ dependencies:
|
|||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
pinia:
|
pinia:
|
||||||
specifier: ^2.1.7
|
specifier: ^2.1.7
|
||||||
version: 2.1.7(vue@3.4.21)
|
version: 2.1.7(typescript@5.4.3)(vue@3.4.21)
|
||||||
vue:
|
vue:
|
||||||
specifier: 3.4.21
|
specifier: 3.4.21
|
||||||
version: 3.4.21
|
version: 3.4.21(typescript@5.4.3)
|
||||||
vue-router:
|
vue-router:
|
||||||
specifier: 4.3.0
|
specifier: 4.3.0
|
||||||
version: 4.3.0(vue@3.4.21)
|
version: 4.3.0(vue@3.4.21)
|
||||||
@ -52,6 +55,9 @@ devDependencies:
|
|||||||
'@rushstack/eslint-patch':
|
'@rushstack/eslint-patch':
|
||||||
specifier: ^1.3.3
|
specifier: ^1.3.3
|
||||||
version: 1.10.1
|
version: 1.10.1
|
||||||
|
'@types/jquery':
|
||||||
|
specifier: 3.5.29
|
||||||
|
version: 3.5.29
|
||||||
'@types/lodash-es':
|
'@types/lodash-es':
|
||||||
specifier: ^4.17.9
|
specifier: ^4.17.9
|
||||||
version: 4.17.12
|
version: 4.17.12
|
||||||
@ -64,17 +70,26 @@ devDependencies:
|
|||||||
'@vue/eslint-config-prettier':
|
'@vue/eslint-config-prettier':
|
||||||
specifier: ^8.0.0
|
specifier: ^8.0.0
|
||||||
version: 8.0.0(eslint@8.57.0)(prettier@3.2.5)
|
version: 8.0.0(eslint@8.57.0)(prettier@3.2.5)
|
||||||
|
'@vue/eslint-config-typescript':
|
||||||
|
specifier: ^12.0.0
|
||||||
|
version: 12.0.0(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3)
|
||||||
eslint:
|
eslint:
|
||||||
specifier: ^8.49.0
|
specifier: ^8.57.0
|
||||||
version: 8.57.0
|
version: 8.57.0
|
||||||
eslint-plugin-vue:
|
eslint-plugin-vue:
|
||||||
specifier: ^9.17.0
|
specifier: ^9.17.0
|
||||||
version: 9.24.0(eslint@8.57.0)
|
version: 9.24.0(eslint@8.57.0)
|
||||||
|
husky:
|
||||||
|
specifier: ^9.0.11
|
||||||
|
version: 9.0.11
|
||||||
less:
|
less:
|
||||||
specifier: 4.1.3
|
specifier: 4.1.3
|
||||||
version: 4.1.3
|
version: 4.1.3
|
||||||
|
lint-staged:
|
||||||
|
specifier: ^15.2.2
|
||||||
|
version: 15.2.2
|
||||||
prettier:
|
prettier:
|
||||||
specifier: ^3.0.3
|
specifier: ^3.2.5
|
||||||
version: 3.2.5
|
version: 3.2.5
|
||||||
rollup-plugin-visualizer:
|
rollup-plugin-visualizer:
|
||||||
specifier: ^5.9.2
|
specifier: ^5.9.2
|
||||||
@ -755,7 +770,7 @@ packages:
|
|||||||
vue: '>=3'
|
vue: '>=3'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@iconify/types': 2.0.0
|
'@iconify/types': 2.0.0
|
||||||
vue: 3.4.21
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@jambonn/vue-lazyload@1.0.9(vue@3.4.21):
|
/@jambonn/vue-lazyload@1.0.9(vue@3.4.21):
|
||||||
@ -764,7 +779,7 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
vue: ^3.0.11
|
vue: ^3.0.11
|
||||||
dependencies:
|
dependencies:
|
||||||
vue: 3.4.21
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@jridgewell/gen-mapping@0.3.3:
|
/@jridgewell/gen-mapping@0.3.3:
|
||||||
@ -934,6 +949,16 @@ packages:
|
|||||||
'@types/node': 20.11.30
|
'@types/node': 20.11.30
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/jquery@3.5.29:
|
||||||
|
resolution: {integrity: sha512-oXQQC9X9MOPRrMhPHHOsXqeQDnWeCDT3PelUIg/Oy8FAbzSZtFHRjc7IpbfFVmpLtJ+UOoywpRsuO5Jxjybyeg==}
|
||||||
|
dependencies:
|
||||||
|
'@types/sizzle': 2.3.8
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@types/json-schema@7.0.15:
|
||||||
|
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@types/keyv@3.1.4:
|
/@types/keyv@3.1.4:
|
||||||
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -966,12 +991,152 @@ packages:
|
|||||||
'@types/node': 20.11.30
|
'@types/node': 20.11.30
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/semver@7.5.8:
|
||||||
|
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@types/sizzle@2.3.8:
|
||||||
|
resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@types/svgo@2.6.4:
|
/@types/svgo@2.6.4:
|
||||||
resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
|
resolution: {integrity: sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 20.11.30
|
'@types/node': 20.11.30
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.3):
|
||||||
|
resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
|
||||||
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
|
peerDependencies:
|
||||||
|
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
|
||||||
|
eslint: ^7.0.0 || ^8.0.0
|
||||||
|
typescript: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@eslint-community/regexpp': 4.10.0
|
||||||
|
'@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
|
||||||
|
'@typescript-eslint/scope-manager': 6.21.0
|
||||||
|
'@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
|
||||||
|
'@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
|
||||||
|
'@typescript-eslint/visitor-keys': 6.21.0
|
||||||
|
debug: 4.3.4
|
||||||
|
eslint: 8.57.0
|
||||||
|
graphemer: 1.4.0
|
||||||
|
ignore: 5.3.1
|
||||||
|
natural-compare: 1.4.0
|
||||||
|
semver: 7.6.0
|
||||||
|
ts-api-utils: 1.3.0(typescript@5.4.3)
|
||||||
|
typescript: 5.4.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.3):
|
||||||
|
resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
|
||||||
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
|
peerDependencies:
|
||||||
|
eslint: ^7.0.0 || ^8.0.0
|
||||||
|
typescript: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/scope-manager': 6.21.0
|
||||||
|
'@typescript-eslint/types': 6.21.0
|
||||||
|
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3)
|
||||||
|
'@typescript-eslint/visitor-keys': 6.21.0
|
||||||
|
debug: 4.3.4
|
||||||
|
eslint: 8.57.0
|
||||||
|
typescript: 5.4.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@typescript-eslint/scope-manager@6.21.0:
|
||||||
|
resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
|
||||||
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 6.21.0
|
||||||
|
'@typescript-eslint/visitor-keys': 6.21.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.3):
|
||||||
|
resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
|
||||||
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
|
peerDependencies:
|
||||||
|
eslint: ^7.0.0 || ^8.0.0
|
||||||
|
typescript: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3)
|
||||||
|
'@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
|
||||||
|
debug: 4.3.4
|
||||||
|
eslint: 8.57.0
|
||||||
|
ts-api-utils: 1.3.0(typescript@5.4.3)
|
||||||
|
typescript: 5.4.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@typescript-eslint/types@6.21.0:
|
||||||
|
resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
|
||||||
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.3):
|
||||||
|
resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
|
||||||
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 6.21.0
|
||||||
|
'@typescript-eslint/visitor-keys': 6.21.0
|
||||||
|
debug: 4.3.4
|
||||||
|
globby: 11.1.0
|
||||||
|
is-glob: 4.0.3
|
||||||
|
minimatch: 9.0.3
|
||||||
|
semver: 7.6.0
|
||||||
|
ts-api-utils: 1.3.0(typescript@5.4.3)
|
||||||
|
typescript: 5.4.3
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.3):
|
||||||
|
resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
|
||||||
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
|
peerDependencies:
|
||||||
|
eslint: ^7.0.0 || ^8.0.0
|
||||||
|
dependencies:
|
||||||
|
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
|
||||||
|
'@types/json-schema': 7.0.15
|
||||||
|
'@types/semver': 7.5.8
|
||||||
|
'@typescript-eslint/scope-manager': 6.21.0
|
||||||
|
'@typescript-eslint/types': 6.21.0
|
||||||
|
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.3)
|
||||||
|
eslint: 8.57.0
|
||||||
|
semver: 7.6.0
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
- typescript
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/@typescript-eslint/visitor-keys@6.21.0:
|
||||||
|
resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
|
||||||
|
engines: {node: ^16.0.0 || >=18.0.0}
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/types': 6.21.0
|
||||||
|
eslint-visitor-keys: 3.4.3
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@ungap/structured-clone@1.2.0:
|
/@ungap/structured-clone@1.2.0:
|
||||||
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
|
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -987,7 +1152,7 @@ packages:
|
|||||||
'@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3)
|
'@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3)
|
||||||
'@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.24.3)
|
'@vue/babel-plugin-jsx': 1.1.5(@babel/core@7.24.3)
|
||||||
vite: 4.5.2(less@4.1.3)
|
vite: 4.5.2(less@4.1.3)
|
||||||
vue: 3.4.21
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
@ -1000,7 +1165,7 @@ packages:
|
|||||||
vue: ^3.2.25
|
vue: ^3.2.25
|
||||||
dependencies:
|
dependencies:
|
||||||
vite: 4.5.2(less@4.1.3)
|
vite: 4.5.2(less@4.1.3)
|
||||||
vue: 3.4.21
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue-macros/common@1.10.1(rollup@2.79.1)(vue@3.4.21):
|
/@vue-macros/common@1.10.1(rollup@2.79.1)(vue@3.4.21):
|
||||||
@ -1018,7 +1183,7 @@ packages:
|
|||||||
ast-kit: 0.11.3(rollup@2.79.1)
|
ast-kit: 0.11.3(rollup@2.79.1)
|
||||||
local-pkg: 0.5.0
|
local-pkg: 0.5.0
|
||||||
magic-string-ast: 0.3.0
|
magic-string-ast: 0.3.0
|
||||||
vue: 3.4.21
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
dev: true
|
dev: true
|
||||||
@ -1106,6 +1271,27 @@ packages:
|
|||||||
- '@types/eslint'
|
- '@types/eslint'
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@vue/eslint-config-typescript@12.0.0(eslint-plugin-vue@9.24.0)(eslint@8.57.0)(typescript@5.4.3):
|
||||||
|
resolution: {integrity: sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==}
|
||||||
|
engines: {node: ^14.17.0 || >=16.0.0}
|
||||||
|
peerDependencies:
|
||||||
|
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
|
||||||
|
eslint-plugin-vue: ^9.0.0
|
||||||
|
typescript: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
dependencies:
|
||||||
|
'@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.3)
|
||||||
|
'@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.3)
|
||||||
|
eslint: 8.57.0
|
||||||
|
eslint-plugin-vue: 9.24.0(eslint@8.57.0)
|
||||||
|
typescript: 5.4.3
|
||||||
|
vue-eslint-parser: 9.4.2(eslint@8.57.0)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@vue/reactivity@3.4.21:
|
/@vue/reactivity@3.4.21:
|
||||||
resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==}
|
resolution: {integrity: sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1131,7 +1317,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@vue/compiler-ssr': 3.4.21
|
'@vue/compiler-ssr': 3.4.21
|
||||||
'@vue/shared': 3.4.21
|
'@vue/shared': 3.4.21
|
||||||
vue: 3.4.21
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
|
|
||||||
/@vue/shared@3.4.21:
|
/@vue/shared@3.4.21:
|
||||||
resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==}
|
resolution: {integrity: sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==}
|
||||||
@ -1159,6 +1345,11 @@ packages:
|
|||||||
uri-js: 4.4.1
|
uri-js: 4.4.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/ansi-escapes@6.2.1:
|
||||||
|
resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==}
|
||||||
|
engines: {node: '>=14.16'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/ansi-regex@2.1.1:
|
/ansi-regex@2.1.1:
|
||||||
resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
|
resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -1170,6 +1361,11 @@ packages:
|
|||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/ansi-regex@6.0.1:
|
||||||
|
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/ansi-styles@2.2.1:
|
/ansi-styles@2.2.1:
|
||||||
resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
|
resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -1189,6 +1385,11 @@ packages:
|
|||||||
color-convert: 2.0.1
|
color-convert: 2.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/ansi-styles@6.2.1:
|
||||||
|
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/anymatch@3.1.3:
|
/anymatch@3.1.3:
|
||||||
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
|
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
@ -1359,6 +1560,12 @@ packages:
|
|||||||
concat-map: 0.0.1
|
concat-map: 0.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/brace-expansion@2.0.1:
|
||||||
|
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
|
||||||
|
dependencies:
|
||||||
|
balanced-match: 1.0.2
|
||||||
|
dev: true
|
||||||
|
|
||||||
/braces@3.0.2:
|
/braces@3.0.2:
|
||||||
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
|
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@ -1480,6 +1687,11 @@ packages:
|
|||||||
supports-color: 7.2.0
|
supports-color: 7.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/chalk@5.3.0:
|
||||||
|
resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
|
||||||
|
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/chokidar@3.6.0:
|
/chokidar@3.6.0:
|
||||||
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
|
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
|
||||||
engines: {node: '>= 8.10.0'}
|
engines: {node: '>= 8.10.0'}
|
||||||
@ -1495,6 +1707,21 @@ packages:
|
|||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/cli-cursor@4.0.0:
|
||||||
|
resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
|
||||||
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
|
dependencies:
|
||||||
|
restore-cursor: 4.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/cli-truncate@4.0.0:
|
||||||
|
resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
dependencies:
|
||||||
|
slice-ansi: 5.0.0
|
||||||
|
string-width: 7.1.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/cliui@8.0.1:
|
/cliui@8.0.1:
|
||||||
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
|
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@ -1531,6 +1758,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/colorette@2.0.20:
|
||||||
|
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/combined-stream@1.0.8:
|
/combined-stream@1.0.8:
|
||||||
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
|
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
@ -1545,6 +1776,11 @@ packages:
|
|||||||
keypress: 0.1.0
|
keypress: 0.1.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/commander@11.1.0:
|
||||||
|
resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
|
||||||
|
engines: {node: '>=16'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/commander@2.20.3:
|
/commander@2.20.3:
|
||||||
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
|
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -1882,6 +2118,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw==}
|
resolution: {integrity: sha512-rxFVtrMGMFROr4qqU6n95rUi9IlfIm+lIAt+hOToy/9r6CDv0XiEcQdC3VP71y1pE5CFTzKV0RvxOGYCPWWHPw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/emoji-regex@10.3.0:
|
||||||
|
resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/emoji-regex@8.0.0:
|
/emoji-regex@8.0.0:
|
||||||
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
@ -2315,6 +2555,10 @@ packages:
|
|||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/eventemitter3@5.0.1:
|
||||||
|
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/exec-buffer@3.2.0:
|
/exec-buffer@3.2.0:
|
||||||
resolution: {integrity: sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==}
|
resolution: {integrity: sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@ -2382,6 +2626,21 @@ packages:
|
|||||||
strip-final-newline: 2.0.0
|
strip-final-newline: 2.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/execa@8.0.1:
|
||||||
|
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
|
||||||
|
engines: {node: '>=16.17'}
|
||||||
|
dependencies:
|
||||||
|
cross-spawn: 7.0.3
|
||||||
|
get-stream: 8.0.1
|
||||||
|
human-signals: 5.0.0
|
||||||
|
is-stream: 3.0.0
|
||||||
|
merge-stream: 2.0.0
|
||||||
|
npm-run-path: 5.3.0
|
||||||
|
onetime: 6.0.0
|
||||||
|
signal-exit: 4.1.0
|
||||||
|
strip-final-newline: 3.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/executable@4.1.1:
|
/executable@4.1.1:
|
||||||
resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
|
resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@ -2622,6 +2881,11 @@ packages:
|
|||||||
engines: {node: 6.* || 8.* || >= 10.*}
|
engines: {node: 6.* || 8.* || >= 10.*}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/get-east-asian-width@1.2.0:
|
||||||
|
resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/get-proxy@2.1.0:
|
/get-proxy@2.1.0:
|
||||||
resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==}
|
resolution: {integrity: sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@ -2666,6 +2930,11 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/get-stream@8.0.1:
|
||||||
|
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
|
||||||
|
engines: {node: '>=16'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/gifsicle@5.2.0:
|
/gifsicle@5.2.0:
|
||||||
resolution: {integrity: sha512-vOIS3j0XoTCxq9pkGj43gEix82RkI5FveNgaFZutjbaui/HH+4fR8Y56dwXDuxYo8hR4xOo6/j2h1WHoQW6XLw==}
|
resolution: {integrity: sha512-vOIS3j0XoTCxq9pkGj43gEix82RkI5FveNgaFZutjbaui/HH+4fR8Y56dwXDuxYo8hR4xOo6/j2h1WHoQW6XLw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@ -2734,6 +3003,18 @@ packages:
|
|||||||
slash: 3.0.0
|
slash: 3.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/globby@11.1.0:
|
||||||
|
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
dependencies:
|
||||||
|
array-union: 2.1.0
|
||||||
|
dir-glob: 3.0.1
|
||||||
|
fast-glob: 3.3.2
|
||||||
|
ignore: 5.3.1
|
||||||
|
merge2: 1.4.1
|
||||||
|
slash: 3.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/got@7.1.0:
|
/got@7.1.0:
|
||||||
resolution: {integrity: sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==}
|
resolution: {integrity: sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@ -2847,6 +3128,17 @@ packages:
|
|||||||
engines: {node: '>=10.17.0'}
|
engines: {node: '>=10.17.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/human-signals@5.0.0:
|
||||||
|
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
|
||||||
|
engines: {node: '>=16.17.0'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/husky@9.0.11:
|
||||||
|
resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
hasBin: true
|
||||||
|
dev: true
|
||||||
|
|
||||||
/iconv-lite@0.6.3:
|
/iconv-lite@0.6.3:
|
||||||
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
|
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -3050,6 +3342,18 @@ packages:
|
|||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/is-fullwidth-code-point@4.0.0:
|
||||||
|
resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/is-fullwidth-code-point@5.0.0:
|
||||||
|
resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
dependencies:
|
||||||
|
get-east-asian-width: 1.2.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/is-gif@3.0.0:
|
/is-gif@3.0.0:
|
||||||
resolution: {integrity: sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==}
|
resolution: {integrity: sha512-IqJ/jlbw5WJSNfwQ/lHEDXF8rxhRgF6ythk2oiEvhpG29F704eX9NO6TvPfMiq9DrbwgcEDnETYNcZDPewQoVw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@ -3118,6 +3422,11 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/is-stream@3.0.0:
|
||||||
|
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
|
||||||
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/is-svg@4.4.0:
|
/is-svg@4.4.0:
|
||||||
resolution: {integrity: sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==}
|
resolution: {integrity: sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@ -3177,6 +3486,10 @@ packages:
|
|||||||
bin-wrapper: 4.1.0
|
bin-wrapper: 4.1.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/jquery@3.7.1:
|
||||||
|
resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/js-tokens@4.0.0:
|
/js-tokens@4.0.0:
|
||||||
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -3277,6 +3590,42 @@ packages:
|
|||||||
type-check: 0.4.0
|
type-check: 0.4.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/lilconfig@3.0.0:
|
||||||
|
resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/lint-staged@15.2.2:
|
||||||
|
resolution: {integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==}
|
||||||
|
engines: {node: '>=18.12.0'}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
chalk: 5.3.0
|
||||||
|
commander: 11.1.0
|
||||||
|
debug: 4.3.4
|
||||||
|
execa: 8.0.1
|
||||||
|
lilconfig: 3.0.0
|
||||||
|
listr2: 8.0.1
|
||||||
|
micromatch: 4.0.5
|
||||||
|
pidtree: 0.6.0
|
||||||
|
string-argv: 0.3.2
|
||||||
|
yaml: 2.3.4
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/listr2@8.0.1:
|
||||||
|
resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
dependencies:
|
||||||
|
cli-truncate: 4.0.0
|
||||||
|
colorette: 2.0.20
|
||||||
|
eventemitter3: 5.0.1
|
||||||
|
log-update: 6.0.0
|
||||||
|
rfdc: 1.3.1
|
||||||
|
wrap-ansi: 9.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/load-json-file@1.1.0:
|
/load-json-file@1.1.0:
|
||||||
resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
|
resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -3311,6 +3660,17 @@ packages:
|
|||||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/log-update@6.0.0:
|
||||||
|
resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
dependencies:
|
||||||
|
ansi-escapes: 6.2.1
|
||||||
|
cli-cursor: 4.0.0
|
||||||
|
slice-ansi: 7.1.0
|
||||||
|
strip-ansi: 7.1.0
|
||||||
|
wrap-ansi: 9.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/logalot@2.1.0:
|
/logalot@2.1.0:
|
||||||
resolution: {integrity: sha512-Ah4CgdSRfeCJagxQhcVNMi9BfGYyEKLa6d7OA6xSbld/Hg3Cf2QiOa1mDpmG7Ve8LOH6DN3mdttzjQAvWTyVkw==}
|
resolution: {integrity: sha512-Ah4CgdSRfeCJagxQhcVNMi9BfGYyEKLa6d7OA6xSbld/Hg3Cf2QiOa1mDpmG7Ve8LOH6DN3mdttzjQAvWTyVkw==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -3483,6 +3843,11 @@ packages:
|
|||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/mimic-fn@4.0.0:
|
||||||
|
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/mimic-response@1.0.1:
|
/mimic-response@1.0.1:
|
||||||
resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
|
resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@ -3495,6 +3860,13 @@ packages:
|
|||||||
brace-expansion: 1.1.11
|
brace-expansion: 1.1.11
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/minimatch@9.0.3:
|
||||||
|
resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
|
||||||
|
engines: {node: '>=16 || 14 >=14.17'}
|
||||||
|
dependencies:
|
||||||
|
brace-expansion: 2.0.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
/minimist@1.2.8:
|
/minimist@1.2.8:
|
||||||
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
|
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -3625,6 +3997,13 @@ packages:
|
|||||||
path-key: 3.1.1
|
path-key: 3.1.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/npm-run-path@5.3.0:
|
||||||
|
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
|
||||||
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
|
dependencies:
|
||||||
|
path-key: 4.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/nth-check@2.1.1:
|
/nth-check@2.1.1:
|
||||||
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
|
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -3650,6 +4029,13 @@ packages:
|
|||||||
mimic-fn: 2.1.0
|
mimic-fn: 2.1.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/onetime@6.0.0:
|
||||||
|
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dependencies:
|
||||||
|
mimic-fn: 4.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/open@8.4.2:
|
/open@8.4.2:
|
||||||
resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
|
resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@ -3821,6 +4207,11 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/path-key@4.0.0:
|
||||||
|
resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/path-parse@1.0.7:
|
/path-parse@1.0.7:
|
||||||
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -3859,6 +4250,12 @@ packages:
|
|||||||
engines: {node: '>=8.6'}
|
engines: {node: '>=8.6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/pidtree@0.6.0:
|
||||||
|
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
|
||||||
|
engines: {node: '>=0.10'}
|
||||||
|
hasBin: true
|
||||||
|
dev: true
|
||||||
|
|
||||||
/pify@2.3.0:
|
/pify@2.3.0:
|
||||||
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
|
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -3875,7 +4272,7 @@ packages:
|
|||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/pinia@2.1.7(vue@3.4.21):
|
/pinia@2.1.7(typescript@5.4.3)(vue@3.4.21):
|
||||||
resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==}
|
resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@vue/composition-api': ^1.4.0
|
'@vue/composition-api': ^1.4.0
|
||||||
@ -3888,7 +4285,8 @@ packages:
|
|||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-api': 6.5.1
|
'@vue/devtools-api': 6.5.1
|
||||||
vue: 3.4.21
|
typescript: 5.4.3
|
||||||
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
vue-demi: 0.14.7(vue@3.4.21)
|
vue-demi: 0.14.7(vue@3.4.21)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
@ -4104,11 +4502,23 @@ packages:
|
|||||||
lowercase-keys: 1.0.1
|
lowercase-keys: 1.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/restore-cursor@4.0.0:
|
||||||
|
resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
|
||||||
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
|
dependencies:
|
||||||
|
onetime: 5.1.2
|
||||||
|
signal-exit: 3.0.7
|
||||||
|
dev: true
|
||||||
|
|
||||||
/reusify@1.0.4:
|
/reusify@1.0.4:
|
||||||
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
|
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
|
||||||
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/rfdc@1.3.1:
|
||||||
|
resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/rimraf@2.7.1:
|
/rimraf@2.7.1:
|
||||||
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
|
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@ -4262,11 +4672,32 @@ packages:
|
|||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/signal-exit@4.1.0:
|
||||||
|
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/slash@3.0.0:
|
/slash@3.0.0:
|
||||||
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
|
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/slice-ansi@5.0.0:
|
||||||
|
resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dependencies:
|
||||||
|
ansi-styles: 6.2.1
|
||||||
|
is-fullwidth-code-point: 4.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/slice-ansi@7.1.0:
|
||||||
|
resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
dependencies:
|
||||||
|
ansi-styles: 6.2.1
|
||||||
|
is-fullwidth-code-point: 5.0.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/sort-keys-length@1.0.1:
|
/sort-keys-length@1.0.1:
|
||||||
resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==}
|
resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -4348,6 +4779,11 @@ packages:
|
|||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/string-argv@0.3.2:
|
||||||
|
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
|
||||||
|
engines: {node: '>=0.6.19'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/string-width@4.2.3:
|
/string-width@4.2.3:
|
||||||
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@ -4358,6 +4794,15 @@ packages:
|
|||||||
strip-ansi: 6.0.1
|
strip-ansi: 6.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/string-width@7.1.0:
|
||||||
|
resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
dependencies:
|
||||||
|
emoji-regex: 10.3.0
|
||||||
|
get-east-asian-width: 1.2.0
|
||||||
|
strip-ansi: 7.1.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/string_decoder@1.1.1:
|
/string_decoder@1.1.1:
|
||||||
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
|
resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -4379,6 +4824,13 @@ packages:
|
|||||||
ansi-regex: 5.0.1
|
ansi-regex: 5.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/strip-ansi@7.1.0:
|
||||||
|
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dependencies:
|
||||||
|
ansi-regex: 6.0.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
/strip-bom@2.0.0:
|
/strip-bom@2.0.0:
|
||||||
resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
|
resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -4402,6 +4854,11 @@ packages:
|
|||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/strip-final-newline@3.0.0:
|
||||||
|
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/strip-indent@1.0.1:
|
/strip-indent@1.0.1:
|
||||||
resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==}
|
resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -4542,6 +4999,15 @@ packages:
|
|||||||
escape-string-regexp: 1.0.5
|
escape-string-regexp: 1.0.5
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/ts-api-utils@1.3.0(typescript@5.4.3):
|
||||||
|
resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
|
||||||
|
engines: {node: '>=16'}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.2.0'
|
||||||
|
dependencies:
|
||||||
|
typescript: 5.4.3
|
||||||
|
dev: true
|
||||||
|
|
||||||
/tslib@2.6.2:
|
/tslib@2.6.2:
|
||||||
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
|
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -4569,6 +5035,11 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/typescript@5.4.3:
|
||||||
|
resolution: {integrity: sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==}
|
||||||
|
engines: {node: '>=14.17'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
/ufo@1.4.0:
|
/ufo@1.4.0:
|
||||||
resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==}
|
resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==}
|
||||||
dev: true
|
dev: true
|
||||||
@ -4766,7 +5237,7 @@ packages:
|
|||||||
'@vue/composition-api':
|
'@vue/composition-api':
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
vue: 3.4.21
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vue-eslint-parser@9.4.2(eslint@8.57.0):
|
/vue-eslint-parser@9.4.2(eslint@8.57.0):
|
||||||
@ -4793,7 +5264,7 @@ packages:
|
|||||||
vue: ^3.2.0
|
vue: ^3.2.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vue/devtools-api': 6.5.1
|
'@vue/devtools-api': 6.5.1
|
||||||
vue: 3.4.21
|
vue: 3.4.21(typescript@5.4.3)
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vue-switches@2.0.1:
|
/vue-switches@2.0.1:
|
||||||
@ -4810,7 +5281,7 @@ packages:
|
|||||||
csstype: 3.1.2
|
csstype: 3.1.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/vue@3.4.21:
|
/vue@3.4.21(typescript@5.4.3):
|
||||||
resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==}
|
resolution: {integrity: sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
typescript: '*'
|
typescript: '*'
|
||||||
@ -4823,6 +5294,7 @@ packages:
|
|||||||
'@vue/runtime-dom': 3.4.21
|
'@vue/runtime-dom': 3.4.21
|
||||||
'@vue/server-renderer': 3.4.21(vue@3.4.21)
|
'@vue/server-renderer': 3.4.21(vue@3.4.21)
|
||||||
'@vue/shared': 3.4.21
|
'@vue/shared': 3.4.21
|
||||||
|
typescript: 5.4.3
|
||||||
|
|
||||||
/webpack-sources@3.2.3:
|
/webpack-sources@3.2.3:
|
||||||
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
|
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
|
||||||
@ -4857,6 +5329,15 @@ packages:
|
|||||||
strip-ansi: 6.0.1
|
strip-ansi: 6.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/wrap-ansi@9.0.0:
|
||||||
|
resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
dependencies:
|
||||||
|
ansi-styles: 6.2.1
|
||||||
|
string-width: 7.1.0
|
||||||
|
strip-ansi: 7.1.0
|
||||||
|
dev: true
|
||||||
|
|
||||||
/wrappy@1.0.2:
|
/wrappy@1.0.2:
|
||||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
@ -4889,6 +5370,11 @@ packages:
|
|||||||
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/yaml@2.3.4:
|
||||||
|
resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
|
||||||
|
engines: {node: '>= 14'}
|
||||||
|
dev: true
|
||||||
|
|
||||||
/yargs-parser@21.1.1:
|
/yargs-parser@21.1.1:
|
||||||
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
|
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|||||||
@ -76,10 +76,14 @@ export default {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
navigator.control.gesture(false)
|
navigator.control.gesture(false)
|
||||||
} catch (e) {}
|
} catch (e) {
|
||||||
|
//
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
navigator.control.longpressMenu(false)
|
navigator.control.longpressMenu(false)
|
||||||
} catch (e) {}
|
} catch (e) {
|
||||||
|
//
|
||||||
|
}
|
||||||
document.onselectstart = new Function('return false') //禁止选中文字
|
document.onselectstart = new Function('return false') //禁止选中文字
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import CONST_VAR from '../../utils/const_var'
|
import CONST_VAR from '../../utils/const_var'
|
||||||
import posts6 from '@/assets/data/posts6.json'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
videos: [],
|
videos: [],
|
||||||
|
|||||||
@ -28,7 +28,7 @@ export default {
|
|||||||
return {}
|
return {}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
changeText(e) {
|
changeText() {
|
||||||
this.$emit('update:modelValue', this.$el.innerText)
|
this.$emit('update:modelValue', this.$el.innerText)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
import bus, { EVENT_KEY } from '../utils/bus'
|
import bus, { EVENT_KEY } from '../utils/bus'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Footer',
|
name: 'BaseFooter',
|
||||||
props: ['initTab', 'isWhite'],
|
props: ['initTab', 'isWhite'],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -39,8 +39,8 @@ export default {
|
|||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
bus.on('setFooterVisible', (e) => (this.visible = e))
|
bus.on('setFooterVisible', (e) => (this.visible = e))
|
||||||
bus.on(EVENT_KEY.ENTER_FULLSCREEN, (e) => (this.visible = false))
|
bus.on(EVENT_KEY.ENTER_FULLSCREEN, () => (this.visible = false))
|
||||||
bus.on(EVENT_KEY.EXIT_FULLSCREEN, (e) => (this.visible = true))
|
bus.on(EVENT_KEY.EXIT_FULLSCREEN, () => (this.visible = true))
|
||||||
},
|
},
|
||||||
unmounted() {
|
unmounted() {
|
||||||
bus.off(EVENT_KEY.ENTER_FULLSCREEN)
|
bus.off(EVENT_KEY.ENTER_FULLSCREEN)
|
||||||
@ -5,7 +5,7 @@
|
|||||||
//未以组件的方式使用,FromBottomDialog.vue里面是用js append到dom里面去的,
|
//未以组件的方式使用,FromBottomDialog.vue里面是用js append到dom里面去的,
|
||||||
//以组件的方式使用,不好随意插位置,插到app下面,又会出现定位覆盖的问题
|
//以组件的方式使用,不好随意插位置,插到app下面,又会出现定位覆盖的问题
|
||||||
export default {
|
export default {
|
||||||
name: 'Mask',
|
name: 'BaseMask',
|
||||||
props: {
|
props: {
|
||||||
mode: {
|
mode: {
|
||||||
type: String,
|
type: String,
|
||||||
@ -77,7 +77,12 @@ export default {
|
|||||||
name: 'Call',
|
name: 'Call',
|
||||||
components: {},
|
components: {},
|
||||||
props: {
|
props: {
|
||||||
modelValue: false
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -118,7 +123,7 @@ export default {
|
|||||||
this.callFloatLeft = e.touches[0].pageX - 35
|
this.callFloatLeft = e.touches[0].pageX - 35
|
||||||
this.callFloatTop = e.touches[0].pageY - 40
|
this.callFloatTop = e.touches[0].pageY - 40
|
||||||
},
|
},
|
||||||
touchend(e) {
|
touchend() {
|
||||||
this.callFloatTransitionTime = 300
|
this.callFloatTransitionTime = 300
|
||||||
if (this.callFloatLeft < this.width / 2) {
|
if (this.callFloatLeft < this.width / 2) {
|
||||||
this.callFloatLeft = 15
|
this.callFloatLeft = 15
|
||||||
|
|||||||
@ -23,7 +23,8 @@
|
|||||||
<div class="comment">
|
<div class="comment">
|
||||||
<div class="wrapper" v-if="comments.length">
|
<div class="wrapper" v-if="comments.length">
|
||||||
<div class="items">
|
<div class="items">
|
||||||
<div class="item" v-for="item in comments" v-longpress="(e) => showOptions(item)">
|
<div class="item" :key="i" v-for="(item, i) in comments">
|
||||||
|
<!-- v-longpress="(e) => showOptions(item)"-->
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<img :src="_checkImgUrl(item.avatar)" alt="" class="head-image" />
|
<img :src="_checkImgUrl(item.avatar)" alt="" class="head-image" />
|
||||||
@ -69,7 +70,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="replies" v-if="Number(item.sub_comment_count)">
|
<div class="replies" v-if="Number(item.sub_comment_count)">
|
||||||
<template v-if="item.showChildren">
|
<template v-if="item.showChildren">
|
||||||
<div class="reply" v-for="child in item.children">
|
<div class="reply" :key="i" v-for="(child, i) in item.children">
|
||||||
<!-- v-longpress="e => showOptions(child)"-->
|
<!-- v-longpress="e => showOptions(child)"-->
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<img :src="_checkImgUrl(child.avatar)" alt="" class="head-image" />
|
<img :src="_checkImgUrl(child.avatar)" alt="" class="head-image" />
|
||||||
@ -129,12 +130,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<Loading v-else style="position: absolute" />
|
<Loading v-else style="position: absolute" />
|
||||||
<transition name="fade">
|
<transition name="fade">
|
||||||
<Mask v-if="isCall" mode="lightgray" @click="isCall = false" />
|
<BaseMask v-if="isCall" mode="lightgray" @click="isCall = false" />
|
||||||
</transition>
|
</transition>
|
||||||
<div class="input-toolbar">
|
<div class="input-toolbar">
|
||||||
<transition name="fade">
|
<transition name="fade">
|
||||||
<div class="call-friend" v-if="isCall">
|
<div class="call-friend" v-if="isCall">
|
||||||
<div class="friend" v-for="item in friends.all" @click="toggleCall(item)">
|
<div class="friend" :key="i" v-for="(item, i) in friends.all" @click="toggleCall(item)">
|
||||||
<img
|
<img
|
||||||
:style="item.select ? 'opacity: .5;' : ''"
|
:style="item.select ? 'opacity: .5;' : ''"
|
||||||
class="avatar"
|
class="avatar"
|
||||||
@ -179,12 +180,10 @@ import Search from './Search'
|
|||||||
import { $no, _checkImgUrl, _formatNumber, sampleSize } from '@/utils'
|
import { $no, _checkImgUrl, _formatNumber, sampleSize } from '@/utils'
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
import { videoComments } from '@/api/videos'
|
import { videoComments } from '@/api/videos'
|
||||||
import Popover from '@/pages/login/components/Tooltip.vue'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Comment',
|
name: 'Comment',
|
||||||
components: {
|
components: {
|
||||||
Popover,
|
|
||||||
AutoInput,
|
AutoInput,
|
||||||
ConfirmDialog,
|
ConfirmDialog,
|
||||||
FromBottomDialog,
|
FromBottomDialog,
|
||||||
@ -192,7 +191,12 @@ export default {
|
|||||||
Search
|
Search
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
modelValue: false,
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
videoId: {
|
videoId: {
|
||||||
type: String,
|
type: String,
|
||||||
default: null
|
default: null
|
||||||
@ -300,7 +304,6 @@ export default {
|
|||||||
row.user_digged = !row.user_digged
|
row.user_digged = !row.user_digged
|
||||||
},
|
},
|
||||||
showOptions(row) {
|
showOptions(row) {
|
||||||
return
|
|
||||||
this.$showSelectDialog(this.options, (e) => {
|
this.$showSelectDialog(this.options, (e) => {
|
||||||
if (e.id === 1) {
|
if (e.id === 1) {
|
||||||
this.selectRow = row
|
this.selectRow = row
|
||||||
@ -437,6 +440,7 @@ export default {
|
|||||||
span {
|
span {
|
||||||
margin-right: 5rem;
|
margin-right: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
font-size: 10rem;
|
font-size: 10rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,7 +49,12 @@ export default {
|
|||||||
name: 'DouyinCode',
|
name: 'DouyinCode',
|
||||||
props: {
|
props: {
|
||||||
item: {},
|
item: {},
|
||||||
modelValue: false
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {}
|
return {}
|
||||||
@ -108,6 +113,7 @@ export default {
|
|||||||
-webkit-line-clamp: 1; //显示的行
|
-webkit-line-clamp: 1; //显示的行
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.code {
|
.code {
|
||||||
width: 60rem;
|
width: 60rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="posters">
|
<div class="posters">
|
||||||
<div class="poster-item" v-for="(i, index) in list" @click="goDetail(index)">
|
<div class="poster-item" :key="index" v-for="(i, index) in list" @click="goDetail(index)">
|
||||||
<img class="poster" v-lazy="_checkImgUrl(i.video.cover.url_list[0])" alt="" />
|
<img class="poster" v-lazy="_checkImgUrl(i.video.cover.url_list[0])" alt="" />
|
||||||
<div class="num" v-if="mode === 'normal'">
|
<div class="num" v-if="mode === 'normal'">
|
||||||
<Icon icon="icon-park-outline:like" />
|
<Icon icon="icon-park-outline:like" />
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
//TODO 背景颜色不对
|
//TODO 背景颜色不对
|
||||||
export default {
|
export default {
|
||||||
name: 'Search',
|
name: 'Search',
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
@ -16,7 +16,12 @@
|
|||||||
<dy-back mode="light" img="close" direction="right" @click.stop="closeShare"></dy-back>
|
<dy-back mode="light" img="close" direction="right" @click.stop="closeShare"></dy-back>
|
||||||
</div>
|
</div>
|
||||||
<div class="friends list">
|
<div class="friends list">
|
||||||
<div class="option" v-for="item in friends.all" @click.stop="toggleCall(item)">
|
<div
|
||||||
|
class="option"
|
||||||
|
:key="i"
|
||||||
|
v-for="(item, i) in friends.all"
|
||||||
|
@click.stop="toggleCall(item)"
|
||||||
|
>
|
||||||
<img
|
<img
|
||||||
:style="item.select ? 'opacity: .5;' : ''"
|
:style="item.select ? 'opacity: .5;' : ''"
|
||||||
class="avatar"
|
class="avatar"
|
||||||
@ -137,39 +142,48 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'pinia'
|
import { mapState } from 'pinia'
|
||||||
import Check from './Check'
|
|
||||||
import FromBottomDialog from './dialog/FromBottomDialog'
|
import FromBottomDialog from './dialog/FromBottomDialog'
|
||||||
import DouyinCode from './DouyinCode'
|
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
import { $no, _copy } from '@/utils'
|
import { $no, _copy } from '@/utils'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Share',
|
name: 'Share',
|
||||||
components: {
|
components: {
|
||||||
FromBottomDialog,
|
FromBottomDialog
|
||||||
Check,
|
|
||||||
DouyinCode
|
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
modelValue: false,
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
item: {},
|
item: {},
|
||||||
videoId: {
|
videoId: {
|
||||||
type: String,
|
type: String,
|
||||||
default: null
|
default() {
|
||||||
|
return null
|
||||||
|
}
|
||||||
},
|
},
|
||||||
pageId: {
|
pageId: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'home-index'
|
default() {
|
||||||
|
return 'home-index'
|
||||||
|
}
|
||||||
},
|
},
|
||||||
canDownload: {
|
canDownload: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
mode: {
|
mode: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'video'
|
default() {
|
||||||
//music
|
return 'video'
|
||||||
//qrcode
|
//music
|
||||||
|
//qrcode
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|||||||
@ -141,7 +141,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="other">
|
<div class="other">
|
||||||
<div class="scroll-x" @touchmove="stop">
|
<div class="scroll-x" @touchmove="stop">
|
||||||
<div class="item" v-for="item in props.currentItem.author.card_entries">
|
<div class="item" :key="i" v-for="(item, i) in props.currentItem.author.card_entries">
|
||||||
<img :src="_checkImgUrl(item.icon_dark.url_list[0])" alt="" />
|
<img :src="_checkImgUrl(item.icon_dark.url_list[0])" alt="" />
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="top">{{ item.title }}</div>
|
<div class="top">{{ item.title }}</div>
|
||||||
@ -157,6 +157,7 @@
|
|||||||
class="follow-wrapper"
|
class="follow-wrapper"
|
||||||
:class="props.currentItem.author.follow_status ? 'follow-wrapper-followed' : ''"
|
:class="props.currentItem.author.follow_status ? 'follow-wrapper-followed' : ''"
|
||||||
>
|
>
|
||||||
|
<!-- eslint-disable-next-line vue/no-mutating-props-->
|
||||||
<div class="no-follow" @click="props.currentItem.author.follow_status = 1">
|
<div class="no-follow" @click="props.currentItem.author.follow_status = 1">
|
||||||
<img src="@/assets/img/icon/add-white.png" alt="" />
|
<img src="@/assets/img/icon/add-white.png" alt="" />
|
||||||
<span>关注</span>
|
<span>关注</span>
|
||||||
@ -193,7 +194,7 @@
|
|||||||
<img src="@/assets/img/icon/about-gray.png" />
|
<img src="@/assets/img/icon/about-gray.png" />
|
||||||
</div>
|
</div>
|
||||||
<div class="friends" @touchmove="stop">
|
<div class="friends" @touchmove="stop">
|
||||||
<div class="friend" v-for="item in baseStore.friends.all">
|
<div class="friend" :key="i" v-for="(item, i) in baseStore.friends.all">
|
||||||
<img
|
<img
|
||||||
:style="item.select ? 'opacity: .5;' : ''"
|
:style="item.select ? 'opacity: .5;' : ''"
|
||||||
class="avatar"
|
class="avatar"
|
||||||
@ -238,9 +239,8 @@ import { useNav } from '@/utils/hooks/useNav'
|
|||||||
import Posters from '@/components/Posters'
|
import Posters from '@/components/Posters'
|
||||||
import { DefaultUser } from '@/utils/const_var'
|
import { DefaultUser } from '@/utils/const_var'
|
||||||
import Loading from '@/components/Loading.vue'
|
import Loading from '@/components/Loading.vue'
|
||||||
import { FILE_URL } from '@/config'
|
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
import { userinfo, userVideoList } from '@/api/user'
|
import { userVideoList } from '@/api/user'
|
||||||
|
|
||||||
const $nav = useNav()
|
const $nav = useNav()
|
||||||
const baseStore = useBaseStore()
|
const baseStore = useBaseStore()
|
||||||
@ -248,14 +248,18 @@ const emit = defineEmits(['update:currentItem', 'back'])
|
|||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
currentItem: {
|
currentItem: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: {
|
default() {
|
||||||
author: DefaultUser,
|
return {
|
||||||
aweme_list: []
|
author: DefaultUser,
|
||||||
|
aweme_list: []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
active: {
|
active: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const main = ref(null)
|
const main = ref(null)
|
||||||
@ -308,7 +312,7 @@ watch(
|
|||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => props.currentItem.author.uid,
|
() => props.currentItem.author.uid,
|
||||||
async (newVal) => {
|
async () => {
|
||||||
if (props.currentItem.author.uid !== state.uid) {
|
if (props.currentItem.author.uid !== state.uid) {
|
||||||
state.uid = props.currentItem.author.uid
|
state.uid = props.currentItem.author.uid
|
||||||
emit('update:currentItem', Object.assign(props.currentItem, { aweme_list: [] }))
|
emit('update:currentItem', Object.assign(props.currentItem, { aweme_list: [] }))
|
||||||
@ -322,9 +326,7 @@ function stop(e) {
|
|||||||
|
|
||||||
function followButton() {}
|
function followButton() {}
|
||||||
|
|
||||||
function back() {}
|
function scroll() {
|
||||||
|
|
||||||
function scroll(e) {
|
|
||||||
// console.log('scroll', page.value.scrollTop)
|
// console.log('scroll', page.value.scrollTop)
|
||||||
let scrollTop = page.value.scrollTop
|
let scrollTop = page.value.scrollTop
|
||||||
let totalY = total.value.getBoundingClientRect().y
|
let totalY = total.value.getBoundingClientRect().y
|
||||||
@ -366,7 +368,7 @@ function touchMove(e) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function touchEnd(e) {
|
function touchEnd() {
|
||||||
if (state.isTop) {
|
if (state.isTop) {
|
||||||
state.isTop = false
|
state.isTop = false
|
||||||
cover.value.style.transition = 'all .3s'
|
cover.value.style.transition = 'all .3s'
|
||||||
|
|||||||
@ -160,7 +160,7 @@ export default {
|
|||||||
this.$setCss(this.$refs.dialog, 'transform', `translate3d(0,${this.moveYDistance}px,0)`)
|
this.$setCss(this.$refs.dialog, 'transform', `translate3d(0,${this.moveYDistance}px,0)`)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
end(e) {
|
end() {
|
||||||
//点击
|
//点击
|
||||||
if (Date.now() - this.startTime < 150 && Math.abs(this.moveYDistance) < 30) {
|
if (Date.now() - this.startTime < 150 && Math.abs(this.moveYDistance) < 30) {
|
||||||
return
|
return
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="SelectDialog" @click="$emit('cancel')">
|
<div class="SelectDialog" @click="$emit('cancel')">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="item" v-for="item in list" @click.stop="$emit('ok', item)">
|
<div class="item" :key="i" v-for="(item, i) in list" @click.stop="$emit('ok', item)">
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -185,7 +185,7 @@ export default {
|
|||||||
this.currentTime = Math.ceil(e.target.currentTime)
|
this.currentTime = Math.ceil(e.target.currentTime)
|
||||||
this.playX = (this.currentTime - 1) * this.step
|
this.playX = (this.currentTime - 1) * this.step
|
||||||
}
|
}
|
||||||
video.addEventListener('loadedmetadata', (e) => {
|
video.addEventListener('loadedmetadata', () => {
|
||||||
this.videoScreenHeight = video.videoHeight / (video.videoWidth / this.width)
|
this.videoScreenHeight = video.videoHeight / (video.videoWidth / this.width)
|
||||||
this.duration = video.duration
|
this.duration = video.duration
|
||||||
this.progressBarRect = this.$refs.progress.getBoundingClientRect()
|
this.progressBarRect = this.$refs.progress.getBoundingClientRect()
|
||||||
@ -193,7 +193,7 @@ export default {
|
|||||||
video.addEventListener('timeupdate', fun)
|
video.addEventListener('timeupdate', fun)
|
||||||
})
|
})
|
||||||
|
|
||||||
let eventTester = (e, t) => {
|
let eventTester = (e) => {
|
||||||
video.addEventListener(
|
video.addEventListener(
|
||||||
e,
|
e,
|
||||||
() => {
|
() => {
|
||||||
@ -287,7 +287,7 @@ export default {
|
|||||||
this.commentVisible = true
|
this.commentVisible = true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onCloseComments(id) {
|
onCloseComments() {
|
||||||
if (this.commentVisible) {
|
if (this.commentVisible) {
|
||||||
Utils.$setCss(this.$refs.video, 'transition-duration', `300ms`)
|
Utils.$setCss(this.$refs.video, 'transition-duration', `300ms`)
|
||||||
Utils.$setCss(this.$refs.video, 'height', '100%')
|
Utils.$setCss(this.$refs.video, 'height', '100%')
|
||||||
|
|||||||
@ -63,7 +63,7 @@ export default {
|
|||||||
style={{
|
style={{
|
||||||
width: this.tabStyleWidth || 100 / this.tabTexts.length + '%'
|
width: this.tabStyleWidth || 100 / this.tabTexts.length + '%'
|
||||||
}}
|
}}
|
||||||
onClick={(e) => this.changeIndex(index)}
|
onClick={() => this.changeIndex(index)}
|
||||||
>
|
>
|
||||||
<span> {item}</span>
|
<span> {item}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -63,7 +63,7 @@ export default {
|
|||||||
style={{
|
style={{
|
||||||
width: this.tabStyleWidth || 100 / this.tabTexts.length + '%'
|
width: this.tabStyleWidth || 100 / this.tabTexts.length + '%'
|
||||||
}}
|
}}
|
||||||
onClick={(e) => this.changeIndex(index)}
|
onClick={( ) => this.changeIndex(index)}
|
||||||
>
|
>
|
||||||
<span> {item}</span>
|
<span> {item}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { reactive } from 'vue'
|
import { reactive } from 'vue'
|
||||||
import bus from '../../utils/bus'
|
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
item: {
|
item: {
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import BaseMusic from '../BaseMusic'
|
import BaseMusic from '../BaseMusic'
|
||||||
import Utils from '../../utils'
|
import Utils from '../../utils'
|
||||||
import { reactive } from 'vue'
|
|
||||||
import bus, { EVENT_KEY } from '@/utils/bus'
|
import bus, { EVENT_KEY } from '@/utils/bus'
|
||||||
import { Icon } from '@iconify/vue'
|
import { Icon } from '@iconify/vue'
|
||||||
|
|
||||||
@ -26,7 +25,6 @@ const props = defineProps({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
const emit = defineEmits(['update:item', 'goUserInfo', 'showComments', 'showShare', 'goMusic'])
|
const emit = defineEmits(['update:item', 'goUserInfo', 'showComments', 'showShare', 'goMusic'])
|
||||||
const state = reactive({})
|
|
||||||
|
|
||||||
function loved() {
|
function loved() {
|
||||||
Utils.updateItem(props, 'isLoved', !props.item.isLoved, emit)
|
Utils.updateItem(props, 'isLoved', !props.item.isLoved, emit)
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
@touchmove="touchMove"
|
@touchmove="touchMove"
|
||||||
@touchend="touchEnd"
|
@touchend="touchEnd"
|
||||||
>
|
>
|
||||||
<div class="img-slide-item" v-for="(img, index) in item.imgs">
|
<div class="img-slide-item" :key="index" v-for="(img, index) in item.imgs">
|
||||||
<img :ref="(e) => setItemRef(e, 'itemRefs')" :src="img + '&d=' + index" />
|
<img :ref="(e) => setItemRef(e, 'itemRefs')" :src="img + '&d=' + index" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -40,7 +40,7 @@
|
|||||||
@touchmove="progressBarTouchMove"
|
@touchmove="progressBarTouchMove"
|
||||||
@touchend="progressBarTouchMEnd"
|
@touchend="progressBarTouchMEnd"
|
||||||
>
|
>
|
||||||
<div class="bar" v-for="(img, index) in item.imgs">
|
<div class="bar" :key="index" v-for="(img, index) in item.imgs">
|
||||||
<div class="progress" :style="getWidth(index)"></div>
|
<div class="progress" :style="getWidth(index)"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -50,6 +50,7 @@
|
|||||||
<img
|
<img
|
||||||
:src="img + '&d=' + index"
|
:src="img + '&d=' + index"
|
||||||
:class="{ 'preview-img': index === state.localIndex }"
|
:class="{ 'preview-img': index === state.localIndex }"
|
||||||
|
:key="index"
|
||||||
v-for="(img, index) in props.item.imgs"
|
v-for="(img, index) in props.item.imgs"
|
||||||
:ref="(e) => setItemRef(e, 'previewImgs')"
|
:ref="(e) => setItemRef(e, 'previewImgs')"
|
||||||
/>
|
/>
|
||||||
@ -86,19 +87,19 @@
|
|||||||
|
|
||||||
<script setup lang="jsx">
|
<script setup lang="jsx">
|
||||||
import enums from '../../utils/enums'
|
import enums from '../../utils/enums'
|
||||||
import Utils, { $no, $notice } from '../../utils'
|
import Utils from '../../utils'
|
||||||
|
import GM, { $notice } from '../../utils'
|
||||||
import { mat4 } from 'gl-matrix'
|
import { mat4 } from 'gl-matrix'
|
||||||
import { Icon } from '@iconify/vue'
|
import { Icon } from '@iconify/vue'
|
||||||
import {
|
import {
|
||||||
onMounted,
|
nextTick,
|
||||||
onBeforeUpdate,
|
onBeforeUpdate,
|
||||||
|
onMounted,
|
||||||
|
onUnmounted,
|
||||||
|
provide,
|
||||||
reactive,
|
reactive,
|
||||||
ref,
|
ref,
|
||||||
watch,
|
watch
|
||||||
computed,
|
|
||||||
provide,
|
|
||||||
nextTick,
|
|
||||||
onUnmounted
|
|
||||||
} from 'vue'
|
} from 'vue'
|
||||||
import {
|
import {
|
||||||
getSlideDistance,
|
getSlideDistance,
|
||||||
@ -111,9 +112,9 @@ import {
|
|||||||
import { SlideAlbumOperationStatus, SlideItemPlayStatus, SlideType } from '../../utils/const_var'
|
import { SlideAlbumOperationStatus, SlideItemPlayStatus, SlideType } from '../../utils/const_var'
|
||||||
import ItemToolbar from './ItemToolbar'
|
import ItemToolbar from './ItemToolbar'
|
||||||
import ItemDesc from './ItemDesc'
|
import ItemDesc from './ItemDesc'
|
||||||
import GM from '../../utils'
|
|
||||||
import { cloneDeep } from '@/utils'
|
import { cloneDeep } from '@/utils'
|
||||||
import bus, { EVENT_KEY } from '../../utils/bus'
|
import bus, { EVENT_KEY } from '../../utils/bus'
|
||||||
|
import $ from 'jquery'
|
||||||
|
|
||||||
let out = new Float32Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
|
let out = new Float32Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
|
||||||
let ov = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])
|
let ov = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])
|
||||||
@ -348,7 +349,7 @@ onBeforeUpdate(() => {
|
|||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => state.localIndex,
|
() => state.localIndex,
|
||||||
(newVal) => {
|
() => {
|
||||||
GM.$setCss(wrapperEl.value, 'transition-duration', `300ms`)
|
GM.$setCss(wrapperEl.value, 'transition-duration', `300ms`)
|
||||||
GM.$setCss(
|
GM.$setCss(
|
||||||
wrapperEl.value,
|
wrapperEl.value,
|
||||||
@ -594,7 +595,7 @@ function setItemRef(el, key) {
|
|||||||
el && state[key].push(el)
|
el && state[key].push(el)
|
||||||
}
|
}
|
||||||
|
|
||||||
function canNext(isNext, e) {
|
function canNext(isNext) {
|
||||||
let res = !(
|
let res = !(
|
||||||
(state.localIndex === 0 && !isNext) ||
|
(state.localIndex === 0 && !isNext) ||
|
||||||
(state.localIndex === props.item.imgs.length - 1 && isNext)
|
(state.localIndex === props.item.imgs.length - 1 && isNext)
|
||||||
|
|||||||
@ -4,7 +4,8 @@
|
|||||||
<div
|
<div
|
||||||
class="bullet"
|
class="bullet"
|
||||||
:class="{ active: currentSlideItemIndex === item - 1 }"
|
:class="{ active: currentSlideItemIndex === item - 1 }"
|
||||||
v-for="item in slideItems.length"
|
:key="i"
|
||||||
|
v-for="(item, i) in slideItems.length"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -23,14 +24,11 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import bus from '../../utils/bus'
|
import bus from '../../utils/bus'
|
||||||
import Loading from '../Loading'
|
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'BaseSlideList',
|
name: 'BaseSlideList',
|
||||||
components: {
|
components: {},
|
||||||
Loading
|
|
||||||
},
|
|
||||||
props: {
|
props: {
|
||||||
canMove: {
|
canMove: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
@ -100,6 +98,7 @@ export default {
|
|||||||
transform: `translate3d(0, ${this.homeLoadingMoveYDistance > 60 ? 60 : this.homeLoadingMoveYDistance}px, 0)`
|
transform: `translate3d(0, ${this.homeLoadingMoveYDistance > 60 ? 60 : this.homeLoadingMoveYDistance}px, 0)`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@ -199,7 +198,7 @@ export default {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async checkChildren(init) {
|
async checkChildren() {
|
||||||
this.slideList = this.$refs.slideList
|
this.slideList = this.$refs.slideList
|
||||||
this.slideItems = this.slideList.children
|
this.slideItems = this.slideList.children
|
||||||
this.wrapperWidth = this.$getCss(this.slideList, 'width')
|
this.wrapperWidth = this.$getCss(this.slideList, 'width')
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
<div class="poster-wrapper">
|
<div class="poster-wrapper">
|
||||||
<div
|
<div
|
||||||
class="poster-item"
|
class="poster-item"
|
||||||
|
:key="index"
|
||||||
v-for="(i, index) in modelValue.videos.slice(0, 3)"
|
v-for="(i, index) in modelValue.videos.slice(0, 3)"
|
||||||
@click="globalMethods.$no"
|
@click="globalMethods.$no"
|
||||||
>
|
>
|
||||||
@ -36,14 +37,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Posters from '../Posters'
|
|
||||||
import globalMethods from '../../utils'
|
import globalMethods from '../../utils'
|
||||||
import BaseButton from '../BaseButton'
|
import BaseButton from '../BaseButton'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SlideUser',
|
name: 'SlideUser',
|
||||||
components: {
|
components: {
|
||||||
Posters,
|
|
||||||
BaseButton
|
BaseButton
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<script setup lang="jsx">
|
<script setup lang="jsx">
|
||||||
import { createApp, onMounted, reactive, ref, render, watch } from 'vue'
|
import { createApp, onMounted, reactive, ref, render as vueRender, watch } from 'vue'
|
||||||
import GM from '../../utils'
|
import GM from '../../utils'
|
||||||
import {
|
import {
|
||||||
getSlideDistance,
|
getSlideDistance,
|
||||||
@ -125,7 +125,7 @@ watch(
|
|||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => props.active,
|
() => props.active,
|
||||||
(newVal, oldVal) => {
|
(newVal) => {
|
||||||
if (newVal && !props.list.length) {
|
if (newVal && !props.list.length) {
|
||||||
return emit('refresh')
|
return emit('refresh')
|
||||||
}
|
}
|
||||||
@ -206,10 +206,10 @@ function getInsEl(item, index, play = false) {
|
|||||||
if (import.meta.env.PROD) {
|
if (import.meta.env.PROD) {
|
||||||
parent.classList.add('slide-item')
|
parent.classList.add('slide-item')
|
||||||
parent.setAttribute('data-index', index)
|
parent.setAttribute('data-index', index)
|
||||||
render(slideVNode, parent)
|
vueRender(slideVNode, parent)
|
||||||
appInsMap.set(index, {
|
appInsMap.set(index, {
|
||||||
unmount: () => {
|
unmount: () => {
|
||||||
render(null, parent)
|
vueRender(null, parent)
|
||||||
parent.remove()
|
parent.remove()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -1,12 +1,10 @@
|
|||||||
import resource from '../assets/data/resource.js'
|
import resource from '../assets/data/resource.js'
|
||||||
import posts6 from '@/assets/data/posts6.json'
|
import posts6 from '@/assets/data/posts6.json'
|
||||||
import { _copy, cloneDeep, random, sampleSize } from '@/utils'
|
import { cloneDeep, random } from '@/utils'
|
||||||
import { BASE_URL, FILE_URL } from '@/config'
|
import { BASE_URL, FILE_URL } from '@/config'
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
import axiosInstance from '@/utils/request'
|
import axiosInstance from '@/utils/request'
|
||||||
import MockAdapter from 'axios-mock-adapter'
|
import MockAdapter from 'axios-mock-adapter'
|
||||||
import Mock from 'mockjs'
|
|
||||||
import { panel } from '@/api/user'
|
|
||||||
|
|
||||||
const mock = new MockAdapter(axiosInstance, { delayResponse: 300 })
|
const mock = new MockAdapter(axiosInstance, { delayResponse: 300 })
|
||||||
|
|
||||||
@ -24,6 +22,7 @@ let allRecommendVideos = posts6.map((v) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// console.log('allRecommendVideos', allRecommendVideos)
|
// console.log('allRecommendVideos', allRecommendVideos)
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
let t = [
|
let t = [
|
||||||
{
|
{
|
||||||
type: 'imgs',
|
type: 'imgs',
|
||||||
@ -47,6 +46,7 @@ let t = [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
// allRecommendVideos.unshift(...t)
|
// allRecommendVideos.unshift(...t)
|
||||||
// {
|
// {
|
||||||
// type: 'user-imgs',
|
// type: 'user-imgs',
|
||||||
@ -210,7 +210,7 @@ export async function startMock() {
|
|||||||
]
|
]
|
||||||
})
|
})
|
||||||
|
|
||||||
mock.onGet(/user\/collect/).reply(async (config) => {
|
mock.onGet(/user\/collect/).reply(async () => {
|
||||||
return [
|
return [
|
||||||
200,
|
200,
|
||||||
{
|
{
|
||||||
@ -240,7 +240,7 @@ export async function startMock() {
|
|||||||
return [200, { code: 500 }]
|
return [200, { code: 500 }]
|
||||||
})
|
})
|
||||||
|
|
||||||
mock.onGet(/user\/panel/).reply(async (config) => {
|
mock.onGet(/user\/panel/).reply(async () => {
|
||||||
let r2 = await fetch(BASE_URL + '/data/users.json')
|
let r2 = await fetch(BASE_URL + '/data/users.json')
|
||||||
let v = await r2.json()
|
let v = await r2.json()
|
||||||
// let item = v.find(a => a.uid === '68310389333')
|
// let item = v.find(a => a.uid === '68310389333')
|
||||||
@ -252,7 +252,7 @@ export async function startMock() {
|
|||||||
return [200, { code: 500 }]
|
return [200, { code: 500 }]
|
||||||
})
|
})
|
||||||
|
|
||||||
mock.onGet(/user\/friends/).reply(async (config) => {
|
mock.onGet(/user\/friends/).reply(async () => {
|
||||||
let r2 = await fetch(BASE_URL + '/data/users.json')
|
let r2 = await fetch(BASE_URL + '/data/users.json')
|
||||||
let v = await r2.json()
|
let v = await r2.json()
|
||||||
return [200, { data: v, code: 200 }]
|
return [200, { data: v, code: 200 }]
|
||||||
|
|||||||
@ -68,7 +68,7 @@
|
|||||||
>欢迎来到直播间!抖音严禁未成年人直播或打赏,直接间内严禁出现违法违规、低俗色情、吸烟酗酒等内容。如主播在直播过程中以不当方式诱导打赏、私下交易,请谨慎判断,以防人身财产损失。请大家注意财产安全,谨防网络诈骗。</span
|
>欢迎来到直播间!抖音严禁未成年人直播或打赏,直接间内严禁出现违法违规、低俗色情、吸烟酗酒等内容。如主播在直播过程中以不当方式诱导打赏、私下交易,请谨慎判断,以防人身财产损失。请大家注意财产安全,谨防网络诈骗。</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div class="comment" v-for="i in list">
|
<div class="comment" :key="j" v-for="(i, j) in list">
|
||||||
<div class="level">
|
<div class="level">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<img src="../../assets/img/icon/home/level.webp" alt="" />
|
<img src="../../assets/img/icon/home/level.webp" alt="" />
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<!-- TODO 没有淡入淡出的特效-->
|
<!-- TODO 没有淡入淡出的特效-->
|
||||||
<template v-if="isFixed">
|
<template v-if="isFixed">
|
||||||
<img
|
<img
|
||||||
class="star"
|
class="star"
|
||||||
@ -110,7 +110,6 @@ import Share from '../../components/Share'
|
|||||||
import DouyinCode from '../../components/DouyinCode'
|
import DouyinCode from '../../components/DouyinCode'
|
||||||
import ConfirmDialog from '../../components/dialog/ConfirmDialog'
|
import ConfirmDialog from '../../components/dialog/ConfirmDialog'
|
||||||
import ShareToFriend from './components/ShareToFriend'
|
import ShareToFriend from './components/ShareToFriend'
|
||||||
import resource from '../../assets/data/resource'
|
|
||||||
import { myVideo } from '@/api/videos'
|
import { myVideo } from '@/api/videos'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@ -157,7 +156,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
shareType(newVal, oldVal) {
|
shareType(newVal) {
|
||||||
if (newVal === -1) return
|
if (newVal === -1) return
|
||||||
this.showSharePassword = true
|
this.showSharePassword = true
|
||||||
switch (newVal) {
|
switch (newVal) {
|
||||||
|
|||||||
@ -20,7 +20,12 @@
|
|||||||
<SlideHorizontal name="musicRankList" v-model:index="contentIndex">
|
<SlideHorizontal name="musicRankList" v-model:index="contentIndex">
|
||||||
<SlideItem>
|
<SlideItem>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="item" v-for="(item, index) in hotList" @click="togglePlay(item, hotList)">
|
<div
|
||||||
|
class="item"
|
||||||
|
:key="index"
|
||||||
|
v-for="(item, index) in hotList"
|
||||||
|
@click="togglePlay(item, hotList)"
|
||||||
|
>
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<div class="rank-wrapper">
|
<div class="rank-wrapper">
|
||||||
<img
|
<img
|
||||||
@ -108,7 +113,12 @@
|
|||||||
</SlideItem>
|
</SlideItem>
|
||||||
<SlideItem>
|
<SlideItem>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="item" v-for="(item, index) in hotList" @click="togglePlay(item, hotList)">
|
<div
|
||||||
|
class="item"
|
||||||
|
:key="index"
|
||||||
|
v-for="(item, index) in hotList"
|
||||||
|
@click="togglePlay(item, hotList)"
|
||||||
|
>
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<div class="rank-wrapper">
|
<div class="rank-wrapper">
|
||||||
<img
|
<img
|
||||||
@ -196,7 +206,12 @@
|
|||||||
</SlideItem>
|
</SlideItem>
|
||||||
<SlideItem>
|
<SlideItem>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="item" v-for="(item, index) in hotList" @click="togglePlay(item, hotList)">
|
<div
|
||||||
|
class="item"
|
||||||
|
:key="index"
|
||||||
|
v-for="(item, index) in hotList"
|
||||||
|
@click="togglePlay(item, hotList)"
|
||||||
|
>
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<div class="rank-wrapper">
|
<div class="rank-wrapper">
|
||||||
<img
|
<img
|
||||||
|
|||||||
@ -62,6 +62,7 @@ function getUserMedia(constrains, success, error) {
|
|||||||
navigator.webkitGetUserMedia(constrains).then(success).catch(error)
|
navigator.webkitGetUserMedia(constrains).then(success).catch(error)
|
||||||
} else if (navigator.mozGetUserMedia) {
|
} else if (navigator.mozGetUserMedia) {
|
||||||
//Firefox浏览器
|
//Firefox浏览器
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
navagator.mozGetUserMedia(constrains).then(success).catch(error)
|
navagator.mozGetUserMedia(constrains).then(success).catch(error)
|
||||||
} else if (navigator.getUserMedia) {
|
} else if (navigator.getUserMedia) {
|
||||||
//旧版API
|
//旧版API
|
||||||
|
|||||||
@ -2,11 +2,11 @@
|
|||||||
<div class="Search">
|
<div class="Search">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<dy-back mode="light" @click="$back" class="mr1r"></dy-back>
|
<dy-back mode="light" @click="$back" class="mr1r"></dy-back>
|
||||||
<BSearch placeholder="搜索用户名字/抖音号" :isShowRightText="true" @notice="$no"> </BSearch>
|
<BSearch placeholder="搜索用户名字/抖音号" :isShowRightText="true" @notice="$no"></BSearch>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="history">
|
<div class="history">
|
||||||
<div class="row" v-for="(item, index) in lHistory">
|
<div class="row" :key="index" v-for="(item, index) in lHistory">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img src="../../assets/img/icon/home/time-white.png" alt="" />
|
<img src="../../assets/img/icon/home/time-white.png" alt="" />
|
||||||
<span> {{ item }}</span>
|
<span> {{ item }}</span>
|
||||||
@ -26,7 +26,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="keys">
|
<div class="keys">
|
||||||
<div class="key" v-for="(item, index) in randomGuess">
|
<div class="key" :key="index" v-for="(item, index) in randomGuess">
|
||||||
<span class="desc">{{ item.name }}</span>
|
<span class="desc">{{ item.name }}</span>
|
||||||
<img
|
<img
|
||||||
v-if="item.type === 1"
|
v-if="item.type === 1"
|
||||||
@ -66,7 +66,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="l-row" v-for="(item, index) in hotRankList">
|
<div class="l-row" :key="index" v-for="(item, index) in hotRankList">
|
||||||
<div class="rank-wrapper">
|
<div class="rank-wrapper">
|
||||||
<img
|
<img
|
||||||
v-if="index === 0"
|
v-if="index === 0"
|
||||||
@ -112,7 +112,7 @@
|
|||||||
</SlideItem>
|
</SlideItem>
|
||||||
<SlideItem>
|
<SlideItem>
|
||||||
<div class="slide1" ref="slide1">
|
<div class="slide1" ref="slide1">
|
||||||
<div class="l-row" v-for="(item, index) in liveRankList">
|
<div class="l-row" :key="index" v-for="(item, index) in liveRankList">
|
||||||
<div class="rank-wrapper">
|
<div class="rank-wrapper">
|
||||||
<div class="rank" :class="{ top: index < 3 }">
|
<div class="rank" :class="{ top: index < 3 }">
|
||||||
{{ index + 1 }}
|
{{ index + 1 }}
|
||||||
@ -143,6 +143,7 @@
|
|||||||
<div class="slide2" ref="slide2">
|
<div class="slide2" ref="slide2">
|
||||||
<div
|
<div
|
||||||
class="l-row"
|
class="l-row"
|
||||||
|
:key="index"
|
||||||
v-for="(item, index) in musicRankList"
|
v-for="(item, index) in musicRankList"
|
||||||
@click="$nav('/home/music-rank-list')"
|
@click="$nav('/home/music-rank-list')"
|
||||||
>
|
>
|
||||||
@ -174,13 +175,14 @@
|
|||||||
<div
|
<div
|
||||||
class="brand"
|
class="brand"
|
||||||
@click="toggleKey(key)"
|
@click="toggleKey(key)"
|
||||||
|
:key="i"
|
||||||
:class="{ active: key === selectBrandKey }"
|
:class="{ active: key === selectBrandKey }"
|
||||||
v-for="key in Object.keys(brandRankList)"
|
v-for="(key, i) in Object.keys(brandRankList)"
|
||||||
>
|
>
|
||||||
{{ key }}
|
{{ key }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="l-row" v-for="(item, index) in selectBrandList">
|
<div class="l-row" :key="index" v-for="(item, index) in selectBrandList">
|
||||||
<div class="rank-wrapper">
|
<div class="rank-wrapper">
|
||||||
<div class="rank" :class="{ top: index < 3 }">
|
<div class="rank" :class="{ top: index < 3 }">
|
||||||
{{ index + 1 }}
|
{{ index + 1 }}
|
||||||
|
|||||||
@ -33,7 +33,7 @@
|
|||||||
<div class="text-num">{{ desc.length }}/200</div>
|
<div class="text-num">{{ desc.length }}/200</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="upload-photo">
|
<div class="upload-photo">
|
||||||
<div class="photo-wrapper" v-for="(item, index) in photos">
|
<div class="photo-wrapper" :key="index" v-for="(item, index) in photos">
|
||||||
<img class="photo" :src="item" alt="" />
|
<img class="photo" :src="item" alt="" />
|
||||||
<img
|
<img
|
||||||
class="close"
|
class="close"
|
||||||
|
|||||||
@ -91,13 +91,20 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
currentItem: {
|
currentItem: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: {
|
default() {
|
||||||
user: DefaultUser,
|
return {
|
||||||
isRequest: false,
|
user: DefaultUser,
|
||||||
post: []
|
isRequest: false,
|
||||||
|
post: []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
modelValue: false
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -55,13 +55,20 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
currentItem: {
|
currentItem: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: {
|
default() {
|
||||||
user: DefaultUser,
|
return {
|
||||||
isRequest: false,
|
user: DefaultUser,
|
||||||
post: []
|
isRequest: false,
|
||||||
|
post: []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
modelValue: false
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -63,7 +63,12 @@ export default {
|
|||||||
Loading
|
Loading
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
loading: false,
|
loading: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
//用于和slidList绑定,因为一个页面可能有多个slidList,但只有一个indicator组件
|
//用于和slidList绑定,因为一个页面可能有多个slidList,但只有一个indicator组件
|
||||||
name: {
|
name: {
|
||||||
type: String,
|
type: String,
|
||||||
@ -142,6 +147,7 @@ export default {
|
|||||||
transform: this.transform
|
transform: this.transform
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {},
|
created() {},
|
||||||
|
|||||||
@ -165,13 +165,18 @@ import Check from '../../../components/Check'
|
|||||||
export default {
|
export default {
|
||||||
name: 'Test',
|
name: 'Test',
|
||||||
props: {
|
props: {
|
||||||
modelValue: false
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
Check
|
Check
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
modelValue(newVal) {
|
modelValue() {
|
||||||
this.type1 = false
|
this.type1 = false
|
||||||
this.type2 = false
|
this.type2 = false
|
||||||
this.type3 = false
|
this.type3 = false
|
||||||
|
|||||||
@ -46,8 +46,8 @@
|
|||||||
发送视频到微博
|
发送视频到微博
|
||||||
</dy-button>
|
</dy-button>
|
||||||
<dy-button v-if="!showDownload" class="mt1r" type="white" @click="$no"
|
<dy-button v-if="!showDownload" class="mt1r" type="white" @click="$no"
|
||||||
>复制口令发给好友</dy-button
|
>复制口令发给好友
|
||||||
>
|
</dy-button>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-else>
|
<template v-else>
|
||||||
@ -96,7 +96,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div class="dialog-friends">
|
<div class="dialog-friends">
|
||||||
<div class="dialog-friend" v-for="item in localFriends.all" @click="share(item)">
|
<div
|
||||||
|
class="dialog-friend"
|
||||||
|
:key="i"
|
||||||
|
v-for="(item, i) in localFriends.all"
|
||||||
|
@click="share(item)"
|
||||||
|
>
|
||||||
<img :src="$imgPreview(item.avatar)" alt="" />
|
<img :src="$imgPreview(item.avatar)" alt="" />
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
@ -141,7 +146,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
type(newVal, oldVal) {
|
type(newVal) {
|
||||||
this.change(newVal)
|
this.change(newVal)
|
||||||
},
|
},
|
||||||
showShareDialog() {
|
showShareDialog() {
|
||||||
@ -203,7 +208,7 @@ export default {
|
|||||||
this.$emit('update:type', -1)
|
this.$emit('update:type', -1)
|
||||||
},
|
},
|
||||||
downloadVideo() {
|
downloadVideo() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve) => {
|
||||||
this.progress = 0
|
this.progress = 0
|
||||||
this.downloading = true
|
this.downloading = true
|
||||||
let time = setInterval(() => {
|
let time = setInterval(() => {
|
||||||
|
|||||||
@ -20,7 +20,12 @@
|
|||||||
/>
|
/>
|
||||||
<template v-if="searchKey">
|
<template v-if="searchKey">
|
||||||
<div class="friend-list" v-if="searchResult.length">
|
<div class="friend-list" v-if="searchResult.length">
|
||||||
<div class="friend-item" v-for="item in searchResult" @click="handleClick2(item)">
|
<div
|
||||||
|
class="friend-item"
|
||||||
|
:key="i"
|
||||||
|
v-for="(item, i) in searchResult"
|
||||||
|
@click="handleClick2(item)"
|
||||||
|
>
|
||||||
<img class="left" v-lazy="$imgPreview(item.avatar)" alt="" />
|
<img class="left" v-lazy="$imgPreview(item.avatar)" alt="" />
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="info">
|
<div class="info">
|
||||||
@ -54,7 +59,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="friend-list">
|
<div class="friend-list">
|
||||||
<div class="index">所有朋友</div>
|
<div class="index">所有朋友</div>
|
||||||
<div class="friend-item" v-for="item in localFriends">
|
<div class="friend-item" :key="i" v-for="(item, i) in localFriends">
|
||||||
<img class="left" v-lazy="$imgPreview(item.avatar)" alt="" />
|
<img class="left" v-lazy="$imgPreview(item.avatar)" alt="" />
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
@ -74,7 +79,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-list">
|
<div class="chat-list">
|
||||||
<div class="chat-item" v-for="item in localFriends">
|
<div class="chat-item" :key="i" v-for="(item, i) in localFriends">
|
||||||
<img class="left" v-lazy="$imgPreview(item.avatar)" alt="" />
|
<img class="left" v-lazy="$imgPreview(item.avatar)" alt="" />
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
@ -95,7 +100,6 @@
|
|||||||
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
||||||
import { mapState } from 'pinia'
|
import { mapState } from 'pinia'
|
||||||
import Search from '../../../components/Search'
|
import Search from '../../../components/Search'
|
||||||
import Check from '../../../components/Check'
|
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
/*
|
/*
|
||||||
分享给朋友
|
分享给朋友
|
||||||
@ -104,11 +108,15 @@ export default {
|
|||||||
name: 'ShareTo',
|
name: 'ShareTo',
|
||||||
components: {
|
components: {
|
||||||
FromBottomDialog,
|
FromBottomDialog,
|
||||||
Search,
|
Search
|
||||||
Check
|
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
modelValue: false,
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
pageId: {
|
pageId: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'home-index'
|
default: 'home-index'
|
||||||
|
|||||||
@ -54,7 +54,7 @@
|
|||||||
<to-share item-type="code" @click="$no" />
|
<to-share item-type="code" @click="$no" />
|
||||||
</div>
|
</div>
|
||||||
<div class="friends">
|
<div class="friends">
|
||||||
<div class="item" v-for="item in friends.all">
|
<div class="item" :key="i" v-for="(item, i) in friends.all">
|
||||||
<img class="left" v-lazy="$imgPreview(item.avatar)" alt="" />
|
<img class="left" v-lazy="$imgPreview(item.avatar)" alt="" />
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
@ -87,7 +87,6 @@ export default {
|
|||||||
name: 'Share',
|
name: 'Share',
|
||||||
components: {
|
components: {
|
||||||
FromBottomDialog,
|
FromBottomDialog,
|
||||||
LoadingCircle,
|
|
||||||
// DouyinCode,
|
// DouyinCode,
|
||||||
ToShare: {
|
ToShare: {
|
||||||
components: {
|
components: {
|
||||||
@ -200,7 +199,12 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
modelValue: false,
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
},
|
||||||
videoId: {
|
videoId: {
|
||||||
type: String,
|
type: String,
|
||||||
default: null
|
default: null
|
||||||
|
|||||||
@ -46,7 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="item avatar" @click="$no" v-for="i in 6">
|
<div class="item avatar" @click="$no" :key="i" v-for="i in 6">
|
||||||
<img
|
<img
|
||||||
src="https://img.tol.vip/avatar/WEIXIN/3aSuTGYTzjHvcHy0y0tH1eiShKRk9Sgd.jpg?_upt=de4a5c251709635127"
|
src="https://img.tol.vip/avatar/WEIXIN/3aSuTGYTzjHvcHy0y0tH1eiShKRk9Sgd.jpg?_upt=de4a5c251709635127"
|
||||||
/>
|
/>
|
||||||
@ -123,8 +123,8 @@
|
|||||||
<Slide4 :active="state.navIndex === 4 && state.baseIndex === 1" />
|
<Slide4 :active="state.navIndex === 4 && state.baseIndex === 1" />
|
||||||
</SlideHorizontal>
|
</SlideHorizontal>
|
||||||
|
|
||||||
<Footer v-bind:init-tab="1" />
|
<BaseFooter v-bind:init-tab="1" />
|
||||||
<Mask
|
<BaseMask
|
||||||
v-if="state.baseIndex === 0"
|
v-if="state.baseIndex === 0"
|
||||||
@click="state.baseIndex = 1"
|
@click="state.baseIndex = 1"
|
||||||
mode="white"
|
mode="white"
|
||||||
@ -278,25 +278,25 @@ function setCurrentItem(item) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
bus.on(EVENT_KEY.ENTER_FULLSCREEN, (e) => {
|
bus.on(EVENT_KEY.ENTER_FULLSCREEN, () => {
|
||||||
if (!state.active) return
|
if (!state.active) return
|
||||||
state.fullScreen = true
|
state.fullScreen = true
|
||||||
})
|
})
|
||||||
bus.on(EVENT_KEY.EXIT_FULLSCREEN, (e) => {
|
bus.on(EVENT_KEY.EXIT_FULLSCREEN, () => {
|
||||||
if (!state.active) return
|
if (!state.active) return
|
||||||
state.fullScreen = false
|
state.fullScreen = false
|
||||||
})
|
})
|
||||||
bus.on(EVENT_KEY.OPEN_COMMENTS, (e) => {
|
bus.on(EVENT_KEY.OPEN_COMMENTS, () => {
|
||||||
if (!state.active) return
|
if (!state.active) return
|
||||||
bus.emit(EVENT_KEY.ENTER_FULLSCREEN)
|
bus.emit(EVENT_KEY.ENTER_FULLSCREEN)
|
||||||
state.commentVisible = true
|
state.commentVisible = true
|
||||||
})
|
})
|
||||||
bus.on(EVENT_KEY.CLOSE_COMMENTS, (e) => {
|
bus.on(EVENT_KEY.CLOSE_COMMENTS, () => {
|
||||||
if (!state.active) return
|
if (!state.active) return
|
||||||
bus.emit(EVENT_KEY.EXIT_FULLSCREEN)
|
bus.emit(EVENT_KEY.EXIT_FULLSCREEN)
|
||||||
state.commentVisible = false
|
state.commentVisible = false
|
||||||
})
|
})
|
||||||
bus.on(EVENT_KEY.SHOW_SHARE, (e) => {
|
bus.on(EVENT_KEY.SHOW_SHARE, () => {
|
||||||
if (!state.active) return
|
if (!state.active) return
|
||||||
state.isSharing = true
|
state.isSharing = true
|
||||||
})
|
})
|
||||||
|
|||||||
@ -56,6 +56,7 @@ import ScrollList from '@/components/ScrollList.vue'
|
|||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
import AlbumDetail from '@/pages/other/AlbumDetail.vue'
|
import AlbumDetail from '@/pages/other/AlbumDetail.vue'
|
||||||
import Mock from 'mockjs'
|
import Mock from 'mockjs'
|
||||||
|
import $ from 'jquery'
|
||||||
|
|
||||||
//@click="nav('album-detail',{},item)"
|
//@click="nav('album-detail',{},item)"
|
||||||
|
|
||||||
|
|||||||
@ -1,23 +1,14 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { onMounted, reactive, ref, watch } from 'vue'
|
import { reactive, ref, watch } from 'vue'
|
||||||
import { _checkImgUrl, _duration, _formatNumber } from '@/utils'
|
import { _checkImgUrl, _duration, _formatNumber } from '@/utils'
|
||||||
import { recommendedVideo } from '@/api/videos'
|
import { recommendedVideo } from '@/api/videos'
|
||||||
import { useBaseStore } from '@/store/pinia'
|
|
||||||
import ScrollList from '@/components/ScrollList.vue'
|
import ScrollList from '@/components/ScrollList.vue'
|
||||||
import { useNav } from '@/utils/hooks/useNav'
|
import { useNav } from '@/utils/hooks/useNav'
|
||||||
|
|
||||||
const baseStore = useBaseStore()
|
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
active: Boolean
|
active: Boolean
|
||||||
})
|
})
|
||||||
|
|
||||||
const p = {
|
|
||||||
onShowComments() {
|
|
||||||
console.log('onShowComments')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const playingEl = ref()
|
const playingEl = ref()
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
show: false,
|
show: false,
|
||||||
@ -52,7 +43,7 @@ watch(
|
|||||||
const obList = []
|
const obList = []
|
||||||
|
|
||||||
const vIsCanPlay = {
|
const vIsCanPlay = {
|
||||||
mounted(el, binding, vnode, prevVnode) {
|
mounted(el) {
|
||||||
const observer = new IntersectionObserver(
|
const observer = new IntersectionObserver(
|
||||||
(entries) => {
|
(entries) => {
|
||||||
if (entries[0].isIntersecting) {
|
if (entries[0].isIntersecting) {
|
||||||
@ -76,7 +67,7 @@ const vIsCanPlay = {
|
|||||||
observer.observe(el)
|
observer.observe(el)
|
||||||
obList.push(observer)
|
obList.push(observer)
|
||||||
},
|
},
|
||||||
unmounted(el, binding, vnode, prevVnode) {
|
unmounted() {
|
||||||
obList.map((v) => {
|
obList.map((v) => {
|
||||||
v.disconnect()
|
v.disconnect()
|
||||||
})
|
})
|
||||||
@ -99,6 +90,7 @@ const nav = useNav()
|
|||||||
i % 9 === 0 ? '' : i % 2 === 1 && 'l',
|
i % 9 === 0 ? '' : i % 2 === 1 && 'l',
|
||||||
i % 9 === 0 ? '' : i % 2 === 0 && 'r'
|
i % 9 === 0 ? '' : i % 2 === 0 && 'r'
|
||||||
]"
|
]"
|
||||||
|
:key="i"
|
||||||
v-for="(item, i) in list"
|
v-for="(item, i) in list"
|
||||||
>
|
>
|
||||||
<div class="video-wrapper" v-if="i % 9 === 0">
|
<div class="video-wrapper" v-if="i % 9 === 0">
|
||||||
|
|||||||
@ -77,18 +77,11 @@ const props = defineProps({
|
|||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const emit = defineEmits(['update:item', 'goUserInfo', 'showComments', 'showShare', 'goMusic'])
|
|
||||||
|
|
||||||
function stop(e) {
|
function stop(e) {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
}
|
}
|
||||||
|
|
||||||
const p = {
|
|
||||||
onShowComments() {
|
|
||||||
console.log('onShowComments')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const subTypeRef = ref(null)
|
const subTypeRef = ref(null)
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
index: 0,
|
index: 0,
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
<SlideItem class="slide-item-class">
|
<SlideItem class="slide-item-class">
|
||||||
<div class="sub-type" :class="state.subTypeIsTop ? 'top' : ''" ref="subTypeRef">
|
<div class="sub-type" :class="state.subTypeIsTop ? 'top' : ''" ref="subTypeRef">
|
||||||
<div class="card" @touchmove.capture="stop">
|
<div class="card" @touchmove.capture="stop">
|
||||||
<div class="nav-item" v-for="i in store.users">
|
<div class="nav-item" :key="j" v-for="(i, j) in store.users">
|
||||||
<img :src="_checkImgUrl(i.avatar_168x168.url_list[0])" alt="" />
|
<img :src="_checkImgUrl(i.avatar_168x168.url_list[0])" alt="" />
|
||||||
<span>{{ i.nickname }}</span>
|
<span>{{ i.nickname }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -19,7 +19,6 @@
|
|||||||
import SlideVerticalInfinite from '@/components/slide/SlideVerticalInfinite.vue'
|
import SlideVerticalInfinite from '@/components/slide/SlideVerticalInfinite.vue'
|
||||||
import { onMounted, onUnmounted, reactive, ref } from 'vue'
|
import { onMounted, onUnmounted, reactive, ref } from 'vue'
|
||||||
import bus, { EVENT_KEY } from '@/utils/bus'
|
import bus, { EVENT_KEY } from '@/utils/bus'
|
||||||
import { $notice } from '@/utils'
|
|
||||||
import { useSlideListItemRender } from '@/utils/hooks/useSlideListItemRender'
|
import { useSlideListItemRender } from '@/utils/hooks/useSlideListItemRender'
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
|
|
||||||
@ -44,7 +43,9 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
list: {
|
list: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: []
|
default() {
|
||||||
|
return []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -94,15 +95,15 @@ async function getData(refresh = false) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function dislike() {
|
// function dislike() {
|
||||||
listRef.value.dislike(state.list[1])
|
// listRef.value.dislike(state.list[1])
|
||||||
state.list[state.index] = state.list[1]
|
// state.list[state.index] = state.list[1]
|
||||||
$notice('操作成功,将减少此类视频的推荐')
|
// $notice('操作成功,将减少此类视频的推荐')
|
||||||
}
|
// }
|
||||||
|
|
||||||
function end() {
|
// function end() {
|
||||||
// this.$notice('暂时没有更多了')
|
// // this.$notice('暂时没有更多了')
|
||||||
}
|
// }
|
||||||
|
|
||||||
function click(uniqueId) {
|
function click(uniqueId) {
|
||||||
if (uniqueId !== state.uniqueId) return
|
if (uniqueId !== state.uniqueId) return
|
||||||
|
|||||||
@ -14,7 +14,7 @@ export default {
|
|||||||
created() {},
|
created() {},
|
||||||
methods: {
|
methods: {
|
||||||
async check() {
|
async check() {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve) => {
|
||||||
if (this.isAgree) {
|
if (this.isAgree) {
|
||||||
resolve(true)
|
resolve(true)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -36,13 +36,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Check from '../../components/Check'
|
|
||||||
import LoginInput from './components/LoginInput'
|
import LoginInput from './components/LoginInput'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'VerificationCode',
|
name: 'VerificationCode',
|
||||||
components: {
|
components: {
|
||||||
Check,
|
|
||||||
LoginInput
|
LoginInput
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@ -68,8 +68,18 @@
|
|||||||
export default {
|
export default {
|
||||||
name: 'LoginInput',
|
name: 'LoginInput',
|
||||||
props: {
|
props: {
|
||||||
modelValue: '',
|
modelValue: {
|
||||||
placeholder: '',
|
type: String,
|
||||||
|
default() {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
placeholder: {
|
||||||
|
type: String,
|
||||||
|
default() {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
},
|
||||||
type: {
|
type: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'phone'
|
default: 'phone'
|
||||||
@ -102,7 +112,7 @@ export default {
|
|||||||
watch: {
|
watch: {
|
||||||
isSendVerificationCode: {
|
isSendVerificationCode: {
|
||||||
immediate: true,
|
immediate: true,
|
||||||
handler(newVal, oldVal) {
|
handler(newVal) {
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
this.verificationCodeBtnText = 60
|
this.verificationCodeBtnText = 60
|
||||||
let ticker = setInterval(() => {
|
let ticker = setInterval(() => {
|
||||||
|
|||||||
@ -51,11 +51,11 @@
|
|||||||
<div v-if="currentFixedIndicator" class="row no-active no-padding border index fixed">
|
<div v-if="currentFixedIndicator" class="row no-active no-padding border index fixed">
|
||||||
<span>{{ currentFixedIndicator }}</span>
|
<span>{{ currentFixedIndicator }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(value, name) of countryOk">
|
<div :key="name" v-for="(value, name) of countryOk">
|
||||||
<div :class="name" class="row no-active no-padding border index">
|
<div :class="name" class="row no-active no-padding border index">
|
||||||
<span>{{ name }}</span>
|
<span>{{ name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="row no-active no-padding border" v-for="item of value">
|
<div class="row no-active no-padding border" :key="i" v-for="(item, i) of value">
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -2366,8 +2366,8 @@ export default {
|
|||||||
render(currentIndex)
|
render(currentIndex)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
ul.addEventListener('touchend', function ($e) {
|
ul.addEventListener('touchend', function () {
|
||||||
items.forEach((el, index) => {
|
items.forEach((el) => {
|
||||||
el.style.transform = `translate3d(0,0,0) ${resetScale}`
|
el.style.transform = `translate3d(0,0,0) ${resetScale}`
|
||||||
el.style.color = resetColor
|
el.style.color = resetColor
|
||||||
})
|
})
|
||||||
|
|||||||
@ -115,7 +115,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="item" v-if="userinfo.province || userinfo.city">
|
<div class="item" v-if="userinfo.province || userinfo.city">
|
||||||
{{ userinfo.province }}
|
{{ userinfo.province }}
|
||||||
<template v-if="userinfo.province && userinfo.city"> - </template>
|
<template v-if="userinfo.province && userinfo.city"> -</template>
|
||||||
{{ userinfo.city }}
|
{{ userinfo.city }}
|
||||||
</div>
|
</div>
|
||||||
<div class="item" v-if="userinfo.school?.name">
|
<div class="item" v-if="userinfo.school?.name">
|
||||||
@ -220,7 +220,8 @@
|
|||||||
<div
|
<div
|
||||||
class="item"
|
class="item"
|
||||||
@click.stop="$nav('/home/music', i)"
|
@click.stop="$nav('/home/music', i)"
|
||||||
v-for="i in videos.collect.music.list.slice(0, 3)"
|
:key="j"
|
||||||
|
v-for="(i, j) in videos.collect.music.list.slice(0, 3)"
|
||||||
>
|
>
|
||||||
<img class="poster" :src="$imgPreview(i.cover)" alt="" />
|
<img class="poster" :src="$imgPreview(i.cover)" alt="" />
|
||||||
<div class="title">{{ i.name }}</div>
|
<div class="title">{{ i.name }}</div>
|
||||||
@ -233,7 +234,7 @@
|
|||||||
</SlideItem>
|
</SlideItem>
|
||||||
</SlideRowList>
|
</SlideRowList>
|
||||||
</div>
|
</div>
|
||||||
<Footer v-bind:init-tab="5" />
|
<BaseFooter v-bind:init-tab="5" />
|
||||||
<transition name="fade">
|
<transition name="fade">
|
||||||
<div class="mask" v-if="baseActiveIndex === 1" @click="baseActiveIndex = 0"></div>
|
<div class="mask" v-if="baseActiveIndex === 1" @click="baseActiveIndex = 0"></div>
|
||||||
</transition>
|
</transition>
|
||||||
@ -371,7 +372,6 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Posters from '../../components/Posters'
|
import Posters from '../../components/Posters'
|
||||||
import Footer from '../../components/Footer'
|
|
||||||
import Indicator from '../../components/slide/Indicator'
|
import Indicator from '../../components/slide/Indicator'
|
||||||
import { nextTick } from 'vue'
|
import { nextTick } from 'vue'
|
||||||
import { mapState } from 'pinia'
|
import { mapState } from 'pinia'
|
||||||
@ -379,14 +379,13 @@ import { mapState } from 'pinia'
|
|||||||
import bus from '../../utils/bus'
|
import bus from '../../utils/bus'
|
||||||
import ConfirmDialog from '../../components/dialog/ConfirmDialog'
|
import ConfirmDialog from '../../components/dialog/ConfirmDialog'
|
||||||
import { $no, _checkImgUrl, _formatNumber, _getUserDouyinId } from '@/utils'
|
import { $no, _checkImgUrl, _formatNumber, _getUserDouyinId } from '@/utils'
|
||||||
import SlideHorizontal from '@/components/slide/SlideHorizontal.vue'
|
|
||||||
import { likeVideo, myVideo, privateVideo } from '@/api/videos'
|
import { likeVideo, myVideo, privateVideo } from '@/api/videos'
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
import { userCollect } from '@/api/user'
|
import { userCollect } from '@/api/user'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Me',
|
name: 'Me',
|
||||||
components: { Posters, Footer, Indicator, ConfirmDialog, SlideHorizontal },
|
components: { Posters, Indicator, ConfirmDialog },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
previewImg: '',
|
previewImg: '',
|
||||||
@ -508,7 +507,7 @@ export default {
|
|||||||
async getScrollAreaHeight(index = this.contentIndex) {
|
async getScrollAreaHeight(index = this.contentIndex) {
|
||||||
let scrollAreaHeight = 0
|
let scrollAreaHeight = 0
|
||||||
if (index === 3) {
|
if (index === 3) {
|
||||||
await nextTick(async () => {
|
nextTick(async () => {
|
||||||
scrollAreaHeight = this.$refs.collect.clientHeight + 60 + 40
|
scrollAreaHeight = this.$refs.collect.clientHeight + 60 + 40
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
@ -638,7 +637,7 @@ export default {
|
|||||||
this.fixedLocationY = this.startLocationY = e.touches[0].pageY
|
this.fixedLocationY = this.startLocationY = e.touches[0].pageY
|
||||||
this.startTime = Date.now()
|
this.startTime = Date.now()
|
||||||
},
|
},
|
||||||
move(e) {
|
move() {
|
||||||
// (!this.isScroll) && e.preventDefault();
|
// (!this.isScroll) && e.preventDefault();
|
||||||
},
|
},
|
||||||
async scroll() {
|
async scroll() {
|
||||||
|
|||||||
@ -58,7 +58,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
shareType(newVal, oldVal) {
|
shareType(newVal) {
|
||||||
if (newVal === -1) return
|
if (newVal === -1) return
|
||||||
this.showSharePassword = true
|
this.showSharePassword = true
|
||||||
switch (newVal) {
|
switch (newVal) {
|
||||||
|
|||||||
@ -27,7 +27,12 @@
|
|||||||
<img class="menu" src="../../assets/img/icon/menu-white.png" alt="" />
|
<img class="menu" src="../../assets/img/icon/menu-white.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="collect-list">
|
<div class="collect-list">
|
||||||
<div class="item" v-for="(item, index) in collectMusic" @click="page2PlayMusic(item)">
|
<div
|
||||||
|
class="item"
|
||||||
|
:key="index"
|
||||||
|
v-for="(item, index) in collectMusic"
|
||||||
|
@click="page2PlayMusic(item)"
|
||||||
|
>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<div class="cover-wrapper">
|
<div class="cover-wrapper">
|
||||||
<img v-lazy="$imgPreview(item.cover)" alt="" class="cover" />
|
<img v-lazy="$imgPreview(item.cover)" alt="" class="cover" />
|
||||||
@ -60,6 +65,7 @@
|
|||||||
<div class="recommend-list">
|
<div class="recommend-list">
|
||||||
<div
|
<div
|
||||||
class="item"
|
class="item"
|
||||||
|
:key="index"
|
||||||
v-for="(item, index) in recommendMusic"
|
v-for="(item, index) in recommendMusic"
|
||||||
@click="page2PlayMusic(item)"
|
@click="page2PlayMusic(item)"
|
||||||
>
|
>
|
||||||
@ -150,9 +156,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { mapState } from 'pinia'
|
import { mapState } from 'pinia'
|
||||||
import Switches from '../message/components/swtich/switches'
|
import Switches from '../message/components/swtich/switches'
|
||||||
import SlideItemMusic from './components/SlideItemMusic'
|
|
||||||
import IndicatorLight from '../../components/slide/IndicatorLight'
|
import IndicatorLight from '../../components/slide/IndicatorLight'
|
||||||
import FromBottomDialog from '../../components/dialog/FromBottomDialog'
|
|
||||||
import GuessMusic from './components/GuessMusic'
|
import GuessMusic from './components/GuessMusic'
|
||||||
import CollectMusic from './components/CollectMusic'
|
import CollectMusic from './components/CollectMusic'
|
||||||
import Loading from '../../components/Loading'
|
import Loading from '../../components/Loading'
|
||||||
@ -163,9 +167,7 @@ import { useBaseStore } from '@/store/pinia'
|
|||||||
export default {
|
export default {
|
||||||
name: 'MyMusic',
|
name: 'MyMusic',
|
||||||
components: {
|
components: {
|
||||||
FromBottomDialog,
|
|
||||||
Switches,
|
Switches,
|
||||||
SlideItemMusic,
|
|
||||||
IndicatorLight,
|
IndicatorLight,
|
||||||
GuessMusic,
|
GuessMusic,
|
||||||
CollectMusic,
|
CollectMusic,
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="request">
|
<div class="request">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="item" v-for="item in friends.all">
|
<div class="item" :key="i" v-for="(item, i) in friends.all">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img :src="$imgPreview(item.avatar)" />
|
<img :src="$imgPreview(item.avatar)" />
|
||||||
<span class="name">{{ item.name }}</span>
|
<span class="name">{{ item.name }}</span>
|
||||||
@ -22,12 +22,11 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'pinia'
|
import { mapState } from 'pinia'
|
||||||
import FromBottomDialog from '../../components/dialog/FromBottomDialog'
|
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MyRequestUpdate',
|
name: 'MyRequestUpdate',
|
||||||
components: { FromBottomDialog },
|
components: {},
|
||||||
data() {
|
data() {
|
||||||
return {}
|
return {}
|
||||||
},
|
},
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
<!-- <div class="subtitle f12">上次发布作品:2020-08-01 上次开播:昨天23:12</div>-->
|
<!-- <div class="subtitle f12">上次发布作品:2020-08-01 上次开播:昨天23:12</div>-->
|
||||||
<div class="subtitle f12">历史求更新(粉丝送礼后7天未开播则退还礼物)</div>
|
<div class="subtitle f12">历史求更新(粉丝送礼后7天未开播则退还礼物)</div>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="item" v-for="item in friends.all">
|
<div class="item" :key="i" v-for="(item, i) in friends.all">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img :src="$imgPreview(item.avatar)" />
|
<img :src="$imgPreview(item.avatar)" />
|
||||||
<span class="name">{{ item.name }}</span>
|
<span class="name">{{ item.name }}</span>
|
||||||
|
|||||||
@ -7,7 +7,12 @@
|
|||||||
</BaseHeader>
|
</BaseHeader>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="item" v-for="(item, index) in list" @click="togglePlay(item, list)">
|
<div
|
||||||
|
class="item"
|
||||||
|
v-for="(item, index) in list"
|
||||||
|
:key="index"
|
||||||
|
@click="togglePlay(item, list)"
|
||||||
|
>
|
||||||
<div class="music">
|
<div class="music">
|
||||||
<div class="cover-wrapper">
|
<div class="cover-wrapper">
|
||||||
<img v-lazy="$imgPreview(item.cover)" alt="" class="cover" />
|
<img v-lazy="$imgPreview(item.cover)" alt="" class="cover" />
|
||||||
@ -103,7 +108,7 @@ export default {
|
|||||||
this.getData()
|
this.getData()
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.audio.addEventListener('loadedmetadata', (e) => {
|
this.audio.addEventListener('loadedmetadata', () => {
|
||||||
this.currentItem.duration = this.audio.duration
|
this.currentItem.duration = this.audio.duration
|
||||||
this.step = this.bodyWidth / Math.floor(this.audio.duration)
|
this.step = this.bodyWidth / Math.floor(this.audio.duration)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -15,7 +15,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import resource from '../../../assets/data/resource'
|
|
||||||
import Posters from '../../../components/Posters'
|
import Posters from '../../../components/Posters'
|
||||||
import Scroll from '../../../components/Scroll'
|
import Scroll from '../../../components/Scroll'
|
||||||
import { myVideo } from '@/api/videos'
|
import { myVideo } from '@/api/videos'
|
||||||
|
|||||||
@ -12,9 +12,10 @@
|
|||||||
@previous="previous"
|
@previous="previous"
|
||||||
@next="next"
|
@next="next"
|
||||||
@slideCanMove="(e) => (this.slideCanMove = e)"
|
@slideCanMove="(e) => (this.slideCanMove = e)"
|
||||||
v-model="list[index]"
|
:model-value="list[index]"
|
||||||
v-model:isLoop="isLoop"
|
v-model:isLoop="isLoop"
|
||||||
v-for="(item, index) in list"
|
v-for="(item, index) in list"
|
||||||
|
:key="index"
|
||||||
/>
|
/>
|
||||||
</SlideVertical>
|
</SlideVertical>
|
||||||
<from-bottom-dialog
|
<from-bottom-dialog
|
||||||
@ -37,9 +38,10 @@
|
|||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<div
|
<div
|
||||||
class="l-row"
|
class="l-row"
|
||||||
@click="play(index)"
|
|
||||||
:class="{ active: activeIndex === index }"
|
|
||||||
v-for="(item, index) in list"
|
v-for="(item, index) in list"
|
||||||
|
@click="play(index)"
|
||||||
|
:key="index"
|
||||||
|
:class="{ active: activeIndex === index }"
|
||||||
>
|
>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img
|
<img
|
||||||
@ -71,9 +73,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
||||||
import Switches from '../../message/components/swtich/switches'
|
|
||||||
import SlideItemMusic from './SlideItemMusic'
|
import SlideItemMusic from './SlideItemMusic'
|
||||||
import IndicatorLight from '../../../components/slide/IndicatorLight'
|
|
||||||
import Share from '../../../components/Share'
|
import Share from '../../../components/Share'
|
||||||
import ShareToFriend from '../../home/components/ShareToFriend'
|
import ShareToFriend from '../../home/components/ShareToFriend'
|
||||||
import SlideVertical from '@/components/slide/SlideVertical.vue'
|
import SlideVertical from '@/components/slide/SlideVertical.vue'
|
||||||
@ -83,16 +83,16 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
SlideVertical,
|
SlideVertical,
|
||||||
FromBottomDialog,
|
FromBottomDialog,
|
||||||
Switches,
|
|
||||||
SlideItemMusic,
|
SlideItemMusic,
|
||||||
IndicatorLight,
|
|
||||||
Share,
|
Share,
|
||||||
ShareToFriend
|
ShareToFriend
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
list: {
|
list: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: []
|
default() {
|
||||||
|
return []
|
||||||
|
}
|
||||||
},
|
},
|
||||||
page2SlideIndex: {
|
page2SlideIndex: {
|
||||||
type: Number,
|
type: Number,
|
||||||
@ -123,7 +123,7 @@ export default {
|
|||||||
},
|
},
|
||||||
created() {},
|
created() {},
|
||||||
watch: {
|
watch: {
|
||||||
activeIndex(newVal, oldVal) {
|
activeIndex(newVal) {
|
||||||
this.itemRefs.map((ref) => {
|
this.itemRefs.map((ref) => {
|
||||||
ref.togglePlay(false)
|
ref.togglePlay(false)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -12,8 +12,9 @@
|
|||||||
@previous="previous"
|
@previous="previous"
|
||||||
@next="next"
|
@next="next"
|
||||||
@slideCanMove="(e) => (this.slideCanMove = e)"
|
@slideCanMove="(e) => (this.slideCanMove = e)"
|
||||||
v-model="list[index]"
|
:model-value="list[index]"
|
||||||
v-model:isLoop="isLoop"
|
v-model:isLoop="isLoop"
|
||||||
|
:key="index"
|
||||||
v-for="(item, index) in list"
|
v-for="(item, index) in list"
|
||||||
/>
|
/>
|
||||||
</SlideVertical>
|
</SlideVertical>
|
||||||
@ -40,6 +41,7 @@
|
|||||||
@click="play(index)"
|
@click="play(index)"
|
||||||
:class="{ active: guessSlideIndex === index }"
|
:class="{ active: guessSlideIndex === index }"
|
||||||
v-for="(item, index) in list"
|
v-for="(item, index) in list"
|
||||||
|
:key="index"
|
||||||
>
|
>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img
|
<img
|
||||||
@ -71,9 +73,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
||||||
import Switches from '../../message/components/swtich/switches'
|
|
||||||
import SlideItemMusic from './SlideItemMusic'
|
import SlideItemMusic from './SlideItemMusic'
|
||||||
import IndicatorLight from '../../../components/slide/IndicatorLight'
|
|
||||||
import Share from '../../../components/Share'
|
import Share from '../../../components/Share'
|
||||||
import ShareToFriend from '../../home/components/ShareToFriend'
|
import ShareToFriend from '../../home/components/ShareToFriend'
|
||||||
import SlideVertical from '@/components/slide/SlideVertical.vue'
|
import SlideVertical from '@/components/slide/SlideVertical.vue'
|
||||||
@ -83,16 +83,16 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
SlideVertical,
|
SlideVertical,
|
||||||
FromBottomDialog,
|
FromBottomDialog,
|
||||||
Switches,
|
|
||||||
SlideItemMusic,
|
SlideItemMusic,
|
||||||
IndicatorLight,
|
|
||||||
Share,
|
Share,
|
||||||
ShareToFriend
|
ShareToFriend
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
list: {
|
list: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: []
|
default() {
|
||||||
|
return []
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@ -108,7 +108,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
guessSlideIndex(newVal, oldVal) {
|
guessSlideIndex(newVal) {
|
||||||
this.itemRefs.map((ref) => {
|
this.itemRefs.map((ref) => {
|
||||||
ref.togglePlay(false)
|
ref.togglePlay(false)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="lyrics-wrapper" ref="lyrics-wrapper" @click="isFullLyrics = true">
|
<div class="lyrics-wrapper" ref="lyrics-wrapper" @click="isFullLyrics = true">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="lyrics" v-for="item in lyricsFullTexts">{{ item.c }}</div>
|
<div class="lyrics" :key="i" v-for="(item, i) in lyricsFullTexts">{{ item.c }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="lyrics-mask" @click="isFullLyrics = true"></div>-->
|
<!-- <div class="lyrics-mask" @click="isFullLyrics = true"></div>-->
|
||||||
@ -18,7 +18,7 @@
|
|||||||
@touchmove="$emit('slideCanMove', false)"
|
@touchmove="$emit('slideCanMove', false)"
|
||||||
@touchend="$emit('slideCanMove', true)"
|
@touchend="$emit('slideCanMove', true)"
|
||||||
>
|
>
|
||||||
<div class="item" v-for="item in lyricsFullTexts">{{ item.c }}</div>
|
<div class="item" :key="i" v-for="(item, i) in lyricsFullTexts">{{ item.c }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
@ -139,10 +139,11 @@ export default {
|
|||||||
created() {},
|
created() {},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.audio.src = this.modelValue.mp3
|
this.audio.src = this.modelValue.mp3
|
||||||
|
// eslint-disable-next-line no-undef
|
||||||
if (process.env.NODE_ENV === 'development') {
|
if (process.env.NODE_ENV === 'development') {
|
||||||
this.audio.volume = 0.2
|
this.audio.volume = 0.2
|
||||||
}
|
}
|
||||||
this.audio.addEventListener('loadedmetadata', (e) => {
|
this.audio.addEventListener('loadedmetadata', () => {
|
||||||
this.duration = this.audio.duration
|
this.duration = this.audio.duration
|
||||||
this.slideBarWidth = this.$refs.slideBar.clientWidth
|
this.slideBarWidth = this.$refs.slideBar.clientWidth
|
||||||
this.step = this.slideBarWidth / Math.floor(this.duration)
|
this.step = this.slideBarWidth / Math.floor(this.duration)
|
||||||
@ -180,8 +181,8 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.audio.addEventListener('play', (e) => (this.isPlay = true))
|
this.audio.addEventListener('play', () => (this.isPlay = true))
|
||||||
this.audio.addEventListener('ended', (e) => {
|
this.audio.addEventListener('ended', () => {
|
||||||
if (this.isLoop) {
|
if (this.isLoop) {
|
||||||
this.lastPageX = 0
|
this.lastPageX = 0
|
||||||
this.audio.currentTime = 0
|
this.audio.currentTime = 0
|
||||||
|
|||||||
@ -103,6 +103,7 @@ export default {
|
|||||||
if (this.localSchool.displayType === enums.DISPLAY_TYPE.ALL) return '公开可见'
|
if (this.localSchool.displayType === enums.DISPLAY_TYPE.ALL) return '公开可见'
|
||||||
if (this.localSchool.displayType === enums.DISPLAY_TYPE.SCHOOL) return '校友可见'
|
if (this.localSchool.displayType === enums.DISPLAY_TYPE.SCHOOL) return '校友可见'
|
||||||
if (this.localSchool.displayType === enums.DISPLAY_TYPE.ME) return '仅自己可见'
|
if (this.localSchool.displayType === enums.DISPLAY_TYPE.ME) return '仅自己可见'
|
||||||
|
return ''
|
||||||
},
|
},
|
||||||
school() {
|
school() {
|
||||||
return this.userinfo.school
|
return this.userinfo.school
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
</BaseHeader>
|
</BaseHeader>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="schools">
|
<div class="schools">
|
||||||
<div class="row" @click="save(item)" v-for="item in list">
|
<div class="row" @click="save(item)" :key="i" v-for="(item, i) in list">
|
||||||
<span>{{ item }}</span>
|
<span>{{ item }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -56,7 +56,7 @@ export default {
|
|||||||
...mapState(useBaseStore, ['userinfo'])
|
...mapState(useBaseStore, ['userinfo'])
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async save(item) {
|
async save() {
|
||||||
this.$showLoading()
|
this.$showLoading()
|
||||||
let data = { ...this.userinfo, ...{ location: '中国-四川-成都' } }
|
let data = { ...this.userinfo, ...{ location: '中国-四川-成都' } }
|
||||||
this.baseStore.setUserinfo(data)
|
this.baseStore.setUserinfo(data)
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
</BaseHeader>
|
</BaseHeader>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="nearby">
|
<div class="nearby">
|
||||||
<div class="item" v-for="item in departments" @click="setDepartment(item)">
|
<div class="item" :key="i" v-for="(item, i) in departments" @click="setDepartment(item)">
|
||||||
{{ item }}
|
{{ item }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -19,13 +19,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Search from '../../../components/Search'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ChooseSchool',
|
name: 'ChooseSchool',
|
||||||
components: {
|
components: {},
|
||||||
Search
|
|
||||||
},
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
departments: [],
|
departments: [],
|
||||||
|
|||||||
@ -26,11 +26,11 @@
|
|||||||
<dy-back scale=".8" direction="right"></dy-back>
|
<dy-back scale=".8" direction="right"></dy-back>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-for="(value, name) of countryOk">
|
<div :key="name" v-for="(value, name) of countryOk">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<span>{{ name }}</span>
|
<span>{{ name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="row" v-for="item of value">
|
<div class="row" :key="i" v-for="(item, i) of value">
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -1197,7 +1197,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
async save(item) {
|
async save() {
|
||||||
this.$showLoading()
|
this.$showLoading()
|
||||||
let data = { ...this.userinfo, ...{ location: '暂不设置' } }
|
let data = { ...this.userinfo, ...{ location: '暂不设置' } }
|
||||||
this.baseStore.setUserinfo(data)
|
this.baseStore.setUserinfo(data)
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
</BaseHeader>
|
</BaseHeader>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="schools">
|
<div class="schools">
|
||||||
<div class="row" @click="$nav('/me/choose-city')" v-for="item in list">
|
<div class="row" @click="$nav('/me/choose-city')" :key="i" v-for="(item, i) in list">
|
||||||
<span>{{ item }}</span>
|
<span>{{ item }}</span>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<dy-back scale=".8" direction="right"></dy-back>
|
<dy-back scale=".8" direction="right"></dy-back>
|
||||||
|
|||||||
@ -24,31 +24,30 @@
|
|||||||
<img src="../../../assets/img/icon/location.svg" alt="" />
|
<img src="../../../assets/img/icon/location.svg" alt="" />
|
||||||
<span>离我最近</span>
|
<span>离我最近</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="nearby.length" class="item" v-for="item in nearby" @click="setSchool(item)">
|
<template v-if="nearby.length">
|
||||||
{{ item }}
|
<div class="item" :key="i" v-for="(item, i) in nearby" @click="setSchool(item)">
|
||||||
</div>
|
{{ item }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
<div v-else class="item">无法获取</div>
|
<div v-else class="item">无法获取</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="line" style="width: calc(100% - 40rem); margin-left: 20rem"></div>
|
<div class="line" style="width: calc(100% - 40rem); margin-left: 20rem"></div>
|
||||||
<div class="schools" v-if="!isSearch">
|
<div class="schools" v-if="!isSearch">
|
||||||
<div class="item" v-for="item in schools" @click="setSchool(item)">
|
<div class="item" :key="i" v-for="(item, i) in schools" @click="setSchool(item)">
|
||||||
{{ item }}
|
{{ item }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="isSearch">
|
<div v-if="isSearch">
|
||||||
<div
|
<template v-if="searchSchools.length">
|
||||||
v-if="searchSchools.length"
|
<div class="item" :key="i" v-for="(item, i) in searchSchools" @click="setSchool(item)">
|
||||||
class="item"
|
<span v-if="item.indexOf(schoolName) > -1">
|
||||||
v-for="item in searchSchools"
|
{{ item.substr(0, item.indexOf(schoolName)) }}
|
||||||
@click="setSchool(item)"
|
<span style="color: #f50">{{ schoolName }}</span>
|
||||||
>
|
{{ item.substr(item.indexOf(schoolName) + schoolName.length) }}
|
||||||
<span v-if="item.indexOf(schoolName) > -1">
|
</span>
|
||||||
{{ item.substr(0, item.indexOf(schoolName)) }}
|
<span v-else>{{ item }}</span>
|
||||||
<span style="color: #f50">{{ schoolName }}</span>
|
</div>
|
||||||
{{ item.substr(item.indexOf(schoolName) + schoolName.length) }}
|
</template>
|
||||||
</span>
|
|
||||||
<span v-else>{{ item }}</span>
|
|
||||||
</div>
|
|
||||||
<div v-else class="empty">
|
<div v-else class="empty">
|
||||||
<img src="../../../assets/img/icon/head-image.jpeg" alt="" />
|
<img src="../../../assets/img/icon/head-image.jpeg" alt="" />
|
||||||
<div class="title">搜索结果为空</div>
|
<div class="title">搜索结果为空</div>
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
//TODO 院系点击那个弹窗没做
|
//TODO 院系点击那个弹窗没做
|
||||||
export default {
|
export default {
|
||||||
name: 'DeclareSchool',
|
name: 'DeclareSchool',
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@ -71,7 +71,7 @@
|
|||||||
<img v-lazy="_checkImgUrl(userinfo.cover_url[0].url_list[0])" alt="" class="poster" />
|
<img v-lazy="_checkImgUrl(userinfo.cover_url[0].url_list[0])" alt="" class="poster" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="message" v-for="item in showMessageList" @click="$no">
|
<div class="message" :key="i" v-for="(item, i) in showMessageList" @click="$no">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img v-lazy="$imgPreview(item.author.avatar)" alt="" class="avatar" />
|
<img v-lazy="$imgPreview(item.author.avatar)" alt="" class="avatar" />
|
||||||
<img
|
<img
|
||||||
@ -134,7 +134,6 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from 'pinia'
|
import { mapState } from 'pinia'
|
||||||
import People from '../people/components/People'
|
|
||||||
import Scroll from '../../components/Scroll'
|
import Scroll from '../../components/Scroll'
|
||||||
import Loading from '../../components/Loading'
|
import Loading from '../../components/Loading'
|
||||||
import Peoples from '../people/components/Peoples'
|
import Peoples from '../people/components/Peoples'
|
||||||
@ -148,7 +147,6 @@ export default {
|
|||||||
name: 'AllMessage',
|
name: 'AllMessage',
|
||||||
components: {
|
components: {
|
||||||
Scroll,
|
Scroll,
|
||||||
People,
|
|
||||||
Loading,
|
Loading,
|
||||||
Peoples
|
Peoples
|
||||||
},
|
},
|
||||||
@ -175,6 +173,8 @@ export default {
|
|||||||
return '@我的'
|
return '@我的'
|
||||||
case 4:
|
case 4:
|
||||||
return '评论'
|
return '评论'
|
||||||
|
default:
|
||||||
|
return ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
showMessageList() {
|
showMessageList() {
|
||||||
|
|||||||
@ -14,7 +14,12 @@
|
|||||||
</BaseHeader>
|
</BaseHeader>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="local-row" v-for="item of friends.all" @click="toggleSelect(item)">
|
<div
|
||||||
|
class="local-row"
|
||||||
|
:key="i"
|
||||||
|
v-for="(item, i) of friends.all"
|
||||||
|
@click="toggleSelect(item)"
|
||||||
|
>
|
||||||
<Check mode="red" v-model="item.select" />
|
<Check mode="red" v-model="item.select" />
|
||||||
<img :src="$imgPreview(item.avatar)" alt="" />
|
<img :src="$imgPreview(item.avatar)" alt="" />
|
||||||
<div class="desc">
|
<div class="desc">
|
||||||
@ -30,13 +35,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Search from '../../components/Search'
|
|
||||||
import Check from '../../components/Check'
|
import Check from '../../components/Check'
|
||||||
import { friends } from '@/api/user'
|
import { friends } from '@/api/user'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Share2Friend',
|
name: 'Share2Friend',
|
||||||
components: { Search, Check },
|
components: { Check },
|
||||||
props: {},
|
props: {},
|
||||||
computed: {
|
computed: {
|
||||||
// ...mapState(['friends']),
|
// ...mapState(['friends']),
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
<div
|
<div
|
||||||
class="friend pr1r pl1r"
|
class="friend pr1r pl1r"
|
||||||
@click="$nav('/message/chat')"
|
@click="$nav('/message/chat')"
|
||||||
|
:key="index"
|
||||||
v-for="(item, index) in friends.all"
|
v-for="(item, index) in friends.all"
|
||||||
>
|
>
|
||||||
<div class="avatar" :class="index % 2 === 0 ? 'on-line' : ''">
|
<div class="avatar" :class="index % 2 === 0 ? 'on-line' : ''">
|
||||||
@ -260,7 +261,8 @@
|
|||||||
<div class="search-result" v-if="searchFriends.length">
|
<div class="search-result" v-if="searchFriends.length">
|
||||||
<div
|
<div
|
||||||
class="search-result-item"
|
class="search-result-item"
|
||||||
v-for="item in searchFriends"
|
:key="i"
|
||||||
|
v-for="(item, i) in searchFriends"
|
||||||
@click="handleClick(item)"
|
@click="handleClick(item)"
|
||||||
>
|
>
|
||||||
<img class="left" src="../../assets/img/icon/head-image.jpeg" alt="" />
|
<img class="left" src="../../assets/img/icon/head-image.jpeg" alt="" />
|
||||||
@ -295,7 +297,8 @@
|
|||||||
<div class="index">Z</div>
|
<div class="index">Z</div>
|
||||||
<div
|
<div
|
||||||
class="friend-item"
|
class="friend-item"
|
||||||
v-for="item in friends.all"
|
:key="i"
|
||||||
|
v-for="(item, i) in friends.all"
|
||||||
@click="item.select = !item.select"
|
@click="item.select = !item.select"
|
||||||
>
|
>
|
||||||
<img class="left" :src="$imgPreview(item.avatar)" alt="" />
|
<img class="left" :src="$imgPreview(item.avatar)" alt="" />
|
||||||
@ -318,7 +321,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="chat-list">
|
<div class="chat-list">
|
||||||
<div class="chat-item" v-for="item in 15">
|
<div class="chat-item" :key="i" v-for="(item, i) in 15">
|
||||||
<img class="left" src="../../assets/img/icon/head-image.jpeg" alt="" />
|
<img class="left" src="../../assets/img/icon/head-image.jpeg" alt="" />
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
@ -362,10 +365,10 @@
|
|||||||
</Scroll>
|
</Scroll>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Mask />
|
<BaseMask />
|
||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
<Footer v-bind:init-tab="4" />
|
<BaseFooter v-bind:init-tab="4" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="searching" v-show="searching">
|
<div class="searching" v-show="searching">
|
||||||
@ -390,7 +393,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<People
|
<People
|
||||||
v-for="(item, index) in searchFriendsAll.slice(0, 3)"
|
v-for="item in searchFriendsAll.slice(0, 3)"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
mode="search"
|
mode="search"
|
||||||
:searchKey="searchKey"
|
:searchKey="searchKey"
|
||||||
@ -411,7 +414,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<div class="sub-title">更多聊天</div>
|
<div class="sub-title">更多聊天</div>
|
||||||
<People v-for="(item, index) in moreChat" :key="item.id" :people="item" />
|
<People v-for="item in moreChat" :key="item.id" :people="item" />
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -419,13 +422,11 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import Footer from '../../components/Footer.vue'
|
|
||||||
import Search from '../../components/Search'
|
import Search from '../../components/Search'
|
||||||
import FromBottomDialog from '../../components/dialog/FromBottomDialog'
|
import FromBottomDialog from '../../components/dialog/FromBottomDialog'
|
||||||
import Check from '../../components/Check'
|
import Check from '../../components/Check'
|
||||||
import { mapState } from 'pinia'
|
import { mapState } from 'pinia'
|
||||||
import Peoples from '../people/components/Peoples'
|
import Peoples from '../people/components/Peoples'
|
||||||
import Mask from '../../components/Mask'
|
|
||||||
import Scroll from '../../components/Scroll'
|
import Scroll from '../../components/Scroll'
|
||||||
import People from '../people/components/People'
|
import People from '../people/components/People'
|
||||||
import BasePage from '../BasePage'
|
import BasePage from '../BasePage'
|
||||||
@ -436,8 +437,6 @@ export default {
|
|||||||
name: 'Message',
|
name: 'Message',
|
||||||
components: {
|
components: {
|
||||||
Scroll,
|
Scroll,
|
||||||
Mask,
|
|
||||||
Footer,
|
|
||||||
Search,
|
Search,
|
||||||
FromBottomDialog,
|
FromBottomDialog,
|
||||||
Check,
|
Check,
|
||||||
@ -474,7 +473,7 @@ export default {
|
|||||||
watch: {
|
watch: {
|
||||||
createChatSearchKey(newVal) {
|
createChatSearchKey(newVal) {
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
//TODO 搜索时仅仅判断是否包含了对应字符串,抖音做了拼音判断的
|
//TODO 搜索时仅仅判断是否包含了对应字符串,抖音做了拼音判断的
|
||||||
this.searchFriends = this.friends.all.filter((v) => {
|
this.searchFriends = this.friends.all.filter((v) => {
|
||||||
if (v.name.includes(newVal)) return true
|
if (v.name.includes(newVal)) return true
|
||||||
return v.account.includes(newVal)
|
return v.account.includes(newVal)
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
:isShowRightText="true"
|
:isShowRightText="true"
|
||||||
/>
|
/>
|
||||||
<People
|
<People
|
||||||
v-for="(item, index) in searchFriendsAll"
|
v-for="item in searchFriendsAll"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
mode="search"
|
mode="search"
|
||||||
:searchKey="searchKey"
|
:searchKey="searchKey"
|
||||||
|
|||||||
@ -27,7 +27,12 @@ export default {
|
|||||||
name: 'RedPacketDetail',
|
name: 'RedPacketDetail',
|
||||||
components: {},
|
components: {},
|
||||||
props: {
|
props: {
|
||||||
modelValue: false
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {}
|
return {}
|
||||||
|
|||||||
@ -10,7 +10,8 @@
|
|||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<img
|
<img
|
||||||
:src="$imgPreview(item.avatar)"
|
:src="$imgPreview(item.avatar)"
|
||||||
v-for="item in selectFriends"
|
:key="i"
|
||||||
|
v-for="(item, i) in selectFriends"
|
||||||
@click="toggleSelect(item)"
|
@click="toggleSelect(item)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -37,7 +38,12 @@
|
|||||||
v-show="searchKey"
|
v-show="searchKey"
|
||||||
>
|
>
|
||||||
<div class="list" v-if="searchResult.length">
|
<div class="list" v-if="searchResult.length">
|
||||||
<div class="local-row" v-for="item of searchResult" @click="handleClick(item)">
|
<div
|
||||||
|
class="local-row"
|
||||||
|
:key="i"
|
||||||
|
v-for="(item, i) of searchResult"
|
||||||
|
@click="handleClick(item)"
|
||||||
|
>
|
||||||
<Check mode="red" v-model="item.select" />
|
<Check mode="red" v-model="item.select" />
|
||||||
<img :src="$imgPreview(item.avatar)" alt="" />
|
<img :src="$imgPreview(item.avatar)" alt="" />
|
||||||
<div class="desc">
|
<div class="desc">
|
||||||
@ -79,23 +85,33 @@
|
|||||||
<dy-back :scale="0.7" direction="right"></dy-back>
|
<dy-back :scale="0.7" direction="right"></dy-back>
|
||||||
</div>
|
</div>
|
||||||
<div class="title">最近聊天</div>
|
<div class="title">最近聊天</div>
|
||||||
<div class="local-row" v-for="item of friends.recent" @click="toggleSelect(item)">
|
<div
|
||||||
|
class="local-row"
|
||||||
|
:key="i"
|
||||||
|
v-for="(item, i) of friends.recent"
|
||||||
|
@click="toggleSelect(item)"
|
||||||
|
>
|
||||||
<Check mode="red" v-model="item.select" />
|
<Check mode="red" v-model="item.select" />
|
||||||
<img :src="$imgPreview(item.avatar)" alt="" />
|
<img :src="$imgPreview(item.avatar)" alt="" />
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="title">互关好友</div>
|
<div class="title">互关好友</div>
|
||||||
<div class="local-row" v-for="item of friends.eachOther" @click="toggleSelect(item)">
|
<div
|
||||||
|
class="local-row"
|
||||||
|
:key="i"
|
||||||
|
v-for="(item, i) of friends.eachOther"
|
||||||
|
@click="toggleSelect(item)"
|
||||||
|
>
|
||||||
<Check mode="red" v-model="item.select" />
|
<Check mode="red" v-model="item.select" />
|
||||||
<img :src="$imgPreview(item.avatar)" alt="" />
|
<img :src="$imgPreview(item.avatar)" alt="" />
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="title">全部</div>
|
<div class="title">全部</div>
|
||||||
<div v-for="(value, name) of friendsSort">
|
<div :key="name" v-for="(value, name) of friendsSort">
|
||||||
<div :class="name === '#' ? 'top' : name" class="title">
|
<div :class="name === '#' ? 'top' : name" class="title">
|
||||||
<span>{{ name }}</span>
|
<span>{{ name }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="local-row" v-for="item of value" @click="toggleSelect(item)">
|
<div class="local-row" :key="i" v-for="(item, i) of value" @click="toggleSelect(item)">
|
||||||
<Check mode="red" v-model="item.select" />
|
<Check mode="red" v-model="item.select" />
|
||||||
<img :src="$imgPreview(item.avatar)" alt="" />
|
<img :src="$imgPreview(item.avatar)" alt="" />
|
||||||
<span>{{ item.name }}</span>
|
<span>{{ item.name }}</span>
|
||||||
@ -161,13 +177,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Search from '../../components/Search'
|
|
||||||
import Check from '../../components/Check'
|
import Check from '../../components/Check'
|
||||||
import { friends } from '@/api/user'
|
import { friends } from '@/api/user'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Share2Friend',
|
name: 'Share2Friend',
|
||||||
components: { Search, Check },
|
components: { Check },
|
||||||
props: {},
|
props: {},
|
||||||
computed: {
|
computed: {
|
||||||
// ...mapState(['friends']),
|
// ...mapState(['friends']),
|
||||||
@ -231,11 +246,11 @@ export default {
|
|||||||
render(currentIndex)
|
render(currentIndex)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
ul.addEventListener('touchend', (e) => {
|
ul.addEventListener('touchend', () => {
|
||||||
return (this.currentFixedIndicator = '')
|
return (this.currentFixedIndicator = '')
|
||||||
})
|
})
|
||||||
let render = (currentIndex) => {
|
let render = (currentIndex) => {
|
||||||
items.forEach((el, index) => {
|
items.forEach((el) => {
|
||||||
el.style.color = resetColor
|
el.style.color = resetColor
|
||||||
})
|
})
|
||||||
items[currentIndex].style.color = '#fff'
|
items[currentIndex].style.color = '#fff'
|
||||||
|
|||||||
@ -26,8 +26,8 @@
|
|||||||
@itemClick="clickItem"
|
@itemClick="clickItem"
|
||||||
v-longpress="showTooltip"
|
v-longpress="showTooltip"
|
||||||
:message="item"
|
:message="item"
|
||||||
|
:key="index"
|
||||||
v-for="(item, index) in messages"
|
v-for="(item, index) in messages"
|
||||||
:key="item"
|
|
||||||
></ChatMessage>
|
></ChatMessage>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
@ -135,7 +135,7 @@
|
|||||||
<!-- 红包 -->
|
<!-- 红包 -->
|
||||||
<transition name="scale">
|
<transition name="scale">
|
||||||
<div class="red-packet" v-if="isShowOpenRedPacket">
|
<div class="red-packet" v-if="isShowOpenRedPacket">
|
||||||
<Mask @click="isShowOpenRedPacket = false" />
|
<BaseMask @click="isShowOpenRedPacket = false" />
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<template v-if="isOpened">
|
<template v-if="isOpened">
|
||||||
<img src="../../../assets/img/icon/message/chat/bg-open.png" alt="" class="bg" />
|
<img src="../../../assets/img/icon/message/chat/bg-open.png" alt="" class="bg" />
|
||||||
@ -184,11 +184,11 @@
|
|||||||
<script>
|
<script>
|
||||||
import ChatMessage from '../components/ChatMessage'
|
import ChatMessage from '../components/ChatMessage'
|
||||||
import { inject, nextTick } from 'vue'
|
import { inject, nextTick } from 'vue'
|
||||||
import Mask from '../../../components/Mask'
|
|
||||||
import { mapState } from 'pinia'
|
import { mapState } from 'pinia'
|
||||||
import Loading from '../../../components/Loading'
|
import Loading from '../../../components/Loading'
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
import { _checkImgUrl } from '@/utils'
|
import { _checkImgUrl } from '@/utils'
|
||||||
|
import $ from "jquery";
|
||||||
|
|
||||||
let CALL_STATE = {
|
let CALL_STATE = {
|
||||||
REJECT: 0,
|
REJECT: 0,
|
||||||
@ -228,7 +228,6 @@ export default {
|
|||||||
name: 'Chat',
|
name: 'Chat',
|
||||||
components: {
|
components: {
|
||||||
Loading,
|
Loading,
|
||||||
Mask,
|
|
||||||
ChatMessage
|
ChatMessage
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@ -11,6 +11,7 @@
|
|||||||
@follow="follow(index)"
|
@follow="follow(index)"
|
||||||
@unfollow="unfollow(index)"
|
@unfollow="unfollow(index)"
|
||||||
mode="normal-add-button"
|
mode="normal-add-button"
|
||||||
|
:key="index"
|
||||||
v-for="(item, index) in list"
|
v-for="(item, index) in list"
|
||||||
:people="item"
|
:people="item"
|
||||||
/>
|
/>
|
||||||
@ -58,7 +59,6 @@
|
|||||||
<script>
|
<script>
|
||||||
import Switches from '../components/swtich/switches'
|
import Switches from '../components/swtich/switches'
|
||||||
import People from '../../people/components/People'
|
import People from '../../people/components/People'
|
||||||
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
|
||||||
import BlockDialog from '../components/BlockDialog'
|
import BlockDialog from '../components/BlockDialog'
|
||||||
import CONST_VAR from '../../../utils/const_var'
|
import CONST_VAR from '../../../utils/const_var'
|
||||||
|
|
||||||
@ -67,7 +67,6 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
Switches,
|
Switches,
|
||||||
People,
|
People,
|
||||||
FromBottomDialog,
|
|
||||||
BlockDialog
|
BlockDialog
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|||||||
@ -26,7 +26,12 @@ export default {
|
|||||||
FromBottomDialog
|
FromBottomDialog
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
modelValue: false
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {}
|
return {}
|
||||||
|
|||||||
@ -91,6 +91,7 @@
|
|||||||
<div class="loves" v-if="message.loved?.length">
|
<div class="loves" v-if="message.loved?.length">
|
||||||
<img src="../../../assets/img/icon/loved.svg" alt="" />
|
<img src="../../../assets/img/icon/loved.svg" alt="" />
|
||||||
<img
|
<img
|
||||||
|
:key="user"
|
||||||
v-for="user in message.loved"
|
v-for="user in message.loved"
|
||||||
src="../../../assets/img/icon/head-image.jpeg"
|
src="../../../assets/img/icon/head-image.jpeg"
|
||||||
alt=""
|
alt=""
|
||||||
@ -112,14 +113,17 @@ let CALL_STATE = {
|
|||||||
RESOLVE: 1,
|
RESOLVE: 1,
|
||||||
NONE: 2
|
NONE: 2
|
||||||
}
|
}
|
||||||
|
// eslint-disable-next-line
|
||||||
let VIDEO_STATE = {
|
let VIDEO_STATE = {
|
||||||
VALID: 0,
|
VALID: 0,
|
||||||
INVALID: 1
|
INVALID: 1
|
||||||
}
|
}
|
||||||
|
// eslint-disable-next-line
|
||||||
let AUDIO_STATE = {
|
let AUDIO_STATE = {
|
||||||
NORMAL: 0,
|
NORMAL: 0,
|
||||||
SENDING: 1
|
SENDING: 1
|
||||||
}
|
}
|
||||||
|
// eslint-disable-next-line
|
||||||
let READ_STATE = {
|
let READ_STATE = {
|
||||||
SENDING: 0,
|
SENDING: 0,
|
||||||
ARRIVED: 1,
|
ARRIVED: 1,
|
||||||
|
|||||||
@ -10,8 +10,8 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<NoMore />
|
<NoMore />
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<!--TODO 超过3行显示全文-->
|
<!--TODO 超过3行显示全文-->
|
||||||
<div class="item" v-for="item in list" @click="goDetail(item)">
|
<div class="item" :key="i" v-for="(item, i) in list" @click="goDetail(item)">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
<div class="ml1r not-read" v-if="!item.read"></div>
|
<div class="ml1r not-read" v-if="!item.read"></div>
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
<Scroll ref="mainScroll">
|
<Scroll ref="mainScroll">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<NoMore />
|
<NoMore />
|
||||||
<div class="item" v-for="item in list" @click="goDetail(item)">
|
<div class="item" :key="i" v-for="(item, i) in list" @click="goDetail(item)">
|
||||||
<div class="title">{{ item.title }}</div>
|
<div class="title">{{ item.title }}</div>
|
||||||
<div class="time">{{ item.time }}</div>
|
<div class="time">{{ item.time }}</div>
|
||||||
<div class="content-text">{{ item.content }}</div>
|
<div class="content-text">{{ item.content }}</div>
|
||||||
@ -25,8 +25,6 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { nextTick } from 'vue'
|
import { nextTick } from 'vue'
|
||||||
import Mask from '../../../components/Mask'
|
|
||||||
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
|
||||||
import Scroll from '../../../components/Scroll'
|
import Scroll from '../../../components/Scroll'
|
||||||
import BasePage from '../../BasePage'
|
import BasePage from '../../BasePage'
|
||||||
|
|
||||||
@ -34,8 +32,7 @@ export default {
|
|||||||
extends: BasePage,
|
extends: BasePage,
|
||||||
name: 'LiveNotice',
|
name: 'LiveNotice',
|
||||||
components: {
|
components: {
|
||||||
Scroll,
|
Scroll
|
||||||
FromBottomDialog
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -15,8 +15,8 @@
|
|||||||
<Scroll ref="mainScroll">
|
<Scroll ref="mainScroll">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<NoMore />
|
<NoMore />
|
||||||
<!--TODO 超过3行显示全文-->
|
<!--TODO 超过3行显示全文-->
|
||||||
<div class="item" v-for="item in list" @click="$no">
|
<div class="item" :key="i" v-for="(item, i) in list" @click="$no">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img src="../../../assets/img/icon/msg-icon9.webp" alt="" />
|
<img src="../../../assets/img/icon/msg-icon9.webp" alt="" />
|
||||||
|
|||||||
@ -79,7 +79,12 @@ export default {
|
|||||||
name: 'NoticeSetting',
|
name: 'NoticeSetting',
|
||||||
components: { Switches },
|
components: { Switches },
|
||||||
props: {
|
props: {
|
||||||
modelValue: false
|
modelValue: {
|
||||||
|
type: Boolean,
|
||||||
|
default() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -15,8 +15,8 @@
|
|||||||
<Scroll ref="mainScroll">
|
<Scroll ref="mainScroll">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<NoMore />
|
<NoMore />
|
||||||
<!--TODO 超过3行显示全文-->
|
<!--TODO 超过3行显示全文-->
|
||||||
<div class="item" v-for="item in list" @click="goDetail(item)">
|
<div class="item" :key="i" v-for="(item, i) in list" @click="goDetail(item)">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
<div class="ml1r not-read" v-if="!item.read"></div>
|
<div class="ml1r not-read" v-if="!item.read"></div>
|
||||||
@ -31,7 +31,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</Scroll>
|
</Scroll>
|
||||||
|
|
||||||
<!-- TODO 子页面未做-->
|
<!--TODO 子页面未做-->
|
||||||
<div class="hover-dialog left" v-if="isShowLeftHover">
|
<div class="hover-dialog left" v-if="isShowLeftHover">
|
||||||
<div class="arrow"></div>
|
<div class="arrow"></div>
|
||||||
<div class="l-row no-border" @click="$no">登录设备管理</div>
|
<div class="l-row no-border" @click="$no">登录设备管理</div>
|
||||||
@ -45,7 +45,7 @@
|
|||||||
<div class="l-row" @click="$no">安全课堂</div>
|
<div class="l-row" @click="$no">安全课堂</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Mask mode="white" v-if="isShowMask" @click="isShowMask = false" />
|
<BaseMask mode="white" v-if="isShowMask" @click="isShowMask = false" />
|
||||||
|
|
||||||
<div class="options">
|
<div class="options">
|
||||||
<div class="option" @click="isShowLeftHover = !isShowLeftHover">
|
<div class="option" @click="isShowLeftHover = !isShowLeftHover">
|
||||||
@ -65,14 +65,13 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { nextTick } from 'vue'
|
import { nextTick } from 'vue'
|
||||||
import Mask from '../../../components/Mask'
|
|
||||||
import Scroll from '../../../components/Scroll'
|
import Scroll from '../../../components/Scroll'
|
||||||
import BasePage from '../../BasePage'
|
import BasePage from '../../BasePage'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
extends: BasePage,
|
extends: BasePage,
|
||||||
name: 'SystemNotice',
|
name: 'SystemNotice',
|
||||||
components: { Mask, Scroll },
|
components: { Scroll },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
loading: false,
|
loading: false,
|
||||||
|
|||||||
@ -13,8 +13,8 @@
|
|||||||
<Scroll ref="mainScroll">
|
<Scroll ref="mainScroll">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<NoMore />
|
<NoMore />
|
||||||
<!--TODO 超过3行显示全文-->
|
<!--TODO 超过3行显示全文-->
|
||||||
<div class="item" v-for="item in list" @click="goDetail(item)">
|
<div class="item" :key="i" v-for="(item, i) in list" @click="goDetail(item)">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<img src="../../../assets/img/icon/message/task.webp" alt="" />
|
<img src="../../../assets/img/icon/message/task.webp" alt="" />
|
||||||
@ -63,7 +63,6 @@
|
|||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { nextTick } from 'vue'
|
import { nextTick } from 'vue'
|
||||||
import Mask from '../../../components/Mask'
|
|
||||||
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
import FromBottomDialog from '../../../components/dialog/FromBottomDialog'
|
||||||
import Scroll from '../../../components/Scroll'
|
import Scroll from '../../../components/Scroll'
|
||||||
import BasePage from '../../BasePage'
|
import BasePage from '../../BasePage'
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
<div class="scroll" ref="scrollEl">
|
<div class="scroll" ref="scrollEl">
|
||||||
<div class="slide-imgs">
|
<div class="slide-imgs">
|
||||||
<SlideHorizontal v-model:index="state.index">
|
<SlideHorizontal v-model:index="state.index">
|
||||||
<SlideItem v-for="item in props.detail.note_card?.image_list">
|
<SlideItem :key="i" v-for="(item, i) in props.detail.note_card?.image_list">
|
||||||
<img :src="_checkImgUrl(item.info_list?.[0]?.url)" alt="" />
|
<img :src="_checkImgUrl(item.info_list?.[0]?.url)" alt="" />
|
||||||
</SlideItem>
|
</SlideItem>
|
||||||
</SlideHorizontal>
|
</SlideHorizontal>
|
||||||
@ -19,7 +19,8 @@
|
|||||||
<div
|
<div
|
||||||
class="indicator"
|
class="indicator"
|
||||||
:class="[i <= state.index + 1 && 'active']"
|
:class="[i <= state.index + 1 && 'active']"
|
||||||
v-for="i in props.detail.note_card?.image_list?.length"
|
:key="j"
|
||||||
|
v-for="(i, j) in props.detail.note_card?.image_list?.length"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -49,7 +50,11 @@
|
|||||||
<Icon class="arrow" icon="mingcute:right-line" />
|
<Icon class="arrow" icon="mingcute:right-line" />
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<div class="comment" v-for="i in props.detail.note_card.comment_list.slice(0, 2)">
|
<div
|
||||||
|
class="comment"
|
||||||
|
:key="j"
|
||||||
|
v-for="(i, j) in props.detail.note_card.comment_list.slice(0, 2)"
|
||||||
|
>
|
||||||
<img src="https://cdn.seovx.com/?mom=302" alt="" class="avatar" />
|
<img src="https://cdn.seovx.com/?mom=302" alt="" class="avatar" />
|
||||||
<span> {{ i.name }}:{{ i.text }} </span>
|
<span> {{ i.name }}:{{ i.text }} </span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -129,14 +129,6 @@ const nav = useNav()
|
|||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
const baseStore = useBaseStore()
|
const baseStore = useBaseStore()
|
||||||
const data = reactive({
|
|
||||||
dialog: {
|
|
||||||
shareToFriend: false,
|
|
||||||
permissionDialog: false,
|
|
||||||
test: false
|
|
||||||
},
|
|
||||||
isMy: false
|
|
||||||
})
|
|
||||||
|
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
baseIndex: 1,
|
baseIndex: 1,
|
||||||
@ -199,17 +191,17 @@ function setCurrentItem(item) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
bus.on(EVENT_KEY.ENTER_FULLSCREEN, (e) => (state.fullScreen = true))
|
bus.on(EVENT_KEY.ENTER_FULLSCREEN, () => (state.fullScreen = true))
|
||||||
bus.on(EVENT_KEY.EXIT_FULLSCREEN, (e) => (state.fullScreen = false))
|
bus.on(EVENT_KEY.EXIT_FULLSCREEN, () => (state.fullScreen = false))
|
||||||
bus.on(EVENT_KEY.OPEN_COMMENTS, (e) => {
|
bus.on(EVENT_KEY.OPEN_COMMENTS, () => {
|
||||||
bus.emit(EVENT_KEY.ENTER_FULLSCREEN)
|
bus.emit(EVENT_KEY.ENTER_FULLSCREEN)
|
||||||
state.commentVisible = true
|
state.commentVisible = true
|
||||||
})
|
})
|
||||||
bus.on(EVENT_KEY.CLOSE_COMMENTS, (e) => {
|
bus.on(EVENT_KEY.CLOSE_COMMENTS, () => {
|
||||||
bus.emit(EVENT_KEY.EXIT_FULLSCREEN)
|
bus.emit(EVENT_KEY.EXIT_FULLSCREEN)
|
||||||
state.commentVisible = false
|
state.commentVisible = false
|
||||||
})
|
})
|
||||||
bus.on(EVENT_KEY.SHOW_SHARE, (e) => {
|
bus.on(EVENT_KEY.SHOW_SHARE, () => {
|
||||||
state.isSharing = true
|
state.isSharing = true
|
||||||
})
|
})
|
||||||
bus.on(EVENT_KEY.NAV, ({ path, query }) => nav(path, query))
|
bus.on(EVENT_KEY.NAV, ({ path, query }) => nav(path, query))
|
||||||
|
|||||||
@ -1,205 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="video-detail">
|
|
||||||
<div class="search-wrapper">
|
|
||||||
<Icon class="back" icon="icon-park-outline:left" @click="$back" />
|
|
||||||
<div class="search" @click="nav('/home/search')">
|
|
||||||
<div class="left">
|
|
||||||
<Icon class="icon" icon="ion:search" />
|
|
||||||
<span>搜你想看的</span>
|
|
||||||
</div>
|
|
||||||
<div class="right">
|
|
||||||
<span class="gang">|</span>
|
|
||||||
<span class="txt">搜索</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<SlideVerticalInfinite
|
|
||||||
ref="listRef"
|
|
||||||
v-love="state.uniqueId"
|
|
||||||
:id="state.uniqueId"
|
|
||||||
:uniqueId="state.uniqueId"
|
|
||||||
name="main"
|
|
||||||
:active="true"
|
|
||||||
:loading="false"
|
|
||||||
v-model:index="state.index"
|
|
||||||
:render="render"
|
|
||||||
:list="state.list"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="footer">
|
|
||||||
<div class="comment">
|
|
||||||
<div class="left">
|
|
||||||
<img
|
|
||||||
:src="_checkImgUrl(store.userinfo.avatar_168x168.url_list[0])"
|
|
||||||
class="avatar"
|
|
||||||
alt=""
|
|
||||||
/>
|
|
||||||
<span>善语结善缘,恶言伤人心</span>
|
|
||||||
</div>
|
|
||||||
<div class="right">
|
|
||||||
<Icon icon="tabler:photo" />
|
|
||||||
<Icon icon="ion:at-sharp" />
|
|
||||||
<Icon icon="fa-regular:laugh" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { onMounted, reactive } from 'vue'
|
|
||||||
import { useBaseStore } from '@/store/pinia'
|
|
||||||
import SlideVerticalInfinite from '@/components/slide/SlideVerticalInfinite.vue'
|
|
||||||
import { useSlideListItemRender } from '@/utils/hooks/useSlideListItemRender'
|
|
||||||
import { _checkImgUrl } from '@/utils'
|
|
||||||
import { useNav } from '@/utils/hooks/useNav'
|
|
||||||
|
|
||||||
defineOptions({
|
|
||||||
name: 'VideoDetail'
|
|
||||||
})
|
|
||||||
const nav = useNav()
|
|
||||||
const store = useBaseStore()
|
|
||||||
const data = reactive({
|
|
||||||
dialog: {
|
|
||||||
shareToFriend: false,
|
|
||||||
permissionDialog: false,
|
|
||||||
test: false
|
|
||||||
},
|
|
||||||
isMy: false
|
|
||||||
})
|
|
||||||
const state = reactive({
|
|
||||||
index: 0,
|
|
||||||
list: [],
|
|
||||||
uniqueId: 'uniqueId_2',
|
|
||||||
totalSize: 0,
|
|
||||||
pageSize: 10,
|
|
||||||
pageNo: 0
|
|
||||||
})
|
|
||||||
const render = useSlideListItemRender()
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
// console.log('s', store.routeData)
|
|
||||||
state.index = store.routeData.index
|
|
||||||
state.list = store.routeData.list
|
|
||||||
// console.log('sss', state.list[state.index])
|
|
||||||
})
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
@import '../../assets/less/index';
|
|
||||||
|
|
||||||
#video-detail {
|
|
||||||
position: fixed;
|
|
||||||
font-size: 14rem;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
background: black;
|
|
||||||
|
|
||||||
.search-wrapper {
|
|
||||||
z-index: 9;
|
|
||||||
position: fixed;
|
|
||||||
top: 8rem;
|
|
||||||
left: 0;
|
|
||||||
width: 100vw;
|
|
||||||
padding: 0 15rem;
|
|
||||||
box-sizing: border-box;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 15rem;
|
|
||||||
|
|
||||||
.back {
|
|
||||||
color: white;
|
|
||||||
font-size: 30rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search {
|
|
||||||
color: var(--second-btn-color);
|
|
||||||
display: flex;
|
|
||||||
background: rgba(171, 169, 169, 0.4);
|
|
||||||
border-radius: 8rem;
|
|
||||||
flex: 1;
|
|
||||||
padding: 8rem;
|
|
||||||
justify-content: space-between;
|
|
||||||
|
|
||||||
.left {
|
|
||||||
font-size: 15rem;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
color: gainsboro;
|
|
||||||
gap: 5rem;
|
|
||||||
line-height: 1;
|
|
||||||
|
|
||||||
svg {
|
|
||||||
font-size: 14rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.right {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10rem;
|
|
||||||
font-size: 16rem;
|
|
||||||
|
|
||||||
.gang {
|
|
||||||
color: dimgrey;
|
|
||||||
}
|
|
||||||
|
|
||||||
.txt {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
height: calc(var(--vh, 1vh) * 100 - var(--footer-height));
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
height: var(--footer-height);
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.comment {
|
|
||||||
color: var(--second-text-color);
|
|
||||||
z-index: 9;
|
|
||||||
width: 95%;
|
|
||||||
height: 75%;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 0 10px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
background: rgb(37, 37, 37);
|
|
||||||
border-radius: 50rem;
|
|
||||||
|
|
||||||
.avatar {
|
|
||||||
height: 70%;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.left {
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.right {
|
|
||||||
.left;
|
|
||||||
gap: 15rem;
|
|
||||||
font-size: 24rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
<div class="left">已有20+位朋友加入抖音</div>
|
<div class="left">已有20+位朋友加入抖音</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<People v-for="item in list" :people="item"></People>
|
<People :key="i" v-for="(item, i) in list" :people="item"></People>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">为尊重用户选择,仅展示已授权用户</div>
|
<div class="footer">为尊重用户选择,仅展示已授权用户</div>
|
||||||
|
|||||||
@ -58,7 +58,12 @@
|
|||||||
style="width: 10rem; margin-left: 2rem"
|
style="width: 10rem; margin-left: 2rem"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<People v-for="item in friends.all" :people="item" mode="recommend"></People>
|
<People
|
||||||
|
:key="i"
|
||||||
|
v-for="(item, i) in friends.all"
|
||||||
|
:people="item"
|
||||||
|
mode="recommend"
|
||||||
|
></People>
|
||||||
</div>
|
</div>
|
||||||
<div class="is-search" v-else>
|
<div class="is-search" v-else>
|
||||||
<div class="tooltip" v-if="searchKey && !isSearch">
|
<div class="tooltip" v-if="searchKey && !isSearch">
|
||||||
@ -66,24 +71,26 @@
|
|||||||
搜索用户名字/抖音号:<span class="searchKey">{{ searchKey }}</span>
|
搜索用户名字/抖音号:<span class="searchKey">{{ searchKey }}</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- TODO -->
|
<!-- TODO -->
|
||||||
<People
|
<template v-if="isSearch">
|
||||||
v-if="isSearch"
|
<People
|
||||||
v-for="item in friends.all"
|
:key="i"
|
||||||
:people="item"
|
v-for="(item, i) in friends.all"
|
||||||
mode="recommend"
|
:people="item"
|
||||||
></People>
|
mode="recommend"
|
||||||
|
></People>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</SlideItem>
|
</SlideItem>
|
||||||
<SlideItem class="tab2" style="overflow: auto">
|
<SlideItem class="tab2" style="overflow: auto">
|
||||||
<Search placeholder="搜索用户备注或名字" class="mr20p ml20p mt10p"></Search>
|
<Search placeholder="搜索用户备注或名字" class="mr20p ml20p mt10p"></Search>
|
||||||
<div class="title">{{ friends.all.length }} 位朋友</div>
|
<div class="title">{{ friends.all.length }} 位朋友</div>
|
||||||
<People v-for="item in friends.all" :people="item" mode="friend"></People>
|
<People :key="i" v-for="(item, i) in friends.all" :people="item" mode="friend"></People>
|
||||||
<NoMore class="mb5r" />
|
<NoMore class="mb5r" />
|
||||||
</SlideItem>
|
</SlideItem>
|
||||||
</SlideHorizontal>
|
</SlideHorizontal>
|
||||||
|
|
||||||
<transition name="fade">
|
<transition name="fade">
|
||||||
<Mask v-if="maskDialog" @click="maskDialog = false"></Mask>
|
<BaseMask v-if="maskDialog" @click="maskDialog = false"/>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<transition name="fade">
|
<transition name="fade">
|
||||||
|
|||||||
@ -35,7 +35,7 @@
|
|||||||
/>
|
/>
|
||||||
<div class="is-search" v-if="searchKey">
|
<div class="is-search" v-if="searchKey">
|
||||||
<div class="search-result" v-if="searchFriends.length">
|
<div class="search-result" v-if="searchFriends.length">
|
||||||
<People v-for="item in searchFriends" :people="item"></People>
|
<People :key="i" v-for="(item, i) in searchFriends" :people="item"></People>
|
||||||
</div>
|
</div>
|
||||||
<div class="no-result" v-else>
|
<div class="no-result" v-else>
|
||||||
<img src="../../assets/img/icon/no-result.png" alt="" />
|
<img src="../../assets/img/icon/no-result.png" alt="" />
|
||||||
@ -45,11 +45,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="no-search" v-else>
|
<div class="no-search" v-else>
|
||||||
<div class="title">我的关注</div>
|
<div class="title">我的关注</div>
|
||||||
<People v-for="item in friends.all" :people="item"></People>
|
<People :key="i" v-for="(item, i) in friends.all" :people="item"></People>
|
||||||
</div>
|
</div>
|
||||||
</SlideItem>
|
</SlideItem>
|
||||||
<SlideItem class="tab2">
|
<SlideItem class="tab2">
|
||||||
<People v-for="item in friends.all" :people="item"></People>
|
<People :key="i" v-for="(item, i) in friends.all" :people="item"></People>
|
||||||
<NoMore />
|
<NoMore />
|
||||||
</SlideItem>
|
</SlideItem>
|
||||||
</SlideHorizontal>
|
</SlideHorizontal>
|
||||||
@ -60,7 +60,6 @@
|
|||||||
import People from './components/People'
|
import People from './components/People'
|
||||||
import Search from '../../components/Search'
|
import Search from '../../components/Search'
|
||||||
import Indicator from '../../components/slide/Indicator'
|
import Indicator from '../../components/slide/Indicator'
|
||||||
import FromBottomDialog from '../../components/dialog/FromBottomDialog'
|
|
||||||
import { mapState } from 'pinia'
|
import { mapState } from 'pinia'
|
||||||
import { useBaseStore } from '@/store/pinia'
|
import { useBaseStore } from '@/store/pinia'
|
||||||
|
|
||||||
@ -69,8 +68,7 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
People,
|
People,
|
||||||
Search,
|
Search,
|
||||||
Indicator,
|
Indicator
|
||||||
FromBottomDialog
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -87,7 +85,7 @@ export default {
|
|||||||
watch: {
|
watch: {
|
||||||
searchKey(newVal) {
|
searchKey(newVal) {
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
//TODO 搜索时仅仅判断是否包含了对应字符串,抖音做了拼音判断的
|
//TODO 搜索时仅仅判断是否包含了对应字符串,抖音做了拼音判断的
|
||||||
this.searchFriends = this.friends.all.filter((v) => {
|
this.searchFriends = this.friends.all.filter((v) => {
|
||||||
if (v.name.includes(newVal)) return true
|
if (v.name.includes(newVal)) return true
|
||||||
return v.account.includes(newVal)
|
return v.account.includes(newVal)
|
||||||
|
|||||||
@ -64,7 +64,7 @@
|
|||||||
<template v-if="people.type === RELATE_ENUM.REQUEST_FOLLOW">
|
<template v-if="people.type === RELATE_ENUM.REQUEST_FOLLOW">
|
||||||
发来一个关注请求
|
发来一个关注请求
|
||||||
</template>
|
</template>
|
||||||
<template v-else> 关注了你 </template>
|
<template v-else> 关注了你</template>
|
||||||
</div>
|
</div>
|
||||||
<div class="detail">07-23</div>
|
<div class="detail">07-23</div>
|
||||||
</div>
|
</div>
|
||||||
@ -166,7 +166,9 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
people: {
|
people: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: {}
|
default() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
mode: {
|
mode: {
|
||||||
type: String,
|
type: String,
|
||||||
|
|||||||
@ -43,7 +43,9 @@ export default {
|
|||||||
props: {
|
props: {
|
||||||
list: {
|
list: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: []
|
default() {
|
||||||
|
return []
|
||||||
|
}
|
||||||
},
|
},
|
||||||
mode: {
|
mode: {
|
||||||
type: String,
|
type: String,
|
||||||
|
|||||||
@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
<div class="slide-imgs">
|
<div class="slide-imgs">
|
||||||
<SlideHorizontal v-model:index="state.index">
|
<SlideHorizontal v-model:index="state.index">
|
||||||
<SlideItem v-for="item in state.detail.imgs">
|
<SlideItem v-for="(item, i) in state.detail.imgs" :key="i">
|
||||||
<img v-lazy="_checkImgUrl('goods/' + item)" alt="" />
|
<img v-lazy="_checkImgUrl('goods/' + item)" alt="" />
|
||||||
</SlideItem>
|
</SlideItem>
|
||||||
</SlideHorizontal>
|
</SlideHorizontal>
|
||||||
@ -264,7 +264,8 @@
|
|||||||
v-lazy="_checkImgUrl('goods/' + i)"
|
v-lazy="_checkImgUrl('goods/' + i)"
|
||||||
alt=""
|
alt=""
|
||||||
class="avatar"
|
class="avatar"
|
||||||
v-for="i in state.detail.imgs"
|
:key="j"
|
||||||
|
v-for="(i, j) in state.detail.imgs"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -275,6 +276,7 @@
|
|||||||
class="item"
|
class="item"
|
||||||
:class="activeIndexs.includes(i) && 'active'"
|
:class="activeIndexs.includes(i) && 'active'"
|
||||||
@click="toggle(i)"
|
@click="toggle(i)"
|
||||||
|
:key="i"
|
||||||
v-for="(item, i) in 3"
|
v-for="(item, i) in 3"
|
||||||
>
|
>
|
||||||
<header>
|
<header>
|
||||||
|
|||||||
@ -108,12 +108,11 @@
|
|||||||
</WaterfallList>
|
</WaterfallList>
|
||||||
</template>
|
</template>
|
||||||
</ScrollList>
|
</ScrollList>
|
||||||
<Footer v-bind:init-tab="2" :is-white="true" style="position: fixed; left: 0" />
|
<BaseFooter v-bind:init-tab="2" :is-white="true" style="position: fixed; left: 0" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="jsx">
|
<script setup lang="jsx">
|
||||||
import { onMounted, reactive } from 'vue'
|
|
||||||
import { useNav } from '@/utils/hooks/useNav'
|
import { useNav } from '@/utils/hooks/useNav'
|
||||||
import { $no, _checkImgUrl } from '@/utils'
|
import { $no, _checkImgUrl } from '@/utils'
|
||||||
import ScrollList from '@/components/ScrollList.vue'
|
import ScrollList from '@/components/ScrollList.vue'
|
||||||
@ -125,12 +124,6 @@ defineOptions({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const nav = useNav()
|
const nav = useNav()
|
||||||
const state = reactive({
|
|
||||||
listEl: null,
|
|
||||||
fixed: false
|
|
||||||
})
|
|
||||||
|
|
||||||
onMounted(() => {})
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="less">
|
<style scoped lang="less">
|
||||||
|
|||||||
@ -6,17 +6,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import ShareToFriend from '../home/components/ShareToFriend'
|
|
||||||
import BaseButton from '../../components/BaseButton'
|
import BaseButton from '../../components/BaseButton'
|
||||||
import Search from '../../components/Search'
|
|
||||||
import VideoShare from '../home/components/VideoShare'
|
import VideoShare from '../home/components/VideoShare'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'Test4',
|
name: 'Test4',
|
||||||
components: {
|
components: {
|
||||||
BaseButton,
|
BaseButton,
|
||||||
ShareToFriend,
|
|
||||||
Search,
|
|
||||||
VideoShare
|
VideoShare
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
import globalMethods from './index'
|
|
||||||
|
|
||||||
export default class Dom {
|
export default class Dom {
|
||||||
els = []
|
els = []
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user