fix(credit): 修复客户跟进流程步骤验证逻辑
- 修改第2步验证逻辑,允许直接进入无需审核通过 - 将第3-7步的验证条件从提交状态改为审核状态 - 更新开发环境API基础URL配置 - 添加后端Controller审核接口实现提示 - 补充步骤功能测试指南文档
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
export const ENV_CONFIG = {
|
||||
// 开发环境
|
||||
development: {
|
||||
// API_BASE_URL: 'http://127.0.0.1:9200/api',
|
||||
API_BASE_URL: 'https://ysb-api.websoft.top/api',
|
||||
API_BASE_URL: 'http://127.0.0.1:9200/api',
|
||||
// API_BASE_URL: 'https://ysb-api.websoft.top/api',
|
||||
APP_NAME: '开发环境',
|
||||
DEBUG: 'true',
|
||||
},
|
||||
|
||||
@@ -137,6 +137,8 @@ export default function CreditMpCustomerFollowStep2Page() {
|
||||
|
||||
const step1Done = useMemo(() => {
|
||||
const anyRow = row as any
|
||||
// 第二步只需要第一步提交即可进入,不需要审核通过
|
||||
// 因为第一次有意向的沟通不需要审核
|
||||
return Boolean(anyRow?.followStep1Submitted) || Boolean(anyRow?.followStep1SubmittedAt)
|
||||
}, [row])
|
||||
|
||||
|
||||
@@ -249,7 +249,7 @@ export default function CreditMpCustomerFollowStep3Page() {
|
||||
|
||||
const step2Done = useMemo(() => {
|
||||
const anyRow = row as any
|
||||
return Boolean(anyRow?.followStep2Submitted) || Boolean(anyRow?.followStep2SubmittedAt)
|
||||
return Boolean(anyRow?.followStep2Approved) || Boolean(anyRow?.followStep2ApprovedAt)
|
||||
}, [row])
|
||||
|
||||
const canEdit = !submitted && step2Done
|
||||
|
||||
@@ -186,7 +186,7 @@ export default function CreditMpCustomerFollowStep4Page() {
|
||||
|
||||
const step3Done = useMemo(() => {
|
||||
const anyRow = row as any
|
||||
return Boolean(anyRow?.followStep3Submitted) || Boolean(anyRow?.followStep3SubmittedAt)
|
||||
return Boolean(anyRow?.followStep3Approved) || Boolean(anyRow?.followStep3ApprovedAt)
|
||||
}, [row])
|
||||
|
||||
const canEdit = !submitted && step3Done
|
||||
|
||||
@@ -135,7 +135,7 @@ export default function CreditMpCustomerFollowStep5Page() {
|
||||
|
||||
const step4Done = useMemo(() => {
|
||||
const anyRow = row as any
|
||||
return Boolean(anyRow?.followStep4Submitted) || Boolean(anyRow?.followStep4SubmittedAt)
|
||||
return Boolean(anyRow?.followStep4Approved) || Boolean(anyRow?.followStep4ApprovedAt)
|
||||
}, [row])
|
||||
|
||||
const canEdit = !submitted && step4Done
|
||||
|
||||
@@ -175,7 +175,7 @@ export default function CreditMpCustomerFollowStep6Page() {
|
||||
|
||||
const step5Done = useMemo(() => {
|
||||
const anyRow = row as any
|
||||
return Boolean(anyRow?.followStep5Submitted) || Boolean(anyRow?.followStep5SubmittedAt)
|
||||
return Boolean(anyRow?.followStep5Approved) || Boolean(anyRow?.followStep5ApprovedAt)
|
||||
}, [row])
|
||||
|
||||
const addExpectedPayment = useCallback(async () => {
|
||||
|
||||
@@ -172,7 +172,7 @@ export default function CreditMpCustomerFollowStep7Page() {
|
||||
|
||||
const step6Done = useMemo(() => {
|
||||
const anyRow = row as any
|
||||
return Boolean(anyRow?.followStep6Submitted) || Boolean(anyRow?.followStep6SubmittedAt)
|
||||
return Boolean(anyRow?.followStep6Approved) || Boolean(anyRow?.followStep6ApprovedAt)
|
||||
}, [row])
|
||||
|
||||
const canEdit = !submitted && step6Done
|
||||
|
||||
298
后端Controller修改提示.md
Normal file
298
后端Controller修改提示.md
Normal file
@@ -0,0 +1,298 @@
|
||||
# 后端Controller修改提示词
|
||||
|
||||
## 🎯 需要修改的文件
|
||||
`/Users/gxwebsoft/VUE/template-10579/JAVA/mp-java/src/main/java/com/gxwebsoft/credit/controller/CreditMpCustomerController.java`
|
||||
|
||||
## 📝 具体修改内容
|
||||
|
||||
### 1. 添加新的接口方法
|
||||
|
||||
在现有的 `CreditMpCustomerController` 类中添加以下方法:
|
||||
|
||||
```java
|
||||
/**
|
||||
* 审核跟进步骤
|
||||
*/
|
||||
@PostMapping("/approve-follow-step")
|
||||
@OperLog(title = "审核跟进步骤", businessType = BusinessType.UPDATE)
|
||||
public R<Void> approveFollowStep(@RequestBody FollowStepApprovalDTO dto) {
|
||||
creditMpCustomerService.approveFollowStep(dto);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量审核跟进步骤
|
||||
*/
|
||||
@PostMapping("/batch-approve-follow-steps")
|
||||
@OperLog(title = "批量审核跟进步骤", businessType = BusinessType.UPDATE)
|
||||
public R<Void> batchApproveFollowSteps(@RequestBody BatchFollowStepApprovalDTO dto) {
|
||||
creditMpCustomerService.batchApproveFollowSteps(dto);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取待审核的跟进步骤列表
|
||||
*/
|
||||
@GetMapping("/pending-approval-steps")
|
||||
@OperLog(title = "获取待审核跟进步骤", businessType = BusinessType.SELECT)
|
||||
public R<List<PendingApprovalStepVO>> getPendingApprovalSteps(FollowStepQueryDTO query) {
|
||||
List<PendingApprovalStepVO> list = creditMpCustomerService.getPendingApprovalSteps(query);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取客户跟进统计
|
||||
*/
|
||||
@GetMapping("/follow-statistics/{customerId}")
|
||||
@OperLog(title = "获取客户跟进统计", businessType = BusinessType.SELECT)
|
||||
public R<FollowStatisticsDTO> getFollowStatistics(@PathVariable Long customerId) {
|
||||
FollowStatisticsDTO statistics = creditMpCustomerService.getFollowStatistics(customerId);
|
||||
return R.ok(statistics);
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束客户跟进流程
|
||||
*/
|
||||
@PostMapping("/end-follow-process")
|
||||
@OperLog(title = "结束客户跟进流程", businessType = BusinessType.UPDATE)
|
||||
public R<Void> endFollowProcess(@RequestBody EndFollowProcessDTO dto) {
|
||||
creditMpCustomerService.endFollowProcess(dto.getCustomerId(), dto.getReason());
|
||||
return R.ok();
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 添加必要的导入
|
||||
|
||||
在文件顶部添加以下导入语句:
|
||||
|
||||
```java
|
||||
import com.your.package.dto.FollowStepApprovalDTO;
|
||||
import com.your.package.dto.BatchFollowStepApprovalDTO;
|
||||
import com.your.package.dto.FollowStepQueryDTO;
|
||||
import com.your.package.dto.PendingApprovalStepVO;
|
||||
import com.your.package.dto.FollowStatisticsDTO;
|
||||
import com.your.package.dto.EndFollowProcessDTO;
|
||||
import com.your.package.annotation.OperLog;
|
||||
import com.your.package.enums.BusinessType;
|
||||
```
|
||||
|
||||
### 3. 需要创建的DTO类
|
||||
|
||||
#### FollowStepApprovalDTO.java
|
||||
```java
|
||||
@Data
|
||||
public class FollowStepApprovalDTO {
|
||||
private Long customerId;
|
||||
private Integer step;
|
||||
private Boolean approved;
|
||||
private String remark;
|
||||
}
|
||||
```
|
||||
|
||||
#### BatchFollowStepApprovalDTO.java
|
||||
```java
|
||||
@Data
|
||||
public class BatchFollowStepApprovalDTO {
|
||||
private List<FollowStepApprovalDTO> approvals;
|
||||
}
|
||||
```
|
||||
|
||||
#### FollowStepQueryDTO.java
|
||||
```java
|
||||
@Data
|
||||
public class FollowStepQueryDTO {
|
||||
private Integer step;
|
||||
private Long customerId;
|
||||
private Long userId;
|
||||
}
|
||||
```
|
||||
|
||||
#### PendingApprovalStepVO.java
|
||||
```java
|
||||
@Data
|
||||
public class PendingApprovalStepVO {
|
||||
private Long customerId;
|
||||
private String customerName;
|
||||
private Integer step;
|
||||
private String stepTitle;
|
||||
private String submittedAt;
|
||||
private String submittedBy;
|
||||
private Object content;
|
||||
}
|
||||
```
|
||||
|
||||
#### FollowStatisticsDTO.java
|
||||
```java
|
||||
@Data
|
||||
public class FollowStatisticsDTO {
|
||||
private Integer totalSteps;
|
||||
private Integer completedSteps;
|
||||
private Integer currentStep;
|
||||
private Double progress;
|
||||
private List<FollowStepDetailDTO> stepDetails;
|
||||
}
|
||||
```
|
||||
|
||||
#### FollowStepDetailDTO.java
|
||||
```java
|
||||
@Data
|
||||
public class FollowStepDetailDTO {
|
||||
private Integer step;
|
||||
private String title;
|
||||
private String status; // pending, submitted, approved, rejected
|
||||
private String submittedAt;
|
||||
private String approvedAt;
|
||||
}
|
||||
```
|
||||
|
||||
#### EndFollowProcessDTO.java
|
||||
```java
|
||||
@Data
|
||||
public class EndFollowProcessDTO {
|
||||
private Long customerId;
|
||||
private String reason;
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Service层需要添加的方法
|
||||
|
||||
在 `CreditMpCustomerService` 接口中添加:
|
||||
|
||||
```java
|
||||
/**
|
||||
* 审核跟进步骤
|
||||
*/
|
||||
void approveFollowStep(FollowStepApprovalDTO dto);
|
||||
|
||||
/**
|
||||
* 批量审核跟进步骤
|
||||
*/
|
||||
void batchApproveFollowSteps(BatchFollowStepApprovalDTO dto);
|
||||
|
||||
/**
|
||||
* 获取待审核的跟进步骤列表
|
||||
*/
|
||||
List<PendingApprovalStepVO> getPendingApprovalSteps(FollowStepQueryDTO query);
|
||||
|
||||
/**
|
||||
* 获取客户跟进统计
|
||||
*/
|
||||
FollowStatisticsDTO getFollowStatistics(Long customerId);
|
||||
|
||||
/**
|
||||
* 结束客户跟进流程
|
||||
*/
|
||||
void endFollowProcess(Long customerId, String reason);
|
||||
```
|
||||
|
||||
### 5. 实体类修改
|
||||
|
||||
在 `CreditMpCustomer.java` 中添加第5-7步的字段:
|
||||
|
||||
```java
|
||||
// 第5步字段
|
||||
private Integer followStep5Submitted;
|
||||
private String followStep5SubmittedAt;
|
||||
private String followStep5Contracts;
|
||||
private Integer followStep5NeedApproval;
|
||||
private Integer followStep5Approved;
|
||||
private String followStep5ApprovedAt;
|
||||
private Long followStep5ApprovedBy;
|
||||
|
||||
// 第6步字段
|
||||
private Integer followStep6Submitted;
|
||||
private String followStep6SubmittedAt;
|
||||
private String followStep6PaymentRecords;
|
||||
private String followStep6ExpectedPayments;
|
||||
private Integer followStep6NeedApproval;
|
||||
private Integer followStep6Approved;
|
||||
private String followStep6ApprovedAt;
|
||||
private Long followStep6ApprovedBy;
|
||||
|
||||
// 第7步字段
|
||||
private Integer followStep7Submitted;
|
||||
private String followStep7SubmittedAt;
|
||||
private String followStep7VisitRecords;
|
||||
private Integer followStep7NeedApproval;
|
||||
private Integer followStep7Approved;
|
||||
private String followStep7ApprovedAt;
|
||||
private Long followStep7ApprovedBy;
|
||||
|
||||
// 流程结束字段
|
||||
private Integer followProcessEnded;
|
||||
private String followProcessEndTime;
|
||||
private String followProcessEndReason;
|
||||
```
|
||||
|
||||
### 6. 数据库修改
|
||||
|
||||
执行以下SQL语句:
|
||||
|
||||
```sql
|
||||
-- 第5步字段
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_submitted TINYINT DEFAULT 0;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_submitted_at VARCHAR(255);
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_contracts TEXT;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_need_approval TINYINT DEFAULT 1;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_approved TINYINT DEFAULT 0;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_approved_at VARCHAR(255);
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step5_approved_by BIGINT;
|
||||
|
||||
-- 第6步字段
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_submitted TINYINT DEFAULT 0;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_submitted_at VARCHAR(255);
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_payment_records TEXT;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_expected_payments TEXT;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_need_approval TINYINT DEFAULT 1;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_approved TINYINT DEFAULT 0;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_approved_at VARCHAR(255);
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step6_approved_by BIGINT;
|
||||
|
||||
-- 第7步字段
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_submitted TINYINT DEFAULT 0;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_submitted_at VARCHAR(255);
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_visit_records TEXT;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_need_approval TINYINT DEFAULT 1;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_approved TINYINT DEFAULT 0;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_approved_at VARCHAR(255);
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_step7_approved_by BIGINT;
|
||||
|
||||
-- 流程结束字段
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_process_ended TINYINT DEFAULT 0;
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_process_end_time VARCHAR(255);
|
||||
ALTER TABLE credit_mp_customer ADD COLUMN follow_process_end_reason TEXT;
|
||||
```
|
||||
|
||||
## 🔧 实施步骤
|
||||
|
||||
1. **数据库修改**:先执行SQL脚本添加字段
|
||||
2. **实体类修改**:更新 `CreditMpCustomer.java`
|
||||
3. **DTO类创建**:创建所有需要的DTO类
|
||||
4. **Service接口**:添加方法定义
|
||||
5. **Service实现**:实现具体业务逻辑
|
||||
6. **Controller修改**:添加新的接口方法
|
||||
7. **Mapper修改**:添加必要的SQL查询
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
1. **包名替换**:请将 `com.your.package` 替换为实际的包名
|
||||
2. **注解检查**:确保 `@OperLog` 和 `BusinessType` 存在
|
||||
3. **事务处理**:审核方法需要添加 `@Transactional` 注解
|
||||
4. **权限控制**:根据需要添加权限验证注解
|
||||
5. **数据验证**:在Service层添加必要的数据验证逻辑
|
||||
|
||||
## 🧪 测试建议
|
||||
|
||||
1. 测试步骤提交和审核流程
|
||||
2. 测试批量审核功能
|
||||
3. 测试统计接口返回的数据格式
|
||||
4. 测试流程结束功能
|
||||
5. 验证步骤解锁逻辑是否正确
|
||||
|
||||
## 📋 完整的业务流程
|
||||
|
||||
1. 销售人员提交步骤 → 设置 `submitted=1`, `needApproval=1`
|
||||
2. 管理员审核 → 设置 `approved=0/1`, 记录审核时间和审核人
|
||||
3. 前端检查 `approved` 状态决定是否解锁下一步
|
||||
4. 支持查看待审核列表和批量操作
|
||||
5. 提供进度统计和流程管理功能
|
||||
193
测试步骤功能.md
Normal file
193
测试步骤功能.md
Normal file
@@ -0,0 +1,193 @@
|
||||
# 步骤功能测试指南
|
||||
|
||||
## 🧪 测试第一步截图功能
|
||||
|
||||
### 测试步骤:
|
||||
1. 进入第一步页面(加微信前沟通)
|
||||
2. 检查以下功能是否正常:
|
||||
|
||||
#### 短信截图功能:
|
||||
- [ ] 点击 "+" 按钮是否能打开图片选择
|
||||
- [ ] 选择图片后是否能正常上传
|
||||
- [ ] 上传后是否显示图片缩略图
|
||||
- [ ] 点击图片是否能预览
|
||||
- [ ] 长按或点击图片是否能弹出"预览/删除"选项
|
||||
- [ ] 删除功能是否正常
|
||||
- [ ] 最多只能上传6张图片
|
||||
|
||||
#### 电话沟通截图功能:
|
||||
- [ ] 点击 "+" 按钮是否能打开图片选择
|
||||
- [ ] 选择图片后是否能正常上传
|
||||
- [ ] 上传后是否显示图片缩略图
|
||||
- [ ] 点击图片是否能预览
|
||||
- [ ] 长按或点击图片是否能弹出"预览/删除"选项
|
||||
- [ ] 删除功能是否正常
|
||||
- [ ] 最多只能上传6张图片
|
||||
|
||||
### 可能的问题和解决方案:
|
||||
|
||||
#### 1. 点击 "+" 没反应
|
||||
**可能原因:**
|
||||
- `canEdit` 为 false(已提交状态)
|
||||
- `chooseAndUploadImages` 函数有问题
|
||||
|
||||
**检查方法:**
|
||||
```javascript
|
||||
// 在浏览器控制台检查
|
||||
console.log('canEdit:', canEdit);
|
||||
console.log('smsShots.length:', smsShots.length);
|
||||
```
|
||||
|
||||
#### 2. 图片选择失败
|
||||
**可能原因:**
|
||||
- 没有相机/相册权限
|
||||
- Taro.chooseImage 配置问题
|
||||
|
||||
**解决方案:**
|
||||
```javascript
|
||||
// 检查权限
|
||||
try {
|
||||
await Taro.authorize({ scope: 'scope.camera' });
|
||||
await Taro.authorize({ scope: 'scope.writePhotosAlbum' });
|
||||
} catch (e) {
|
||||
console.error('权限获取失败:', e);
|
||||
}
|
||||
```
|
||||
|
||||
#### 3. 图片上传失败
|
||||
**可能原因:**
|
||||
- `uploadFileByPath` 函数问题
|
||||
- 网络问题
|
||||
- 文件路径问题
|
||||
|
||||
**检查方法:**
|
||||
```javascript
|
||||
// 检查上传函数
|
||||
console.log('uploadFileByPath:', uploadFileByPath);
|
||||
```
|
||||
|
||||
## 🧪 测试第二步跳转功能
|
||||
|
||||
### 测试步骤:
|
||||
1. 完成第一步提交
|
||||
2. 进入第二步页面
|
||||
3. 填写所有必填项:
|
||||
- [ ] 微信号
|
||||
- [ ] 添加微信截图
|
||||
- [ ] 沟通情况
|
||||
4. 点击提交按钮
|
||||
5. 检查是否跳转到第三步
|
||||
|
||||
### 可能的问题和解决方案:
|
||||
|
||||
#### 1. 第二步无法提交
|
||||
**可能原因:**
|
||||
- 第一步未提交
|
||||
- 表单验证失败
|
||||
- 网络问题
|
||||
|
||||
**检查方法:**
|
||||
```javascript
|
||||
// 检查第一步状态
|
||||
console.log('step1Done:', step1Done);
|
||||
console.log('wechatId:', wechatId);
|
||||
console.log('screenshot:', screenshot);
|
||||
console.log('remark:', remark);
|
||||
```
|
||||
|
||||
#### 2. 提交后不跳转
|
||||
**可能原因:**
|
||||
- 提交失败
|
||||
- 跳转URL错误
|
||||
- Taro.redirectTo 问题
|
||||
|
||||
**检查方法:**
|
||||
```javascript
|
||||
// 检查提交结果
|
||||
console.log('提交结果:', res);
|
||||
// 检查跳转URL
|
||||
console.log('跳转URL:', `/credit/mp-customer/follow-step3?id=${customerId}`);
|
||||
```
|
||||
|
||||
## 🔧 调试技巧
|
||||
|
||||
### 1. 启用详细日志
|
||||
在代码中添加更多 console.log:
|
||||
```javascript
|
||||
const chooseAndUploadImages = useCallback(async (kind: 'sms' | 'call') => {
|
||||
console.log('chooseAndUploadImages called:', kind);
|
||||
console.log('canEdit:', canEdit);
|
||||
console.log('current length:', kind === 'sms' ? smsShots.length : callShots.length);
|
||||
|
||||
if (!canEdit) {
|
||||
console.log('Cannot edit: submitted');
|
||||
return;
|
||||
}
|
||||
|
||||
// ... 其他代码
|
||||
}, [callShots, canEdit, smsShots]);
|
||||
```
|
||||
|
||||
### 2. 检查网络请求
|
||||
```javascript
|
||||
// 在上传函数中添加
|
||||
console.log('Uploading file:', p);
|
||||
const record = await uploadFileByPath(p);
|
||||
console.log('Upload result:', record);
|
||||
```
|
||||
|
||||
### 3. 检查状态更新
|
||||
```javascript
|
||||
// 在状态更新后
|
||||
console.log('Updated smsShots:', smsShots);
|
||||
console.log('Updated callShots:', callShots);
|
||||
```
|
||||
|
||||
## 📱 微信小程序特殊注意事项
|
||||
|
||||
### 1. 权限问题
|
||||
微信小程序需要特殊权限:
|
||||
- `scope.camera` - 相机
|
||||
- `scope.writePhotosAlbum` - 相册
|
||||
|
||||
### 2. 文件路径问题
|
||||
微信小程序的临时文件路径可能不同,需要兼容处理:
|
||||
```javascript
|
||||
const pathsFromChooseImageResult = (res: any): string[] => {
|
||||
const a = res?.tempFilePaths;
|
||||
if (Array.isArray(a) && a.length) {
|
||||
return a.map((p: any) => String(p || '').trim()).filter(Boolean);
|
||||
}
|
||||
const files = res?.tempFiles;
|
||||
if (Array.isArray(files) && files.length) {
|
||||
return files.map((f: any) => String(f?.path || '').trim()).filter(Boolean);
|
||||
}
|
||||
return [];
|
||||
};
|
||||
```
|
||||
|
||||
### 3. 调试工具
|
||||
使用微信开发者工具的调试功能:
|
||||
- Console 面板查看日志
|
||||
- Network 面板查看网络请求
|
||||
- Sources 面板断点调试
|
||||
|
||||
## 🚀 常见问题解决
|
||||
|
||||
### 问题1:截图上传后不显示
|
||||
**解决方案:**
|
||||
1. 检查图片URL是否有效
|
||||
2. 检查缩略图生成
|
||||
3. 检查状态更新
|
||||
|
||||
### 问题2:提交后不跳转
|
||||
**解决方案:**
|
||||
1. 检查提交是否成功
|
||||
2. 检查跳转URL是否正确
|
||||
3. 检查页面是否存在
|
||||
|
||||
### 问题3:按钮点击没反应
|
||||
**解决方案:**
|
||||
1. 检查按钮是否被禁用
|
||||
2. 检查点击事件绑定
|
||||
3. 检查函数是否有错误
|
||||
Reference in New Issue
Block a user