设备 预约接口

This commit is contained in:
czz
2025-06-12 09:03:44 +08:00
parent 6ec1c79866
commit d5c3addd4a
23 changed files with 1488 additions and 1324 deletions

View File

@@ -1,4 +1,4 @@
package com.taihe.vbvs_app package com.taihe.mh_app
import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.android.FlutterActivity

241
lib/common/util/Dio.dart Normal file
View File

@@ -0,0 +1,241 @@
import 'package:dio/dio.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/controller/login/login_controller.dart';
import 'package:vbvs_app/pages/common/selectDialog.dart';
class ApiService {
static Dio dio = Dio();
static Dio request = Dio();
static Dio requestNoInfo = Dio();
static Dio requestNoError = Dio(); //不处理错误的请求,用于设备操作上报
static Dio reservation = Dio();
static void init() {
// 添加全局配置如基础URL、
// 拦截器等
// dio.httpClientAdapter = IOHttpClientAdapter(
// createHttpClient: () {
// final client = HttpClient();
// client.badCertificateCallback =
// (X509Certificate cert, String host, int port) {
// return true; // Verify the certificate.
// };
// return client;
// },
// );
// request.options.baseUrl = CommonVariables.apiUrl;
// request.options.connectTimeout = const Duration(seconds: 15);
// request.options.receiveTimeout = const Duration(seconds: 10);
// request.options.sendTimeout = const Duration(seconds: 10);
// dio.options.headers['Content-Type'] = "application/json";
// dio.options.headers['Token'] = "1";
// 添加其他配置...
// 添加拦截器(可选)
// request.interceptors.add(InterceptorsWrapper(
// onRequest: (options, handler) {
// print("---> ${options.method}, ${options.path}, ${options.data}");
// options.headers['token'] = Get.find<UserInfoController>().model.token;
// print("${options.headers['token']}");
// return handler.next(options);
// },
// onResponse: (response, ResponseInterceptorHandler handler) {
// // 在响应处理前的操作,例如解析响应数据
// // if (response.realUri.toString().contains("/login")) {
// // String? token = response.headers.value('token');
// // if (token != null) {
// // print("token = ${token}");
// // Get.find<GlobalController>().token.value = token;
// // }
// // }
// print("<--- ${response.statusCode}, ${response.data}");
// if (response.data is Map) {
// if (response.data['code'] == HttpStatusCodes.ok) {
// return handler.next(response);
// } else {
// if (response.data['code'] == 10011) {
// Get.offAndToNamed(
// "/loginPage",
// );
// GlobalController globalController = Get.find<GlobalController>();
// globalController.resetParmAll();
// showCustomConfirmDialog(Get.context!, "当前用户已在别处登录,请确认账号密码安全!",
// btnName: "确定", icon: ConfirmDialogIcon.warn)
// .then((d) {
// if (d == "confirm") {
// Get.back();
// }
// });
// } else if (response.data['code'] == 11004) {
// showCustomConfirmAndCancelDialog(Get.context!, "当前用户已登录,是否重新登录",
// confirmName: "确定", cancelName: "取消")
// .then((d) async {
// if (d == "confirm") {
// LoginController loginController = Get.find();
// loginController.model.forceLogin = 1;
// String msg = await loginController.login(Get.context!);
// if (msg == null || msg.isEmpty) {
// Get.offAndToNamed("/mianPageBottomChange");
// }
// } else if (d == "cancel") {
// // Get.offAndToNamed(
// // "/loginPage",
// // );
// Get.back();
// }
// });
// } else if (response.data['code'] == 10009 ||
// response.data['code'] == 11007 ||
// response.data['code'] == 11008) {
// // 有可能对象获取不到所以try catch包住
// try {
// GlobalController globalController =
// Get.find<GlobalController>();
// globalController.resetParmAll();
// UserInfoController userInfoController =
// Get.find<UserInfoController>();
// userInfoController.model.token = null;
// userInfoController.model.user = null;
// userInfoController.model.login = 0;
// userInfoController.model.message = 0;
// LoginController loginController = Get.find();
// loginController.model.account = null;
// loginController.model.password = null;
// loginController.model.phone = null;
// loginController.model.code = null;
// } catch (e) {
// print(e);
// }
// final box = GetStorage();
// box.remove('user');
// box.remove('token');
// showToast(response.data["msg"]);
// } else if (response.data['code'] == 11005) {
// if (response.data['code'] == 11005) {
// var authUserData = response.data['data'];
// AuthBindTelController authBindTelController = Get.find();
// authBindTelController.model.authUserInfo = authUserData;
// Get.toNamed("/auth_bind_tel");
// }
// } else {
// showToast(response.data["msg"]);
// }
// return handler.reject(
// DioException(
// requestOptions: RequestOptions(data: response.data['msg']),
// message: response.data['msg']),
// );
// }
// }
// return handler.next(response);
// },
// onError: (e, handler) {
// // 错误处理,例如打印错误信息
// showToast("网络异常或服务连接异常,请稍候再试", color: color_error);
// print("DioError: $e");
// return handler.reject(e);
// },
// ));
// requestNoInfo.options.baseUrl = CommonVariables.apiUrl;
// requestNoInfo.options.connectTimeout = const Duration(seconds: 15);
// requestNoInfo.options.receiveTimeout = const Duration(seconds: 10);
// requestNoInfo.options.sendTimeout = const Duration(seconds: 10);
// requestNoInfo.interceptors.add(InterceptorsWrapper(
// onRequest: (options, handler) {
// print("---> ${options.method}, ${options.path}, ${options.data}");
// options.headers['token'] = Get.find<UserInfoController>().model.token;
// print("${options.headers['token']}");
// return handler.next(options);
// },
// onResponse: (response, ResponseInterceptorHandler handler) {
// // 在响应处理前的操作,例如解析响应数据
// // if (response.realUri.toString().contains("/login")) {
// // String? token = response.headers.value('token');
// // if (token != null) {
// // print("token = ${token}");
// // Get.find<GlobalController>().token.value = token;
// // }
// // }
// print("<--- ${response.statusCode}, ${response.data}");
// if (response.data is Map) {
// if (response.data['code'] == HttpStatusCodes.ok) {
// return handler.next(response);
// } else {
// // showToast(response.data["msg"]);
// return handler.reject(
// DioException(
// requestOptions: RequestOptions(data: response.data['msg']),
// message: response.data['msg'],
// ),
// );
// }
// }
// return handler.next(response);
// },
// onError: (e, handler) {
// // 错误处理,例如打印错误信息
// showToast("网络异常或服务连接异常,请稍候再试", color: color_error);
// print("DioError: $e");
// return handler.reject(e);
// },
// ));
// requestNoError.options.baseUrl = CommonVariables.apiUrl;
// requestNoError.options.connectTimeout = const Duration(seconds: 5);
// requestNoError.options.receiveTimeout = const Duration(seconds: 3);
// requestNoError.options.sendTimeout = const Duration(seconds: 3);
// requestNoError.interceptors.add(InterceptorsWrapper(
// onRequest: (options, handler) {
// print(
// "requestNoError---> ${options.method}, ${options.path}, ${options.data}");
// options.headers['token'] = Get.find<UserInfoController>().model.token;
// print("${options.headers['token']}");
// return handler.next(options);
// },
// onResponse: (response, ResponseInterceptorHandler handler) {
// print("requestNoError<--- ${response.statusCode}, ${response.data}");
// return handler.next(response);
// },
// onError: (e, handler) {
// // 错误处理,例如打印错误信息
// print("requestNoError-->DioError: $e");
// return handler.reject(e);
// },
// ));
reservationInit();
}
static void reservationInit() {
reservation.options.baseUrl = "https://crm-api.swes.com.cn";
reservation.options.connectTimeout = const Duration(seconds: 15);
reservation.options.receiveTimeout = const Duration(seconds: 10);
reservation.options.sendTimeout = const Duration(seconds: 10);
reservation.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler) {
print("---> ${options.method}, ${options.path}, ${options.data}");
options.headers['token'] =
"bMAQVR1x48t66u8EDYSftAJGo17r0rIB3z15JgyyoGz1rAEZHs1htHOCorYFJ2RT";
return handler.next(options);
},
onResponse: (response, ResponseInterceptorHandler handler) {
print("<--- ${response.statusCode} ${response.data}");
return handler.next(response);
},
onError: (e, handler) {
// 错误处理,例如打印错误信息
showToast("网络异常或服务连接异常,请稍候再试", color: color_error);
print("DioError: $e");
return handler.reject(e);
},
));
}
}

View File

