Browse Source

提交类型 处理bug
提交内容 1.抢商机的闪退bug,起因是在itemClick里面没有判断,数组越界
2.审批界面,恢复原有的配置,由于后台的要求,修改参数,最后发现是错误的
3.一元捐多项修改

冲突:无

Bitliker 8 years ago
parent
commit
4f636996a3
30 changed files with 1358 additions and 168 deletions
  1. 3 3
      WeiChat/version.properties
  2. 1 1
      app_core/common/src/main/java/com/core/app/Constants.java
  3. 0 56
      app_modular/appbooking/src/main/java/com/modular/booking/model/TestString.java
  4. 2 2
      app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java
  5. 3 2
      app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java
  6. 1 1
      app_modular/apputils/src/main/java/com/modular/apputils/utils/SwitchUtil.java
  7. 157 0
      app_modular/apputils/src/main/java/com/modular/apputils/utils/TestStr.java
  8. 46 0
      app_modular/apputils/src/main/java/com/modular/apputils/widget/SpaceItemDecoration.java
  9. 87 0
      app_modular/apputils/src/main/java/com/modular/apputils/widget/TravelDirectionView.java
  10. 11 0
      app_modular/apputils/src/main/res/drawable/round_bg.xml
  11. 2 0
      app_modular/apputils/src/main/res/values/color.xml
  12. 5 0
      app_modular/apputils/src/main/res/values/dimens.xml
  13. 1 0
      app_modular/apputils/src/main/res/values/ids.xml
  14. 6 1
      app_modular/apputils/src/main/res/values/style.xml
  15. 1 0
      app_modular/appworks/build.gradle
  16. 69 60
      app_modular/appworks/src/main/AndroidManifest.xml
  17. 14 12
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/BusinessDetailActivty.java
  18. 3 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/ChangeMobileActivity.java
  19. 122 0
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/BusinessTravelActivity.java
  20. 2 2
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/CharitSearchActivity.java
  21. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/JoinCharitActivity.java
  22. 243 0
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/adapter/BusinessTravelAdapter.java
  23. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/fragment/ActivityFragment.java
  24. 7 22
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/fragment/CharitableListFragment.java
  25. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/fragment/UserFragment.java
  26. 242 0
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/model/BusinessTravel.java
  27. 18 0
      app_modular/appworks/src/main/res/layout/activity_business_travel.xml
  28. 277 0
      app_modular/appworks/src/main/res/layout/item_bus_travel_hotel.xml
  29. 32 0
      app_modular/appworks/src/main/res/layout/item_bus_travel_title.xml
  30. 0 2
      app_modular/appworks/src/main/res/values/strings.xml

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Mon Dec 11 16:07:47 CST 2017
-debugName=115
+#Tue Dec 12 16:48:16 CST 2017
+debugName=134
 versionName=618
-debugCode=115
+debugCode=134
 versionCode=157

+ 1 - 1
app_core/common/src/main/java/com/core/app/Constants.java

@@ -24,7 +24,7 @@ public class Constants {
     }
 
     public static String charitBaseUrl() {
-        return "http://lj.ubtob.com/";
+        return "http://lj.ubtob.com/app/";
     }
 
     //通讯录表

+ 0 - 56
app_modular/appbooking/src/main/java/com/modular/booking/model/TestString.java

@@ -1,56 +0,0 @@
-package com.modular.booking.model;
-
-/**
- * Created by Bitliker on 2017/10/10.
- */
-
-public class TestString {
-	public static final String STORE_SERVICE = "{\n" +
-			"    \"result\": [\n" +
-			"        {\n" +
-			"            \"st_companyid\": \"201\",\n" +
-			"            \"st_companyname\": \"北大医院\",\n" +
-			"            \"st_id\": \"10002\",\n" +
-			"            \"st_name\": \"眼科\",\n" +
-			"            \"st_siid\": \"10001\"\n" +
-			"        },\n" +
-			"        {\n" +
-			"            \"st_companyid\": \"201\",\n" +
-			"            \"st_companyname\": \"北大医院\",\n" +
-			"            \"st_id\": \"10003\",\n" +
-			"            \"st_name\": \"外科\",\n" +
-			"            \"st_siid\": \"10001\"\n" +
-			"        },\n" +
-			"        {\n" +
-			"            \"st_companyid\": \"201\",\n" +
-			"            \"st_companyname\": \"北大医院\",\n" +
-			"            \"st_id\": \"10001\",\n" +
-			"            \"st_name\": \"骨科\",\n" +
-			"            \"st_siid\": \"10001\"\n" +
-			"        },\n" +
-			"        {\n" +
-			"            \"st_companyid\": \"201\",\n" +
-			"            \"st_companyname\": \"北大医院\",\n" +
-			"            \"st_id\": \"10004\",\n" +
-			"            \"st_name\": \"内科\",\n" +
-			"            \"st_siid\": \"10001\"\n" +
-			"        }\n" +
-			"    ]\n" +
-			"}";
-
-	public static final String SERVICE_MAN = "{\n" +
-			"    \"result\": [\n" +
-			"        {\n" +
-			"            \"sm_companyid\": \"201\",\n" +
-			"            \"sm_companyname\": \"北大医院\",\n" +
-			"            \"sm_id\": \"10002\",\n" +
-			"            \"sm_level\": \"医师\",\n" +
-			"            \"sm_stid\": \"10002\",\n" +
-			"            \"sm_stname\": \"眼科\",\n" +
-			"            \"sm_telephone\": \"13910000002\",\n" +
-			"            \"sm_userid\": \"2\",\n" +
-			"            \"sm_username\": \"张四\"\n" +
-			"        }\n" +
-			"    ]\n" +
-			"}";
-}

+ 2 - 2
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java

@@ -454,7 +454,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
         param.put("master", master);
         param.put("id", record.id);
         param.put("isprocess", 1);
-        param.put("config", 0);
+        param.put("config", 1);
         Request.Bulider bulider = new Request.Bulider()
                 .setUrl(url)
                 .setWhat(LOAD_FORMAND_GRIDDATA)
@@ -1046,7 +1046,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
             resultBuilder.append(result);
         }
         if (!StringUtil.isEmpty(description)) {
-            resultBuilder.append("(" + description + ")");
+            resultBuilder.append("(" + description.replace("\\n","\n") + ")");
         }
         approval.setIdKey(resultBuilder.toString());
         approval.setValuesKey(nodeName);

+ 3 - 2
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/MessagePresenter.java

@@ -63,6 +63,7 @@ import com.modular.apputils.utils.SwitchUtil;
 import com.modular.booking.activity.services.BServiceListActivity;
 import com.modular.booking.model.SBMenuModel;
 import com.uas.appworks.CRM.erp.activity.DeviceManageActivity;
+import com.uas.appworks.OA.platform.activity.BusinessTravelActivity;
 import com.uas.appworks.OA.platform.activity.CharitableActivity;
 
 import java.util.ArrayList;
@@ -1069,7 +1070,7 @@ public class MessagePresenter implements OnHttpResultListener {
         }
 
         if (SwitchUtil.showYiyuanjuan()) {
-            model = new MessageHeader("一元捐");
+            model = new MessageHeader("差旅");
             model.setIcon(R.drawable.uu_run);
             model.setSubDoc("");
             model.setRedKey(Constants.MESSAGE_RUN);
@@ -1265,7 +1266,7 @@ public class MessagePresenter implements OnHttpResultListener {
                 ct.startActivity(intent);
                 break;
             case 9:
-                intent = new Intent(ct, CharitableActivity.class);
+                intent = new Intent(ct, BusinessTravelActivity.class);
                 ct.startActivity(intent);
                 break;
             case 10:

+ 1 - 1
app_modular/apputils/src/main/java/com/modular/apputils/utils/SwitchUtil.java

@@ -11,7 +11,7 @@ public class SwitchUtil {
     }
 
     public static boolean showShebeiguanli() {
-        return true;
+        return false;
     }
 
 

+ 157 - 0
app_modular/apputils/src/main/java/com/modular/apputils/utils/TestStr.java

@@ -0,0 +1,157 @@
+package com.modular.apputils.utils;
+
+/**
+ * Created by Bitlike on 2017/12/12.
+ */
+
+public class TestStr {
+
+   public static final String FEEPLEASE= "{\n"+
+            "\t\"sessionId\": \"D71D476BF5EB594EDB54BF46ED12A404\",\n"+
+            "\t\"listdata\": [{\n"+
+            "\t\t\"fp_id\": 42568,\n"+
+            "\t\t\"fp_preenddate\": \"2017-09-30 14:30:00\",\n"+
+            "\t\t\"fp_prestartdate\": \"2017-09-29 09:00:00\",\n"+
+            "\t\t\"fp_code\": \"FP17090084\",\n"+
+            "\t\t\"fp_v3\": \"出差事由\",\n"+
+            "\t\t\"fp_people2\": \"出差人员编号\",\n"+
+            "\t\t\"reimbursement\": [{\n"+
+            "\t\t\t\"type\": \"train\",\n"+
+            "\t\t\t\"fpd_id\": 0121,\n"+
+            "\t\t\t\"fpd_code\": \"2017004010300\",\n"+
+            "\t\t\t\"fpd_starting\": \"深圳\",\n"+
+            "\t\t\t\"fpd_destination\": \"上海\",\n"+
+            "\t\t\t\"fpd_start_time\": 1513041215000,\n"+
+            "\t\t\t\"fpd_end_time\": 1513098815000,\n"+
+            "\t\t\t\"fpd_status\": \"已提交\",\n"+
+            "\t\t\t\"fpd_order_type\": \"成人票\",\n"+
+            "\t\t\t\"fpd_seat\": \"04车12D\",\n"+
+            "\t\t\t\"fpd_real_fee\": \"540\",\n"+
+            "\t\t\t\"fpd_expecte_fee\": \"500\",\n"+
+            "\t\t\t\"fpd_level\": \"一等座\",\n"+
+            "\t\t\t\"fpd_city\": \"深圳\",\n"+
+            "\t\t\t\"fpd_address\": null,\n"+
+            "\t\t\t\"fpd_all_time\": 280000,\n"+
+            "\t\t\t\"fpd_pay_type\": \"公司代付\",\n"+
+            "\t\t\t\"fpd_business_name\": \"深圳北站\",\n"+
+            "\t\t\t\"fpd_number\": \"1\",\n"+
+            "\t\t\t\"fpd_remark\": \"2017年12月12日,订单提交\"\n"+
+            "\t\t},{\n"+
+            "\t\t\t\"type\": \"air\",\n"+
+            "\t\t\t\"fpd_id\": 0122,\n"+
+            "\t\t\t\"fpd_code\": \"2017004010301\",\n"+
+            "\t\t\t\"fpd_starting\": \"深圳\",\n"+
+            "\t\t\t\"fpd_destination\": \"上海\",\n"+
+            "\t\t\t\"fpd_start_time\": 1513041215000,\n"+
+            "\t\t\t\"fpd_end_time\": 1513098815000,\n"+
+            "\t\t\t\"fpd_status\": \"已提交\",\n"+
+            "\t\t\t\"fpd_order_type\": \"成人票\",\n"+
+            "\t\t\t\"fpd_seat\": \"04车12D\",\n"+
+            "\t\t\t\"fpd_real_fee\": \"540\",\n"+
+            "\t\t\t\"fpd_expecte_fee\": \"500\",\n"+
+            "\t\t\t\"fpd_level\": \"头等舱\",\n"+
+            "\t\t\t\"fpd_city\": \"深圳\",\n"+
+            "\t\t\t\"fpd_address\": null,\n"+
+            "\t\t\t\"fpd_all_time\": 280000,\n"+
+            "\t\t\t\"fpd_pay_type\": \"公司代付\",\n"+
+            "\t\t\t\"fpd_business_name\": \"深圳北站\",\n"+
+            "\t\t\t\"fpd_number\": \"1\",\n"+
+            "\t\t\t\"fpd_remark\": \"2017年12月12日,订单提交\"\n"+
+            "\t\t},\n"+
+            "\t\t{\n"+
+            "\t\t\t\"type\": \"hotel\",\n"+
+            "\t\t\t\"fpd_id\": 0123,\n"+
+            "\t\t\t\"fpd_code\": \"2017004010302\",\n"+
+            "\t\t\t\"fpd_starting\": null,\n"+
+            "\t\t\t\"fpd_destination\":null,\n"+
+            "\t\t\t\"fpd_start_time\": 1513041215000,\n"+
+            "\t\t\t\"fpd_end_time\": 1513098815000,\n"+
+            "\t\t\t\"fpd_status\": \"可订购\",\n"+
+            "\t\t\t\"fpd_order_type\": \"全票\",\n"+
+            "\t\t\t\"fpd_seat\": null,\n"+
+            "\t\t\t\"fpd_real_fee\": \"540\",\n"+
+            "\t\t\t\"fpd_expecte_fee\": \"500\",\n"+
+            "\t\t\t\"fpd_level\": \"豪华单间\",\n"+
+            "\t\t\t\"fpd_city\": \"深圳\",\n"+
+            "\t\t\t\"fpd_address\": \"深圳天上人间\",\n"+
+            "\t\t\t\"fpd_all_time\": 280000,\n"+
+            "\t\t\t\"fpd_pay_type\": \"公司代付\",\n"+
+            "\t\t\t\"fpd_business_name\": \"天上人间\",\n"+
+            "\t\t\t\"fpd_number\": \"1\",\n"+
+            "\t\t\t\"fpd_remark\": \"2017年12月12日,订单提交\"\n"+
+            "\t\t}]\n"+
+            "\t},{\n"+
+            "\t\t\"fp_id\": 42568,\n"+
+            "\t\t\"fp_preenddate\": \"2017-09-30 14:30:00\",\n"+
+            "\t\t\"fp_prestartdate\": \"2017-09-29 09:00:00\",\n"+
+            "\t\t\"fp_code\": \"FP17090084\",\n"+
+            "\t\t\"fp_v3\": \"出差事由\",\n"+
+            "\t\t\"fp_people2\": \"出差人员编号\",\n"+
+            "\t\t\"reimbursement\": [{\n"+
+            "\t\t\t\"type\": \"train\",\n"+
+            "\t\t\t\"fpd_id\": 0121,\n"+
+            "\t\t\t\"fpd_code\": \"2017004010300\",\n"+
+            "\t\t\t\"fpd_starting\": \"深圳\",\n"+
+            "\t\t\t\"fpd_destination\": \"上海\",\n"+
+            "\t\t\t\"fpd_start_time\": 1513041215000,\n"+
+            "\t\t\t\"fpd_end_time\": 1513098815000,\n"+
+            "\t\t\t\"fpd_status\": \"已提交\",\n"+
+            "\t\t\t\"fpd_order_type\": \"成人票\",\n"+
+            "\t\t\t\"fpd_seat\": \"04车12D\",\n"+
+            "\t\t\t\"fpd_real_fee\": \"540\",\n"+
+            "\t\t\t\"fpd_expecte_fee\": \"500\",\n"+
+            "\t\t\t\"fpd_level\": \"一等座\",\n"+
+            "\t\t\t\"fpd_city\": \"深圳\",\n"+
+            "\t\t\t\"fpd_address\": null,\n"+
+            "\t\t\t\"fpd_all_time\": 280000,\n"+
+            "\t\t\t\"fpd_pay_type\": \"公司代付\",\n"+
+            "\t\t\t\"fpd_business_name\": \"深圳北站\",\n"+
+            "\t\t\t\"fpd_number\": \"1\",\n"+
+            "\t\t\t\"fpd_remark\": \"2017年12月12日,订单提交\"\n"+
+            "\t\t},{\n"+
+            "\t\t\t\"type\": \"air\",\n"+
+            "\t\t\t\"fpd_id\": 0122,\n"+
+            "\t\t\t\"fpd_code\": \"2017004010301\",\n"+
+            "\t\t\t\"fpd_starting\": \"深圳\",\n"+
+            "\t\t\t\"fpd_destination\": \"上海\",\n"+
+            "\t\t\t\"fpd_start_time\": 1513041215000,\n"+
+            "\t\t\t\"fpd_end_time\": 1513098815000,\n"+
+            "\t\t\t\"fpd_status\": \"已提交\",\n"+
+            "\t\t\t\"fpd_order_type\": \"成人票\",\n"+
+            "\t\t\t\"fpd_seat\": \"04车12D\",\n"+
+            "\t\t\t\"fpd_real_fee\": \"540\",\n"+
+            "\t\t\t\"fpd_expecte_fee\": \"500\",\n"+
+            "\t\t\t\"fpd_level\": \"头等舱\",\n"+
+            "\t\t\t\"fpd_city\": \"深圳\",\n"+
+            "\t\t\t\"fpd_address\": null,\n"+
+            "\t\t\t\"fpd_all_time\": 280000,\n"+
+            "\t\t\t\"fpd_pay_type\": \"公司代付\",\n"+
+            "\t\t\t\"fpd_business_name\": \"深圳北站\",\n"+
+            "\t\t\t\"fpd_number\": \"1\",\n"+
+            "\t\t\t\"fpd_remark\": \"2017年12月12日,订单提交\"\n"+
+            "\t\t},\n"+
+            "\t\t{\n"+
+            "\t\t\t\"type\": \"hotel\",\n"+
+            "\t\t\t\"fpd_id\": 0123,\n"+
+            "\t\t\t\"fpd_code\": \"2017004010302\",\n"+
+            "\t\t\t\"fpd_starting\": null,\n"+
+            "\t\t\t\"fpd_destination\":null,\n"+
+            "\t\t\t\"fpd_start_time\": 1513041215000,\n"+
+            "\t\t\t\"fpd_end_time\": 1513098815000,\n"+
+            "\t\t\t\"fpd_status\": \"可订购\",\n"+
+            "\t\t\t\"fpd_order_type\": \"全票\",\n"+
+            "\t\t\t\"fpd_seat\": null,\n"+
+            "\t\t\t\"fpd_real_fee\": \"540\",\n"+
+            "\t\t\t\"fpd_expecte_fee\": \"500\",\n"+
+            "\t\t\t\"fpd_level\": \"豪华单间\",\n"+
+            "\t\t\t\"fpd_city\": \"深圳\",\n"+
+            "\t\t\t\"fpd_address\": \"深圳天上人间\",\n"+
+            "\t\t\t\"fpd_all_time\": 280000,\n"+
+            "\t\t\t\"fpd_pay_type\": \"公司代付\",\n"+
+            "\t\t\t\"fpd_business_name\": \"天上人间\",\n"+
+            "\t\t\t\"fpd_number\": \"1\",\n"+
+            "\t\t\t\"fpd_remark\": \"2017年12月12日,订单提交\"\n"+
+            "\t\t}]\n"+
+            "\t}]\n"+
+            "}";
+}

+ 46 - 0
app_modular/apputils/src/main/java/com/modular/apputils/widget/SpaceItemDecoration.java

@@ -0,0 +1,46 @@
+package com.modular.apputils.widget;
+
+import android.graphics.Rect;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+//RecyclerView的空间隔
+public class SpaceItemDecoration extends RecyclerView.ItemDecoration {
+    int mSpace;
+ 
+    /**
+     * Retrieve any offsets for the given item. Each field of <code>outRect</code> specifies
+     * the number of pixels that the item view should be inset by, similar to padding or margin.
+     * The default implementation sets the bounds of outRect to 0 and returns.
+     * <p>
+     * <p>
+     * If this ItemDecoration does not affect the positioning of item views, it should set
+     * all four fields of <code>outRect</code> (left, top, right, bottom) to zero
+     * before returning.
+     * <p>
+     * <p>
+     * If you need to access Adapter for additional data, you can call
+     * {@link RecyclerView#getChildAdapterPosition(View)} to get the adapter position of the
+     * View.
+     *
+     * @param outRect Rect to receive the output.
+     * @param view    The child view to decorate
+     * @param parent  RecyclerView this ItemDecoration is decorating
+     * @param state   The current state of RecyclerView.
+     */
+    @Override
+    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+        super.getItemOffsets(outRect, view, parent, state);
+        outRect.left = mSpace;
+        outRect.right = mSpace;
+        outRect.bottom = mSpace;
+        if (parent.getChildAdapterPosition(view) == 0) {
+            outRect.top = mSpace;
+        }
+ 
+    }
+ 
+    public SpaceItemDecoration(int space) {
+        this.mSpace = space;
+    }
+}

+ 87 - 0
app_modular/apputils/src/main/java/com/modular/apputils/widget/TravelDirectionView.java

@@ -0,0 +1,87 @@
+package com.modular.apputils.widget;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.support.annotation.Nullable;
+import android.util.AttributeSet;
+import android.view.View;
+
+import com.common.system.DisplayUtil;
+import com.modular.apputils.R;
+
+
+/**
+ * Created by Bitlike on 2017/12/12.
+ */
+
+public class TravelDirectionView extends View {
+
+    private int padding = 0;
+    private int paddingTop = 0;
+    private Paint paint;
+
+
+    private String title;
+    private String time;
+    private float titleSize;
+    private float timeSize = 0;
+
+
+    public TravelDirectionView(Context context) {
+        this(context, null);
+    }
+
+    public TravelDirectionView(Context context, @Nullable AttributeSet attrs) {
+        super(context, attrs);
+        title = "";
+        time = "";
+        float defTextSize = DisplayUtil.dip2px(context, 16);
+        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.TravelDirectionView);
+        timeSize = typedArray.getDimension(R.styleable.TravelDirectionView_timeSize, defTextSize);
+        titleSize = typedArray.getDimension(R.styleable.TravelDirectionView_titleSize, defTextSize);
+        title = typedArray.getString(R.styleable.TravelDirectionView_title);
+        time = typedArray.getString(R.styleable.TravelDirectionView_time);
+        typedArray.recycle();
+        padding = DisplayUtil.dip2px(context, 8);
+        paddingTop = DisplayUtil.dip2px(context, 3);
+        paint = new Paint();
+        paint.setColor(Color.WHITE);
+        paint.setAntiAlias(true);
+    }
+
+
+    public void  setData(String title,String time){
+        this.title = title;
+        this.time = time;
+        invalidate();
+    }
+    public void setTitle(String title) {
+        this.title = title;
+        invalidate();
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+        invalidate();
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        int height = getHeight();
+        int width = getWidth();
+        canvas.drawLine(padding, height / 2, width - padding, height / 2, paint);
+        canvas.drawLine(width - padding, height / 2, width - padding - padding, height / 2 - padding, paint);
+
+        paint.setTextSize(titleSize);
+        float titleLength = paint.measureText(title);
+        canvas.drawText(title, (width - titleLength) / 2, height / 2 - paddingTop, paint);
+        paint.setTextSize(timeSize);
+        float timeLength = paint.measureText(time);
+        canvas.drawText(time, (width - timeLength) / 2, height / 2 + paddingTop + timeSize, paint);
+
+    }
+}

+ 11 - 0
app_modular/apputils/src/main/res/drawable/round_bg.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android" >
+
+    <!-- solid 设置stroke设置的边框以内的颜色 -->
+    <solid android:color="#ffffff"/>
+    <!-- stroke主要设置组件的边框。width为边框宽度,color为边框颜色 -->
+    <stroke android:width="3dp" android:color="#ffffff" />
+    <!-- corners 设置边框四角弧度 -->
+    <corners android:radius="10dp"/>
+
+</shape>

+ 2 - 0
app_modular/apputils/src/main/res/values/color.xml

@@ -5,4 +5,6 @@
     <color name="activityed">#999999</color>
     <color name="reactivity">#ef613b</color>
     <color name="indianred_pass">#c84421</color>
+    <color name="cui">#5bbcaf</color>
+    <color name="cui_yellow">#89FC71</color>
 </resources>

+ 5 - 0
app_modular/apputils/src/main/res/values/dimens.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <dimen name="textXXL">20sp</dimen>
+    <dimen name="textXL">18sp</dimen>
+</resources>

+ 1 - 0
app_modular/apputils/src/main/res/values/ids.xml

@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <item name="tag_key" type="id"></item>
+    <item name="tag_key2" type="id"></item>
 </resources>

+ 6 - 1
app_modular/apputils/src/main/res/values/style.xml

@@ -4,5 +4,10 @@
         <item name="android:windowBackground"> @android:color/transparent </item>
         <item name="android:backgroundDimEnabled">false</item><!--activity不变暗-->
     </style>
-
+    <declare-styleable name="TravelDirectionView">
+        <attr name="title" format="string" />
+        <attr name="time" format="string" />
+        <attr name="titleSize" format="dimension" />
+        <attr name="timeSize" format="dimension" />
+    </declare-styleable>
 </resources>

+ 1 - 0
app_modular/appworks/build.gradle

@@ -22,4 +22,5 @@ dependencies {
     //project
     compile project(':apputils')
     compile project(path: ':imageload')
+    compile 'com.android.support.constraint:constraint-layout:1.0.2'
 }

+ 69 - 60
app_modular/appworks/src/main/AndroidManifest.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<manifest package="com.uas.appworks"
-          xmlns:android="http://schemas.android.com/apk/res/android">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.uas.appworks">
 
     <application
         android:allowBackup="true"
@@ -14,6 +14,7 @@
             android:theme="@style/OAThemeSignin">
             <intent-filter>
                 <action android:name="com.modular.plat.WorkDailyAddActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
@@ -28,46 +29,47 @@
             android:windowSoftInputMode="adjustPan">
             <intent-filter>
                 <action android:name="com.modular.oa.ExpenseReimbursementActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-        <activity android:name="com.uas.appworks.OA.erp.activity.CommonDocDetailsActivity" />
+        <activity android:name=".OA.erp.activity.CommonDocDetailsActivity" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.form.DataFormDetailActivity"
+            android:name=".OA.erp.activity.form.DataFormDetailActivity"
             android:hardwareAccelerated="false">
             <intent-filter>
                 <action android:name="com.modular.form.DataFormDetailActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-        <activity android:name="com.uas.appworks.OA.erp.activity.form.DataFormFieldActivity" />
+        <activity android:name=".OA.erp.activity.form.DataFormFieldActivity" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.form.FormListSelectActivity"
+            android:name=".OA.erp.activity.form.FormListSelectActivity"
             android:hardwareAccelerated="false"
             android:launchMode="singleTask"
             android:windowSoftInputMode="adjustPan" />
-
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.WorkActivity"
+            android:name=".OA.erp.activity.WorkActivity"
             android:label="@string/activity_signing">
             <intent-filter>
                 <action android:name="com.modular.work.WorkActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.TeamsAttShowActivity"
+            android:name=".OA.erp.activity.TeamsAttShowActivity"
             android:label="@string/sign_teams_rank" />
-
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.MeetDetailsActivity"
+            android:name=".OA.erp.activity.MeetDetailsActivity"
             android:label="@string/meet_detail"
             android:theme="@style/OAThemeMeet" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.DetailTaskActivity"
+            android:name=".OA.erp.activity.DetailTaskActivity"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.AddMeetingActivity"
+            android:name=".OA.erp.activity.AddMeetingActivity"
             android:label="@string/new_meet"
             android:launchMode="singleTask"
             android:screenOrientation="portrait"
@@ -75,151 +77,152 @@
             android:windowSoftInputMode="stateUnspecified|adjustNothing">
             <intent-filter>
                 <action android:name="com.modular.oa.AddMeetingActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.MeetingActivity"
+            android:name=".OA.erp.activity.MeetingActivity"
             android:label="@string/meet_manage"
             android:theme="@style/OAThemeMeet" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.SaveMeetActivity"
+            android:name=".OA.erp.activity.SaveMeetActivity"
             android:label="@string/meet_details"
             android:theme="@style/OAThemeMeet" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.AddMeetTaskActivity"
+            android:name=".OA.erp.activity.AddMeetTaskActivity"
             android:label="@string/meet_task"
             android:theme="@style/OAThemeMeet" />
-
-        <activity android:name="com.uas.appworks.CRM.erp.activity.DbfindListActivity" />
-        <activity android:name="com.uas.appworks.CRM.erp.activity.DbfindList2Activity" />
-
+        <activity android:name=".CRM.erp.activity.DbfindListActivity" />
+        <activity android:name=".CRM.erp.activity.DbfindList2Activity" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.BusinessActivity"
+            android:name=".CRM.erp.activity.BusinessActivity"
             android:theme="@style/CrmThemeBlue">
             <intent-filter>
                 <action android:name="com.modular.crm.BusinessActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.BusinessDetailActivty"
+            android:name=".CRM.erp.activity.BusinessDetailActivty"
             android:theme="@style/CrmThemeBlue" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.BusinessDetailInfoActivity"
+            android:name=".CRM.erp.activity.BusinessDetailInfoActivity"
             android:theme="@style/CrmThemeBlue" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.BusinessLessActivity"
+            android:name=".CRM.erp.activity.BusinessLessActivity"
             android:theme="@style/CrmThemeBlue" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.BusinessTransferActivity"
+            android:name=".CRM.erp.activity.BusinessTransferActivity"
             android:theme="@style/CrmThemeBlue" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.BusinessSelectCustomerActivity"
+            android:name=".CRM.erp.activity.BusinessSelectCustomerActivity"
             android:launchMode="singleTask"
             android:theme="@style/CrmThemeBlue"
             android:windowSoftInputMode="adjustResize|stateHidden" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.CustomerAddActivity"
+            android:name=".CRM.erp.activity.CustomerAddActivity"
             android:configChanges="orientation|keyboardHidden"
             android:theme="@style/CrmThemeBlue"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.BusinessAddActivity"
+            android:name=".CRM.erp.activity.BusinessAddActivity"
             android:configChanges="orientation|keyboardHidden"
             android:theme="@style/CrmThemeBlue"
             android:windowSoftInputMode="adjustUnspecified|stateHidden" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.BusinessStateActivity"
+            android:name=".CRM.erp.activity.BusinessStateActivity"
             android:launchMode="singleTask"
             android:theme="@style/CrmThemeBlue" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.AddBusinessActivity"
+            android:name=".CRM.erp.activity.AddBusinessActivity"
             android:label="@string/crm_creat_business" />
-        <activity android:name="com.uas.appworks.CRM.erp.activity.SearchSelectActivity" />
+        <activity android:name=".CRM.erp.activity.SearchSelectActivity" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.CustomerDetailActivity"
+            android:name=".CRM.erp.activity.CustomerDetailActivity"
             android:theme="@style/CrmThemeCustomer" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.CustomerListActivity"
+            android:name=".CRM.erp.activity.CustomerListActivity"
             android:theme="@style/CrmThemeCustomer">
             <intent-filter>
                 <action android:name="com.modular.crm.CustomerListActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.CustomerListSelectActivity"
+            android:name=".CRM.erp.activity.CustomerListSelectActivity"
             android:theme="@style/CrmThemeCustomer" />
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.UserSelectActivity"
+            android:name=".CRM.erp.activity.UserSelectActivity"
             android:label="@string/select_user" />
-
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.FlightsActivity"
+            android:name=".OA.erp.activity.FlightsActivity"
             android:label="@string/activity_flights" />
 
         <!-- 打卡2.0模块 -->
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.OfficeAddressSettingsActivity"
+            android:name=".OA.erp.activity.OfficeAddressSettingsActivity"
             android:label="@string/office_addr_setting" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.SignSeniorSettingActivity"
+            android:name=".OA.erp.activity.SignSeniorSettingActivity"
             android:label="@string/super_setting" />
-
-        <activity android:name="com.uas.appworks.OA.erp.activity.AddFlihtsActivity" />
+        <activity android:name=".OA.erp.activity.AddFlihtsActivity" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.MyRuleSetActivity"
+            android:name=".OA.erp.activity.MyRuleSetActivity"
             android:label="@string/my_rule_setting" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.HolidaysActivity"
+            android:name=".OA.erp.activity.HolidaysActivity"
             android:label="@string/holidays" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.StatisticsActivity"
+            android:name=".OA.erp.activity.StatisticsActivity"
             android:label="@string/work_statistics">
             <intent-filter>
                 <action android:name="com.modular.oa.StatisticsActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.ChangeMobileActivity"
+            android:name=".OA.erp.activity.ChangeMobileActivity"
             android:label="@string/change_mobile" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.MissionSetActivity"
+            android:name=".OA.erp.activity.MissionSetActivity"
             android:label="@string/activity_mission_set" />
         <activity
-            android:name="com.uas.appworks.OA.erp.activity.MissionActivity"
+            android:name=".OA.erp.activity.MissionActivity"
             android:label="@string/activity_mission_plan">
             <intent-filter>
                 <action android:name="com.modular.work.MissionActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
         <activity
-            android:name="com.uas.appworks.CRM.erp.activity.SalesRankingActivity"
+            android:name=".CRM.erp.activity.SalesRankingActivity"
             android:label="@string/crmmain_wall_of_fame"
             android:theme="@style/CrmThemeRank">
             <intent-filter>
                 <action android:name="com.modular.crm.SalesRankingActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
-        <!--工作汇报-->
+        <!-- 工作汇报 -->
         <activity
             android:name=".OA.erp.activity.WorkReportMenuActivity"
             android:launchMode="singleTask">
             <intent-filter>
                 <action android:name="com.modular.work.WorkReportMenuActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
         <activity
             android:name=".OA.erp.activity.WorkReportAddActivity"
             android:windowSoftInputMode="adjustResize|stateHidden" />
-
         <activity
             android:name=".OA.platform.activity.CharitableActivity"
             android:configChanges="keyboardHidden|orientation"
@@ -230,51 +233,54 @@
             android:windowSoftInputMode="stateUnspecified|adjustNothing">
             <intent-filter>
                 <action android:name="com.modular.work.CharitableActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
         <activity android:name=".OA.platform.activity.CharitSearchActivity" />
-        <activity android:name=".OA.platform.activity.JoinCharitActivity"></activity>
+        <activity android:name=".OA.platform.activity.JoinCharitActivity" />
 
-        <!--工作台模块设置页面-->
+        <!-- 工作台模块设置页面 -->
         <activity android:name=".activity.WorkModuleSortActivity">
             <intent-filter>
                 <action android:name="com.modular.work.WorkModuleSortActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-        <!--工作台应用设置页面-->
+        <!-- 工作台应用设置页面 -->
         <activity android:name=".activity.WorkFuncSetActivity">
             <intent-filter>
                 <action android:name="com.modular.work.WorkFuncSetActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
-        <!--产城服务主页面-->
+        <!-- 产城服务主页面 -->
         <activity
             android:name=".activity.CityIndustryServiceMainActivity"
             android:theme="@style/SplashTheme">
             <intent-filter>
                 <action android:name="com.modular.cityIndustry.CityIndustryServiceMainActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity android:name=".activity.CityIndustryFuncSetActivity">
             <intent-filter>
                 <action android:name="com.modular.work.CityIndustryFuncSetActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity android:name=".activity.CommonDataFormActivity">
             <intent-filter>
                 <action android:name="com.modular.work.CommonDataFormActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity
             android:name=".activity.CommonFormListActivity"
             android:hardwareAccelerated="false"
@@ -282,13 +288,14 @@
             android:windowSoftInputMode="adjustPan">
             <intent-filter>
                 <action android:name="com.modular.work.CommonFormListActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
         <activity android:name=".activity.CommonCityIndustryDetailsActivity">
             <intent-filter>
                 <action android:name="com.modular.work.CommonCityIndustryDetailsActivity" />
+
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
@@ -302,5 +309,7 @@
         <activity
             android:name=".CRM.erp.activity.DeviceInputListActivity"
             android:label="@string/title_device_manage" />
+        <activity android:name=".OA.platform.activity.BusinessTravelActivity"></activity>
     </application>
-</manifest>
+
+</manifest>

+ 14 - 12
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/BusinessDetailActivty.java

@@ -287,18 +287,20 @@ public class BusinessDetailActivty extends BaseActivity {
             holder.iv_event.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    if (mdata.get(position).getType() == 1) {
-                        bc_code = mdata.get(position).getNum();
-                        progressDialog.show();
-                        String url = CommonUtil.getAppBaseUrl(ct) + "mobile/crm/ifoverrecv.action";
-                        Map<String, Object> stringMap = new HashMap<String, Object>();
-                        stringMap.put("emcode", CommonUtil.getSharedPreferences(ct, "erp_emname"));
-                        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
-                        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
-                        ViewUtil.httpSendRequest(ct, url, stringMap, mHandler, headers, CAN_QIANG_NOT, null, null, "post");
-                    } else if (mdata.get(position).getType() == 2) {
-                        bc_code = mdata.get(position).getNum();
-                        startActivityForResult(new Intent(ct, DbfindList2Activity.class), 1);
+                    if (ListUtils.getSize(mdata)>position){
+                        if (mdata.get(position).getType() == 1) {
+                            bc_code = mdata.get(position).getNum();
+                            progressDialog.show();
+                            String url = CommonUtil.getAppBaseUrl(ct) + "mobile/crm/ifoverrecv.action";
+                            Map<String, Object> stringMap = new HashMap<String, Object>();
+                            stringMap.put("emcode", CommonUtil.getSharedPreferences(ct, "erp_emname"));
+                            LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+                            headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+                            ViewUtil.httpSendRequest(ct, url, stringMap, mHandler, headers, CAN_QIANG_NOT, null, null, "post");
+                        } else if (mdata.get(position).getType() == 2) {
+                            bc_code = mdata.get(position).getNum();
+                            startActivityForResult(new Intent(ct, DbfindList2Activity.class), 1);
+                        }
                     }
                 }
             });

+ 3 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/ChangeMobileActivity.java

@@ -133,7 +133,9 @@ public class ChangeMobileActivity extends BaseActivity {
                     Crouton.makeText(ct, showMessage);
                     break;
                 default:
-
+                if (progressDialog!=null){
+                    progressDialog.dismiss();
+                }
                     break;
             }
             submiting = false;

+ 122 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/BusinessTravelActivity.java

@@ -0,0 +1,122 @@
+package com.uas.appworks.OA.platform.activity;
+
+import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.config.BaseConfig;
+import com.common.data.JSONUtil;
+import com.core.base.BaseActivity;
+import com.core.utils.CommonUtil;
+import com.core.utils.ToastUtil;
+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.utils.TestStr;
+import com.modular.apputils.widget.SpaceItemDecoration;
+import com.module.recyclerlibrary.ui.refresh.BaseRefreshLayout;
+import com.uas.appworks.OA.platform.adapter.BusinessTravelAdapter;
+import com.uas.appworks.OA.platform.model.BusinessTravel;
+import com.uas.appworks.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BusinessTravelActivity extends BaseActivity {
+    private HttpClient httpClient = new HttpClient.Builder(CommonUtil.getAppBaseUrl(BaseConfig.getContext()))
+            .readTimeout(5000)
+            .connectTimeout(5000)
+            .add("master", CommonUtil.getMaster())
+            .add("sessionUser", CommonUtil.getEmcode())
+            .add("sessionId", CommonUtil.getSharedPreferences(BaseConfig.getContext(), "sessionId"))
+            .isDebug(true).build();
+    private BaseRefreshLayout mRefreshLayout;
+    private RecyclerView mRecyclerView;
+    private BusinessTravelAdapter mAdapter;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_business_travel);
+        initView();
+//        loadData();
+        try {
+            handlerData(null);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void initView() {
+        mRefreshLayout = findViewById(R.id.mRefreshLayout);
+        mRecyclerView = findViewById(R.id.mRecyclerView);
+    }
+
+
+    public void loadData() {
+        progressDialog.show();
+        httpClient.Api().send(new HttpClient.Builder()
+                .url("mobile/getFeePlease.action")
+                .add("emcode", CommonUtil.getEmcode())
+                .header("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(BaseConfig.getContext(), "sessionId"))
+                .method(Method.GET)
+                .build(), new ResultSubscriber<>(new ResultListener<Object>() {
+            @Override
+            public void onResponse(Object o) {
+                try {
+                    if (o != null) {
+                        handlerData(o.toString());
+                    }
+                } catch (Exception e) {
+                    if (e != null) {
+                        LogUtil.i("e=" + e.getMessage());
+                        ToastUtil.showToast(ct, e.getMessage());
+                    }
+
+                }
+                mRefreshLayout.stopRefresh();
+                progressDialog.dismiss();
+            }
+        }));
+    }
+
+    private void handlerData(String message) throws Exception {
+        LogUtil.i("message=" + message);
+        message = TestStr.FEEPLEASE;
+        JSONArray listdata = JSONUtil.getJSONArray(message, "listdata");
+        List<BusinessTravel> models = new ArrayList<>();
+        BusinessTravel model = null;
+        for (int i = 0; i < listdata.size(); i++) {
+            JSONObject data = listdata.getJSONObject(i);
+            model = new BusinessTravel();
+            model.setType(BusinessTravel.TITLE);
+            model.setCode(JSONUtil.getText(data, "fp_id"));
+            models.add(model);
+            JSONArray reimbursements = JSONUtil.getJSONArray(data, "reimbursement");
+            for (int j = 0; j < reimbursements.size(); j++) {
+                models.add(new BusinessTravel(reimbursements.getJSONObject(i)));
+            }
+        }
+        setAdapter(models);
+    }
+
+    private void setAdapter(List<BusinessTravel> models) {
+        if (mAdapter == null) {
+            mAdapter = new BusinessTravelAdapter(ct, models, new BusinessTravelAdapter.OnItemClickListener() {
+                @Override
+                public void click(int position, BusinessTravel model) {
+
+                }
+            });
+            mRecyclerView.addItemDecoration(new SpaceItemDecoration(30));
+            mRecyclerView.setLayoutManager(new LinearLayoutManager(ct));
+            mRecyclerView.setAdapter(mAdapter);
+        } else {
+            mAdapter.setModels(models);
+        }
+    }
+}

+ 2 - 2
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/CharitSearchActivity.java

@@ -131,7 +131,7 @@ public class CharitSearchActivity extends BaseActivity implements OnPlayListener
             return;
         }
         httpClient.Api().send(new HttpClient.Builder()
-                .url("app/activities")
+                .url("activities")
                 .add("keyWork", keyWork)
                 .add("status", "全部")
                 .method(Method.GET)
@@ -155,7 +155,7 @@ public class CharitSearchActivity extends BaseActivity implements OnPlayListener
 
     private void loadProjects(final String keyWork) {
         httpClient.Api().send(new HttpClient.Builder()
-                .url("app/projects")
+                .url("projects")
                 .add("area", "全部")
                 .add("search", keyWork)
                 .method(Method.GET)

+ 1 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/activity/JoinCharitActivity.java

@@ -122,7 +122,7 @@ public class JoinCharitActivity extends BaseActivity {
         progressDialog.show();
         HttpClient httpClient = new HttpClient.Builder(Constants.charitBaseUrl()).isDebug(true).build();
         HttpClient builder = new HttpClient.Builder()
-                .url("app/" + (type == 2 ? "joinActivity" : "donateDetail") + "/" + MyApplication.getInstance().getLoginUserId())
+                .url( (type == 2 ? "joinActivity" : "donateDetail") + "/" + MyApplication.getInstance().getLoginUserId())
                 .method(Method.GET)
                 .build();
         httpClient.Api().send(builder, new ResultSubscriber<>(new ResultListener<Object>() {

+ 243 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/adapter/BusinessTravelAdapter.java

@@ -0,0 +1,243 @@
+package com.uas.appworks.OA.platform.adapter;
+
+import android.content.Context;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.baidu.cyberplayer.utils.G;
+import com.common.data.DateFormatUtil;
+import com.common.data.ListUtils;
+import com.uas.appworks.OA.platform.model.BusinessTravel;
+import com.uas.appworks.R;
+
+import java.util.List;
+
+/**
+ * Created by Bitlike on 2017/12/12.
+ */
+
+public class BusinessTravelAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {
+    private Context ct;
+    private List<BusinessTravel> models;
+    private OnItemClickListener listener;
+
+    public BusinessTravelAdapter(Context ct, List<BusinessTravel> models, OnItemClickListener listener) {
+        this.ct = ct;
+        this.models = models;
+        this.listener = listener;
+    }
+
+
+    public void setModels(List<BusinessTravel> models) {
+        this.models = models;
+        notifyDataSetChanged();
+    }
+
+    public void addModels(List<BusinessTravel> models) {
+        int oldPosition = ListUtils.getSize(this.models);
+        this.models.addAll(models);
+        int position = ListUtils.getSize(this.models);
+        notifyItemRangeInserted(oldPosition, position);
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        return models.get(position).getType();
+    }
+
+    @Override
+    public int getItemCount() {
+        return ListUtils.getSize(models);
+    }
+
+    @Override
+    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        if (viewType == BusinessTravel.TITLE) {
+            return new TitleViewHolder(parent);
+        } else if (viewType == BusinessTravel.AIR) {
+            return new AirViewHolder(parent);
+        } else if (viewType == BusinessTravel.HOTEL) {
+            return new HotelViewHolder(parent);
+        }
+        return null;
+    }
+
+    @Override
+    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
+        if (holder != null) {
+            BusinessTravel model = models.get(position);
+            if (holder instanceof TitleViewHolder) {
+                bindTitleView((TitleViewHolder) holder, model);
+            } else if (holder instanceof AirViewHolder) {
+                bindAirView((AirViewHolder) holder, model, position);
+            } else if (holder instanceof HotelViewHolder) {
+                bindHotelView((HotelViewHolder) holder, model,position);
+            }
+
+        }
+    }
+
+    private void bindTitleView(TitleViewHolder holder, BusinessTravel model) {
+        holder.codeTv.setText(model.getCode());
+    }
+
+    private void bindAirView(AirViewHolder holder, BusinessTravel model, int position) {
+        holder.codeTv.setText("住宿:"+model.getCode());
+        holder.statusTv.setText(model.getStatus());
+        holder.levelTv.setText(model.getLevel());
+        holder.businessNameTv.setText(model.getBusinessName());
+        holder.whenLongTv.setText("共1天");
+        holder.numberTv.setText("1人");
+        holder.nameTv.setText("龚鹏明");
+        holder.idTypeTv.setText("二代身份证");
+        holder.idCardTv.setText("450122xxxxxxxxxx");
+        holder.roomsTv.setText("1间");
+        holder.seatTv.setText(model.getSeat());
+        holder.realFeeTv.setText(model.getRealFee());
+        holder.payTypeTv.setText(model.getPayType());
+        holder.addressTv.setText(model.getAddress());
+        holder.dateTv.setText(DateFormatUtil.long2Str(DateFormatUtil.YMD));
+        holder.numberSubTv.setText(model.getNumber() + "人");
+        holder.expecteFeeTv.setText(model.getExpecteFee());
+        holder.subRl.setVisibility(model.isExpand() ? View.VISIBLE : View.GONE);
+        holder.doneTv.setTag(R.id.tag_key, model);
+        holder.doneTv.setOnClickListener(this);
+        holder.expandTv.setTag(R.id.tag_key, model);
+        holder.expandTv.setTag(R.id.tag_key2, position);
+        holder.expandTv.setOnClickListener(this);
+    }
+
+    private void bindHotelView(HotelViewHolder holder, BusinessTravel model, int position) {
+        holder.codeTv.setText(model.getCode());
+        holder.statusTv.setText(model.getStatus());
+        holder.levelTv.setText(model.getLevel());
+        holder.businessNameTv.setText(model.getBusinessName());
+        holder.whenLongTv.setText("共1天");
+        holder.numberTv.setText("1人");
+        holder.nameTv.setText("龚鹏明");
+        holder.idTypeTv.setText("二代身份证");
+        holder.idCardTv.setText("450122xxxxxxxxxx");
+        holder.roomsTv.setText("1间");
+        holder.seatTv.setText(model.getSeat());
+        holder.realFeeTv.setText(model.getRealFee());
+        holder.payTypeTv.setText(model.getPayType());
+        holder.addressTv.setText(model.getAddress());
+        holder.dateTv.setText(DateFormatUtil.long2Str(DateFormatUtil.YMD));
+        holder.numberSubTv.setText(model.getNumber() + "人");
+        holder.expecteFeeTv.setText(model.getExpecteFee());
+        holder.subRl.setVisibility(model.isExpand() ? View.VISIBLE : View.GONE);
+        holder.doneTv.setTag(R.id.tag_key, model);
+        holder.doneTv.setOnClickListener(this);
+        holder.expandTv.setTag(R.id.tag_key, model);
+        holder.expandTv.setTag(R.id.tag_key2, position);
+        holder.expandTv.setOnClickListener(this);
+    }
+
+
+    private LayoutInflater inflater;
+
+    public LayoutInflater getInflater() {
+        return inflater == null ? inflater = LayoutInflater.from(ct) : inflater;
+    }
+
+    private class TitleViewHolder extends RecyclerView.ViewHolder {
+        TextView codeTv;
+
+        public TitleViewHolder(ViewGroup viewGroup) {
+            this(getInflater().inflate(R.layout.item_bus_travel_title, viewGroup, false));
+        }
+
+        public TitleViewHolder(View itemView) {
+            super(itemView);
+            codeTv = (TextView) itemView.findViewById(R.id.codeTv);
+        }
+    }
+
+    private class AirViewHolder extends RecyclerView.ViewHolder {
+        TextView codeTv, statusTv, levelTv, businessNameTv, whenLongTv, numberTv,
+                nameTv, idTypeTv, idCardTv, roomsTv, seatTv, realFeeTv, payTypeTv, doneTv, expandTv, addressTv, dateTv, numberSubTv, expecteFeeTv;
+        RelativeLayout subRl;
+
+        public AirViewHolder(ViewGroup viewGroup) {
+            this(getInflater().inflate(R.layout.item_bus_travel_hotel, viewGroup, false));
+        }
+
+        public AirViewHolder(View itemView) {
+            super(itemView);
+            subRl = itemView.findViewById(R.id.subRl);
+            codeTv = itemView.findViewById(R.id.codeTv);
+            statusTv = itemView.findViewById(R.id.statusTv);
+            levelTv = itemView.findViewById(R.id.statusTv);
+            businessNameTv = itemView.findViewById(R.id.statusTv);
+            whenLongTv = itemView.findViewById(R.id.statusTv);
+            numberTv = itemView.findViewById(R.id.statusTv);
+            nameTv = itemView.findViewById(R.id.statusTv);
+            idTypeTv = itemView.findViewById(R.id.statusTv);
+            idCardTv = itemView.findViewById(R.id.statusTv);
+            roomsTv = itemView.findViewById(R.id.statusTv);
+            seatTv = itemView.findViewById(R.id.statusTv);
+            realFeeTv = itemView.findViewById(R.id.statusTv);
+            payTypeTv = itemView.findViewById(R.id.statusTv);
+            doneTv = itemView.findViewById(R.id.statusTv);
+            expandTv = itemView.findViewById(R.id.statusTv);
+            addressTv = itemView.findViewById(R.id.statusTv);
+            dateTv = itemView.findViewById(R.id.statusTv);
+            numberSubTv = itemView.findViewById(R.id.statusTv);
+            expecteFeeTv = itemView.findViewById(R.id.statusTv);
+        }
+    }
+
+    private class HotelViewHolder extends RecyclerView.ViewHolder {
+        TextView codeTv, statusTv, levelTv, businessNameTv, whenLongTv, numberTv,
+                nameTv, idTypeTv, idCardTv, roomsTv, seatTv, realFeeTv, payTypeTv, doneTv, expandTv, addressTv, dateTv, numberSubTv, expecteFeeTv;
+        RelativeLayout subRl;
+
+        public HotelViewHolder(ViewGroup viewGroup) {
+            this(getInflater().inflate(R.layout.item_bus_travel_hotel, viewGroup, false));
+        }
+
+        public HotelViewHolder(View itemView) {
+            super(itemView);
+            subRl = itemView.findViewById(R.id.subRl);
+            codeTv = itemView.findViewById(R.id.codeTv);
+            statusTv = itemView.findViewById(R.id.statusTv);
+            levelTv = itemView.findViewById(R.id.statusTv);
+            businessNameTv = itemView.findViewById(R.id.statusTv);
+            whenLongTv = itemView.findViewById(R.id.statusTv);
+            numberTv = itemView.findViewById(R.id.statusTv);
+            nameTv = itemView.findViewById(R.id.statusTv);
+            idTypeTv = itemView.findViewById(R.id.statusTv);
+            idCardTv = itemView.findViewById(R.id.statusTv);
+            roomsTv = itemView.findViewById(R.id.statusTv);
+            seatTv = itemView.findViewById(R.id.statusTv);
+            realFeeTv = itemView.findViewById(R.id.statusTv);
+            payTypeTv = itemView.findViewById(R.id.statusTv);
+            doneTv = itemView.findViewById(R.id.statusTv);
+            expandTv = itemView.findViewById(R.id.statusTv);
+            addressTv = itemView.findViewById(R.id.statusTv);
+            dateTv = itemView.findViewById(R.id.statusTv);
+            numberSubTv = itemView.findViewById(R.id.statusTv);
+            expecteFeeTv = itemView.findViewById(R.id.statusTv);
+        }
+    }
+
+    @Override
+    public void onClick(View v) {
+        BusinessTravel model = (BusinessTravel) v.getTag(R.id.tag_key);
+        int position = (int) v.getTag(R.id.tag_key2);
+        if (v.getId() == R.id.expandTv) {
+            model.setExpand(!model.isExpand());
+            notifyItemChanged(position);
+        }
+    }
+
+
+    public interface OnItemClickListener {
+        void click(int position, BusinessTravel model);
+    }
+
+}

+ 1 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/fragment/ActivityFragment.java

@@ -164,7 +164,7 @@ public class ActivityFragment extends EasyFragment implements View.OnClickListen
         }
         baseActivity.progressDialog.show();
         httpClient.Api().send(new HttpClient.Builder()
-                .url("app/activities")
+                .url("activities")
                 .add("keyWork", keyWork)
                 .add("status", status)
                 .method(Method.GET)

+ 7 - 22
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/fragment/CharitableListFragment.java

@@ -139,8 +139,8 @@ public class CharitableListFragment extends EasyFragment implements OnPlayListen
     private void loadData() {
         if (NetUtils.isNetWorkConnected(ct)) {
             baseActivity.progressDialog.show();
-            loadIndexData();
             loadProjects("全部");
+            loadIndexData();
         } else {
             String appIndex = PreferenceUtils.getString("appIndex");
             String projects = PreferenceUtils.getString("projects");
@@ -161,9 +161,8 @@ public class CharitableListFragment extends EasyFragment implements OnPlayListen
 
     public void loadIndexData() {
         baseActivity.progressDialog.show();
-        LogUtil.i("loadIndexData");
         httpClient.Api().send(new HttpClient.Builder()
-                .url("app/appIndex")
+                .url("appIndex")
                 .method(Method.GET)
                 .build(), new ResultSubscriber<>(new ResultListener<Object>() {
             @Override
@@ -191,9 +190,7 @@ public class CharitableListFragment extends EasyFragment implements OnPlayListen
         JSONArray allArea = JSONUtil.getJSONArray(object, "allArea");
         try {
             String totality = JSONUtil.getText(object, "totality");
-            LogUtil.i("totality=" + totality);
             int dian = totality.indexOf(".");
-            LogUtil.i("dian=" + dian);
             String showTop = "";
             if (dian != -1) {
                 showTop = totality.substring(0, dian);
@@ -245,9 +242,8 @@ public class CharitableListFragment extends EasyFragment implements OnPlayListen
 
     private void loadProjects(final String area) {
         baseActivity.progressDialog.show();
-        LogUtil.i("loadProjects=" + area);
         httpClient.Api().send(new HttpClient.Builder()
-                .url("app/projects")
+                .url("projects")
                 .add("area", area)
                 .method(Method.GET)
                 .build(), new ResultSubscriber<>(new ResultListener<Object>() {
@@ -274,17 +270,6 @@ public class CharitableListFragment extends EasyFragment implements OnPlayListen
         JSONArray projectList = JSONUtil.getJSONArray(object, "projectList");
         String projectJSON = projectList.toJSONString();
         List<CharitModel> models = JSON.parseArray(projectJSON, CharitModel.class);
-//        List<CharitModel> showModels = null;
-//        if ("全部".equals(area) || area.length() <= 0) {
-//            showModels = models;
-//        } else {
-//            showModels = new ArrayList<>();
-//            for (CharitModel e : models) {
-//                if (e.getArea().equals(area)) {
-//                    showModels.add(e);
-//                }
-//            }
-//        }
         setContantData(models);
         PreferenceUtils.putString("projects", message);
     }
@@ -344,7 +329,7 @@ public class CharitableListFragment extends EasyFragment implements OnPlayListen
     private CharitableAdapter charitableAdapter;
 
     private void setContantData(List<CharitModel> models) {
-        if (charitableAdapter == null) {
+//        if (charitableAdapter == null) {
             charitableAdapter = new CharitableAdapter(ct, models, new CharitableAdapter.MyClickListener() {
                 @Override
                 public void myOnClick(int position, View v) {
@@ -381,9 +366,9 @@ public class CharitableListFragment extends EasyFragment implements OnPlayListen
                     }
                 }
             });
-        } else {
-            charitableAdapter.setModels(models);
-        }
+//        } else {
+//            charitableAdapter.setModels(models);
+//        }
     }
 
 

+ 1 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/fragment/UserFragment.java

@@ -88,7 +88,7 @@ public class UserFragment extends EasyFragment implements View.OnClickListener {
             return;
         }
         httpClient.Api().send(new HttpClient.Builder()
-                .url("app/center")
+                .url("center")
                 .add("imid", MyApplication.getInstance().getLoginUserId())
                 .method(Method.GET)
                 .build(), new ResultSubscriber<>(new ResultListener<Object>() {

+ 242 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/model/BusinessTravel.java

@@ -0,0 +1,242 @@
+package com.uas.appworks.OA.platform.model;
+
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+
+
+/**
+ * Created by Bitlike on 2017/12/12.
+ */
+
+public class BusinessTravel {
+    public static final int TITLE = 1;
+    public static final int AIR = 2;//
+    public static final int HOTEL = 3;
+    private boolean expand;
+    private int id;
+    private int type;
+    private int number;
+    private long allTime;
+    private long startTime;
+    private long endTime;
+    private String code;
+    private String starting;
+    private String destination;
+    private String status;
+    private String orderType;
+    private String seat;
+    private String realFee;
+    private String expecteFee;
+    private String level;
+    private String city;
+    private String address;
+    private String payType;
+    private String businessName;
+    private String remark;
+
+    public BusinessTravel() {
+    }
+
+    public BusinessTravel(JSONObject reimbursement) {
+        try {
+            id = JSONUtil.getInt(reimbursement, "fpd_id");
+            String type = JSONUtil.getText(reimbursement, "type");
+            code = JSONUtil.getText(reimbursement, "fpd_code");
+            starting = JSONUtil.getText(reimbursement, "fpd_starting");
+            destination = JSONUtil.getText(reimbursement, "fpd_destination");
+            startTime = JSONUtil.getLong(reimbursement, "fpd_start_time");
+            endTime = JSONUtil.getLong(reimbursement, "fpd_end_time");
+            status = JSONUtil.getText(reimbursement, "fpd_status");
+            orderType = JSONUtil.getText(reimbursement, "fpd_order_type");
+            seat = JSONUtil.getText(reimbursement, "fpd_seat");
+            realFee = JSONUtil.getText(reimbursement, "fpd_real_fee");
+            expecteFee = JSONUtil.getText(reimbursement, "fpd_expecte_fee");
+            level = JSONUtil.getText(reimbursement, "fpd_level");
+            city = JSONUtil.getText(reimbursement, "fpd_city");
+            address = JSONUtil.getText(reimbursement, "fpd_address");
+            allTime = JSONUtil.getLong(reimbursement, "fpd_all_time");
+            number = JSONUtil.getInt(reimbursement, "fpd_number");
+            payType = JSONUtil.getText(reimbursement, "fpd_pay_type");
+            businessName = JSONUtil.getText(reimbursement, "fpd_business_name");
+            remark = JSONUtil.getText(reimbursement, "fpd_remark");
+            if (type.equals("train") || type.equals("air")) {
+                this.type = AIR;
+            } else if (type.equals("hotel")) {
+                this.type = HOTEL;
+            } else {
+                this.type = TITLE;
+            }
+        } catch (Exception e) {
+            LogUtil.i("e="+e.getMessage());
+        }
+    }
+
+    public boolean isExpand() {
+        return expand;
+    }
+
+    public void setExpand(boolean expand) {
+        this.expand = expand;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public long getAllTime() {
+        return allTime;
+    }
+
+    public void setAllTime(long allTime) {
+        this.allTime = allTime;
+    }
+
+    public long getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(long startTime) {
+        this.startTime = startTime;
+    }
+
+    public long getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(long endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getCode() {
+        return code==null?"":code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getStarting() {
+        return starting;
+    }
+
+    public void setStarting(String starting) {
+        this.starting = starting;
+    }
+
+    public String getDestination() {
+        return destination;
+    }
+
+    public void setDestination(String destination) {
+        this.destination = destination;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getOrderType() {
+        return orderType;
+    }
+
+    public void setOrderType(String orderType) {
+        this.orderType = orderType;
+    }
+
+    public String getSeat() {
+        return seat;
+    }
+
+    public void setSeat(String seat) {
+        this.seat = seat;
+    }
+
+    public String getRealFee() {
+        return realFee;
+    }
+
+    public void setRealFee(String realFee) {
+        this.realFee = realFee;
+    }
+
+    public String getExpecteFee() {
+        return expecteFee;
+    }
+
+    public void setExpecteFee(String expecteFee) {
+        this.expecteFee = expecteFee;
+    }
+
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    public String getAddress() {
+        return address==null?"":address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getPayType() {
+        return payType;
+    }
+
+    public void setPayType(String payType) {
+        this.payType = payType;
+    }
+
+    public String getBusinessName() {
+        return businessName==null?"":businessName;
+    }
+
+    public void setBusinessName(String businessName) {
+        this.businessName = businessName;
+    }
+
+    public int getNumber() {
+        return number;
+    }
+
+    public void setNumber(int number) {
+        this.number = number;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+}

+ 18 - 0
app_modular/appworks/src/main/res/layout/activity_business_travel.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/mRefreshLayout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/base_bg"
+    app:enablePullDown="true"
+    app:enablePullUp="true"
+    tools:context="com.uas.appworks.OA.platform.activity.BusinessTravelActivity">
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/mRecyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+</com.module.recyclerlibrary.ui.refresh.simlpe.SimpleRefreshLayout>

+ 277 - 0
app_modular/appworks/src/main/res/layout/item_bus_travel_hotel.xml

@@ -0,0 +1,277 @@
+<?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_margin="@dimen/padding"
+    android:background="@drawable/round_bg"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/cui"
+        android:padding="@dimen/padding">
+
+        <TextView
+            android:id="@+id/codeTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center_horizontal"
+            android:paddingBottom="5dp"
+            android:paddingLeft="10dp"
+            android:paddingRight="10dp"
+            android:paddingTop="5dp"
+            android:text="住宿"
+            android:textColor="@color/white"
+            android:textSize="@dimen/text_hine" />
+
+        <TextView
+            android:id="@+id/statusTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_alignTop="@id/codeTv"
+            android:paddingBottom="5dp"
+            android:paddingLeft="10dp"
+            android:paddingRight="10dp"
+            android:paddingTop="5dp"
+            android:text="住宿"
+            android:textColor="@color/cui_yellow"
+            android:textSize="@dimen/text_hine" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:background="@color/white" />
+
+        <TextView
+            android:id="@+id/levelTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignLeft="@id/codeTv"
+            android:layout_below="@id/codeTv"
+            android:textColor="@color/white"
+            android:textSize="@dimen/textXXL" />
+
+        <TextView
+            android:id="@+id/businessNameTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@id/levelTv"
+            android:layout_toRightOf="@id/levelTv"
+            android:textColor="@color/white"
+            android:textSize="@dimen/textXL" />
+
+        <TextView
+            android:id="@+id/whenLongTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignLeft="@id/levelTv"
+            android:layout_below="@id/levelTv"
+            android:textColor="@color/white"
+            android:textSize="@dimen/text_hine" />
+
+        <TextView
+            android:id="@+id/numberTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignLeft="@id/whenLongTv"
+            android:layout_below="@id/whenLongTv"
+            android:textColor="@color/white"
+            android:textSize="@dimen/text_hine" />
+
+
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/white"
+        android:padding="@dimen/padding">
+
+        <TextView
+            android:id="@+id/nameTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="@dimen/padding"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <TextView
+            android:id="@+id/idTypeTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_alignTop="@id/nameTv"
+            android:layout_marginLeft="@dimen/padding"
+            android:text="二代身份证"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_hine" />
+
+        <TextView
+            android:id="@+id/idCardTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/padding"
+            android:layout_toLeftOf="@id/idTypeTv"
+            android:layout_toRightOf="@id/nameTv"
+            android:textColor="@color/text_hine"
+            android:textSize="@dimen/text_hine" />
+
+        <TextView
+            android:id="@+id/roomsTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/nameTv"
+            android:layout_marginBottom="@dimen/padding"
+            android:layout_marginTop="@dimen/padding"
+            android:text="1间"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <TextView
+            android:id="@+id/seatTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignLeft="@id/idCardTv"
+            android:layout_alignTop="@id/roomsTv"
+            android:layout_marginRight="@dimen/padding"
+            android:text="1间"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <TextView
+            android:id="@+id/realFeeTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignTop="@id/roomsTv"
+            android:layout_marginLeft="@dimen/padding"
+            android:layout_toRightOf="@id/seatTv"
+            android:text="1间"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <TextView
+            android:id="@+id/payTypeTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_alignTop="@id/roomsTv"
+            android:text="1间"
+            android:textColor="@color/text_main"
+            android:textSize="@dimen/text_main" />
+
+        <TextView
+            android:id="@+id/doneTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_below="@id/roomsTv"
+            android:text="取消预约" />
+
+        <TextView
+            android:id="@+id/expandTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignBottom="@id/doneTv"
+            android:layout_below="@id/roomsTv"
+            android:drawableRight="@drawable/icon_more_down"
+            android:text="申请记录" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_below="@id/doneTv" />
+
+    </RelativeLayout>
+
+
+    <RelativeLayout
+        android:id="@+id/subRl"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/white">
+
+        <TextView
+            android:id="@+id/addressTag"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginRight="@dimen/padding"
+            android:layout_marginTop="@dimen/padding"
+            android:text="城市地址" />
+
+        <TextView
+            android:id="@+id/addressTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/padding"
+            android:layout_toRightOf="@id/addressTag"
+            android:drawableRight="@drawable/icon_more_down"
+            android:ellipsize="end"
+            android:lines="1" />
+
+        <TextView
+            android:id="@+id/dateTag"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/addressTag"
+            android:layout_marginRight="@dimen/padding"
+            android:layout_marginTop="@dimen/padding"
+            android:text="入住日期:" />
+
+        <TextView
+            android:id="@+id/dateTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignLeft="@id/addressTv"
+            android:layout_alignTop="@id/dateTag"
+            android:layout_marginLeft="@dimen/padding"
+            android:layout_toRightOf="@id/dateTag"
+            android:drawableRight="@drawable/icon_more_down"
+            android:ellipsize="end"
+            android:lines="1" />
+
+        <TextView
+            android:id="@+id/numberTag"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/dateTag"
+            android:layout_marginRight="@dimen/padding"
+            android:layout_marginTop="@dimen/padding"
+            android:text="人数:" />
+
+        <TextView
+            android:id="@+id/numberSubTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignLeft="@id/addressTv"
+            android:layout_alignTop="@id/numberTag"
+            android:layout_marginLeft="@dimen/padding"
+            android:layout_toRightOf="@id/numberTag"
+            android:drawableRight="@drawable/icon_more_down"
+            android:ellipsize="end"
+            android:lines="1" />
+
+
+        <TextView
+            android:id="@+id/expecteFeeTag"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/numberTag"
+            android:layout_marginRight="@dimen/padding"
+            android:layout_marginTop="@dimen/padding"
+            android:text="预计费用:" />
+
+        <TextView
+            android:id="@+id/expecteFeeTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignLeft="@id/addressTv"
+            android:layout_alignTop="@id/expecteFeeTag"
+            android:layout_marginLeft="@dimen/padding"
+            android:layout_toRightOf="@id/expecteFeeTag"
+            android:drawableRight="@drawable/icon_more_down"
+            android:ellipsize="end"
+            android:lines="1" />
+    </RelativeLayout>
+</LinearLayout>

+ 32 - 0
app_modular/appworks/src/main/res/layout/item_bus_travel_title.xml

@@ -0,0 +1,32 @@
+<?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:gravity="center_vertical"
+    android:orientation="horizontal">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/padding"
+        android:layout_marginTop="@dimen/padding"
+        android:gravity="center_horizontal"
+        android:paddingLeft="10dp"
+        android:paddingRight="10dp"
+        android:text="出差单号"
+        android:textColor="@color/hint_text_color"
+        android:textSize="@dimen/text_hine" />
+
+    <TextView
+        android:id="@+id/codeTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/padding"
+        android:layout_marginTop="@dimen/padding"
+        android:gravity="center_horizontal"
+        android:paddingLeft="10dp"
+        android:paddingRight="10dp"
+        android:text="出差单号"
+        android:textColor="@color/black"
+        android:textSize="@dimen/text_main" />
+</LinearLayout>

+ 0 - 2
app_modular/appworks/src/main/res/values/strings.xml

@@ -67,6 +67,4 @@
     <string name="text_cycle_count">周期盘点</string>
 
 
-
-
 </resources>