Browse Source

提交类型 编写功能
提交内容 编写客户模块功能,添加选择IP地址功能

Bitliker 7 years ago
parent
commit
dcd068c976

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

@@ -528,6 +528,7 @@
         <activity android:name=".activity.businessManage.businessMineList.BusinessMineListActivity" />
         <activity android:name=".activity.businessManage.businessStage.BusinessStageActivity" />
         <activity android:name=".crm3_0.activity.BillSearchActivity" />
+        <activity android:name=".crm3_0.activity.CustomerVisitDetailsActivity" />
     </application>
 
 </manifest>

+ 108 - 0
app_modular/appworks/src/main/java/com/uas/appworks/adapter/BillListDetailsAdapter.java

@@ -0,0 +1,108 @@
+package com.uas.appworks.adapter;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.common.data.ListUtils;
+import com.modular.apputils.model.BillGroupModel;
+import com.uas.appworks.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BillListDetailsAdapter extends BaseAdapter {
+    private Context ct;
+    private List<BillGroupModel> groupModels;
+    private List<BillGroupModel.BillModel> mShowBillModels;
+
+    public BillListDetailsAdapter(Context ct,List<BillGroupModel> groupModels) {
+        this.ct = ct;
+        this.groupModels = groupModels;
+        changeBillModel();
+    }
+
+    public void updateGroupModels(List<BillGroupModel> groupModels) {
+        this.groupModels = groupModels;
+        changeBillModel();
+    }
+
+    public List<BillGroupModel> getGroupModels() {
+        return groupModels;
+    }
+
+    /**
+     * 当外界的因素引起mBillGroupModels变化时候,通过遍历将mBillGroupModels转成mShowBillModels进行显示
+     */
+    private void changeBillModel() {
+        if (mShowBillModels == null) {
+            mShowBillModels = new ArrayList<>();
+        } else {
+            mShowBillModels.clear();
+        }
+        for (int i = 0; i < groupModels.size(); i++) {
+            BillGroupModel e = groupModels.get(i);
+            if (e != null && e.getShowBillFields() != null && !e.getShowBillFields().isEmpty()) {
+                mShowBillModels.addAll(e.getShowBillFields());
+            }
+        }
+    }
+
+
+    @Override
+    public int getCount() {
+        return mShowBillModels == null ? 0 : mShowBillModels.size();
+    }
+
+    @Override
+    public Object getItem(int i) {
+        return mShowBillModels.get(i);
+    }
+
+    @Override
+    public long getItemId(int i) {
+        return i;
+    }
+
+    @Override
+    public View getView(int position, View view, ViewGroup viewGroup) {
+        ViewHolder mViewHolder = null;
+        if (view == null) {
+            view = LayoutInflater.from(ct).inflate(R.layout.item_customer_details_3_0, null);
+            mViewHolder = new ViewHolder();
+            mViewHolder.tvTitle = (TextView) view.findViewById(R.id.tv_title);
+            mViewHolder.captionTv = (TextView) view.findViewById(R.id.captionTv);
+            mViewHolder.valuesTv = (TextView) view.findViewById(R.id.valuesTv);
+            view.setTag(mViewHolder);
+        } else {
+            mViewHolder = (ViewHolder) view.getTag();
+        }
+        BillGroupModel.BillModel field = mShowBillModels.get(position);
+        mViewHolder.captionTv.setText(field.getCaption());
+        mViewHolder.valuesTv.setText(field.getValue());
+        if (field.getGroupIndex() != 0 && position >= 1 && field.getGroupIndex() > mShowBillModels.get(position - 1).getGroupIndex()) {
+            mViewHolder.tvTitle.setVisibility(View.VISIBLE);
+            String mGroupName = null;
+            if (ListUtils.getSize(groupModels) > field.getGroupIndex()) {
+                mGroupName = groupModels.get(field.getGroupIndex()).getGroup();
+            }
+            mViewHolder.tvTitle.setText(TextUtils.isEmpty(mGroupName) ? "" : mGroupName);
+        } else {
+            mViewHolder.tvTitle.setVisibility(View.GONE);
+        }
+        return view;
+    }
+
+
+    class ViewHolder {
+        private TextView tvTitle;
+        private TextView captionTv;
+        private TextView valuesTv;
+
+
+    }
+}

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