@@ -1,5 +1,13 @@
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/color/repair_status.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/common/util/myDialog/my_dialog_controller.dart';
import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/model/user_data.dart';
part 'apply_repair_controller.g.dart'; part 'apply_repair_controller.g.dart';
@@ -91,69 +99,122 @@ class ApplyRepairController extends GetControllerEx<ApplyRepairModel> {
// } // }
// } // }
// //提交 //提交
// Future<String> submitRepair(BuildContext context) async { Future<String> submitRepair(BuildContext context) async {
// //tmp //tmp
// // return ''; // return '';
// String message = ''; String message = '';
// final MyDialogController myDialogController = final MyDialogController myDialogController =
// Get.find<MyDialogController>(); Get.find<MyDialogController>();
// if (model.device_type == null || model.device_type!.isEmpty) { if (model.device_type == null || model.device_type!.isEmpty) {
// message = '请选择设备类型!'; message = '请选择设备类型!';
// showToast(message); showToast(message);
// return message; return message;
// } }
// if (model.device_category == null || model.device_category!.isEmpty) { if (model.device_category == null || model.device_category!.isEmpty) {
// message = '请输入设备型号!'; message = '请输入设备型号!';
// showToast(message); showToast(message);
// return message; return message;
// } }
// if (model.device_id == null || model.device_id!.isEmpty) { if (model.device_id == null || model.device_id!.isEmpty) {
// message = '请输入设备序列号id'; message = '请输入设备序列号id';
// showToast(message); showToast(message);
// return message; return message;
// } }
// if (model.apply_name == null || model.apply_name!.isEmpty) { if (model.apply_name == null || model.apply_name!.isEmpty) {
// message = '请输入姓名!'; message = '请输入姓名!';
// showToast(message); showToast(message);
// return message; return message;
// } }
// RegExp nameRegExp = RegExp(r'^[\u4e00-\u9fa5]{2,4}$'); RegExp nameRegExp = RegExp(r'^[\u4e00-\u9fa5]{2,4}$');
// if (!nameRegExp.hasMatch(model.apply_name!)) { if (!nameRegExp.hasMatch(model.apply_name!)) {
// message = '姓名必须为2到4个汉字'; message = '姓名必须为2到4个汉字';
// showToast(message); showToast(message);
// return message; return message;
// } }
// if (model.tel == null || model.tel!.isEmpty) { if (model.tel == null || model.tel!.isEmpty) {
// message = '请输入手机号!'; message = '请输入手机号!';
// showToast(message); showToast(message);
// return message; return message;
// } }
// if (!MyUtils.isValidPhoneNumber(model.tel!)) { if (!MyUtils.isValidPhoneNumber(model.tel!)) {
// message = '无效的手机号!'; message = '无效的手机号!';
// showToast(message); showToast(message);
// return message; return message;
// } }
// if (model.address == null || model.address!.isEmpty) { if (model.address == null || model.address!.isEmpty) {
// message = '请输入地址!'; message = '请输入地址!';
// showToast(message); showToast(message);
// return message; return message;
// } }
// if (model.desc == null || model.desc!.isEmpty) { if (model.desc == null || model.desc!.isEmpty) {
// message = '请输入问题描述!'; message = '请输入问题描述!';
// showToast(message); showToast(message);
// return message; return message;
// } }
// if (model.issue_img == null || model.issue_img!.isEmpty) { if (model.issue_img == null || model.issue_img!.isEmpty) {
// message = '请至少上传一张问题图片!'; message = '请至少上传一张问题图片!';
// showToast(message); showToast(message);
// return message; return message;
// } }
// model.status = RepairStatus.pending; model.status = RepairStatus.pending;
// await repairRepository.saveRepair(model); // await repairRepository.saveRepair(model);
// return message; String type = "repair_submit_${model.device_id}";
// } String serviceAddress = ServiceConstant.service_address;
String serviceName = ServiceConstant.server_service;
String serviceApi = ServiceConstant.submit_repair;
String queryUrl = "$serviceAddress$serviceName$serviceApi?type=$type";
// 组织请求数据
final UserInfoController userInfoController =
Get.find<UserInfoController>();
UserModel user = userInfoController.model.user!;
Map<String, dynamic> data = {
'apply_name': model.apply_name,
'address': model.address,
'desc': model.desc,
'device_type': model.device_type,
'issue_img': model.issue_img,
'tel': model.tel,
'uid': user.uid,
'device_category': model.device_category,
'device_id': model.device_id,
'device_name': model.device_name,
'status': model.status,
};
// 发起插入请求(这里相当于之前的 saveRepair
requestWithLog(
logTitle: "提交报修",
method: MyHttpMethod.post,
queryUrl: queryUrl,
data: data,
onSuccess: (res) {
if (res.data is List && res.data.isNotEmpty) {
final inserted = res.data[0];
model.id = inserted['id'];
model.create_time = DateTime.tryParse(inserted['create_time']);
// TextSelectionOverlay
// // saveRepairHistor
// saveRepairHistory(
// RepairProcessModel()
// ..status = model.status
// ..record_id = inserted['id'],
// );
showToast("提交成功!");
} else {
showToast("提交失败:未返回数据!");
}
},
onFailure: (res) {
showToast("提交失败!");
},
);
return message;
}
// Future<void> getDeviceList() async { // Future<void> getDeviceList() async {
// final UserInfoController userInfoController = // final UserInfoController userInfoController =

View File

