Parcourir la source

提交类型 处理bug
提交内容 详情界面添加附件支持

Bitliker il y a 7 ans
Parent
commit
b42809ca9e
20 fichiers modifiés avec 301 ajouts et 83 suppressions
  1. 40 3
      app_core/common/src/main/java/com/common/data/DateFormatUtil.java
  2. 1 0
      app_core/common/src/main/java/com/core/app/Constants.java
  3. 19 0
      app_core/common/src/main/java/com/core/utils/BaiduMapUtil.java
  4. 1 0
      app_core/common/src/main/res/layout/activity_approval.xml
  5. 15 2
      app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java
  6. 12 2
      app_modular/apputils/src/main/java/com/modular/apputils/activity/BillInputActivity.java
  7. 19 17
      app_modular/apputils/src/main/java/com/modular/apputils/adapter/BillAdapter.java
  8. 5 3
      app_modular/apputils/src/main/res/layout/activity_bill_input.xml
  9. 18 2
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/CustomerCareListAdapter.java
  10. 38 2
      app_modular/appworks/src/main/java/com/uas/appworks/adapter/CustomerVisitBillAdapter.java
  11. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerBillInputActivity.java
  12. 15 14
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerCareListActivity.java
  13. 1 8
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerContactDetailActivity.java
  14. 4 4
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerDetails3_0Activity.java
  15. 48 20
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerListActivity.java
  16. 2 0
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerVisitActivity.java
  17. 54 0
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerVisitDetailsActivity.java
  18. 3 3
      app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerMapDetailsFragment.java
  19. 1 0
      app_modular/appworks/src/main/res/layout/activity_customer_list_3_0.xml
  20. 4 2
      app_modular/appworks/src/main/res/layout/fragment_customer_map_3_0.xml

+ 40 - 3
app_core/common/src/main/java/com/common/data/DateFormatUtil.java

@@ -20,7 +20,6 @@ public class DateFormatUtil {
     public static final String MD = "MM-dd";
 
 
-
     public static SimpleDateFormat getFormat(String format) {
         return new SimpleDateFormat(format);
     }
@@ -46,7 +45,7 @@ public class DateFormatUtil {
     }
 
     public static long str2Long(String time, String format) {
-        if (TextUtils.isEmpty(time)){
+        if (TextUtils.isEmpty(time)) {
             return 0;
         }
         SimpleDateFormat s = new SimpleDateFormat(format);
@@ -271,10 +270,48 @@ public class DateFormatUtil {
     }
 
 
-    public static long hhmm2Long(String hhMM){
+    public static long hhmm2Long(String hhMM) {
         if (StringUtil.isEmpty(hhMM)) return 0;
         String che = long2Str(DateFormatUtil.YMD) + " " + hhMM + ":00";//当天下班时间
         return DateFormatUtil.str2Long(che, DateFormatUtil.YMD_HMS);
     }
 
+    /**
+     * date2比date1多的天数
+     *
+     * @param date1
+     * @param date2
+     * @return
+     */
+    public static int differentDays(long date1, long date2) {
+        Calendar cal1 = Calendar.getInstance();
+        cal1.setTimeInMillis(date1);
+
+        Calendar cal2 = Calendar.getInstance();
+        cal2.setTimeInMillis(date2);
+        int day1 = cal1.get(Calendar.DAY_OF_YEAR);
+        int day2 = cal2.get(Calendar.DAY_OF_YEAR);
+
+        int year1 = cal1.get(Calendar.YEAR);
+        int year2 = cal2.get(Calendar.YEAR);
+        if (year1 != year2)   //同一年
+        {
+            int timeDistance = 0;
+            for (int i = year1; i < year2; i++) {
+                if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0)    //闰年
+                {
+                    timeDistance += 366;
+                } else    //不是闰年
+                {
+                    timeDistance += 365;
+                }
+            }
+
+            return timeDistance + (day2 - day1);
+        } else    //不同年
+        {
+            System.out.println("判断day2 - day1 : " + (day2 - day1));
+            return day2 - day1;
+        }
+    }
 }

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

@@ -570,6 +570,7 @@ public class Constants {
     public interface Intents {
         String MY_DOIT = "isMe";//是否我负责
         String CALLER = "mCaller";
+        String STATUS = "mStatus";
         String CONDITION = "mCondition";
         String ID = "mId";
         String TITLE = "mTitlte";

+ 19 - 0
app_core/common/src/main/java/com/core/utils/BaiduMapUtil.java

@@ -8,6 +8,7 @@ import com.baidu.mapapi.map.MapStatusUpdateFactory;
 import com.baidu.mapapi.map.MapView;
 import com.baidu.mapapi.map.MarkerOptions;
 import com.baidu.mapapi.map.OverlayOptions;
+import com.baidu.mapapi.map.TextureMapView;
 import com.baidu.mapapi.model.LatLng;
 import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
 import com.baidu.mapapi.search.route.DrivingRoutePlanOption;
@@ -89,7 +90,25 @@ public class BaiduMapUtil {
 
         }
     }
+    public void setMapViewPoint(TextureMapView mapView, LatLng point, boolean isClear) {
+        try {
+            if (point == null) return;
+            // 构建Marker图标
+            BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_gcoding);
+            // 构建MarkerOption,用于在地图上添加Marker
+            OverlayOptions option = new MarkerOptions().position(point).icon(bitmap);
+            if (isClear) mapView.getMap().clear();
+            // 在地图上添加Marker,并显示
+            mapView.getMap().addOverlay(option);
+            mapView.showZoomControls(false);
+            MapStatus mapStatus = new MapStatus.Builder().zoom(mapView.getMap().getMaxZoomLevel() - 3).target(point).build();
+            MapStatusUpdate u = MapStatusUpdateFactory.newMapStatus(mapStatus);
+            mapView.getMap().animateMapStatus(u);//设置为中心显示
 
+        } catch (Exception e) {
+
+        }
+    }
     public void setMapViewPoint(MapView mapView, List<LatLng> points, boolean isClear) {
         if (ListUtils.isEmpty(points)) return;
         try {

+ 1 - 0
app_core/common/src/main/res/layout/activity_approval.xml

@@ -4,6 +4,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:focusableInTouchMode="true"
+    android:id="@+id/mRootLL"
     android:fitsSystemWindows="true"
     android:orientation="vertical">
 

+ 15 - 2
app_modular/appmessages/src/main/java/com/modular/appmessages/activity/ApprovalActivity.java

@@ -1,6 +1,7 @@
 package com.modular.appmessages.activity;
 
 import android.content.Intent;
+import android.os.Build;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.v7.widget.DefaultItemAnimator;
@@ -43,6 +44,7 @@ import com.core.model.SelectBean;
 import com.core.model.SelectCollisionTurnBean;
 import com.core.model.SelectEmUser;
 import com.core.utils.RecognizerDialogUtil;
+import com.core.utils.StatusBarUtil;
 import com.core.widget.listener.EditChangeListener;
 import com.core.widget.view.Activity.SelectActivity;
 import com.core.xmpp.utils.audio.voicerecognition.JsonParser;
@@ -232,6 +234,17 @@ public class ApprovalActivity extends BaseActivity implements IApproval, Approva
             }
         }
         mPresenter = new ApprovaPresenter(this, getIntent());
+        final LinearLayout mRootLL = findViewById(R.id.mRootLL);
+        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
+            mRootLL.post(new Runnable() {
+                @Override
+                public void run() {
+                    int top = StatusBarUtil.getStatusBarHeight(ct);
+                    mRootLL.invalidate(0, 0, mRootLL.getMeasuredWidth(), mRootLL.getMeasuredHeight() +top);
+                    mRootLL.setTranslationY(-top);
+                }
+            });
+        }
     }
 
     public void toDbFind(Approval approval) {
@@ -349,7 +362,7 @@ public class ApprovalActivity extends BaseActivity implements IApproval, Approva
 
     @Override
     public void showModels(List<Approval> approvals, List<Approval> historyNodes) {
-        LogUtil.i("gong","showModels="+approvals.size());
+        LogUtil.i("gong", "showModels=" + approvals.size());
         mAdapter = new ApprovalAdapter(this, approvals, historyNodes, mPresenter.isApprovaling());
         contentRV.setHasFixedSize(false);
         contentRV.setItemAnimator(new DefaultItemAnimator());
@@ -558,7 +571,7 @@ public class ApprovalActivity extends BaseActivity implements IApproval, Approva
 
     @Override
     public void showToast(String message) {
-        LogUtil.i("gong","message="+message);
+        LogUtil.i("gong", "message=" + message);
         super.showToast(message);
     }
 

+ 12 - 2
app_modular/apputils/src/main/java/com/modular/apputils/activity/BillInputActivity.java

@@ -14,6 +14,7 @@ import android.text.TextUtils;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.Toast;
 
@@ -32,6 +33,7 @@ import com.core.base.BaseActivity;
 import com.core.base.OABaseActivity;
 import com.core.model.SelectBean;
 import com.core.utils.CommonUtil;
+import com.core.utils.StatusBarUtil;
 import com.core.utils.ToastUtil;
 import com.core.utils.time.wheel.DateTimePicker;
 import com.core.widget.view.Activity.ImgFileListActivity;
@@ -143,7 +145,6 @@ public class BillInputActivity extends OABaseActivity implements IBill, BillAdap
     }
 
 
-
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.saveAndSubmit) {
@@ -174,11 +175,20 @@ public class BillInputActivity extends OABaseActivity implements IBill, BillAdap
     }
 
 
-
     private void initView() {
         mRecyclerView = findViewById(R.id.mRecyclerView);
         mRecyclerView.setLayoutManager(new LinearLayoutManager(ct));
         mRecyclerView.addItemDecoration(new DividerItemDecoration(ct, LinearLayout.VERTICAL));
+        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
+            final View mRootLL = findViewById(R.id.mRootLL);
+            mRootLL.post(new Runnable() {
+                @Override
+                public void run() {
+                    int top = StatusBarUtil.getStatusBarHeight(ct);
+                    mRootLL.setTranslationY(-top);
+                }
+            });
+        }
     }
 
     @Override

+ 19 - 17
app_modular/apputils/src/main/java/com/modular/apputils/adapter/BillAdapter.java

@@ -50,9 +50,9 @@ import java.util.Set;
 public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder> implements View.OnClickListener {
 
     public Context ct;
-    private List<BillGroupModel> mBillGroupModels;
-    private List<BillGroupModel.BillModel> mShowBillModels;
-    public OnAdapterListener mOnAdapterListener;
+    protected List<BillGroupModel> mBillGroupModels;
+    protected List<BillGroupModel.BillModel> mShowBillModels;
+    protected OnAdapterListener mOnAdapterListener;
 
     public BillAdapter(Context ct, List<BillGroupModel> mBillGroupModels, OnAdapterListener mOnAdapterListener) {
         this.ct = ct;
@@ -406,20 +406,7 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
         } else if (view.getId() == R.id.addTv) {
             if (view.getTag() != null && view.getTag() instanceof Integer) {
                 int groupIndex = (int) view.getTag();
-                BillGroupModel mBillGroupModel = mBillGroupModels.get(groupIndex);
-                mBillGroupModel.setLastInType(false);
-                BillGroupModel newBillGroupModel = new BillGroupModel();
-                newBillGroupModel.setForm(mBillGroupModel.isForm());
-                newBillGroupModel.setGroup(mBillGroupModel.getGroup());
-                newBillGroupModel.setDeleteAble(true);
-                newBillGroupModel.setLastInType(true);
-                for (BillGroupModel.BillModel e : mBillGroupModel.getShowBillFields()) {
-                    newBillGroupModel.addShow(new BillGroupModel.BillModel(e));
-                }
-                mBillGroupModels.add(groupIndex + 1, newBillGroupModel);
-                setBillGroupModels(mBillGroupModels);
-                notifyDataSetChanged();
-
+                addGroups(groupIndex);
             }
         } else if (R.id.btn_del == view.getId()) {
             if (view.getTag(R.id.tag_key) != null && view.getTag(R.id.tag_key2) != null
@@ -442,6 +429,21 @@ public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder
         }
     }
 
+    protected void addGroups(int mGroupIndex) {
+        BillGroupModel mBillGroupModel = mBillGroupModels.get(mGroupIndex);
+        mBillGroupModel.setLastInType(false);
+        BillGroupModel newBillGroupModel = new BillGroupModel();
+        newBillGroupModel.setForm(mBillGroupModel.isForm());
+        newBillGroupModel.setGroup(mBillGroupModel.getGroup());
+        newBillGroupModel.setDeleteAble(true);
+        newBillGroupModel.setLastInType(true);
+        for (BillGroupModel.BillModel e : mBillGroupModel.getShowBillFields()) {
+            newBillGroupModel.addShow(new BillGroupModel.BillModel(e));
+        }
+        mBillGroupModels.add(mGroupIndex + 1, newBillGroupModel);
+        setBillGroupModels(mBillGroupModels);
+        notifyDataSetChanged();
+    }
 
     public class TextChangListener extends EditChangeListener {
         EditText ed;

+ 5 - 3
app_modular/apputils/src/main/res/layout/activity_bill_input.xml

@@ -1,12 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:focusableInTouchMode="true"
     android:fitsSystemWindows="true"
+    android:id="@+id/mRootLL"
+    android:focusableInTouchMode="true"
     android:layout_height="match_parent">
 
     <android.support.v7.widget.RecyclerView
         android:id="@+id/mRecyclerView"
+        android:focusableInTouchMode="false"
         android:layout_width="match_parent"
         android:layout_height="match_parent"/>
-</RelativeLayout>
+</LinearLayout>

+ 18 - 2
app_modular/appworks/src/main/java/com/uas/appworks/adapter/CustomerCareListAdapter.java

@@ -2,15 +2,19 @@ package com.uas.appworks.adapter;
 
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.drawable.Drawable;
 import android.view.View;
 import android.widget.TextView;
 
+import com.common.data.DateFormatUtil;
 import com.core.app.Constants;
 import com.modular.apputils.adapter.EasyBaseAdapter;
 import com.modular.apputils.model.EasyBaseModel;
+import com.modular.apputils.widget.compactcalender.Lunar;
 import com.uas.appworks.R;
 import com.uas.appworks.crm3_0.activity.CustomerDetails3_0Activity;
 
+import java.util.Date;
 import java.util.List;
 
 public class CustomerCareListAdapter extends EasyBaseAdapter {
@@ -21,6 +25,12 @@ public class CustomerCareListAdapter extends EasyBaseAdapter {
         this.type = type;
     }
 
+    private void setCompoundDrawables(TextView tv){
+        Drawable drawable = ct.getResources().getDrawable(R.drawable.ic_customer_birthday);
+        drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());//必须设置图片大小,否则不显示
+        tv.setCompoundDrawables(drawable, null, null, null);
+    }
+
     @Override
     public View bindView(View view, int position, EasyBaseModel model) {
         ViewHolder mViewHolder = null;
@@ -31,16 +41,22 @@ public class CustomerCareListAdapter extends EasyBaseAdapter {
             mViewHolder.tagTv = (TextView) view.findViewById(R.id.tagTv);
             if (type == 1) {
                 mViewHolder.tagTv.setTextColor(0xffED0000);
+                mViewHolder.subTitleTv.setText(model.getSubTitle());
+                mViewHolder.tagTv.setText(model.getIconUrl());
             } else if (type == 2) {
                 mViewHolder.tagTv.setTextColor(0xffFD8B1E);
+                setCompoundDrawables(mViewHolder.subTitleTv);
+                long time= DateFormatUtil.str2Long(model.getSubTitle(),DateFormatUtil.YMD_HMS);
+                StringBuilder subTitleBuilder=new StringBuilder(DateFormatUtil.long2Str(time,DateFormatUtil.MD));
+                subTitleBuilder.append(" | 农历  "+new Lunar(new Date(time)).toString());
+                mViewHolder.subTitleTv.setText(subTitleBuilder.toString());
+                mViewHolder.tagTv.setText(String.valueOf(DateFormatUtil.differentDays(time,System.currentTimeMillis()))+"天");
             }
             view.setTag(mViewHolder);
         } else {
             mViewHolder = (ViewHolder) view.getTag();
         }
         mViewHolder.nameTv.setText(model.getTitle());
-        mViewHolder.subTitleTv.setText(model.getSubTitle());
-        mViewHolder.tagTv.setText(model.getIconUrl());
         view.setTag(R.id.tag_key,model);
         view.setOnClickListener(mOnClickListener);
         return view;

+ 38 - 2
app_modular/appworks/src/main/java/com/uas/appworks/adapter/CustomerVisitBillAdapter.java

@@ -3,13 +3,16 @@ package com.uas.appworks.adapter;
 import android.content.Context;
 import android.view.View;
 
+import com.common.data.ListUtils;
+import com.core.utils.CommonUtil;
 import com.modular.apputils.adapter.BillAdapter;
 import com.modular.apputils.model.BillGroupModel;
 import com.uas.appworks.R;
 
+import java.util.ArrayList;
 import java.util.List;
 
-public class CustomerVisitBillAdapter extends BillAdapter{
+public class CustomerVisitBillAdapter extends BillAdapter {
 
     public CustomerVisitBillAdapter(Context ct, List<BillGroupModel> mBillGroupModels, OnAdapterListener mOnAdapterListener) {
         super(ct, mBillGroupModels, mOnAdapterListener);
@@ -19,7 +22,7 @@ public class CustomerVisitBillAdapter extends BillAdapter{
     @Override
     public void bindInputView(InputViewHolder mInputViewHolder, BillGroupModel.BillModel model, int position) throws Exception {
         super.bindInputView(mInputViewHolder, model, position);
-        if (model.getCaption().equals("公司名称")||"mpd_company".equals(model.getField())){
+        if (model.getCaption().equals("公司名称") || "mpd_company".equals(model.getField())) {
             //选择类型
             mInputViewHolder.valuesEd.setHint("请选择");
             mInputViewHolder.valuesEd.setFocusable(false);
@@ -31,4 +34,37 @@ public class CustomerVisitBillAdapter extends BillAdapter{
         }
     }
 
+    protected void addGroups(int mGroupIndex) {
+        BillGroupModel mBillGroupModel = mBillGroupModels.get(mGroupIndex);
+        mBillGroupModel.setLastInType(false);
+        BillGroupModel newBillGroupModel = new BillGroupModel();
+        newBillGroupModel.setForm(mBillGroupModel.isForm());
+        newBillGroupModel.setGroup(mBillGroupModel.getGroup());
+        newBillGroupModel.setDeleteAble(true);
+        newBillGroupModel.setLastInType(true);
+        for (BillGroupModel.BillModel e : mBillGroupModel.getShowBillFields()) {
+            BillGroupModel.BillModel mBillModel = new BillGroupModel.BillModel(e);
+            switch (mBillModel.getField()) {
+                case "mpd_personnum"://人员编号
+                    mBillModel.setDefValue("");
+                    mBillModel.setValue("");
+                    mBillModel.setReadOnly("F");
+                    break;
+                case "mpd_personname":
+                    mBillModel.setDefValue("");
+                    mBillModel.setValue("");
+                    mBillModel.setReadOnly("F");
+                    break;
+                case "mpd_type":
+                    mBillModel.setDefValue("");
+                    mBillModel.setValue("");
+                    mBillModel.setReadOnly("F");
+                    break;
+            }
+            newBillGroupModel.addShow(mBillModel);
+        }
+        mBillGroupModels.add(mGroupIndex + 1, newBillGroupModel);
+        setBillGroupModels(mBillGroupModels);
+        notifyDataSetChanged();
+    }
 }

+ 1 - 1
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerBillInputActivity.java

@@ -117,7 +117,7 @@ public class CustomerBillInputActivity extends BillInputActivity {
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 
-        if (0x201 == requestCode) {
+        if (0x201 == requestCode&&data!=null) {
             SelectAimModel chcheAimModel = data.getParcelableExtra("data");
             if (popupWindow != null) {
                 popupWindow.dismiss();

+ 15 - 14
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerCareListActivity.java

@@ -8,6 +8,7 @@ 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.JSONUtil;
 import com.common.data.ListUtils;
 import com.core.app.Constants;
@@ -124,7 +125,7 @@ public class CustomerCareListActivity extends OABaseActivity {
                     break;
 
             }
-            if (mListView!=null&&mListView.isRefreshing()){
+            if (mListView != null && mListView.isRefreshing()) {
                 mListView.onRefreshComplete();
             }
             dimssLoading();
@@ -138,7 +139,7 @@ public class CustomerCareListActivity extends OABaseActivity {
             } else {
                 showToast(message);
             }
-            if (mListView!=null&&mListView.isRefreshing()){
+            if (mListView != null && mListView.isRefreshing()) {
                 mListView.onRefreshComplete();
             }
             dimssLoading();
@@ -153,7 +154,7 @@ public class CustomerCareListActivity extends OABaseActivity {
                 JSONObject object = array.getJSONObject(i);
                 int id = JSONUtil.getInt(object, "id");
                 String name = JSONUtil.getText(object, "name");//客户名称
-                String fpTime = JSONUtil.getText(object, "fpTime");//跟进时间
+                String fpTime = DateFormatUtil.long2Str(JSONUtil.getTime(object, "fpTime"), DateFormatUtil.YMD_HMS);//跟进时间
                 String state = JSONUtil.getText(object, "state");//状态
                 models.add(new EasyBaseModel().setId(id).setTitle(name).setSubTitle("最后跟进时间:" + fpTime).setIconUrl(state));
             }
@@ -168,7 +169,7 @@ public class CustomerCareListActivity extends OABaseActivity {
                 JSONObject object = array.getJSONObject(i);
                 int id = JSONUtil.getInt(object, "id");
                 String name = JSONUtil.getText(object, "name");//客户名称
-                String birthday = JSONUtil.getText(object, "birthday");//跟进时间
+                String birthday = DateFormatUtil.long2Str(JSONUtil.getTime(object, "birthday"), DateFormatUtil.YMD_HMS);//跟进时间
                 String state = JSONUtil.getText(object, "state");//状态
                 models.add(new EasyBaseModel().setId(id).setTitle(name).setSubTitle(birthday).setIconUrl(state));
             }
@@ -184,11 +185,11 @@ public class CustomerCareListActivity extends OABaseActivity {
             mListAdapter = new CustomerCareListAdapter(ct, models, 2);
             mListView.setAdapter(mListAdapter);
         } else {
-            List<EasyBaseModel> showModels=null;
-            if (mPageIndex==1){
-                showModels=models;
-            }else if (!ListUtils.isEmpty(models)){
-                showModels=new ArrayList<>();
+            List<EasyBaseModel> showModels = null;
+            if (mPageIndex == 1) {
+                showModels = models;
+            } else if (!ListUtils.isEmpty(models)) {
+                showModels = new ArrayList<>();
                 showModels.addAll(models);
             }
             mListAdapter.updateModels(showModels);
@@ -203,11 +204,11 @@ public class CustomerCareListActivity extends OABaseActivity {
             mListAdapter = new CustomerCareListAdapter(ct, models, 1);
             mListView.setAdapter(mListAdapter);
         } else {
-            List<EasyBaseModel> showModels=null;
-            if (mPageIndex==1){
-                showModels=models;
-            }else if (!ListUtils.isEmpty(models)){
-                showModels=new ArrayList<>();
+            List<EasyBaseModel> showModels = null;
+            if (mPageIndex == 1) {
+                showModels = models;
+            } else if (!ListUtils.isEmpty(models)) {
+                showModels = new ArrayList<>();
                 showModels.addAll(models);
             }
             mListAdapter.updateModels(showModels);

+ 1 - 8
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerContactDetailActivity.java

@@ -61,16 +61,9 @@ public class CustomerContactDetailActivity extends BillDetailsActivity {
     }
 
 
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(com.modular.apputils.R.menu.menu_add_icon, menu);
-        return false;
-    }
-
-
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (com.modular.apputils.R.id.add_item == item.getItemId()) {
+        if (com.modular.apputils.R.id.edit == item.getItemId()) {
             HashMap<String, String> dbfindCondition = null;
             dbfindCondition = new HashMap<>();
             dbfindCondition.put("cu_code", "cu_sellercode='" + CommonUtil.getEmcode() + "'");

+ 4 - 4
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerDetails3_0Activity.java

@@ -145,10 +145,10 @@ public class CustomerDetails3_0Activity extends BillDetailsActivity implements I
         mBottomDataList.put(1, mCusContacts);
         mBottomDataList.put(2, mCusReport);
         mBottomDataList.put(3, mCusBusiness);
-        tabTitle[0] = "客户地址" + ListUtils.getSize(mCusAddress) + ")";
-        tabTitle[1] = "客户联系人" + ListUtils.getSize(mCusContacts) + ")";
-        tabTitle[2] = "拜访记录" + ListUtils.getSize(mCusReport) + ")";
-        tabTitle[3] = "客户商机" + ListUtils.getSize(mCusBusiness) + ")";
+        tabTitle[0] = "客户地址 (" + ListUtils.getSize(mCusAddress) + ")";
+        tabTitle[1] = "客户联系人 (" + ListUtils.getSize(mCusContacts) + ")";
+        tabTitle[2] = "拜访记录 (" + ListUtils.getSize(mCusReport) + ")";
+        tabTitle[3] = "客户商机 (" + ListUtils.getSize(mCusBusiness) + ")";
         mAdapter = new ViewPageAdapter(getSupportFragmentManager());
         mViewPager.setAdapter(mAdapter);//给ViewPager设置适配器
         mTabLayout.setVisibility(View.VISIBLE);

+ 48 - 20
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerListActivity.java

@@ -1,6 +1,8 @@
 package com.uas.appworks.crm3_0.activity;
 
 
+import android.graphics.PixelFormat;
+import android.nfc.Tag;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentTransaction;
@@ -14,6 +16,8 @@ import com.modular.apputils.widget.DivideRadioGroup;
 import com.uas.appworks.R;
 import com.uas.appworks.crm3_0.fragment.CustomerListFragment;
 
+import java.util.Map;
+
 /**
  * 客户列表界面
  */
@@ -21,71 +25,95 @@ public class CustomerListActivity extends BaseActivity {
     private final String LIST = "List";
     private final String MAP = "Map";
 
-    private Fragment lastFragment;
+    private Fragment mCurrentFragment;
     private String mCaller;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_customer_list_3_0);
+//        getWindow().setFormat(PixelFormat.TRANSLUCENT);
         init();
     }
 
     private void init() {
         if (getIntent() != null) {
             String title = getIntent().getStringExtra(Constants.Intents.TITLE);
-             mCaller = getIntent().getStringExtra(Constants.Intents.CALLER);
+            mCaller = getIntent().getStringExtra(Constants.Intents.CALLER);
             if (!TextUtils.isEmpty(title)) {
                 setTitle(title + "列表");
             } else {
                 setTitle("列表");
             }
         }
-        if (TextUtils.isEmpty(mCaller)){
+        if (TextUtils.isEmpty(mCaller)) {
             mCaller = "Customer!Base";
         }
         DivideRadioGroup tabBottomRg = findViewById(R.id.tabBottomRg);
-        Fragment listFragment = CustomerListFragment.newInstance(1,mCaller);
-        changeFragment(listFragment, LIST);
+        changeFragment(LIST);
         tabBottomRg.setOnCheckedChangeListener(new DivideRadioGroup.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(DivideRadioGroup group, int checkedId) {
-                Fragment fragment = null;
                 String tag = null;
                 if (R.id.customerListRb == checkedId) {
-                    fragment = getSupportFragmentManager().findFragmentByTag(LIST);
-                    if (fragment == null) {
-                        fragment = CustomerListFragment.newInstance(1,mCaller);
-                    }
                     tag = LIST;
                 } else if (R.id.customerLocationRb == checkedId) {
-                    fragment = getSupportFragmentManager().findFragmentByTag(MAP);
-                    if (fragment == null) {
-                        fragment = CustomerListFragment.newInstance(2,mCaller);
-                    }
                     tag = MAP;
                 }
-                changeFragment(fragment, tag);
+                changeFragment(tag);
             }
         });
     }
 
-    private void changeFragment(Fragment addFragment, String tag) {
+    private void changeFragment(String tag) {
+        Fragment addFragment = getAddFragment(tag);
         FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();// 开始事物
         if (addFragment == null) {
             return;
         }
-        if (addFragment == lastFragment) {
+        if (addFragment == mCurrentFragment) {
             return;
         }
-        if (lastFragment != null && lastFragment != addFragment) {// 如果最后一次加载的不是现在要加载的Fragment,那么僵最后一次加载的移出
-            fragmentTransaction.detach(lastFragment);
+        if (mCurrentFragment != null && mCurrentFragment != addFragment) {// 如果最后一次加载的不是现在要加载的Fragment,那么僵最后一次加载的移出
+            fragmentTransaction.detach(mCurrentFragment);
         }
         if (!addFragment.isAdded())// 如果还没有添加,就加上
             fragmentTransaction.add(R.id.customerFl, addFragment, tag);
         if (addFragment.isDetached())
             fragmentTransaction.attach(addFragment);
-        lastFragment = addFragment;
+        mCurrentFragment = addFragment;
         fragmentTransaction.commitAllowingStateLoss();
     }
+
+
+    //    获取当前的fragment
+    private Fragment getAddFragment(String mTag) {
+        Fragment mAddFragment = getSupportFragmentManager().findFragmentByTag(mTag);
+        if (mAddFragment == null) {
+            if (mTag.equals(MAP)) {
+                mAddFragment = CustomerListFragment.newInstance(2, mCaller);
+            } else {
+                mAddFragment = CustomerListFragment.newInstance(1, mCaller);
+            }
+        }
+        return mAddFragment;
+    }
+
+
+    private void changeTab(String mTag) {
+        Fragment mAddFragment = getAddFragment(mTag);
+        if (mCurrentFragment != mAddFragment) {
+            FragmentTransaction mTransaction = getSupportFragmentManager().beginTransaction();
+            if (mCurrentFragment != null) {
+                mTransaction.hide(mCurrentFragment);
+            }
+            if (!mAddFragment.isAdded()) {
+                mTransaction.add(R.id.customerFl, mAddFragment, mTag);
+            } else {
+                mTransaction.show(mAddFragment);
+            }
+            mCurrentFragment = mAddFragment;
+            mTransaction.commitNowAllowingStateLoss();
+        }
+    }
 }

+ 2 - 0
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerVisitActivity.java

@@ -361,6 +361,8 @@ public class CustomerVisitActivity extends BaseActivity {
                     VisitPlan mVisitPlan = (VisitPlan) view.getTag();
                     startActivity(new Intent(ct, CustomerVisitDetailsActivity.class)
                             .putExtra(Constants.Intents.TITLE, "客户拜访详情")
+                            .putExtra(Constants.Intents.MY_DOIT, myVisitRb.isChecked())
+                            .putExtra(Constants.Intents.STATUS, mVisitPlan.getStatus())
                             .putExtra(Constants.Intents.ID, mVisitPlan.getId())
                             .putExtra(Constants.Intents.CALLER, "MobileOutPlans")
                     );

+ 54 - 0
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerVisitDetailsActivity.java

@@ -16,10 +16,12 @@ import com.alibaba.fastjson.JSONObject;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.core.app.Constants;
+import com.core.base.BaseToolBarActivity;
 import com.core.base.OABaseActivity;
 import com.core.utils.CommonUtil;
 import com.me.network.app.http.Method;
 import com.modular.apputils.activity.BillDetailsActivity;
+import com.modular.apputils.activity.BillInputActivity;
 import com.modular.apputils.listener.OnSmartHttpListener;
 import com.modular.apputils.model.BillGroupModel;
 import com.modular.apputils.network.Parameter;
@@ -35,6 +37,7 @@ import java.util.List;
 public class CustomerVisitDetailsActivity extends OABaseActivity {
     private final int LOAD_FORM = 0x11;
     private final int TURN_VISIT_RECORD = 0x12;
+    private final int UN_SUBMIT = 0x13;
 
     private ListView mListView;
     private String mCaller;
@@ -42,6 +45,44 @@ public class CustomerVisitDetailsActivity extends OABaseActivity {
     private UUHttpHelper mUUHttpHelper;
     private BillListDetailsAdapter mListAdapter;
     private TextView statusTv;
+    private String status;
+    private boolean isMe;
+
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        if (isMe && (TextUtils.isEmpty(status) || !status.equals("已审核"))) {
+            getMenuInflater().inflate(com.modular.apputils.R.menu.menu_input_edit, menu);
+        }
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (com.modular.apputils.R.id.edit == item.getItemId()) {
+            new VeriftyDialog.Builder(ct)
+                    .setTitle(getString(com.modular.apputils.R.string.app_name))
+                    .setContent("是否确定反提交该单据?")
+                    .build(new VeriftyDialog.OnDialogClickListener() {
+                        @Override
+                        public void result(boolean clickSure) {
+                            if (clickSure) {
+                                unSubmit();
+                            }
+                        }
+                    });
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    private void unSubmit() {
+        mUUHttpHelper.requestCompanyHttp(new Parameter.Builder()
+                        .url("mobile/commonres.action")
+                        .addParams("caller", mCaller)
+                        .addParams("id", mId)
+                        .record(UN_SUBMIT)
+                , mOnSmartHttpListener);
+    }
 
 
     @Override
@@ -61,6 +102,8 @@ public class CustomerVisitDetailsActivity extends OABaseActivity {
     public void start(Intent intent) {
         if (intent != null) {
             mCaller = intent.getStringExtra(Constants.Intents.CALLER);
+            status = intent.getStringExtra(Constants.Intents.STATUS);
+            isMe = intent.getBooleanExtra(Constants.Intents.MY_DOIT, false);
             String mTitle = intent.getStringExtra(Constants.Intents.TITLE);
             mId = intent.getIntExtra(Constants.Intents.ID, 0);
             if (mTitle != null) {
@@ -114,6 +157,17 @@ public class CustomerVisitDetailsActivity extends OABaseActivity {
                         finish();
                     }
                     break;
+                case UN_SUBMIT:
+                    showToast("反提交成功");
+                    startActivity(new Intent(ct, CustomerVisitBillInputActivity.class)
+                            .putExtra(Constants.Intents.CALLER, mCaller)
+                            .putExtra(Constants.Intents.DETAILS_CLASS, CustomerVisitDetailsActivity.class)
+                            .putExtra(Constants.Intents.INPUT_CLASS,CustomerVisitBillInputActivity.class)
+                            .putExtra(Constants.Intents.TITLE, ((BaseToolBarActivity) ct).getToolBarTitle())
+                            .putExtra(Constants.Intents.ID, mId)
+                    );
+                    finish();
+                    break;
             }
             dimssLoading();
         }

+ 3 - 3
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/fragment/CustomerMapDetailsFragment.java

@@ -19,6 +19,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baidu.mapapi.map.MapView;
+import com.baidu.mapapi.map.TextureMapView;
 import com.baidu.mapapi.model.LatLng;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
@@ -53,7 +54,7 @@ public class CustomerMapDetailsFragment extends ViewPagerLazyFragment {
     private String mCaller;
     private String mCondition;
     private int mPageIndex = 1;
-    private MapView mMapView;
+    private TextureMapView mMapView;
     private SimpleRefreshLayout mRefreshLayout;
     private RecyclerView mRecyclerView;
     private UUHttpHelper mUUHttpHelper;
@@ -109,8 +110,7 @@ public class CustomerMapDetailsFragment extends ViewPagerLazyFragment {
 
     private void initView() {
         mUUHttpHelper = new UUHttpHelper(CommonUtil.getAppBaseUrl(MyApplication.getInstance()));
-        mMapView = (MapView) findViewById(R.id.mMapView);
-
+        mMapView =   findViewById(R.id.mMapView);
         mRefreshLayout = (SimpleRefreshLayout) findViewById(R.id.mRefreshLayout);
         EmptyRecyclerView mEmptyRecyclerView = (EmptyRecyclerView) findViewById(R.id.mEmptyRecyclerView);
         mRecyclerView = mEmptyRecyclerView.getRecyclerView();

+ 1 - 0
app_modular/appworks/src/main/res/layout/activity_customer_list_3_0.xml

@@ -2,6 +2,7 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
+
     <com.modular.apputils.widget.DivideRadioGroup
         android:id="@+id/tabBottomRg"
         android:layout_alignParentBottom="true"

+ 4 - 2
app_modular/appworks/src/main/res/layout/fragment_customer_map_3_0.xml

@@ -4,8 +4,10 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
-
-    <com.baidu.mapapi.map.MapView
+    <SurfaceView
+        android:layout_width="0dp"
+        android:layout_height="0dp" />
+    <com.baidu.mapapi.map.TextureMapView
         android:id="@+id/mMapView"
         android:layout_width="match_parent"
         android:layout_height="0dp"