修改 ICON 和部門資料

This commit is contained in:
2025-09-19 08:29:51 +08:00
parent 08a1f1b248
commit 753e32ada2
14 changed files with 596 additions and 32 deletions

View File

@@ -16,12 +16,28 @@ import {
Line,
ComposedChart,
} from "recharts"
import { Users, Eye, Star, TrendingUp, Clock, Activity, Calendar, AlertTriangle } from "lucide-react"
import { useState } from "react"
import { Users, Eye, Star, TrendingUp, Clock, Activity, Calendar, AlertTriangle, Loader2 } from "lucide-react"
import { useState, useEffect } from "react"
export function AnalyticsDashboard() {
const [showHistoryModal, setShowHistoryModal] = useState(false)
const [selectedDateRange, setSelectedDateRange] = useState("近7天")
const [isLoading, setIsLoading] = useState(true)
const [analyticsData, setAnalyticsData] = useState({
totalUsers: 0,
todayActiveUsers: 0,
todayActiveGrowth: 0,
avgRating: 0,
ratingGrowth: 0,
totalApps: 0,
newThisWeek: 0,
userGrowth: 0,
dailyUsageData: [],
categoryData: [],
topApps: [],
satisfactionRate: 0,
weeklyFeedback: 0
})
// 24小時使用數據 - 優化版本
const hourlyData = [

View File

@@ -978,10 +978,27 @@ export function AppManagement() {
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
</div>
@@ -1132,10 +1149,27 @@ export function AppManagement() {
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
</div>

View File

@@ -2652,14 +2652,27 @@ export function CompetitionManagement() {
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU2">MBU2</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="研發部"></SelectItem>
<SelectItem value="產品部"></SelectItem>
<SelectItem value="技術部"></SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
<SelectItem value="其他"></SelectItem>
</SelectContent>
</Select>
@@ -2924,14 +2937,27 @@ export function CompetitionManagement() {
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU2">MBU2</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="研發部"></SelectItem>
<SelectItem value="產品部"></SelectItem>
<SelectItem value="技術部"></SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
<SelectItem value="其他"></SelectItem>
</SelectContent>
</Select>
@@ -5107,10 +5133,27 @@ export function CompetitionManagement() {
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
</div>
@@ -5186,10 +5229,27 @@ export function CompetitionManagement() {
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
</div>
@@ -5296,10 +5356,27 @@ export function CompetitionManagement() {
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
</div>
@@ -6197,10 +6274,27 @@ export function CompetitionManagement() {
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
</div>
@@ -6284,10 +6378,27 @@ export function CompetitionManagement() {
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
</div>
@@ -6698,7 +6809,7 @@ export function CompetitionManagement() {
<span className="text-red-500">*</span>
</Label>
<Select
value={newJudge.department === "" || !["HQBU", "ITBU", "MBU1", "MBU2", "SBU", "研發部", "產品部", "技術部"].includes(newJudge.department) ? "custom" : newJudge.department}
value={newJudge.department === "" || !["ACBU", "AUBU", "FAB3", "FNBU", "HQBU", "HRBU", "IBU", "ICDU", "ICBU", "ITBU", "MBU1", "MBU5", "PJA", "PBU", "SBG", "SBU", "董事會", "法務室", "關係企業發展", "稽核室", "總經理室"].includes(newJudge.department) ? "custom" : newJudge.department}
onValueChange={(value) => {
if (value === "custom") {
setNewJudge({ ...newJudge, department: "" })
@@ -6711,20 +6822,33 @@ export function CompetitionManagement() {
<SelectValue placeholder="選擇部門" />
</SelectTrigger>
<SelectContent>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU2">MBU2</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="研發部"></SelectItem>
<SelectItem value="產品部"></SelectItem>
<SelectItem value="技術部"></SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
<SelectItem value="custom">/...</SelectItem>
</SelectContent>
</Select>
{/* 自定義部門輸入框 */}
{(newJudge.department === "" || !["HQBU", "ITBU", "MBU1", "MBU2", "SBU", "研發部", "產品部", "技術部"].includes(newJudge.department)) && (
{(newJudge.department === "" || !["ACBU", "AUBU", "FAB3", "FNBU", "HQBU", "HRBU", "IBU", "ICDU", "ICBU", "ITBU", "MBU1", "MBU5", "PJA", "PBU", "SBG", "SBU", "董事會", "法務室", "關係企業發展", "稽核室", "總經理室"].includes(newJudge.department)) && (
<Input
value={newJudge.department}
onChange={(e) => setNewJudge({ ...newJudge, department: e.target.value })}

View File

@@ -308,10 +308,27 @@ export function TeamManagement() {
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
</div>

View File

@@ -806,10 +806,27 @@ export function UserManagement() {
</SelectTrigger>
<SelectContent>
<SelectItem value="all"></SelectItem>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
@@ -1183,10 +1200,27 @@ export function UserManagement() {
<SelectValue />
</SelectTrigger>
<SelectContent>
<SelectItem value="ACBU">ACBU</SelectItem>
<SelectItem value="AUBU">AUBU</SelectItem>
<SelectItem value="FAB3">FAB3</SelectItem>
<SelectItem value="FNBU">FNBU</SelectItem>
<SelectItem value="HQBU">HQBU</SelectItem>
<SelectItem value="HRBU">HRBU</SelectItem>
<SelectItem value="IBU">IBU</SelectItem>
<SelectItem value="ICDU">ICDU</SelectItem>
<SelectItem value="ICBU">ICBU</SelectItem>
<SelectItem value="ITBU">ITBU</SelectItem>
<SelectItem value="MBU1">MBU1</SelectItem>
<SelectItem value="MBU5">MBU5</SelectItem>
<SelectItem value="PJA">PJA</SelectItem>
<SelectItem value="PBU">PBU</SelectItem>
<SelectItem value="SBG">SBG</SelectItem>
<SelectItem value="SBU">SBU</SelectItem>
<SelectItem value="董事會"></SelectItem>
<SelectItem value="法務室"></SelectItem>
<SelectItem value="關係企業發展"></SelectItem>
<SelectItem value="稽核室"></SelectItem>
<SelectItem value="總經理室"></SelectItem>
</SelectContent>
</Select>
</div>