@@ -23,6 +23,8 @@ import com.core.base.OABaseActivity;
 import com.modular.apputils.model.BillGroupModel;
 import com.modular.apputils.widget.VeriftyDialog;
 import com.uas.appworks.R;
+import com.uas.appworks.adapter.BillListAdapter;
+import com.uas.appworks.adapter.BillListDetailsAdapter;
 import com.uas.appworks.crm3_0.fragment.CustomerDetailsBottomListFragment;
 import com.uas.appworks.crm3_0.fragment.CustomerListDetailsFragment;
 import com.uas.appworks.model.CustomerBindBill;
@@ -43,7 +45,7 @@ public class CustomerDetails3_0Activity extends OABaseActivity implements ICusto
     private String[] tabTitle;
     private final int TAB_NUM = 4;
     private CustomerDetailsPresenter mPresenter;
-    private ListAdapter mListAdapter;
+    private BillListDetailsAdapter mListAdapter;
     private SparseArray<ArrayList<CustomerBindBill>> mBottomDataList = new SparseArray<>();
     private ViewPageAdapter mAdapter;
     private String status;
@@ -116,7 +118,7 @@ public class CustomerDetails3_0Activity extends OABaseActivity implements ICusto
     @Override
     public void setAdapter(List<BillGroupModel> groupModels) {
         if (mListAdapter == null) {
-            mListAdapter = new ListAdapter(groupModels);
+            mListAdapter = new BillListDetailsAdapter(ct,groupModels);
             mListView.setAdapter(mListAdapter);
         } else {
             mListAdapter.updateGroupModels(groupModels);
@@ -169,95 +171,5 @@ public class CustomerDetails3_0Activity extends OABaseActivity implements ICusto
     }
 
 
-    private class ListAdapter extends BaseAdapter {
-        private List<BillGroupModel> groupModels;
-        private List<BillGroupModel.BillModel> mShowBillModels;
 
-        public ListAdapter(List<BillGroupModel> groupModels) {
-            this.groupModels = groupModels;
-            changeBillModel();
-        }
-
-        public void updateGroupModels(List<BillGroupModel> groupModels) {
-            this.groupModels = groupModels;
-            changeBillModel();
-        }
-
-        public List<BillGroupModel> getGroupModels() {
-            return groupModels;
-        }
-
-        /**
-         * 当外界的因素引起mBillGroupModels变化时候,通过遍历将mBillGroupModels转成mShowBillModels进行显示
-         */
-        private void changeBillModel() {
-            if (mShowBillModels == null) {
-                mShowBillModels = new ArrayList<>();
-            } else {
-                mShowBillModels.clear();
-            }
-            for (int i = 0; i < groupModels.size(); i++) {
-                BillGroupModel e = groupModels.get(i);
-                if (e != null && e.getShowBillFields() != null && !e.getShowBillFields().isEmpty()) {
-                    mShowBillModels.addAll(e.getShowBillFields());
-                }
-            }
-        }
-
-
-        @Override
-        public int getCount() {
-            return mShowBillModels == null ? 0 : mShowBillModels.size();
-        }
-
-        @Override
-        public Object getItem(int i) {
-            return mShowBillModels.get(i);
-        }
-
-        @Override
-        public long getItemId(int i) {
-            return i;
-        }
-
-        @Override
-        public View getView(int position, View view, ViewGroup viewGroup) {
-            ViewHolder mViewHolder = null;
-            if (view == null) {
-                view = LayoutInflater.from(ct).inflate(R.layout.item_customer_details_3_0, null);
-                mViewHolder = new ViewHolder();
-                mViewHolder.tvTitle = (TextView) view.findViewById(R.id.tv_title);
-                mViewHolder.captionTv = (TextView) view.findViewById(R.id.captionTv);
-                mViewHolder.valuesTv = (TextView) view.findViewById(R.id.valuesTv);
-                view.setTag(mViewHolder);
-            } else {
-                mViewHolder = (ViewHolder) view.getTag();
-            }
-            BillGroupModel.BillModel field = mShowBillModels.get(position);
-            mViewHolder.captionTv.setText(field.getCaption());
-            mViewHolder.valuesTv.setText(field.getValue());
-            if (field.getGroupIndex() != 0 && position >= 1 && field.getGroupIndex() > mShowBillModels.get(position - 1).getGroupIndex()) {
-                mViewHolder.tvTitle.setVisibility(View.VISIBLE);
-                String mGroupName = null;
-                if (ListUtils.getSize(groupModels) > field.getGroupIndex()) {
-                    mGroupName = groupModels.get(field.getGroupIndex()).getGroup();
-                }
-                mViewHolder.tvTitle.setText(TextUtils.isEmpty(mGroupName) ? "" : mGroupName);
-            } else {
-                mViewHolder.tvTitle.setVisibility(View.GONE);
-            }
-            return view;
-        }
-
-
-        class ViewHolder {
-            private TextView tvTitle;
-            private TextView captionTv;
-            private TextView valuesTv;
-
-
-        }
-
-
-    }
 }

