Files
biss f072d636c0
Vercel Deploy / deploy (push) Successful in 54s
新增tickets
2026-03-28 20:31:07 +08:00

157 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 单据查询系统 - Supabase 配置指南
## 1. Supabase 数据库设置
### 1.1 创建数据表
在您的 Supabase 项目中执行以下 SQL 语句创建 `tickets` 表:
```sql
-- 创建单据表
CREATE TABLE tickets (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
ticket_number VARCHAR(50) NOT NULL UNIQUE, -- 编号
customer_name VARCHAR(100), -- 姓名
reason TEXT, -- 事由
result TEXT, -- 处理结果
amount DECIMAL(10, 2) DEFAULT 0, -- 金额
issuer VARCHAR(100), -- 开具人
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), -- 日期
processed BOOLEAN DEFAULT FALSE, -- 处理状态
-- 兼容原字段,保留以便现有代码不报错
ticket_type VARCHAR(20) DEFAULT 'other',
status VARCHAR(20) DEFAULT 'pending',
contact_phone VARCHAR(20),
email VARCHAR(100),
remarks TEXT,
completed_at TIMESTAMP WITH TIME ZONE,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- 创建索引以提高查询性能
CREATE INDEX idx_ticket_number ON tickets(ticket_number);
CREATE INDEX idx_ticket_type ON tickets(ticket_type);
CREATE INDEX idx_status ON tickets(status);
CREATE INDEX idx_created_at ON tickets(created_at);
-- 创建自动更新时间戳的触发器
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = NOW();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER update_tickets_updated_at
BEFORE UPDATE ON tickets
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
```
### 1.2 设置行级安全策略(RLS)
```sql
-- 启用行级安全
ALTER TABLE tickets ENABLE ROW LEVEL SECURITY;
-- 允许所有人读取(根据需要调整)
CREATE POLICY "Allow public read access" ON tickets
FOR SELECT USING (true);
-- 允许认证用户插入和更新
CREATE POLICY "Allow authenticated insert" ON tickets
FOR INSERT TO authenticated WITH CHECK (true);
CREATE POLICY "Allow authenticated update" ON tickets
FOR UPDATE TO authenticated WITH CHECK (true);
```
## 2. 获取 Supabase 凭证
1. 登录 [Supabase](https://supabase.com)
2. 选择您的项目
3. 进入 **Settings** > **API**
4. 复制以下内容:
- **Project URL** (替换代码中的 `YOUR_SUPABASE_URL`)
- **anon/public key** (替换代码中的 `YOUR_SUPABASE_ANON_KEY`)
## 3. 配置前端代码
打开 `index.html``detail.html`,找到以下代码:
```javascript
const SUPABASE_URL = 'YOUR_SUPABASE_URL';
const SUPABASE_ANON_KEY = 'YOUR_SUPABASE_ANON_KEY';
```
替换为您从 Supabase 获取的实际值。
## 4. Vercel 部署
### 4.1 安装 Vercel CLI(可选)
```bash
npm install -g vercel
```
### 4.2 部署步骤
1. **使用 Vercel Dashboard 部署**
- 访问 [vercel.com](https://vercel.com)
- 导入您的 Git 仓库
- Vercel 会自动检测 HTML 文件并部署
2. **使用 CLI 部署**
```bash
cd ticket
vercel
```
### 4.3 环境变量(推荐)
为安全起见,建议使用环境变量:
1. 在 Vercel 项目设置中添加环境变量:
- `NEXT_PUBLIC_SUPABASE_URL`
- `NEXT_PUBLIC_SUPABASE_ANON_KEY`
2. 修改代码使用环境变量:
```javascript
const SUPABASE_URL = process.env.NEXT_PUBLIC_SUPABASE_URL || 'YOUR_SUPABASE_URL';
const SUPABASE_ANON_KEY = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || 'YOUR_SUPABASE_ANON_KEY';
```
## 5. 测试数据
您可以插入一些测试数据:
```sql
INSERT INTO tickets (ticket_number, ticket_type, amount, status, customer_name, contact_phone, email, remarks) VALUES
('TKT20260328001', 'invoice', 1500.00, 'completed', '张三', '13800138000', 'zhangsan@example.com', '办公用品采购'),
('TKT20260328002', 'receipt', 800.00, 'processing', '李四', '13900139000', 'lisi@example.com', '咨询服务费'),
('TKT20260328003', 'order', 2500.00, 'pending', '王五', '13700137000', 'wangwu@example.com', '设备租赁'),
('TKT20260328004', 'invoice', 3200.00, 'completed', '赵六', '13600136000', 'zhaoliu@example.com', '软件授权费'),
('TKT20260328005', 'other', 500.00, 'cancelled', '钱七', '13500135000', 'qianqi@example.com', '其他费用');
```
## 6. 功能说明
- ✅ 按单据编号模糊查询
- ✅ 按单据类型筛选
- ✅ 按日期范围查询
- ✅ 查看单据详情
- ✅ 打印单据功能
- ✅ 响应式设计,支持移动端
## 7. 注意事项
1. **安全性**:生产环境务必使用环境变量存储敏感信息
2. **权限控制**:根据实际需求调整 RLS 策略
3. **性能优化**:大数据量时考虑分页和更多索引
4. **错误处理**:已包含基本的错误提示机制
## 8. 自定义样式
如需修改样式,可以编辑 HTML 文件中的 `<style>` 部分,或创建独立的 CSS 文件。