add detail page

This commit is contained in:
jyuesong
2022-01-13 14:10:29 +08:00
parent 6acf427fb6
commit 80670821cd
17 changed files with 502 additions and 42 deletions

View File

@@ -1,6 +1,9 @@
import 'dart:ffi';
import 'package:qinglong_app/base/http/http.dart';
import 'package:qinglong_app/module/login/login_bean.dart';
import 'package:qinglong_app/module/task/task_bean.dart';
import 'package:qinglong_app/module/task/task_detail/task_detail_bean.dart';
import 'url.dart';
@@ -18,4 +21,21 @@ class Api {
static Future<HttpResponse<List<TaskBean>>> crons() async {
return await Http.get<List<TaskBean>>(Url.TASKS, {"searchValue": ""});
}
static Future<HttpResponse<NullResponse>> startTasks(List<String> crons) async {
return await Http.put<NullResponse>(Url.RUN_TASKS, crons);
}
static Future<HttpResponse<NullResponse>> stopTasks(List<String> crons) async {
return await Http.put<NullResponse>(Url.RUN_TASKS, crons);
}
static Future<HttpResponse<String>> inTimeLog(String cron) async {
return await Http.get<String>(Url.INTIME_LOG(cron), null);
}
static Future<HttpResponse<TaskDetailBean>> taskDetail(String cron) async {
return await Http.get<TaskDetailBean>(Url.TASK_DETAIL+cron, null);
}
}

View File

@@ -1,12 +1,11 @@
import 'dart:convert';
import 'dart:ffi';
import 'dart:core';
import 'package:dio/dio.dart';
import 'package:dio_log/dio_log.dart';
import 'package:flutter/foundation.dart';
import 'package:qinglong_app/base/http/token_interceptor.dart';
import 'package:qinglong_app/base/userinfo_viewmodel.dart';
import 'package:qinglong_app/main.dart';
import '../../json.jc.dart';
@@ -36,7 +35,7 @@ class Http {
}
}
static Future<HttpResponse<T>> get<T>(String uri, Map<String, String> json, {bool compute = true}) async {
static Future<HttpResponse<T>> get<T>(String uri, Map<String, String>? json, {bool compute = true}) async {
_init();
var response = await _dio!.get(uri, queryParameters: json);
@@ -74,7 +73,7 @@ class Http {
try {
if (response.data["code"] == 200) {
if (response.data["data"] != null) {
if (T is Void) {
if (T == NullResponse) {
return HttpResponse<T>(
success: true,
code: 200,
@@ -83,7 +82,7 @@ class Http {
dynamic data = response.data["data"];
T t;
if (T is String) {
if (T == String) {
if (data is String) {
t = data as T;
} else {
@@ -109,7 +108,7 @@ class Http {
}
} else {
return HttpResponse<T>(
success: false,
success: true,
code: 200,
);
}
@@ -173,3 +172,5 @@ class CronBean with BaseBean<CronBean> {
void decode<T>() async {
compute(DeserializeAction.invokeJson, DeserializeAction<T>({}));
}
class NullResponse{}

View File

@@ -1,4 +1,11 @@
class Url {
static const LOGIN = "/api/user/login";
static const TASKS = "/api/crons";
static const RUN_TASKS = "/api/crons/run";
static const STOP_TASKS = "/api/crons/stop";
static const TASK_DETAIL = "/api/crons/";
static INTIME_LOG(String cronId) {
return "/api/crons/$cronId/log";
}
}