+ 111 - 23
app_modular/appworks/src/main/java/com/uas/appworks/crm3_0/activity/CustomerVisitActivity.java

@@ -1,10 +1,14 @@
 package com.uas.appworks.crm3_0.activity;
 
+import android.content.Intent;
+import android.graphics.Color;
 import android.os.Bundle;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.util.SparseArray;
 import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 
 import android.view.ViewGroup;
@@ -18,16 +22,21 @@ import com.common.config.BaseConfig;
 import com.common.data.DateFormatUtil;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
+import com.core.app.Constants;
 import com.core.base.BaseActivity;
 import com.core.utils.CommonUtil;
+import com.core.utils.ToastUtil;
+import com.iflytek.cloud.thirdparty.V;
 import com.me.network.app.http.Method;
 import com.modular.apputils.activity.BaseNetActivity;
+import com.modular.apputils.activity.BillInputActivity;
 import com.modular.apputils.listener.OnSmartHttpListener;
 import com.modular.apputils.network.Parameter;
 import com.modular.apputils.network.Tags;
 import com.modular.apputils.utils.UUHttpHelper;
 import com.modular.apputils.widget.DivideRadioGroup;
 import com.modular.apputils.widget.compactcalender.CompactCalendarView;
+import com.modular.apputils.widget.compactcalender.domain.Event;
 import com.module.recyclerlibrary.ui.refresh.EmptyRecyclerView;
 import com.uas.appworks.R;
 import com.uas.appworks.model.VisitPlan;
@@ -56,11 +65,28 @@ public class CustomerVisitActivity extends BaseActivity {
     private SparseArray<List<VisitPlan>> datas;
     private UUHttpHelper mUUHttpHelper;
 
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.menu_add_icon, menu);
+        return super.onCreateOptionsMenu(menu);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.add_item) {
+            startActivity(new Intent(ct, BillInputActivity.class)
+                    .putExtra(Constants.Intents.CALLER, "MOBILEOUTPLAN")
+                    .putExtra(Constants.Intents.TITLE, "客户拜访计划")
+                    .putExtra(Constants.Intents.ID, 0));
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_customer_visit);
-        mUUHttpHelper=new UUHttpHelper(CommonUtil.getAppBaseUrl(this));
+        mUUHttpHelper = new UUHttpHelper(CommonUtil.getAppBaseUrl(this));
         initView();
         initData();
     }