@@ -5,9 +5,11 @@ import 'package:ef/ef.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart'; import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/color/app_uri_status.dart'; import 'package:vbvs_app/common/color/app_uri_status.dart';
import 'package:vbvs_app/common/util/DailyLogUtils.dart'; import 'package:vbvs_app/common/util/DailyLogUtils.dart';
import 'package:vbvs_app/common/util/Dio.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/common/util/requestWithLog.dart'; import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/model/api_response.dart'; import 'package:vbvs_app/model/api_response.dart';
class BookInfoModel { class BookInfoModel {
@@ -38,53 +40,23 @@ class BookInfoController extends GetControllerEx<BookInfoModel> {
attr = GetModel(BookInfoModel()).obs; attr = GetModel(BookInfoModel()).obs;
} }
// get userInfoController => Get.find<UserInfoController>(); get userInfoController => Get.find<UserInfoController>();
Future<void> getData(String storeId) async { getData(id) {
// 初始化模型
model.datetimes = []; model.datetimes = [];
model.datetimes_index = null; model.datetimes_index = null;
model.dataT = {}; model.dataT = {};
updateAll(); updateAll();
ApiService.reservation
String url = .get("/agent/userBook/config/detailConfigByStore?storeId=$id")
"https://crm-api.swes.com.cn/agent/userBook/config/detailConfigByStore?storeId=$storeId"; .then((d) {
model.datetimes = d.data["dateList"];
await requestWithLog( model.datetimes_index = 0;
logTitle: "获取预约门店时间", model.dataT = d.data;
method: MyHttpMethod.get, time_periodChange();
queryUrl: url, });
successMsg: "获取预约门店时间成功",
errorMsg: "获取预约门店时间失败",
onSuccess: (res) {
final data = res.data;
if (data != null) {
model.datetimes = data["dateList"] ?? [];
model.datetimes_index = 0;
model.dataT = data;
time_periodChange(); // 原来的 time_periodChange
updateAll();
}
},
onFailure: (res) {},
);
} }
// getData(id) {
// model.datetimes = [];
// model.datetimes_index = null;
// model.dataT = {};
// updateAll();
// ApiService.reservation
// .get("/agent/userBook/config/detailConfigByStore?storeId=$id")
// .then((d) {
// model.datetimes = d.data["dateList"];
// model.datetimes_index = 0;
// model.dataT = d.data;
// time_periodChange();
// });
// }
time_periodChange() { time_periodChange() {
if (model.datetimes_index == null) { if (model.datetimes_index == null) {
return; return;
@@ -95,27 +67,23 @@ class BookInfoController extends GetControllerEx<BookInfoModel> {
updateAll(); updateAll();
} }
// submitData(id) { submitData(id) {
// String tel = userInfoController.model?.user?.tel ?? ""; String tel = userInfoController.model?.user?.tel ?? "";
// if(tel.isEmpty) { if (tel.isEmpty) {
// showToast("用户未存在手机号"); showToast("用户未存在手机号");
// return; return;
// } }
// return ApiService.reservation.post("/agent/userBook/submitBook", data: { return ApiService.reservation.post("/agent/userBook/submitBook", data: {
// "extUserId": tel, "extUserId": tel,
// "storeId": id, "storeId": id,
// "realName": model.userName, "realName": model.userName,
// "userPhone": model.userPhone, "userPhone": model.userPhone,
// "bookDateId": model.time_period[model.select_time_index!]["id"] "bookDateId": model.time_period[model.select_time_index!]["id"]
// }); });
// } }
// messageAdd(Map data) { messageAdd(Map data) {
// return ApiService.request.post("/api/message/info", data: { return ApiService.request.post("/api/message/info",
// "type": 0, data: {"type": 0, "status": 1, "read": 1, "data": jsonEncode(data)});
// "status": 1, }
// "read": 1,
// "data": jsonEncode(data)
// });
// }
} }

View File

@@ -36,33 +36,6 @@ class DeviceListController extends GetControllerEx<DeviceListModel> {
attr = GetModel(DeviceListModel()).obs; attr = GetModel(DeviceListModel()).obs;
} }
// @override
// void onInit() {
// super.onInit();
// model.keyword = "";
// getDeviceList(); // 正确的初始化数据调用
// }
// getDeviceList({int time = 1}) async {
// String search = (model.keyword != null && model.keyword!.isNotEmpty)
// ? "?key=${model.keyword}"
// : "";
// var data = await ApiService.request.get("/api/device/info/list$search");
// if (data.data["data"] != null) {
// try {
// List<dynamic> tmp = data.data["data"] as List<dynamic>;
// model.deviceList = tmp.map((obj) => DeviceModel.fromJson(obj)).toList();
// model.deviceListWyf = tmp;
// } catch (e) {
// print(e);
// }
// } else {
// model.deviceList = [];
// model.deviceListWyf = [];
// }
// updateAll();
// }
getDeviceList() async { getDeviceList() async {
try { try {
String search = (model.keyword != null && model.keyword!.isNotEmpty) String search = (model.keyword != null && model.keyword!.isNotEmpty)
@@ -82,8 +55,8 @@ class DeviceListController extends GetControllerEx<DeviceListModel> {
MyUtils.formatResponse(res, "设备.设备列表请求成功".tr, "设备.设备列表请求失败".tr); MyUtils.formatResponse(res, "设备.设备列表请求成功".tr, "设备.设备列表请求失败".tr);
if (res.code == HttpStatusCodes.ok) { if (res.code == HttpStatusCodes.ok) {
// bindDeviceNum.value = res.total!; // bindDeviceNum.value = res.total!;
model.deviceList =res.data; model.deviceList = res.data;
updateAll(); updateAll();
return res; return res;
} }

View File

@@ -1,9 +1,11 @@
import 'dart:ui'; import 'dart:ui';
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:geolocator/geolocator.dart';
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:vbvs_app/controller/weather/weather_controller.dart';
import 'package:vbvs_app/common/util/Dio.dart';
part 'experience_store_list_page.g.dart'; part 'experience_store_list_page.g.dart';
@@ -27,99 +29,98 @@ class ExperienceStoreListController
ExperienceStoreListController() { ExperienceStoreListController() {
attr = GetModel(ExperienceStoreListModel()).obs; attr = GetModel(ExperienceStoreListModel()).obs;
} }
WeatherModelController weatherModelController = Get.find();
Position? position;
double latitude = 31.8512;
double longitude = 117.26061;
// Position? position; int total = 0;
// double latitude = 31.8512; int page = 0;
// double longitude = 117.26061; bool lock = false;
// int total = 0; resetParm() {
// int page = 0; position = null;
// bool lock = false; total = 0;
page = 0;
lock = false;
// resetParm() { model.experienceStoreModelList = [];
// position = null; updateAll();
// total = 0;
// page = 0;
// lock = false;
// model.experienceStoreModelList = [];
// updateAll();
// }
// getData({int count = 10}) async {
// if (page != 0 && page * count > total) {
// return;
// }
// if (lock) {
// return;
// }
// if (page == 0) {
// position = await locationCheck();
// }
// lock = true;
// int page_ = page;
// ApiService.reservation
// .get(
// "/agent/userBook/config/getBookStoreList?storeName=${"${model.keyword}".isNotEmpty ? model.keyword : ''}&latitude=${position == null ? latitude : position?.latitude}&longitude=${position == null ? longitude : position?.longitude}&page=$page&size=$count&sort=distance")
// .then((d) {
// lock = false;
// if (page == 0) {
// model.experienceStoreModelList = d.data["records"];
// } else {
// int index = 0;
// d.data["records"]?.forEach((item) {
// if (model.experienceStoreModelList
// .indexWhere((item2) => item2["id"] == item["id"]) ==
// -1) {
// model.experienceStoreModelList.add(item);
// } else {
// model.experienceStoreModelList[index] = item;
// }
// index++;
// });
// }
// page = page_ + 1;
// total = d.data["total"];
// updateAll();
// }).catchError((d) {
// lock = false;
// });
// }
determinePosition() async {
// bool serviceEnabled;
// LocationPermission permission;
// // Test if location services are enabled.
// serviceEnabled = await Geolocator.isLocationServiceEnabled();
// if (!serviceEnabled) {
// // Location services are not enabled don't continue
// // accessing the position and request users of the
// // App to enable the location services.
// return Future.error('Location services are disabled.');
// }
// permission = await Geolocator.checkPermission();
// if (permission == LocationPermission.denied) {
// permission = await Geolocator.requestPermission();
// if (permission == LocationPermission.denied) {
// // Permissions are denied, next time you could try
// // requesting permissions again (this is also where
// // Android's shouldShowRequestPermissionRationale
// // returned true. According to Android guidelines
// // your App should show an explanatory UI now.
// return Future.error('Location permissions are denied');
// }
// }
// if (permission == LocationPermission.deniedForever) {
// // Permissions are denied forever, handle appropriately.
// return Future.error(
// 'Location permissions are permanently denied, we cannot request permissions.');
// }
// // When we reach here, permissions are granted and we can
// // continue accessing the position of the device.
// position = await Geolocator.getCurrentPosition();
} }
getData({int count = 10}) async {
if (page != 0 && page * count > total) {
return;
}
if (lock) {
return;
}
if (page == 0) {
position = await weatherModelController.determinePosition();
}
lock = true;
int page_ = page;
ApiService.reservation
.get(
"/agent/userBook/config/getBookStoreList?storeName=${"${model.keyword}".isNotEmpty ? model.keyword : ''}&latitude=${position == null ? latitude : position?.latitude}&longitude=${position == null ? longitude : position?.longitude}&page=$page&size=$count&sort=distance")
.then((d) {
lock = false;
if (page == 0) {
model.experienceStoreModelList = d.data["records"];
} else {
int index = 0;
d.data["records"]?.forEach((item) {
if (model.experienceStoreModelList
.indexWhere((item2) => item2["id"] == item["id"]) ==
-1) {
model.experienceStoreModelList.add(item);
} else {
model.experienceStoreModelList[index] = item;
}
index++;
});
}
page = page_ + 1;
total = d.data["total"];
updateAll();
}).catchError((d) {
lock = false;
});
}
//determinePosition() async {
// bool serviceEnabled;
// LocationPermission permission;
// // Test if location services are enabled.
// serviceEnabled = await Geolocator.isLocationServiceEnabled();
// if (!serviceEnabled) {
// // Location services are not enabled don't continue
// // accessing the position and request users of the
// // App to enable the location services.
// return Future.error('Location services are disabled.');
// }
// permission = await Geolocator.checkPermission();
// if (permission == LocationPermission.denied) {
// permission = await Geolocator.requestPermission();
// if (permission == LocationPermission.denied) {
// // Permissions are denied, next time you could try
// // requesting permissions again (this is also where
// // Android's shouldShowRequestPermissionRationale
// // returned true. According to Android guidelines
// // your App should show an explanatory UI now.
// return Future.error('Location permissions are denied');
// }
// }
// if (permission == LocationPermission.deniedForever) {
// // Permissions are denied forever, handle appropriately.
// return Future.error(
// 'Location permissions are permanently denied, we cannot request permissions.');
// }
// // When we reach here, permissions are granted and we can
// // continue accessing the position of the device.
// position = await Geolocator.getCurrentPosition();
//}
} }

View File

@@ -1,7 +1,9 @@
import 'dart:convert'; import 'dart:convert';
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:vbvs_app/common/util/Dio.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
class BookExperienceListModel { class BookExperienceListModel {
List bookInfoList = []; //预约列表 List bookInfoList = []; //预约列表
@@ -14,102 +16,102 @@ class BookExperienceListController
attr = GetModel(BookExperienceListModel()).obs; attr = GetModel(BookExperienceListModel()).obs;
} }
// resetParm() { resetParm() {
// model.bookInfoList = []; model.bookInfoList = [];
// model.experienceStoreModelList = []; model.experienceStoreModelList = [];
// total = 0; total = 0;
// page = 0; page = 0;
// lock = false; lock = false;
// updateAll(); updateAll();
// } }
// getAllBook() { getAllBook() {
// ApiService.reservation ApiService.reservation
// .get( .get(
// "/agent/userBook/config/getBookStoreList?storeName=&latitude=31.8512&longitude=117.26061&page=0&size=20000&sort=distance") "/agent/userBook/config/getBookStoreList?storeName=&latitude=31.8512&longitude=117.26061&page=0&size=20000&sort=distance")
// .then((d) { .then((d) {
// model.experienceStoreModelList = d.data["records"]; model.experienceStoreModelList = d.data["records"];
// updateAll(); updateAll();
// }); });
// } }
// int total = 0; int total = 0;
// int page = 0; int page = 0;
// bool lock = false; bool lock = false;
// getData({int count = 10, Function? finished}) { getData({int count = 10, Function? finished}) {
// if (page != 0 && page * count > total) { if (page != 0 && page * count > total) {
// finished?.call(); finished?.call();
// return; return;
// } }
// if (lock) { if (lock) {
// finished?.call(); finished?.call();
// return; return;
// } }
// lock = true; lock = true;
// int page_ = page; int page_ = page;
// String tel = Get.find<UserInfoController>().model.user?.tel ?? ""; String tel = Get.find<UserInfoController>().model.user?.phone ?? "";
// if (tel.isEmpty) { if (tel.isEmpty) {
// showToast("用户未存在手机号"); showToast("用户未存在手机号");
// finished?.call(); finished?.call();
// return; return;
// } }
// ApiService.reservation ApiService.reservation
// .get( .get(
// "/agent/userBook/list?extUserId=$tel&page=$page_&size=$count&sort=create_time,desc") "/agent/userBook/list?extUserId=$tel&page=$page_&size=$count&sort=create_time,desc")
// .then((d) { .then((d) {
// lock = false; lock = false;
// finished?.call(); finished?.call();
// if (page == 0) { if (page == 0) {
// model.bookInfoList = d.data["records"]; model.bookInfoList = d.data["records"];
// } else { } else {
// int index = 0; int index = 0;
// d.data["records"]?.forEach((item) { d.data["records"]?.forEach((item) {
// if (model.bookInfoList if (model.bookInfoList
// .indexWhere((item2) => item2["id"] == item["id"]) == .indexWhere((item2) => item2["id"] == item["id"]) ==
// -1) { -1) {
// model.bookInfoList.add(item); model.bookInfoList.add(item);
// } else { } else {
// model.bookInfoList[index] = item; model.bookInfoList[index] = item;
// } }
// index++; index++;
// }); });
// } }
// page = page_ + 1; page = page_ + 1;
// total = d.data["total"]; total = d.data["total"];
// updateAll(); updateAll();
// }).catchError((d) { }).catchError((d) {
// lock = false; lock = false;
// finished?.call(); finished?.call();
// }); });
// } }
// cancelBook(id, {Function? success}) { cancelBook(id, {Function? success}) {
// String tel = Get.find<UserInfoController>().model.user?.tel ?? ""; String tel = Get.find<UserInfoController>().model.user?.phone ?? "";
// if (tel.isEmpty) { if (tel.isEmpty) {
// showToast("用户未存在手机号"); showToast("用户未存在手机号");
// return; return;
// } }
// LoadingDialog.show("提交中..."); LoadingDialog.show("提交中...");
// ApiService.reservation ApiService.reservation
// .post("/agent/userBook/cancel?extUserId=$tel&id=$id") .post("/agent/userBook/cancel?extUserId=$tel&id=$id")
// .then((d) { .then((d) {
// page = 0; page = 0;
// getData(finished: () { getData(finished: () {
// LoadingDialog.hide(); LoadingDialog.hide();
// }); });
// success?.call(); success?.call();
// }).catchError((d) { }).catchError((d) {
// LoadingDialog.hide(); LoadingDialog.hide();
// }); });
// } }
// messageAdd(Map data) { messageAdd(Map data) {
// return ApiService.request.post("/api/message/info", data: { return ApiService.request.post("/api/message/info", data: {
// "type": 0, "type": 0,
// "status": 1, "status": 1,
// "read": 1, "read": 1,
// "data": jsonEncode(data) "data": jsonEncode(data)
// }); });
// } }
} }

View File

@@ -69,7 +69,7 @@ class WeatherModelController extends GetControllerEx<WeatherModel> {
// 获取当前位置并存储到 model // 获取当前位置并存储到 model
Future<void> _getCurrentLocation() async { Future<void> _getCurrentLocation() async {
try { try {
Position position = await _determinePosition(); Position position = await determinePosition();
if (position == null) { if (position == null) {
throw Exception("获取位置失败"); throw Exception("获取位置失败");
} }
@@ -97,7 +97,7 @@ class WeatherModelController extends GetControllerEx<WeatherModel> {
} }
// 获取当前位置 // 获取当前位置
Future<Position> _determinePosition() async { Future<Position> determinePosition() async {
bool serviceEnabled; bool serviceEnabled;
LocationPermission permission; LocationPermission permission;

View File

@@ -16,6 +16,7 @@ import 'package:vbvs_app/common/color/AppGlobal.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart'; import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/util/CheckNetwork.dart'; import 'package:vbvs_app/common/util/CheckNetwork.dart';
import 'package:vbvs_app/common/util/CommonVariables.dart'; import 'package:vbvs_app/common/util/CommonVariables.dart';
import 'package:vbvs_app/common/util/Dio.dart';
import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/requestWithLog.dart'; import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/controller/date/CalendarController.dart'; import 'package:vbvs_app/controller/date/CalendarController.dart';
@@ -85,7 +86,7 @@ Future<void> main() async {
await initLanguageSetting(); await initLanguageSetting();
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
// ApiService.init(); ApiService.init();
await GetStorage.init(); await GetStorage.init();
// 初始化登录 // 初始化登录
await initLocalStorage(); await initLocalStorage();

View File

@@ -875,7 +875,7 @@ Future showOneSelectionDialog(
.bodyMedium .bodyMedium
.override( .override(
fontFamily: 'Readex Pro', fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3, color: Colors.white,
fontSize: 30.rpx, fontSize: 30.rpx,
)), )),
ClickableContainer( ClickableContainer(

View File

@@ -45,6 +45,7 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
), ),
), ),
child: Scaffold( child: Scaffold(
resizeToAvoidBottomInset: true, // 自动调整页面避免被键盘遮挡
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
appBar: AppBar( appBar: AppBar(
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
@@ -1779,8 +1780,8 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
), ),
), ),
Padding( Padding(
padding: const EdgeInsetsDirectional.fromSTEB( padding: EdgeInsetsDirectional.fromSTEB(30.rpx, 30.rpx,
15, 15, 15, AppConstants.page_button_bottom_padding), 30.rpx, AppConstants.page_button_bottom_padding),
child: Container( child: Container(
width: bodysize!.maxWidth, width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.056, height: bodysize!.maxHeight * 0.056,
@@ -1836,61 +1837,7 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
), ),
), ),
), ),
) )),
// Container(
// width: bodysize!.maxWidth,
// height: bodysize!.maxHeight * 0.056,
// decoration: BoxDecoration(
// color: FlutterFlowTheme.of(context)
// .secondaryBackground,
// borderRadius: BorderRadius.circular(16.rpx),
// ),
// child: FFButtonWidget(
// onPressed: () {
// print('Button pressed ...');
// controller.submitRepair(context).then((msg) {
// if (msg.isEmpty) {
// MessageListController messageListController =
// Get.find();
// messageListController.addMessage();
// Get.to(() => ApplyRepairSuccessPage(),
// arguments: {'model': controller.model});
// controller.model =
// ApplyRepairModel(); // 在 submitRepair 完成后执行
// controller.updateAll();
// }
// }).catchError((error) {
// // 错误处理
// print('Error: $error');
// });
// },
// text: '提交申请',
// options: FFButtonOptions(
// height: 40,
// padding: const EdgeInsetsDirectional.fromSTEB(
// 24, 0, 24, 0),
// iconPadding: const EdgeInsetsDirectional.fromSTEB(
// 0, 0, 0, 0),
// color: const Color(0xFFD3B684),
// textStyle: FlutterFlowTheme.of(context)
// .titleSmall
// .override(
// fontFamily: 'Readex Pro',
// color: Colors.white,
// fontSize: AppFontsize.normal_text_size,
// letterSpacing: 0,
// ),
// elevation: 0,
// borderSide: const BorderSide(
// color: Colors.transparent,
// width: 1,
// ),
// borderRadius: BorderRadius.circular(8),
// ),
// ),
// ),
),
), ),
], ],
), ),

