Files
tangguo_admin/.cursor/skills/vue2-api-integration/examples.md
T
rootandClaude Opus 5 d999a5c0e6 Initial commit
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 12:02:35 +08:00

79 lines
1.7 KiB
Markdown

# Examples
## API 方法定义示例
```js
import request from "@/utils/request";
export function getCheckInList(params) {
return request({
url: "/signin/checkin/list",
method: "get",
params
});
}
export function saveCheckInConfig(data) {
return request({
url: "/signin/checkin/config/save",
method: "post",
data
});
}
```
## 查询参数整形示例
```js
buildQueryParams() {
const { dateRange, status, pageNum, pageSize, keyword } = this.queryForm;
return {
pageNum,
pageSize,
keyword: keyword ? keyword.trim() : "",
status: typeof status === "boolean" ? (status ? 1 : 0) : status,
startTime: dateRange && dateRange.length ? dateRange[0] : "",
endTime: dateRange && dateRange.length ? dateRange[1] : ""
};
}
```
## 列表请求与兜底示例
```js
async fetchList() {
this.loading = true;
try {
const params = this.buildQueryParams();
const res = await getCheckInList(params);
const data = (res && res.data) || {};
this.tableData = Array.isArray(data.list) ? data.list : [];
this.total = Number(data.total || 0);
} catch (e) {
this.$message.error("列表加载失败,请稍后重试");
} finally {
this.loading = false;
}
}
```
## 提交流程与防重复示例
```js
async handleSubmit() {
if (this.submitLoading) return;
this.submitLoading = true;
try {
await this.$refs.formRef.validate();
await saveCheckInConfig(this.formData);
this.$message.success("保存成功");
this.dialogVisible = false;
this.fetchList();
} catch (e) {
this.$message.error("保存失败,请检查后重试");
} finally {
this.submitLoading = false;
}
}
```