@@ -69,40 +95,49 @@ public class CustomerVisitActivity extends BaseActivity {
     private void initView() {
         mCurrentDate = new Date();
         myVisitRb = findViewById(R.id.myVisitRb);
-        visitTypeRg = (DivideRadioGroup) findViewById(R.id.visitTypeRg);
-        monthTv = (TextView) findViewById(R.id.monthTv);
-        toDayTv = (TextView) findViewById(R.id.newDayTv);
-        mCalendarView = (CompactCalendarView) findViewById(R.id.compactcalendar_view);
-        EmptyRecyclerView mEmptyRecyclerView = (EmptyRecyclerView) findViewById(R.id.mEmptyRecyclerView);
+        final View myLine = findViewById(R.id.myLine);
+        final View otherLine = findViewById(R.id.otherLine);
+        visitTypeRg = findViewById(R.id.visitTypeRg);
+        monthTv = findViewById(R.id.monthTv);
+        toDayTv = findViewById(R.id.newDayTv);
+        mCalendarView = findViewById(R.id.compactcalendar_view);
+        EmptyRecyclerView mEmptyRecyclerView = findViewById(R.id.mEmptyRecyclerView);
         mRecyclerView = mEmptyRecyclerView.getRecyclerView();
-
+        myLine.setVisibility(View.VISIBLE);
+        otherLine.setVisibility(View.INVISIBLE);
         visitTypeRg.setOnCheckedChangeListener(new DivideRadioGroup.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(DivideRadioGroup group, int checkedId) {
                 if (checkedId == R.id.myVisitRb) {
-
+                    myLine.setVisibility(View.VISIBLE);
+                    otherLine.setVisibility(View.INVISIBLE);
                 } else if (R.id.otherVisitRb == checkedId) {
-
+                    myLine.setVisibility(View.INVISIBLE);
+                    otherLine.setVisibility(View.VISIBLE);
                 }
+                loadData();
             }
         });
 
         toDayTv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                mCurrentDate=new Date();
+                mCurrentDate = new Date();
                 mCalendarView.setCurrentDate(mCurrentDate);
+                loadData();
             }
         });
         mCalendarView.setListener(new CompactCalendarView.CompactCalendarViewListener() {
             @Override
             public void onDayClick(Date dateClicked) {
                 mCurrentDate = dateClicked;
+                loadData();
             }
+
             @Override
             public void onMonthScroll(Date firstDayOfNewMonth) {
                 mCurrentDate = firstDayOfNewMonth;
-                loadData(!myVisitRb.isChecked());
+                loadData();
             }
         });
         mCalendarView.setFirstDayOfWeek(Calendar.SUNDAY);
@@ -117,11 +152,13 @@ public class CustomerVisitActivity extends BaseActivity {
 
     private void initData() {
         datas = new SparseArray<>();
-        loadData(false);
+        loadData();
     }
 
 
-    private void loadData(boolean isOther) {
+    private void loadData() {
+        progressDialog.show();
+        boolean isOther = !myVisitRb.isChecked();
         String month = DateFormatUtil.date2Str(mCurrentDate, DateFormatUtil.YM);
         int monthInt = 1;
         try {
@@ -139,7 +176,7 @@ public class CustomerVisitActivity extends BaseActivity {
                     .record(LOAD_DATA)
                     .url("mobile/crm/getvisitplanmsg.action"), mOnSmartHttpListener);
         } else {
-            setAdapter(visitPlanArrayList);
+            handlerAndShowByDay(visitPlanArrayList);
         }
     }
 
@@ -155,11 +192,21 @@ public class CustomerVisitActivity extends BaseActivity {
                     handerData(monthInt, JSONUtil.getJSONArray(message, "visitPlan"));
                     break;
             }
+            if (progressDialog != null) {
+                progressDialog.dismiss();
+            }
         }
 
         @Override
         public void onFailure(int what, String message, Tags tag) throws Exception {
-
+            if (JSONUtil.validateJSONObject(message)) {
+                ToastUtil.showToast(ct, JSONUtil.getText(message, "exceptionInfo"));
+            } else {
+                ToastUtil.showToast(ct, message);
+            }
+            if (progressDialog != null) {
+                progressDialog.dismiss();
+            }
         }
     };
 
@@ -171,21 +218,22 @@ public class CustomerVisitActivity extends BaseActivity {
                 JSONObject object = array.getJSONObject(i);
                 int id = JSONUtil.getInt(object, "id");
                 String code = JSONUtil.getText(object, "code");
-                String entryDate = JSONUtil.getText(object, "entry_date");
                 String customerName = JSONUtil.getText(object, "customer_name");
                 String customerAddress = JSONUtil.getText(object, "customer_address");
-                String startTime = JSONUtil.getText(object, "start_time");
-                String endTime = JSONUtil.getText(object, "end_time");
+                long entryDate = JSONUtil.getTime(object, "entry_date");
+                long startTime = JSONUtil.getTime(object, "start_time");
+                long endTime = JSONUtil.getTime(object, "end_time");
                 String status = JSONUtil.getText(object, "status");
                 String doman = JSONUtil.getText(object, "doman");
                 String domanCode = JSONUtil.getText(object, "domanCode");
                 mVisitPlan.setId(id);
                 mVisitPlan.setCode(code);
-                mVisitPlan.setEntryDate(entryDate);
+                mVisitPlan.setStartDay(DateFormatUtil.long2Str(startTime, DateFormatUtil.YMD));
                 mVisitPlan.setCustomerName(customerName);
                 mVisitPlan.setCustomerAddress(customerAddress);
                 mVisitPlan.setStartTime(startTime);
                 mVisitPlan.setEndTime(endTime);
+                mVisitPlan.setEntryDate(entryDate);
                 mVisitPlan.setStatus(status);
                 mVisitPlan.setDoman(doman);
                 mVisitPlan.setDomanCode(domanCode);
@@ -193,11 +241,34 @@ public class CustomerVisitActivity extends BaseActivity {
             }
             datas.put(monthInt, visitPlanArrayList);
         }
-        setAdapter(visitPlanArrayList);
+        handlerAndShowByDay(visitPlanArrayList);
     }
 
     private ListAdapter mListAdapter;
 
+
+    /**
+     * 处理当月数据并显示
+     *
+     * @param visitPlanArrayList 获取到的月数据
+     */
+    private void handlerAndShowByDay(List<VisitPlan> visitPlanArrayList) {
+        mCalendarView.removeAllEvents();
+        if (ListUtils.isEmpty(visitPlanArrayList)) {
+            setAdapter(visitPlanArrayList);
+        } else {
+            List<VisitPlan> showPlan = new ArrayList<>();
+            String mCurrentDay = DateFormatUtil.date2Str(mCurrentDate, DateFormatUtil.YMD);
+            for (VisitPlan visitPlan : visitPlanArrayList) {
+                mCalendarView.addEvent(new Event(Color.argb(255, 169, 68, 65), visitPlan.getStartTime()));
+                if (mCurrentDay.equals(visitPlan.getStartDay())) {
+                    showPlan.add(visitPlan);
+                }
+            }
+            setAdapter(showPlan);
+        }
+    }
+
     private void setAdapter(List<VisitPlan> visitPlanArrayList) {
         if (mListAdapter == null) {
             mListAdapter = new ListAdapter(visitPlanArrayList);
@@ -205,6 +276,7 @@ public class CustomerVisitActivity extends BaseActivity {
         } else {
             mListAdapter.updateVisitPlans(visitPlanArrayList);
         }
+        progressDialog.dismiss();
     }
 
     private class ListAdapter extends RecyclerView.Adapter<ListAdapter.VisitRecordViewHolder> {
@@ -261,11 +333,27 @@ public class CustomerVisitActivity extends BaseActivity {
         @Override
         public void onBindViewHolder(VisitRecordViewHolder holder, int i) {
             VisitPlan mVisitPlan = visitPlans.get(i);
-            holder.contactTv.setText(mVisitPlan.getCode());
-            holder.dateTv.setText(mVisitPlan.getCode());
-            holder.doManTv.setText(mVisitPlan.getCode());
+            holder.contactTv.setText(mVisitPlan.getCustomerName());
+            holder.dateTv.setText(mVisitPlan.getStartDay());
+            holder.doManTv.setText(mVisitPlan.getDoman());
             holder.statusTv.setText(mVisitPlan.getStatus());
+            holder.itemView.setTag(mVisitPlan);
+            holder.itemView.setOnClickListener(mOnItemClickListener);
         }
+
+        private View.OnClickListener mOnItemClickListener = new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (view.getTag() != null && view.getTag() instanceof VisitPlan) {
+                    VisitPlan mVisitPlan = (VisitPlan) view.getTag();
+                    startActivity(new Intent(ct, CustomerVisitDetailsActivity.class)
+                            .putExtra(Constants.Intents.TITLE, "客户拜访详情")
+                            .putExtra(Constants.Intents.ID, mVisitPlan.getId())
+                            .putExtra(Constants.Intents.CALLER, "MOBILEOUTPLAN")
+                    );
+                }
+            }
+        };
     }
 
 }

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

