Merge pull request #155 from LOG1997/release

Release
This commit is contained in:
LOG1997
2025-12-30 20:34:34 +08:00
committed by GitHub
6 changed files with 152 additions and 155 deletions

View File

@@ -8,7 +8,7 @@ describe('getRandomElements', () => {
const result = getRandomElements(sourceArray, 3) const result = getRandomElements(sourceArray, 3)
expect(result).toHaveLength(3) expect(result).toHaveLength(3)
result.forEach((element) => { result.forEach((element: any) => {
expect(sourceArray).toContain(element) expect(sourceArray).toContain(element)
}) })
}) })
@@ -65,7 +65,7 @@ describe('getRandomElements', () => {
const result = getRandomElements(sourceArray, 2) const result = getRandomElements(sourceArray, 2)
expect(result).toHaveLength(2) expect(result).toHaveLength(2)
result.forEach((element) => { result.forEach((element: any) => {
expect(sourceArray).toContain(element) expect(sourceArray).toContain(element)
}) })
}) })
@@ -80,7 +80,7 @@ describe('getRandomElements', () => {
const result = getRandomElements(sourceArray, 2) const result = getRandomElements(sourceArray, 2)
expect(result).toHaveLength(2) expect(result).toHaveLength(2)
result.forEach((element) => { result.forEach((element: any) => {
expect(sourceArray).toContain(element) expect(sourceArray).toContain(element)
}) })
}) })
@@ -110,7 +110,7 @@ describe('getRandomElements', () => {
// 多次调用并统计元素出现的次数 // 多次调用并统计元素出现的次数
for (let i = 0; i < times; i++) { for (let i = 0; i < times; i++) {
const result = getRandomElements(sourceArray, count) const result = getRandomElements(sourceArray, count)
result.forEach((element) => { result.forEach((element: any) => {
const count = elementCounts.get(element) || 0 const count = elementCounts.get(element) || 0
elementCounts.set(element, count + 1) elementCounts.set(element, count + 1)
}) })

Binary file not shown.

View File

@@ -30,11 +30,10 @@ const actionsColumns = computed<any[]>(() => {
<template> <template>
<div class="overflow-x-auto"> <div class="overflow-x-auto">
<table class="table min-w-[600px]"> <table class="table min-w-150">
<!-- head --> <!-- head -->
<thead> <thead>
<tr> <tr>
<th />
<th v-for="(item, index) in dataColumns" :key="index"> <th v-for="(item, index) in dataColumns" :key="index">
{{ item.label }} {{ item.label }}
</th> </th>

View File

@@ -1,6 +1,3 @@
import { reset } from 'canvas-confetti'
import { time } from 'zod/v4/core/regexes.cjs'
export const tableEn = { export const tableEn = {
// field block name // field block name
abilitySetting: 'Ability Setting', abilitySetting: 'Ability Setting',
@@ -14,6 +11,7 @@ export const tableEn = {
name: 'Name', name: 'Name',
prizeName: 'Name', prizeName: 'Name',
department: 'Department', department: 'Department',
avatar: 'Avatar',
identity: 'Identity', identity: 'Identity',
isLucky: 'Is Lucky', isLucky: 'Is Lucky',
operation: 'Operation', operation: 'Operation',
@@ -65,6 +63,7 @@ export const tableZhCn = {
name: '姓名', name: '姓名',
prizeName: '名称', prizeName: '名称',
department: '部门', department: '部门',
avatar: '头像',
identity: '身份', identity: '身份',
isLucky: '是否中奖', isLucky: '是否中奖',
operation: '操作', operation: '操作',

View File

@@ -14,29 +14,29 @@ const singlePersonData = defineModel<any>('singlePersonData', { required: true }
<form class="fieldset rounded-box w-xs p-4" @submit="(e) => addOnePerson(addOnePersonDrawerRef, e)"> <form class="fieldset rounded-box w-xs p-4" @submit="(e) => addOnePerson(addOnePersonDrawerRef, e)">
<label class="fieldset"> <label class="fieldset">
<span class="label">{{ t('table.number') }}</span> <span class="label">{{ t('table.number') }}</span>
<input v-model="singlePersonData.uid" type="text" class="input validator" :placeholder="t('placeHolder.number')"> <input v-model="singlePersonData.uid" type="text" class="input validator" :placeholder="t('table.number')">
</label> </label>
<fieldset class="fieldset"> <fieldset class="fieldset">
<label class="label" required>{{ t('table.name') }}<span class="text-red-500">*</span></label> <label class="label" required>{{ t('table.name') }}<span class="text-red-500">*</span></label>
<input v-model="singlePersonData.name" type="text" class="input validator" :placeholder="t('placeHolder.name')" required minlength="1"> <input v-model="singlePersonData.name" type="text" class="input validator" :placeholder="t('table.name')" required minlength="1">
<p class="validator-hint hidden"> <p class="validator-hint hidden">
{{ t('error.personNameEmpty') }} {{ t('error.personNameEmpty') }}
</p> </p>
</fieldset> </fieldset>
<label class="fieldset"> <label class="fieldset">
<span class="label">{{ t('table.department') }}</span> <span class="label">{{ t('table.department') }}</span>
<input v-model="singlePersonData.department" type="text" class="input validator" :placeholder="t('placeHolder.department')"> <input v-model="singlePersonData.department" type="text" class="input validator" :placeholder="t('table.department')">
</label> </label>
<label class="fieldset"> <label class="fieldset">
<span class="label">{{ t('table.avatar') }}</span> <span class="label">{{ t('table.avatar') }}</span>
<input v-model="singlePersonData.avatar" type="text" class="input validator" :placeholder="t('placeHolder.avatar')"> <input v-model="singlePersonData.avatar" type="text" class="input validator" :placeholder="t('table.avatar')">
</label> </label>
<label class="fieldset"> <label class="fieldset">
<span class="label">{{ t('table.identity') }}</span> <span class="label">{{ t('table.identity') }}</span>
<input v-model="singlePersonData.identity" type="text" class="input validator" :placeholder="t('placeHolder.identity')"> <input v-model="singlePersonData.identity" type="text" class="input validator" :placeholder="t('table.identity')">
</label> </label>
<button class="btn btn-neutral mt-4" type="submit"> <button class="btn btn-neutral mt-4" type="submit">
{{ t('button.submit') }} {{ t('button.confirm') }}
</button> </button>
<button class="btn btn-ghost mt-1" type="reset" @click="addOnePersonDrawerRef.closeDrawer()"> <button class="btn btn-ghost mt-1" type="reset" @click="addOnePersonDrawerRef.closeDrawer()">
{{ t('button.cancel') }} {{ t('button.cancel') }}

View File

@@ -1,5 +1,4 @@
import * as XLSX from 'xlsx' import * as XLSX from 'xlsx'
import i18n from '@/locales/i18n'
import { addOtherInfo } from '@/utils' import { addOtherInfo } from '@/utils'
// 定义消息类型 // 定义消息类型
interface WorkerMessage { interface WorkerMessage {