View File

@@ -144,7 +144,7 @@ class _BluetoothState extends State<BluetoothPage> {
_buildMenuButton( _buildMenuButton(
context, '睡眠习惯', "/sleepHabitPage"), context, '睡眠习惯', "/sleepHabitPage"),
_buildMenuButton( _buildMenuButton(
context, '分享设备', "/devicePeopleInfo"), context, '分享设备', "/deviceSharePage"),
_buildMenuButton( _buildMenuButton(
context, '解绑', "/devicePeopleInfo"), context, '解绑', "/devicePeopleInfo"),
], ],

View File

@@ -1,19 +1,11 @@
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/controller/mh_controller/book_info_controller.dart'; import 'package:vbvs_app/controller/mh_controller/book_info_controller.dart';
class BookDateWidget extends GetView<BookInfoController> { class BookDateWidget extends GetView<BookInfoController> {
// final String week;
// final String date;
// const BookDateWidget({
// super.key,
// String? week,
// String? date,
// }) : this.week = week ?? '周一',
// this.date = date ?? '07/10';
int index; int index;
BookInfoController bookInfoController; BookInfoController bookInfoController;
@@ -22,25 +14,25 @@ class BookDateWidget extends GetView<BookInfoController> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return InkWell(onTap: () { return InkWell(onTap: () {
// if(index == controller.model.datetimes_index) { if (index == controller.model.datetimes_index) {
// return; return;
// } }
// controller.model.datetimes_index = index; controller.model.datetimes_index = index;
// controller.time_periodChange(); controller.time_periodChange();
// controller.updateAll(); controller.updateAll();
}, child: Obx(() { }, child: Obx(() {
return Container( return Container(
width: 71.5, width: 144.rpx,
height: 71.5, height: 143.rpx,
constraints: BoxConstraints( constraints: BoxConstraints(
minHeight: 70, minHeight: 140.rpx,
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
// color: FlutterFlowTheme.of(context).secondaryBackground, // color: FlutterFlowTheme.of(context).secondaryBackground,
color: controller.model.datetimes_index == index color: controller.model.datetimes_index == index
? stringToColor('#D3B684') ? Color(0XFF84F5FF)
: FlutterFlowTheme.of(context).secondaryBackground, : Color(0xFF003058),
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(13.rpx),
), ),
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
@@ -50,32 +42,32 @@ class BookDateWidget extends GetView<BookInfoController> {
child: Text( child: Text(
"${bookInfoController.model.datetimes![index]?['dayName']}", "${bookInfoController.model.datetimes![index]?['dayName']}",
style: FlutterFlowTheme.of(context).bodyMedium.override( style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Readex Pro', fontFamily: 'Readex Pro',
letterSpacing: 0, letterSpacing: 0,
color: controller.model.datetimes_index == index color: controller.model.datetimes_index == index
? stringToColor('#FFFFFF') ? Color(0XFF011D33)
: stringToColor('#333333'), : Colors.white,
), fontSize: 26.rpx),
), ),
), ),
Flexible( Flexible(
child: Text( child: Text(
"${bookInfoController.model.datetimes![index]?['day']}", "${bookInfoController.model.datetimes![index]?['day']}",
style: FlutterFlowTheme.of(context).bodyMedium.override( style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Readex Pro', fontFamily: 'Readex Pro',
letterSpacing: 0, letterSpacing: 0,
color: controller.model.datetimes_index == index color: controller.model.datetimes_index == index
? stringToColor('#FFFFFF') ? Color(0XFF011D33)
: stringToColor('#333333'), : Colors.white,
), fontSize: 19.rpx),
), ),
), ),
Flexible( Flexible(
child: Icon( child: Icon(
Icons.keyboard_arrow_down_rounded, Icons.keyboard_arrow_down_rounded,
color: controller.model.datetimes_index == index color: controller.model.datetimes_index == index
? stringToColor('#FFFFFF') ? Color(0XFF011D33)
: stringToColor('#333333'), : Colors.white,
size: 12, size: 12,
), ),
), ),

File diff suppressed because it is too large Load Diff

View File

@@ -106,7 +106,7 @@ class DeviceInfoWidget extends GetView {
text: '设备ID' + text: '设备ID' +
(deviceListController.model (deviceListController.model
.deviceList[ .deviceList[
index]['id'] ?? index]['_id'] ??
''), ''),
style: FlutterFlowTheme.of( style: FlutterFlowTheme.of(
context) context)
@@ -232,13 +232,9 @@ class DeviceInfoWidget extends GetView {
padding: EdgeInsetsDirectional.fromSTEB(0, 36.rpx, 0, 0), padding: EdgeInsetsDirectional.fromSTEB(0, 36.rpx, 0, 0),
child: Container( child: Container(
width: MediaQuery.sizeOf(context).width, width: MediaQuery.sizeOf(context).width,
height: 130, height: 0.5.rpx,
constraints: BoxConstraints(
minHeight: 1,
maxHeight: 1,
),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0xFFB6BBC9), color: Color(0xFF929699),
), ),
), ),
), ),

View File

@@ -9,324 +9,330 @@ import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/color/appFontsize.dart'; import 'package:vbvs_app/common/color/appFontsize.dart';
import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart'; import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/controller/mh_controller/experience_store_list_page.dart'; import 'package:vbvs_app/controller/mh_controller/experience_store_list_page.dart';
import 'package:vbvs_app/controller/weather/weather_controller.dart';
import 'package:vbvs_app/pages/mh_page/Empty.dart'; import 'package:vbvs_app/pages/mh_page/Empty.dart';
import 'package:vbvs_app/pages/mh_page/experience_store_widget.dart'; import 'package:vbvs_app/pages/mh_page/experience_store_widget.dart';
import 'package:vbvs_app/pages/mh_page/searchWidget.dart'; import 'package:vbvs_app/pages/mh_page/searchWidget.dart';
class ExperienceStorePage extends GetView<ExperienceStoreListController> { class ExperienceStorePage extends StatefulWidget {
ExperienceStorePage({super.key}); ExperienceStorePage({super.key});
@override
State<ExperienceStorePage> createState() => _ExperienceStorePageState();
}
// class _ExperienceStorePageState extends State<ExperienceStorePage> { class _ExperienceStorePageState extends State<ExperienceStorePage> {
// get controller => Get.find<ExperienceStoreListController>(); final scaffoldKey = GlobalKey<ScaffoldState>();
// final scaffoldKey = GlobalKey<ScaffoldState>();
BoxConstraints? bodysize; BoxConstraints? bodysize;
ScrollController scrollController = ScrollController(); ScrollController scrollController = ScrollController();
ExperienceStoreListController controller = Get.find(); ExperienceStoreListController controller = Get.find();
WeatherModelController weatherModelController = Get.find();
int runTime = 0; int runTime = 0;
// @override @override
// void initState() { void initState() {
// // TODO: implement initState // TODO: implement initState
// super.initState(); super.initState();
// Timer(Duration(milliseconds: 100), () async { Timer(Duration(milliseconds: 100), () async {
// controller.resetParm(); controller.resetParm();
// await controller.determinePosition(); await weatherModelController.determinePosition();
// controller.page = 0; controller.page = 0;
// controller.getData(); controller.getData();
// scrollController.addListener(() { scrollController.addListener(() {
// int ctime = DateTime.now().millisecondsSinceEpoch; int ctime = DateTime.now().millisecondsSinceEpoch;
// if (ctime - runTime > 100 && if (ctime - runTime > 100 &&
// scrollController.position.pixels + 80 > scrollController.position.pixels + 80 >
// scrollController.position.maxScrollExtent) { scrollController.position.maxScrollExtent) {
// runTime = ctime; runTime = ctime;
// print( print(
// "bottom get more data ${scrollController.position.pixels} ${scrollController.position.maxScrollExtent}"); "bottom get more data ${scrollController.position.pixels} ${scrollController.position.maxScrollExtent}");
// controller.getData(); controller.getData();
// } }
// }); });
// }); });
// } }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return LayoutBuilder(builder: (context, cc) { return LayoutBuilder(builder: (context, cc) {
controller.model.experienceStoreModelList = [ // controller.model.experienceStoreModelList = [
{ // {
"id": "5b82d1d9c33c74647e7624ec1db7918f", // "id": "5b82d1d9c33c74647e7624ec1db7918f",
"enabled": true, // "enabled": true,
"code": "3401002", // "code": "3401002",
"name": "SWES眠花糖合肥省委大院体验店", // "name": "SWES眠花糖合肥省委大院体验店",
"customerId": null, // "customerId": null,
"setNetCustomerKid": null, // "setNetCustomerKid": null,
"customer": null, // "customer": null,
"kingdeeId": "", // "kingdeeId": "",
"channel": null, // "channel": null,
"salePersonId": "ed648f977422a9f32a05b4892a3cb529", // "salePersonId": "ed648f977422a9f32a05b4892a3cb529",
"salePerson": null, // "salePerson": null,
"deptId": 3, // "deptId": 3,
"deptName": null, // "deptName": null,
"dept": null, // "dept": null,
"introduction": "", // "introduction": "",
"mobile": "18156022846", // "mobile": "18156022846",
"hotline": "0551-64464894", // "hotline": "0551-64464894",
"city": "合肥市", // "city": "合肥市",
"district": "庐阳区", // "district": "庐阳区",
"addressDetail": "合肥市庐阳区逍遥津街道南含山路与红星路交汇处", // "addressDetail": "合肥市庐阳区逍遥津街道南含山路与红星路交汇处",
"image": "", // "image": "",
"latitude": "31.858934", // "latitude": "31.858934",
"longitude": "117.282166", // "longitude": "117.282166",
"isDel": false, // "isDel": false,
"isAppShow": true, // "isAppShow": true,
"business": true, // "business": true,
"authEndTime": null, // "authEndTime": null,
"createTime": 1701133326000, // "createTime": 1701133326000,
"createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283", // "createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283",
"updateTime": 1709193588000, // "updateTime": 1709193588000,
"updateAdminId": null, // "updateAdminId": null,
"distance": 2.2 // "distance": 2.2
}, // },
{ // {
"id": "97603deebb83f610f73acf5d0def2bce", // "id": "97603deebb83f610f73acf5d0def2bce",
"enabled": true, // "enabled": true,
"code": "3401003", // "code": "3401003",
"name": "SWES眠花糖合肥安粮国贸体验店", // "name": "SWES眠花糖合肥安粮国贸体验店",
"customerId": null, // "customerId": null,
"setNetCustomerKid": null, // "setNetCustomerKid": null,
"customer": null, // "customer": null,
"kingdeeId": "", // "kingdeeId": "",
"channel": null, // "channel": null,
"salePersonId": "69297c65588adde4ee5de3c43a2c4033", // "salePersonId": "69297c65588adde4ee5de3c43a2c4033",
"salePerson": null, // "salePerson": null,
"deptId": 3, // "deptId": 3,
"deptName": null, // "deptName": null,
"dept": null, // "dept": null,
"introduction": "", // "introduction": "",
"mobile": "18655643429", // "mobile": "18655643429",
"hotline": "0551-65156985", // "hotline": "0551-65156985",
"city": "合肥市", // "city": "合肥市",
"district": "政务新区", // "district": "政务新区",
"addressDetail": "安徽省合肥市蜀山区合作化南路16号", // "addressDetail": "安徽省合肥市蜀山区合作化南路16号",
"image": "", // "image": "",
"latitude": "31.82018", // "latitude": "31.82018",
"longitude": "117.25367", // "longitude": "117.25367",
"isDel": false, // "isDel": false,
"isAppShow": true, // "isAppShow": true,
"business": true, // "business": true,
"authEndTime": null, // "authEndTime": null,
"createTime": 1701133473000, // "createTime": 1701133473000,
"createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283", // "createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283",
"updateTime": 1709193752000, // "updateTime": 1709193752000,
"updateAdminId": null, // "updateAdminId": null,
"distance": 3.5 // "distance": 3.5
}, // },
{ // {
"id": "b6b588d7ff6b248115ee3e5951cf39a1", // "id": "b6b588d7ff6b248115ee3e5951cf39a1",
"enabled": true, // "enabled": true,
"code": "3301001", // "code": "3301001",
"name": "SWES眠花糖杭州南星桥旗舰店", // "name": "SWES眠花糖杭州南星桥旗舰店",
"customerId": null, // "customerId": null,
"setNetCustomerKid": null, // "setNetCustomerKid": null,
"customer": null, // "customer": null,
"kingdeeId": "", // "kingdeeId": "",
"channel": null, // "channel": null,
"salePersonId": "f3a5e7935f65e94bc5aa6b2d63211e61", // "salePersonId": "f3a5e7935f65e94bc5aa6b2d63211e61",
"salePerson": null, // "salePerson": null,
"deptId": 33, // "deptId": 33,
"deptName": null, // "deptName": null,
"dept": null, // "dept": null,
"introduction": "", // "introduction": "",
"mobile": "15222919097", // "mobile": "15222919097",
"hotline": "0571-86718606", // "hotline": "0571-86718606",
"city": "杭州市", // "city": "杭州市",
"district": "上城区", // "district": "上城区",
"addressDetail": "浙江省杭州市上城区飞云江路45号一层102室", // "addressDetail": "浙江省杭州市上城区飞云江路45号一层102室",
"image": "", // "image": "",
"latitude": "30.21667", // "latitude": "30.21667",
"longitude": "120.17757", // "longitude": "120.17757",
"isDel": false, // "isDel": false,
"isAppShow": true, // "isAppShow": true,
"business": true, // "business": true,
"authEndTime": null, // "authEndTime": null,
"createTime": 1701135379000, // "createTime": 1701135379000,
"createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283", // "createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283",
"updateTime": 1709194185000, // "updateTime": 1709194185000,
"updateAdminId": null, // "updateAdminId": null,
"distance": 332.1 // "distance": 332.1
}, // },
{ // {
"id": "38fdbb715dc7bfddae3e32685c288e49", // "id": "38fdbb715dc7bfddae3e32685c288e49",
"enabled": true, // "enabled": true,
"code": "3102001", // "code": "3102001",
"name": "SWES眠花糖上海复兴荟旗舰店", // "name": "SWES眠花糖上海复兴荟旗舰店",
"customerId": null, // "customerId": null,
"setNetCustomerKid": null, // "setNetCustomerKid": null,
"customer": null, // "customer": null,
"kingdeeId": "", // "kingdeeId": "",
"channel": null, // "channel": null,
"salePersonId": "4ae944badb423197bc54c0a6ec252944", // "salePersonId": "4ae944badb423197bc54c0a6ec252944",
"salePerson": null, // "salePerson": null,
"deptId": 32, // "deptId": 32,
"deptName": null, // "deptName": null,
"dept": null, // "dept": null,
"introduction": "", // "introduction": "",
"mobile": "13053037959", // "mobile": "13053037959",
"hotline": "021-63391962", // "hotline": "021-63391962",
"city": "上海市", // "city": "上海市",
"district": "黄浦区", // "district": "黄浦区",
"addressDetail": "上海市黄浦区复兴东路1108号1层-1室", // "addressDetail": "上海市黄浦区复兴东路1108号1层-1室",
"image": "", // "image": "",
"latitude": "31.22209", // "latitude": "31.22209",
"longitude": "121.494667", // "longitude": "121.494667",
"isDel": false, // "isDel": false,
"isAppShow": true, // "isAppShow": true,
"business": true, // "business": true,
"authEndTime": null, // "authEndTime": null,
"createTime": 1701135192000, // "createTime": 1701135192000,
"createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283", // "createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283",
"updateTime": 1709194151000, // "updateTime": 1709194151000,
"updateAdminId": null, // "updateAdminId": null,
"distance": 407.3 // "distance": 407.3
}, // },
{ // {
"id": "af908e6c5d1a2c8113b1c73117e15064", // "id": "af908e6c5d1a2c8113b1c73117e15064",
"enabled": true, // "enabled": true,
"code": "3101001", // "code": "3101001",
"name": "SWES眠花糖上海外滩九里体验店", // "name": "SWES眠花糖上海外滩九里体验店",
"customerId": null, // "customerId": null,
"setNetCustomerKid": null, // "setNetCustomerKid": null,
"customer": null, // "customer": null,
"kingdeeId": "", // "kingdeeId": "",
"channel": null, // "channel": null,
"salePersonId": "1794f729f27ad4a44afad10061446dd5", // "salePersonId": "1794f729f27ad4a44afad10061446dd5",
"salePerson": null, // "salePerson": null,
"deptId": 31, // "deptId": 31,
"deptName": null, // "deptName": null,
"dept": null, // "dept": null,
"introduction": "", // "introduction": "",
"mobile": "13856414205", // "mobile": "13856414205",
"hotline": "021-63391208", // "hotline": "021-63391208",
"city": "上海市", // "city": "上海市",
"district": "黄浦区", // "district": "黄浦区",
"addressDetail": "上海市黄浦区紫霞路103-107号1层103-12室", // "addressDetail": "上海市黄浦区紫霞路103-107号1层103-12室",
"image": "", // "image": "",
"latitude": "31.218434", // "latitude": "31.218434",
"longitude": "121.502098", // "longitude": "121.502098",
"isDel": false, // "isDel": false,
"isAppShow": true, // "isAppShow": true,
"business": true, // "business": true,
"authEndTime": null, // "authEndTime": null,
"createTime": 1701134886000, // "createTime": 1701134886000,
"createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283", // "createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283",
"updateTime": 1709194053000, // "updateTime": 1709194053000,
"updateAdminId": null, // "updateAdminId": null,
"distance": 408.1 // "distance": 408.1
}, // },
{ // {
"id": "a5f1fc9a03ba827841c473e28a3fcdb2", // "id": "a5f1fc9a03ba827841c473e28a3fcdb2",
"enabled": true, // "enabled": true,
"code": "3101002", // "code": "3101002",
"name": "SWES眠花糖上海尚悦湾旗舰店", // "name": "SWES眠花糖上海尚悦湾旗舰店",
"customerId": null, // "customerId": null,
"setNetCustomerKid": null, // "setNetCustomerKid": null,
"customer": null, // "customer": null,
"kingdeeId": "", // "kingdeeId": "",
"channel": null, // "channel": null,
"salePersonId": "d97ec48ee3b1060eb7ff5c81f0ffa37f", // "salePersonId": "d97ec48ee3b1060eb7ff5c81f0ffa37f",
"salePerson": null, // "salePerson": null,
"deptId": 31, // "deptId": 31,
"deptName": null, // "deptName": null,
"dept": null, // "dept": null,
"introduction": "", // "introduction": "",
"mobile": "19523660595", // "mobile": "19523660595",
"hotline": "021-63336707", // "hotline": "021-63336707",
"city": "上海市", // "city": "上海市",
"district": "浦东新区", // "district": "浦东新区",
"addressDetail": "上海市浦东新区银城路66号", // "addressDetail": "上海市浦东新区银城路66号",
"image": "", // "image": "",
"latitude": "31.24103", // "latitude": "31.24103",
"longitude": "121.51045", // "longitude": "121.51045",
"isDel": false, // "isDel": false,
"isAppShow": true, // "isAppShow": true,
"business": true, // "business": true,
"authEndTime": null, // "authEndTime": null,
"createTime": 1701135694000, // "createTime": 1701135694000,
"createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283", // "createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283",
"updateTime": 1709194087000, // "updateTime": 1709194087000,
"updateAdminId": null, // "updateAdminId": null,
"distance": 408.4 // "distance": 408.4
}, // },
{ // {
"id": "21ddfb547060e930f841605dc4469bec", // "id": "21ddfb547060e930f841605dc4469bec",
"enabled": true, // "enabled": true,
"code": "1101001", // "code": "1101001",
"name": "SWES眠花糖北京富力城旗舰店", // "name": "SWES眠花糖北京富力城旗舰店",
"customerId": null, // "customerId": null,
"setNetCustomerKid": null, // "setNetCustomerKid": null,
"customer": null, // "customer": null,
"kingdeeId": "", // "kingdeeId": "",
"channel": null, // "channel": null,
"salePersonId": "b66028a628ce0fcb871ab7db5c17128e", // "salePersonId": "b66028a628ce0fcb871ab7db5c17128e",
"salePerson": null, // "salePerson": null,
"deptId": 11, // "deptId": 11,
"deptName": null, // "deptName": null,
"dept": null, // "dept": null,
"introduction": "", // "introduction": "",
"mobile": "15556119960", // "mobile": "15556119960",
"hotline": "010-58766288", // "hotline": "010-58766288",
"city": "北京市", // "city": "北京市",
"district": "朝阳区", // "district": "朝阳区",
"addressDetail": "北京市朝阳区天力街3号楼1至2层商业12号", // "addressDetail": "北京市朝阳区天力街3号楼1至2层商业12号",
"image": "", // "image": "",
"latitude": "39.89862", // "latitude": "39.89862",
"longitude": "116.45851", // "longitude": "116.45851",
"isDel": false, // "isDel": false,
"isAppShow": false, // "isAppShow": false,
"business": true, // "business": true,
"authEndTime": null, // "authEndTime": null,
"createTime": 1701134049000, // "createTime": 1701134049000,
"createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283", // "createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283",
"updateTime": 1733193484000, // "updateTime": 1733193484000,
"updateAdminId": null, // "updateAdminId": null,
"distance": 897.7 // "distance": 897.7
}, // },
{ // {
"id": "432bfdf508115827c5dca474b72dea68", // "id": "432bfdf508115827c5dca474b72dea68",
"enabled": true, // "enabled": true,
"code": "1102001", // "code": "1102001",
"name": "SWES眠花糖北京英皇中心旗舰店", // "name": "SWES眠花糖北京英皇中心旗舰店",
"customerId": null, // "customerId": null,
"setNetCustomerKid": null, // "setNetCustomerKid": null,
"customer": null, // "customer": null,
"kingdeeId": "", // "kingdeeId": "",
"channel": null, // "channel": null,
"salePersonId": "155848302d5b6f2768111574f0161816", // "salePersonId": "155848302d5b6f2768111574f0161816",
"salePerson": null, // "salePerson": null,
"deptId": 12, // "deptId": 12,
"deptName": null, // "deptName": null,
"dept": null, // "dept": null,
"introduction": "", // "introduction": "",
"mobile": "18225602774", // "mobile": "18225602774",
"hotline": "010-53269059", // "hotline": "010-53269059",
"city": "北京市", // "city": "北京市",
"district": "朝阳区", // "district": "朝阳区",
"addressDetail": "北京市朝阳区建国门外大街丁12号", // "addressDetail": "北京市朝阳区建国门外大街丁12号",
"image": "", // "image": "",
"latitude": "39.907911", // "latitude": "39.907911",
"longitude": "116.444584", // "longitude": "116.444584",
"isDel": false, // "isDel": false,
"isAppShow": true, // "isAppShow": true,
"business": true, // "business": true,
"authEndTime": null, // "authEndTime": null,
"createTime": 1701134158000, // "createTime": 1701134158000,
"createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283", // "createAdminId": "f6da6faa2d50e7eff7b54bcdd55b0283",
"updateTime": 1710490644000, // "updateTime": 1710490644000,
"updateAdminId": null, // "updateAdminId": null,
"distance": 898.9 // "distance": 898.9
} // }
]; // ];
bodysize = cc; bodysize = cc;
return GestureDetector( return GestureDetector(
@@ -411,6 +417,7 @@ class ExperienceStorePage extends GetView<ExperienceStoreListController> {
}, },
), ),
), ),
Obx(() { Obx(() {
if (controller if (controller
.model.experienceStoreModelList.length == .model.experienceStoreModelList.length ==
@@ -420,6 +427,7 @@ class ExperienceStorePage extends GetView<ExperienceStoreListController> {
return Container(); return Container();
} }
}), }),
Expanded( Expanded(
child: Obx(() => ListView( child: Obx(() => ListView(
controller: scrollController, controller: scrollController,

View File

@@ -188,27 +188,23 @@ class ExperienceStoreWidget extends GetView {
child: InkWell( child: InkWell(
onTap: () async { onTap: () async {
//"latitude" -> "31.858934" "longitude" -> "117.282166" //"latitude" -> "31.858934" "longitude" -> "117.282166"
// AppMapLocation.checkInstalledApps() AppMapLocation.checkInstalledApps().then((d) {
// .then((d) { if (AppMapLocation
// if (AppMapLocation .availableMapsToNames.isEmpty) {
// .availableMapsToNames.isEmpty) { showToast("未检测到导航软件");
// showToast("未检测到导航软件"); } else {
// } else { showOneSelectionDialog(context,
// showOneSelectionDialog(context, title: "选择地图",
// title: "选择地图", arr: AppMapLocation.availableMapsToNames,
// arr: AppMapLocation checkChange: (index) {
// .availableMapsToNames, AppMapLocation.launchMap(
// checkChange: (index) { index,
// AppMapLocation.launchMap( data["name"],
// index, double.parse("${data["latitude"]}"),
// data["name"], double.parse("${data["longitude"]}"));
// double.parse( });
// "${data["latitude"]}"), }
// double.parse( });
// "${data["longitude"]}"));
// });
// }
// });
}, },
child: Container( child: Container(
width: MediaQuery.sizeOf(context).width * 0.105, width: MediaQuery.sizeOf(context).width * 0.105,

View File

@@ -281,7 +281,7 @@ class _MinePageState extends State<NewMinePage> {
children: [ children: [
_buildListTile('assets/img/icon/order.svg', _buildListTile('assets/img/icon/order.svg',
'我的订单', '快捷查看我在网上的订单记录', '我的订单', '快捷查看我在网上的订单记录',
showTopLine: true, path: "/issueListpage"), showTopLine: true, path: ""),
_buildListTile('assets/img/icon/store.svg', _buildListTile('assets/img/icon/store.svg',
'门店体验', '如果想免费体验智能设备,可在此进行提前预约', '门店体验', '如果想免费体验智能设备,可在此进行提前预约',
path: "/experienceStorePage"), path: "/experienceStorePage"),
@@ -293,7 +293,7 @@ class _MinePageState extends State<NewMinePage> {
), ),
_buildListTile('assets/img/icon/mall.svg', '网上商城', _buildListTile('assets/img/icon/mall.svg', '网上商城',
'最新的智能产品线上购买服务', '最新的智能产品线上购买服务',
path: "/issueListpage"), path: ""),
_buildListTile('assets/img/icon/address.svg', _buildListTile('assets/img/icon/address.svg',
'地址管理', '用于收货和报修时联系您', '地址管理', '用于收货和报修时联系您',
path: "/addressListPage"), path: "/addressListPage"),
@@ -304,7 +304,7 @@ class _MinePageState extends State<NewMinePage> {
'assets/img/icon/customer_service.svg', 'assets/img/icon/customer_service.svg',
'在线客服', '在线客服',
'购买和使用智能床过程中,如果遇到疑问可与客服进行联系', '购买和使用智能床过程中,如果遇到疑问可与客服进行联系',
path: "/issueListpage"), path: ""),
], ],
), ),
), ),
@@ -345,15 +345,19 @@ class _MinePageState extends State<NewMinePage> {
highlightColor: Colors.white, highlightColor: Colors.white,
padding: EdgeInsets.all(0.rpx), padding: EdgeInsets.all(0.rpx),
onTap: () { onTap: () {
Get.toNamed(path!); if (path == null || path.isEmpty) {
TopSlideNotification.show(context, text: "待开发功能".tr);
} else {
Get.toNamed(path);
}
}, },
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
top: showTopLine top: showTopLine
? BorderSide(color: Color(0xFF929699), width: 2.rpx) ? BorderSide(color: Color(0xFF929699), width: 0.5.rpx)
: BorderSide.none, : BorderSide.none,
bottom: BorderSide(color: Color(0xFF929699), width: 2.rpx), bottom: BorderSide(color: Color(0xFF929699), width: 0.5.rpx),
), ),
), ),
height: 116.rpx, height: 116.rpx,

View File

@@ -35,7 +35,7 @@ class _PeopleInfoState extends State<PeopleInfoPage> {
// } // }
getLine() { getLine() {
return Container(height: 0.5.rpx, color: Color(0xFFD8D8D8)); return Container(height: 0.5.rpx, color: Color(0xFF929699));
} }
@override @override

View File

@@ -158,10 +158,10 @@ class RepairHistoryWidget extends GetView<RepairInfoController> {
// color: const Color(0xFF06486F), // color: const Color(0xFF06486F),
border: Border( border: Border(
top: index == 0 top: index == 0
? BorderSide(color: const Color(0xFF929699), width: 1.rpx) ? BorderSide(color: const Color(0xFF929699), width: 0.5.rpx)
: BorderSide.none, : BorderSide.none,
bottom: bottom:
BorderSide(color: const Color(0xFF929699), width: 1.rpx), BorderSide(color: const Color(0xFF929699), width: 0.5.rpx),
), ),
), ),
child: Padding( child: Padding(

View File

@@ -13,13 +13,6 @@ class Smys extends GetView<SleepingHabitController> {
// get glController => Get.find<GlobalController>(); // get glController => Get.find<GlobalController>();
getLine() {
return Container(
height: 1,
color: stringToColor("#152676"),
);
}
// updateParm( // updateParm(
// {int time = 2, bool isShowToast = true, Function? errorccCallback = null}) { // {int time = 2, bool isShowToast = true, Function? errorccCallback = null}) {
// ApiService.request // ApiService.request
@@ -87,7 +80,7 @@ class Smys extends GetView<SleepingHabitController> {
], ],
), ),
), ),
actions: [], actions: [],
centerTitle: false, centerTitle: false,
), ),

View File

@@ -59,7 +59,7 @@ var mhroutes = {
"/roomPickerPage": (context) => RoomPickerPage(), "/roomPickerPage": (context) => RoomPickerPage(),
"/editBedPage": (context) => EditBedPage(), "/editBedPage": (context) => EditBedPage(),
"/experienceStorePage": (context) => ExperienceStorePage(), "/experienceStorePage": (context) => ExperienceStorePage(),
"/bookInfoPage": (context, {arguments}) => BookInfoPage(data: arguments), "/bookInfoPage": (context, {arguments}) => BookInfoPage(data: arguments["data"]),
"/bookSuccessPage": (contxt, {arguments}) => "/bookSuccessPage": (contxt, {arguments}) =>
BookSuccessPage(data: arguments["data"]), BookSuccessPage(data: arguments["data"]),
"/myExperiencePage": (context) => MyExperiencePage(), "/myExperiencePage": (context) => MyExperiencePage(),

View File

@@ -498,7 +498,7 @@ packages:
easydevice: easydevice:
dependency: "direct main" dependency: "direct main"
description: description:
path: "C:\\Users\\wyf\\Desktop\\blue\\easydevice" path: "C:\\Users\\a\\Desktop\\blue\\easydevice"
relative: false relative: false
source: path source: path
version: "0.0.1" version: "0.0.1"
@@ -652,6 +652,14 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "6.1.0" version: "6.1.0"
flutter_city_picker:
dependency: "direct main"
description:
name: flutter_city_picker
sha256: "393f138d90012ed8bbab0d98e1cd97e3c7577f079b43a9d288cdec7f440b6a7e"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.1"
flutter_credit_card: flutter_credit_card:
dependency: transitive dependency: transitive
description: description:
@@ -769,6 +777,14 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.1.3" version: "0.1.3"
flutter_slidable:
dependency: "direct main"
description:
name: flutter_slidable
sha256: a857de7ea701f276fd6a6c4c67ae885b60729a3449e42766bb0e655171042801
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.2"
flutter_staggered_grid_view: flutter_staggered_grid_view:
dependency: transitive dependency: transitive
description: description:
@@ -785,6 +801,14 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
flutter_switch:
dependency: "direct main"
description:
name: flutter_switch
sha256: b91477f926bba135d2d203d7b24367492662d8d9c3aa6adb960b14c1087d3c41
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.2"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@@ -901,13 +925,13 @@ packages:
source: hosted source: hosted
version: "13.0.3" version: "13.0.3"
geolocator_android: geolocator_android:
dependency: transitive dependency: "direct overridden"
description: description:
name: geolocator_android name: geolocator_android
sha256: fcb1760a50d7500deca37c9a666785c047139b5f9ee15aa5469fae7dbbe3170d sha256: "06e37fa32392f69f133e166ef6b358a8b6afddbf4c418fc236988184cc115a49"
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.6.2" version: "4.4.1"
geolocator_apple: geolocator_apple:
dependency: transitive dependency: transitive
description: description:
@@ -956,6 +980,14 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.1" version: "2.1.1"
gif:
dependency: "direct main"
description:
name: gif
sha256: ade95694f1471da737922806818ffade2814d1d7f8d10af38ebcf36ace012bc0
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.3.0"
glob: glob:
dependency: transitive dependency: transitive
description: description:
@@ -1276,6 +1308,14 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.1.2-main.4" version: "0.1.2-main.4"
map_launcher:
dependency: "direct main"
description:
name: map_launcher
sha256: "7436d6ef9ae57ff15beafcedafe0a8f0604006cbecd2d26024c4cfb0158c2b9a"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.5.0"
mapbox_search: mapbox_search:
dependency: transitive dependency: transitive
description: description:
@@ -2098,6 +2138,14 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.7.1" version: "3.7.1"
timeline_tile:
dependency: "direct main"
description:
name: timeline_tile
sha256: "85ec2023c67137397c2812e3e848b2fb20b410b67cd9aff304bb5480c376fc0c"
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.0"
timing: timing:
dependency: transitive dependency: transitive
description: description: