raomeng 8 жил өмнө
parent
commit
9a05e79daa
93 өөрчлөгдсөн 3273 нэмэгдсэн , 554 устгасан
  1. 80 19
      WeiChat/build.gradle
  2. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/PersonalRegActivity.java
  3. 8 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkMenuParentAdapter.java
  4. 67 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkParentLayoutAdapter.java
  5. 9 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  6. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/SingleImagePreviewActivity.java
  7. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/im/UserRoleUtils.java
  8. 3 3
      WeiChat/src/main/res/drawable/bg_bule_btn.xml
  9. 5 0
      WeiChat/version.properties
  10. 3 10
      app_core/common/src/main/java/com/core/api/wxapi/ApiPlatform.java
  11. 1 0
      app_core/common/src/main/java/com/core/dao/StepRankingFirstDao.java
  12. 52 53
      app_core/common/src/main/java/com/core/net/http/ViewUtil.java
  13. 21 9
      app_core/common/src/main/java/com/core/widget/view/selectcalendar/SelectCalendarActivity.java
  14. BIN
      app_core/common/src/main/res/drawable-hdpi/icon_select_sure.png
  15. BIN
      app_core/common/src/main/res/drawable-xhdpi/icon_select_sure.png
  16. BIN
      app_core/common/src/main/res/drawable-xxhdpi/icon_select_sure.png
  17. 3 3
      app_core/common/src/main/res/drawable/bg_bule_btn.xml
  18. 6 0
      app_core/common/src/main/res/drawable/selector_pop_items.xml
  19. 2 2
      app_core/common/src/main/res/layout/item_pop_list.xml
  20. 0 18
      app_core/common/src/main/res/layout/item_pop_list_select.xml
  21. 4 11
      app_core/common/src/main/res/layout/pop_crm_list.xml
  22. 1 0
      app_modular/appbooking/src/main/AndroidManifest.xml
  23. 1 1
      app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingDetailActivity.java
  24. 291 127
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceAddActivity.java
  25. 74 6
      app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServicesActivity.java
  26. 65 8
      app_modular/appbooking/src/main/java/com/modular/booking/activity/utils/GridSelectActivity.java
  27. 310 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/utils/GridSelectDateActivity.java
  28. 29 0
      app_modular/appbooking/src/main/java/com/modular/booking/activity/utils/ServiceUtils.java
  29. 3 3
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemBserviceHeaderAdapter.java
  30. 9 2
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemBserviceListAdapter.java
  31. 90 0
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemPopListAdapter.java
  32. 60 14
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemRoomsSelectAdapter.java
  33. 48 0
      app_modular/appbooking/src/main/java/com/modular/booking/adapter/SelectSimpleAdapter.java
  34. 26 0
      app_modular/appbooking/src/main/java/com/modular/booking/model/ItemsSelectType1.java
  35. 11 0
      app_modular/appbooking/src/main/java/com/modular/booking/model/SBMenuModel.java
  36. 361 0
      app_modular/appbooking/src/main/java/com/modular/booking/widget/AddSubUtils.java
  37. 0 0
      app_modular/appbooking/src/main/res/com/modular/booking/adapter/ItemRoomsSelectAdapter.java
  38. BIN
      app_modular/appbooking/src/main/res/drawable-hdpi/icon_day_after.png
  39. BIN
      app_modular/appbooking/src/main/res/drawable-hdpi/icon_day_qian.png
  40. BIN
      app_modular/appbooking/src/main/res/drawable-xhdpi/icon_day_after.png
  41. BIN
      app_modular/appbooking/src/main/res/drawable-xhdpi/icon_day_qian.png
  42. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/addsubutils_ic_minus.png
  43. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/addsubutils_ic_plus.png
  44. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_day_after.png
  45. BIN
      app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_day_qian.png
  46. 7 0
      app_modular/appbooking/src/main/res/drawable/addsubutils_add_sub_bg.xml
  47. 21 0
      app_modular/appbooking/src/main/res/drawable/addsubutils_left_selector.xml
  48. 21 0
      app_modular/appbooking/src/main/res/drawable/addsubutils_right_selector.xml
  49. 8 0
      app_modular/appbooking/src/main/res/drawable/divider_horizontal.xml
  50. 6 0
      app_modular/appbooking/src/main/res/drawable/selector_check_items.xml
  51. 45 0
      app_modular/appbooking/src/main/res/layout/action_service_room.xml
  52. 68 64
      app_modular/appbooking/src/main/res/layout/activity_bservice_add.xml
  53. 2 2
      app_modular/appbooking/src/main/res/layout/activity_grid_select.xml
  54. 43 0
      app_modular/appbooking/src/main/res/layout/add_sub_end_layout.xml
  55. 43 0
      app_modular/appbooking/src/main/res/layout/add_sub_layout.xml
  56. 44 0
      app_modular/appbooking/src/main/res/layout/add_sub_start_layout.xml
  57. 7 5
      app_modular/appbooking/src/main/res/layout/header_bservices_grid.xml
  58. 5 1
      app_modular/appbooking/src/main/res/layout/item_bservice_header.xml
  59. 2 1
      app_modular/appbooking/src/main/res/layout/item_bservice_list.xml
  60. 1 0
      app_modular/appbooking/src/main/res/layout/item_bservice_storeman_list.xml
  61. 30 0
      app_modular/appbooking/src/main/res/layout/item_pop_list_select.xml
  62. 26 7
      app_modular/appbooking/src/main/res/layout/item_rooms_select.xml
  63. 29 0
      app_modular/appbooking/src/main/res/values/attrs.xml
  64. 17 0
      app_modular/appbooking/src/main/res/values/colors.xml
  65. 7 0
      app_modular/appbooking/src/main/res/values/dimens.xml
  66. 15 0
      app_modular/appbooking/src/main/res/values/styles.xml
  67. 3 1
      app_modular/applogin/src/main/java/com/modular/login/activity/PersonalRegActivity.java
  68. 29 0
      app_modular/applogin/src/main/res/values/attrs.xml
  69. 12 0
      app_modular/applogin/src/main/res/values/colors.xml
  70. 10 0
      app_modular/applogin/src/main/res/values/styles.xml
  71. 5 0
      app_modular/appme/src/main/AndroidManifest.xml
  72. 78 17
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/BComSetEmployeeRestActivity.java
  73. 1 1
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/BSettingActivity.java
  74. 4 2
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/BSettingLocationActivity.java
  75. 2 2
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/BusinessHoursSetting.java
  76. 83 0
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/CheckWagesActivity.java
  77. 47 1
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/PersonSettingActivity.java
  78. 4 2
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/SigatureActivity.java
  79. 142 0
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/WagesDetailsActivity.java
  80. 14 1
      app_modular/appme/src/main/java/com/uas/appme/settings/handwritedemo/LandscapeActivity.java
  81. 106 0
      app_modular/appme/src/main/res/layout/check_wages_activity.xml
  82. 99 0
      app_modular/appme/src/main/res/layout/sigature_pop.xml
  83. 49 0
      app_modular/appme/src/main/res/layout/wages_details_activity.xml
  84. 1 1
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/UUSportActivity.java
  85. 8 10
      app_modular/apputils/src/main/AndroidManifest.xml
  86. 216 0
      app_modular/apputils/src/main/java/com/modular/apputils/activity/SingleImagePreviewActivity.java
  87. 1 1
      app_modular/apputils/src/main/java/com/modular/apputils/utils/Scheme.java
  88. 64 57
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/DataFormDetailActivity.java
  89. 16 13
      app_modular/appworks/src/main/java/com/uas/appworks/activity/CommonDataFormActivity.java
  90. 111 0
      app_modular/appworks/src/main/java/com/uas/appworks/model/bean/MenuTypeBean.java
  91. 0 1
      build.gradle
  92. 2 2
      gradle.properties
  93. 71 68
      version.gradle

+ 80 - 19
WeiChat/build.gradle

@@ -1,14 +1,61 @@
 apply plugin: 'com.android.application'
 apply plugin: 'com.getkeepsafe.dexcount'
 apply plugin: 'me.tatarka.retrolambda'
+//定义时间
+def releaseTime() {
+   // return new Date().format("yyyyMMdd.HHmm.ss")
+    return new Date().format("yyyyMMdd.HHmm")
+}
+//设置发布的显示的版本号
+def getVersionName() {
+    return rootProject.ext.android.versionName
+}
 
-android {
+//读取版本号
+def getVersionCode() {
+    def versionFile = file('version.properties')
+    if (versionFile.canRead()) {
+        Properties versionProps = new Properties()
+        versionProps.load(new FileInputStream(versionFile))
+        def versionName=versionProps['versionName'].toInteger()
+        def versionCode = versionProps['versionCode'].toInteger()
+        def debugName=versionProps['debugName'].toInteger()
+        def debugCode = versionProps['debugCode'].toInteger()
+        def versionArray=new Integer[4]
+    
+        def runTasks = gradle.startParameter.taskNames        //仅在assembleRelease任务是增加版本号
+        println 'runTasks:'+runTasks
+        if(':WeiChat:assembleBaiduDebug'in runTasks){
+            println 'runTasks:'+'debug模式打包apk'
+            versionProps['debugCode'] = (++debugCode).toString()
+            versionProps.store(versionFile.newWriter(), null)
+        }
+        if(':WeiChat:assembleBaiduRelease'in runTasks){
+            println 'runTasks:'+'发布模式打包apk'
+            versionProps['versionCode'] = (++versionCode).toString()
+            versionProps['versionName'] = (++versionName).toString()
+            versionProps.store(versionFile.newWriter(), null)
+        }
+        versionArray[0]=versionName
+        versionArray[1]=versionCode
+        versionArray[2]=debugName
+        versionArray[3]=debugCode
+        
+        println versionArray[0].toString()
+        return  versionArray
+    } else {
+        throw new GradleException("Could not find version.properties!")
+    }
+}
 
+
+android {
+    def versionArray = getVersionCode()
+   
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
-
     signingConfigs {
         config {
             storeFile file('C:/sigin/applicationsignname[20150409]')
@@ -17,32 +64,32 @@ android {
             keyPassword '13237658359'
         }
     }
-
     compileSdkVersion rootProject.ext.android.compileSdkVersion
     buildToolsVersion rootProject.ext.android.buildToolsVersion
 
     defaultConfig {
+        def versionNames="v"+versionArray[0].toString().substring(0,1)+"."+ versionArray[0].toString().substring(1,2)+"."+  versionArray[0].toString().substring(2,3)
         applicationId project.applicationId
         minSdkVersion rootProject.ext.android.minSdkVersion
         targetSdkVersion rootProject.ext.android.targetSdkVersion
         versionCode rootProject.ext.android.versionCode
         versionName rootProject.ext.android.versionName
+//        versionCode versionArray[1]
+//        versionName versionNames
         multiDexEnabled true
         signingConfig signingConfigs.config
-        
         manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]
         ndk {
-            abiFilters "armeabi", "armeabi-v7a", "x86", "mips","x86_64","mips64"
+            abiFilters "armeabi", "armeabi-v7a", "x86", "mips", "x86_64", "mips64"
         }
     }
 
     useLibrary 'org.apache.http.legacy'
     lintOptions {
+        checkReleaseBuilds false
         abortOnError false
     }
 
-
-
     packagingOptions {
         exclude 'META-INF/LICENSE.txt'
         exclude 'META-INF/NOTICE.txt'
@@ -58,25 +105,39 @@ android {
             signingConfig signingConfigs.config
         }
     }
- 
-    productFlavors {   // 友盟多渠道打包
-//        wandoujia {}
-//        _360 {}
+
+    productFlavors {
+        wandoujia {}
+        _360 {}
         baidu {}
-//        xiaomi {}
-//        tencent {}
-//        taobao {}
+        xiaomi {}
+        tencent {}
+        taobao {}
     }
 
     productFlavors.all {
         flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
     }
-    //给apk添加对应的版本号:这里暂时注释但保留
+
 //    applicationVariants.all { variant ->
 //        variant.outputs.each { output ->
 //            def outputFile = output.outputFile
+//            def fileName
 //            if (outputFile != null && outputFile.name.endsWith('.apk')) {
-//                def fileName = outputFile.name.replace(".apk", "-${defaultConfig.versionName}.apk")
+//                if (variant.buildType.name.equals('release')) {
+//                    //赋值app属性版本名
+//                    //variant.mergedFlavor.versionName = getVersionName() + "_" + variant.productFlavors[0].name+"(Build"+currentVersionCode+")"
+//                    //variant.mergedFlavor.versionName ="v"+versionArray[0].toString().substring(0,1)+"."+ versionArray[0].toString().substring(1,2)+"."+  versionArray[0].toString().substring(2,3)
+//                    def releaseInfo= "v"+versionArray[0].toString().substring(0,1)+"."+ versionArray[0].toString().substring(1,2)+"."+  versionArray[0].toString().substring(2,3)+ "_" + variant.productFlavors[0].name+"(Build"+versionArray[1]+")"
+//                    fileName = "WeiChat_${releaseInfo}_release.apk"
+//                    
+//                } else if (variant.buildType.name.equals('debug')) {
+//                    //赋值app属性版本名
+//                    //variant.mergedFlavor.versionName = getVersionName() + "_" + releaseTime() + "_" + variant.productFlavors[0].name+"(Build"+currentVersionCode+")"
+//                    def debugInfo= getVersionName() + "_" + releaseTime() + "_" + variant.productFlavors[0].name+"(Build"+versionArray[3]+")"
+//                    fileName = "WeiChat_${debugInfo}_debug.apk"
+//                    
+//                }
 //                output.outputFile = new File(outputFile.parent, fileName)
 //            }
 //        }
@@ -85,7 +146,7 @@ android {
 
 dependencies {
     compile fileTree(include: ['*.jar'], dir: 'libs')
-    //依赖库
+
     testCompile deps.junit
     compile deps.appcompatV7
     compile deps.cardviewV7
@@ -94,7 +155,7 @@ dependencies {
     compile(deps.stetho) {
         force = true
     }
-   
+
     compile deps.jodatime
     compile deps.systembartint
     compile deps.photoView
@@ -105,7 +166,7 @@ dependencies {
     compile deps.stickyGridHeaders
     compile deps.materialDialogs
     compile deps.okhttp
-    
+
     androidTestCompile deps.leakcanaryNp
     debugCompile deps.leakcanary
     releaseCompile deps.leakcanaryNp

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/message/PersonalRegActivity.java

@@ -154,10 +154,11 @@ public class PersonalRegActivity extends BaseActivity implements View.OnClickLis
         }
 
     }
-
+    private static final String TAG = "PersonalRegActivity";
     private void doRegiter() {
         progressDialog.dismiss();
         String url = Constants.IM_BASE_URL() + "user/appRegister";
+        LogUtil.d(TAG,"url:"+url);
         Map<String, Object> params = new HashMap<>();
         params.put("telephone", phone_et.getText().toString());
         params.put("password", md5_password);

+ 8 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkMenuParentAdapter.java

@@ -2,6 +2,7 @@ package com.xzjmyk.pm.activity.ui.erp.adapter;
 
 import android.content.Context;
 import android.content.Intent;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -9,6 +10,7 @@ import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 import android.widget.TextView;
 
+import com.common.LogUtil;
 import com.common.data.StringUtil;
 import com.common.preferences.PreferenceUtils;
 import com.core.api.wxapi.ApiPlatform;
@@ -109,16 +111,21 @@ public class WorkMenuParentAdapter extends BaseAdapter {
                             mOnAddFuncClickListener.onAddFuncClick(view, position);
                         }
                     } else {
-                        Intent intent = getWorkIntent(menuActivity, menuIcon);
+                        LogUtil.d(TAG, "menuActivity:" + menuActivity);
+//                        Intent intent = getWorkIntent(menuActivity, menuIcon);
+                        Intent intent = new Intent("com.modular.work.CommonDataFormActivity");
                         context.startActivity(intent);
                     }
                 } catch (Exception e) {
+                    Log.e("workException", e.getMessage());
                     ToastUtil.showToast(context, "页面访问异常");
                 }
             }
         });
     }
 
+    private static final String TAG = "WorkMenuParentAdapter";
+
     private Intent getWorkIntent(String menuActivity, String menuIcon) {
         Intent intent = new Intent(menuActivity);
 

+ 67 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkParentLayoutAdapter.java

@@ -0,0 +1,67 @@
+package com.xzjmyk.pm.activity.ui.erp.adapter;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.core.widget.view.MyGridView;
+import com.uas.appworks.model.bean.WorkMenuBean;
+import com.xzjmyk.pm.activity.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class WorkParentLayoutAdapter extends BaseAdapter {
+
+    private List<WorkMenuBean> objects = new ArrayList<WorkMenuBean>();
+
+    private Context context;
+    private LayoutInflater layoutInflater;
+
+    public WorkParentLayoutAdapter(Context context) {
+        this.context = context;
+        this.layoutInflater = LayoutInflater.from(context);
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public WorkMenuBean getItem(int position) {
+        return objects.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = layoutInflater.inflate(R.layout.item_work_parent_layout, null);
+            convertView.setTag(new ViewHolder(convertView));
+        }
+        initializeViews((WorkMenuBean) getItem(position), (ViewHolder) convertView.getTag());
+        return convertView;
+    }
+
+    private void initializeViews(WorkMenuBean object, ViewHolder holder) {
+        //TODO implement
+    }
+
+    protected class ViewHolder {
+        private TextView workParentTitleTv;
+        private MyGridView workParentGv;
+
+        public ViewHolder(View view) {
+            workParentTitleTv = (TextView) view.findViewById(R.id.work_parent_title_tv);
+            workParentGv = (MyGridView) view.findViewById(R.id.work_parent_gv);
+        }
+    }
+}

+ 9 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -41,6 +41,7 @@ import com.core.utils.helper.AvatarHelper;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.uas.appme.other.model.Master;
 import com.uas.appme.settings.activity.BaseInfoActivity;
+import com.uas.appme.settings.activity.CheckWagesActivity;
 import com.uas.appme.settings.activity.SettingActivity;
 import com.uas.appme.settings.activity.SigatureActivity;
 import com.uas.appme.widget.MasterDialog;
@@ -372,6 +373,14 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
 
             }
         });
+        picture_selector_rl.setOnLongClickListener(new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+
+                startActivity(new Intent(ct, CheckWagesActivity.class));
+                return true;
+            }
+        });
 
     }
 

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/SingleImagePreviewActivity.java

@@ -18,12 +18,12 @@ import android.widget.TextView;
 import com.common.system.DisplayUtil;
 import com.core.app.ActionBackActivity;
 import com.core.app.AppConstant;
+import com.core.utils.CommonUtil;
+import com.modular.apputils.utils.Scheme;
 import com.nostra13.universalimageloader.core.ImageLoader;
 import com.nostra13.universalimageloader.core.assist.FailReason;
 import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.util.im.Scheme;
-import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 
 import java.io.File;
 

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/im/UserRoleUtils.java

@@ -74,7 +74,7 @@ public class UserRoleUtils {
                         view.findViewById(R.id.subscribe_rl).setVisibility(View.GONE);//我的订阅
                     }
                     if (fragment instanceof WorkPlatFragment){
-                        view.findViewById(R.id.rl_uas_sys).setVisibility(View.GONE);
+                       // view.findViewById(R.id.rl_uas_sys).setVisibility(View.GONE);
                         view.findViewById(R.id.my_client_rl).setVisibility(View.GONE);
                         view.findViewById(R.id.setting_rl).setVisibility(View.GONE);
                     }

+ 3 - 3
WeiChat/src/main/res/drawable/bg_bule_btn.xml

@@ -3,21 +3,21 @@
     <item android:state_pressed="true">
         <shape>
             <solid android:color="@color/btn_orange_press" />
-            <corners android:radius="8dp" />
+            <corners android:radius="3dp" />
             <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
         </shape>
     </item>
     <item android:state_enabled="false">
         <shape>
             <solid android:color="@color/btn_orange_press" />
-            <corners android:radius="8dp" />
+            <corners android:radius="3dp" />
             <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
         </shape>
     </item>
     <item>
         <shape>
             <solid android:color="@color/titleBlue" />
-            <corners android:radius="8dp" />
+            <corners android:radius="3dp" />
             <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
         </shape>
     </item>

+ 5 - 0
WeiChat/version.properties

@@ -0,0 +1,5 @@
+#Sat Nov 18 18:46:27 CST 2017
+debugName=1
+versionName=618
+debugCode=17
+versionCode=118

+ 3 - 10
app_core/common/src/main/java/com/core/api/wxapi/ApiPlatform.java

@@ -1,7 +1,5 @@
 package com.core.api.wxapi;
 
-import android.util.Log;
-
 import com.common.config.BaseConfig;
 
 
@@ -11,21 +9,16 @@ import com.common.config.BaseConfig;
  * 在ApiModel中定义公共逻辑方法
  */
 public class ApiPlatform extends ApiBase implements ApiModel {
-    //    private final String mBaseUrl = "http://192.168.253.102:8090/platform-b2b/"; //董必伟本地ip
-//    private final String mBaseUrl = "http://192.168.253.192:8088/platform-b2b/"; //何本地ip
     private String mBaseUrl = "";
 
     public ApiPlatform() {
-        if (!BaseConfig.isDebug()) {
+        if (BaseConfig.isDebug()) {
             mBaseUrl = "http://uas.ubtob.com/";
-            super.login = "https://uas.ubtob.com/sso/login";
+            super.login = "https://account.ubtob.com/sso/login";
         } else {
             mBaseUrl = "http://uas.ubtob.com/";
-            super.login = "https://uas.ubtob.com/sso/login";
-//            mBaseUrl = "http://218.17.158.219:9090/platform-b2b/";
-//            super.login = "http://113.105.74.135:8001/sso/login";
+            super.login = "https://account.ubtob.com/sso/login";
         }
-        Log.i("fang", mBaseUrl + "," + login);
         //审批流
         super.getAuditDone = mBaseUrl + "mobile/approvalflow/getAuditDone";
         //通讯录人员列表

+ 1 - 0
app_core/common/src/main/java/com/core/dao/StepRankingFirstDao.java

@@ -112,6 +112,7 @@ public class StepRankingFirstDao {
         ContentValues values = new ContentValues();
         try {
             stepDb.beginTransaction();
+            values.put("_id",bean.get_id());
             values.put("my_userid",bean.getMy_userid());
             values.put("my_rank",bean.getMy_rank());
             values.put("my_steps",bean.getMy_steps());

+ 52 - 53
app_core/common/src/main/java/com/core/net/http/ViewUtil.java

@@ -298,8 +298,7 @@ public class ViewUtil {
 //        }
 
     }
-
-    @Deprecated
+      @Deprecated
     public static void showDialogB2B(final String phone, final String password, final List<LoginEntity.Spaces> models) {
         String[] items = new String[models.size()];
 //        int select = 0;
@@ -336,17 +335,17 @@ public class ViewUtil {
     public static void LoginB2BTask(String phone, String password, Integer spaceId) {
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_progress_b2b));
         String url = ApiConfig.getInstance(new ApiPlatform()).getmApiBase().login;
-        LogUtil.d("HttpLogs", "b2b login url:" + url);
+        LogUtil.d("HttpLogs","b2b login url:"+url);
         Map<String, String> params = new HashMap<String, String>();
         params.put("appId", "b2b");
         params.put("username", phone);
         params.put("password", password);
 //        if (!BaseConfig.isDebug()) {
-        params.put("spaceId", String.valueOf(spaceId));
+            params.put("spaceId", String.valueOf(spaceId));
 //        } else {
 //            params.put("spaceId", "76035");
 //        }
-        LogUtil.d("HttpLogs", "params:" + JSON.toJSONString(params));
+        LogUtil.d("HttpLogs","params:"+JSON.toJSONString(params));
         startNetThread(url, params, handler, Constants.SUCCESS_B2B, null, null, "post");
     }
 
@@ -431,8 +430,8 @@ public class ViewUtil {
             CommonUtil.setSharedPreferences(ct, "erp_master", erp_master);
             CommonUtil.setSharedPreferences(ct, "erp_commpany", erp_company);
             CommonUtil.setSharedPreferences(ct, "erp_uu", String.valueOf(dataMap.get("uu")));
-            LogUtil.d("ERPLOGIN", "erp_uu1:" + String.valueOf(dataMap.get("uu")));
-            LogUtil.d("ERPLOGIN", "erp_uu2:" + CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_uu"));
+            LogUtil.d("ERPLOGIN","erp_uu1:"+String.valueOf(dataMap.get("uu")));
+            LogUtil.d("ERPLOGIN","erp_uu2:"+CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_uu"));
             CommonUtil.setSharedPreferences(ct, "erp_masterId", erp_masterId);
             CommonUtil.setSharedPreferences(ct, "erp_login", true);
             CommonUtil.setSharedPreferences(ct, "erp_emname", String.valueOf(dataMap.get("emname")));
@@ -450,8 +449,8 @@ public class ViewUtil {
             }
         }, 1500);
         if (ct instanceof Activity) {
-            if (!StringUtil.isEmpty(CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl"))) {
-            } else {
+            if (!StringUtil.isEmpty(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_baseurl"))){
+            }else{
                 ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
             }
             CommonUtil.setSharedPreferences(ct, "erp_baseurl", erp_baseurl);
@@ -480,7 +479,7 @@ public class ViewUtil {
             CommonUtil.setSharedPreferences(ct, "user_password", erp_password);
         }
         if (ct == null) ct = MyApplication.getInstance();
-
+      
         CommonUtil.setSharedPreferences(ct, "erp_login", false);
         CommonUtil.setSharedPreferences(ct, "b2b_uu", b2b_uu);
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_success_b2b));
@@ -490,14 +489,14 @@ public class ViewUtil {
                 mdProcessDialog.cancel();
             }
         }, 1500);
-        if (ct instanceof Activity) {
-            if (CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), "b2b_login")) {
-            } else {
-                CommonUtil.setSharedPreferences(ct, "b2b_login", true);
-                ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
-            }
+            if (ct instanceof Activity) {
+                if (CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(),"b2b_login")){
+                }else{
+                    CommonUtil.setSharedPreferences(ct, "b2b_login", true);
+                   ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
+                }
         }
-
+       
         sendBrodcast("B2B");
     }
 
@@ -583,42 +582,43 @@ public class ViewUtil {
 
         }
         if (JSONUtil.validate(json)) {
-            // showDialogCompany(json, phone, password);
+           // showDialogCompany(json, phone, password);
             showLoginDialog(json, phone, password);
         } else {
             ToastMessage(ct, "接口数据非法!", Style.holoRedLight, 3000);
         }
     }
 
+   
 
     //解析登录信息
-    public static void showLoginDialog(String loginResult, final String phone, final String password) {
+    public static void showLoginDialog(String loginResult,final String phone,final String password){
         List<LoginEntity> loginMsg = JSON.parseArray(loginResult, LoginEntity.class);
-        List<LoginEntity> loginEntities = new ArrayList<>();
-        boolean isHasUas = false;
-        if (!ListUtils.isEmpty(loginMsg)) {
-            if (loginMsg.size() > 1) {
-                isHasUas = true;
+        List<LoginEntity> loginEntities=new ArrayList<>();
+        boolean isHasUas=false;
+        if (!ListUtils.isEmpty(loginMsg)){
+            if (loginMsg.size()>1) {
+                    isHasUas = true;
             }
-            for (int i = 0; i < loginMsg.size(); i++) {
+            for (int i = 0; i <loginMsg.size() ; i++) {
                 LoginEntity model = loginMsg.get(i);
                 if (model.getPlatform().equals("ERP")) {
-                    isHasUas = true;
+                    isHasUas=true;
                     loginEntities.add(model);
                 } else if (model.getPlatform().equals("B2B")) {
                     List<LoginEntity.Spaces> sModel = model.getSpaces();
-                    if (!ListUtils.isEmpty(sModel)) {
-                        for (int j = 0; j < sModel.size(); j++) {
+                    if (!ListUtils.isEmpty(sModel)){
+                        for (int j = 0; j <sModel.size() ; j++) {
                             //去重逻辑
-                            boolean isHas = false;
-                            for (int k = 0; k < loginMsg.size(); k++) {
-                                if (sModel.get(j).getName().equals(loginMsg.get(k).getName())) {
-                                    //存在  uas系统里面存在同名的
-                                    isHas = true;
+                            boolean isHas=false;
+                            for (int k = 0; k <loginMsg.size() ; k++) {
+                                if (sModel.get(j).getName().equals(loginMsg.get(k).getName())){
+                                   //存在  uas系统里面存在同名的
+                                    isHas=true;
                                 }
                             }
-                            if (!isHas) {
-                                LoginEntity bModel = new LoginEntity();
+                            if (!isHas){
+                                LoginEntity bModel=new LoginEntity();
                                 bModel.setEnuu(Integer.valueOf(sModel.get(j).getEnuu()));
                                 bModel.setName(sModel.get(j).getName());
                                 bModel.setSpaceId(sModel.get(j).getId());
@@ -626,7 +626,7 @@ public class ViewUtil {
                                 loginEntities.add(bModel);
                             }
                         }
-                    } else {
+                    }else{
                         if (!isHasUas) {
                             //没有uas的情况
 //                            model.setPlatform("个人");
@@ -634,23 +634,23 @@ public class ViewUtil {
 //                            loginEntities.add(model);
                             CommonUtil.setSharedPreferences(MyApplication.getInstance(), "userRole", "1");
                             ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
-                        } else {
-
+                        }else{
+                        
                         }
                     }
                 }
             }
             //
-            LogUtil.d("HttpLogs", "login dialog:" + JSON.toJSONString(loginEntities));
-            if (ListUtils.isEmpty(loginEntities)) return;
-            erpEntities = loginEntities;
+            LogUtil.d("HttpLogs","login dialog:"+JSON.toJSONString(loginEntities));
+            if (ListUtils.isEmpty(loginEntities))return;
+            erpEntities=loginEntities;
             String[] items = new String[loginEntities.size()];
             int select = 0;
             for (int j = 0; j < loginEntities.size(); j++) {
                 items[j] = loginEntities.get(j).getName();
             }
-            if (!DialogUtils.isDialogShowing(loginERPDialog)) {
-                if (loginERPDialog != null) {
+            if (!DialogUtils.isDialogShowing(loginERPDialog)){
+                if (loginERPDialog!=null) {
                     select = loginERPDialog.getSelectedIndex();
                 }
                 loginERPDialog = new MaterialDialog.Builder(ct)
@@ -665,7 +665,7 @@ public class ViewUtil {
                                             LoginEntity entity = erpEntities.get(which);
                                             erp_phone = phone;
                                             erp_password = password;
-                                            if ("ERP".equals(entity.getPlatform())) {
+                                            if ("ERP".equals(entity.getPlatform())){
                                                 erp_username = entity.getAccount();
                                                 erp_master = entity.getMaster();
                                                 erp_baseurl = entity.getWebsite();
@@ -676,7 +676,7 @@ public class ViewUtil {
                                                 LoginERPTask(entity.getWebsite(), entity.getMaster(), phone, password);
                                                 CommonUtil.clearSharedPreferences(MyApplication.getInstance(), "erp_masterlist");  //清除账套列表缓存
                                             }
-                                            if ("B2B".equals(entity.getPlatform())) {
+                                            if ("B2B".equals(entity.getPlatform())){
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "spaceId", String.valueOf(entity.getSpaceId()));
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "companyName", String.valueOf(entity.getName()));
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "companyEnUu", String.valueOf(entity.getEnuu()));
@@ -686,7 +686,7 @@ public class ViewUtil {
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "userRole", "3");
                                                 LoginB2BTask(phone, password, entity.getSpaceId());//登录B2B
                                             }
-                                            if ("个人".equals(entity.getPlatform())) {
+                                            if("个人".equals(entity.getPlatform())){
                                                 CommonUtil.setSharedPreferences(MyApplication.getInstance(), "userRole", "1");
                                                 ct.startActivity(new Intent("com.modular.main.DataDownloadActivity"));
                                             }
@@ -694,12 +694,12 @@ public class ViewUtil {
                                         return true;
                                     }
                                 }).positiveText(ct.getString(R.string.common_sure)).show();
-
+                
             }
         }
     }
-
-
+    
+    
     @Deprecated
     private static void showDialogCompany(String json, String phone, String password) {
         List<LoginEntity> logMsg = JSON.parseArray(json, LoginEntity.class);
@@ -793,7 +793,6 @@ public class ViewUtil {
         }
         return userName;
     }
-
     /**
      * @author LiuJie
      * @功能:比较两个日期大小
@@ -1036,13 +1035,13 @@ public class ViewUtil {
                                     String password) {
         mdProcessDialog.setContent(MyApplication.getInstance().getString(R.string.login_progress_erp));
 //        url = url + "mobile/login.action";
-        url = "http://192.168.253.29:8080/ERP/mobile/login.action";
+        url ="http://192.168.253.29:8080/ERP/mobile/login.action";
         Map<String, String> params = new HashMap<String, String>();
         params.put("username", username);
         params.put("password", password);
         params.put("master", master);
-        LogUtil.i("login", "url=" + url);
-        LogUtil.i("login", "params=" + JSONUtil.map2JSON(params));
+        LogUtil.i("login","url="+url);
+        LogUtil.i("login","params="+JSONUtil.map2JSON(params));
         startNetThread(url, params, handler, Constants.SUCCESS_ERP, null, null, "post");
     }
 

+ 21 - 9
app_core/common/src/main/java/com/core/widget/view/selectcalendar/SelectCalendarActivity.java

@@ -81,8 +81,8 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
     private TextView tv_date_start;
     private TextView tv_date_end;
 
-    private TextView v_date_start;
-    private TextView v_date_end;
+    private TextView v_date_start;//时间开始
+    private TextView v_date_end;//时间结束
 
     private TextView v_time_start;
     private TextView v_time_end;
@@ -273,7 +273,6 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
         ll_time_top = (LinearLayout) findViewById(R.id.ll_time_top);
         ll_time_point = (LinearLayout) findViewById(R.id.ll_time_point);
         tv_time_point = (TextView) findViewById(R.id.tv_time_point);
-
         ll_date_start = (LinearLayout) findViewById(R.id.ll_date_start);
         tv_date_start = (TextView) findViewById(R.id.tv_date_start);
         v_date_start = (TextView) findViewById(R.id.v_date_start);
@@ -310,6 +309,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
             companyId = intent.getStringExtra("companyId");
             bStartTime = intent.getStringExtra("startTime");
             bEndTime = intent.getStringExtra("endTime");
+            //预约功能模块---时间段,时间点预约设置
             if (!StringUtil.isEmpty(bookType)) {
                 if ("0".equals(bookType)) {
                     type = 3;//设置单一时间点
@@ -326,7 +326,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
             if (!TextUtils.isEmpty(mcaller) && ("Workovertime".equals(mcaller) || "ExtraWork$".equals(mcaller))) {
                 mWorkovertime = true;
             }
-            if (type != 2) {
+            if (type != 2&&type!=5) {
                 v_date_start.setText(startDate);
                 v_date_end.setText(startDate);
             }
@@ -340,7 +340,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                 }
             }
 
-            if (type != 2) {
+            if (type != 2&&type!=5) {
                 if (!StringUtil.isEmpty(startDate) && !StringUtil.isEmpty(endDate)) {
                     v_date_start.setText(startDate.substring(0, startDate.length() - 3));
                     v_date_end.setText(endDate.substring(0, endDate.length() - 3));
@@ -412,7 +412,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                 if (type == 3) {
                     tv_time_point.setText(tv_time_point.getText().toString().substring(0, 10) + " " + modle.tv_text.getText().toString());
                 }
-                if (type == 2) {
+                if (type == 2||type==5) {
                     //按时间请假:
                     if (startDate) {//按钮状态
                         //开始时间
@@ -497,7 +497,12 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
             case 1://预约时间段---繁忙赶时间段不可点击   固定 时间间隔十五分钟
                 getBookingTotalTime(imId);//获取预约总时间
                 break;
-            case 2://预约时间段设置--在设置界面
+            case 2://预约时间段设置--在设置界面   固定时间段间隔 十五分钟
+                initTimeData();
+                viewPager.setVisibility(View.GONE);
+                currentSelectDate = "";
+                break;
+            case 5://预约时间段设置--在设置界面  固定时间段间隔  半小时
                 initTimeData();
                 viewPager.setVisibility(View.GONE);
                 currentSelectDate = "";
@@ -507,7 +512,6 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                 getBServiceTimes();
                 break;
             case 4://服务预约 时间段选择(限定开始和截止时间段)  固定时间间隔半小时
-                //初始化时间段
                 initTimeData();
                 getBServiceTimes();
                 break;
@@ -635,6 +639,13 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                 gv_date_list.setAdapter(gAdapter);
             }
         }
+        if (type==5){
+            mTimeData.addAll(timeAddMuilt("00:00", "23:45", 30));
+            if (mContext != null) {
+                gAdapter = new GridDataAdapter(mContext, mTimeData);
+                gv_date_list.setAdapter(gAdapter);
+            }
+        }
         if (type == 3 || type == 4) {//服务预约
             mTimeData.addAll(timeAddMuilt(bStartTime, bEndTime, 30));
             if (mContext != null) {
@@ -866,7 +877,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                 //时间
                 if (!StringUtil.isEmpty(v_date_start.getText().toString()) && !
                         StringUtil.isEmpty(v_date_end.getText().toString())) {
-                    if (type == 2) {
+                    if (type == 2||type==5) {
                         setResultIntent();
                         return;
                     }
@@ -1353,6 +1364,7 @@ public class SelectCalendarActivity extends BaseActivity implements View.OnClick
                 .add("type", businessType)
                 .add("commonid", serviceId)
                 .add("yearmonth", ym)
+                .add("userid",MyApplication.getInstance().mLoginUser.getUserId())
                 .add("companyid", companyId)
                 .add("token", MyApplication.getInstance().mAccessToken)
                 .method(Method.GET)

BIN
app_core/common/src/main/res/drawable-hdpi/icon_select_sure.png


BIN
app_core/common/src/main/res/drawable-xhdpi/icon_select_sure.png


BIN
app_core/common/src/main/res/drawable-xxhdpi/icon_select_sure.png


+ 3 - 3
app_core/common/src/main/res/drawable/bg_bule_btn.xml

@@ -3,21 +3,21 @@
     <item android:state_pressed="true">
         <shape>
             <solid android:color="@color/btn_orange_press" />
-            <corners android:radius="8dp" />
+            <corners android:radius="1dp" />
             <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
         </shape>
     </item>
     <item android:state_enabled="false">
         <shape>
             <solid android:color="@color/btn_orange_press" />
-            <corners android:radius="8dp" />
+            <corners android:radius="1dp" />
             <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
         </shape>
     </item>
     <item>
         <shape>
             <solid android:color="@color/titleBlue" />
-            <corners android:radius="8dp" />
+            <corners android:radius="1dp" />
             <padding android:bottom="0.5dp" android:left="0.5dp" android:right="0.5dp" android:top="0.5dp" />
         </shape>
     </item>

+ 6 - 0
app_core/common/src/main/res/drawable/selector_pop_items.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/icon_select_sure" android:state_checked="true"/>
+    <item android:drawable="@drawable/icon_select_sure" android:state_checked="false"/>
+    <item android:drawable="@drawable/icon_select_sure" />
+</selector>

+ 2 - 2
app_core/common/src/main/res/layout/item_pop_list.xml

@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content">
+    android:layout_height="wrap_content"
+    android:background="@drawable/selector_pop_items">
     <TextView
         android:id="@+id/tv_item_name"
         android:paddingLeft="2dp"
@@ -11,7 +12,6 @@
         android:textSize="14sp"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:background="@drawable/select_weixin_list_item"
         android:gravity="center"
         android:text="xxx" />
 </LinearLayout>

+ 0 - 18
app_core/common/src/main/res/layout/item_pop_list_select.xml

@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content">
-  
-    <TextView
-        android:id="@+id/tv_item_name"
-        android:paddingLeft="2dp"
-        android:paddingRight="2dp"
-        android:paddingTop="10dp"
-        android:paddingBottom="10dp"
-        android:textSize="14sp"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@drawable/selector_me_menu_item_bg"
-        android:gravity="center"
-        android:text="xxx" />
-</RelativeLayout>

+ 4 - 11
app_core/common/src/main/res/layout/pop_crm_list.xml

@@ -6,21 +6,14 @@
     android:layout_height="match_parent"
     app:sl_cornerRadius="0dp"
     app:sl_dx="0dp"
-    app:sl_dy="0dp"
+    app:sl_dy="-2dp"
     app:sl_shadowColor="@color/shadow"
     app:sl_shadowRadius="1dp">
-
-    <LinearLayout
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@drawable/shape_pop_ll"
-        android:orientation="vertical"
-        android:padding="0.1dp">
-
         <ListView
             android:id="@+id/mList"
             style="@style/ListViewBasic"
+            android:listSelector="@drawable/selector_pop_items"
             android:layout_height="wrap_content"
-            android:dividerHeight="0dp"></ListView>
-    </LinearLayout>
+            android:dividerHeight="0dp">
+        </ListView>
 </com.xzjmyk.pm.activity.view.shadow.ShadowLayout>

+ 1 - 0
app_modular/appbooking/src/main/AndroidManifest.xml

@@ -17,6 +17,7 @@
             android:windowSoftInputMode="adjustPan|stateHidden" />
         <activity android:name=".activity.services.BServiceDetailActivity" />
         <activity android:name=".activity.utils.GridSelectActivity"></activity>
+        <activity android:name=".activity.utils.GridSelectDateActivity"></activity>
     </application>
 
 </manifest>

+ 1 - 1
app_modular/appbooking/src/main/java/com/modular/booking/activity/business/BBookingDetailActivity.java

@@ -319,7 +319,7 @@ public class BBookingDetailActivity extends OABaseActivity implements View.OnCli
     private String  bmanid;
     public void getApiData(){
         showLoading();
-        HttpClient httpClient=new HttpClient.Builder("http://113.105.74.140:8092/").build();
+        HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL()).build();
         httpClient.Api()
                 .send(new HttpClient.Builder().url("user/appBusinessDetail")
                         .add("id", model.getAb_id())

+ 291 - 127
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServiceAddActivity.java

@@ -49,8 +49,10 @@ import com.me.network.app.http.rx.ResultListener;
 import com.me.network.app.http.rx.ResultSubscriber;
 import com.modular.booking.R;
 import com.modular.booking.activity.utils.GridSelectActivity;
+import com.modular.booking.activity.utils.GridSelectDateActivity;
 import com.modular.booking.model.SBListModel;
 import com.modular.booking.model.SBMenuModel;
+import com.modular.booking.widget.AddSubUtils;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -86,6 +88,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
     private String serviceName;//服务名称
     private String dataService;//详情数据
     private boolean isHasPerson;//是否指定了人员
+    private AddSubUtils addSubUtils;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -135,10 +138,44 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
         submit_btn.setOnClickListener(this);
         et_book_name.setText(CommonUtil.getName());
         et_book_phone.setText(MyApplication.getInstance().mLoginUser.getTelephone());
-        
-        et_book_phone.setOnClickListener(this);
+
+
         tv_sub.setOnClickListener(this);
         tv_title.setOnClickListener(this);
+
+        addSubUtils = (AddSubUtils) findViewById(R.id.add_sub);
+        addSubUtils.setBuyMax(50)       // 最大购买数,默认为int的最大值
+                .setInventory(50)       // 库存,默认为int的最大值
+                .setCurrentNumber(1)    // 设置当前数,默认为1
+                .setStep(1)             // 步长,默认为1
+                .setBuyMin(1)           // 购买的最小值,默认为1
+                .setOnWarnListener(new AddSubUtils.OnWarnListener() {
+                    @Override
+                    public void onWarningForInventory(int inventory) {
+                        // Toast.makeText(mContext, "当前库存:" + inventory, Toast.LENGTH_SHORT).show();
+                        tv_food_peoples.setText(inventory);
+//                        tv_food_peoples.setVisibility(View.GONE);
+                    }
+
+                    @Override
+                    public void onWarningForBuyMax(int max) {
+                        //  Toast.makeText(mContext, "超过最大购买数:" + max, Toast.LENGTH_SHORT).show();
+                    }
+
+                    @Override
+                    public void onWarningForBuyMin(int min) {
+                        // Toast.makeText(mContext, "低于最小购买数:" + min, Toast.LENGTH_SHORT).show();
+                    }
+                })
+                .setOnChangeValueListener(new AddSubUtils.OnChangeValueListener() {
+                    @Override
+                    public void onChangeValue(int value, int position) {
+                        // Toast.makeText(mContext, "当前值:" + value, Toast.LENGTH_SHORT).show();
+                        tv_food_peoples.setText(String.valueOf(value));
+                        tv_food_peoples.setVisibility(View.GONE);
+                    }
+                });
+        tv_food_peoples.setText("1");
     }
 
     private boolean isEdited = true;
@@ -153,62 +190,74 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
             //两个字段是从选择人员界面选过来的
             sb_userid = intent.getStringExtra("sb_userid");
             sb_username = intent.getStringExtra("sb_username");
-            LogUtil.d(TAG,"sb_userid:"+sb_userid+"  sb_username:"+sb_username+" dataService:"+dataService);
+            LogUtil.d(TAG, "sb_userid:" + sb_userid + "  sb_username:" + sb_username + " dataService:" + dataService);
             if (model != null) {
                 LogUtil.i(model.toString());
                 initType(model.getType());
                 if (isEdited) {
-                    submit_btn.setText("提交");
-                    if(!StringUtil.isEmpty(sb_userid)){
+                    submit_btn.setText("立即预约");
+                    if (!StringUtil.isEmpty(sb_userid)) {
                         AvatarHelper.getInstance().displayAvatar(sb_userid, iv_header, true);
                         AvatarHelper.getInstance().displayAvatar(sb_userid, max_img, true);
                         tv_title.setText(sb_username);
-                        if("10005".equals(model.getIndustrycode())){
-                            tv_sub.setText(R.string.booking_serivce_technician);
-                        }else{
-                            tv_sub.setText(R.string.booking_serivce_teacher);
+                        if ("10005".equals(model.getIndustrycode())) {
+                            tv_sub.setText(getString(R.string.booking_serivce_technician) + " " + model.getAddress());
+                        } else {
+                            tv_sub.setText(getString(R.string.booking_serivce_teacher) + " " + model.getAddress());
                         }
-                    }else{ 
+                    } else {
                         AvatarHelper.getInstance().display(model.getUrl(), iv_header, true);
                         AvatarHelper.getInstance().display(model.getUrl(), max_img, true);
                         tv_title.setText(model.getName());
                         tv_sub.setText(model.getAddress());
                     }
-                 
+
                 } else {
-        
+                    et_book_phone.setOnClickListener(this);
                     JSONObject object = JSON.parseObject(dataService);
                     String sb_status = object.getString("sb_status");
                     String sb_imageurl = object.getString("sc_imageurl");
-                    sb_userid =object.getString("sb_userid");
-                    sb_username =object.getString("sb_username");
-                    if ("已取消".equals(sb_status)) {
+                    sb_userid = object.getString("sb_userid");
+                    sb_username = object.getString("sb_username");
+                    //已取消,已确认,已结束
+                    if ("已取消".equals(sb_status)||"已结束".equals(sb_status)) {
                         submit_btn.setVisibility(View.GONE);
-                    } else {
-                        submit_btn.setVisibility(View.VISIBLE);
+                    } else if ("已确认".equals(sb_status)){
+                        if (!StringUtil.isEmpty(dataService)) {
+                            String recordId = object.getString("sb_recordid");
+                            if (MyApplication.getInstance().mLoginUser.getUserId().equals(recordId)) {
+                                submit_btn.setVisibility(View.VISIBLE);
+                                submit_btn.setText("取消");
+                            } else {
+                                submit_btn.setVisibility(View.VISIBLE);
+                                submit_btn.setText("释放");
+                            }
+                        }
                     }
-                    if (!StringUtil.isEmpty(sb_userid)){
+                    
+                 
+                    if (!StringUtil.isEmpty(sb_userid)) {
                         AvatarHelper.getInstance().displayAvatar(sb_userid, iv_header, true);
                         AvatarHelper.getInstance().displayAvatar(sb_userid, max_img, true);
                         tv_title.setText(sb_username);
-                        if("10005".equals(model.getIndustrycode())){
-                            tv_sub.setText(R.string.booking_serivce_technician);
-                         
-                        }else{
-                            tv_sub.setText(R.string.booking_serivce_teacher);
+                        if ("10005".equals(model.getIndustrycode())) {
+                            tv_sub.setText(getString(R.string.booking_serivce_technician) + " " + model.getAddress());
+
+                        } else {
+                            tv_sub.setText(getString(R.string.booking_serivce_teacher) + " " + model.getAddress());
                         }
-                    }else{
+                    } else {
                         tv_title.setText(model.getName());
                         tv_sub.setText(model.getAddress());
                         AvatarHelper.getInstance().display(sb_imageurl, iv_header, true);
-                        AvatarHelper.getInstance().display(sb_imageurl, max_img, true); 
+                        AvatarHelper.getInstance().display(sb_imageurl, max_img, true);
                     }
-                   
-                    submit_btn.setText("取消");
+
+                    
                 }
-               
+
                 getSupportActionBar().setTitle(model.getName());
-              
+
 
             } else {
                 //TODO 由于该界面必须要转进来的对象,如果model缺失,应返回
@@ -297,51 +346,51 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
     @Override
     public void onClick(View v) {
         int id = v.getId();
-        if (id==R.id.tv_title){
+        if (id == R.id.tv_title) {
             //简介
 //            ToastMessage("简介");
             try {
-                if (!StringUtil.isEmpty(dataService)){
+                if (!StringUtil.isEmpty(dataService)) {
                     showDialog(JSON.parseObject(dataService).getString("sc_introduce"));
-                }else{
+                } else {
                     showDialog(model.getIntroduce());
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             }
 
-        }else if (id==R.id.tv_sub){
+        } else if (id == R.id.tv_sub) {
             //地图定位(需要经纬度)
             try {
-                if (model!=null){
-                    if(!StringUtil.isEmpty(model.getLatitude())){
-                        LatLng latLng=new LatLng(Double.valueOf(model.getLatitude()),
+                if (model != null) {
+                    if (!StringUtil.isEmpty(model.getLatitude())) {
+                        LatLng latLng = new LatLng(Double.valueOf(model.getLatitude()),
                                 Double.valueOf(model.getLongitude()));
-                        Intent  intent = new Intent("com.modular.appworks.NavigationActivity");
+                        Intent intent = new Intent("com.modular.appworks.NavigationActivity");
                         intent.putExtra("toLocation", latLng);
                         startActivityForResult(intent, 0x23);
-                    }else{
-                        LatLng latLng=new LatLng(Double.valueOf(JSON.parseObject(dataService).getString("sc_latitude")),
+                    } else {
+                        LatLng latLng = new LatLng(Double.valueOf(JSON.parseObject(dataService).getString("sc_latitude")),
                                 Double.valueOf(JSON.parseObject(dataService).getString("sc_longitude")));
-                        Intent  intent = new Intent("com.modular.appworks.NavigationActivity");
+                        Intent intent = new Intent("com.modular.appworks.NavigationActivity");
                         intent.putExtra("toLocation", latLng);
                         startActivityForResult(intent, 0x23);
                     }
-                }else{
-                    LatLng latLng=new LatLng(Double.valueOf(JSON.parseObject(dataService).getString("sc_latitude")),
+                } else {
+                    LatLng latLng = new LatLng(Double.valueOf(JSON.parseObject(dataService).getString("sc_latitude")),
                             Double.valueOf(JSON.parseObject(dataService).getString("sc_longitude")));
-                    Intent  intent = new Intent("com.modular.appworks.NavigationActivity");
+                    Intent intent = new Intent("com.modular.appworks.NavigationActivity");
                     intent.putExtra("toLocation", latLng);
                     startActivityForResult(intent, 0x23);
                 }
             } catch (Exception e) {
                 e.printStackTrace();
             }
-        }else if(id==R.id.et_book_phone){
+        } else if (id == R.id.et_book_phone) {
             //打电话
             phoneAction(et_book_phone.getText().toString());
         }
-        
+
         //选择时间(用餐时间、唱歌时间....)
         if (id == R.id.tv_food_times
                 || id == R.id.tv_hair_times
@@ -355,16 +404,16 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
             //TODO  1.当model.getBookType()==0的时候,只能选择开始时间,没有结束时间,当model.getBookType()==1的时候,可选开始时间和结束时间,时间间隔是 30分钟
             //TODO  2.需要传进去商家的id或是ktv包厢的id,在里面请求,判断商家繁忙时刻 5.11、获取商家服务繁忙时间段
             String serviceParam = null;
-            if (!StringUtil.isEmpty(sb_userid)||"10001".equals(model.getIndustrycode())) {
+            if (!StringUtil.isEmpty(sb_userid) || "10001".equals(model.getIndustrycode())) {
                 if ("10001".equals(model.getIndustrycode())) {
                     serviceParam = serviceId;
-                }else{
-                    serviceParam=sb_userid;
+                } else {
+                    serviceParam = sb_userid;
                 }
             } else {
                 serviceParam = serviceName;
             }
-            LogUtil.d(TAG,"serviceParam:"+serviceParam);
+            LogUtil.d(TAG, "serviceParam:" + serviceParam);
             startActivityForResult(new Intent(mContext, SelectCalendarActivity.class)
                             .putExtra("startDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
                             .putExtra("endDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
@@ -380,10 +429,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     , TIME_SELECT);
         }
         //人数选择(1~10以上)
-        else if (id == R.id.tv_food_peoples
-                || id == R.id.tv_ktv_peoples
-                || id == R.id.tv_club_peoples
-                || id == R.id.tv_sport_peoples) {
+        else if (
+            //id == R.id.tv_food_people||
+                id == R.id.tv_ktv_peoples
+                        || id == R.id.tv_club_peoples
+                        || id == R.id.tv_sport_peoples) {
             ArrayList<SelectBean> formBeaan = new ArrayList<>();
             for (int i = 1; i <= 10; i++) {
                 formBeaan.add(new SelectBean(i == 10 ? "10人以上" : i + "人"));
@@ -413,7 +463,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                 || id == R.id.tv_club_technician
                 || id == R.id.tv_ktv_rooms
                 || id == R.id.tv_food_rooms) {
-            loadStoreService(v.getContentDescription());
+            if (id == R.id.tv_food_rooms && TextUtils.isEmpty(tv_food_times.getText())) {
+                ToastUtil.showToast(this, "请先选择用餐时间");
+            } else {
+                loadStoreService(v.getContentDescription());
+            }
         }
 
         //医疗
@@ -428,22 +482,42 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                 ToastUtil.showToast(ct, "请先选择科室");
             }
         } else if (id == R.id.submit_btn) {
-            if (((Button) v).getText().equals("提交")) {
+            if (((Button) v).getText().equals("立即预约")) {
                 save();
             } else if (((Button) v).getText().equals("取消")) {
-                cancle(String.valueOf(model.getId()));
+                if (!StringUtil.isEmpty(dataService)) {
+                    JSONObject object = JSON.parseObject(dataService);
+                    String recordId = object.getString("sb_recordid");
+                    if (MyApplication.getInstance().mLoginUser.getUserId().equals(recordId)) {
+                        showActionDialog("取消");
+                    } else {
+                        ToastMessage("商家不可取消预约!");
+                    } 
+                }
+            }else if(((Button) v).getText().equals("释放")){
+                if (!StringUtil.isEmpty(dataService)) {
+                    JSONObject object = JSON.parseObject(dataService);
+                    String recordId = object.getString("sb_recordid");
+                    if (MyApplication.getInstance().mLoginUser.getUserId().equals(recordId)) {
+//                        cancle(String.valueOf(model.getId()));
+                        ToastMessage("只有商家可以释放!");
+                    } else {
+                        //商家释放
+                        showActionDialog("释放");
+                    }
+                }
             }
         }
     }
 
     private static final String TAG = "BServiceAddActivity";
 
-    public void cancle(String id) {
-        LogUtil.d(TAG, "id:" + id);
+    public void cancle() {
+        LogUtil.d(TAG, "id:" + String.valueOf(model.getId()));
         HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).build();
         httpClient.Api().send(new HttpClient.Builder()
                 .url("user/appCancelService")
-                .add("id", id)
+                .add("id", String.valueOf(model.getId()))
                 .add("token", MyApplication.getInstance().mAccessToken)
                 .method(Method.POST)
                 .build(), new ResultSubscriber<Object>(new ResultListener<Object>() {
@@ -454,6 +528,8 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     if (JSONUtil.validate(o.toString())) {
                         if ("true".equals(JSON.parseObject(o.toString()).getString("result"))) {
                             ToastMessage("取消成功!");
+                            //取消  通知商家取消  模板7
+                            invite(JSON.parseObject(dataService).getString("sc_telephone"), "584f32ed-a24e-4818-99bf-191a5aa0f061");
                             Intent intent = new Intent("com.modular.booking.BookingListActivity");
                             intent.putExtra("curDate", model.getEndtime() == null ? "" : model.getEndtime());
                             startActivity(intent);
@@ -515,8 +591,8 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                 break;
             case SERVICE_SELECT:
                 try {
-                    SBMenuModel menuModel= data.getParcelableExtra("data");
-                    JSONObject object=  JSON.parseObject(menuModel.getData());
+                    SBMenuModel menuModel = data.getParcelableExtra("data");
+                    JSONObject object = JSON.parseObject(menuModel.getData());
                     //sm_userid
                     //sm_username
                     tvMessage = object.getString("st_name");
@@ -532,8 +608,8 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                 break;
             case MAN_SELECT:
                 try {
-                    SBMenuModel menuModel= data.getParcelableExtra("data");
-                    JSONObject object=  JSON.parseObject(menuModel.getData());
+                    SBMenuModel menuModel = data.getParcelableExtra("data");
+                    JSONObject object = JSON.parseObject(menuModel.getData());
                     //sm_userid
                     //sm_username
                     if (model.getIndustrycode().equals("10001")) {
@@ -541,17 +617,17 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                         tvMessage = object.getString("sm_username");
                         serviceId = object.getString("sm_userid");
                         serviceName = object.getString("sm_username");
-                    }else{
+                    } else {
                         //其它
                         tvMessage = object.getString("st_name");
                         serviceId = object.getString("st_id");
                         serviceName = object.getString("st_name");
                     }
-                  
+
                     if (tv != null) {
-                          tv.setTag(R.id.tag_id, serviceId);
-                          tv.setTag(R.id.tag_id2, serviceName);
-                      }
+                        tv.setTag(R.id.tag_id, serviceId);
+                        tv.setTag(R.id.tag_id2, serviceName);
+                    }
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
@@ -613,11 +689,23 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                         }
                     }
                     if (!ListUtils.isEmpty(selectBeens)) {
-                        Intent intent = new Intent(ct, GridSelectActivity.class)
-                                .putExtra("type", 2)
-                                .putExtra("title", title)
-                                .putParcelableArrayListExtra("data", selectBeens);
-                        startActivityForResult(intent, SERVICE_SELECT);
+                        if (model.getIndustrycode().equals("10003")) {
+                       
+                            Intent intent = new Intent(ct, GridSelectDateActivity.class)
+                                    .putExtra("type", 2)
+                                    .putExtra("title", title)
+                                    .putExtra("companyId",model.getCompanyid())
+                                    .putExtra("date",tv_food_times.getText().toString())
+                                    .putParcelableArrayListExtra("data", selectBeens);
+                            startActivityForResult(intent, SERVICE_SELECT);
+                        } else {
+                            Intent intent = new Intent(ct, GridSelectActivity.class)
+                                    .putExtra("type", 2)
+                                    .putExtra("title", title)
+                                    .putParcelableArrayListExtra("data", selectBeens);
+                            startActivityForResult(intent, SERVICE_SELECT);
+                        }
+
                     } else {
                         showToast("该商家当前无可选服务", R.color.load_error);
                     }
@@ -962,15 +1050,19 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tv_food_times.setOnClickListener(this);
                     tv_food_rooms.setOnClickListener(this);
                     tv_food_peoples.setOnClickListener(this);
+                    tv_food_peoples.setVisibility(View.GONE);
+                    addSubUtils.setVisibility(View.VISIBLE);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_food_times.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_food_times.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_food_times.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_food_rooms.setText(data.getString("sb_stname"));
                     tv_food_peoples.setText(data.getString("sb_person"));
+                    tv_food_peoples.setVisibility(View.VISIBLE);
+                    addSubUtils.setVisibility(View.GONE);
                 }
                 break;
             case "美容美发"://  美容美发
@@ -980,28 +1072,28 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tv_hair_rooms.setOnClickListener(this);
                     tv_hair_times.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_hair_times.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_hair_times.setText(data.getString("sb_starttime").substring(0,10)+" "
-                        +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_hair_times.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_hair_rooms.setText(data.getString("sb_stname"));
                 }
                 break;
             case "运动健身":
                 findViewById(R.id.ll_sport).setVisibility(View.VISIBLE);
-                
+
                 if (isEdited) {
                     tv_sport_peoples.setOnClickListener(this);
                     tv_sport_rooms.setOnClickListener(this);
                     tv_sport_time.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_sport_time.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_sport_time.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_sport_time.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_sport_rooms.setText(data.getString("sb_spname"));
                     tv_sport_peoples.setText(data.getString("sb_person"));
@@ -1014,11 +1106,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tag_hospital_doctor.setOnClickListener(this);
                     tv_hospital_time.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_hospital_time.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_hospital_time.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_hospital_time.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_hospital_rooms.setText(data.getString("sb_stname"));
                     tag_hospital_doctor.setText(data.getString("sb_username"));
@@ -1032,11 +1124,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tv_club_time.setOnClickListener(this);
                     tv_club_peoples.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_club_time.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_club_time.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_club_time.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_club_technician.setText(data.getString("sb_stname"));
                     tv_club_peoples.setText(data.getString("sb_person"));
@@ -1050,11 +1142,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tv_ktv_rooms.setOnClickListener(this);
                     tv_ktv_peoples.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_ktv_times.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_ktv_times.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_ktv_times.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_ktv_rooms.setText(data.getString("sb_spname"));
                     tv_ktv_peoples.setText(data.getString("sb_person"));
@@ -1067,11 +1159,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tag_hospital_doctor.setOnClickListener(this);
                     tv_hospital_time.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_hospital_time.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_hospital_time.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_hospital_time.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_hospital_rooms.setText(data.getString("sb_stname"));
                     tag_hospital_doctor.setText(data.getString("sb_username"));
@@ -1085,11 +1177,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tv_sport_rooms.setOnClickListener(this);
                     tv_sport_time.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_sport_time.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_sport_time.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_sport_time.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_sport_rooms.setText(data.getString("sb_spname"));
                     tv_sport_peoples.setText(data.getString("sb_person"));
@@ -1101,15 +1193,19 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tv_food_times.setOnClickListener(this);
                     tv_food_rooms.setOnClickListener(this);
                     tv_food_peoples.setOnClickListener(this);
+                    addSubUtils.setVisibility(View.VISIBLE);
+                    tv_food_peoples.setVisibility(View.GONE);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_food_times.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_food_times.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_food_times.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_food_rooms.setText(data.getString("sb_spname"));
                     tv_food_peoples.setText(data.getString("sb_person"));
+                    tv_food_peoples.setVisibility(View.VISIBLE);
+                    addSubUtils.setVisibility(View.GONE);
                 }
                 break;
             case "10004"://美容美发
@@ -1118,11 +1214,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tv_hair_rooms.setOnClickListener(this);
                     tv_hair_times.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_hair_times.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_hair_times.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_hair_times.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_hair_rooms.setText(data.getString("sb_stname"));
                 }
@@ -1135,11 +1231,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tv_club_time.setOnClickListener(this);
                     tv_club_peoples.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_club_time.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_club_time.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_club_time.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_club_technician.setText(data.getString("sb_stname"));
                     tv_club_peoples.setText(data.getString("sb_person"));
@@ -1153,11 +1249,11 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                     tv_ktv_rooms.setOnClickListener(this);
                     tv_ktv_peoples.setOnClickListener(this);
                 } else {
-                    if(StringUtil.isEmpty(data.getString("sb_starttime"))){
+                    if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
                         tv_ktv_times.setText(data.getString("sb_endtime"));
-                    }else{
-                        tv_ktv_times.setText(data.getString("sb_starttime").substring(0,10)+" "
-                                +data.getString("sb_starttime").substring(11,16)+"-"+data.getString("sb_endtime").substring(11,16));
+                    } else {
+                        tv_ktv_times.setText(data.getString("sb_starttime").substring(0, 10) + " "
+                                + data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
                     }
                     tv_ktv_rooms.setText(data.getString("sb_spname"));
                     tv_ktv_peoples.setText(data.getString("sb_person"));
@@ -1169,7 +1265,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
 
 
     private void invite(String user, final String modeid) {
-        LogUtil.d(TAG,"短信手机号:"+user+"  模板:"+modeid);
+        LogUtil.d(TAG, "短信手机号:" + user + "  模板:" + modeid);
         final String name = CommonUtil.getName();
         final String phone = user.trim().replaceAll(" ", "");
         if (!StringUtil.isMobileNumber(phone)) {
@@ -1185,9 +1281,9 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
         }, new StringJsonObjectRequest.Listener<AddAttentionResult>() {
             @Override
             public void onResponse(ObjectResult<AddAttentionResult> result) {
-              //  showToast("短信发送成功", R.color.load_submit);
+                //  showToast("短信发送成功", R.color.load_submit);
                 //ToastUtil.showToast(MyApplication.getInstance(),"短信发送成功");
-             //   Toast.makeText(MyApplication.getInstance(),"短信发送成功",Toast.LENGTH_SHORT).show();
+                //   Toast.makeText(MyApplication.getInstance(),"短信发送成功",Toast.LENGTH_SHORT).show();
 
             }
         }, AddAttentionResult.class, null) {
@@ -1246,8 +1342,8 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
 
         dialog.show();
     }
-    
-    public void showDialog(String content){
+
+    public void showDialog(String content) {
         MaterialDialog dialog = new MaterialDialog.Builder(this)
                 .content(content)
                 .positiveText("知道了")
@@ -1259,6 +1355,74 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
                 })
                 .build();
         dialog.show();
+
+    }
+    
+    //展示取消  释放
+    public void  showActionDialog(final String action){
+        MaterialDialog dialog = new MaterialDialog.Builder(this)
+                .title(getString(R.string.app_dialog_title))
+                .content("您是否要进行"+action+"操作?")
+                .positiveText(getString(R.string.sure))
+                .negativeText(getString(R.string.common_cancel))
+                .autoDismiss(false)
+                .callback(new MaterialDialog.ButtonCallback() {
+                    @Override
+                    public void onPositive(MaterialDialog dialog) {
+                        dialog.dismiss();
+                        if (action.equals("释放")){
+                            release();
+                        }
+                        if (action.equals("取消")){
+                            cancle();
+                        }
+                    }
+
+                    @Override
+                    public void onNegative(MaterialDialog dialog) {
+                       dialog.dismiss();
+                    }
+                }).build();
+        dialog.show();
                 
     }
+     
+    //商家释放预约接口
+    public void release(){
+
+        Map<String,Object> map=new HashMap<>();
+        if (!StringUtil.isEmpty(dataService)){
+            JSONObject object=JSON.parseObject(dataService);
+            map.put("sb_status","已结束");
+            map.put("sb_id",object.getString("sb_id"));
+         }
+          LogUtil.d(TAG,JSON.toJSONString(map));
+          HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL()).build();
+                 httpClient.Api().send(new HttpClient.Builder()
+                 .url("user/appServiceUpdate")
+                 .add("map",JSON.toJSONString(map))
+                 .add("token",MyApplication.getInstance().mAccessToken)
+                 .method(Method.POST)
+                 .build(),new ResultSubscriber<Object>(new ResultListener<Object>() {
+          
+                     @Override
+                     public void onResponse(Object o) {
+                         try {
+                             if (JSONUtil.validate(o.toString())) {
+                                 if ("true".equals(JSON.parseObject(o.toString()).getString("result"))) {
+                                     ToastMessage("取消成功!");
+                                     Intent intent = new Intent("com.modular.booking.BookingListActivity");
+                                     intent.putExtra("curDate", model.getEndtime() == null ? "" : model.getEndtime());
+                                     startActivity(intent);
+                                 }
+                             } else {
+                                 ToastMessage("操作失败!");
+                             }
+                         } catch (Exception e) {
+                             e.printStackTrace();
+                             ToastMessage("操作失败!");
+                         }
+                     }
+                 }));
+    }
 }

+ 74 - 6
app_modular/appbooking/src/main/java/com/modular/booking/activity/services/BServicesActivity.java

@@ -16,7 +16,6 @@ import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.PopupWindow;
 import android.widget.RelativeLayout;
-import android.widget.SimpleAdapter;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
@@ -44,6 +43,8 @@ import com.me.network.app.http.rx.ResultSubscriber;
 import com.modular.booking.R;
 import com.modular.booking.adapter.ItemBserviceHeaderAdapter;
 import com.modular.booking.adapter.ItemBserviceListAdapter;
+import com.modular.booking.adapter.ItemPopListAdapter;
+import com.modular.booking.model.ItemsSelectType1;
 import com.modular.booking.model.SBListModel;
 import com.modular.booking.model.SBMenuModel;
 import com.modular.booking.widget.ObservableScrollView;
@@ -236,10 +237,18 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
                 loadListData(pageSize);
             }
         });
+        
         mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                SBListModel model = mListAdapter.getItem((int) id);
+                final SBListModel model = mListAdapter.getItem((int) id);
+//                ItemBserviceListAdapter.ViewHolder viewHolder= (ItemBserviceListAdapter.ViewHolder) view.getTag();
+//                viewHolder.tvCash.setOnClickListener(new View.OnClickListener() {
+//                    @Override
+//                    public void onClick(View v) {
+//                        CommonUtil.phoneAction(mContext,model.getPhone());
+//                    }
+//                });
                 Intent intent = null;
                 if (model.getType().equals("会所") || model.getType().equals("美容美发")) {
                     intent = new Intent(ct, BServiceDetailActivity.class);
@@ -473,7 +482,7 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
     
     //距离popupWindow
     private PopupWindow popupWindow = null;
-
+    private int selectId;
     public void showPopupWindow(View parent) {
         View view = null;
         WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
@@ -481,43 +490,61 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
             LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
             view = layoutInflater.inflate(R.layout.pop_crm_list, null);
             ListView plist = (ListView) view.findViewById(R.id.mList);
-            SimpleAdapter adapter = new SimpleAdapter(ct, getPopData(),
-                    R.layout.item_pop_list, new String[]{"item_name"}, new int[]{R.id.tv_item_name});
+//            SelectSimpleAdapter adapter = new SelectSimpleAdapter(ct, getPopData(),
+//                    R.layout.item_pop_list);
+            List<ItemsSelectType1> datas=  getItemsSelect();
+            final ItemPopListAdapter adapter=new ItemPopListAdapter(ct,datas);
             plist.setAdapter(adapter);
+            Drawable drawable = getResources().getDrawable(R.drawable.selector_check_items);
+            plist.setSelector(drawable);
             plist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                 @Override
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                     popupWindow.dismiss();
                     pageSize=1;
+                    selectId=position;
+                    adapter.setSelectId(selectId);
+                    adapter.notifyDataSetChanged();
+//                    ItemPopListAdapter.ViewHolder viewHolder= (ItemPopListAdapter.ViewHolder) view.getTag();
+//                    adapter.getItem(position).setSelected(!viewHolder.checkBox.isChecked());
+//                    adapter.notifyDataSetChanged();
                     switch (position) {
                         case 0:
                            loadSeachData("500",pageSize);
+                           tv_distance.setText("0.5km");
                             break;
                         case 1:
                             loadSeachData("1000",pageSize);
+                            tv_distance.setText("1km");
                             break;
                         case 2:
-                            
                             loadSeachData("2000",pageSize);
+                            tv_distance.setText("2km");
                             break;
                         case 3:
                             loadSeachData("5000",pageSize);
+                            tv_distance.setText("5km");
                             break;
                         case 4:
                             loadSeachData("10000",pageSize);
+                            tv_distance.setText("10km");
                             break;
                         case 5:
                             loadSeachData("20000",pageSize);
+                            tv_distance.setText("20km");
                             break;
                         case 6:
                             loadSeachData("30000",pageSize);
+                            tv_distance.setText("30km");
                             break;
                         case 7:
                           loadListData(pageSize);
+                            tv_distance.setText("全部");
                             break;
                         default:
                             break;
                     }
+                
                 }
             });
             popupWindow = new PopupWindow(view, windowManager.getDefaultDisplay().getWidth() / 3, windowManager.getDefaultDisplay().getHeight() / 3);
@@ -537,6 +564,47 @@ public class BServicesActivity extends OABaseActivity implements View.OnClickLis
         popupWindow.showAsDropDown(parent, windowManager.getDefaultDisplay().getWidth(), 0);
     }
 
+    
+    private List<ItemsSelectType1> getItemsSelect(){
+        List<ItemsSelectType1> list=new ArrayList<>();
+        ItemsSelectType1 model=new ItemsSelectType1();
+        model.setName("0.5km");
+        list.add(model);
+
+        model=new ItemsSelectType1();
+        model.setName("1km");
+        list.add(model);
+
+        model=new ItemsSelectType1();
+        model.setName("2km");
+        list.add(model);
+
+
+        model=new ItemsSelectType1();
+        model.setName("5km");
+        list.add(model);
+
+
+        model=new ItemsSelectType1();
+        model.setName("10km");
+        list.add(model);
+
+        model=new ItemsSelectType1();
+        model.setName("20km");
+        list.add(model);
+
+        model=new ItemsSelectType1();
+        model.setName("30km");
+        list.add(model);
+
+        model=new ItemsSelectType1();
+        model.setName("全部");
+        list.add(model);
+        
+        return  list;
+        
+    }
+     
     private List<Map<String, Object>> getPopData() {
         List<Map<String, Object>> list = new ArrayList<>();
         Map<String, Object> map = new HashMap<>();

+ 65 - 8
app_modular/appbooking/src/main/java/com/modular/booking/activity/utils/GridSelectActivity.java

@@ -1,17 +1,19 @@
 package com.modular.booking.activity.utils;
 
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
-import android.widget.AdapterView;
 import android.widget.GridView;
 
 import com.alibaba.fastjson.JSON;
 import com.common.LogUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
+import com.core.app.AppConstant;
 import com.core.base.OABaseActivity;
 import com.core.model.SelectBean;
+import com.modular.apputils.activity.SingleImagePreviewActivity;
 import com.modular.booking.R;
 import com.modular.booking.adapter.ItemRoomsSelectAdapter;
 import com.modular.booking.model.SBMenuModel;
@@ -23,9 +25,10 @@ import java.util.List;
   * @desc:功能界面  表格选择界面
   * @author:Arison on 2017/11/1
   */
-public class GridSelectActivity extends OABaseActivity {
+public class GridSelectActivity extends OABaseActivity{
     ItemRoomsSelectAdapter itemAdapter;
     private GridView gvTopic;
+    private Context mContext;
     private List<SBMenuModel> menuModels=new ArrayList<>();
     ArrayList<SelectBean> selectBeens = new ArrayList<SelectBean>();
 
@@ -34,6 +37,7 @@ public class GridSelectActivity extends OABaseActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_grid_select);
         gvTopic = (GridView) findViewById(R.id.gv_topic);
+        mContext=this;
         initView();
         initEvent();
     }
@@ -65,14 +69,67 @@ public class GridSelectActivity extends OABaseActivity {
     }
     private static final String TAG = "GridSelectActivity";
     public void initEvent(){
-        gvTopic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+        itemAdapter.setmOnBookClickListener(new ItemRoomsSelectAdapter.OnBookClickListener() {
             @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                ItemRoomsSelectAdapter.ViewHolder menuModel = (ItemRoomsSelectAdapter.ViewHolder) view.getTag();
-                LogUtil.d(TAG ,JSON.toJSONString(menuModel.model));
-                setResult(0x21,new Intent().putExtra("data",menuModel.model));
-                finish();
+            public void onBookClick(View view, int position) {
+                SBMenuModel menuModel = menuModels.get(position);
+                LogUtil.d(TAG, "按钮点击事件!");
+                ToastMessage("" + menuModel.getDesc() + menuModel.getTitle());
+
+                if (menuModel.isBooking()) {
+                    ToastMessage("包间已满,不可预订!");
+                } else {
+                    setResult(0x21, new Intent().putExtra("data", menuModel));
+                    finish();
+                }
+            }
+        });
+
+        itemAdapter.setmOnImageClickListener(new ItemRoomsSelectAdapter.OnImageClickListener() {
+            @Override
+            public void onImageClick(View view, int position) {
+                SBMenuModel menuModel = menuModels.get(position);
+                LogUtil.d(TAG, "图片点击事件!");
+                String loginUserId = menuModel.getUrl();
+                Intent intent = new Intent(activity, SingleImagePreviewActivity.class);
+                intent.putExtra(AppConstant.EXTRA_IMAGE_URI, loginUserId);
+                startActivity(intent);
             }
         });
+//        gvTopic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+//            @Override
+//            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+//                 final ItemRoomsSelectAdapter.ViewHolder menuModel = (ItemRoomsSelectAdapter.ViewHolder) view.getTag();
+//                menuModel.tvBookAction.setOnClickListener(new View.OnClickListener() {
+//                    @Override
+//                    public void onClick(View v) {
+////                        ToastMessage("点击事件!");
+//                        LogUtil.d(TAG,"按钮点击事件!");
+//                        ToastMessage(""+menuModel.model.getDesc()+menuModel.model.getTitle());
+//
+//                        if (menuModel.model.isBooking()){
+//                            ToastMessage("包间已满,不可预订!");
+//                        }else{
+//                            setResult(0x21,new Intent().putExtra("data",menuModel.model));
+//                            finish();
+//                        }
+//                    }
+//                });
+////                
+//                menuModel.ivItem.setOnClickListener(new View.OnClickListener() {
+//                    @Override
+//                    public void onClick(View v) {
+//                        LogUtil.d(TAG,"图片点击事件!");
+//                        String loginUserId =menuModel.model.getUrl();
+//                        Intent intent = new Intent(activity, SingleImagePreviewActivity.class);
+//                        intent.putExtra(AppConstant.EXTRA_IMAGE_URI, loginUserId);
+//                        startActivity(intent);
+//                    }
+//                });
+//               
+//               
+//            }
+//        });
+       
     }
 }

+ 310 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/utils/GridSelectDateActivity.java

@@ -0,0 +1,310 @@
+package com.modular.booking.activity.utils;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.GridView;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.DateFormatUtil;
+import com.common.data.ListUtils;
+import com.common.data.StringUtil;
+import com.core.app.AppConstant;
+import com.core.app.Constants;
+import com.core.app.MyApplication;
+import com.core.base.OABaseActivity;
+import com.core.model.SelectBean;
+import com.core.widget.view.selectcalendar.SelectCalendarActivity;
+import com.litesuits.orm.db.annotation.Ignore;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.ResultListener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.modular.apputils.activity.SingleImagePreviewActivity;
+import com.modular.booking.R;
+import com.modular.booking.adapter.ItemRoomsSelectAdapter;
+import com.modular.booking.model.SBMenuModel;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @desc:功能界面 表格选择界面
+ * 自定义头部
+ * @author:Arison on 2017/11/1
+ */
+public class GridSelectDateActivity extends OABaseActivity {
+    ItemRoomsSelectAdapter itemAdapter;
+    private GridView gvTopic;
+    private List<SBMenuModel> menuModels = new ArrayList<>();
+    ArrayList<SelectBean> selectBeens = new ArrayList<SelectBean>();
+    private TextView tvTopDate;
+    private ImageView back;
+    private TextView tvVStart;
+    private TextView tvVAfter;
+    private String companyId;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_grid_select);
+        gvTopic = (GridView) findViewById(R.id.gv_topic);
+        initView();
+        initEvent();
+    }
+
+    private void initView() {
+        View view = LayoutInflater.from(ct).inflate(R.layout.action_service_room, null);
+        tvTopDate = (TextView) view.findViewById(R.id.tvTopDate);
+        back = (ImageView) view.findViewById(R.id.book_service_search_back);
+        tvVStart = (TextView) view.findViewById(R.id.tvVStart);
+        tvVAfter = (TextView) view.findViewById(R.id.tvVAfter);
+        
+        ActionBar bar = this.getSupportActionBar();
+        bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
+        bar.setBackgroundDrawable(getResources().getDrawable(R.color.antionbarcolor));
+        bar.setCustomView(view);
+      
+        tvVStart.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String date =tvTopDate.getText().toString();
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(DateFormatUtil.getDate4StrDate(date, "yyyy-MM-dd HH:mm"));
+                calendar.add( Calendar.DATE,-1);//把日期往后增加一天.整数往后推,负数往前移动 
+                System.out.println(DateFormatUtil.getStrDate4Date(calendar.getTime(), "yyyy-MM-dd HH:mm"));
+                String curTime= DateFormatUtil.getStrDate4Date(calendar.getTime(), "yyyy-MM-dd HH:mm");
+                if (curTime.compareTo(DateFormatUtil.getStrDate4Date(new Date(),"yyyy-MM-dd HH:mm"))<0){
+                    ToastMessage("不能选择过去的时间");
+                    return;
+                }
+                tvTopDate.setText(curTime);
+                getBookingDataState(curTime,ServiceUtils.getCodeDateByService(curTime));
+            }
+        });
+        tvVAfter.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String date =tvTopDate.getText().toString();
+                Calendar calendar = Calendar.getInstance();
+                calendar.setTime(DateFormatUtil.getDate4StrDate(date, "yyyy-MM-dd HH:mm"));
+                calendar.add( Calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动 
+                System.out.println(DateFormatUtil.getStrDate4Date(calendar.getTime(), "yyyy-MM-dd HH:mm"));
+                String curTime= DateFormatUtil.getStrDate4Date(calendar.getTime(), "yyyy-MM-dd HH:mm");
+                tvTopDate.setText(curTime);
+                getBookingDataState(curTime,ServiceUtils.getCodeDateByService(curTime));
+            }
+        });
+        back.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                onBackPressed();
+            }
+        });
+        if (getIntent() != null) {
+            selectBeens = getIntent().getParcelableArrayListExtra("data");
+            getSupportActionBar().setTitle(getIntent().getStringExtra("title"));
+            companyId=getIntent().getStringExtra("companyId");
+            String date =getIntent().getStringExtra("date");
+            tvTopDate.setText(date);
+            getBookingDataState(date,ServiceUtils.getCodeDateByService(date));
+            LogUtil.d(TAG,JSON.toJSONString(selectBeens));
+            if (!ListUtils.isEmpty(selectBeens)) {
+                for (int i = 0; i < selectBeens.size(); i++) {
+                    SelectBean selectBean = selectBeens.get(i);
+                    com.alibaba.fastjson.JSONObject object = JSON.parseObject(selectBean.getJson());
+                    SBMenuModel menuModel = new SBMenuModel();
+                    menuModel.setUrl(object.getString("st_imageurl"));
+                    if (StringUtil.isEmpty(object.getString("st_name"))) {
+                        menuModel.setTitle(object.getString("sm_username"));//医生
+                    } else {
+                        menuModel.setTitle(object.getString("st_name"));
+                    }
+                    menuModel.setCode(object.getString("sm_userid"));
+                    menuModel.setData(object.toJSONString());
+                    menuModels.add(menuModel);
+                }
+            }
+        }
+        LogUtil.d("GridSelectActivity", "models:" + JSON.toJSONString(menuModels));
+        itemAdapter = new ItemRoomsSelectAdapter(mContext, menuModels);
+        gvTopic.setAdapter(itemAdapter);
+
+        itemAdapter.setmOnBookClickListener(new ItemRoomsSelectAdapter.OnBookClickListener() {
+            @Override
+            public void onBookClick(View view, int position) {
+                SBMenuModel menuModel = menuModels.get(position);
+                LogUtil.d(TAG, "按钮点击事件!");
+                ToastMessage("" + menuModel.getDesc() + menuModel.getTitle());
+
+                if (menuModel.isBooking()) {
+                    ToastMessage("包间已满,不可预订!");
+                } else {
+                    setResult(0x21, new Intent().putExtra("data", menuModel));
+                    finish();
+                }
+            }
+        });
+
+        itemAdapter.setmOnImageClickListener(new ItemRoomsSelectAdapter.OnImageClickListener() {
+            @Override
+            public void onImageClick(View view, int position) {
+                SBMenuModel menuModel = menuModels.get(position);
+                LogUtil.d(TAG, "图片点击事件!");
+                String loginUserId = menuModel.getUrl();
+                Intent intent = new Intent(activity, SingleImagePreviewActivity.class);
+                intent.putExtra(AppConstant.EXTRA_IMAGE_URI, loginUserId);
+                startActivity(intent);
+            }
+        });
+    }
+
+    private static final String TAG = "GridSelectActivity";
+
+    public void initEvent() {
+        tvTopDate.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                //弹出日期
+                startActivityForResult(new Intent(mContext, SelectCalendarActivity.class)
+                        .putExtra("hasMenu", false)
+                        .putExtra("bookType", "0")
+                        .putExtra("type", 3), 0x01);
+            }
+        });
+        /*gvTopic.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                final ItemRoomsSelectAdapter.ViewHolder menuModel = (ItemRoomsSelectAdapter.ViewHolder) view.getTag();
+                menuModel.tvBookAction.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+//                        ToastMessage("点击事件!");
+                        LogUtil.d(TAG, "按钮点击事件!");
+                        ToastMessage("" + menuModel.model.getDesc() + menuModel.model.getTitle());
+
+                        if (menuModel.model.isBooking()) {
+                            ToastMessage("包间已满,不可预订!");
+                        } else {
+                            setResult(0x21, new Intent().putExtra("data", menuModel.model));
+                            finish();
+                        }
+                    }
+                });
+//                
+                menuModel.ivItem.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        LogUtil.d(TAG, "图片点击事件!");
+                        String loginUserId = menuModel.model.getUrl();
+                        Intent intent = new Intent(activity, SingleImagePreviewActivity.class);
+                        intent.putExtra(AppConstant.EXTRA_IMAGE_URI, loginUserId);
+                        startActivity(intent);
+                    }
+                });
+
+
+            }
+        });*/
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (data == null) {
+            return;
+        }
+        switch (requestCode) {
+            case 0x01:
+                try {
+                    String startTime = data.getStringExtra("startDate");
+                    String displayDate = startTime;
+                    tvTopDate.setText(displayDate);
+                    getBookingDataState(displayDate
+                    ,ServiceUtils.getCodeDateByService(displayDate));
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                break;
+        }
+    }
+
+
+    public void getBookingDataState(String date, final int state) {
+        date=DateFormatUtil.getStrDate4Date(DateFormatUtil.getDate4StrDate(date, "yyyy-MM-dd"), "yyyyMMdd");
+        LogUtil.d(TAG, "date:" + date+" +state:"+state);
+        //http://113.105.74.135:8092/user/appServiceBusytime?yearmonth=20171109&token=8a07b517fdd94248b7f00d120ab29502&commonid=0&type=餐饮&companyid=10002&client=Android%20Client
+        HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).build();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("user/appServiceBusytime")
+                .add("yearmonth", date)
+                .add("commonid", "0")
+                .add("type","餐饮")
+                .add("companyid",companyId)
+                .add("token", MyApplication.getInstance().mAccessToken)
+                .method(Method.GET)
+                .build(), new ResultSubscriber<Object>(new ResultListener<Object>() {
+
+            @Override
+            public void onResponse(Object o) {
+                try {
+                    LogUtil.d(TAG, o.toString());
+                    LogUtil.d(TAG,JSON.toJSONString(menuModels));
+                    JSONArray reslut = JSON.parseObject(o.toString()).getJSONArray("reslut");
+               
+                    if (reslut != null) {
+                        for (int i = 0; i < reslut.size(); i++) {
+                            JSONObject object = reslut.getJSONObject(i);
+                            //名字
+                            String sb_spname=object.getString("sb_spname");
+                            //时间状态 1,2,3
+                            String  sb_endtime=object.getString("sb_endtime");
+
+                            for (int j = 0; j <menuModels.size() ; j++) {
+                                SBMenuModel menuModel=menuModels.get(j);
+                                if (menuModel.getTitle().equals(sb_spname)){
+                                    if (sb_endtime.equals(String.valueOf(state))){
+                                        menuModel.setBooking(true);//已经预约
+                                    }else{
+                                        menuModel.setBooking(false);//未被预约
+                                    }
+                                }
+                            }
+                            
+                        }
+                        if (reslut.size()==0){
+                            //{"reslut":[]}  全部可以预约
+                            for (int i = 0; i <menuModels.size() ; i++) {
+                                menuModels.get(i).setBooking(false);
+                            }
+                        }
+                        LogUtil.d(TAG,JSON.toJSONString(menuModels));
+                        itemAdapter.notifyDataSetChanged();
+                    }else{
+                      
+                        //{"reslut":[]}  全部可以预约
+                        for (int i = 0; i <menuModels.size() ; i++) {
+                            menuModels.get(i).setBooking(false);
+                        }
+                        LogUtil.d(TAG,"[]:"+JSON.toJSONString(menuModels));
+                        itemAdapter.notifyDataSetChanged();
+                    }
+
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+
+
+            }
+        }));
+    }
+}

+ 29 - 0
app_modular/appbooking/src/main/java/com/modular/booking/activity/utils/ServiceUtils.java

@@ -0,0 +1,29 @@
+package com.modular.booking.activity.utils;
+
+import com.common.data.DateFormatUtil;
+
+import java.util.Calendar;
+
+/**
+ * Created by Arison on 2017/11/9.
+ */
+
+public class ServiceUtils {
+
+    public static int  getCodeDateByService(String date){
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(DateFormatUtil.getDate4StrDate(date, "yyyy-MM-dd HH:mm"));
+        int hour = cal.get(Calendar.HOUR_OF_DAY);
+        if (hour >= 0 && hour < 12) {
+            System.out.print("早上好");
+            return 1;
+        } else if (hour >= 12 && hour < 18) {
+            System.out.print("下午好");
+            return 2;
+        } else if (hour >= 18 && hour < 24) {
+            System.out.print("晚上");
+            return 3;
+        }
+        return 0;
+    }
+}

+ 3 - 3
app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemBserviceHeaderAdapter.java

@@ -69,9 +69,9 @@ public class ItemBserviceHeaderAdapter extends BaseAdapter {
 
     public class ViewHolder {
         public SBMenuModel menuModel;
-        private TextView tvTitle;
-        private TextView tvDesc;
-        private CircleImageView ivMenu;
+        public TextView tvTitle;
+        public TextView tvDesc;
+        public CircleImageView ivMenu;
 
         public ViewHolder(View view) {
             tvTitle = (TextView) view.findViewById(R.id.tv_title);

+ 9 - 2
app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemBserviceListAdapter.java

@@ -14,6 +14,7 @@ import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.core.utils.CommonUtil;
 import com.core.utils.helper.AvatarHelper;
 import com.modular.booking.R;
 import com.modular.booking.activity.services.BServiceAddActivity;
@@ -79,6 +80,12 @@ public class ItemBserviceListAdapter extends BaseAdapter {
         holder.tvType.setText(object.getType());
         holder.tvDistance.setText(object.getDistance());
         holder.tvCash.setText(object.getCash());
+        holder.tvCash.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                CommonUtil.phoneAction(context,object.getPhone());
+            }
+        });
         holder.model=object;
         holder.btBook.setOnClickListener(new View.OnClickListener() {
             @Override
@@ -96,14 +103,14 @@ public class ItemBserviceListAdapter extends BaseAdapter {
         });
     }
 
-    protected class ViewHolder {
+    public class ViewHolder {
         private SBListModel model;
         private ImageView ivIcon;
         private TextView tvTitle;
         private TextView tvType;
         private TextView tvStart;
         private TextView tvDistance;
-        private TextView tvCash;
+        public TextView tvCash;
         private Button btBook;
 
         public ViewHolder(View view) {

+ 90 - 0
app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemPopListAdapter.java

@@ -0,0 +1,90 @@
+package com.modular.booking.adapter;
+
+/**
+ * Created by Arison on 2017/11/8.
+ */
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.CheckBox;
+import android.widget.TextView;
+
+import com.modular.booking.R;
+import com.modular.booking.model.ItemsSelectType1;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ItemPopListAdapter extends BaseAdapter {
+
+    private List<ItemsSelectType1> objects = new ArrayList<ItemsSelectType1>();
+    private int selectId=7;
+    private Context context;
+    private LayoutInflater layoutInflater;
+
+    public int getSelectId() {
+        return selectId;
+    }
+
+    public void setSelectId(int selectId) {
+        this.selectId = selectId;
+    }
+
+    public ItemPopListAdapter(Context context, List<ItemsSelectType1> data) {
+        this.context = context;
+        this.objects=data;
+        this.layoutInflater = LayoutInflater.from(context);
+    }
+
+    @Override
+    public int getCount() {
+        return objects.size();
+    }
+
+    @Override
+    public ItemsSelectType1 getItem(int position) {
+        return objects.get(position);
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = layoutInflater.inflate(R.layout.item_pop_list_select, null);
+            convertView.setTag(new ViewHolder(convertView));
+        }
+        initializeViews((ItemsSelectType1)getItem(position), (ViewHolder) convertView.getTag(),position);
+        return convertView;
+    }
+
+    private void initializeViews(ItemsSelectType1 object, ViewHolder holder,int position) {
+       // holder.tvItemName.setSelected(object.isSelected());
+        holder.tvItemName.setText(object.getName());
+       if (selectId==position) {
+           holder.checkBox.setChecked(true);
+       }else{
+           holder.checkBox.setChecked(false);
+       }
+       holder.checkBox.setFocusable(false);
+       holder.checkBox.setClickable(false);
+    }
+
+    public class ViewHolder {
+//        private LinearLayout llPopTop;
+        public TextView tvItemName;
+        public CheckBox checkBox;
+
+        public ViewHolder(View view) {
+//            llPopTop = (LinearLayout) view.findViewById(R.id.ll_pop_top);
+            tvItemName = (TextView) view.findViewById(R.id.tv_item_name);
+            checkBox= (CheckBox) view.findViewById(R.id.cb_select);
+        }
+    }
+}

+ 60 - 14
app_modular/appbooking/src/main/java/com/modular/booking/adapter/ItemRoomsSelectAdapter.java

@@ -23,10 +23,20 @@ public class ItemRoomsSelectAdapter extends BaseAdapter {
 
     private Context context;
     private LayoutInflater layoutInflater;
+    private OnImageClickListener mOnImageClickListener;
+    private OnBookClickListener mOnBookClickListener;
 
-    public ItemRoomsSelectAdapter(Context context,List<SBMenuModel> data) {
+    public void setmOnImageClickListener(OnImageClickListener mOnImageClickListener) {
+        this.mOnImageClickListener = mOnImageClickListener;
+    }
+
+    public void setmOnBookClickListener(OnBookClickListener mOnBookClickListener) {
+        this.mOnBookClickListener = mOnBookClickListener;
+    }
+
+    public ItemRoomsSelectAdapter(Context context, List<SBMenuModel> data) {
         this.context = context;
-        this.objects=data;
+        this.objects = data;
         this.layoutInflater = LayoutInflater.from(context);
     }
 
@@ -51,31 +61,67 @@ public class ItemRoomsSelectAdapter extends BaseAdapter {
             convertView = layoutInflater.inflate(R.layout.item_rooms_select, null);
             convertView.setTag(new ViewHolder(convertView));
         }
-        initializeViews((SBMenuModel)getItem(position), (ViewHolder) convertView.getTag());
+        initializeViews((SBMenuModel) getItem(position), (ViewHolder) convertView.getTag(), position);
         return convertView;
     }
 
-    private void initializeViews(SBMenuModel object, ViewHolder holder) {
-        if(StringUtil.isEmpty(object.getUrl())){
-            AvatarHelper.getInstance().display(object.getCode(), holder.ivItem, true,true);
-        }else{
+    private void initializeViews(SBMenuModel object, ViewHolder holder, final int position) {
+        if (StringUtil.isEmpty(object.getUrl())) {
+            AvatarHelper.getInstance().display(object.getCode(), holder.ivItem, true, true);
+        } else {
             AvatarHelper.getInstance().display(object.getUrl(), holder.ivItem, true);
         }
         holder.tvName.setText(object.getTitle());
-        holder.model=object;
+        holder.model = object;
+        if (object.isBooking()) {
+            holder.tvBookAction.setText("已预定");
+            holder.tvBookAction.setBackgroundResource(R.color.item_line);
+        } else {
+            holder.tvBookAction.setBackgroundResource(R.drawable.bg_bule_btn);
+            holder.tvBookAction.setText("预定");
+        }
+
+        holder.ivItem.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mOnImageClickListener != null) {
+                    mOnImageClickListener.onImageClick(v, position);
+                }
+            }
+        });
+
+        holder.tvBookAction.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if (mOnBookClickListener != null) {
+                    mOnBookClickListener.onBookClick(v, position);
+                }
+            }
+        });
+
     }
 
     public class ViewHolder {
-        private RelativeLayout rlItem;
-        private ImageView ivItem;
+        public RelativeLayout rlImage;
+        public ImageView ivItem;
         private TextView tvName;
-       public SBMenuModel model;
+        public TextView tvBookAction;
+        public SBMenuModel model;
 
         public ViewHolder(View view) {
-            rlItem = (RelativeLayout) view.findViewById(R.id.rlItem);
+            rlImage = (RelativeLayout) view.findViewById(R.id.rlImage);
             tvName = (TextView) view.findViewById(R.id.tvName);
-            ivItem=(ImageView) view.findViewById(R.id.ivItem);
-            
+            ivItem = (ImageView) view.findViewById(R.id.ivItem);
+            tvBookAction = (TextView) view.findViewById(R.id.tvBookAction);
+
         }
     }
+
+    public interface OnImageClickListener {
+        void onImageClick(View view, int position);
+    }
+
+    public interface OnBookClickListener {
+        void onBookClick(View view, int position);
+    }
 }

+ 48 - 0
app_modular/appbooking/src/main/java/com/modular/booking/adapter/SelectSimpleAdapter.java

@@ -0,0 +1,48 @@
+package com.modular.booking.adapter;
+
+import android.app.Activity;
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.SimpleAdapter;
+import android.widget.TextView;
+
+import com.modular.booking.R;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Arison on 2017/11/7.
+ */
+@Deprecated
+public class SelectSimpleAdapter extends SimpleAdapter {
+    private int mResource;
+    private Context context;
+    private Activity activity;
+    private List<? extends Map<String, ?>> mData;
+
+    public SelectSimpleAdapter(Context context,
+                               List<? extends Map<String, ?>> data, int resource) {
+        super(context, data, resource, null, null);
+        this.mResource = resource;
+        this.context=context;
+        this.activity=(Activity) context;
+        this.mData = data;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup group) {
+        LayoutInflater layoutInflater =activity.getLayoutInflater();
+        View view = layoutInflater.inflate(mResource, null);
+        TextView text = (TextView) view.findViewById(R.id.tv_item_name);
+        text.setText(mData.get(position).get("item_name").toString());
+        if (position == 2) {
+            text.setTextColor(activity.getResources().getColor(R.color.red));
+            text.setSelected(true);
+        }
+
+        return view;
+    }
+}

+ 26 - 0
app_modular/appbooking/src/main/java/com/modular/booking/model/ItemsSelectType1.java

@@ -0,0 +1,26 @@
+package com.modular.booking.model;
+
+/**
+ * Created by Arison on 2017/11/8.
+ */
+public class ItemsSelectType1 {
+    
+    private String name;//名称
+    private boolean selected=false;//是否被选中
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public boolean isSelected() {
+        return selected;
+    }
+
+    public void setSelected(boolean selected) {
+        this.selected = selected;
+    }
+}

+ 11 - 0
app_modular/appbooking/src/main/java/com/modular/booking/model/SBMenuModel.java

@@ -17,6 +17,7 @@ public class SBMenuModel implements Parcelable {
     private String desc;
     private String url;
     private String data;
+    private boolean isBooking=false;//是否可以预约
 
     public int getIcon() {
         return icon;
@@ -74,6 +75,14 @@ public class SBMenuModel implements Parcelable {
         this.data = data;
     }
 
+    public boolean isBooking() {
+        return isBooking;
+    }
+
+    public void setBooking(boolean booking) {
+        isBooking = booking;
+    }
+
     public SBMenuModel() {
     }
 
@@ -91,6 +100,7 @@ public class SBMenuModel implements Parcelable {
         dest.writeString(this.desc);
         dest.writeString(this.url);
         dest.writeString(this.data);
+        dest.writeByte(this.isBooking ? (byte) 1 : (byte) 0);
     }
 
     protected SBMenuModel(Parcel in) {
@@ -101,6 +111,7 @@ public class SBMenuModel implements Parcelable {
         this.desc = in.readString();
         this.url = in.readString();
         this.data = in.readString();
+        this.isBooking = in.readByte() != 0;
     }
 
     public static final Creator<SBMenuModel> CREATOR = new Creator<SBMenuModel>() {

+ 361 - 0
app_modular/appbooking/src/main/java/com/modular/booking/widget/AddSubUtils.java

@@ -0,0 +1,361 @@
+package com.modular.booking.widget;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.os.Build;
+import android.support.annotation.RequiresApi;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.text.method.DigitsKeyListener;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+
+import com.modular.booking.R;
+
+
+/**
+ * Created by 贾梦飞 on 2017/8/10 10:55.
+ * QQ:821176301
+ * 微信:j821176301
+ * desc:类似购物车功能的增加和加减
+ */
+
+public class AddSubUtils extends LinearLayout implements View.OnClickListener, TextWatcher {
+
+    private int mBuyMax = Integer.MAX_VALUE;  // 最大购买数量,默认最大值
+    private int inputValue = 1; //购买数量
+    private int inventory = Integer.MAX_VALUE; //商品库存,默认最大值
+    private int mBuyMin = 1;// 商品最小购买数量,默认值为1
+    private int mStep = 1; // 步长--每次增加的个数,默认是1
+    private int mPosition = 0; // 设置改变的位置,默认是0; //集合数据中会用到
+
+    private OnWarnListener mOnWarnListener;
+    private OnChangeValueListener mOnChangeValueListener;
+
+    private EditText etInput;
+    private ImageView icPlus;
+    private ImageView icMinus;
+
+
+    public AddSubUtils(Context context) {
+        this(context, null);
+    }
+
+    @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
+    public AddSubUtils(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
+    public AddSubUtils(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init(context, attrs, defStyleAttr);
+    }
+
+    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
+    private void init(Context context, AttributeSet attrs, int defStyleAttr) {
+        //得到属性
+        if (attrs != null) {
+            TypedArray typeArray = getContext().obtainStyledAttributes(attrs, R.styleable.AddSubUtils);
+            boolean editable = typeArray.getBoolean(R.styleable.AddSubUtils_editable, true);
+            String location = typeArray.getString(R.styleable.AddSubUtils_location);
+            // 左右两面的宽度
+            int ImageWidth = typeArray.getDimensionPixelSize(R.styleable.AddSubUtils_ImageWidth, -1);
+            // 中间内容框的宽度
+            int contentWidth = typeArray.getDimensionPixelSize(R.styleable.AddSubUtils_contentWidth, -1);
+            // 中间字体的大小
+            int contentTextSize = typeArray.getDimensionPixelSize(R.styleable.AddSubUtils_contentTextSize, -1);
+            // 中间字体的颜色
+            int contentTextColor = typeArray.getColor(R.styleable.AddSubUtils_contentTextColor, 0xff000000);
+            // 整个控件的background
+            Drawable background = typeArray.getDrawable(R.styleable.AddSubUtils_all_background);
+            // 左面控件的背景
+            Drawable leftBackground = typeArray.getDrawable(R.styleable.AddSubUtils_leftBackground);
+            // 右面控件的背景
+            Drawable rightBackground = typeArray.getDrawable(R.styleable.AddSubUtils_rightBackground);
+            // 中间控件的背景
+            Drawable contentBackground = typeArray.getDrawable(R.styleable.AddSubUtils_contentBackground);
+            // 左面控件的资源
+            Drawable leftResources = typeArray.getDrawable(R.styleable.AddSubUtils_leftResources);
+            // 右面控件的资源
+            Drawable rightResources = typeArray.getDrawable(R.styleable.AddSubUtils_rightResources);
+            // 资源回收
+            typeArray.recycle();
+
+            if("start".equals(location)) {
+                //把布局和当前类形成整体
+                LayoutInflater.from(context).inflate(R.layout.add_sub_start_layout, this);
+            }else if("end".equals(location)) {
+                //把布局和当前类形成整体
+                LayoutInflater.from(context).inflate(R.layout.add_sub_end_layout, this);
+            }else {
+                //把布局和当前类形成整体
+                LayoutInflater.from(context).inflate(R.layout.add_sub_layout, this);
+            }
+
+            icPlus = (ImageView) findViewById(R.id.ic_plus);
+            icMinus = (ImageView) findViewById(R.id.ic_minus);
+            etInput = (EditText) findViewById(R.id.et_input);
+
+            icPlus.setOnClickListener(this);
+            icMinus.setOnClickListener(this);
+            etInput.addTextChangedListener(this);
+
+            setEditable(editable);
+            etInput.setTextColor(contentTextColor);
+
+            // 设置两边按钮的宽度
+            if (ImageWidth > 0) {
+                LayoutParams textParams = new LayoutParams(ImageWidth, LayoutParams.MATCH_PARENT);
+                icPlus.setLayoutParams(textParams);
+                icMinus.setLayoutParams(textParams);
+            }
+
+            // 设置中间输入框的宽度
+            if (contentWidth > 0) {
+                LayoutParams textParams = new LayoutParams(contentWidth, LayoutParams.MATCH_PARENT);
+                etInput.setLayoutParams(textParams);
+            }
+            if (contentTextColor > 0) {
+                etInput.setTextSize(contentTextColor);
+            }
+            if(contentTextSize > 0) {
+                etInput.setTextSize(contentTextSize);
+            }
+            if (background != null) {
+                setBackgroundDrawable(background);
+            } else {
+                setBackgroundResource(R.drawable.addsubutils_add_sub_bg);
+            }
+
+            if (contentBackground != null) {
+                etInput.setBackground(contentBackground);
+            }
+
+            if(leftBackground != null) {
+                icMinus.setBackground(leftBackground);
+            }
+
+            if (rightBackground != null){
+                icPlus.setBackground(rightBackground);
+            }
+            if (leftResources != null){
+                icMinus.setImageDrawable(leftResources);
+            }
+            if(rightResources != null) {
+                icPlus.setImageDrawable(rightResources);
+            }
+        }
+    }
+
+    private void setEditable(boolean editable) {
+        if (editable) {
+            etInput.setFocusable(true);
+            etInput.setKeyListener(new DigitsKeyListener());
+        } else {
+            etInput.setFocusable(false);
+            etInput.setKeyListener(null);
+        }
+    }
+
+    @Override
+    public void onClick(View view) {
+        int id = view.getId();
+        if (id == R.id.ic_plus) {
+            // 加
+            if (inputValue < Math.min(mBuyMax, inventory)) {
+                inputValue += mStep;
+                //正常添加
+                etInput.setText("" + inputValue);
+            } else if (inventory < mBuyMax) {
+                //库存不足
+                warningForInventory();
+            } else {
+                //超过最大购买数
+                warningForBuyMax();
+            }
+        } else if (id == R.id.ic_minus) {
+            // 减
+            if (inputValue > mBuyMin) {
+                inputValue -= mStep;
+                etInput.setText(inputValue + "");
+            } else {
+                // 低于最小购买数
+                warningForBuyMin();
+            }
+        } else if (id == R.id.et_input) {
+            // 输入框
+            etInput.setSelection(etInput.getText().toString().length());
+        }
+    }
+
+    /**
+     * 低于最小购买数
+     * Warning for buy min.
+     */
+    private void warningForBuyMin() {
+        if (mOnWarnListener != null) mOnWarnListener.onWarningForBuyMin(mBuyMin);
+    }
+
+    /**
+     * 超过的最大购买数限制
+     * Warning for buy max.
+     */
+    private void warningForBuyMax() {
+        if (mOnWarnListener != null) mOnWarnListener.onWarningForBuyMax(mBuyMax);
+    }
+
+    /**
+     * 超过的库存限制
+     * Warning for inventory.
+     */
+    private void warningForInventory() {
+        if (mOnWarnListener != null) mOnWarnListener.onWarningForInventory(inventory);
+    }
+
+    @Override
+    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+    }
+
+    @Override
+    public void onTextChanged(CharSequence s, int start, int before, int count) {
+        onNumberInput();
+    }
+
+    /**
+     * 监听输入的数据变化
+     */
+    private void onNumberInput() {
+        //当前数量
+        int count = getNumber();
+        if (count < mBuyMin) {
+            //手动输入
+            inputValue = mBuyMin;
+            etInput.setText(inputValue + "");
+            if(mOnChangeValueListener != null) {
+                mOnChangeValueListener.onChangeValue(inputValue,mPosition);
+            }
+            return;
+        }
+        int limit = Math.min(mBuyMax, inventory);
+        if (count > limit) {
+            if (inventory < mBuyMax) {
+                //库存不足
+                warningForInventory();
+            } else {
+                //超过最大购买数
+                warningForBuyMax();
+            }
+        }else{
+           inputValue = count;
+            if(mOnChangeValueListener != null) {
+                mOnChangeValueListener.onChangeValue(inputValue,mPosition);
+            }
+        }
+    }
+
+    public AddSubUtils setCurrentNumber(int currentNumber) {
+        if (currentNumber < mBuyMin){
+            inputValue = mBuyMin;
+        } else {
+            inputValue = Math.min(Math.min(mBuyMax, inventory), currentNumber);
+        }
+        etInput.setText(inputValue + "");
+        return this;
+    }
+
+    public int getInventory() {
+        return inventory;
+    }
+
+    public AddSubUtils setInventory(int inventory) {
+        this.inventory = inventory;
+        return this;
+    }
+
+    public AddSubUtils setBean(Object bean) {
+        this.inventory = inventory;
+        return this;
+    }
+
+    public int getBuyMax() {
+        return mBuyMax;
+    }
+
+    public AddSubUtils setBuyMax(int buyMax) {
+        mBuyMax = buyMax;
+        return this;
+    }
+    public AddSubUtils setPosition(int position) {
+        mPosition = position;
+        return this;
+    }
+    public int getPosition() {
+        return mPosition;
+    }
+
+    public AddSubUtils setBuyMin(int buyMin) {
+        mBuyMin = buyMin;
+        return this;
+    }
+
+    public AddSubUtils setOnWarnListener(OnWarnListener onWarnListener) {
+        mOnWarnListener = onWarnListener;
+        return this;
+    }
+
+    public AddSubUtils setOnChangeValueListener(OnChangeValueListener onChangeValueListener) {
+        mOnChangeValueListener = onChangeValueListener;
+        return this;
+    }
+    public int getStep() {
+        return mStep;
+    }
+
+    public AddSubUtils setStep(int step) {
+        mStep = step;
+        return this;
+    }
+
+
+    @Override
+    public void afterTextChanged(Editable s) {
+
+    }
+
+    /**
+     * 得到输入框的数量
+     *
+     * @return
+     */
+    public int getNumber() {
+        try {
+            return Integer.parseInt(etInput.getText().toString());
+        } catch (NumberFormatException e) {
+
+        }
+        etInput.setText(mBuyMin + "");
+        return mBuyMin;
+    }
+
+    public interface OnWarnListener {
+
+        void onWarningForInventory(int inventory);
+
+        void onWarningForBuyMax(int max);
+
+        void onWarningForBuyMin(int min);
+    }
+
+    public interface OnChangeValueListener {
+
+        void onChangeValue(int value, int position);
+    }
+}

+ 0 - 0
app_modular/appbooking/src/main/res/com/modular/booking/adapter/ItemRoomsSelectAdapter.java


BIN
app_modular/appbooking/src/main/res/drawable-hdpi/icon_day_after.png


BIN
app_modular/appbooking/src/main/res/drawable-hdpi/icon_day_qian.png


BIN
app_modular/appbooking/src/main/res/drawable-xhdpi/icon_day_after.png


BIN
app_modular/appbooking/src/main/res/drawable-xhdpi/icon_day_qian.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/addsubutils_ic_minus.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/addsubutils_ic_plus.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_day_after.png


BIN
app_modular/appbooking/src/main/res/drawable-xxhdpi/icon_day_qian.png


+ 7 - 0
app_modular/appbooking/src/main/res/drawable/addsubutils_add_sub_bg.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <stroke
+        android:width="1dp"
+        android:color="@color/divider"/>
+    <corners android:radius="3dp"/>
+</shape>

+ 21 - 0
app_modular/appbooking/src/main/res/drawable/addsubutils_left_selector.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:enterFadeDuration="200" android:exitFadeDuration="200">
+    <item android:state_pressed="true" >
+        <shape>
+            <stroke android:color="@color/divider"
+                android:width="1dp"/>
+            <solid android:color="@color/divider"/>
+            <corners android:topLeftRadius="3dp"
+                android:bottomLeftRadius="3dp"/>
+        </shape>
+    </item>
+    <item android:state_pressed="false" >
+        <shape>
+            <stroke android:color="@color/divider"
+                android:width="1dp"/>
+            <corners android:topLeftRadius="3dp"
+                android:bottomLeftRadius="3dp"/>
+        </shape>
+    </item>
+</selector>

+ 21 - 0
app_modular/appbooking/src/main/res/drawable/addsubutils_right_selector.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:enterFadeDuration="200" android:exitFadeDuration="200">
+    <item android:state_pressed="true" >
+        <shape>
+            <stroke android:color="@color/divider"
+                android:width="1dp"/>
+            <solid android:color="@color/divider"/>
+            <corners android:topRightRadius="3dp"
+                android:bottomRightRadius="3dp"/>
+        </shape>
+    </item>
+    <item android:state_pressed="false" >
+        <shape>
+            <stroke android:color="@color/divider"
+                android:width="1dp"/>
+            <corners android:topRightRadius="3dp"
+                android:bottomRightRadius="3dp"/>
+        </shape>
+    </item>
+</selector>

+ 8 - 0
app_modular/appbooking/src/main/res/drawable/divider_horizontal.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <size
+        android:width="1dp"/>
+    <solid android:color="@color/divider"/>
+</shape>

+ 6 - 0
app_modular/appbooking/src/main/res/drawable/selector_check_items.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@drawable/icon_select_sure" android:state_checked="true"/>
+    <item android:drawable="@color/item_line" android:state_checked="false"/>
+    <item android:drawable="@color/item_line" />
+</selector>

+ 45 - 0
app_modular/appbooking/src/main/res/layout/action_service_room.xml

@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/book_service_action"
+    android:layout_width="match_parent"
+    android:layout_height="48dp">
+
+    <ImageView
+        android:id="@+id/book_service_search_back"
+        android:layout_width="24dp"
+        android:layout_height="24dp"
+        android:layout_centerVertical="true"
+        android:layout_marginRight="60dp"
+        android:src="@drawable/ic_action_back" 
+        />
+   <TextView
+       android:id="@+id/tvVStart"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content"
+       android:layout_centerVertical="true"
+       android:padding="10dp"
+       android:drawableLeft="@drawable/icon_day_qian"
+       android:layout_toLeftOf="@+id/tvTopDate"/>
+    <TextView
+        android:id="@+id/tvTopDate"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:layout_toRightOf="@+id/book_service_search_back"
+
+        android:drawablePadding="10dp"
+      
+        android:gravity="center"
+        android:text="2017-11-09 12:13"
+        android:textColor="@color/white"
+        android:textSize="17sp"
+        android:textStyle="bold" />
+    <TextView
+        android:id="@+id/tvVAfter"
+        android:padding="10dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerVertical="true"
+        android:drawableRight="@drawable/icon_day_after"
+        android:layout_toRightOf="@+id/tvTopDate"/>
+</RelativeLayout>

+ 68 - 64
app_modular/appbooking/src/main/res/layout/activity_bservice_add.xml

@@ -1,6 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<ScrollView
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
@@ -27,7 +26,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:alpha="0.16"
-                android:scaleType="fitXY"/>
+                android:scaleType="fitXY" />
 
             <de.hdodenhof.circleimageview.CircleImageView
                 android:id="@+id/iv_header"
@@ -39,8 +38,7 @@
                 android:layout_marginLeft="12dp"
                 android:layout_marginStart="12dp"
                 android:background="@null"
-                android:src="@drawable/defaultpic">
-            </de.hdodenhof.circleimageview.CircleImageView>
+                android:src="@drawable/defaultpic"></de.hdodenhof.circleimageview.CircleImageView>
 
             <LinearLayout
                 android:layout_width="wrap_content"
@@ -54,22 +52,22 @@
                     android:id="@+id/tv_title"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="********"
-                    android:gravity="center_vertical"
                     android:drawableRight="@drawable/icon_detail"
+                    android:gravity="center_vertical"
+                    android:text="********"
                     android:textColor="@color/black"
                     android:textSize="20sp"
-                    android:textStyle="bold"/>
+                    android:textStyle="bold" />
 
                 <TextView
                     android:id="@+id/tv_sub"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:drawableRight="@drawable/icon_map"
                     android:gravity="center_vertical"
                     android:text="********"
-                    android:drawableRight="@drawable/icon_map"
                     android:textColor="@color/black"
-                    android:textSize="14sp"/>
+                    android:textSize="14sp" />
             </LinearLayout>
         </RelativeLayout>
 
@@ -92,7 +90,7 @@
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
                     android:text="@string/service_ktv_rooms"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
 
                 <TextView
                     android:id="@+id/tv_ktv_rooms"
@@ -102,7 +100,7 @@
                     android:contentDescription="@string/service_ktv_rooms"
                     android:drawableRight="@drawable/oa_next"
                     android:hint="@string/common_select"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
             </RelativeLayout>
 
             <RelativeLayout
@@ -116,7 +114,7 @@
                     android:layout_alignParentStart="true"
                     android:layout_alignParentTop="true"
                     android:gravity="center_vertical"
-                    android:text="@string/service_ktv_times"/>
+                    android:text="@string/service_ktv_times" />
 
                 <TextView
                     android:id="@+id/tv_ktv_times"
@@ -126,20 +124,20 @@
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
                     android:ellipsize="end"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
 
 
             <RelativeLayout
                 android:id="@+id/ktv_people_rl"
-                android:visibility="gone"
-                style="@style/item_menu">
+                style="@style/item_menu"
+                android:visibility="gone">
 
                 <TextView
                     android:id="@+id/tag_ktv_peoples"
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
-                    android:text="@string/service_ktv_peoples"/>
+                    android:text="@string/service_ktv_peoples" />
 
                 <TextView
                     android:id="@+id/tv_ktv_peoples"
@@ -148,7 +146,7 @@
                     android:layout_toRightOf="@id/tag_ktv_peoples"
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
         </LinearLayout>
 
@@ -171,7 +169,7 @@
                     android:layout_alignParentStart="true"
                     android:layout_alignParentTop="true"
                     android:gravity="center_vertical"
-                    android:text="@string/service_club_list"/>
+                    android:text="@string/service_club_list" />
 
                 <TextView
                     android:id="@+id/tv_club_technician"
@@ -182,7 +180,7 @@
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
                     android:ellipsize="end"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
 
             <RelativeLayout
@@ -194,7 +192,7 @@
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
                     android:text="@string/service_club_rooms"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
 
                 <TextView
                     android:id="@+id/tv_club_time"
@@ -203,19 +201,19 @@
                     android:layout_toRightOf="@id/tag_club_tim"
                     android:drawableRight="@drawable/oa_next"
                     android:hint="@string/common_select"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
             </RelativeLayout>
 
             <RelativeLayout
                 android:id="@+id/club_pepoles_rl"
-                android:visibility="gone"
-                style="@style/item_menu">
+                style="@style/item_menu"
+                android:visibility="gone">
 
                 <TextView
                     android:id="@+id/tag_club_peoples"
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
-                    android:text="@string/service_ktv_peoples"/>
+                    android:text="@string/service_ktv_peoples" />
 
                 <TextView
                     android:id="@+id/tv_club_peoples"
@@ -224,7 +222,7 @@
                     android:layout_toRightOf="@id/tag_club_peoples"
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
         </LinearLayout>
 
@@ -247,7 +245,7 @@
                     android:layout_alignParentStart="true"
                     android:layout_alignParentTop="true"
                     android:gravity="center_vertical"
-                    android:text="@string/service_hospital_times"/>
+                    android:text="@string/service_hospital_times" />
 
                 <TextView
                     android:id="@+id/tv_hospital_rooms"
@@ -258,7 +256,7 @@
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
                     android:ellipsize="end"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
 
             <RelativeLayout
@@ -270,7 +268,7 @@
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
                     android:text="@string/service_hospital_rooms"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
 
                 <TextView
                     android:id="@+id/tag_hospital_doctor"
@@ -279,7 +277,7 @@
                     android:layout_toRightOf="@id/tag_hospital_rooms"
                     android:drawableRight="@drawable/oa_next"
                     android:hint="@string/common_select"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
             </RelativeLayout>
 
             <RelativeLayout
@@ -290,7 +288,7 @@
                     android:id="@+id/tag_hospital_people"
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
-                    android:text="@string/service_hospital_peoples"/>
+                    android:text="@string/service_hospital_peoples" />
 
                 <TextView
                     android:id="@+id/tv_hospital_time"
@@ -299,7 +297,7 @@
                     android:layout_toRightOf="@id/tag_hospital_people"
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
         </LinearLayout>
 
@@ -322,7 +320,7 @@
                     android:layout_alignParentStart="true"
                     android:layout_alignParentTop="true"
                     android:gravity="center_vertical"
-                    android:text="@string/service_sport_times"/>
+                    android:text="@string/service_sport_times" />
 
                 <TextView
                     android:id="@+id/tv_sport_time"
@@ -332,7 +330,7 @@
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
                     android:ellipsize="end"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
 
             <RelativeLayout
@@ -344,7 +342,7 @@
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
                     android:text="@string/service_sport_rooms"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
 
                 <TextView
                     android:id="@+id/tv_sport_rooms"
@@ -354,19 +352,19 @@
                     android:contentDescription="@string/service_sport_rooms"
                     android:drawableRight="@drawable/oa_next"
                     android:hint="@string/common_select"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
             </RelativeLayout>
 
             <RelativeLayout
                 android:id="@+id/sport_peoples_rl"
-                android:visibility="gone"
-                style="@style/item_menu">
+                style="@style/item_menu"
+                android:visibility="gone">
 
                 <TextView
                     android:id="@+id/tag_sport_peoples"
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
-                    android:text="@string/service_ktv_peoples"/>
+                    android:text="@string/service_ktv_peoples" />
 
                 <TextView
                     android:id="@+id/tv_sport_peoples"
@@ -375,7 +373,7 @@
                     android:layout_toRightOf="@id/tag_sport_peoples"
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
         </LinearLayout>
 
@@ -398,7 +396,7 @@
                     android:layout_alignParentStart="true"
                     android:layout_alignParentTop="true"
                     android:gravity="center_vertical"
-                    android:text="@string/service_hair_times"/>
+                    android:text="@string/service_hair_times" />
 
                 <TextView
                     android:id="@+id/tv_hair_times"
@@ -411,7 +409,7 @@
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
                     android:ellipsize="end"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
 
             <RelativeLayout
@@ -423,7 +421,7 @@
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
                     android:text="@string/service_hair_rooms"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
 
                 <TextView
                     android:id="@+id/tv_hair_rooms"
@@ -436,7 +434,7 @@
                     android:contentDescription="@string/service_hair_rooms"
                     android:drawableRight="@drawable/oa_next"
                     android:hint="@string/common_select"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
             </RelativeLayout>
 
             <RelativeLayout
@@ -447,7 +445,7 @@
                 <TextView
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
-                    android:text="@string/service_ktv_peoples"/>
+                    android:text="@string/service_ktv_peoples" />
 
                 <TextView
                     android:id="@+id/tv_hair_peoples"
@@ -456,7 +454,7 @@
                     android:layout_toRightOf="@id/company_tag"
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
         </LinearLayout>
 
@@ -466,8 +464,7 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical"
-            android:visibility="gone"
-            >
+            android:visibility="gone">
 
             <RelativeLayout
                 android:id="@+id/food_peoples_rl"
@@ -477,7 +474,8 @@
                     android:id="@+id/tag_food_peoples"
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
-                    android:text="@string/service_food_peoples"/>
+                    android:text="@string/service_food_peoples" />
+
 
                 <TextView
                     android:id="@+id/tv_food_peoples"
@@ -486,7 +484,13 @@
                     android:layout_toRightOf="@id/tag_food_peoples"
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
-                    android:hint="@string/common_select"/>
+                    android:hint="" />
+
+                <com.modular.booking.widget.AddSubUtils
+                    android:id="@+id/add_sub"
+                    android:layout_width="120dp"
+                    android:layout_height="50dp"
+                    android:layout_alignParentRight="true" />
             </RelativeLayout>
 
             <RelativeLayout
@@ -500,7 +504,7 @@
                     android:layout_alignParentStart="true"
                     android:layout_alignParentTop="true"
                     android:gravity="center_vertical"
-                    android:text="@string/service_food_times"/>
+                    android:text="@string/service_food_times" />
 
                 <TextView
                     android:id="@+id/tv_food_times"
@@ -510,7 +514,7 @@
                     android:drawablePadding="6dp"
                     android:drawableRight="@drawable/oa_next"
                     android:ellipsize="end"
-                    android:hint="@string/common_select"/>
+                    android:hint="@string/common_select" />
             </RelativeLayout>
 
             <RelativeLayout
@@ -522,7 +526,7 @@
                     style="@style/item_menu_tag"
                     android:gravity="center_vertical"
                     android:text="@string/service_food_rooms"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
 
                 <TextView
                     android:id="@+id/tv_food_rooms"
@@ -536,14 +540,14 @@
                     android:drawableRight="@drawable/oa_next"
                     android:hint="@string/common_select"
                     android:text="否"
-                    android:textColor="@color/hintColor"/>
+                    android:textColor="@color/hintColor" />
             </RelativeLayout>
 
         </LinearLayout>
 
         <View
             android:layout_width="match_parent"
-            android:layout_height="10dp"/>
+            android:layout_height="10dp" />
 
 
         <LinearLayout
@@ -562,7 +566,7 @@
                     android:layout_alignParentStart="true"
                     android:layout_alignParentTop="true"
                     android:gravity="center_vertical"
-                    android:text="@string/service_name"/>
+                    android:text="@string/service_name" />
 
                 <EditText
                     android:id="@+id/et_book_name"
@@ -571,7 +575,7 @@
                     android:layout_toRightOf="@id/tag_book_name"
                     android:drawablePadding="6dp"
                     android:ellipsize="end"
-                    android:hint="@string/common_input2"/>
+                    android:hint="@string/common_input2" />
 
             </RelativeLayout>
 
@@ -586,18 +590,18 @@
                     android:layout_alignParentStart="true"
                     android:layout_alignParentTop="true"
                     android:gravity="center_vertical"
-                    android:text="@string/service_phone"/>
+                    android:text="@string/service_phone" />
 
                 <EditText
                     android:id="@+id/et_book_phone"
                     style="@style/item_menu_input"
                     android:layout_width="110dp"
-                    android:drawablePadding="2dp"
                     android:drawableLeft="@drawable/icon_tel"
-                    android:textColor="#0CB88C"
+                    android:drawablePadding="2dp"
                     android:ellipsize="end"
                     android:hint="@string/common_input2"
-                    android:inputType="phone"/>
+                    android:inputType="phone"
+                    android:textColor="#0CB88C" />
 
             </RelativeLayout>
 
@@ -612,7 +616,7 @@
                     android:layout_alignParentStart="true"
                     android:layout_alignParentTop="true"
                     android:gravity="center_vertical"
-                    android:text="@string/service_notes"/>
+                    android:text="@string/service_notes" />
 
                 <EditText
                     android:id="@+id/et_book_notes"
@@ -621,7 +625,7 @@
                     android:layout_toRightOf="@id/tag_book_notes"
                     android:drawablePadding="6dp"
                     android:ellipsize="end"
-                    android:hint="@string/common_input2"/>
+                    android:hint="@string/common_input2" />
 
 
             </RelativeLayout>
@@ -645,7 +649,7 @@
                 android:padding="10dp"
                 android:text="@string/app_button_commit"
                 android:textColor="@color/white"
-                android:textSize="@dimen/text_main"/>
+                android:textSize="@dimen/text_main" />
         </RelativeLayout>
     </LinearLayout>
 </ScrollView>

+ 2 - 2
app_modular/appbooking/src/main/res/layout/activity_grid_select.xml

@@ -5,8 +5,8 @@
     <GridView
         android:id="@+id/gv_topic"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@color/white"
+        android:layout_height="match_parent"
+        android:background="@color/transparent"
         android:horizontalSpacing="15dp"
         android:numColumns="2"
         android:paddingLeft="15dp"

+ 43 - 0
app_modular/appbooking/src/main/res/layout/add_sub_end_layout.xml

@@ -0,0 +1,43 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:divider="@drawable/divider_horizontal"
+    android:background="@drawable/addsubutils_add_sub_bg"
+    android:orientation="horizontal">
+
+    <ImageView
+        android:id="@+id/ic_minus"
+        android:layout_width="@dimen/addsubutils_btn_width"
+        android:layout_height="match_parent"
+        android:background="@drawable/addsubutils_left_selector"
+        android:clickable="true"
+        android:padding="@dimen/addsubutils_btn_padding"
+        android:scaleType="centerInside"
+        android:src="@drawable/addsubutils_ic_minus" />
+
+    <ImageView
+        android:id="@+id/ic_plus"
+        android:layout_width="@dimen/addsubutils_btn_width"
+        android:layout_height="match_parent"
+        android:background="@drawable/addsubutils_right_selector"
+        android:clickable="true"
+        android:padding="@dimen/addsubutils_btn_padding"
+        android:scaleType="centerInside"
+        android:src="@drawable/addsubutils_ic_plus" />
+
+    <EditText
+        android:id="@+id/et_input"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@null"
+        android:cursorVisible="true"
+        android:digits="0123456789"
+        android:gravity="center"
+        android:singleLine="true"
+        android:inputType="number"
+        android:minWidth="@dimen/addsubutils_et_minwidth"
+        android:text="1"
+        android:textColor="@color/addsubutils_text"
+        android:textCursorDrawable="@null"
+        android:textSize="@dimen/addsubutils_textsize"/>
+</LinearLayout>

+ 43 - 0
app_modular/appbooking/src/main/res/layout/add_sub_layout.xml

@@ -0,0 +1,43 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:divider="@drawable/divider_horizontal"
+    android:background="@drawable/addsubutils_add_sub_bg"
+    android:orientation="horizontal">
+
+    <ImageView
+        android:id="@+id/ic_minus"
+        android:layout_width="@dimen/addsubutils_btn_width"
+        android:layout_height="match_parent"
+        android:background="@drawable/addsubutils_left_selector"
+        android:clickable="true"
+        android:padding="@dimen/addsubutils_btn_padding"
+        android:scaleType="centerInside"
+        android:src="@drawable/addsubutils_ic_minus" />
+
+    <EditText
+        android:id="@+id/et_input"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@null"
+        android:cursorVisible="true"
+        android:digits="0123456789"
+        android:gravity="center"
+        android:singleLine="true"
+        android:inputType="number"
+        android:minWidth="@dimen/addsubutils_et_minwidth"
+        android:text="1"
+        android:textColor="@color/addsubutils_text"
+        android:textCursorDrawable="@null"
+        android:textSize="@dimen/addsubutils_textsize"/>
+
+    <ImageView
+        android:id="@+id/ic_plus"
+        android:layout_width="@dimen/addsubutils_btn_width"
+        android:layout_height="match_parent"
+        android:background="@drawable/addsubutils_right_selector"
+        android:clickable="true"
+        android:padding="@dimen/addsubutils_btn_padding"
+        android:scaleType="centerInside"
+        android:src="@drawable/addsubutils_ic_plus" />
+</LinearLayout>

+ 44 - 0
app_modular/appbooking/src/main/res/layout/add_sub_start_layout.xml

@@ -0,0 +1,44 @@
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:divider="@drawable/divider_horizontal"
+    android:background="@drawable/addsubutils_add_sub_bg"
+    android:orientation="horizontal">
+    <EditText
+        android:id="@+id/et_input"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@null"
+        android:cursorVisible="true"
+        android:digits="0123456789"
+        android:gravity="center"
+        android:singleLine="true"
+        android:inputType="number"
+        android:minWidth="@dimen/addsubutils_et_minwidth"
+        android:text="1"
+        android:textColor="@color/addsubutils_text"
+        android:textCursorDrawable="@null"
+        android:textSize="@dimen/addsubutils_textsize"/>
+
+    <ImageView
+        android:id="@+id/ic_minus"
+        android:layout_width="@dimen/addsubutils_btn_width"
+        android:layout_height="match_parent"
+        android:background="@drawable/addsubutils_left_selector"
+        android:clickable="true"
+        android:padding="@dimen/addsubutils_btn_padding"
+        android:scaleType="centerInside"
+        android:src="@drawable/addsubutils_ic_minus" />
+
+
+
+    <ImageView
+        android:id="@+id/ic_plus"
+        android:layout_width="@dimen/addsubutils_btn_width"
+        android:layout_height="match_parent"
+        android:background="@drawable/addsubutils_right_selector"
+        android:clickable="true"
+        android:padding="@dimen/addsubutils_btn_padding"
+        android:scaleType="centerInside"
+        android:src="@drawable/addsubutils_ic_plus" />
+</LinearLayout>

+ 7 - 5
app_modular/appbooking/src/main/res/layout/header_bservices_grid.xml

@@ -2,19 +2,20 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@color/white"
+    android:background="#EBE9EA"
     android:orientation="vertical">
     <!--android:layout_marginTop="80dp"-->
     <com.core.widget.view.MyGridView
         android:id="@+id/mGridView"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="@color/white"
-        android:horizontalSpacing="1dp"
+        android:horizontalSpacing="0.5dp"
+        android:background="#EBE9EA"
         android:numColumns="3"
         android:paddingTop="5dp"
         android:scrollbars="none"
-        android:verticalSpacing="1dp"></com.core.widget.view.MyGridView>
+        android:verticalSpacing="0.5dp">
+    </com.core.widget.view.MyGridView>
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -40,10 +41,11 @@
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_centerVertical="true"
+                 android:drawablePadding="5dp"
                  android:layout_alignParentRight="true"
                  android:layout_marginRight="5dp"
                  android:drawableRight="@drawable/icon_distances"
-                 android:padding="5dp"
+                 
                  android:text="距离" />
          </RelativeLayout>
        

+ 5 - 1
app_modular/appbooking/src/main/res/layout/item_bservice_header.xml

@@ -1,9 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:background="@drawable/select_weixin_list_item"
+    android:descendantFocusability="blocksDescendants"
     android:gravity="center"
-    android:orientation="vertical">
+    android:orientation="vertical"
+    tools:ignore="NewApi">
 
     <TextView
         android:id="@+id/tv_title"

+ 2 - 1
app_modular/appbooking/src/main/res/layout/item_bservice_list.xml

@@ -42,7 +42,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
-                android:gravity="center"
+                android:gravity="right"
                 android:text="餐饮"
                 android:textSize="10sp" />
         </LinearLayout>
@@ -101,6 +101,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:drawableLeft="@drawable/icon_tel"
+                android:padding="5dp"
                 android:layout_weight="1"
                 android:text="1328349823"
                 android:textColor="@color/light_green" />

+ 1 - 0
app_modular/appbooking/src/main/res/layout/item_bservice_storeman_list.xml

@@ -73,6 +73,7 @@
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="免费"
+                android:visibility="invisible"
                 android:textColor="@color/light_green" />
 
             <Button

+ 30 - 0
app_modular/appbooking/src/main/res/layout/item_pop_list_select.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/selector_me_menu_item_bg">
+    <TextView
+        android:id="@+id/tv_item_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:paddingLeft="2dp"
+        android:paddingRight="2dp"
+        android:paddingTop="10dp"
+        android:paddingBottom="10dp"
+        android:textSize="14sp"
+        
+        android:gravity="center"
+
+        android:text="xxx" />
+    <CheckBox
+        android:id="@+id/cb_select"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:button="@null"
+        android:background="@drawable/selector_check_items"
+        android:checked="true"
+        android:layout_toLeftOf="@+id/tv_item_name"
+        />
+</RelativeLayout>

+ 26 - 7
app_modular/appbooking/src/main/res/layout/item_rooms_select.xml

@@ -1,17 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/rlItem"
     android:orientation="vertical"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/white">
+    android:layout_height="match_parent">
     <RelativeLayout
+        android:id="@+id/rlImage"
         android:layout_width="match_parent"
         android:layout_height="150dp">
     <ImageView
         android:id="@+id/ivItem"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
+        android:layout_height="149dp"
         android:scaleType="fitXY" />
     <TextView
         android:id="@+id/tvName"
@@ -23,7 +22,27 @@
         android:textColor="@color/white"
         android:textStyle="bold"
         android:background="#80000000"
-        android:text="服务项目"
-        />
-    </RelativeLayout>
+        android:text="服务项目" />
+</RelativeLayout>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_below="@+id/rlImage"
+        android:gravity="center"
+        android:orientation="horizontal">
+        <TextView
+            android:id="@+id/tvBookAction"
+            android:layout_width="60dp"
+            android:layout_height="30dp"
+            android:gravity="center"
+            
+            android:layout_margin="10dp"
+            android:layout_centerHorizontal="true"
+          
+            android:textColor="@color/white"
+            android:textStyle="bold"
+            android:text="已预定"
+            android:background="@color/gray"/>
+    </LinearLayout>
+  
 </RelativeLayout>

+ 29 - 0
app_modular/appbooking/src/main/res/values/attrs.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <declare-styleable name="AddSubUtils">
+        <!--是否可以手动输入-->
+        <attr name="editable" format="boolean"></attr>
+        <!--输入框的位置-->
+        <attr name="location" format="string"></attr>
+        <!-- 左右2边+-按钮的宽度 -->
+        <attr name="ImageWidth" format="dimension" />
+        <!-- 中间EditText的宽度 -->
+        <attr name="contentWidth" format="dimension" />
+        <!--中间TextView的大小-->
+        <attr name="contentTextSize" format="dimension"/>
+        <!--中间字体的颜色-->
+        <attr name="contentTextColor" format="color"/>
+        <!--整个控件的background-->
+        <attr name="all_background" format="color|reference"/>
+        <!--左面控件的背景-->
+        <attr name="leftBackground" format="color|reference"/>
+        <!--右面控件的背景-->
+        <attr name="rightBackground" format="color|reference"/>
+        <!--中间控件的背景-->
+        <attr name="contentBackground" format="color|reference"/>
+        <!--左面控件的资源-->
+        <attr name="leftResources" format="color|reference"/>
+        <!--右面控件的资源-->
+        <attr name="rightResources" format="color|reference"/>
+    </declare-styleable>
+</resources>

+ 17 - 0
app_modular/appbooking/src/main/res/values/colors.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <color name="industry_sub_pressed">#dadada</color>
+    <color name="industry_sub_unpressed">#ebe9e9</color>
+    <color name="divider">#999</color>
+    <color name="white">#fff</color>
+    <color name="material_amber_200">#FFE082</color>
+    <color name="material_amber_300">#FFD54F</color>
+    <color name="material_amber_400">#FFCA28</color>
+    <color name="material_light_green_200">#C5E1A5</color>
+    <color name="material_light_green_300">#AED581</color>
+    <color name="material_light_green_400">#9CCC65</color>
+    <color name="material_teal_200">#80CBC4</color>
+    <color name="material_teal_300">#4DB6AC</color>
+    <color name="material_teal_400">#26A69A</color>
+    <color name="addsubutils_text">#999</color>
+</resources>

+ 7 - 0
app_modular/appbooking/src/main/res/values/dimens.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <dimen name="addsubutils_btn_width" >30dp</dimen>
+    <dimen name="addsubutils_btn_padding">10dp</dimen>
+    <dimen name="addsubutils_textsize" >15sp</dimen>
+    <dimen name="addsubutils_et_minwidth" >65dp</dimen>
+</resources>

+ 15 - 0
app_modular/appbooking/src/main/res/values/styles.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <style name="item_number_add_sub_style">
+        <item name="android:clickable">true</item>
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:paddingBottom">3dp</item>
+        <item name="android:paddingLeft">16dp</item>
+        <item name="android:paddingRight">16dp</item>
+        <item name="android:paddingTop">3dp</item>
+    </style>
+    
+   
+</resources>

+ 3 - 1
app_modular/applogin/src/main/java/com/modular/login/activity/PersonalRegActivity.java

@@ -4,6 +4,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;
@@ -94,7 +95,7 @@ public class PersonalRegActivity extends BaseActivity implements View.OnClickLis
 
     private void doRegiter() {
         progressDialog.dismiss();
-        String url = "http://113.105.74.140:8092/" + "user/appRegister";
+        String url = Constants.IM_BASE_URL() + "user/appRegister";
         Map<String, Object> params = new HashMap<>();
         params.put("telephone", phone_et.getText().toString());
         params.put("password", md5_password);
@@ -158,6 +159,7 @@ public class PersonalRegActivity extends BaseActivity implements View.OnClickLis
         @Override
         public void handleMessage(Message msg) {
             String result = msg.getData().getString("result");
+            Log.i("fanglh",result);
             switch (msg.what) {
                 case 0x01:
                     if (!StringUtil.isEmpty(result)) {

+ 29 - 0
app_modular/applogin/src/main/res/values/attrs.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <declare-styleable name="AddSubUtils">
+        <!--是否可以手动输入-->
+        <attr name="editable" format="boolean"></attr>
+        <!--输入框的位置-->
+        <attr name="location" format="string"></attr>
+        <!-- 左右2边+-按钮的宽度 -->
+        <attr name="ImageWidth" format="dimension" />
+        <!-- 中间EditText的宽度 -->
+        <attr name="contentWidth" format="dimension" />
+        <!--中间TextView的大小-->
+        <attr name="contentTextSize" format="dimension"/>
+        <!--中间字体的颜色-->
+        <attr name="contentTextColor" format="color"/>
+        <!--整个控件的background-->
+        <attr name="all_background" format="color|reference"/>
+        <!--左面控件的背景-->
+        <attr name="leftBackground" format="color|reference"/>
+        <!--右面控件的背景-->
+        <attr name="rightBackground" format="color|reference"/>
+        <!--中间控件的背景-->
+        <attr name="contentBackground" format="color|reference"/>
+        <!--左面控件的资源-->
+        <attr name="leftResources" format="color|reference"/>
+        <!--右面控件的资源-->
+        <attr name="rightResources" format="color|reference"/>
+    </declare-styleable>
+</resources>

+ 12 - 0
app_modular/applogin/src/main/res/values/colors.xml

@@ -2,4 +2,16 @@
 <resources>
     <color name="industry_sub_pressed">#dadada</color>
     <color name="industry_sub_unpressed">#ebe9e9</color>
+    <color name="divider">#999</color>
+    <color name="white">#fff</color>
+    <color name="material_amber_200">#FFE082</color>
+    <color name="material_amber_300">#FFD54F</color>
+    <color name="material_amber_400">#FFCA28</color>
+    <color name="material_light_green_200">#C5E1A5</color>
+    <color name="material_light_green_300">#AED581</color>
+    <color name="material_light_green_400">#9CCC65</color>
+    <color name="material_teal_200">#80CBC4</color>
+    <color name="material_teal_300">#4DB6AC</color>
+    <color name="material_teal_400">#26A69A</color>
+    <color name="addsubutils_text">#999</color>
 </resources>

+ 10 - 0
app_modular/applogin/src/main/res/values/styles.xml

@@ -1,6 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 
+    <style name="item_number_add_sub_style">
+        <item name="android:clickable">true</item>
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:paddingBottom">3dp</item>
+        <item name="android:paddingLeft">16dp</item>
+        <item name="android:paddingRight">16dp</item>
+        <item name="android:paddingTop">3dp</item>
+    </style>
+    
     <style name="register_edittext_style">
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">wrap_content</item>

+ 5 - 0
app_modular/appme/src/main/AndroidManifest.xml

@@ -70,5 +70,10 @@
             android:label="签名"
             android:screenOrientation="landscape"
             />
+        <activity android:name=".settings.activity.CheckWagesActivity"
+            android:windowSoftInputMode="stateUnspecified|adjustNothing"
+            />
+        <activity android:name=".settings.activity.WagesDetailsActivity"
+            />
     </application>
 </manifest>

+ 78 - 17
app_modular/appme/src/main/java/com/uas/appme/settings/activity/BComSetEmployeeRestActivity.java

@@ -19,7 +19,10 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.common.LogUtil;
+import com.common.config.BaseConfig;
 import com.common.data.CalendarUtil;
 import com.common.data.DateFormatUtil;
 import com.common.data.JSONUtil;
@@ -32,6 +35,7 @@ import com.core.base.BaseActivity;
 import com.core.model.SelectBean;
 import com.core.utils.CommonUtil;
 import com.core.utils.TimeUtils;
+import com.core.utils.ToastUtil;
 import com.core.utils.time.wheel.OASigninPicker;
 import com.core.widget.MyListView;
 import com.core.widget.view.Activity.SelectActivity;
@@ -48,6 +52,8 @@ import com.uas.appme.settings.model.PersonSetingBean;
 import java.util.ArrayList;
 import java.util.List;
 
+import static com.common.data.JSONUtil.getJSONArray;
+
 /**
  * Created by FANGlh on 2017/10/12.
  * function:
@@ -60,13 +66,15 @@ public class BComSetEmployeeRestActivity extends BaseActivity implements View.On
     private String current_date;
     private List<String> serviceMans;
     private int click_positon;
+    private ArrayList<SelectBean> selectBeens;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.service_bcom_setting_activity);
         initView();
-        initData();
+        loadServiceMan();
+//        initData();
     }
 
     private void initData() {
@@ -138,7 +146,7 @@ public class BComSetEmployeeRestActivity extends BaseActivity implements View.On
         model.setSf_companyid(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_uu"));
         model.setSf_username("");
         model.setSf_companyname(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_commpany"));
-        model.setSf_userid(MyApplication.getInstance().mLoginUser.getUserId());
+        model.setSf_userid("");
         model.setSf_date("");
         mList.add(model);
         myAdapter.notifyDataSetChanged();
@@ -156,7 +164,7 @@ public class BComSetEmployeeRestActivity extends BaseActivity implements View.On
             model.setSf_companyid(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_uu"));
             model.setSf_username("");
             model.setSf_companyname(CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_commpany"));
-            model.setSf_userid(MyApplication.getInstance().mLoginUser.getUserId());
+            model.setSf_userid("");
             model.setSf_date("");
             mList.add(model);
             myAdapter.notifyDataSetChanged();
@@ -284,11 +292,16 @@ public class BComSetEmployeeRestActivity extends BaseActivity implements View.On
                 @Override
                 public void onClick(View v) {
                     click_positon = position;
-                    if (ListUtils.isEmpty(serviceMans)) {
+                    if (ListUtils.isEmpty(selectBeens)) {
                         doInputName(position);
-                    }
-                    else{
-                        ArrayList<SelectBean> beans = new ArrayList<>();
+                    } else{
+                            Intent intent = new Intent(ct, SelectActivity.class)
+                                    .putExtra("type", 2)
+                                    .putExtra("title", "选择人员")
+                                    .putParcelableArrayListExtra("data", selectBeens);
+                            startActivityForResult(intent, 0x02);
+
+                       /* ArrayList<SelectBean> beans = new ArrayList<>();
                         SelectBean bean = null;
                         for (String e : serviceMans) {
                             bean = new SelectBean();
@@ -300,7 +313,7 @@ public class BComSetEmployeeRestActivity extends BaseActivity implements View.On
                         intent.putExtra("type", 2);
                         intent.putParcelableArrayListExtra("data", beans);
                         intent.putExtra("title", "人员选择");
-                        startActivityForResult(intent, 0x01);
+                        startActivityForResult(intent, 0x01);*/
                     }
                 }
             });
@@ -319,7 +332,50 @@ public class BComSetEmployeeRestActivity extends BaseActivity implements View.On
             TextView date_tv;
         }
     }
+    //load 选择服务人员
+    private String companyid;
+    public void loadServiceMan() {
+        progressDialog.show();
+        new HttpClient.Builder(Constants.IM_BASE_URL())
+                .isDebug(BaseConfig.isDebug())
+                .build()
+                .Api()
+                .send(new HttpClient.Builder()
+                        .url("/user/appStoreman")
+                        .add("companyid", StringUtil.isEmpty(companyid) ? CommonUtil.getSharedPreferences(ct, "erp_uu") : companyid)
+                        .add("serviceid", "0")
+                        .add("token", MyApplication.getInstance().mAccessToken)
+                        .method(Method.GET)
+                        .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+                    @Override
+                    public void onResponse(Object o) {
+                        LogUtil.prinlnLongMsg("appStoreman", o.toString()+"");
+                        if (JSONUtil.validateJSONObject(o.toString())) {
+                            JSONArray array = getJSONArray(o.toString(), "result");
+                            SelectBean bean = null;
+                            selectBeens = new ArrayList<SelectBean>();
+
+                            if (!ListUtils.isEmpty(array)) {
+                                for (int i = 0; i < array.size(); i++) {
+                                    JSONObject object = array.getJSONObject(i);
+                                    bean = new SelectBean();
+                                    int id = JSONUtil.getInt(object, "sm_id");
+                                    String name = JSONUtil.getText(object, "sm_username");
+                                    bean.setId(id);
+                                    bean.setFields(String.valueOf(id));
+                                    bean.setName(name);
+                                    bean.setJson(object.toJSONString());
+                                    selectBeens.add(bean);
+                                }
+                            } else {
+                                ToastUtil.showToast(ct, "当前公司还没有设置员工");
+                            }
 
+                        }
+                        progressDialog.dismiss();
+                    }
+                }));
+    }
     private PopupWindow popupWindow = null;
     private void doInputName(final int position) {
         // 一个自定义的布局,作为显示的内容
@@ -398,18 +454,23 @@ public class BComSetEmployeeRestActivity extends BaseActivity implements View.On
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
-        if (data == null) return;
-        if (resultCode == 0x20) {
-            SelectBean b = data.getParcelableExtra("data");
-            if (b == null) return;
-            String name = StringUtil.isEmpty(b.getName()) ? "" : b.getName();
-            if (requestCode == 0x01) {
-              mList.get(click_positon).setSf_username(name);
-              myAdapter.notifyDataSetChanged();
+        if (data != null && 0x02 == requestCode) {
+            SelectBean bean = data.getParcelableExtra("data");
+            if (bean != null) {
+                String json = bean.getJson();
+                if (JSONUtil.validateJSONObject(json)) {
+                    JSONObject object = JSON.parseObject(json);
+                    LogUtil.prinlnLongMsg("fanglh1",JSON.toJSONString(object));
+                    if (object != null) {
+                        mList.get(click_positon).setSf_username(JSONUtil.getText(object, "sm_username"));
+                        mList.get(click_positon).setSf_userid(JSONUtil.getText(object, "sm_userid"));
+                        myAdapter.notifyDataSetChanged();
+                    }
+                    LogUtil.prinlnLongMsg("fanglh2",JSON.toJSONString(mList));
+                }
             }
         }
     }
-
     private void doSelectEndDate(final int pos) {
         OASigninPicker picker = new OASigninPicker(this);
         picker.setRange(CalendarUtil.getYear()+1, CalendarUtil.getMonth(), CalendarUtil.getDay());

+ 1 - 1
app_modular/appme/src/main/java/com/uas/appme/settings/activity/BSettingActivity.java

@@ -116,7 +116,7 @@ public class BSettingActivity extends BaseActivity implements View.OnClickListen
         rTyperl.setOnClickListener(this);
 
         if ("餐饮".equals(sc_industry))
-            rTyperl.setVisibility(View.VISIBLE);
+            rTyperl.setVisibility(View.GONE);
         else
             rTyperl.setVisibility(View.GONE);
     }

+ 4 - 2
app_modular/appme/src/main/java/com/uas/appme/settings/activity/BSettingLocationActivity.java

@@ -433,8 +433,10 @@ public class BSettingLocationActivity extends BaseActivity implements View.OnCli
                 doUpdate();
             else
                 doSaveDatasList();
-        } else
-            sendPictureRequest(mPhotoList.get(now_p));
+        } else{
+            if (now_p < mPhotoList.size())
+                sendPictureRequest(mPhotoList.get(now_p));
+        }
 
     }
 

+ 2 - 2
app_modular/appme/src/main/java/com/uas/appme/settings/activity/BusinessHoursSetting.java

@@ -137,14 +137,14 @@ public class BusinessHoursSetting extends BaseActivity implements View.OnClickLi
                             .putExtra("startDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
                             .putExtra("endDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
                             .putExtra("hasMenu", false)
-                            .putExtra("type", 2)
+                            .putExtra("type", 5)
                     , 0x24);
         }else if (v.getId() == R.id.tv_endTime){
             startActivityForResult(new Intent(mContext, SelectCalendarActivity.class)
                             .putExtra("startDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
                             .putExtra("endDate", DateFormatUtil.long2Str(DateFormatUtil.YMD_HMS))
                             .putExtra("hasMenu", false)
-                            .putExtra("type", 2)
+                            .putExtra("type", 5)
                     , 0x24);
         }else if (v.getId() == R.id.period_tv){
             sc_booktype = 1;

+ 83 - 0
app_modular/appme/src/main/java/com/uas/appme/settings/activity/CheckWagesActivity.java

@@ -0,0 +1,83 @@
+package com.uas.appme.settings.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.andreabaccega.widget.FormEditText;
+import com.common.data.DateFormatUtil;
+import com.common.data.ListUtils;
+import com.core.base.BaseActivity;
+import com.core.utils.time.wheel.DatePicker;
+import com.uas.appme.R;
+
+import java.util.Calendar;
+
+/**
+ * Created by FANGlh on 2017/11/10.
+ * function:
+ */
+
+public class CheckWagesActivity extends BaseActivity implements View.OnClickListener {
+    private TextView mWagesDate;
+    private FormEditText mWagesPhoneEt;
+    private FormEditText mWagesPasswordEt;
+    private FormEditText mWagesCodeEt;
+    private Button mWagesCodeBtn;
+    private Button mCheckBtn;
+    private String myearmonth = DateFormatUtil.long2Str(System.currentTimeMillis(), "yyyyMM");//默认当前月
+    private String checkYear;
+    private String checkMonth;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        initView();
+    }
+
+    private void initView() {
+        setContentView(R.layout.check_wages_activity);
+        getSupportActionBar().setTitle("工资条查询");
+
+        mWagesDate = (TextView) findViewById(R.id.wages_date);
+        mWagesPhoneEt = (FormEditText) findViewById(R.id.wages_phone_et);
+        mWagesPasswordEt = (FormEditText) findViewById(R.id.wages_password_et);
+        mWagesCodeEt = (FormEditText) findViewById(R.id.wages_code_et);
+        mWagesCodeBtn = (Button) findViewById(R.id.wages_code_btn);
+        mCheckBtn = (Button) findViewById(R.id.check_btn);
+
+        mWagesDate.setOnClickListener(this);
+        mWagesCodeBtn.setOnClickListener(this);
+        mCheckBtn.setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View v) {
+       int id =  v.getId();
+        if (id == R.id.wages_date){
+            DatePicker picker = new DatePicker(this, DatePicker.YEAR_MONTH);
+            picker.setRange(2016, 2017);
+            picker.setSelectedItem(
+                    Calendar.getInstance().get(Calendar.YEAR),
+                    Calendar.getInstance().get(Calendar.MONTH) + 1);
+            picker.setOnDatePickListener(new DatePicker.OnYearMonthPickListener() {
+                @Override
+                public void onDatePicked(String year, String month) {
+                    myearmonth =  year + "年" + month+"月";
+                    checkYear = year;
+                    checkMonth = month;
+                    mWagesDate.setText(myearmonth);
+                }
+            });
+            picker.show();
+        }else if (id == R.id.wages_code_btn){
+
+        }else if (id == R.id.check_btn){
+            startActivity(new Intent(this,WagesDetailsActivity.class)
+            .putExtra("checkYear",checkYear)
+            .putExtra("checkMonth",checkMonth));
+        }
+    }
+}

+ 47 - 1
app_modular/appme/src/main/java/com/uas/appme/settings/activity/PersonSettingActivity.java

@@ -95,6 +95,8 @@ public class PersonSettingActivity extends BaseActivity implements View.OnClickL
     private String photoselect=null;
     private ProgressDialog mProgressDialog;
     private Boolean updateChangeP = false; //更新是否更换了头像,若没换
+    private String imid;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -430,7 +432,7 @@ public class PersonSettingActivity extends BaseActivity implements View.OnClickL
                     if (!JSONUtil.validate(o.toString()) || o == null) return;
                     if (o.toString().contains("result") && JSON.parseObject(o.toString()).getBoolean("result")){
                         if (o.toString().contains("imid")){
-                            String imid = JSON.parseObject(o.toString()).getString("imid");
+                            imid = JSON.parseObject(o.toString()).getString("imid");
                             if (StringUtil.isEmpty(imid)) {
                                ToastMessage("imid获取失败,请稍后再试");
                                 return;
@@ -457,6 +459,50 @@ public class PersonSettingActivity extends BaseActivity implements View.OnClickL
     }
 
     private void jumpTo() {
+        /*Map<String,Object> formStoreMap = new HashMap<>();
+        formStoreMap.put("userName",mUserNameTv.getText().toString());
+        formStoreMap.put("userSex","男".equals(mUserSexTv.getText().toString()) ? "M" : "F");
+        formStoreMap.put("userTel",mUserTelTv.getText().toString());
+        formStoreMap.put("userEmail",mUserEmailTv.getText().toString());
+
+        HttpClient httpClient =
+//                new HttpClient.Builder(Constant.BASE_BOOKING_SETTING_URL).isDebug(true).build(true);
+                new HttpClient.Builder("http://uas.ubtob.com/")
+                        .isDebug(true).build(true);
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("mobile/adduser/user")
+                .add("formStore", JSONUtil.map2JSON(formStoreMap))
+                .add("dept",mUserDepartmentEv.getText().toString())
+                .add("role",mUserJobTv.getText().toString())
+                .add("enuu",CommonUtil.getSharedPreferences(MyApplication.getInstance(),"erp_uu"))
+                .add("emcode",imid)
+                .method(Method.POST)
+                .build(),new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                Log.d("fanglh",o.toString());
+                try {
+                    if (!StringUtil.isEmpty(o.toString()) && JSON.parseObject(o.toString()).containsKey("success") &&
+                            "人员添加成功".equals(JSON.parseObject(o.toString()).getString("success"))){
+                        if (!StringUtil.isEmpty(sm_id)){
+                            Toast.makeText(ct,getString(R.string.update_success),Toast.LENGTH_LONG).show();
+                            setResult(20);
+                        }else {
+                            Toast.makeText(ct,getString(R.string.common_save_success),Toast.LENGTH_LONG).show();
+                            startActivity(new Intent(PersonSettingActivity.this,PersonSettingListActivity.class)
+                                    .putExtra("sc_industry",sc_industry)
+                                    .putExtra("sc_industrycode",sc_industrycode));
+                        }
+                        finish();
+                    }else{
+
+                    }
+                }catch (Exception e){
+                    e.printStackTrace();
+                }
+            }
+        }));*/
+
         if (!StringUtil.isEmpty(sm_id)){
             Toast.makeText(ct,getString(R.string.update_success),Toast.LENGTH_LONG).show();
             setResult(20);

+ 4 - 2
app_modular/appme/src/main/java/com/uas/appme/settings/activity/SigatureActivity.java

@@ -40,13 +40,15 @@ public class SigatureActivity extends BaseActivity implements View.OnClickListen
     @Override
     public void onClick(View v) {
         if (v.getId() == R.id.btn2){
-            startActivityForResult(new Intent(this, LandscapeActivity.class), 101);
+            startActivityForResult(new Intent(this, LandscapeActivity.class)
+                            .putExtra("signCode",002)
+                    , 101);
         }
     }
 
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if(resultCode==101){
+        if(resultCode==101 && requestCode == 101){
             BitmapFactory.Options options = new BitmapFactory.Options();
             options.inSampleSize = 2;
             Bitmap bm = BitmapFactory.decodeFile(path1, options);

+ 142 - 0
app_modular/appme/src/main/java/com/uas/appme/settings/activity/WagesDetailsActivity.java

@@ -0,0 +1,142 @@
+package com.uas.appme.settings.activity;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.os.Environment;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.PopupWindow;
+import android.widget.Toast;
+
+import com.common.system.DisplayUtil;
+import com.core.base.BaseActivity;
+import com.core.widget.MyListView;
+import com.uas.appme.R;
+import com.uas.appme.settings.handwritedemo.LinePathView;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Created by FANGlh on 2017/11/10.
+ * function:
+ */
+public class WagesDetailsActivity extends BaseActivity implements View.OnClickListener {
+    private String checkYear;
+    private String checkMonth;
+    private MyListView mWagesLv;
+    private Button mBtnSignature;
+    private PopupWindow setWindow = null;//
+    private LinePathView pathView;
+    public static String plainpath= Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "sign.png";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.wages_details_activity);
+        initView();
+        initData();
+
+    }
+
+    private void initData() {
+
+    }
+
+    private void initView() {
+        checkYear = getIntent().getStringExtra("checkYear");
+        checkMonth = getIntent().getStringExtra("checkMonth");
+        String title = checkYear + "年" + checkMonth + "月"+"工资";
+        getSupportActionBar().setTitle(title);
+
+        mWagesLv = (MyListView) findViewById(R.id.wages_lv);
+        mBtnSignature = (Button) findViewById(R.id.btn_signature); mBtnSignature.setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (v.getId() == R.id.btn_signature){
+            showSiganWindow();
+        }else if (v.getId() == R.id.clear_im){
+            pathView.clear();
+        }else if (v.getId() == R.id.cancel_tv){
+            pathView.clear();
+            closePopupWindow();
+        }
+        /*else if (v.getId() == R.id.hscreen_btn){
+            startActivityForResult(new Intent(this, LandscapeActivity.class)
+                    .putExtra("signCode",001)
+                    , 101);
+        }*/
+        else if (v.getId() == R.id.submit_btn){
+            if (pathView.getTouched())
+            {
+                try {
+                    pathView.save(plainpath,false,10);  //将图片路径保存到plainpath中,并获取Bimap对象
+                    BitmapFactory.Options options = new BitmapFactory.Options();
+                    options.inSampleSize = 2;
+                    Bitmap pathBm = BitmapFactory.decodeFile(plainpath, options);
+                    doSubmit(pathBm);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }else {
+                Toast.makeText(this,"您没有签名~", Toast.LENGTH_SHORT).show();
+            }
+        }
+    }
+
+    /*  @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+         if(requestCode==101 && resultCode == 102){
+             BitmapFactory.Options options = new BitmapFactory.Options();
+             options.inSampleSize = 2;
+             Bitmap pathBm = BitmapFactory.decodeFile(plainpath, options);
+         }
+
+     }*/
+    private void doSubmit(Bitmap pathBm) {
+        Log.i("fanglh",plainpath+","+pathBm);
+    }
+
+    private void showSiganWindow() {
+        if (setWindow == null) initPopupWindow();
+        setWindow.showAtLocation(getWindow().getDecorView().
+                findViewById(android.R.id.content), Gravity.BOTTOM, 0, 0);
+        DisplayUtil.backgroundAlpha(this, 0.4f);
+    }
+
+    private void initPopupWindow() {
+        View viewContext = LayoutInflater.from(ct).inflate(R.layout.sigature_pop, null);
+
+        viewContext.findViewById(R.id.submit_btn).setOnClickListener(this);
+        viewContext.findViewById(R.id.clear_im).setOnClickListener(this);
+        viewContext.findViewById(R.id.cancel_tv).setOnClickListener(this);
+//        viewContext.findViewById(R.id.hscreen_btn).setOnClickListener(this);
+
+        pathView = (LinePathView) viewContext.findViewById(R.id.sigature_view);
+        pathView.setPaintWidth(5);
+
+        setWindow = new PopupWindow(viewContext,
+                LinearLayout.LayoutParams.MATCH_PARENT,
+                LinearLayout.LayoutParams.WRAP_CONTENT, true);
+        setWindow.setAnimationStyle(com.uas.appworks.R.style.MenuAnimationFade);
+        setWindow.setBackgroundDrawable(mContext.getResources().getDrawable(com.uas.appworks.R.drawable.bg_popuwin));
+        setWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+            @Override
+            public void onDismiss() {
+                closePopupWindow();
+            }
+        });
+    }
+    private void closePopupWindow() {
+        if (setWindow != null)
+            setWindow.dismiss();
+        DisplayUtil.backgroundAlpha(this, 1f);
+    }
+}

+ 14 - 1
app_modular/appme/src/main/java/com/uas/appme/settings/handwritedemo/LandscapeActivity.java

@@ -7,11 +7,14 @@ import android.widget.Toast;
 
 import com.uas.appme.R;
 import com.uas.appme.settings.activity.SigatureActivity;
+import com.uas.appme.settings.activity.WagesDetailsActivity;
 
 import java.io.IOException;
 
 public class LandscapeActivity extends Activity implements View.OnClickListener {
    private LinePathView pathView;
+    private int signCode;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -26,6 +29,8 @@ public class LandscapeActivity extends Activity implements View.OnClickListener
         findViewById(R.id.save1).setOnClickListener(this);
         pathView = (LinePathView) findViewById(R.id.view);
         pathView.setPaintWidth(5);
+
+        signCode = getIntent().getIntExtra("signCode",-1);
     }
 
 
@@ -40,7 +45,15 @@ public class LandscapeActivity extends Activity implements View.OnClickListener
             if (pathView.getTouched())
             {
                 try {
-                    pathView.save(SigatureActivity.path1,false,10);
+                    switch (signCode){
+                        case 001:
+                            pathView.save(WagesDetailsActivity.plainpath,false,10);
+                            break;
+                        case 002:
+                            pathView.save(SigatureActivity.path1,false,10);
+                            break;
+                    }
+
                 } catch (IOException e) {
                     e.printStackTrace();
                 }

+ 106 - 0
app_modular/appme/src/main/res/layout/check_wages_activity.xml

@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@drawable/bg_main">
+
+    <TextView
+        android:id="@+id/wages_date"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:text="2017年11月"
+        android:gravity="center_vertical"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:drawableRight="@drawable/oa_next"
+        android:textSize="15sp"/>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:background="@color/item_line" />
+    <com.andreabaccega.widget.FormEditText
+        android:id="@+id/wages_phone_et"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:textColor="@color/dark_dark_grey"
+        android:padding="10dp"
+        android:layout_centerVertical="true"
+        android:background="@null"
+        android:hint="请输入手机号码"
+        android:textSize="15sp"
+        android:gravity="center_vertical"
+        android:inputType="number"
+        android:maxLength="11"
+        />
+    <View
+    android:layout_width="match_parent"
+    android:layout_height="2px"
+    android:background="@color/item_line" />
+    <com.andreabaccega.widget.FormEditText
+        android:id="@+id/wages_password_et"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:textColor="@color/dark_dark_grey"
+        android:padding="10dp"
+        android:layout_centerVertical="true"
+        android:background="@null"
+        android:hint="请输入查询密码"
+        android:textSize="15sp"
+        android:gravity="center_vertical"
+        android:inputType="textPassword"
+        />
+
+    <View
+    android:layout_width="match_parent"
+    android:layout_height="2px"
+    android:background="@color/item_line" />
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        >
+        <com.andreabaccega.widget.FormEditText
+            android:id="@+id/wages_code_et"
+            android:layout_width="wrap_content"
+            android:layout_height="50dp"
+            android:textColor="@color/dark_dark_grey"
+            android:padding="10dp"
+            android:layout_centerVertical="true"
+            android:background="@null"
+            android:hint="请输入6位数查询密码"
+            android:textSize="15sp"
+            android:gravity="center_vertical"
+            android:maxLength="6"
+            />
+        <Button
+            android:id="@+id/wages_code_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="45dp"
+            android:padding="10dp"
+            android:text="获取验证码"
+            android:textColor="@color/blue"
+            android:textSize="@dimen/text_main"
+            android:layout_alignParentRight="true"
+            android:layout_marginRight="10dp"
+            android:background="@color/white"
+            />
+    </RelativeLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:background="@color/item_line" />
+
+    <Button
+        android:id="@+id/check_btn"
+        android:layout_margin="20dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:background="@drawable/bg_bule_btn"
+        android:padding="10dp"
+        android:text="查询"
+        android:textColor="@color/white"
+        android:textSize="@dimen/text_main"
+        android:visibility="visible"/>
+</LinearLayout>

+ 99 - 0
app_modular/appme/src/main/res/layout/sigature_pop.xml

@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@drawable/bg">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_margin="5dp">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="工资条签名"
+            android:textColor="@color/black"
+            android:textSize="16sp"
+            />
+        <TextView
+            android:id="@+id/cancel_tv"
+            android:layout_alignParentRight="true"
+            android:layout_width="100dp"
+            android:layout_height="wrap_content"
+            android:text="取消"
+            android:textColor="@color/LightBlue"
+            android:textSize="16sp"
+            android:gravity="right"
+            />
+    </RelativeLayout>
+    <View
+        android:layout_marginTop="5dp"
+        android:layout_width="match_parent"
+        android:layout_height="2px"
+        android:background="@color/item_line" />
+    <RelativeLayout
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:layout_marginTop="10dp"
+        android:layout_width="match_parent"
+        android:layout_height="300dp"
+        android:background="@color/white">
+        <Button
+            android:id="@+id/hscreen_btn"
+            android:layout_width="80dp"
+            android:layout_height="35dp"
+            android:text="横屏签名"
+            android:background="@drawable/bg"
+            android:layout_alignBottom="@+id/clear_im"
+            android:layout_alignParentLeft="true"
+            android:layout_alignParentStart="true"
+            android:layout_marginLeft="10dp"
+            android:layout_marginStart="10dp"
+            android:visibility="gone"/>
+        <ImageView
+            android:id="@+id/clear_im"
+            android:layout_alignParentRight="true"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:src="@drawable/common_header_boy"
+            android:layout_margin="10dp"
+            android:background="@color/white"/>
+        <View
+            android:id="@+id/view3"
+            android:layout_below="@+id/clear_im"
+            android:layout_marginTop="5dp"
+            android:layout_width="match_parent"
+            android:layout_height="2px"
+            android:background="@color/item_line" />
+        <com.uas.appme.settings.handwritedemo.LinePathView
+            android:id="@+id/sigature_view"
+            android:layout_width="match_parent"
+            android:layout_height="250dp"
+            android:layout_gravity="center_horizontal"
+            android:layout_below="@+id/view3"
+            android:background="@color/white"
+            />
+    </RelativeLayout>
+
+    <TextView
+        android:gravity="center"
+        android:background="@color/white"
+        android:text="签名区域"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"/>
+    <Button
+        android:id="@+id/submit_btn"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_margin="20dp"
+        android:background="@drawable/bg_bule_btn"
+        android:padding="10dp"
+        android:text="@string/common_submit_button"
+        android:textColor="@color/white"
+        android:textSize="@dimen/text_main"/>
+
+</LinearLayout>

+ 49 - 0
app_modular/appme/src/main/res/layout/wages_details_activity.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+    <TextView
+        android:background="@color/white"
+        android:layout_margin="10dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="公告:本月工资发放内容包括了上个月的餐补,请大家查看明细"/>
+    <View
+        android:layout_marginTop="5dp"
+        android:layout_width="match_parent"
+        android:layout_height="10dp"
+        android:background="@color/item_line" />
+    <com.core.widget.CustomerScrollView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:fillViewport="true">
+
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <com.core.widget.MyListView
+
+                android:id="@+id/wages_lv"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/white">
+            </com.core.widget.MyListView>
+            <Button
+                android:id="@+id/btn_signature"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_alignParentBottom="true"
+                android:background="@drawable/bg_bule_btn"
+                android:padding="10dp"
+                android:text="签字"
+                android:textColor="@color/white"
+                android:textSize="@dimen/text_main"
+                />
+        </LinearLayout>
+   </com.core.widget.CustomerScrollView>
+
+</LinearLayout>

+ 1 - 1
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/UUSportActivity.java

@@ -54,7 +54,7 @@ public class UUSportActivity extends BaseActivity implements View.OnClickListene
 
     private void initData() {
         model = mStepRankingFirstDao.getAllRFIDatas();
-        StepRankingFirstBean mm = mStepRankingFirstDao.getCurDataByDate("2017年11月06日");
+        StepRankingFirstBean mm = mStepRankingFirstDao.getCurDataByDate("2017年11月09日");
         LogUtil.prinlnLongMsg("fanglh", JSON.toJSONString(model)+","+JSON.toJSONString(mm));
         if (ListUtils.isEmpty(model)){
             mEmptyLayout.showEmpty();

+ 8 - 10
app_modular/apputils/src/main/AndroidManifest.xml

@@ -1,13 +1,11 @@
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-
-          package="com.modular.apputils"
->
-
-    <application android:allowBackup="true"
-                 android:label="@string/app_name"
-                 android:supportsRtl="true"
-    >
-
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
+    package="com.modular.apputils">
+
+    <application
+        android:allowBackup="true"
+        android:label="@string/app_name"
+        android:supportsRtl="true">
+        <activity android:name=".activity.SingleImagePreviewActivity"></activity>
     </application>
 
 </manifest>

+ 216 - 0
app_modular/apputils/src/main/java/com/modular/apputils/activity/SingleImagePreviewActivity.java

@@ -0,0 +1,216 @@
+package com.modular.apputils.activity;
+
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.net.Uri;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.PopupWindow;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.common.system.DisplayUtil;
+import com.core.app.ActionBackActivity;
+import com.core.app.AppConstant;
+import com.core.utils.CommonUtil;
+import com.modular.apputils.R;
+import com.modular.apputils.utils.Scheme;
+import com.nostra13.universalimageloader.core.ImageLoader;
+import com.nostra13.universalimageloader.core.assist.FailReason;
+import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
+
+import java.io.File;
+
+import uk.co.senab.photoview.PhotoViewAttacher;
+
+
+/**
+ * 单张图片预览
+ * 
+ * @author Dean Tao
+ * @version 1.0
+ */
+public class SingleImagePreviewActivity extends ActionBackActivity {
+
+	private String mImageUri;
+	private FrameLayout imageFl;
+	private ImageView mImageView;
+	private ProgressBar mProgressBar;
+	@SuppressWarnings("unused")
+	private TextView mProgressTextTv;
+	PhotoViewAttacher mAttacher;
+	private View mMoreMenuView;
+	private PopupWindow mMoreWindow;
+	private TextView sava_picture_tv;
+	private TextView cancel_picture_tv;
+	@Override
+	protected void onCreate(Bundle savedInstanceState) {
+		super.onCreate(savedInstanceState);
+		if (getIntent() != null) {
+			mImageUri = getIntent().getStringExtra(AppConstant.EXTRA_IMAGE_URI);
+		}
+		getSupportActionBar().hide();
+		setContentView(R.layout.activity_single_image_preview);
+		initView();
+	}
+
+	private void initView() {
+		mImageView = (ImageView) findViewById(R.id.image_view);
+		imageFl= (FrameLayout) findViewById(R.id.image_fl);
+		mProgressBar = (ProgressBar) findViewById(R.id.progress_bar);
+		mProgressTextTv = (TextView) findViewById(R.id.progress_text_tv);
+
+		boolean showProgress = false;
+		// init status
+		Log.i("wang","mImageUri:"+mImageUri);
+		Scheme scheme = Scheme.ofUri(mImageUri);
+		Log.i("wang","scheme:"+scheme);
+		switch (scheme) {
+		case HTTP:
+		case  HTTPS:// 需要网络加载的
+			Bitmap bitmap = ImageLoader.getInstance().getMemoryCache().get(mImageUri);
+			if (bitmap == null || bitmap.isRecycled()) {
+				File file = ImageLoader.getInstance().getDiscCache().get(mImageUri);
+				if (file == null || !file.exists()) {// 文件不存在,那么就表示需要重新下载
+					showProgress = true;
+				}
+			}
+			break;
+		case  UNKNOWN:// 如果不知道什么类型,且不为空,就当做是一个本地文件的路径来加载
+			if (TextUtils.isEmpty(mImageUri)) {
+				mImageUri = "";
+			} else {
+				mImageUri = Uri.fromFile(new File(mImageUri)).toString();
+			}
+			break;
+		default:
+			// 其他 drawable asset类型不处理
+			break;
+		}
+		if (showProgress) {
+			ImageLoader.getInstance().displayImage(mImageUri, mImageView, mImageLoadingListener);
+		} else {
+			ImageLoader.getInstance().displayImage(mImageUri, mImageView, mImageLoadingListener);
+		}
+	}
+
+
+	/**
+	 * @param :长按点击弹出PopupWindow事件,
+	 * @author: FANGlh 2016-12-6
+	 */
+	public void longclickshowppw(final String mImageUri){
+
+		mMoreMenuView = View.inflate(mContext, R.layout.layout_menu_common_save_picture, null);
+		sava_picture_tv = (TextView) mMoreMenuView.findViewById(R.id.save_tv);
+		cancel_picture_tv = (TextView) mMoreMenuView.findViewById(R.id.cancel_tv);
+
+		mMoreWindow = new PopupWindow(mMoreMenuView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
+		mMoreWindow.setAnimationStyle(R.style.MenuAnimationFade);
+		mMoreWindow.setBackgroundDrawable(new BitmapDrawable());
+		mMoreWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
+			@Override
+			public void onDismiss() {
+				closeMorePopupWindow();
+			}
+		});
+
+		mMoreWindow.showAtLocation(getWindow().getDecorView(), Gravity.CENTER, 0, 0);
+		DisplayUtil.backgroundAlpha(mContext, 0.5f);
+
+		sava_picture_tv.setOnClickListener(new View.OnClickListener() {
+			@Override
+			public void onClick(View v) {
+                CommonUtil.saveImageToLocal(getApplicationContext(), ImageLoader.getInstance().loadImageSync(mImageUri));
+				closeMorePopupWindow();
+			}
+		});
+
+		cancel_picture_tv.setOnClickListener(new View.OnClickListener() {
+			@Override
+			public void onClick(View v) {
+				closeMorePopupWindow();
+			}
+		});
+
+
+	}
+
+	private void closeMorePopupWindow() {
+		if (mMoreWindow != null) {
+			mMoreWindow.dismiss();
+			DisplayUtil.backgroundAlpha(mContext, 1f);
+		}
+
+	}
+
+
+	@Override
+	public void onBackPressed() {
+		finish();
+		overridePendingTransition(0, R.anim.alpha_scale_out);
+	}
+
+	@Override
+	protected boolean onHomeAsUp() {
+		finish();
+		overridePendingTransition(0, R.anim.alpha_scale_out);
+		return true;
+	}
+
+	private ImageLoadingListener mImageLoadingListener = new ImageLoadingListener() {
+		@Override
+		public void onLoadingStarted(String arg0, View arg1) {
+			mProgressBar.setVisibility(View.VISIBLE);
+		}
+
+		@Override
+		public void onLoadingFailed(String arg0, View arg1, FailReason arg2) {
+			mProgressBar.setVisibility(View.GONE);
+		}
+
+		@Override
+		public void onLoadingComplete(String arg0, View arg1, Bitmap arg2) {
+			mProgressBar.setVisibility(View.GONE);
+			mAttacher=new PhotoViewAttacher((ImageView) arg1);
+			mAttacher.update();
+
+			mAttacher.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {
+				@Override
+				public void onPhotoTap(View view, float x, float y) {
+					finish();
+					overridePendingTransition(0, R.anim.alpha_scale_out);
+				}
+
+				@Override
+				public void onOutsidePhotoTap() {
+
+				}
+			});
+
+			mAttacher.setOnLongClickListener(new View.OnLongClickListener() {
+				@Override
+				public boolean onLongClick(View v) {
+					longclickshowppw(mImageUri);
+					return true;
+				}
+			});
+		}
+
+		@Override
+		public void onLoadingCancelled(String arg0, View arg1) {
+			mProgressBar.setVisibility(View.GONE);
+		}
+	};
+
+
+
+
+
+}

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/im/Scheme.java → app_modular/apputils/src/main/java/com/modular/apputils/utils/Scheme.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.util.im;
+package com.modular.apputils.utils;
 
 import java.util.Locale;
 

+ 64 - 57
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/DataFormDetailActivity.java

@@ -474,9 +474,9 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                     Boolean success = null;
                     try {
                         success = JSON.parseObject(result).getBoolean("success");
-                        if ("ExtraWork$".equals(caller)){
+                        if ("ExtraWork$".equals(caller)) {
                             va_id = JSON.parseObject(result).getIntValue("wod_id");
-                        }else{
+                        } else {
                             va_id = JSON.parseObject(result).getIntValue(formidkey);
                         }
                         if (success) {
@@ -581,28 +581,28 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
     }
 
     private void commitSuccess() {
-        if(formid==0){
+        if (formid == 0) {
             ToastMessage("提交成功!");
-        }else{
+        } else {
             ToastMessage("更新成功!");
         }
         mHandler.postDelayed(new Runnable() {
             @Override
             public void run() {
                 if (mContext == null) return;
-                LogUtil.d("当前线程是:"+CommonUtil.isMainThread());
-                    if(formid==0){
-                        startActivity(new Intent(mContext, CommonDocDetailsActivity.class)
-                                .putExtra("caller", caller)
-                                .putExtra("keyValue", va_id)
-                                .putExtra("status", "已提交"));
-                    }else{
-                        startActivity(new Intent(mContext, CommonDocDetailsActivity.class)
-                                .putExtra("caller", caller)
-                                .putExtra("keyValue", formid)
-                                .putExtra("update", "1")
-                                .putExtra("status", "已提交"));
-                    }
+                LogUtil.d("当前线程是:" + CommonUtil.isMainThread());
+                if (formid == 0) {
+                    startActivity(new Intent(mContext, CommonDocDetailsActivity.class)
+                            .putExtra("caller", caller)
+                            .putExtra("keyValue", va_id)
+                            .putExtra("status", "已提交"));
+                } else {
+                    startActivity(new Intent(mContext, CommonDocDetailsActivity.class)
+                            .putExtra("caller", caller)
+                            .putExtra("keyValue", formid)
+                            .putExtra("update", "1")
+                            .putExtra("status", "已提交"));
+                }
                 finish();
                 overridePendingTransition(R.anim.anim_activity_in, R.anim.anim_activity_out);
             }
@@ -643,20 +643,20 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                     endDate = "sa_enddate";
                     formidkey = "sa_id";
                     getSupportActionBar().setTitle("特殊考勤");
-                } else if ("Workovertime".equals(caller)||"ExtraWork$".equals(caller)) {
+                } else if ("Workovertime".equals(caller) || "ExtraWork$".equals(caller)) {
                     startDate = "wod_startdate";
                     endDate = "wod_enddate";
                     d_startDate = "wod_startdate";
                     d_endDate = "wod_enddate";
-                    if ("ExtraWork$".equals(caller)){
+                    if ("ExtraWork$".equals(caller)) {
                         formidkey = "wod_id";//主表id  ---适应接口频繁调整
-                    }else{
+                    } else {
                         formidkey = "wo_id";//主表id
                     }
                     detailkey_id = "wod_id";//明细id
                     detailkey_did = "wod_woid";//主表id
                     getSupportActionBar().setTitle("加班单");
-                } else if ("FeePlease!CCSQ".equals(caller)||"FeePlease!CCSQ!new".equals(caller)) {
+                } else if ("FeePlease!CCSQ".equals(caller) || "FeePlease!CCSQ!new".equals(caller)) {
                     startDate = "fp_prestartdate";
                     endDate = "fp_preenddate";
                     d_startDate = "fpd_date1";
@@ -755,6 +755,12 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
             } else {
                 menu.findItem(R.id.oa_signin_set).setVisible(false);
             }
+        } else {
+            if (PreferenceUtils.getBoolean(AppConfig.IS_ADMIN, false)) {
+                menu.findItem(R.id.oa_signin_set).setVisible(true);
+            } else {
+                menu.findItem(R.id.oa_signin_set).setVisible(false);
+            }
         }
         return super.onPrepareOptionsMenu(menu);
     }
@@ -767,7 +773,7 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == R.id.oa_signin_set){
+        if (item.getItemId() == R.id.oa_signin_set) {
             ArrayList<Data> fields = new ArrayList<>();
             ArrayList<Data> fieldsDis = new ArrayList<>();
             LogUtil.d(JSON.toJSONString(mDatasNet));
@@ -794,7 +800,7 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                             .putParcelableArrayListExtra("fieldsDis", fieldsDis)
                             .putExtra("caller", caller),
                     0x25);
-        }else if (item.getItemId() == R.id.oa_leave){
+        } else if (item.getItemId() == R.id.oa_leave) {
             startActivity(new Intent(mContext, FormListSelectActivity.class)
                     .putExtra("caller",
                             caller)
@@ -802,7 +808,7 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
             if (formid != 0) {
                 finish();
             }
-        }else if (item.getItemId() == android.R.id.home){
+        } else if (item.getItemId() == android.R.id.home) {
             if ("在录入".equals(status)) {
                 FormListSelectActivity.reload = false;
             } else if ("已提交".equals(status)) {
@@ -838,12 +844,12 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
 
     @Override
     public void onClick(View v) {
-        if (v.getId() == R.id.ll_item_add){
+        if (v.getId() == R.id.ll_item_add) {
             addGridItemData();
-        }else if (v.getId() == R.id.click_btn){
+        } else if (v.getId() == R.id.click_btn) {
             if (formid == 0)
                 commit();
-        }else if (v.getId() == R.id.btn_update){
+        } else if (v.getId() == R.id.btn_update) {
             updata();
         }
     }
@@ -1038,8 +1044,8 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                         if (StringUtil.isEmpty(itemValue.getGroup())) {
                             header.setVisibility(View.GONE);
                         } else {
-                           // header.setVisibility(View.GONE);
-                            LogUtil.d("MainActivity:"+itemValue.getGroup());
+                            // header.setVisibility(View.GONE);
+                            LogUtil.d("MainActivity:" + itemValue.getGroup());
                             if (itemValue.getGroup().contains("明细") && !itemValue.getGroup().equals("明细项1")) {
                                 item_add.setVisibility(View.VISIBLE);
                             } else {
@@ -1127,13 +1133,13 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                                         || "ExtraWork$".equals(caller)
                                         || "FeePlease!CCSQ!new".equals(caller)) {
                                     startActivityForResult(new Intent(mContext, SelectCalendarActivity.class)
-                                            .putExtra("startDate", startDate_v)
-                                            .putExtra("endDate", endDate_v)
-                                            .putExtra("hasMenu", hasMenu)
-                                            .putExtra("id", categoryIndex)
-                                            .putExtra("field", data.getField())
-                                            .putExtra("object", data)
-                                            .putExtra("caller", caller)
+                                                    .putExtra("startDate", startDate_v)
+                                                    .putExtra("endDate", endDate_v)
+                                                    .putExtra("hasMenu", hasMenu)
+                                                    .putExtra("id", categoryIndex)
+                                                    .putExtra("field", data.getField())
+                                                    .putExtra("object", data)
+                                                    .putExtra("caller", caller)
                                             , 0x30);
                                 } else {
                                     showDateDialog(ct, (EditText) v, data);
@@ -1216,13 +1222,13 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                             }
                             //连带操作
                             if (data.getType().equals("DF")) {
-                                if ("fpd_d5".equals(data.getField())){
+                                if ("fpd_d5".equals(data.getField())) {
                                     //出差单 客户名称联动操作特殊处理
                                     Intent intent = new Intent("com.modular.form.SelectAimActivity")
                                             .putExtra("groupId", data.getGroupId());
-                                   currentGroupId= data.getGroupId();
+                                    currentGroupId = data.getGroupId();
                                     startActivityForResult(intent, 0x23);
-                                }else{
+                                } else {
                                     HashMap param = new HashMap<>();
                                     String[] fields = new String[]{"sa_custname"};
                                     if (caller.equals("StandbyApplication")) {
@@ -1258,9 +1264,9 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                                     startActivityForResult(intent, categoryIndex);
                                     isLeave = true;
                                 }
-                               
+
                             }
-                            
+
 
                         }
                     });
@@ -1412,9 +1418,9 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
         switch (resultCode) {
             case 0x20:
                 if (data == null) return;
-                SelectBean b=new SelectBean();
-                if (data.getParcelableExtra("data") instanceof SelectBean){
-                     b = data.getParcelableExtra("data");
+                SelectBean b = new SelectBean();
+                if (data.getParcelableExtra("data") instanceof SelectBean) {
+                    b = data.getParcelableExtra("data");
                 }
                 if (requestCode == b.getId() && resultCode == 0x20) {
                     if (b == null || StringUtil.isEmpty(b.getJson())) return;
@@ -1436,17 +1442,17 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                     if (d == null) return;
                     String name = StringUtil.isEmpty(d.getName()) ? "" : d.getName();
                     getEmnameByReturn(name);
-                }else if (requestCode==0x23){
+                } else if (requestCode == 0x23) {
                     SelectAimModel entity = data.getParcelableExtra("data");
                     PopupWindowHelper.create(this, getString(R.string.perfect_company_name), entity, new PopupWindowHelper.OnClickListener() {
                         @Override
                         public void result(SelectAimModel model) {
                             //出差单 写死固定参数1
                             String cu_name = model.getName();
-                            String cu_address=model.getAddress();
+                            String cu_address = model.getAddress();
                             int sa_custname = 0;
                             int sa_custaddress = 0;
-                            LogUtil.d("currentGroup:"+currentGroupId);
+                            LogUtil.d("currentGroup:" + currentGroupId);
                             List<Data> tempLists = mAdapter.getmListData().get(currentGroupId).getDatas();
                             for (int i = 0; i < tempLists.size(); i++) {
                                 Data tempData = tempLists.get(i);
@@ -1501,7 +1507,7 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
                 try {
                     parseResultByField(data);
                 } catch (Exception e) {
-                   
+
                 }
                 break;
         }
@@ -1509,7 +1515,8 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
     }
 
     private void parseResultByField(Intent data) {
-        int id;Data model = data.getParcelableExtra("object");
+        int id;
+        Data model = data.getParcelableExtra("object");
         id = data.getIntExtra("id", 0);
         String startDate = data.getStringExtra("startDate");
         String endDate = data.getStringExtra("endDate");
@@ -1541,7 +1548,7 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
             mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alldays - 1).setValue(startDate);
             mAdapter.getmListData().get(model.getGroupId()).getDatas().get(va_alltimes - 1).setValue(endDate);
         }
-        if ("Workovertime".equals(caller)||"ExtraWork$".equals(caller)) {
+        if ("Workovertime".equals(caller) || "ExtraWork$".equals(caller)) {
             int va_alldays = 0;
             int va_alltimes = 0;
 
@@ -1563,7 +1570,7 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
         }
 
 
-        if ("FeePlease!CCSQ".equals(caller)||"FeePlease!CCSQ!new".equals(caller)) {
+        if ("FeePlease!CCSQ".equals(caller) || "FeePlease!CCSQ!new".equals(caller)) {
             int va_alldays = 0;
             int va_alltimes = 0;
             //fp_preenddate
@@ -2158,10 +2165,10 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
         }
         progressDialog.show();
         click_btn.setEnabled(false);
-        String url =null;
-        if ("ExtraWork$".equals(caller)){
+        String url = null;
+        if ("ExtraWork$".equals(caller)) {
             url = CommonUtil.getAppBaseUrl(ct) + "/mobile/oa/ExtraWorkSaveAndSubmit.action";
-        }else{
+        } else {
             url = CommonUtil.getAppBaseUrl(ct) + "/mobile/oa/commonSaveAndSubmit.action";
         }
         Map<String, Object> params = new HashMap<>();
@@ -2372,12 +2379,12 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
         progressDialog.show();
         btn_update.setEnabled(false);
 
-        String url =null;
+        String url = null;
         Map<String, Object> params = new HashMap<>();
-        if ("ExtraWork$".equals(caller)){
+        if ("ExtraWork$".equals(caller)) {
             url = CommonUtil.getAppBaseUrl(ct) + "/mobile/oa/ExtraWorkUpdateAndSubmit.action";
             params.put("id", String.valueOf(formid));
-        }else{
+        } else {
             url = CommonUtil.getAppBaseUrl(ct) + "/mobile/commonUpdate.action";
             params.put("keyid", String.valueOf(formid));
         }

+ 16 - 13
app_modular/appworks/src/main/java/com/uas/appworks/activity/CommonDataFormActivity.java

@@ -479,7 +479,9 @@ public class CommonDataFormActivity extends BaseActivity implements View.OnClick
                         if ("ExtraWork$".equals(caller)) {
                             va_id = JSON.parseObject(result).getIntValue("wod_id");
                         } else {
-                            va_id = JSON.parseObject(result).getIntValue(formidkey);
+                            //rp_id
+                          //  va_id = JSON.parseObject(result).getIntValue(formidkey);
+                            va_id = JSON.parseObject(result).getIntValue("rp_id");
                         }
                         if (success) {
                             judgeApprovers(va_id);
@@ -835,9 +837,9 @@ public class CommonDataFormActivity extends BaseActivity implements View.OnClick
             url = CommonUtil.getAppBaseUrl(ct) + "mobile/getformandgriddetail.action";
         }
         Map<String, Object> params = new HashMap<>();
-        params.put("serve_id", "52");
+        params.put("serve_id", "75");
         params.put("client_type", "cc");
-        params.put("access_token", "123456");
+       // params.put("access_token", "123456");
 //        LinkedHashMap<String, Object> header = new LinkedHashMap<>();
 //        header.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
        // params.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
@@ -2169,16 +2171,17 @@ public class CommonDataFormActivity extends BaseActivity implements View.OnClick
         }
         progressDialog.show();
         click_btn.setEnabled(false);
+        //  api/serve/save.action?data=?&operate_id=?&access_token=? 
         String url = null;
-        if ("ExtraWork$".equals(caller)) {
-            url = CommonUtil.getAppBaseUrl(ct) + "/mobile/oa/ExtraWorkSaveAndSubmit.action";
-        } else {
-            url = CommonUtil.getAppBaseUrl(ct) + "/mobile/oa/commonSaveAndSubmit.action";
-        }
+//        if ("ExtraWork$".equals(caller)) {
+//            url = CommonUtil.getAppBaseUrl(ct) + "/mobile/oa/ExtraWorkSaveAndSubmit.action";
+//        } else {
+            url = CommonUtil.getAppBaseUrl(ct) + "/api/serve/save.action";
+//        }
         Map<String, Object> params = new HashMap<>();
-        params.put("caller", caller);
-        params.put("formStore", formStore);
-        params.put("gridStore", gridStore);
+//        params.put("caller", caller);
+        params.put("data", formStore);
+        params.put("operate_id", "67");
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, Constants.HTTP_SUCCESS_INIT, null, null, "post");
@@ -2431,9 +2434,9 @@ public class CommonDataFormActivity extends BaseActivity implements View.OnClick
 
     private void judgeApprovers(int id) {
         LogUtil.d("id:" + id + "  caller:" + caller);
-        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "common/getMultiNodeAssigns.action";
+        String url = CommonUtil.getAppBaseUrl(mContext) + "common/getMultiNodeAssigns.action";
         Map<String, Object> param = new HashMap<>();
-        param.put("caller", caller);
+        param.put("caller", "RepairApply");
         param.put("id", id);
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));

+ 111 - 0
app_modular/appworks/src/main/java/com/uas/appworks/model/bean/MenuTypeBean.java

@@ -0,0 +1,111 @@
+package com.uas.appworks.model.bean;
+
+import java.util.List;
+
+/**
+ * @author RaoMeng
+ * @describe
+ * @date 2017/11/6 19:52
+ */
+
+public class MenuTypeBean {
+
+    /**
+     * typeName : 企业应用
+     * typeList : [{"isLocalMenu":true,"menuName":"数据查询","menuIcon":"ic_menu","menuActivity":"","menuUrl":"","isHide":false},{"isLocalMenu":true,"menuName":"报表统计","menuIcon":"ic_menu","menuActivity":"","menuUrl":"","isHide":false}]
+     */
+
+    private String typeName;
+    private boolean typeVisible;
+    private List<TypeListBean> typeList;
+
+    public String getTypeName() {
+        return typeName;
+    }
+
+    public void setTypeName(String typeName) {
+        this.typeName = typeName;
+    }
+
+    public boolean isTypeVisible() {
+        return typeVisible;
+    }
+
+    public void setTypeVisible(boolean typeVisible) {
+        this.typeVisible = typeVisible;
+    }
+
+    public List<TypeListBean> getTypeList() {
+        return typeList;
+    }
+
+    public void setTypeList(List<TypeListBean> typeList) {
+        this.typeList = typeList;
+    }
+
+    public static class TypeListBean {
+        /**
+         * isLocalMenu : true
+         * menuName : 数据查询
+         * menuIcon : ic_menu
+         * menuActivity :
+         * menuUrl :
+         * isHide : false
+         */
+
+        private boolean isLocalMenu;
+        private String menuName;
+        private String menuIcon;
+        private String menuActivity;
+        private String menuUrl;
+        private boolean isHide;
+
+        public boolean isIsLocalMenu() {
+            return isLocalMenu;
+        }
+
+        public void setIsLocalMenu(boolean isLocalMenu) {
+            this.isLocalMenu = isLocalMenu;
+        }
+
+        public String getMenuName() {
+            return menuName;
+        }
+
+        public void setMenuName(String menuName) {
+            this.menuName = menuName;
+        }
+
+        public String getMenuIcon() {
+            return menuIcon;
+        }
+
+        public void setMenuIcon(String menuIcon) {
+            this.menuIcon = menuIcon;
+        }
+
+        public String getMenuActivity() {
+            return menuActivity;
+        }
+
+        public void setMenuActivity(String menuActivity) {
+            this.menuActivity = menuActivity;
+        }
+
+        public String getMenuUrl() {
+            return menuUrl;
+        }
+
+        public void setMenuUrl(String menuUrl) {
+            this.menuUrl = menuUrl;
+        }
+
+        public boolean isIsHide() {
+            return isHide;
+        }
+
+        public void setIsHide(boolean isHide) {
+            this.isHide = isHide;
+        }
+    }
+}

+ 0 - 1
build.gradle

@@ -1,4 +1,3 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
 apply from: "version.gradle"
 buildscript {
     repositories {

+ 2 - 2
gradle.properties

@@ -4,6 +4,6 @@ org.gradle.parallel=true
 org.gradle.jvmargs=-Xmx5120m
 
 applicationId=com.xzjmyk.pm.activity
-
-
+versionCode=125
+versionName=6.0.5
 

+ 71 - 68
version.gradle

@@ -16,83 +16,86 @@ ext {
     ]
 
     depsVersion = [
-            junitVersion                        : '4.12',
-            supportVersion                      : '24.2.1',
-            multidex                            : '1.0.1',
-            butterknifeVersion                  : '8.2.1',
-            fastjsonVersion                     : '1.2.24',
-            logVersion                          : '1.15',
-            rxJavaVersion                       : '1.1.8',
-            rxAndroidVersion                    : '1.2.1',
-            okhttpVersion                       : '3.4.1',
-            retrofitVersion                     : '2.1.0',
-            stethoVersion                       : '1.5.0',
-            glideVersion                        : '3.8.0',
-            supertoastsVersion                  : '2.0',
-            alerterVersion                      : '1.0.6',
-            circleimageviewVersion              : '2.1.0',
-            systembartintVersion                : '1.0.3',
-            photoViewVersion                    : '1.2.5',
-            leakcanaryVersion                   : '1.5',
-            materialDialogsVersion              : '0.9.0.2',
-            stickyGridHeadersVersion            : '1.0.1',
-            stickyListHeadersVersion            : '2.7.0',
-            activityOnCrashVersion              : '1.5.0',
-            analyticsVersion                    : 'latest.integration',
-            tagGroupVersion                     : '1.4@aar',
-            jodatimeVersion                     : '2.9.4',
-            gifVersion                          : '1.2.8',
-            recyclerLib                         : 'v1.0',
-            vlayoutVersion                      : '1.2.1',
-            BaseRecyclerViewAdapterHelperVersion: '2.9.30'
+            junitVersion            : '4.12',
+            supportVersion          : '24.2.1',
+            multidex                : '1.0.1',
+            butterknifeVersion      : '8.2.1',
+            fastjsonVersion         : '1.2.24',
+            logVersion              : '1.15',
+            rxJavaVersion           : '1.1.8',
+            rxAndroidVersion        : '1.2.1',
+            okhttpVersion           : '3.4.1',
+            retrofitVersion         : '2.1.0',
+            stethoVersion           : '1.5.0',
+            glideVersion            : '3.8.0',
+            supertoastsVersion      : '2.0',
+            alerterVersion          : '1.0.6',
+            circleimageviewVersion  : '2.1.0',
+            systembartintVersion    : '1.0.3',
+            photoViewVersion        : '1.2.5',
+            leakcanaryVersion       : '1.5',
+            materialDialogsVersion  : '0.9.0.2',
+            stickyGridHeadersVersion: '1.0.1',
+            stickyListHeadersVersion: '2.7.0',
+            activityOnCrashVersion  : '1.5.0',
+            analyticsVersion        : 'latest.integration',
+            tagGroupVersion         : '1.4@aar',
+            jodatimeVersion         : '2.9.4',
+            gifVersion              : '1.2.8',
+            recyclerLib             : 'v1.0',
+            vlayoutVersion          : '1.2.1',
+            BaseRecyclerViewAdapterHelperVersion: '2.9.30',
+            addSubUtilsVersion      : '1.5.0'
     ]
 
     deps = [
-            junit                        : 'junit:junit:' + depsVersion.junitVersion,
-            appcompatV7                  : 'com.android.support:appcompat-v7:' + depsVersion.supportVersion,
-            supportV4                    : 'com.android.support:support-v4:' + depsVersion.supportVersion,
-            supportAnnotations           : 'com.android.support:support-annotations:' + depsVersion.supportVersion,
-            design                       : 'com.android.support:design:' + depsVersion.supportVersion,
-            gridlayoutV7                 : 'com.android.support:gridlayout-v7:' + depsVersion.supportVersion,
-            recyclerviewV7               : 'com.android.support:recyclerview-v7:' + depsVersion.supportVersion,
-            cardviewV7                   : 'com.android.support:cardview-v7:' + depsVersion.supportVersion,
-            multidex                     : 'com.android.support:multidex:' + depsVersion.multidex,
+            junit              : 'junit:junit:' + depsVersion.junitVersion,
+            appcompatV7        : 'com.android.support:appcompat-v7:' + depsVersion.supportVersion,
+            supportV4          : 'com.android.support:support-v4:' + depsVersion.supportVersion,
+            supportAnnotations : 'com.android.support:support-annotations:' + depsVersion.supportVersion,
+            design             : 'com.android.support:design:' + depsVersion.supportVersion,
+            gridlayoutV7       : 'com.android.support:gridlayout-v7:' + depsVersion.supportVersion,
+            recyclerviewV7     : 'com.android.support:recyclerview-v7:' + depsVersion.supportVersion,
+            cardviewV7         : 'com.android.support:cardview-v7:' + depsVersion.supportVersion,
+            multidex           : 'com.android.support:multidex:' + depsVersion.multidex,
 
-            logger                       : 'com.orhanobut:logger:' + depsVersion.logVersion,
-            fastjson                     : 'com.alibaba:fastjson:' + depsVersion.fastjsonVersion,
-            stetho                       : 'com.facebook.stetho:stetho:' + depsVersion.stethoVersion,
+            logger             : 'com.orhanobut:logger:' + depsVersion.logVersion,
+            fastjson           : 'com.alibaba:fastjson:' + depsVersion.fastjsonVersion,
+            stetho             : 'com.facebook.stetho:stetho:' + depsVersion.stethoVersion,
 
-            butterknife                  : 'com.jakewharton:butterknife:' + depsVersion.butterknifeVersion,
-            butterknifeCompiler          : 'com.jakewharton:butterknife-compiler:' + depsVersion.butterknifeVersion,
-            rxjava                       : 'io.reactivex:rxjava:' + depsVersion.rxJavaVersion,
-            rxandroid                    : 'io.reactivex:rxandroid:' + depsVersion.rxAndroidVersion,
-            okhttp                       : 'com.squareup.okhttp3:okhttp:' + depsVersion.okhttpVersion,
-            retrofit                     : 'com.squareup.retrofit2:retrofit:' + depsVersion.retrofitVersion,
-            converterGson                : 'com.squareup.retrofit2:converter-gson:' + depsVersion.retrofitVersion,
-            adapterRxjava                : 'com.squareup.retrofit2:adapter-rxjava:' + depsVersion.retrofitVersion,
+            butterknife        : 'com.jakewharton:butterknife:' + depsVersion.butterknifeVersion,
+            butterknifeCompiler: 'com.jakewharton:butterknife-compiler:' + depsVersion.butterknifeVersion,
+            rxjava             : 'io.reactivex:rxjava:' + depsVersion.rxJavaVersion,
+            rxandroid          : 'io.reactivex:rxandroid:' + depsVersion.rxAndroidVersion,
+            okhttp             : 'com.squareup.okhttp3:okhttp:' + depsVersion.okhttpVersion,
+            retrofit           : 'com.squareup.retrofit2:retrofit:' + depsVersion.retrofitVersion,
+            converterGson      : 'com.squareup.retrofit2:converter-gson:' + depsVersion.retrofitVersion,
+            adapterRxjava      : 'com.squareup.retrofit2:adapter-rxjava:' + depsVersion.retrofitVersion,
 
-            glide                        : 'com.github.bumptech.glide:glide:' + depsVersion.glideVersion,
+            glide              : 'com.github.bumptech.glide:glide:' + depsVersion.glideVersion,
 
-            supertoasts                  : 'com.github.johnpersano:supertoasts:' + depsVersion.supertoastsVersion,
-            alerter                      : 'com.tapadoo.android:alerter:' + depsVersion.alerterVersion,
+            supertoasts        : 'com.github.johnpersano:supertoasts:' + depsVersion.supertoastsVersion,
+            alerter            : 'com.tapadoo.android:alerter:' + depsVersion.alerterVersion,
 
-            circleimageview              : 'de.hdodenhof:circleimageview:' + depsVersion.circleimageviewVersion,
-            systembartint                : 'com.readystatesoftware.systembartint:systembartint:' + depsVersion.systembartintVersion,
-            photoView                    : 'com.commit451:PhotoView:' + depsVersion.photoViewVersion,
+            circleimageview    : 'de.hdodenhof:circleimageview:' + depsVersion.circleimageviewVersion,
+            systembartint      : 'com.readystatesoftware.systembartint:systembartint:' + depsVersion.systembartintVersion,
+            photoView          : 'com.commit451:PhotoView:' + depsVersion.photoViewVersion,
+
+            tagGroup           : 'me.gujun.android.taggroup:library:' + depsVersion.tagGroupVersion,
+            analytics          : 'com.umeng.analytics:analytics:' + depsVersion.analyticsVersion,
+            activityOnCrash    : 'cat.ereza:customactivityoncrash:' + depsVersion.activityOnCrashVersion,
+            stickyListHeaders  : 'se.emilsjolander:stickylistheaders:' + depsVersion.stickyListHeadersVersion,
+            stickyGridHeaders  : 'com.github.TonicArtos:StickyGridHeaders:' + depsVersion.stickyGridHeadersVersion,
+            materialDialogs    : 'com.afollestad.material-dialogs:core:' + depsVersion.materialDialogsVersion,
+            leakcanary         : 'com.squareup.leakcanary:leakcanary-android:' + depsVersion.leakcanaryVersion,
+            leakcanaryNp       : 'com.squareup.leakcanary:leakcanary-android-no-op:' + depsVersion.leakcanaryVersion,
+            jodatime           : 'joda-time:joda-time:' + depsVersion.jodatimeVersion,
+            gif                : 'pl.droidsonroids.gif:android-gif-drawable:' + depsVersion.gifVersion,
+            recyclerLib        : 'com.gxut.ui:recyclerlibrary:' + depsVersion.recyclerLib,
+            vlayout            : 'com.alibaba.android:vlayout:' + depsVersion.vlayoutVersion,
+            BaseRecyclerViewAdapterHelper: 'com.github.CymChad:BaseRecyclerViewAdapterHelper:' + depsVersion.BaseRecyclerViewAdapterHelperVersion,
+            addSubUtils        : 'com.mengfei:AddSubUtils:'+depsVersion.addSubUtilsVersion
 
-            tagGroup                     : 'me.gujun.android.taggroup:library:' + depsVersion.tagGroupVersion,
-            analytics                    : 'com.umeng.analytics:analytics:' + depsVersion.analyticsVersion,
-            activityOnCrash              : 'cat.ereza:customactivityoncrash:' + depsVersion.activityOnCrashVersion,
-            stickyListHeaders            : 'se.emilsjolander:stickylistheaders:' + depsVersion.stickyListHeadersVersion,
-            stickyGridHeaders            : 'com.github.TonicArtos:StickyGridHeaders:' + depsVersion.stickyGridHeadersVersion,
-            materialDialogs              : 'com.afollestad.material-dialogs:core:' + depsVersion.materialDialogsVersion,
-            leakcanary                   : 'com.squareup.leakcanary:leakcanary-android:' + depsVersion.leakcanaryVersion,
-            leakcanaryNp                 : 'com.squareup.leakcanary:leakcanary-android-no-op:' + depsVersion.leakcanaryVersion,
-            jodatime                     : 'joda-time:joda-time:' + depsVersion.jodatimeVersion,
-            gif                          : 'pl.droidsonroids.gif:android-gif-drawable:' + depsVersion.gifVersion,
-            recyclerLib                  : 'com.gxut.ui:recyclerlibrary:' + depsVersion.recyclerLib,
-            vlayout                      : 'com.alibaba.android:vlayout:' + depsVersion.vlayoutVersion,
-            BaseRecyclerViewAdapterHelper: 'com.github.CymChad:BaseRecyclerViewAdapterHelper:' + depsVersion.BaseRecyclerViewAdapterHelperVersion
     ]
 }