Files
Claude 66847150be 资料上传支持 Excel 全格式:xlsx、xls、xlsm、xlsb、ods
- 改用 SheetJS(官方 CDN 0.20.3,devDependency)读取表格:按工作表逐行转文字,
  公式取计算结果,日期、百分比按单元格格式显示,去掉空行和行尾空格
- 兼容业务系统导出的网页格式 .xls;损坏或加密的文件给出明确提示,不存乱码
- 资料页与使用说明列出支持的格式

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01MMDFmVTvRksi1ZT8aPGXoL
2026-10-09 21:29:30 +00:00

134 lines
4.0 KiB
JSON

{
"name": "@nocobase/portal-template-default",
"displayName": "Default Template",
"version": "3.1.1",
"type": "module",
"nocobase": {
"defaultTemplateVersion": "3.1.1"
},
"devDependencies": {
"@ai-sdk/react": "2.0.0",
"@base-ui/react": "^1.6.0",
"@dicebear/core": "^9.4.3",
"@eslint/js": "^9.25.0",
"@fontsource-variable/geist": "^5.3.0",
"@hookform/resolvers": "^5.0.1",
"@nocobase/ai-employee-avatars": "^1.0.2",
"@nocobase/portal-sdk": "workspace:^",
"@playwright/test": "^1.62.1",
"@refinedev/cli": "^2.16.48",
"@refinedev/core": "^5.0.8",
"@refinedev/devtools": "^2.0.1",
"@refinedev/react-hook-form": "^5.0.0",
"@refinedev/react-router": "^2.0.0",
"@refinedev/react-table": "^6.0.0",
"@refinedev/rest": "^2.1.0",
"@refinedev/simple-rest": "^6.0.0",
"@shadcn/react": "^0.2.1",
"@tailwindcss/postcss": "^4.1.4",
"@tailwindcss/vite": "^4.1.8",
"@tanstack/react-query": "^5.81.5",
"@tanstack/react-table": "^8.2.6",
"@testing-library/jest-dom": "^7.0.0",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.3",
"@tiptap/extension-link": "^3.29.0",
"@tiptap/extension-placeholder": "^3.29.0",
"@tiptap/extension-text-style": "3.29.0",
"@tiptap/pm": "^3.29.0",
"@tiptap/react": "^3.29.0",
"@tiptap/starter-kit": "^3.29.0",
"@types/node": "^20",
"@types/react": "^19.1.0",
"@types/react-dom": "^19.1.0",
"@typescript-eslint/eslint-plugin": "^5.57.1",
"@typescript-eslint/parser": "^5.57.1",
"@vitejs/plugin-react": "^4.4.1",
"@vitest/coverage-v8": "^4.1.10",
"ai": "5.0.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"date-fns": "^4.1.0",
"dayjs": "^1.10.7",
"dingtalk-jsapi": "3.1.1",
"docx": "9.5.1",
"echarts": "^5.5.0",
"echarts-for-react": "3.0.2",
"embla-carousel-react": "^8.6.0",
"eslint": "^9.25.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.4.19",
"eventsource-parser": "3.1.0",
"exceljs": "4.4.0",
"globals": "^16.0.0",
"ignore": "^7.0.6",
"input-otp": "^1.4.2",
"jsdom": "^30.0.1",
"lucide-react": "^0.487.0",
"mammoth": "1.8.0",
"next-themes": "^0.4.6",
"pdfjs-dist": "4.10.38",
"postcss": "^8.5.3",
"react": "19.1.0",
"react-day-picker": "10.0.1",
"react-dom": "19.1.0",
"react-error-boundary": "^6.0.0",
"react-grab": "0.1.50",
"react-hook-form": "^7.57.0",
"react-markdown": "^10.1.0",
"react-resizable-panels": "^4.12.2",
"react-router": "^7.0.2",
"recharts": "^3.8.0",
"remark-gfm": "^4.0.1",
"shadcn": "^4.13.1",
"sonner": "^2.0.3",
"tailwind-merge": "^3.2.0",
"tailwindcss": "^4.1.4",
"tw-animate-css": "^1.2.5",
"typescript": "^5.8.3",
"typescript-eslint": "^8.30.1",
"vite": "^6.3.5",
"vitest": "^4.1.10",
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
"zod": "^3.25.76"
},
"publishConfig": {
"access": "public"
},
"repository": {
"type": "git",
"url": "git+https://github.com/nocobase/portal-template-default.git"
},
"scripts": {
"dev": "vite --host 0.0.0.0",
"build": "tsc && refine build",
"build:html": "node ./scripts/build-html.mjs",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"test:sdk": "pnpm --dir sdk test",
"test:e2e": "playwright test",
"test:e2e:ui": "playwright test --ui",
"test:e2e:debug": "playwright test --debug",
"test:e2e:install": "playwright install chromium",
"test:all": "pnpm typecheck && pnpm test && pnpm test:sdk && pnpm build && pnpm test:e2e",
"start": "refine start",
"refine": "refine",
"sdk:check": "pnpm exec portal-sdk check"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}