@@ -0,0 +1,188 @@
+package com.uas.appworks.crm3_0.activity;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
+import com.core.app.Constants;
+import com.core.base.OABaseActivity;
+import com.core.utils.CommonUtil;
+import com.modular.apputils.listener.OnSmartHttpListener;
+import com.modular.apputils.model.BillGroupModel;
+import com.modular.apputils.network.Parameter;
+import com.modular.apputils.network.Tags;
+import com.modular.apputils.utils.UUHttpHelper;
+import com.uas.appworks.R;
+import com.uas.appworks.adapter.BillListDetailsAdapter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CustomerVisitDetailsActivity extends OABaseActivity {
+    private final int LOAD_FORM = 0x11;
+
+    private ListView mListView;
+    private String mCaller;
+    private int mId;
+    private UUHttpHelper mUUHttpHelper;
+    private BillListDetailsAdapter mListAdapter;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_customer_visit_details);
+        initView();
+    }
+
+    private void initView() {
+        mUUHttpHelper = new UUHttpHelper(CommonUtil.getAppBaseUrl(ct));
+        mListView = (ListView) findViewById(R.id.mListView);
+        start(getIntent());
+    }
+
+    public void start(Intent intent) {
+        if (intent != null) {
+            mCaller = intent.getStringExtra(Constants.Intents.CALLER);
+            String mTitle = intent.getStringExtra(Constants.Intents.TITLE);
+            mId = intent.getIntExtra(Constants.Intents.ID, 0);
+            if (mTitle != null) {
+                setTitle(mTitle);
+            }
+        }
+        loadFormandGridDetail();
+    }
+
+    private void loadFormandGridDetail() {
+        showLoading();
+        mUUHttpHelper.requestCompanyHttp(new Parameter.Builder()
+                        .url("mobile/common/getformandgriddata.action")
+                        .addParams("caller", mCaller)
+                        .addParams("id", mId)
+                        .record(LOAD_FORM)
+                , mOnSmartHttpListener);
+    }
+
+    private OnSmartHttpListener mOnSmartHttpListener = new OnSmartHttpListener() {
+        @Override
+        public void onSuccess(int what, String message, Tags tag) throws Exception {
+            JSONObject jsonObject = JSON.parseObject(message);
+            switch (what) {
+                case LOAD_FORM:
+                    handlerFormData(JSONUtil.getJSONObject(jsonObject, "datas"));
+                    break;
+            }
+            dimssLoading();
+        }
+
+        @Override
+        public void onFailure(int what, String message, Tags tag) throws Exception {
+            dimssLoading();
+            if (JSONUtil.validateJSONObject(message)) {
+                showToast(JSONUtil.getText(message, "exceptionInfo"));
+            } else {
+                showToast(message);
+            }
+
+        }
+    };
+
+    private void handlerFormData(JSONObject datas) throws Exception {
+        String status = null;
+        List<BillGroupModel> mBillGroupModels = new ArrayList<>();
+        //配置主表
+        JSONArray formdatas = JSONUtil.getJSONArray(datas, "formdata");
+        if (!ListUtils.isEmpty(formdatas)) {
+            JSONObject formdata = formdatas.getJSONObject(0);//主表数据
+            JSONArray formconfigs = JSONUtil.getJSONArray(datas, "formconfigs");//主表配置
+            BillGroupModel mGroupModel = new BillGroupModel();
+            mGroupModel.setForm(true);
+            mGroupModel.setDeleteAble(false);
+            mGroupModel.setGroupIndex(0);
+            mGroupModel.setGroup(" ");
+            handlerModelByObject(mGroupModel, formconfigs, formdata);
+            status = JSONUtil.getText(formdata, "cu_auditstatus");
+            mBillGroupModels.add(mGroupModel);
+        }
+        JSONArray gridconfigs = JSONUtil.getJSONArray(datas, "gridconfigs");
+        if (!ListUtils.isEmpty(gridconfigs)) {
+            JSONArray griddatas = JSONUtil.getJSONArray(datas, "griddata");
+            for (int i = 0; i < griddatas.size(); i++) {
+                JSONObject griddata = gridconfigs.getJSONObject(i);
+                BillGroupModel mGroupModel = new BillGroupModel();
+                mGroupModel.setForm(false);
+                mGroupModel.setGroupIndex(i + 1);
+                mGroupModel.setGroup("明细表" + mGroupModel.getGroupIndex());
+                mGroupModel.setDeleteAble(false);
+                handlerModelByObject(mGroupModel, gridconfigs, griddata);
+                mBillGroupModels.add(mGroupModel);
+            }
+        }
+        //TODO 获取到当前的状态
+        setAdapter(mBillGroupModels);
+    }
+
+    private void handlerModelByObject(BillGroupModel mGroupModel, JSONArray configs, JSONObject object) {
+        for (int i = 0; i < configs.size(); i++) {
+            JSONObject config = configs.getJSONObject(i);
+            if (config == null) continue;
+            String caption = JSONUtil.getText(config, "FD_CAPTION", "DG_CAPTION");//获取第一个字段字段名称
+            String field = JSONUtil.getText(config, "FD_FIELD", "DG_FIELD");//字段名称
+            String type = JSONUtil.getText(config, "FD_TYPE", "DG_TYPE");
+            String dbFind = JSONUtil.getText(config, "FD_DBFIND", "DG_TYPE");
+            int isdefault = JSONUtil.getInt(config, "MFD_ISDEFAULT", "MDG_ISDEFAULT");
+            int appwidth = JSONUtil.getInt(config, "FD_APPWIDTH", "DG_APPWIDTH");
+            String findFunctionName = JSONUtil.getText(config, "DG_FINDFUNCTIONNAME");
+            String allowBlank = JSONUtil.getText(config, "FD_ALLOWBLANK", "DG_ALLOWBLANK");
+            String logicType = JSONUtil.getText(config, "FD_LOGICTYPE", "DG_LOGICTYPE");
+            JSONArray combostore = JSONUtil.getJSONArray(config, "COMBOSTORE");//本地值
+            BillGroupModel.BillModel mBillModel = new BillGroupModel.BillModel();
+            mBillModel.setFindFunctionName(findFunctionName);
+            mBillModel.setCaption(caption);
+            mBillModel.setAppwidth(appwidth);
+            mBillModel.setIsdefault(isdefault);
+            mBillModel.setDbfind(dbFind);
+            mBillModel.setType(type);
+            mBillModel.setLogicType(logicType);
+            mBillModel.setField(field);
+            mBillModel.setAllowBlank(allowBlank);
+            mBillModel.setValue(JSONUtil.getText(object, field));
+            if (!ListUtils.isEmpty(combostore)) {
+                List<BillGroupModel.LocalData> localDatas = new ArrayList<>();
+                for (int j = 0; j < combostore.size(); j++) {
+                    JSONObject combosModel = combostore.getJSONObject(j);
+                    BillGroupModel.LocalData mLocalData = new BillGroupModel.LocalData();
+                    mLocalData.display = JSONUtil.getText(combosModel, "DLC_DISPLAY");
+                    mLocalData.value = JSONUtil.getText(combosModel, "DLC_VALUE");
+                    localDatas.add(mLocalData);
+                }
+                mBillModel.setLocalDatas(localDatas);
+            }
+            if (mBillModel.getIsdefault() == -1 && !mBillModel.getType().equals("H")) {
+                mGroupModel.addShow(mBillModel);
+            } else {
+                mGroupModel.addHide(mBillModel);
+            }
+
+        }
+    }
+
+    public void setAdapter(List<BillGroupModel> groupModels) {
+        if (mListAdapter == null) {
+            mListAdapter = new BillListDetailsAdapter(ct, groupModels);
+            mListView.setAdapter(mListAdapter);
+        } else {
+            mListAdapter.updateGroupModels(groupModels);
+            mListAdapter.notifyDataSetChanged();
+        }
+    }
+}

