diff --git a/doc/裁判邀请功能使用说明.md b/doc/裁判邀请功能使用说明.md
new file mode 100644
index 0000000..2f2a649
--- /dev/null
+++ b/doc/裁判邀请功能使用说明.md
@@ -0,0 +1,181 @@
+# 裁判邀请功能使用说明
+
+## 功能概述
+
+裁判邀请模块用于为武术赛事邀请裁判,通过生成邀请码的方式让裁判登录系统并回复邀请。
+
+## 完整操作流程
+
+### 1. 准备工作
+
+#### 1.1 创建赛事
+- 进入"赛事管理"模块
+- 创建新的赛事
+- 确保赛事状态为"进行中"
+
+#### 1.2 添加裁判
+- 进入"评委管理"模块
+- 点击"新增评委"按钮
+- 填写裁判基本信息:
+ - 姓名、性别、手机号、身份证号
+ - 裁判类型(主裁判/普通裁判)
+ - 等级/职称
+ - 擅长项目
+- 保存裁判信息
+
+### 2. 生成邀请码
+
+#### 方式一:从评委库导入(推荐)
+
+这是为新裁判生成邀请码的主要方式。
+
+**操作步骤:**
+1. 进入"裁判邀请"页面
+2. 选择赛事(页面顶部下拉框)
+3. 点击"从评委库导入"按钮
+4. 在弹出的对话框中:
+ - 可以搜索裁判(按姓名、手机号、类型)
+ - 勾选需要邀请的裁判(支持多选)
+ - 查看已选择的裁判数量
+5. 点击"确定导入"按钮
+6. 系统自动为选中的裁判批量生成邀请码
+7. 生成成功后,邀请列表会自动刷新
+
+**特点:**
+- ✅ 支持批量操作
+- ✅ 可以搜索和筛选裁判
+- ✅ 自动生成邀请码
+- ✅ 适合首次邀请裁判
+
+#### 方式二:批量生成邀请码
+
+用于为已有邀请记录但未生成邀请码的裁判批量生成。
+
+**操作步骤:**
+1. 在邀请列表中勾选需要生成邀请码的记录
+2. 点击"批量生成邀请码"按钮
+3. 确认操作
+4. 系统为选中的裁判生成邀请码
+
+**注意:**
+- ⚠️ 只能为已有邀请记录的裁判生成
+- ⚠️ 如果是新裁判,请使用"从评委库导入"
+
+#### 方式三:单个生成邀请码
+
+用于为单个裁判生成或重新生成邀请码。
+
+**操作步骤:**
+1. 在邀请列表中找到目标裁判
+2. 如果未生成邀请码:点击"生成邀请码"按钮
+3. 如果已有邀请码:点击邀请码旁边的刷新图标"重新生成"
+4. 邀请码会自动复制到剪贴板
+
+### 3. 发送邀请
+
+生成邀请码后,需要将邀请码发送给裁判:
+
+**发送方式:**
+- 📧 邮件:将邀请码通过邮件发送
+- 📱 短信:将邀请码通过短信发送
+- 💬 微信/其他:通过即时通讯工具发送
+
+**邀请码使用:**
+- 裁判收到邀请码后,访问系统登录页面
+- 输入邀请码进行登录
+- 查看赛事信息并回复邀请(接受/拒绝)
+
+### 4. 管理邀请
+
+#### 4.1 查看邀请状态
+
+邀请状态说明:
+- 🟡 **待回复**:已发送邀请,裁判尚未回复
+- 🟢 **已接受**:裁判已接受邀请
+- 🔴 **已拒绝**:裁判已拒绝邀请
+- ⚪ **已取消**:管理员已取消邀请
+
+#### 4.2 邀请操作
+
+**对于"待回复"状态的邀请:**
+- **重发**:重新发送邀请通知
+- **提醒**:发送提醒消息催促裁判回复
+- **取消**:取消邀请(需填写取消原因)
+
+**对于"已接受"状态的邀请:**
+- **确认**:确认裁判参与(可进行后续的场地、项目分配)
+
+**所有邀请:**
+- **查看**:查看邀请详细信息
+- **复制邀请码**:点击邀请码即可复制
+
+### 5. 统计信息
+
+页面顶部显示四个统计卡片:
+- 📊 **总邀请数**:已发送的邀请总数
+- ⏰ **待回复**:等待裁判回复的邀请数
+- ✅ **已接受**:裁判已接受的邀请数
+- ❌ **已拒绝**:裁判已拒绝的邀请数
+
+### 6. 导出数据
+
+点击"导出数据"按钮可以导出当前筛选条件下的邀请列表为Excel文件。
+
+## 常见问题
+
+### Q1: 为什么"批量生成邀请码"按钮是灰色的?
+**A:** 可能的原因:
+1. 未选择赛事
+2. 赛事列表正在加载
+3. 未勾选任何邀请记录
+
+### Q2: 如何为新裁判生成邀请码?
+**A:** 使用"从评委库导入"功能:
+1. 先在"评委管理"中添加裁判
+2. 在"裁判邀请"页面点击"从评委库导入"
+3. 选择裁判并确认导入
+
+### Q3: 邀请码可以重复使用吗?
+**A:** 不可以。每个邀请码只能使用一次。如果需要重新邀请,请使用"重新生成"功能。
+
+### Q4: 邀请码有效期是多久?
+**A:** 默认有效期为30天。过期后需要重新生成。
+
+### Q5: 如何知道裁判是否收到邀请?
+**A:**
+- 查看邀请状态,如果裁判已登录并回复,状态会更新
+- 可以使用"提醒"功能发送提醒消息
+- 建议通过电话或其他方式确认裁判是否收到
+
+## 技术说明
+
+### 邀请码生成规则
+- 每个赛事+裁判组合生成唯一邀请码
+- 邀请码包含角色信息(主裁判/普通裁判)
+- 可以预分配场地和项目
+
+### 数据关联
+```
+赛事 (Competition)
+ ↓
+邀请记录 (JudgeInvite)
+ ↓
+裁判 (Judge)
+```
+
+### API接口
+- 生成邀请码:`POST /api/blade-martial/judgeInvite/generate`
+- 批量生成:`POST /api/blade-martial/judgeInvite/generate/batch`
+- 重新生成:`PUT /api/blade-martial/judgeInvite/regenerate/{inviteId}`
+- 邀请列表:`GET /api/blade-martial/judgeInvite/list`
+- 邀请统计:`GET /api/blade-martial/judgeInvite/statistics`
+
+## 更新日志
+
+### 2025-12-13
+- ✨ 新增"从评委库导入"功能
+- ✨ 支持裁判搜索和筛选
+- ✨ 优化邀请码生成流程
+- 🐛 修复按钮禁用逻辑问题
+- 🐛 修复赛事选择初始化问题
+- 💄 优化用户界面和交互体验
diff --git a/doc/赛事列表加载问题排查指南.md b/doc/赛事列表加载问题排查指南.md
new file mode 100644
index 0000000..32565b2
--- /dev/null
+++ b/doc/赛事列表加载问题排查指南.md
@@ -0,0 +1,260 @@
+# 赛事列表加载问题排查指南
+
+## 问题现象
+
+- 赛事下拉框显示"无数据"
+- 所有按钮(发送邀请、批量生成邀请码等)无法点击
+- 页面显示"暂无数据"
+
+## 排查步骤
+
+### 1. 检查浏览器控制台
+
+打开浏览器开发者工具(F12),查看Console标签页:
+
+**查看日志输出:**
+```
+赛事列表API返回: {...}
+解析后的赛事列表: [...]
+```
+
+**可能的错误信息:**
+- `加载赛事列表失败: Network Error` - 网络连接问题
+- `加载赛事列表失败: 404` - API路径错误
+- `加载赛事列表失败: 500` - 后端服务错误
+
+### 2. 检查Network请求
+
+在开发者工具的Network标签页中:
+
+1. 刷新页面
+2. 找到 `/api/martial/competition/list` 请求
+3. 查看请求状态:
+ - **200**: 请求成功,检查返回数据
+ - **404**: API路径不存在
+ - **500**: 后端服务错误
+ - **Failed**: 网络连接失败
+
+4. 查看Response数据结构:
+```json
+{
+ "code": 200,
+ "data": {
+ "records": [...], // 赛事列表
+ "total": 10
+ }
+}
+```
+
+### 3. 检查后端服务
+
+#### 3.1 确认后端服务是否启动
+
+**Windows:**
+```bash
+netstat -ano | findstr 8888
+```
+
+**Linux/Mac:**
+```bash
+netstat -tuln | grep 8888
+```
+
+如果没有输出,说明后端服务未启动。
+
+#### 3.2 启动后端服务
+
+进入后端项目目录:
+```bash
+cd martial-master
+mvn spring-boot:run
+```
+
+或者使用IDE(IDEA/Eclipse)启动。
+
+### 4. 检查数据库数据
+
+#### 4.1 连接数据库
+
+使用数据库客户端(Navicat、DBeaver等)连接:
+- Host: 127.0.0.1
+- Port: 3306
+- Database: martial_db
+- Username: root
+- Password: 123456
+
+#### 4.2 执行检查SQL
+
+运行项目根目录下的 `check_data.sql` 文件:
+
+```sql
+-- 检查赛事数据
+SELECT * FROM martial_competition LIMIT 10;
+
+-- 检查赛事总数
+SELECT COUNT(*) FROM martial_competition;
+```
+
+**如果赛事表为空:**
+需要先创建赛事数据。
+
+### 5. 创建测试数据
+
+#### 5.1 创建赛事
+
+进入"赛事管理"页面,点击"新增赛事",填写:
+- 赛事名称:测试赛事
+- 赛事编码:TEST001
+- 主办单位:测试单位
+- 地区:北京
+- 详细地点:测试地点
+- 报名时间:选择日期范围
+- 比赛时间:选择日期范围
+
+保存后,赛事列表应该就能显示了。
+
+#### 5.2 创建裁判
+
+进入"评委管理"页面,点击"新增评委",填写:
+- 姓名:张三
+- 性别:男
+- 手机号:13800138000
+- 身份证号:110101199001011234
+- 裁判类型:普通裁判
+- 等级/职称:一级
+
+### 6. 检查API配置
+
+#### 6.1 检查前端API配置
+
+查看 `martial-web/src/axios/index.js` 或类似文件:
+
+```javascript
+const baseURL = process.env.VUE_APP_API_BASE_URL || '/api'
+```
+
+确认API基础路径配置正确。
+
+#### 6.2 检查代理配置
+
+查看 `martial-web/vite.config.js` 或 `vue.config.js`:
+
+```javascript
+proxy: {
+ '/api': {
+ target: 'http://localhost:8888',
+ changeOrigin: true
+ }
+}
+```
+
+确认代理配置指向正确的后端地址。
+
+### 7. 常见问题解决
+
+#### 问题1: CORS跨域错误
+
+**错误信息:**
+```
+Access to XMLHttpRequest at 'http://localhost:8888/api/...' from origin 'http://localhost:5173' has been blocked by CORS policy
+```
+
+**解决方案:**
+1. 检查后端CORS配置
+2. 使用代理配置
+3. 确保前后端端口配置正确
+
+#### 问题2: 404 Not Found
+
+**可能原因:**
+1. API路径错误
+2. 后端Controller路径配置错误
+3. 后端服务未启动
+
+**解决方案:**
+1. 检查API路径:`/api/martial/competition/list`
+2. 检查后端Controller注解:`@RequestMapping("/martial/competition")`
+3. 启动后端服务
+
+#### 问题3: 数据结构不匹配
+
+**现象:**
+API返回数据,但前端解析失败。
+
+**解决方案:**
+查看控制台日志,确认数据结构:
+```javascript
+console.log('赛事列表API返回:', res)
+console.log('解析后的赛事列表:', records)
+```
+
+如果数据结构不对,修改前端解析逻辑。
+
+### 8. 快速测试
+
+#### 8.1 使用Postman测试API
+
+**请求:**
+```
+GET http://localhost:8888/api/martial/competition/list?current=1&size=10
+```
+
+**期望返回:**
+```json
+{
+ "code": 200,
+ "success": true,
+ "data": {
+ "records": [
+ {
+ "id": 1,
+ "competitionName": "测试赛事",
+ "status": 1,
+ ...
+ }
+ ],
+ "total": 1
+ }
+}
+```
+
+#### 8.2 使用curl测试
+
+```bash
+curl -X GET "http://localhost:8888/api/martial/competition/list?current=1&size=10"
+```
+
+### 9. 临时解决方案
+
+如果急需使用,可以临时修改代码,手动添加测试数据:
+
+```javascript
+// 在 loadCompetitionList 函数中添加
+competitionList.value = [
+ {
+ id: 1,
+ competitionName: '测试赛事',
+ status: 1
+ }
+]
+queryParams.competitionId = 1
+```
+
+**注意:** 这只是临时方案,不要提交到代码库。
+
+### 10. 联系支持
+
+如果以上步骤都无法解决问题,请提供以下信息:
+
+1. 浏览器控制台完整错误日志
+2. Network请求的详细信息(Request/Response)
+3. 后端服务日志
+4. 数据库查询结果
+
+## 修改记录
+
+### 2025-12-13
+- ✨ 添加详细的日志输出
+- ✨ 优化数据解析逻辑,支持多种返回格式
+- ✨ 移除status=1的限制,查询所有赛事
+- 📝 创建排查指南文档
diff --git a/src/api/martial/deduction.js b/src/api/martial/deduction.js
index 9ac8456..02b0906 100644
--- a/src/api/martial/deduction.js
+++ b/src/api/martial/deduction.js
@@ -45,7 +45,7 @@ export const getDeductionDetail = (id) => {
*/
export const addDeduction = (data) => {
return request({
- url: '/api/blade-martial/deductionItem/save',
+ url: '/api/blade-martial/deductionItem/submit',
method: 'post',
data
})
@@ -57,7 +57,7 @@ export const addDeduction = (data) => {
*/
export const updateDeduction = (data) => {
return request({
- url: '/api/blade-martial/deductionItem/update',
+ url: '/api/blade-martial/deductionItem/submit',
method: 'post',
data
})
diff --git a/src/api/martial/deductionItem.js b/src/api/martial/deductionItem.js
index 4d9c023..c13df6e 100644
--- a/src/api/martial/deductionItem.js
+++ b/src/api/martial/deductionItem.js
@@ -45,7 +45,7 @@ export const getDeductionDetail = (id) => {
*/
export const addDeduction = (data) => {
return request({
- url: '/api/blade-martial/deductionItem/save',
+ url: '/api/blade-martial/deductionItem/submit',
method: 'post',
data
})
@@ -57,7 +57,7 @@ export const addDeduction = (data) => {
*/
export const updateDeduction = (data) => {
return request({
- url: '/api/blade-martial/deductionItem/update',
+ url: '/api/blade-martial/deductionItem/submit',
method: 'post',
data
})
diff --git a/src/api/martial/judgeInvite.js b/src/api/martial/judgeInvite.js
index 6181874..42c8c87 100644
--- a/src/api/martial/judgeInvite.js
+++ b/src/api/martial/judgeInvite.js
@@ -14,7 +14,7 @@ import request from '@/axios';
*/
export const getJudgeInviteList = (current, size, params) => {
return request({
- url: '/api/blade-martial/judgeInvite/list',
+ url: '/api/martial/judgeInvite/list',
method: 'get',
params: {
current,
@@ -30,7 +30,7 @@ export const getJudgeInviteList = (current, size, params) => {
*/
export const getJudgeInviteDetail = (id) => {
return request({
- url: '/api/blade-martial/judgeInvite/detail',
+ url: '/api/martial/judgeInvite/detail',
method: 'get',
params: { id }
})
@@ -48,7 +48,7 @@ export const getJudgeInviteDetail = (id) => {
*/
export const sendInvite = (data) => {
return request({
- url: '/api/blade-martial/judgeInvite/send',
+ url: '/api/martial/judgeInvite/send',
method: 'post',
data
})
@@ -60,7 +60,7 @@ export const sendInvite = (data) => {
*/
export const updateInvite = (data) => {
return request({
- url: '/api/blade-martial/judgeInvite/update',
+ url: '/api/martial/judgeInvite/submit',
method: 'post',
data
})
@@ -72,7 +72,7 @@ export const updateInvite = (data) => {
*/
export const removeInvite = (ids) => {
return request({
- url: '/api/blade-martial/judgeInvite/remove',
+ url: '/api/martial/judgeInvite/remove',
method: 'post',
params: { ids }
})
@@ -87,7 +87,7 @@ export const removeInvite = (ids) => {
*/
export const batchSendInvites = (data) => {
return request({
- url: '/api/blade-martial/judgeInvite/batch-send',
+ url: '/api/martial/judgeInvite/batch-send',
method: 'post',
data
})
@@ -99,7 +99,7 @@ export const batchSendInvites = (data) => {
*/
export const resendInvite = (id) => {
return request({
- url: `/api/blade-martial/judgeInvite/resend/${id}`,
+ url: `/api/martial/judgeInvite/resend/${id}`,
method: 'post'
})
}
@@ -114,7 +114,7 @@ export const resendInvite = (id) => {
*/
export const replyInvite = (data) => {
return request({
- url: '/api/blade-martial/judgeInvite/reply',
+ url: '/api/martial/judgeInvite/reply',
method: 'post',
data
})
@@ -127,7 +127,7 @@ export const replyInvite = (data) => {
*/
export const cancelInvite = (id, reason) => {
return request({
- url: `/api/blade-martial/judgeInvite/cancel/${id}`,
+ url: `/api/martial/judgeInvite/cancel/${id}`,
method: 'post',
params: { reason }
})
@@ -139,7 +139,7 @@ export const cancelInvite = (id, reason) => {
*/
export const confirmInvite = (id) => {
return request({
- url: `/api/blade-martial/judgeInvite/confirm/${id}`,
+ url: `/api/martial/judgeInvite/confirm/${id}`,
method: 'post'
})
}
@@ -150,7 +150,7 @@ export const confirmInvite = (id) => {
*/
export const getInviteStatistics = (competitionId) => {
return request({
- url: '/api/blade-martial/judgeInvite/statistics',
+ url: '/api/martial/judgeInvite/statistics',
method: 'get',
params: { competitionId }
})
@@ -162,7 +162,7 @@ export const getInviteStatistics = (competitionId) => {
*/
export const getAcceptedJudges = (competitionId) => {
return request({
- url: '/api/blade-martial/judgeInvite/accepted-judges',
+ url: '/api/martial/judgeInvite/accepted-judges',
method: 'get',
params: { competitionId }
})
@@ -175,7 +175,7 @@ export const getAcceptedJudges = (competitionId) => {
*/
export const importFromJudgePool = (competitionId, judgeIds) => {
return request({
- url: '/api/blade-martial/judgeInvite/import/pool',
+ url: '/api/martial/judgeInvite/import/pool',
method: 'post',
params: { competitionId, judgeIds }
})
@@ -187,7 +187,7 @@ export const importFromJudgePool = (competitionId, judgeIds) => {
*/
export const exportInvites = (params) => {
return request({
- url: '/api/blade-martial/judgeInvite/export',
+ url: '/api/martial/judgeInvite/export',
method: 'get',
params,
responseType: 'blob'
@@ -201,7 +201,7 @@ export const exportInvites = (params) => {
*/
export const sendReminder = (id, message) => {
return request({
- url: `/api/blade-martial/judgeInvite/reminder/${id}`,
+ url: `/api/martial/judgeInvite/reminder/${id}`,
method: 'post',
params: { message }
})
@@ -219,7 +219,7 @@ export const sendReminder = (id, message) => {
*/
export const generateInviteCode = (data) => {
return request({
- url: '/api/blade-martial/judgeInvite/generate',
+ url: '/api/martial/judgeInvite/generate',
method: 'post',
data
})
@@ -235,7 +235,7 @@ export const generateInviteCode = (data) => {
*/
export const batchGenerateInviteCode = (data) => {
return request({
- url: '/api/blade-martial/judgeInvite/generate/batch',
+ url: '/api/martial/judgeInvite/generate/batch',
method: 'post',
data
})
@@ -247,7 +247,7 @@ export const batchGenerateInviteCode = (data) => {
*/
export const regenerateInviteCode = (inviteId) => {
return request({
- url: `/api/blade-martial/judgeInvite/regenerate/${inviteId}`,
+ url: `/api/martial/judgeInvite/regenerate/${inviteId}`,
method: 'put'
})
}
@@ -259,7 +259,7 @@ export const regenerateInviteCode = (inviteId) => {
*/
export const getInviteByJudge = (competitionId, judgeId) => {
return request({
- url: '/api/blade-martial/judgeInvite/byJudge',
+ url: '/api/martial/judgeInvite/byJudge',
method: 'get',
params: { competitionId, judgeId }
})
diff --git a/src/api/martial/project.js b/src/api/martial/project.js
index d027d78..ed1cba7 100644
--- a/src/api/martial/project.js
+++ b/src/api/martial/project.js
@@ -9,7 +9,9 @@ import request from '@/axios';
* @param {Object} params - 查询参数
* @param {Number} params.competitionId - 赛事ID
* @param {String} params.projectName - 项目名称(可选)
- * @param {String} params.category - 分组类别(可选)
+ * @param {Number} params.category - 分组类别(可选)
+ * @param {Number} params.eventType - 项目类型(可选)
+ * @param {Number} params.participantType - 参赛类型(可选,1-单人,2-集体)
*/
export const getProjectList = (current, size, params) => {
return request({
@@ -65,17 +67,16 @@ export const updateProject = (data) => {
* @param {Number} data.competitionId - 赛事ID
* @param {String} data.projectName - 项目名称
* @param {String} data.projectCode - 项目编码
- * @param {String} data.category - 组别(男子组/女子组)
- * @param {Number} data.type - 类型(1-个人,2-双人,3-集体)
- * @param {Number} data.minParticipants - 最少参赛人数
- * @param {Number} data.maxParticipants - 最多参赛人数
- * @param {Number} data.minAge - 最小年龄
- * @param {Number} data.maxAge - 最大年龄
- * @param {Number} data.genderLimit - 性别限制(0-不限,1-仅男,2-仅女)
- * @param {Number} data.estimatedDuration - 预估时长(分钟)
- * @param {Number} data.price - 报名费用
- * @param {Number} data.difficultyCoefficient - 难度系数
- * @param {String} data.description - 项目描述
+ * @param {Number} data.category - 分组类别(1-男子,2-女子,3-团体,4-混合)
+ * @param {Number} data.eventType - 项目类型(1-套路,2-散打,3-器械,4-对练)
+ * @param {Number} data.participantType - 参赛类型(1-单人,2-集体)
+ * @param {Number} data.registrationFee - 报名费用
+ * @param {String} data.registrationStartTime - 报名开始时间
+ * @param {String} data.registrationEndTime - 报名结束时间
+ * @param {Number} data.maxParticipants - 最大参赛人数
+ * @param {Number} data.sortOrder - 排序序号
+ * @param {String} data.rules - 比赛规则
+ * @param {String} data.remark - 备注
*/
export const submitProject = (data) => {
return request({
diff --git a/src/api/system/menu.js b/src/api/system/menu.js
index 7050c95..f5e26c2 100644
--- a/src/api/system/menu.js
+++ b/src/api/system/menu.js
@@ -2,7 +2,7 @@ import request from '@/axios';
export const getList = (current, size, params) => {
return request({
- url: '/blade-system/menu/list',
+ url: '/api/blade-system/menu/list',
method: 'get',
params: {
...params,
@@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
export const getLazyList = (parentId, params) => {
return request({
- url: '/blade-system/menu/lazy-list',
+ url: '/api/blade-system/menu/lazy-list',
method: 'get',
params: {
...params,
@@ -25,7 +25,7 @@ export const getLazyList = (parentId, params) => {
export const getLazyMenuList = (parentId, params) => {
return request({
- url: '/blade-system/menu/lazy-menu-list',
+ url: '/api/blade-system/menu/lazy-menu-list',
method: 'get',
params: {
...params,
@@ -36,7 +36,7 @@ export const getLazyMenuList = (parentId, params) => {
export const getMenuList = (current, size, params) => {
return request({
- url: '/blade-system/menu/menu-list',
+ url: '/api/blade-system/menu/menu-list',
method: 'get',
params: {
...params,
@@ -48,7 +48,7 @@ export const getMenuList = (current, size, params) => {
export const getMenuTree = tenantId => {
return request({
- url: '/blade-system/menu/tree',
+ url: '/api/blade-system/menu/tree',
method: 'get',
params: {
tenantId,
@@ -58,7 +58,7 @@ export const getMenuTree = tenantId => {
export const remove = ids => {
return request({
- url: '/blade-system/menu/remove',
+ url: '/api/blade-system/menu/remove',
method: 'post',
params: {
ids,
@@ -68,7 +68,7 @@ export const remove = ids => {
export const add = row => {
return request({
- url: '/blade-system/menu/submit',
+ url: '/api/blade-system/menu/submit',
method: 'post',
data: row,
});
@@ -76,7 +76,7 @@ export const add = row => {
export const update = row => {
return request({
- url: '/blade-system/menu/submit',
+ url: '/api/blade-system/menu/submit',
method: 'post',
data: row,
});
@@ -84,7 +84,7 @@ export const update = row => {
export const getMenu = id => {
return request({
- url: '/blade-system/menu/detail',
+ url: '/api/blade-system/menu/detail',
method: 'get',
params: {
id,
@@ -94,13 +94,13 @@ export const getMenu = id => {
export const getTopMenu = () =>
request({
- url: '/blade-system/menu/top-menu',
+ url: '/api/blade-system/menu/top-menu',
method: 'get',
});
export const getRoutes = topMenuId =>
request({
- url: '/blade-system/menu/routes',
+ url: '/api/blade-system/menu/routes',
method: 'get',
params: {
topMenuId,
diff --git a/src/api/user.js b/src/api/user.js
index 050b4aa..7595909 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -4,7 +4,7 @@ import website from '@/config/website';
export const loginByUsername = (tenantId, deptId, roleId, username, password, type, key, code) =>
request({
- url: '/blade-auth/oauth/token',
+ url: '/api/blade-auth/oauth/token',
method: 'post',
headers: {
'Tenant-Id': tenantId,
@@ -25,7 +25,7 @@ export const loginByUsername = (tenantId, deptId, roleId, username, password, ty
export const loginBySocial = (tenantId, source, code, state) =>
request({
- url: '/blade-auth/oauth/token',
+ url: '/api/blade-auth/oauth/token',
method: 'post',
headers: {
'Tenant-Id': tenantId,
@@ -42,7 +42,7 @@ export const loginBySocial = (tenantId, source, code, state) =>
export const loginBySso = (state, code) =>
request({
- url: '/blade-auth/oauth/token',
+ url: '/api/blade-auth/oauth/token',
method: 'post',
headers: {
'Tenant-Id': state,
@@ -58,7 +58,7 @@ export const loginBySso = (state, code) =>
export const refreshToken = (refresh_token, tenantId, deptId, roleId) =>
request({
- url: '/blade-auth/oauth/token',
+ url: '/api/blade-auth/oauth/token',
method: 'post',
headers: {
'Tenant-Id': tenantId,
@@ -75,7 +75,7 @@ export const refreshToken = (refresh_token, tenantId, deptId, roleId) =>
export const registerUser = (tenantId, name, account, password, phone, email) =>
request({
- url: '/blade-auth/oauth/token',
+ url: '/api/blade-auth/oauth/token',
method: 'post',
headers: {
'Tenant-Id': tenantId,
@@ -94,7 +94,7 @@ export const registerUser = (tenantId, name, account, password, phone, email) =>
export const registerGuest = (form, oauthId) =>
request({
- url: '/blade-system/user/register-guest',
+ url: '/api/blade-system/user/register-guest',
method: 'post',
params: {
tenantId: form.tenantId,
@@ -107,40 +107,40 @@ export const registerGuest = (form, oauthId) =>
export const getButtons = () =>
request({
- url: '/blade-system/menu/buttons',
+ url: '/api/blade-system/menu/buttons',
method: 'get',
});
export const getCaptcha = () =>
request({
- url: '/blade-auth/oauth/captcha',
+ url: '/api/blade-auth/oauth/captcha',
method: 'get',
authorization: false,
});
export const logout = () =>
request({
- url: '/blade-auth/oauth/logout',
+ url: '/api/blade-auth/oauth/logout',
method: 'get',
authorization: false,
});
export const getUserInfo = () =>
request({
- url: '/blade-auth/oauth/user-info',
+ url: '/api/blade-auth/oauth/user-info',
method: 'get',
});
export const sendLogs = list =>
request({
- url: '/blade-auth/oauth/logout',
+ url: '/api/blade-auth/oauth/logout',
method: 'post',
data: list,
});
export const clearCache = () =>
request({
- url: '/blade-auth/oauth/clear-cache',
+ url: '/api/blade-auth/oauth/clear-cache',
method: 'get',
authorization: false,
});
diff --git a/src/views/martial/deduction/index.vue b/src/views/martial/deduction/index.vue
index f754b35..65a0d5c 100644
--- a/src/views/martial/deduction/index.vue
+++ b/src/views/martial/deduction/index.vue
@@ -3,12 +3,40 @@
暂无赛事数据
+ 请先在"赛事管理"中创建赛事
+ 暂无赛事数据
+ 请先在"赛事管理"中创建赛事
+