44
.github/workflows/node.js.yml
vendored
44
.github/workflows/node.js.yml
vendored
@@ -5,7 +5,7 @@ name: Node.js CI
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "main" ]
|
branches: [main]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -19,26 +19,24 @@ jobs:
|
|||||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v2
|
||||||
with:
|
with:
|
||||||
version: 8
|
version: 8
|
||||||
- name: Use Node.js ${{ matrix.node-version }}
|
- name: Use Node.js ${{ matrix.node-version }}
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: ${{ matrix.node-version }}
|
node-version: ${{ matrix.node-version }}
|
||||||
cache: 'pnpm'
|
cache: pnpm
|
||||||
- run: pnpm install
|
- run: pnpm install
|
||||||
- run: pnpm build
|
- run: pnpm build
|
||||||
- name: Copy and Rename index.html to dist
|
- name: Copy and Rename index.html to dist
|
||||||
run: cp dist/index.html dist/404.html
|
run: cp dist/index.html dist/404.html
|
||||||
|
|
||||||
- name: Deploy to gh-pages
|
|
||||||
uses: crazy-max/ghaction-github-pages@v2
|
|
||||||
with:
|
|
||||||
target_branch: gh-pages
|
|
||||||
build_dir: dist
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
|
||||||
|
|
||||||
|
|
||||||
|
- name: Deploy to gh-pages
|
||||||
|
uses: crazy-max/ghaction-github-pages@v2
|
||||||
|
with:
|
||||||
|
target_branch: gh-pages
|
||||||
|
build_dir: dist
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
||||||
|
|||||||
87
.github/workflows/release.yml
vendored
87
.github/workflows/release.yml
vendored
@@ -6,9 +6,8 @@ on:
|
|||||||
- 'v*'
|
- 'v*'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-release:
|
build-web:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
@@ -26,18 +25,18 @@ jobs:
|
|||||||
- name: Setup Node.js
|
- name: Setup Node.js
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: '22.x'
|
node-version: 22.x
|
||||||
cache: 'pnpm'
|
cache: pnpm
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install
|
run: pnpm install
|
||||||
|
|
||||||
|
- name: Install dependency fast-glob
|
||||||
|
run: pnpm add fast-glob -D
|
||||||
|
|
||||||
- name: Build for production
|
- name: Build for production
|
||||||
run: pnpm build
|
run: pnpm build
|
||||||
|
|
||||||
- name: Build for file protocol
|
|
||||||
run: pnpm build:file
|
|
||||||
|
|
||||||
- name: Prepare directories
|
- name: Prepare directories
|
||||||
run: |
|
run: |
|
||||||
mv dist dist-prod
|
mv dist dist-prod
|
||||||
@@ -45,18 +44,78 @@ jobs:
|
|||||||
|
|
||||||
- name: Create production build archive
|
- name: Create production build archive
|
||||||
run: |
|
run: |
|
||||||
tar -czf dist.tar.gz dist-prod
|
zip -r dist.zip dist-prod
|
||||||
|
|
||||||
- name: Create file protocol build archive
|
- name: Upload web build artifact
|
||||||
run: |
|
uses: actions/upload-artifact@v4
|
||||||
tar -czf dist-file.tar.gz dist-file
|
with:
|
||||||
|
name: web-build
|
||||||
|
path: dist.zip
|
||||||
|
|
||||||
- name: Release
|
publish-tauri:
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Rust
|
||||||
|
uses: dtolnay/rust-toolchain@stable
|
||||||
|
|
||||||
|
- name: Rust cache
|
||||||
|
uses: swatinem/rust-cache@v2
|
||||||
|
with:
|
||||||
|
workspaces: ./src-tauri -> target
|
||||||
|
|
||||||
|
- name: Setup pnpm
|
||||||
|
uses: pnpm/action-setup@v2
|
||||||
|
with:
|
||||||
|
version: 8
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 22.x
|
||||||
|
cache: pnpm
|
||||||
|
|
||||||
|
- name: Install frontend dependencies
|
||||||
|
run: pnpm install
|
||||||
|
|
||||||
|
- name: Install dependency fast-glob
|
||||||
|
run: pnpm add fast-glob -D
|
||||||
|
|
||||||
|
- name: Build the app
|
||||||
|
uses: tauri-apps/tauri-action@v0
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tagName: ${{ github.ref_name }}
|
||||||
|
releaseName: 'Release ${{ github.ref_name }}'
|
||||||
|
releaseBody: See the assets to download this version and install.
|
||||||
|
releaseDraft: true
|
||||||
|
prerelease: false
|
||||||
|
run: pnpm tauri build
|
||||||
|
|
||||||
|
release:
|
||||||
|
needs: [build-web, publish-tauri]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Download web build artifact
|
||||||
|
uses: actions/download-artifact@v4
|
||||||
|
with:
|
||||||
|
name: web-build
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
dist.tar.gz
|
dist.zip
|
||||||
dist-file.tar.gz
|
name: 'Release ${{ github.ref_name }}'
|
||||||
draft: true
|
draft: true
|
||||||
prerelease: false
|
prerelease: false
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -35,6 +35,8 @@ bower_components
|
|||||||
# node-waf configuration
|
# node-waf configuration
|
||||||
.lock-wscript
|
.lock-wscript
|
||||||
|
|
||||||
|
pnpm-lock.yaml
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||||
build/Release
|
build/Release
|
||||||
|
|
||||||
|
|||||||
22
build/syncVersion.js
Normal file
22
build/syncVersion.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
|
||||||
|
const __filename = fileURLToPath(import.meta.url);
|
||||||
|
const __dirname = path.dirname(__filename);
|
||||||
|
|
||||||
|
// 读取 package.json 版本号
|
||||||
|
const packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf8'));
|
||||||
|
const version = packageJson.version;
|
||||||
|
|
||||||
|
// 读取并更新 tauri.conf.json
|
||||||
|
const tauriConfPath = path.join(__dirname, '..', 'src-tauri', 'tauri.conf.json');
|
||||||
|
const tauriConf = JSON.parse(fs.readFileSync(tauriConfPath, 'utf8'));
|
||||||
|
|
||||||
|
// 更新版本号
|
||||||
|
tauriConf.version = version;
|
||||||
|
|
||||||
|
// 写回 tauri.conf.json
|
||||||
|
fs.writeFileSync(tauriConfPath, JSON.stringify(tauriConf, null, 2));
|
||||||
|
|
||||||
|
console.log(`Tauri 配置版本号已同步至: ${version}`);
|
||||||
@@ -2,7 +2,7 @@ import antfu from '@antfu/eslint-config'
|
|||||||
|
|
||||||
export default antfu(
|
export default antfu(
|
||||||
{
|
{
|
||||||
ignores: ['**/node_modules', '**/public', '**/dist', '**/package.json', '**/*.yaml', '**/.gitignore', '**/.env*', '**/tsconfig*', '**/*.config.js'],
|
ignores: ['**/node_modules', '**/build', '**/public', '**/dist', '**/package.json', '**/*.yaml', '**/.gitignore', '**/.env*', '**/tsconfig*', '**/*.config.js'],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
rules: {
|
rules: {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
"build": "vue-tsc --noEmit && vite build",
|
"build": "vue-tsc --noEmit && vite build",
|
||||||
"build:pre": "vue-tsc --noEmit && vite build --mode prebuild",
|
"build:pre": "vue-tsc --noEmit && vite build --mode prebuild",
|
||||||
"build:file": "vue-tsc --noEmit && vite build --mode file",
|
"build:file": "vue-tsc --noEmit && vite build --mode file",
|
||||||
|
"tauri":"node ./build/syncVersion.js && tauri",
|
||||||
"test": "vitest",
|
"test": "vitest",
|
||||||
"test:ui": "vitest --ui",
|
"test:ui": "vitest --ui",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
@@ -30,8 +31,8 @@
|
|||||||
"pinia": "^3.0.3",
|
"pinia": "^3.0.3",
|
||||||
"pinia-plugin-persist": "^1.0.0",
|
"pinia-plugin-persist": "^1.0.0",
|
||||||
"sparticles": "^1.3.1",
|
"sparticles": "^1.3.1",
|
||||||
"three": "^0.166.0",
|
"three": "0.166.0",
|
||||||
"three-css3d": "^1.0.6",
|
"three-css3d": "1.0.6",
|
||||||
"uuid": "^13.0.0",
|
"uuid": "^13.0.0",
|
||||||
"vue": "^3.5.13",
|
"vue": "^3.5.13",
|
||||||
"vue-dompurify-html": "^5.2.0",
|
"vue-dompurify-html": "^5.2.0",
|
||||||
@@ -57,7 +58,7 @@
|
|||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/markdown-it": "^14.1.2",
|
"@types/markdown-it": "^14.1.2",
|
||||||
"@types/node": "^24.10.2",
|
"@types/node": "^24.10.2",
|
||||||
"@types/three": "^0.166.0",
|
"@types/three": "0.166.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^8.49.0",
|
"@typescript-eslint/eslint-plugin": "^8.49.0",
|
||||||
"@typescript-eslint/parser": "^8.49.0",
|
"@typescript-eslint/parser": "^8.49.0",
|
||||||
"@vitejs/plugin-legacy": "^7.2.1",
|
"@vitejs/plugin-legacy": "^7.2.1",
|
||||||
|
|||||||
36
pnpm-lock.yaml
generated
36
pnpm-lock.yaml
generated
@@ -51,10 +51,10 @@ importers:
|
|||||||
specifier: ^1.3.1
|
specifier: ^1.3.1
|
||||||
version: 1.3.1
|
version: 1.3.1
|
||||||
three:
|
three:
|
||||||
specifier: ^0.166.0
|
specifier: 0.166.0
|
||||||
version: 0.166.0
|
version: 0.166.0
|
||||||
three-css3d:
|
three-css3d:
|
||||||
specifier: ^1.0.6
|
specifier: 1.0.6
|
||||||
version: 1.0.6(three@0.166.0)
|
version: 1.0.6(three@0.166.0)
|
||||||
uuid:
|
uuid:
|
||||||
specifier: ^13.0.0
|
specifier: ^13.0.0
|
||||||
@@ -127,7 +127,7 @@ importers:
|
|||||||
specifier: ^24.10.2
|
specifier: ^24.10.2
|
||||||
version: 24.10.2
|
version: 24.10.2
|
||||||
'@types/three':
|
'@types/three':
|
||||||
specifier: ^0.166.0
|
specifier: 0.166.0
|
||||||
version: 0.166.0
|
version: 0.166.0
|
||||||
'@typescript-eslint/eslint-plugin':
|
'@typescript-eslint/eslint-plugin':
|
||||||
specifier: ^8.49.0
|
specifier: ^8.49.0
|
||||||
@@ -1394,36 +1394,42 @@ packages:
|
|||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@parcel/watcher-linux-arm-musl@2.5.0':
|
'@parcel/watcher-linux-arm-musl@2.5.0':
|
||||||
resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==}
|
resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==}
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@parcel/watcher-linux-arm64-glibc@2.5.0':
|
'@parcel/watcher-linux-arm64-glibc@2.5.0':
|
||||||
resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==}
|
resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==}
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@parcel/watcher-linux-arm64-musl@2.5.0':
|
'@parcel/watcher-linux-arm64-musl@2.5.0':
|
||||||
resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==}
|
resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==}
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@parcel/watcher-linux-x64-glibc@2.5.0':
|
'@parcel/watcher-linux-x64-glibc@2.5.0':
|
||||||
resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==}
|
resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==}
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@parcel/watcher-linux-x64-musl@2.5.0':
|
'@parcel/watcher-linux-x64-musl@2.5.0':
|
||||||
resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==}
|
resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==}
|
||||||
engines: {node: '>= 10.0.0'}
|
engines: {node: '>= 10.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@parcel/watcher-win32-arm64@2.5.0':
|
'@parcel/watcher-win32-arm64@2.5.0':
|
||||||
resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==}
|
resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==}
|
||||||
@@ -1494,56 +1500,67 @@ packages:
|
|||||||
resolution: {integrity: sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ==}
|
resolution: {integrity: sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm-musleabihf@4.52.0':
|
'@rollup/rollup-linux-arm-musleabihf@4.52.0':
|
||||||
resolution: {integrity: sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw==}
|
resolution: {integrity: sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm64-gnu@4.52.0':
|
'@rollup/rollup-linux-arm64-gnu@4.52.0':
|
||||||
resolution: {integrity: sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw==}
|
resolution: {integrity: sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-arm64-musl@4.52.0':
|
'@rollup/rollup-linux-arm64-musl@4.52.0':
|
||||||
resolution: {integrity: sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw==}
|
resolution: {integrity: sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-linux-loong64-gnu@4.52.0':
|
'@rollup/rollup-linux-loong64-gnu@4.52.0':
|
||||||
resolution: {integrity: sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg==}
|
resolution: {integrity: sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg==}
|
||||||
cpu: [loong64]
|
cpu: [loong64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-ppc64-gnu@4.52.0':
|
'@rollup/rollup-linux-ppc64-gnu@4.52.0':
|
||||||
resolution: {integrity: sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw==}
|
resolution: {integrity: sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw==}
|
||||||
cpu: [ppc64]
|
cpu: [ppc64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-riscv64-gnu@4.52.0':
|
'@rollup/rollup-linux-riscv64-gnu@4.52.0':
|
||||||
resolution: {integrity: sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ==}
|
resolution: {integrity: sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ==}
|
||||||
cpu: [riscv64]
|
cpu: [riscv64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-riscv64-musl@4.52.0':
|
'@rollup/rollup-linux-riscv64-musl@4.52.0':
|
||||||
resolution: {integrity: sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw==}
|
resolution: {integrity: sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw==}
|
||||||
cpu: [riscv64]
|
cpu: [riscv64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-linux-s390x-gnu@4.52.0':
|
'@rollup/rollup-linux-s390x-gnu@4.52.0':
|
||||||
resolution: {integrity: sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg==}
|
resolution: {integrity: sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg==}
|
||||||
cpu: [s390x]
|
cpu: [s390x]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-x64-gnu@4.52.0':
|
'@rollup/rollup-linux-x64-gnu@4.52.0':
|
||||||
resolution: {integrity: sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA==}
|
resolution: {integrity: sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@rollup/rollup-linux-x64-musl@4.52.0':
|
'@rollup/rollup-linux-x64-musl@4.52.0':
|
||||||
resolution: {integrity: sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ==}
|
resolution: {integrity: sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@rollup/rollup-openharmony-arm64@4.52.0':
|
'@rollup/rollup-openharmony-arm64@4.52.0':
|
||||||
resolution: {integrity: sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw==}
|
resolution: {integrity: sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw==}
|
||||||
@@ -1628,24 +1645,28 @@ packages:
|
|||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-arm64-musl@4.1.13':
|
'@tailwindcss/oxide-linux-arm64-musl@4.1.13':
|
||||||
resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==}
|
resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-x64-gnu@4.1.13':
|
'@tailwindcss/oxide-linux-x64-gnu@4.1.13':
|
||||||
resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==}
|
resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@tailwindcss/oxide-linux-x64-musl@4.1.13':
|
'@tailwindcss/oxide-linux-x64-musl@4.1.13':
|
||||||
resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==}
|
resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@tailwindcss/oxide-wasm32-wasi@4.1.13':
|
'@tailwindcss/oxide-wasm32-wasi@4.1.13':
|
||||||
resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==}
|
resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==}
|
||||||
@@ -1708,30 +1729,35 @@ packages:
|
|||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-arm64-musl@2.9.5':
|
'@tauri-apps/cli-linux-arm64-musl@2.9.5':
|
||||||
resolution: {integrity: sha512-/gRBMnphS9E8riZ0LIbBhZ9Oy16A2rx/g3DGR0DcDBvUtkLfbL0lMu4s+sY85nkn9An15+cZ1ZK6d7AIqWahLA==}
|
resolution: {integrity: sha512-/gRBMnphS9E8riZ0LIbBhZ9Oy16A2rx/g3DGR0DcDBvUtkLfbL0lMu4s+sY85nkn9An15+cZ1ZK6d7AIqWahLA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-riscv64-gnu@2.9.5':
|
'@tauri-apps/cli-linux-riscv64-gnu@2.9.5':
|
||||||
resolution: {integrity: sha512-NOzjPF9YIBodjdkFcJmqINT0k3YDoR5ANM/jg6Z6s3Zmk8ScN6inI60jTxcfgfWyITiKsPy7GJyYou3Cm2XNzw==}
|
resolution: {integrity: sha512-NOzjPF9YIBodjdkFcJmqINT0k3YDoR5ANM/jg6Z6s3Zmk8ScN6inI60jTxcfgfWyITiKsPy7GJyYou3Cm2XNzw==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [riscv64]
|
cpu: [riscv64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-x64-gnu@2.9.5':
|
'@tauri-apps/cli-linux-x64-gnu@2.9.5':
|
||||||
resolution: {integrity: sha512-SfGbwgvTphM5y+J91NyU/psleMUlyyPkZyDCFg8WU1HX8DpKUT3Vwhb/W1xpUBGb56tJgGCO46FCVkr8w4Areg==}
|
resolution: {integrity: sha512-SfGbwgvTphM5y+J91NyU/psleMUlyyPkZyDCFg8WU1HX8DpKUT3Vwhb/W1xpUBGb56tJgGCO46FCVkr8w4Areg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
'@tauri-apps/cli-linux-x64-musl@2.9.5':
|
'@tauri-apps/cli-linux-x64-musl@2.9.5':
|
||||||
resolution: {integrity: sha512-ZfeoiASAOGDzyvN+TDAg8A1pCeS082h4uc0vZKvtWUN+9QBIMfz0yJwltAv+SN/afap6NS6DVkbPV3UVuI9V5A==}
|
resolution: {integrity: sha512-ZfeoiASAOGDzyvN+TDAg8A1pCeS082h4uc0vZKvtWUN+9QBIMfz0yJwltAv+SN/afap6NS6DVkbPV3UVuI9V5A==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
'@tauri-apps/cli-win32-arm64-msvc@2.9.5':
|
'@tauri-apps/cli-win32-arm64-msvc@2.9.5':
|
||||||
resolution: {integrity: sha512-ulg7irow+ekjaK4inFHVq7m1KQebDSYNb17DFKV+h+x7qnLZymz2gHK7df2u4YyEjqvzwRd3AJpU3HNxRurSFQ==}
|
resolution: {integrity: sha512-ulg7irow+ekjaK4inFHVq7m1KQebDSYNb17DFKV+h+x7qnLZymz2gHK7df2u4YyEjqvzwRd3AJpU3HNxRurSFQ==}
|
||||||
@@ -3886,24 +3912,28 @@ packages:
|
|||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
lightningcss-linux-arm64-musl@1.30.1:
|
lightningcss-linux-arm64-musl@1.30.1:
|
||||||
resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==}
|
resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
lightningcss-linux-x64-gnu@1.30.1:
|
lightningcss-linux-x64-gnu@1.30.1:
|
||||||
resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==}
|
resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [glibc]
|
||||||
|
|
||||||
lightningcss-linux-x64-musl@1.30.1:
|
lightningcss-linux-x64-musl@1.30.1:
|
||||||
resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==}
|
resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
libc: [musl]
|
||||||
|
|
||||||
lightningcss-win32-arm64-msvc@1.30.1:
|
lightningcss-win32-arm64-msvc@1.30.1:
|
||||||
resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==}
|
resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
|
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
|
||||||
"productName": "log-lottery",
|
"productName": "log-lottery",
|
||||||
"version": "0.1.0",
|
"version": "0.0.4",
|
||||||
"identifier": "to2026.xyz",
|
"identifier": "to2026.xyz",
|
||||||
"build": {
|
"build": {
|
||||||
"frontendDist": "../dist",
|
"frontendDist": "../dist",
|
||||||
|
|||||||
@@ -1,153 +1,153 @@
|
|||||||
export default {
|
export default {
|
||||||
button: {
|
button: {
|
||||||
enterLottery: 'Enter Lottery',
|
enterLottery: 'Enter Lottery',
|
||||||
start: 'Start',
|
start: 'Start',
|
||||||
selectLucky: 'Draw the Lucky',
|
selectLucky: 'Draw the Lucky',
|
||||||
continue: 'Continue',
|
continue: 'Continue',
|
||||||
confirm: 'Confirm',
|
confirm: 'Confirm',
|
||||||
cancel: 'Cancel',
|
cancel: 'Cancel',
|
||||||
setting: 'Setting',
|
setting: 'Setting',
|
||||||
delete: 'Delete',
|
delete: 'Delete',
|
||||||
allDelete: 'Delete All',
|
allDelete: 'Delete All',
|
||||||
downloadTemplate: 'Download Template',
|
downloadTemplate: 'Download Template',
|
||||||
importData: 'Import Data',
|
importData: 'Import Data',
|
||||||
resetData: 'Reset Data',
|
resetData: 'Reset Data',
|
||||||
exportResult: 'Export Result',
|
exportResult: 'Export Result',
|
||||||
add: 'Add',
|
add: 'Add',
|
||||||
resetDefault: 'Reset Default',
|
resetDefault: 'Reset Default',
|
||||||
resetAllData: 'Reset All Data',
|
resetAllData: 'Reset All Data',
|
||||||
clearPattern: 'Clear Pattern',
|
clearPattern: 'Clear Pattern',
|
||||||
DefaultPattern: 'Default Pattern',
|
DefaultPattern: 'Default Pattern',
|
||||||
upload: 'Upload',
|
upload: 'Upload',
|
||||||
reset: 'Reset',
|
reset: 'Reset',
|
||||||
play: 'Play',
|
play: 'Play',
|
||||||
setLayout: 'Set Layout',
|
setLayout: 'Set Layout',
|
||||||
close: 'Close',
|
close: 'Close',
|
||||||
noInfoAndImport: 'No Info and import it',
|
noInfoAndImport: 'No Info and import it',
|
||||||
useDefault: 'Use Default Data',
|
useDefault: 'Use Default Data',
|
||||||
},
|
},
|
||||||
sidebar: {
|
sidebar: {
|
||||||
personConfiguration: 'Person Configuration',
|
personConfiguration: 'Person Configuration',
|
||||||
personList: 'Person List',
|
personList: 'Person List',
|
||||||
winnerList: 'Winner List',
|
winnerList: 'Winner List',
|
||||||
prizeConfiguration: 'Prize Configuration',
|
prizeConfiguration: 'Prize Configuration',
|
||||||
globalSetting: 'Global Configuration',
|
globalSetting: 'Global Configuration',
|
||||||
viewSetting: 'View Setting',
|
viewSetting: 'View Setting',
|
||||||
imagesManagement: 'Images Management',
|
imagesManagement: 'Images Management',
|
||||||
musicManagement: 'Music Management',
|
musicManagement: 'Music Management',
|
||||||
operatingInstructions: 'Operating Instructions',
|
operatingInstructions: 'Operating Instructions',
|
||||||
},
|
},
|
||||||
viewTitle: {
|
viewTitle: {
|
||||||
personManagement: 'Person Management',
|
personManagement: 'Person Management',
|
||||||
winnerManagement: 'Winner Management',
|
winnerManagement: 'Winner Management',
|
||||||
prizeManagement: 'Prize Management',
|
prizeManagement: 'Prize Management',
|
||||||
globalSetting: 'Global Setting',
|
globalSetting: 'Global Setting',
|
||||||
operatingInstructions: 'Operating Instructions',
|
operatingInstructions: 'Operating Instructions',
|
||||||
},
|
},
|
||||||
table: {
|
table: {
|
||||||
// person configuration
|
// person configuration
|
||||||
number: 'Number',
|
number: 'Number',
|
||||||
name: 'Name',
|
name: 'Name',
|
||||||
prizeName: 'Name',
|
prizeName: 'Name',
|
||||||
department: 'Department',
|
department: 'Department',
|
||||||
identity: 'Identity',
|
identity: 'Identity',
|
||||||
isLucky: 'Is Lucky',
|
isLucky: 'Is Lucky',
|
||||||
operation: 'Operation',
|
operation: 'Operation',
|
||||||
setLuckyNumber: 'Set Lucky Number',
|
setLuckyNumber: 'Set Lucky Number',
|
||||||
luckyPeopleNumber: 'Lucky People Number',
|
luckyPeopleNumber: 'Lucky People Number',
|
||||||
|
|
||||||
detail: 'Detail',
|
detail: 'Detail',
|
||||||
noneData: 'No Data',
|
noneData: 'No Data',
|
||||||
// prize configuration
|
// prize configuration
|
||||||
fullParticipation: 'FullParticipation',
|
fullParticipation: 'FullParticipation',
|
||||||
numberParticipants: 'NumberParticipants',
|
numberParticipants: 'NumberParticipants',
|
||||||
isDone: 'is Done',
|
isDone: 'is Done',
|
||||||
image: 'Image',
|
image: 'Image',
|
||||||
onceNumber: 'Once Number',
|
onceNumber: 'Once Number',
|
||||||
time: 'Time',
|
time: 'Time',
|
||||||
// view setting
|
// view setting
|
||||||
title: 'Main Title',
|
title: 'Main Title',
|
||||||
columnNumber: 'Column Number',
|
columnNumber: 'Column Number',
|
||||||
theme: 'Theme',
|
theme: 'Theme',
|
||||||
language: 'Language',
|
language: 'Language',
|
||||||
cardColor: 'Card Color',
|
cardColor: 'Card Color',
|
||||||
winnerColor: 'Winner Color',
|
winnerColor: 'Winner Color',
|
||||||
textColor: 'Text Color',
|
textColor: 'Text Color',
|
||||||
cardWidth: 'Card Width',
|
cardWidth: 'Card Width',
|
||||||
cardHeight: 'Card Height',
|
cardHeight: 'Card Height',
|
||||||
textSize: 'Text Size',
|
textSize: 'Text Size',
|
||||||
highlightColor: 'HighLight Color',
|
highlightColor: 'HighLight Color',
|
||||||
patternSetting: 'Pattern Setting',
|
patternSetting: 'Pattern Setting',
|
||||||
alwaysDisplay: 'Always Display Prize List',
|
alwaysDisplay: 'Always Display Prize List',
|
||||||
avatarDisplay: 'Show avatars or not',
|
avatarDisplay: 'Show avatars or not',
|
||||||
selectPicture: 'Select a Picture',
|
selectPicture: 'Select a Picture',
|
||||||
backgroundImage: 'Select Background Image',
|
backgroundImage: 'Select Background Image',
|
||||||
},
|
},
|
||||||
dialog: {
|
dialog: {
|
||||||
titleTip: 'Tip!',
|
titleTip: 'Tip!',
|
||||||
titleTemporary: 'Add Temporary Activity',
|
titleTemporary: 'Add Temporary Activity',
|
||||||
dialogPCWeb: 'Please use a PC browser to access for optimal display performance',
|
dialogPCWeb: 'Please use a PC browser to access for optimal display performance',
|
||||||
dialogDelAllPerson: 'This operation will delete all personnel list data. Do you want to continue?',
|
dialogDelAllPerson: 'This operation will delete all personnel list data. Do you want to continue?',
|
||||||
dialogResetWinner: 'This operation will clear the winning information of personnel. Do you want to continue?',
|
dialogResetWinner: 'This operation will clear the winning information of personnel. Do you want to continue?',
|
||||||
dialogResetAllData: 'This operation will reset all data. Do you want to continue?',
|
dialogResetAllData: 'This operation will reset all data. Do you want to continue?',
|
||||||
dialogSingleDrawLimit: 'Only 10 characters can be extracted in a single draw',
|
dialogSingleDrawLimit: 'Only 10 characters can be extracted in a single draw',
|
||||||
dialogLatestBrowser: 'Please use the latest version of Chrome or Edge browser',
|
dialogLatestBrowser: 'Please use the latest version of Chrome or Edge browser',
|
||||||
tipResetPrize: 'Performing operations may reset data, please proceed with caution',
|
tipResetPrize: 'Performing operations may reset data and cant recover, please proceed with caution',
|
||||||
},
|
},
|
||||||
tooltip: {
|
tooltip: {
|
||||||
settingConfiguration: 'Setting/Configuration',
|
settingConfiguration: 'Setting/Configuration',
|
||||||
nextSong: 'Right Click to Next Song',
|
nextSong: 'Right Click to Next Song',
|
||||||
noSongPlay: 'No Song to Play',
|
noSongPlay: 'No Song to Play',
|
||||||
prizeList: 'Prize List',
|
prizeList: 'Prize List',
|
||||||
addActivity: 'Add Activity',
|
addActivity: 'Add Activity',
|
||||||
downloadTemplateTip: 'After downloading the file, please fill in the data in Excel and save it in xlsx format',
|
downloadTemplateTip: 'After downloading the file, please fill in the data in Excel and save it in xlsx format',
|
||||||
uploadExcelTip: 'Upload the modified Excel file',
|
uploadExcelTip: 'Upload the modified Excel file',
|
||||||
leftClick: 'Left Click to Slice',
|
leftClick: 'Left Click to Slice',
|
||||||
toHome: 'to Home',
|
toHome: 'to Home',
|
||||||
resetLayout: 'This item is time-consuming and performance intensive',
|
resetLayout: 'This item is time-consuming and performance intensive',
|
||||||
defaultLayout: 'The default pattern setting is valid for 17 columns, please set the number of other columns yourself',
|
defaultLayout: 'The default pattern setting is valid for 17 columns, please set the number of other columns yourself',
|
||||||
doneCount: 'Number of winners',
|
doneCount: 'Number of winners',
|
||||||
edit: 'Edit',
|
edit: 'Edit',
|
||||||
delete: 'Delete',
|
delete: 'Delete',
|
||||||
},
|
},
|
||||||
error: {
|
error: {
|
||||||
require: 'required field',
|
require: 'required field',
|
||||||
requireNumber: 'please enter a number',
|
requireNumber: 'please enter a number',
|
||||||
minNumber1: 'the minimum is 1',
|
minNumber1: 'the minimum is 1',
|
||||||
maxNumber100: 'the maximum is 100',
|
maxNumber100: 'the maximum is 100',
|
||||||
uploadSuccess: 'Upload Success',
|
uploadSuccess: 'Upload Success',
|
||||||
uploadFail: 'Upload Failed',
|
uploadFail: 'Upload Failed',
|
||||||
notImage: 'Not Image',
|
notImage: 'Not Image',
|
||||||
personIsAllDone: 'All Person Is Done',
|
personIsAllDone: 'All Person Is Done',
|
||||||
personNotEnough: 'Person Is Not Enough',
|
personNotEnough: 'Person Is Not Enough',
|
||||||
startDraw: 'Now Draw {count} {leftover} people',
|
startDraw: 'Now Draw {count} {leftover} people',
|
||||||
completeInformation: 'Please provide complete information',
|
completeInformation: 'Please provide complete information',
|
||||||
},
|
},
|
||||||
placeHolder: {
|
placeHolder: {
|
||||||
enterTitle: 'Enter Title',
|
enterTitle: 'Enter Title',
|
||||||
name: 'Name',
|
name: 'Name',
|
||||||
winnerCount: 'Lucky Person Count',
|
winnerCount: 'Lucky Person Count',
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
yes: 'Yes',
|
yes: 'Yes',
|
||||||
no: 'No',
|
no: 'No',
|
||||||
number: 'Number',
|
number: 'Number',
|
||||||
isWin: 'isWin',
|
isWin: 'isWin',
|
||||||
avatar: 'avatar',
|
avatar: 'avatar',
|
||||||
department: 'Department',
|
department: 'Department',
|
||||||
name: 'Name',
|
name: 'Name',
|
||||||
identity: 'Identity',
|
identity: 'Identity',
|
||||||
prizeName: 'Prize Name',
|
prizeName: 'Prize Name',
|
||||||
prizeTime: 'Prize Time',
|
prizeTime: 'Prize Time',
|
||||||
operation: 'Operation',
|
operation: 'Operation',
|
||||||
delete: 'Delete',
|
delete: 'Delete',
|
||||||
removePerson: 'Remove the Person',
|
removePerson: 'Remove the Person',
|
||||||
defaultTitle: 'The Prelude to the Six Ministries of the Ming Dynasty Cabinet',
|
defaultTitle: 'The Prelude to the Six Ministries of the Ming Dynasty Cabinet',
|
||||||
xlsxName: 'personListTemplate-en.xlsx',
|
xlsxName: 'personListTemplate-en.xlsx',
|
||||||
readmeName: 'readme-en.md',
|
readmeName: 'readme-en.md',
|
||||||
},
|
},
|
||||||
footer: {
|
footer: {
|
||||||
'self-reflection': 'Turn inward and examine yourself when you encounter difficulties in life.',
|
'self-reflection': 'Turn inward and examine yourself when you encounter difficulties in life.',
|
||||||
'thiefEasy': 'Thief difficult mountain thief easily, breaking heart.',
|
'thiefEasy': 'Thief difficult mountain thief easily, breaking heart.',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,153 +1,153 @@
|
|||||||
export default {
|
export default {
|
||||||
button: {
|
button: {
|
||||||
enterLottery: '进入抽奖',
|
enterLottery: '进入抽奖',
|
||||||
start: '开始',
|
start: '开始',
|
||||||
selectLucky: '抽取幸运儿',
|
selectLucky: '抽取幸运儿',
|
||||||
continue: '继续',
|
continue: '继续',
|
||||||
confirm: '确认',
|
confirm: '确认',
|
||||||
cancel: '取消',
|
cancel: '取消',
|
||||||
setting: '设置',
|
setting: '设置',
|
||||||
delete: '删除',
|
delete: '删除',
|
||||||
allDelete: '删除全部',
|
allDelete: '删除全部',
|
||||||
downloadTemplate: '下载模板',
|
downloadTemplate: '下载模板',
|
||||||
importData: '导入数据',
|
importData: '导入数据',
|
||||||
resetData: '重置数据',
|
resetData: '重置数据',
|
||||||
exportResult: '导出结果',
|
exportResult: '导出结果',
|
||||||
add: '添加',
|
add: '添加',
|
||||||
resetDefault: '重置为默认',
|
resetDefault: '重置为默认',
|
||||||
resetAllData: '重置所有数据',
|
resetAllData: '重置所有数据',
|
||||||
clearPattern: '清除图案',
|
clearPattern: '清除图案',
|
||||||
DefaultPattern: '默认图案',
|
DefaultPattern: '默认图案',
|
||||||
upload: '上传',
|
upload: '上传',
|
||||||
reset: '重置',
|
reset: '重置',
|
||||||
play: '播放',
|
play: '播放',
|
||||||
setLayout: '重设布局',
|
setLayout: '重设布局',
|
||||||
close: '关闭',
|
close: '关闭',
|
||||||
noInfoAndImport: '暂无人员信息,前往导入',
|
noInfoAndImport: '暂无人员信息,前往导入',
|
||||||
useDefault: '使用默认数据',
|
useDefault: '使用默认数据',
|
||||||
},
|
},
|
||||||
sidebar: {
|
sidebar: {
|
||||||
personConfiguration: '人员配置',
|
personConfiguration: '人员配置',
|
||||||
personList: '人员列表',
|
personList: '人员列表',
|
||||||
winnerList: '中奖人员',
|
winnerList: '中奖人员',
|
||||||
prizeConfiguration: '奖品配置',
|
prizeConfiguration: '奖品配置',
|
||||||
globalSetting: '全局配置',
|
globalSetting: '全局配置',
|
||||||
viewSetting: '界面设置',
|
viewSetting: '界面设置',
|
||||||
imagesManagement: '图片管理',
|
imagesManagement: '图片管理',
|
||||||
musicManagement: '音乐管理',
|
musicManagement: '音乐管理',
|
||||||
operatingInstructions: '操作说明',
|
operatingInstructions: '操作说明',
|
||||||
},
|
},
|
||||||
viewTitle: {
|
viewTitle: {
|
||||||
personManagement: '人员管理',
|
personManagement: '人员管理',
|
||||||
winnerManagement: '已中奖人员管理',
|
winnerManagement: '已中奖人员管理',
|
||||||
prizeManagement: '奖项配置',
|
prizeManagement: '奖项配置',
|
||||||
globalSetting: '全局配置',
|
globalSetting: '全局配置',
|
||||||
operatingInstructions: '操作说明',
|
operatingInstructions: '操作说明',
|
||||||
},
|
},
|
||||||
table: {
|
table: {
|
||||||
// person configuration
|
// person configuration
|
||||||
number: '编号',
|
number: '编号',
|
||||||
name: '姓名',
|
name: '姓名',
|
||||||
prizeName: '名称',
|
prizeName: '名称',
|
||||||
department: '部门',
|
department: '部门',
|
||||||
identity: '身份',
|
identity: '身份',
|
||||||
isLucky: '是否中奖',
|
isLucky: '是否中奖',
|
||||||
operation: '操作',
|
operation: '操作',
|
||||||
setLuckyNumber: '设置中奖人数',
|
setLuckyNumber: '设置中奖人数',
|
||||||
luckyPeopleNumber: '中奖人数',
|
luckyPeopleNumber: '中奖人数',
|
||||||
|
|
||||||
detail: '详细信息',
|
detail: '详细信息',
|
||||||
noneData: '暂无数据',
|
noneData: '暂无数据',
|
||||||
// prize configuration
|
// prize configuration
|
||||||
fullParticipation: '全员参加',
|
fullParticipation: '可重复',
|
||||||
numberParticipants: '抽奖人数',
|
numberParticipants: '抽奖人数',
|
||||||
isDone: '已抽取',
|
isDone: '已抽取',
|
||||||
image: '图片',
|
image: '图片',
|
||||||
onceNumber: '单次抽取个数',
|
onceNumber: '单次抽取个数',
|
||||||
time: '时间',
|
time: '时间',
|
||||||
// view setting
|
// view setting
|
||||||
title: '主标题',
|
title: '主标题',
|
||||||
columnNumber: '列数',
|
columnNumber: '列数',
|
||||||
theme: '主题',
|
theme: '主题',
|
||||||
language: '语言',
|
language: '语言',
|
||||||
cardColor: '卡片颜色',
|
cardColor: '卡片颜色',
|
||||||
winnerColor: '中奖卡片颜色',
|
winnerColor: '中奖卡片颜色',
|
||||||
textColor: '文字颜色',
|
textColor: '文字颜色',
|
||||||
cardWidth: '卡片宽度',
|
cardWidth: '卡片宽度',
|
||||||
cardHeight: '卡片高度',
|
cardHeight: '卡片高度',
|
||||||
textSize: '文字大小',
|
textSize: '文字大小',
|
||||||
highlightColor: '高亮颜色',
|
highlightColor: '高亮颜色',
|
||||||
patternSetting: '图案设置',
|
patternSetting: '图案设置',
|
||||||
alwaysDisplay: '常显奖项列表',
|
alwaysDisplay: '常显奖项列表',
|
||||||
avatarDisplay: '是否显示头像',
|
avatarDisplay: '是否显示头像',
|
||||||
selectPicture: '选择一张图片',
|
selectPicture: '选择一张图片',
|
||||||
backgroundImage: '选择背景图片',
|
backgroundImage: '选择背景图片',
|
||||||
},
|
},
|
||||||
dialog: {
|
dialog: {
|
||||||
titleTip: '提示!',
|
titleTip: '提示!',
|
||||||
titleTemporary: '增加临时抽奖',
|
titleTemporary: '增加临时抽奖',
|
||||||
dialogPCWeb: '请使用PC进行访问以获得最佳显示效果',
|
dialogPCWeb: '请使用PC进行访问以获得最佳显示效果',
|
||||||
dialogDelAllPerson: '该操作会删除所有人员数据,是否继续?',
|
dialogDelAllPerson: '该操作会删除所有人员数据,是否继续?',
|
||||||
dialogResetWinner: '该操作会清空人员中奖信息,是否继续?',
|
dialogResetWinner: '该操作会清空人员中奖信息,是否继续?',
|
||||||
dialogResetAllData: '该操作会重置所有数据,是否继续?',
|
dialogResetAllData: '该操作会重置所有数据,是否继续?',
|
||||||
dialogSingleDrawLimit: '单次抽取只能抽取10位',
|
dialogSingleDrawLimit: '单次抽取只能抽取10位',
|
||||||
dialogLatestBrowser: '请使用最新版Chrome或者Edge浏览器',
|
dialogLatestBrowser: '请使用最新版Chrome或者Edge浏览器',
|
||||||
tipResetPrize: '进行操作可能会重置数据,请谨慎操作',
|
tipResetPrize: '进行操作可能会重置数据并不可恢复,请谨慎操作',
|
||||||
},
|
},
|
||||||
tooltip: {
|
tooltip: {
|
||||||
settingConfiguration: '设置/配置',
|
settingConfiguration: '设置/配置',
|
||||||
nextSong: '右键点击下一首',
|
nextSong: '右键点击下一首',
|
||||||
noSongPlay: '没有音乐可以播放',
|
noSongPlay: '没有音乐可以播放',
|
||||||
prizeList: '奖项列表',
|
prizeList: '奖项列表',
|
||||||
addActivity: '添加抽奖',
|
addActivity: '添加抽奖',
|
||||||
downloadTemplateTip: '下载文件后,请在excel中填写数据,并保存为xlsx格式',
|
downloadTemplateTip: '下载文件后,请在excel中填写数据,并保存为xlsx格式',
|
||||||
uploadExcelTip: '上传修改好的excel文件',
|
uploadExcelTip: '上传修改好的excel文件',
|
||||||
leftClick: '左键切割',
|
leftClick: '左键切割',
|
||||||
toHome: '主页',
|
toHome: '主页',
|
||||||
resetLayout: '该项比较耗费时间和性能',
|
resetLayout: '该项比较耗费时间和性能',
|
||||||
defaultLayout: '默认图案设置针对17列时有效,其他列数请自行设置',
|
defaultLayout: '默认图案设置针对17列时有效,其他列数请自行设置',
|
||||||
doneCount: '已抽取',
|
doneCount: '已抽取',
|
||||||
edit: '编辑',
|
edit: '编辑',
|
||||||
delete: '删除',
|
delete: '删除',
|
||||||
},
|
},
|
||||||
error: {
|
error: {
|
||||||
require: '必填项',
|
require: '必填项',
|
||||||
requireNumber: '请输入数字',
|
requireNumber: '请输入数字',
|
||||||
minNumber1: '最小为1',
|
minNumber1: '最小为1',
|
||||||
maxNumber100: '最大为100',
|
maxNumber100: '最大为100',
|
||||||
uploadSuccess: '上传成功',
|
uploadSuccess: '上传成功',
|
||||||
uploadFail: '上传失败',
|
uploadFail: '上传失败',
|
||||||
notImage: '不是图片',
|
notImage: '不是图片',
|
||||||
personIsAllDone: '抽奖抽完了',
|
personIsAllDone: '抽奖抽完了',
|
||||||
personNotEnough: '抽奖人数不足',
|
personNotEnough: '抽奖人数不足',
|
||||||
startDraw: '现在抽取{count}{leftover}人',
|
startDraw: '现在抽取{count}{leftover}人',
|
||||||
completeInformation: '请填写完整信息',
|
completeInformation: '请填写完整信息',
|
||||||
},
|
},
|
||||||
placeHolder: {
|
placeHolder: {
|
||||||
enterTitle: '输入标题',
|
enterTitle: '输入标题',
|
||||||
name: '名称',
|
name: '名称',
|
||||||
winnerCount: '中奖人数',
|
winnerCount: '中奖人数',
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
yes: '是',
|
yes: '是',
|
||||||
no: '否',
|
no: '否',
|
||||||
number: '编号',
|
number: '编号',
|
||||||
isWin: '是否中奖',
|
isWin: '是否中奖',
|
||||||
avatar: '头像',
|
avatar: '头像',
|
||||||
department: '部门',
|
department: '部门',
|
||||||
name: '姓名',
|
name: '姓名',
|
||||||
identity: '身份',
|
identity: '身份',
|
||||||
prizeName: '获奖',
|
prizeName: '获奖',
|
||||||
prizeTime: '获奖时间',
|
prizeTime: '获奖时间',
|
||||||
operation: '操作',
|
operation: '操作',
|
||||||
delete: '删除',
|
delete: '删除',
|
||||||
removePerson: '移入未中奖名单',
|
removePerson: '移入未中奖名单',
|
||||||
defaultTitle: '大明内阁六部御前奏对',
|
defaultTitle: '大明内阁六部御前奏对',
|
||||||
xlsxName: '人口登记表-zhCn.xlsx',
|
xlsxName: '人口登记表-zhCn.xlsx',
|
||||||
readmeName: 'readme-zhCn.md',
|
readmeName: 'readme-zhCn.md',
|
||||||
},
|
},
|
||||||
footer: {
|
footer: {
|
||||||
'self-reflection': '行有不得,反求诸己',
|
'self-reflection': '行有不得,反求诸己',
|
||||||
'thiefEasy': '破山中贼易,破心中贼难',
|
'thiefEasy': '破山中贼易,破心中贼难',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<script setup lang='ts'>
|
<script setup lang='ts'>
|
||||||
import localforage from 'localforage'
|
|
||||||
import { storeToRefs } from 'pinia'
|
import { storeToRefs } from 'pinia'
|
||||||
import { onMounted, ref, watch } from 'vue'
|
import { onMounted, ref, watch } from 'vue'
|
||||||
import { ColorPicker } from 'vue3-colorpicker'
|
import { ColorPicker } from 'vue3-colorpicker'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
import { useRouter } from 'vue-router'
|
||||||
import { z as zod } from 'zod'
|
import { z as zod } from 'zod'
|
||||||
import { daisyuiThemes } from '@/constant/theme'
|
import { daisyuiThemes } from '@/constant/theme'
|
||||||
import i18n, { languageList } from '@/locales/i18n'
|
import i18n, { languageList } from '@/locales/i18n'
|
||||||
@@ -13,6 +13,7 @@ import { clearAllDbStore } from '@/utils/localforage'
|
|||||||
import PatternSetting from './components/PatternSetting.vue'
|
import PatternSetting from './components/PatternSetting.vue'
|
||||||
import 'vue3-colorpicker/style.css'
|
import 'vue3-colorpicker/style.css'
|
||||||
|
|
||||||
|
const router = useRouter()
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
const globalConfig = useStore().globalConfig
|
const globalConfig = useStore().globalConfig
|
||||||
const personConfig = useStore().personConfig
|
const personConfig = useStore().personConfig
|
||||||
@@ -315,7 +316,11 @@ onMounted(() => {
|
|||||||
<span class="truncate w-option-xs">{{ item.name }}</span>
|
<span class="truncate w-option-xs">{{ item.name }}</span>
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
<span class="label">请先前往图片管理上传图片</span>
|
<span class="label">请先前往
|
||||||
|
<a class="link link-info" @click="() => { router.push('image') }">
|
||||||
|
图片管理
|
||||||
|
</a>
|
||||||
|
上传图片</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="grid w-full grid-cols-2 gap-4">
|
<div class="grid w-full grid-cols-2 gap-4">
|
||||||
<div class="flex flex-col items-center max-w-xs gap-1 form-control">
|
<div class="flex flex-col items-center max-w-xs gap-1 form-control">
|
||||||
|
|||||||
@@ -1,18 +1,36 @@
|
|||||||
<script setup lang='ts'>
|
<script setup lang='ts'>
|
||||||
import markdownit from 'markdown-it'
|
import markdownit from 'markdown-it'
|
||||||
import { onMounted, ref } from 'vue'
|
import { onMounted, ref, watch } from 'vue'
|
||||||
|
import readmeEn from '@/../public/readme-en.md?raw'
|
||||||
|
import readmeZh from '@/../public/readme-zhCn.md?raw'
|
||||||
import i18n from '@/locales/i18n'
|
import i18n from '@/locales/i18n'
|
||||||
|
|
||||||
const md = markdownit()
|
const md = markdownit()
|
||||||
const readmeHtml = ref('')
|
const readmeHtml = ref('')
|
||||||
function readMd() {
|
|
||||||
fetch(`/log-lottery/${i18n.global.t('data.readmeName')}`)
|
|
||||||
.then(res => res.text())
|
|
||||||
.then((res) => {
|
|
||||||
readmeHtml.value = md.render(res)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
function getReadmeContent() {
|
||||||
|
const locale = i18n.global.locale.value
|
||||||
|
if (locale === 'zhCn') {
|
||||||
|
return readmeZh
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return readmeEn
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function readMd() {
|
||||||
|
try {
|
||||||
|
const content = getReadmeContent()
|
||||||
|
readmeHtml.value = md.render(content)
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.error('Failed to load readme:', error)
|
||||||
|
readmeHtml.value = '<p>Failed to load README content.</p>'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 监听语言变化
|
||||||
|
watch(() => i18n.global.locale.value, () => {
|
||||||
|
readMd()
|
||||||
|
})
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
readMd()
|
readMd()
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user