ソースを参照

修改一系列需求

iOS_cz 4 年 前
コミット
cbdf4e981a

+ 1 - 1
android/libs/build.gradle

@@ -1,2 +1,2 @@
 configurations.maybeCreate("default")
-artifacts.add("default", file('alipaySdk.aar'))
+artifacts.add("default", file('alipaysdk-noutdid-15.8.01.201215151847.aar'))

+ 6 - 1
lib/internal/account/page/login_page.dart

@@ -142,7 +142,12 @@ class _LoginState extends State<LoginPage> {
   void _login() {
     var phone = _nameController.text.toString().trim();
     var password = _passwordController.text.toString().trim();
-    if (_nameController.text.length != 11) {
+
+    RegExp exp = RegExp(
+        r'^((13[0-9])|(14[0-9])|(15[0-9])|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\d{8}$');
+    bool matched = exp.hasMatch(phone);
+
+    if (!matched) {
       toasts("请输入正确手机号码");
       return;
     }

+ 56 - 10
lib/internal/bbs/page/map_choicePoint.dart

@@ -2,13 +2,11 @@ import 'package:amap_map_fluttify/amap_map_fluttify.dart';
 import 'package:amap_search_fluttify/amap_search_fluttify.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
-import 'package:liftmanager/routers/fluro_navigator.dart';
 import 'package:liftmanager/utils/fast_notification.dart';
 import 'package:liftmanager/utils/location_helper.dart';
 import 'package:liftmanager/utils/toast.dart';
 import 'package:liftmanager/widgets/app_bar.dart';
 import 'package:permission_handler/permission_handler.dart';
-
 import '../../../main.dart';
 import '../../../utils/toast.dart';
 
@@ -138,6 +136,51 @@ class _MapChoicePointState extends State<MyHomePage>
       _markerSeached = await _amapController.addMarker(MarkerOption(
         latLng: selectlatlng,
       ));
+
+      ReGeocode reGeocodeList = await AmapSearch.searchReGeocode(
+        selectlatlng,
+      );
+
+      // print(await reGeocodeList.toFutureString());
+      // print(await reGeocodeList.provinceName);
+
+      // print(await reGeocodeList.cityName);
+      // print(await reGeocodeList.districtName);
+
+      print("reGeocodeList.provinceName=================");
+      var addressM = (await reGeocodeList.provinceName) +
+          (await reGeocodeList.cityName) +
+          (await reGeocodeList.districtName);
+      var address = await reGeocodeList.formatAddress;
+      showAlert(
+        navigatorKey.currentState.overlay.context,
+        "提示",
+        "出诊地址为: $address",
+        "确定",
+        () {
+          Navigator.of(navigatorKey.currentState.overlay.context)..pop();
+          if (context != null) {
+            Navigator.of(navigatorKey.currentState.overlay.context)..pop();
+          }
+
+          // setExtAddress(address+","+coord.latitude.toString()+","+coord.longitude.toString());
+          String setAddress = address +
+              "," +
+              selectlatlng.latitude.toString() +
+              "," +
+              selectlatlng.longitude.toString();
+          String setAddressMaster = addressM;
+          if (widget.type == "1") {
+            FastNotification.push("set_address", setAddress);
+          } else if (widget.type == "2") {
+            FastNotification.push("set_address_master", setAddressMaster);
+          }
+        },
+        txt2: "取消",
+        onPre2: () {
+          Navigator.of(navigatorKey.currentState.overlay.context)..pop();
+        },
+      );
     }
   }
 
@@ -277,15 +320,18 @@ class _MapChoicePointState extends State<MyHomePage>
                   if (_markerSeached != null) {
                     _markerSeached.remove();
                   }
+                  _markerSeached = await _amapController.addMarker(MarkerOption(
+                    latLng: coord,
+                  ));
                   //画上新的点
-                  _markerSelect = await _amapController.addMarker(MarkerOption(
-                      latLng: coord,
-                      // iconUri: _imgUri,
-                      // imageConfig: createLocalImageConfiguration(context),
-                      width: 64,
-                      height: 64,
-                      anchorV: 0.7,
-                      anchorU: 0.5));
+                  // _markerSelect = await _amapController.addMarker(MarkerOption(
+                  //     latLng: coord,
+                  //     iconUri: _imgUri,
+                  //     imageConfig: createLocalImageConfiguration(context),
+                  //     width: 64,
+                  //     height: 64,
+                  //     anchorV: 0.7,
+                  //     anchorU: 0.5));
                   // widget.onChoicePoint(coord);
                   showAlert(
                     navigatorKey.currentState.overlay.context,

+ 59 - 32
lib/internal/maintenance/page/maintenance_record_info_page.dart

@@ -1,4 +1,3 @@
-
 import 'dart:convert' as convert;
 
 import 'package:flutter/cupertino.dart';
@@ -13,8 +12,7 @@ import 'package:liftmanager/widgets/app_bar.dart';
 import 'package:liftmanager/widgets/click_item.dart';
 import 'package:liftmanager/widgets/my_button.dart';
 
-class MaintenanceRecordInfo extends StatefulWidget{
-
+class MaintenanceRecordInfo extends StatefulWidget {
   MaintenanceRecordInfo(this.item);
   final MaintenanceListItem item;
   @override
@@ -23,15 +21,35 @@ class MaintenanceRecordInfo extends StatefulWidget{
   }
 }
 
-class MaintenanceRecordInfoState extends State<MaintenanceRecordInfo>{
-
+class MaintenanceRecordInfoState extends State<MaintenanceRecordInfo> {
   MaintenanceLastEntity item = MaintenanceLastEntity();
 
   var _mainlist = [
-    "半月保","半月保","半月保","半月保","半月保", "季度保",
-    "半月保","半月保","半月保","半月保","半月保", "半年保",
-    "半月保","半月保","半月保","半月保","半月保", "季度保",
-    "半月保","半月保","半月保","半月保","半月保", "全年保"];
+    "半月保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "季度保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "半年保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "季度保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "半月保",
+    "全年保"
+  ];
 
   String _currentTypeName = "";
   int _currentType = -1;
@@ -43,33 +61,38 @@ class MaintenanceRecordInfoState extends State<MaintenanceRecordInfo>{
   }
 
   ///获取上次保养信息
-  getLastMainRecord(){
-    ApiService(context: context).maintenanceRecordInfo(widget.item.liftId,onSuccess: (data){
-      if(data != null){
+  getLastMainRecord() {
+    ApiService(context: context).maintenanceRecordInfo(widget.item.liftId,
+        onSuccess: (data) {
+      if (data != null) {
         setState(() {
           item = data;
+          _currentTypeName =
+              "${_mainlist[int.parse(item.periods)]}${int.parse(item.periods) + 1}";
+          _currentType = int.parse(item.periods);
         });
       }
-
-    },onError: (code,msg){
+    }, onError: (code, msg) {
       toasts(msg);
     });
   }
 
-  _startSignAndSafe(){
-    if(_currentType==-1){
+  _startSignAndSafe() {
+    if (_currentType == -1) {
       toasts("请选择保养类型");
       return;
     }
-    widget.item.maintenanceType = "${_currentType+1}";
+    widget.item.maintenanceType = "${_currentType + 1}";
     String jsonString = convert.jsonEncode(widget.item);
-    NavigatorUtils.pushResult(context, "${MaintenanceRouter.maintenanceSign}?item=${Uri.encodeComponent(jsonString)}",(res){
+    NavigatorUtils.pushResult(context,
+        "${MaintenanceRouter.maintenanceSign}?item=${Uri.encodeComponent(jsonString)}",
+        (res) {
       print("MaintenanceRecordInfoState");
       NavigatorUtils.goBackWithParams(context, true);
     });
   }
 
-  _showBottomSheet(){
+  _showBottomSheet() {
     showModalBottomSheet(
       context: context,
       builder: (BuildContext context) {
@@ -77,16 +100,16 @@ class MaintenanceRecordInfoState extends State<MaintenanceRecordInfo>{
           height: 360.0,
           child: ListView.builder(
             itemExtent: 48.0,
-            itemBuilder: (_, index){
+            itemBuilder: (_, index) {
               return InkWell(
                 child: Container(
                   padding: const EdgeInsets.symmetric(horizontal: 16.0),
                   alignment: Alignment.centerLeft,
-                  child: Text("${_mainlist[index]}${index+1}"),
+                  child: Text("${_mainlist[index]}${index + 1}"),
                 ),
-                onTap: (){
+                onTap: () {
                   setState(() {
-                    _currentTypeName = "${_mainlist[index]}${index+1}";
+                    _currentTypeName = "${_mainlist[index]}${index + 1}";
                     _currentType = index;
                   });
                   NavigatorUtils.goBack(context);
@@ -100,7 +123,6 @@ class MaintenanceRecordInfoState extends State<MaintenanceRecordInfo>{
     );
   }
 
-
   @override
   Widget build(BuildContext context) {
     return Scaffold(
@@ -109,22 +131,27 @@ class MaintenanceRecordInfoState extends State<MaintenanceRecordInfo>{
         ),
         body: ListView(padding: EdgeInsets.all(0.0), children: <Widget>[
           ClickItem(title: "上次保养日期", content: "${item?.workDate}"),
-          ClickItem(title: "上次保养类型", content: "${item?.typeName}${item.periods}"),
+          ClickItem(
+              title: "上次保养类型", content: "${item?.typeName}${item.periods}"),
           ClickItem(title: "项目名称", content: "${item?.projectName}"),
           ClickItem(title: "电梯位置", content: "${item?.devicePosition}"),
-          ClickItem(title: "本次保养类型",hintText: '请选择', content: "${_currentTypeName}",onTap: (){
-            _showBottomSheet();
-          },),
+          ClickItem(
+            title: "本次保养类型",
+            hintText: '请选择',
+            content: "${_currentTypeName}",
+            onTap: () {
+              _showBottomSheet();
+            },
+          ),
           Padding(
             padding: const EdgeInsets.all(16),
             child: MyButton(
-              onPressed: (){
+              onPressed: () {
                 _startSignAndSafe();
               },
               text: "开始保养",
             ),
           )
-        ])
-    );
+        ]));
   }
-}
+}

+ 1 - 1
lib/internal/maintenance/page/maintenance_submit_page.dart

@@ -598,7 +598,7 @@ class MaintenanceSubmitPageState extends State<MaintenanceSubmitPage>
                                     "${MaintenanceRouter.viewImage}?edit=1&img=" +
                                         Uri.encodeComponent(images[index].path),
                                     (res) {
-                                  if (res != null) {
+                                  if (res == true) {
                                     images.removeAt(index);
                                     setState(() {});
                                   }

+ 1 - 2
lib/internal/means/page/brand_detail.dart

@@ -1,4 +1,3 @@
-
 import 'package:flutter/material.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
@@ -214,7 +213,7 @@ class BrandDetailState extends State<BrandDetail> {
                             color: Color(0xffF8F8F8),
                           ),
                           SectionHeader(
-                            title: "错误代码库",
+                            title: "故障代码库",
                             showMore: true,
                             onTap: () {
                               NavigatorUtils.push(context,

+ 40 - 15
lib/internal/means/page/means_page.dart

@@ -20,6 +20,7 @@ import 'package:liftmanager/widgets/load_image.dart';
 import 'package:liftmanager/widgets/preview_images.dart';
 import 'package:path_provider/path_provider.dart';
 
+
 class MeansPage extends StatefulWidget {
   String index = "1";
 
@@ -218,19 +219,42 @@ class MeansPageState extends State<MeansPage>
                                         setState(
                                           () {
                                             pathPDF = f.path;
-                                            Navigator.push(
-                                              context,
-                                              MaterialPageRoute(
-                                                builder: (context) => PDFScreen(
-                                                    f.path,
-                                                    fileUrl,
-                                                    guanList[index]
-                                                        .id
-                                                        .toString()),
-                                              ),
-                                            );
                                           },
                                         );
+
+
+                                        // Widget pdfView() => PdfView(
+                                        //       controller: pdfController,
+                                        //     );
+
+                                        // Navigator.push(
+                                        //   context,
+                                        //   MaterialPageRoute(
+                                        //     builder: (context) => pdfviewr(
+                                        //       pdfview: PdfView(
+                                        //         scrollDirection: Axis.vertical,
+                                        //         pageLoader: Center(
+                                        //           child:
+                                        //               CircularProgressIndicator(),
+                                        //         ),
+                                        //         documentLoader: Center(
+                                        //           child:
+                                        //               CircularProgressIndicator(),
+                                        //         ),
+                                        //         controller: pdfController,
+                                        //       ),
+                                        //     ),
+                                        //   ),
+                                        // );
+                                        Navigator.push(
+                                          context,
+                                          MaterialPageRoute(
+                                            builder: (context) => PDFScreen(
+                                                f.path,
+                                                fileUrl,
+                                                guanList[index].id.toString()),
+                                          ),
+                                        );
                                       },
                                     );
                                   }
@@ -336,13 +360,14 @@ class Brand extends StatelessWidget {
                         // alignment: Alignment.centerLeft,
                       ),
                     ),
-                    SizedBox(height: 10,),
+                    SizedBox(
+                      height: 10,
+                    ),
                     Container(
                       child: Text(
                         item.name ?? "",
-                        style: TextStyle(
-                            color: Color(0xff333333),
-                            fontSize: 12),
+                        style:
+                            TextStyle(color: Color(0xff333333), fontSize: 12),
                         textAlign: TextAlign.start,
                         maxLines: 1,
                         overflow: TextOverflow.ellipsis,

+ 10 - 8
lib/internal/means/page/means_pdf.dart

@@ -5,12 +5,14 @@ import 'dart:async';
 
 import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
+import 'package:liftmanager/internal/means/page/pdf_scaffold.dart';
 import 'package:liftmanager/res/iconfont.dart';
 import 'package:liftmanager/routers/fluro_navigator.dart';
 import 'package:liftmanager/utils/theme_utils.dart';
 import 'package:liftmanager/widgets/app_bar.dart';
 import 'package:liftmanager/widgets/load_image.dart';
 import 'package:liftmanager/widgets/popup_window.dart';
+
 import 'package:path_provider/path_provider.dart';
 import 'package:liftmanager/utils/toast.dart';
 import 'package:liftmanager/net/api_service.dart';
@@ -87,13 +89,13 @@ class PDFScreen extends StatelessWidget {
     });
   }
 
-  getViewNum() {
+  getViewNum(context) {
     // showLoading(context);
-    NewApiService().getLiftFilesDetail(id, onSuccess: (res) {},
-        onError: (code, msg) {
-      // dismissLoading(context);
-      toasts(msg);
-    });
+    // NewApiService().getLiftFilesDetail(id, onSuccess: (res) {},
+    //     onError: (code, msg) {
+    //   // dismissLoading(context);
+    //   toasts(msg);
+    // });
   }
 
   @override
@@ -102,7 +104,7 @@ class PDFScreen extends StatelessWidget {
     print(fileUrl);
     print(id);
     if (id != null && id != "null") {
-      getViewNum();
+      getViewNum(context);
     }
     Future<String> _findLocalPath() async {
       //这里根据平台获取当前安装目录
@@ -112,7 +114,7 @@ class PDFScreen extends StatelessWidget {
       return directory.path;
     }
 
-    return PDFViewerScaffold(
+    return CzPDFViewerScaffold(
         appBar: MyAppBar(
           centerTitle: fileUrl != null && fileUrl != "null" ? '电梯资料库' : "文件详情",
           // actions: [

+ 78 - 0
lib/internal/means/page/pdf_scaffold.dart

@@ -0,0 +1,78 @@
+import 'dart:async';
+
+import 'package:flutter/foundation.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_full_pdf_viewer/full_pdf_viewer_plugin.dart';
+
+class CzPDFViewerScaffold extends StatefulWidget {
+  final PreferredSizeWidget appBar;
+  final String path;
+  final bool primary;
+
+  const CzPDFViewerScaffold({
+    Key key,
+    this.appBar,
+    @required this.path,
+    this.primary = true,
+  }) : super(key: key);
+
+  @override
+  _CzPDFViewerScaffoldState createState() => new _CzPDFViewerScaffoldState();
+}
+
+class _CzPDFViewerScaffoldState extends State<CzPDFViewerScaffold> {
+  final pdfViwerRef = new PDFViewerPlugin();
+  Rect _rect;
+  Timer _resizeTimer;
+
+  @override
+  void initState() {
+    super.initState();
+    pdfViwerRef.close();
+  }
+
+  @override
+  void dispose() {
+    super.dispose();
+    pdfViwerRef.close();
+    pdfViwerRef.dispose();
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    if (_rect == null) {
+      _rect = _buildRect(context);
+      pdfViwerRef.launch(
+        widget.path,
+        rect: _rect,
+      );
+    } else {
+      final rect = _buildRect(context);
+      if (_rect != rect) {
+        // _rect = rect;
+        _resizeTimer?.cancel();
+        _resizeTimer = new Timer(new Duration(milliseconds: 300), () {
+          pdfViwerRef.resize(_rect);
+        });
+      }
+    }
+    return new Scaffold(
+        appBar: widget.appBar,
+        body: const Center(child: const CircularProgressIndicator()));
+  }
+
+  Rect _buildRect(BuildContext context) {
+    final fullscreen = widget.appBar == null;
+
+    final mediaQuery = MediaQuery.of(context);
+    final topPadding = widget.primary ? mediaQuery.padding.top : 0.0;
+    final top =
+        fullscreen ? 0.0 : widget.appBar.preferredSize.height + topPadding;
+    var height = mediaQuery.size.height - top;
+    if (height < 0.0) {
+      height = 0.0;
+    }
+
+    return new Rect.fromLTWH(0.0, top, mediaQuery.size.width, height);
+  }
+}

+ 28 - 2
lib/internal/team/page/team_create_page.dart

@@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart';
 import 'package:flutter/material.dart';
 import 'package:image_picker/image_picker.dart';
 import 'package:keyboard_actions/keyboard_actions.dart';
+import 'package:liftmanager/internal/account/model/user_info_entity.dart';
 import 'package:liftmanager/internal/team/page/input_text_page.dart';
 import 'package:liftmanager/net/api_service.dart';
 import 'package:liftmanager/res/resources.dart';
@@ -49,6 +50,29 @@ class TeamCreatePageState extends State<TeamCreatePage> {
     }
   }
 
+  @override
+  void initState() {
+    super.initState();
+    getUserInfo();
+  }
+
+  UserInfoEntity user;
+
+  ///获取用户信息
+  void getUserInfo() {
+    ApiService().userInfo(
+        onSuccess: (data) {
+          print(data);
+          user = data;
+          _nameController.text = user.userName;
+          _phoneController.text = user.mobile;
+          setState(() {});
+          // setUser(data);
+          // _unameController.text = provider.user?.signature;
+        },
+        onError: (code, msg) {});
+  }
+
   void selectPicker() {
     showDialog(
         context: context,
@@ -260,14 +284,16 @@ class TeamCreatePageState extends State<TeamCreatePage> {
                 // ),
                 TextFieldItem(
                     focusNode: _nodeText2,
+                    enabled: false,
                     title: "联系人",
                     controller: _nameController,
-                    hintText: "填写联系人姓名"),
+                    hintText: ""),
                 TextFieldItem(
                     focusNode: _nodeText3,
                     title: "联系电话",
+                    enabled: false,
                     controller: _phoneController,
-                    hintText: "填写联系电话号码"),
+                    hintText: ""),
                 // Expanded(child: Container()),
                 SizedBox(
                   height: 100,

+ 11 - 0
lib/widgets/bbs_content.dart

@@ -22,7 +22,9 @@ import 'package:liftmanager/routers/fluro_navigator.dart';
 import 'package:liftmanager/utils/image_utils.dart';
 import 'package:liftmanager/utils/theme_utils.dart';
 import 'package:liftmanager/utils/time_format.dart';
+import 'package:liftmanager/utils/toast.dart';
 import 'package:liftmanager/utils/utils.dart';
+import 'package:liftmanager/widgets/img_viewer.dart';
 import 'package:liftmanager/widgets/load_image.dart';
 import 'package:path_provider/path_provider.dart';
 
@@ -71,6 +73,7 @@ class SwipeWidget extends StatelessWidget {
                             Uri.encodeComponent(banners[index].url));
                   } else if (banners[index].jumpType == 1) {
                     print('777');
+                    // showLoading(context);
                     createFileOfPdfUrl(banners[index].url).then((f) {
                       // setState(() {
                       // pathPDF = f.path;
@@ -89,7 +92,15 @@ class SwipeWidget extends StatelessWidget {
                           MaterialPageRoute(
                               builder: (context) =>
                                   PDFScreen(f.path, "null", "null")));
+                      // dismissLoading(context);
                     });
+                  } else if (banners[index].jumpType == 3) {
+                    Navigator.push(
+                        context,
+                        MaterialPageRoute(
+                            builder: (context) => Imgviewer(
+                                  url: banners[index].url,
+                                )));
                   }
                 },
                 child: Container(

+ 30 - 0
lib/widgets/img_viewer.dart

@@ -0,0 +1,30 @@
+import 'package:flutter/material.dart';
+import 'package:liftmanager/widgets/app_bar.dart';
+
+class Imgviewer extends StatefulWidget {
+  Imgviewer({Key key, this.url}) : super(key: key);
+  String url;
+  @override
+  _ImgviewerState createState() => _ImgviewerState();
+}
+
+class _ImgviewerState extends State<Imgviewer> {
+  @override
+  Widget build(BuildContext context) {
+    return Scaffold(
+      appBar: MyAppBar(
+        centerTitle: "图片详情",
+      ),
+      body: Container(
+        width: double.infinity,
+        height: double.infinity,
+        child: SingleChildScrollView(
+          child: Image.network(
+            widget.url,
+            fit: BoxFit.cover,
+          ),
+        ),
+      ),
+    );
+  }
+}