+ 18 - 9
app_modular/appworks/src/main/java/com/uas/appworks/model/VisitPlan.java

@@ -4,14 +4,23 @@ package com.uas.appworks.model;
 public class VisitPlan {
     private int id;
     private String code;
-    private String entryDate;
+    private long entryDate;
     private String customerName;
     private String customerAddress;
-    private String startTime;
-    private String endTime;
+    private long startTime;
+    private long endTime;
     private String status;
     private String doman;
     private String domanCode;
+    private String startDay;
+
+    public String getStartDay() {
+        return startDay == null ? "" : startDay;
+    }
+
+    public void setStartDay(String startDay) {
+        this.startDay = startDay;
+    }
 
     public int getId() {
         return id;
@@ -29,11 +38,11 @@ public class VisitPlan {
         this.code = code;
     }
 
-    public String getEntryDate() {
+    public long getEntryDate() {
         return entryDate;
     }
 
-    public void setEntryDate(String entryDate) {
+    public void setEntryDate(long entryDate) {
         this.entryDate = entryDate;
     }
 
@@ -45,19 +54,19 @@ public class VisitPlan {
         this.customerName = customerName;
     }
 
-    public String getStartTime() {
+    public long getStartTime() {
         return startTime;
     }
 
-    public void setStartTime(String startTime) {
+    public void setStartTime(long startTime) {
         this.startTime = startTime;
     }
 
-    public String getEndTime() {
+    public long getEndTime() {
         return endTime;
     }
 
-    public void setEndTime(String endTime) {
+    public void setEndTime(long endTime) {
         this.endTime = endTime;
     }
 

+ 33 - 11
app_modular/appworks/src/main/res/layout/activity_customer_visit.xml

@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:orientation="vertical">
 
     <com.modular.apputils.widget.DivideRadioGroup
         android:id="@+id/visitTypeRg"
@@ -44,8 +45,34 @@
 
     </com.modular.apputils.widget.DivideRadioGroup>
 
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="2dp"
+        android:orientation="horizontal"
+        android:paddingLeft="@dimen/padding"
+        android:paddingRight="@dimen/padding">
+
+        <View
+            android:id="@+id/myLine"
+            android:layout_width="0dp"
+            android:background="#1084D1"
+            android:layout_height="match_parent"
+            android:layout_marginRight="@dimen/padding"
+            android:layout_weight="1" />
+
+        <View
+            android:id="@+id/otherLine"
+            android:layout_width="0dp"
+            android:background="#1084D1"
+            android:layout_marginLeft="@dimen/padding"
+            android:layout_height="match_parent"
+            android:layout_weight="1" />
+
+    </LinearLayout>
+
     <RelativeLayout
         android:id="@+id/calenderRl"
+        android:layout_marginTop="@dimen/paddingMin"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@color/white"
@@ -95,14 +122,9 @@
 
     <com.module.recyclerlibrary.ui.refresh.EmptyRecyclerView
         android:id="@+id/mEmptyRecyclerView"
-        android:layout_width="0dp"
+        android:layout_width="match_parent"
         android:layout_height="0dp"
+        android:layout_weight="1"
         android:layout_marginTop="@dimen/padding"
-        android:background="@color/white"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintHorizontal_bias="0.0"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/compactcalendar_view"
-        app:layout_constraintVertical_bias="1.0" />
-</android.support.constraint.ConstraintLayout>
+        android:background="@color/white"/>
+</LinearLayout>

+ 16 - 0
app_modular/appworks/src/main/res/layout/activity_customer_visit_details.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <ListView
+        android:id="@+id/mListView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:divider="@color/item_line"
+        android:dividerHeight="@dimen/line"
+        android:focusableInTouchMode="false" />
+
+
+</LinearLayout>