import 'dart:convert'; import 'package:EasyDartModule/EasyDartModule.dart'; import 'package:ef/ef.dart'; import 'package:dio/dio.dart' as dio; import 'package:flutter/material.dart'; import 'package:img_picker/img_picker.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:vbvs_app/common/color/ServiceConstant.dart'; import 'package:vbvs_app/common/color/appConstants.dart'; import 'package:vbvs_app/common/color/repair_status.dart'; import 'package:vbvs_app/common/util/DailyLogUtils.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/mh_controller/device_list_controller.dart'; import 'package:vbvs_app/controller/user_info_controller.dart'; import 'package:vbvs_app/enum/APPPackageType.dart'; import 'package:vbvs_app/model/api_response.dart'; import 'package:vbvs_app/model/user_data.dart'; part 'apply_repair_controller.g.dart'; @JsonSerializable() class ApplyRepairModel { int? id; //报修id String? apply_name; //申请人名称 String? tel; //手机号 String? desc; //问题描述 DateTime? create_time; //创建时间 int? device_type; //类型 床,床垫 不能为空 String? device_category; //型号 不能为空 String? device_id; //序列号 设备id 不能为空 String? device_series; String? device_name; //名称 可为空 List? issue_img = []; //图片 int? imagesLImit = 3; //图片限制上传数量 String? img_bucket = 'mianhuatang_repair'; String? status; //维修状态 String? select_device; // String? select_type; // List? device_list = ['床垫/BY-H/智能床垫', '床垫/BY-A/智能床垫', '床垫/BY-C/智能床垫']; List? device_list = []; int? score; DateTime? score_time; //创建时间 int? messageType = 1; //消息类型 int? repairId; //消息类型 ApplyRepairModel(); static ApplyRepairModel fromJson(Map json) => _$ApplyRepairModelFromJson(json); Map toJson() => _$ApplyRepairModelToJson(this); } class ApplyRepairController extends GetControllerEx { // RepairRepository repairRepository = RepairRepository(); ApplyRepairController() { attr = GetModel(ApplyRepairModel()).obs; } Future uploadImg() async { EasyDartModule.logger.info("请求上传图片"); DailyLogUtils.writeLog("请求上传图片"); final ImagePicker picker = ImagePicker(); final XFile? image = await picker.pickImage(source: ImageSource.gallery); try { ApiResponse apiResponse = ApiResponse(code: -1, msg: "头像上传失败".tr); if (image != null) { int fileSize = await image.length(); // 获取图片大小,单位为字节 if (fileSize > 1048576 * 5) { apiResponse.msg = "上传限制".tr; return apiResponse; } String serviceAddress = ServiceConstant.service_address; String serviceName = ServiceConstant.server_service; String serviceApi = ServiceConstant.upload_file; String queryUrl = "${serviceAddress}${serviceName}${serviceApi}"; String? language = ""; if (AppConstants().ent_type == APPPackageType.MHT.code) { if (mhLanguageController.selectLanguage != null) { language = mhLanguageController.selectLanguage.value!.language_code; } } else { if (languageController.selectLanguage != null) { language = languageController.selectLanguage.value!.language_code; } } if (language != null && language.isNotEmpty) { if (queryUrl.contains("?")) { queryUrl += "&lang=$language"; } else { queryUrl += "?lang=$language"; } } var formData = dio.FormData.fromMap({ "type": 2, "file": await dio.MultipartFile.fromFile( image.path, // 确保 image 是 File 类型 filename: image.path.split('/').last, ), }); var response = await EasyDartModule.dio.post(queryUrl, data: formData); if (response != null) { var responseData = response.data is String ? jsonDecode(response.data) : response.data; ApiResponse res = ApiResponse.fromJson(responseData, (object) => object); model.issue_img!.add(res.data['path']); updateAll(); MyUtils.formatResponse(res, "上传成功".tr, "头像上传失败".tr); updateAll(); return res; } else { return ApiResponse(code: -1, msg: "失败".tr); } } else { apiResponse.msg = "未选择图片".tr; return apiResponse; } } catch (e) { EasyDartModule.logger.error("上传图片失败->$e"); DailyLogUtils.writeError("上传图片失败->$e"); return ApiResponse(code: -1, msg: "失败".tr); } } Future getDeviceList() async { // UserModel loginUser = userInfoController.model.user!; DeviceListController deviceListController = Get.find(); await deviceListController.getDeviceList(); var aa = deviceListController.model.deviceList; ApplyRepairController applyRepairController = Get.find(); applyRepairController.model.device_list?.assignAll(aa); updateAll(); } }