Parcourir la source

Merge branch 'developer' of https://gitlab.com/Arisono/SkWeiChat-Baidu into developer

Bitliker il y a 9 ans
Parent
commit
1c0d1c860e

+ 0 - 1
WeiChat/src/main/AndroidManifest.xml

@@ -448,7 +448,6 @@
             android:configChanges="orientation|keyboardHidden"
             android:windowSoftInputMode="adjustUnspecified|stateHidden"/>
         <activity android:name=".ui.erp.activity.crm.VisitReportPlanActivity" />
-        <activity android:name=".ui.erp.activity.crm.AddressSelectActivity" />
         <activity android:name=".ui.erp.activity.crm.BusinessAddActivity"
             android:configChanges="orientation|keyboardHidden"
             android:windowSoftInputMode="adjustUnspecified|stateHidden"/>

+ 9 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/crm/Business.java

@@ -11,6 +11,7 @@ public class Business {
     联系方式: XXXX
     备注:        XXXX*/
     private int bc_id;
+    private String code;
     private String num;
     private String name;
     private String leader;
@@ -112,4 +113,12 @@ public class Business {
     public void setBc_id(int bc_id) {
         this.bc_id = bc_id;
     }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
 }

+ 0 - 22
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/AddressSelectActivity.java

@@ -1,22 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.activity.crm;
-
-import android.support.v7.app.AppCompatActivity;
-import android.os.Bundle;
-
-import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.base.BaseActivity;
-
-/**
- * @功能:地图地址选择
- * @author:Arisono
- * @param:
- * @return:
- */
-public class AddressSelectActivity extends BaseActivity {
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_address_select);
-    }
-}

+ 93 - 78
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessActivity.java

@@ -18,6 +18,7 @@ import android.widget.Button;
 import android.widget.HorizontalScrollView;
 import android.widget.ListView;
 import android.widget.PopupWindow;
+import android.widget.Scroller;
 import android.widget.SimpleAdapter;
 
 import com.alibaba.fastjson.JSON;
@@ -54,6 +55,8 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
     private Button bt_create;
     @ViewInject(R.id.bt_manage)
     private Button bt_manage;
+    @ViewInject(R.id.sv_funnel)
+    private Scroller sv_funnel;
     @ViewInject(R.id.bt_go)
     private Button bt_go;
     @ViewInject(R.id.funnelview)
@@ -64,19 +67,7 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
     private ListViewInScroller lv_grid_dispaly;
     private HListViewOneAdapter hl_adapter;
     private ArrayList<ArrayList<String>> gridlists = new ArrayList<ArrayList<String>>();
-/*    private String gridData = "[" +
-            "[\"颜色\",\"序号\",\"商机阶段\",\"商机数量\",\"商机转化率\",\"账套\",\"公司\",\"客户名称\"],\n" +
-            "[\"#FF0000\",\"1\",\"152,002\",\"1223\",\"22\",\"UAS\",\"深圳优软科技\",\"xxxxx\"],\n" +
-            "[\"#00CCFF\",\"2\",\"8,775\",\"22\",\"323\",\"UAS\",\"深圳优软科技\",\"xxxxx\"],\n" +
-            "[\"#FFFF00\",\"3\",\"2,000\",\"232\",\"43242\",\"UAS\",\"深圳优软科技\",\"xxxxx\"],\n" +
-            "[\"#00FF00\",\"4\",\"11\",\"12312\",\"232433432\",\"UAS\",\"深圳优软技\",\"xxxxx\"],\n" +
-            "[\"#FF00FF\",\"5\",\"11\",\"12312\",\"232433432\",\"UAS\",\"深圳优软技\",\"xxxxx\"],\n" +
-            "[\"#FF9900\",\"6\",\"11\",\"12312\",\"232433432\",\"UAS\",\"深圳优软技\",\"xxxxx\"],\n" +
-            "[\"#993366\",\"7\",\"11\",\"12312\",\"232433432\",\"UAS\",\"深圳优软技\",\"xxxxx\"],\n" +
-            "[\"#C0C0C0\",\"8\",\"11\",\"12312\",\"232433432\",\"UAS\",\"深圳优软技\",\"xxxxx\"],\n" +
-            "[\"#FFCC99\",\"9\",\"11\",\"12312\",\"232433432\",\"UAS\",\"深圳优软技\",\"xxxxx\"]\n" +
-            "]"*/;
-    private String gridData ="  [\n" +
+    private String gridData = "  [\n" +
             "[\"颜色\",\"序号\",\"商机阶段\",\"商机数量\",\"商机转化率\"],\n" +
             "[\"#FF0000\",\"1\",\"152,002\",\"1223\",\"22\"],\n" +
             "[\"#00CCFF\",\"2\",\"8,775\",\"22\",\"323\"],\n" +
@@ -108,11 +99,12 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
         bt_manage.setOnClickListener(this);
         bt_go.setOnClickListener(this);
         bt_create.setOnClickListener(this);
+        lv_grid_dispaly.setFocusable(false);
     }
 
     public void initData() {
-        String month=new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getTimesMonthmorning());
-        sendHttpResquest("to_char(bc_recorddate,'yyyymm')="+month);
+        String month = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getTimesMonthmorning());
+        sendHttpResquest("to_char(bc_recorddate,'yyyymm')=" + month);
 
         gridlists = (ArrayList) JSON.parseArray(gridData, ArrayList.class);
         hl_adapter = new HListViewOneAdapter(ct, gridlists);
@@ -121,28 +113,38 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
 
 
         List<Integer> moneys = new ArrayList<>();
-        int x1 = 5000;
+        int x1 =444;
         moneys.add(x1);
-        int x2 = 4000;
+        int x2 = 1;
         moneys.add(x2);
-        int x3 = 3300;
+        int x3 = 5;
         moneys.add(x3);
-        int x4 = 3000;
+        int x4 = 1;
         moneys.add(x4);
-        int x5 = 3000;
+        int x5 = 1;
         moneys.add(x5);
-        int x6 = 3300;
+        int x6 = 40;
         moneys.add(x6);
-        int x7 = 3000;
+        int x7 = 5;
         moneys.add(x7);
-        int x8 = 3000;
+        int x8 = 10;
         moneys.add(x8);
-        int x9 = 3000;
+        int x9 = 5;
         moneys.add(x9);
-        int x10 = 3000;
-        moneys.add(x10);
-        funnelView.setData(moneys, x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10);
+        ArrayList<String> colors = new ArrayList<>();
+        colors.add("#CC99FF");
+        colors.add("#CC99FF");
+        colors.add("#CC99FF");
+        colors.add("#CC99FF");
+        colors.add("#CC99FF");
+        colors.add("#CC99FF");
+        colors.add("#CC99FF");
+        colors.add("#CC99FF");
+        colors.add("#CC99FF");
+//        funnelView.setColors(colors);/**/
+        funnelView.setData(moneys, x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9, colors);
         funnelView.animateY();
+       
     }
 
 
@@ -180,47 +182,61 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
                 startActivity(new Intent(this, BusinessDetailActivty.class).putExtra("bt_type", 2));
                 break;
             case R.id.bt_go:
-                startActivity(new Intent(this,BusinessStateActivity.class).putExtra("bt_type", 0));
+                startActivity(new Intent(this, BusinessStateActivity.class).putExtra("bt_type", 0));
                 break;
         }
     }
 
-    private Handler mHandler=new Handler(){
+    private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
-            switch (msg.what){
+            switch (msg.what) {
                 case Constants.HTTP_SUCCESS_INIT:
                     progressDialog.dismiss();
                     gridlists.clear();
                     Log.i(TAG, "json:" + msg.getData().getString("result"));
-                   JSONObject root= JSON.parseObject(msg.getData().getString("result"));
-                   JSONArray chances= root.getJSONArray("chances");
-                    if (!chances.isEmpty()){
-                        ArrayList<String> items=new ArrayList<>();
+                    JSONObject root = JSON.parseObject(msg.getData().getString("result"));
+                    JSONArray chances = root.getJSONArray("chances");
+                    ArrayList<Integer> counts = new ArrayList<>();
+                    ArrayList<String> colors = new ArrayList<>();
+                    int countToatal = 0;
+                    if (!chances.isEmpty()) {
+                        ArrayList<String> items = new ArrayList<>();
                         items.add("颜色");
                         items.add("序号");
                         items.add("商机阶段");
-                        items.add("商机阶段");
+                        items.add("商机数量");
                         items.add("商机转化率");
                         gridlists.add(items);
-                       for (int i=0;i<chances.size();i++) {
-                            items=new ArrayList<>();
-                           String currentprocess = chances.getJSONObject(i).getString("currentprocess");
-                           String percent = chances.getJSONObject(i).getString("percent");
-                           int count = chances.getJSONObject(i).getInteger("count");
-                           items.add("#FF0000");
-                           items.add(String.valueOf(i+1));
-                           items.add(currentprocess);
-                           items.add(String.valueOf(count));
-                           items.add(percent);
-                           gridlists.add(items);
-                       }
+                        for (int i = 0; i < chances.size(); i++) {
+                            items = new ArrayList<>();
+                            String currentprocess = chances.getJSONObject(i).getString("currentprocess");
+                            String percent = chances.getJSONObject(i).getString("percent");
+                            String color = chances.getJSONObject(i).getString("color");
+                            int detno = chances.getJSONObject(i).getInteger("detno");
+                            int count = chances.getJSONObject(i).getInteger("count");
+                            items.add("#" + color);
+                            colors.add("#" + color);
+                            items.add(String.valueOf(i + 1));
+                            items.add(currentprocess);
+                            items.add(String.valueOf(count));
+                            counts.add(count);
+                            countToatal = countToatal + count;
+                            items.add(percent);
+                            gridlists.add(items);
+                        }
                     }
                     //gridlists = (ArrayList) JSON.parseArray(gridData, ArrayList.class);
                     hl_adapter = new HListViewOneAdapter(ct, gridlists);
                     lv_grid_dispaly.setAdapter(hl_adapter);
                     layout.setVisibility(View.VISIBLE);
+                    Log.i(TAG, "handleMessage:colors:" + JSON.toJSONString(colors));
+                    Log.i(TAG, "handleMessage:counts:" + JSON.toJSONString(counts) );
+                    Log.i(TAG, "handleMessage:countToatal:" + countToatal);
+//                    funnelView.setColors(colors);
+                    funnelView.setData(counts, countToatal, colors);
                     funnelView.animateY();
+                 
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
                     progressDialog.dismiss();
@@ -230,15 +246,15 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
         }
     };
 
-    private void sendHttpResquest(String currentdate){
+    private void sendHttpResquest(String currentdate) {
         progressDialog.show();
-        String url= Constants.getAppBaseUrl(ct)+"/mobile/crm/getBusinessChancebyMonth.action";
-        Map<String,Object> params=new HashMap<>();
-        if (StringUtils.isEmpty(currentdate)){
-            currentdate="to_char(bc_recorddate,'yyyymm')=201607";
+        String url = Constants.getAppBaseUrl(ct) + "/mobile/crm/getBusinessChancebyMonth.action";
+        Map<String, Object> params = new HashMap<>();
+        if (StringUtils.isEmpty(currentdate)) {
+            currentdate = "to_char(bc_recorddate,'yyyymm')=201607";
         }
         params.put("currentdate", currentdate);
-        LinkedHashMap<String , Object> headers=new LinkedHashMap<>();
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, Constants.HTTP_SUCCESS_INIT, null, null, "post");
     }
@@ -262,39 +278,39 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
                 @Override
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                     switch (position) {
-                        case 0:
-                            String month=new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getTimesMonthmorning());
+                    /*    case 0:
+                            String month = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getTimesMonthmorning());
                             sendHttpResquest("to_char(bc_recorddate,'yyyymm')=" + month);
 
-                            break;
-                        case 1://本月
-                             month=new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getTimesMonthmorning());
-                            sendHttpResquest("to_char(bc_recorddate,'yyyymm')="+month);
+                            break;*/
+                        case 0://本月
+                           String  month = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getTimesMonthmorning());
+                            sendHttpResquest("to_char(bc_recorddate,'yyyymm')=" + month);
 
                             break;
-                        case 2://上月
-                            String lastMonth=new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getLastMonthStartMorning());
-                            sendHttpResquest("to_char(bc_recorddate,'yyyymm')="+lastMonth);
+                        case 1://上月
+                            String lastMonth = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getLastMonthStartMorning());
+                            sendHttpResquest("to_char(bc_recorddate,'yyyymm')=" + lastMonth);
 
                             break;
-                        case 3://本季度
-                            String quarterStart=new SimpleDateFormat("yyyyMM").format(DateFormatUtil. getCurrentQuarterStartTime());
-                            String quarterEnd=new SimpleDateFormat("yyyyMM").format(DateFormatUtil. getCurrentQuarterEndTime());
+                        case 2://本季度
+                            String quarterStart = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getCurrentQuarterStartTime());
+                            String quarterEnd = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getCurrentQuarterEndTime());
 
-                            sendHttpResquest("to_char(bc_recorddate,'yyyymm')>="+quarterStart+" and to_char(bc_recorddate,'yyyymm')< "+quarterEnd);
+                            sendHttpResquest("to_char(bc_recorddate,'yyyymm')>=" + quarterStart + " and to_char(bc_recorddate,'yyyymm')< " + quarterEnd);
                             break;
-                        case 4://上季度
-                            String preStart=new SimpleDateFormat("yyyyMM").format(DateFormatUtil. getPreQuarterStartTime());
-                            String preEnd=new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getPreQuarterEndTime());
-                            sendHttpResquest("to_char(bc_recorddate,'yyyymm')>="+preStart+" and to_char(bc_recorddate,'yyyymm')< "+preEnd);
+                        case 3://上季度
+                            String preStart = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getPreQuarterStartTime());
+                            String preEnd = new SimpleDateFormat("yyyyMM").format(DateFormatUtil.getPreQuarterEndTime());
+                            sendHttpResquest("to_char(bc_recorddate,'yyyymm')>=" + preStart + " and to_char(bc_recorddate,'yyyymm')< " + preEnd);
                             break;
-                        case 5://本年度
-                            String currentYear=new SimpleDateFormat("yyyy").format(DateFormatUtil.getCurrentYearStartTime());
-                            sendHttpResquest("to_char(bc_recorddate,'yyyy')="+currentYear);
+                        case 4://本年度
+                            String currentYear = new SimpleDateFormat("yyyy").format(DateFormatUtil.getCurrentYearStartTime());
+                            sendHttpResquest("to_char(bc_recorddate,'yyyy')=" + currentYear);
                             break;
-                        case 6://上年度
-                            String preYear=new SimpleDateFormat("yyyy").format(DateFormatUtil.getPreYearStartTime());
-                            sendHttpResquest("to_char(bc_recorddate,'yyyy')="+preYear);
+                        case 5://上年度
+                            String preYear = new SimpleDateFormat("yyyy").format(DateFormatUtil.getPreYearStartTime());
+                            sendHttpResquest("to_char(bc_recorddate,'yyyy')=" + preYear);
                             break;
                     }
                     popupWindow.dismiss();
@@ -323,8 +339,7 @@ public class BusinessActivity extends BaseActivity implements View.OnClickListen
     private List<Map<String, Object>> getPopData() {
         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
         Map<String, Object> map = new HashMap<String, Object>();
-        map.put("item_name", "时间");
-        list.add(map);
+      
 
         map = new HashMap<String, Object>();
         map.put("item_name", "本月");

+ 90 - 50
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessDetailActivty.java

@@ -60,7 +60,9 @@ public class BusinessDetailActivty extends BaseActivity {
     private ClearEditText search_edit;
     private String formCondition;
     private String gridCondition;
-    private int page=1;
+    private int page = 1;
+    private String bc_code;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -92,6 +94,7 @@ public class BusinessDetailActivty extends BaseActivity {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 final BussinessDetailAdapter.ViewHolder holder = (BussinessDetailAdapter.ViewHolder) view.getTag();
+              
                 startActivity(new Intent(BusinessDetailActivty.this, BusinessDetailInfoActivity.class)
                                 .putExtra("type", holder.type)
                                 .putExtra("formCondition", formCondition + "=" + holder.bc_id)
@@ -121,11 +124,13 @@ public class BusinessDetailActivty extends BaseActivity {
             }
         });
     }
+
     int type;
+
     private void initData() {
         sendHttpResquest(Constants.HTTP_SUCCESS_INIT, page);
         Intent intent = getIntent();
-         type = 0;
+        type = 0;
         if (intent != null) {
             type = intent.getIntExtra("bt_type", 0);
         }
@@ -201,7 +206,7 @@ public class BusinessDetailActivty extends BaseActivity {
             } else {
                 holder = (ViewHolder) convertView.getTag();
             }
-            holder.bc_id=mdata.get(position).getBc_id();
+            holder.bc_id = mdata.get(position).getBc_id();
             holder.type = mdata.get(position).getType();
             holder.tv_num.setText(mdata.get(position).getNum());
             holder.tv_name.setText(mdata.get(position).getName());
@@ -220,13 +225,18 @@ public class BusinessDetailActivty extends BaseActivity {
                 holder.bt_event.setVisibility(View.VISIBLE);
                 holder.bt_event.setText("分配");
             }
-           // holder.tv_date.setText(mdata.get(position).getDate());
+            // holder.tv_date.setText(mdata.get(position).getDate());
             holder.bt_event.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
                     if (mdata.get(position).getType() == 1) {
-                        startActivity(new Intent(BusinessDetailActivty.this, BusinessDetailInfoActivity.class));
+                        startActivity(new Intent(BusinessDetailActivty.this, BusinessDetailInfoActivity.class)
+                                .putExtra("type", 1)
+                                .putExtra("formCondition", formCondition + "=" + mdata.get(position).getBc_id())
+                                        .putExtra("gridCondition", gridCondition + "=" + mdata.get(position).getBc_id())
+                        );
                     } else if (mdata.get(position).getType() == 2) {
+                        bc_code = mdata.get(position).getNum();
                         startActivityForResult(new Intent(ct, DbfindListActivity.class), 1);
                     }
                 }
@@ -241,23 +251,22 @@ public class BusinessDetailActivty extends BaseActivity {
                 protected FilterResults performFiltering(CharSequence constraint) {
                     //过滤数据
                     FilterResults searchResults = new FilterResults();
-                    
-                    if (constraint == null || constraint.length() == 0){
-                        searchResults.values=mData;
-                        searchResults.count=mData.size();
-                    }else{
+
+                    if (constraint == null || constraint.length() == 0) {
+                        searchResults.values = mData;
+                        searchResults.count = mData.size();
+                    } else {
                         ArrayList<String> searchKey = new ArrayList<String>();
-                        ArrayList<Business> newBusiness=new ArrayList<>();
-                        for (Business business:mdata){
-                            String num=business.getNum();
-                            String name=business.getName();
-                            String source=business.getSource();
-                            String links=business.getPhone();
-                            String remark=business.getNote();
-                            String date=business.getDate();
-                            if (num.contains(constraint)||name.contains(constraint)||source.contains(constraint)
-                                    ||links.contains(constraint)||remark.contains(constraint)||date.contains(constraint))
-                            {
+                        ArrayList<Business> newBusiness = new ArrayList<>();
+                        for (Business business : mdata) {
+                            String num = business.getNum();
+                            String name = business.getName();
+                            String source = business.getSource();
+                            String links = business.getPhone();
+                            String remark = business.getNote();
+                            String date = business.getDate();
+                            if (num.contains(constraint) || name.contains(constraint) || source.contains(constraint)
+                                    || links.contains(constraint) || remark.contains(constraint) || date.contains(constraint)) {
                                 newBusiness.add(business);
                             }
 //                            searchKey.add(num);
@@ -267,18 +276,18 @@ public class BusinessDetailActivty extends BaseActivity {
 //                            searchKey.add(remark);
 //                            searchKey.add(date);
                         }
-                        searchResults.values=newBusiness;
-                        searchResults.count=newBusiness.size();
+                        searchResults.values = newBusiness;
+                        searchResults.count = newBusiness.size();
                     }
                     return searchResults;
                 }
 
                 @Override
                 protected void publishResults(CharSequence constraint, FilterResults results) {
-                 //装配数据
-                    mdata= (ArrayList<Business>) results.values;
+                    //装配数据
+                    mdata = (ArrayList<Business>) results.values;
                     if (mAdapter.getCount() == 0) {
-                       
+
                     }
                     notifyDataSetChanged();
                 }
@@ -299,36 +308,39 @@ public class BusinessDetailActivty extends BaseActivity {
             Button bt_event;
             int type;
         }
-        
-        
+
+
     }
 
 
-    private Handler mHandler=new Handler(){
+    private Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
-            switch (msg.what){
+            switch (msg.what) {
                 case Constants.HTTP_SUCCESS_INIT:
                     progressDialog.dismiss();
                     Log.i(TAG, "handleMessage:" + msg.getData().getString("result"));
-                    formCondition=JSON.parseObject(msg.getData().getString("result")).getString("keyField");
-                    gridCondition=JSON.parseObject(msg.getData().getString("result")).getString("pfField");
-                    JSONArray array= JSON.parseObject(msg.getData().getString("result")).getJSONArray("listdata");
-                    if(!array.isEmpty()){
-                        for (int i=0;i<array.size();i++){
-                            Business model=new Business();
+                    formCondition = JSON.parseObject(msg.getData().getString("result")).getString("keyField");
+                    gridCondition = JSON.parseObject(msg.getData().getString("result")).getString("pfField");
+                    if (StringUtils.isEmpty(formCondition))formCondition="bc_id";
+                    if (StringUtils.isEmpty(gridCondition))gridCondition="bc_id";
+                    JSONArray array = JSON.parseObject(msg.getData().getString("result")).getJSONArray("listdata");
+                    if (!array.isEmpty()) {
+                        for (int i = 0; i < array.size(); i++) {
+                            Business model = new Business();
                             model.setNum(array.getJSONObject(i).getString("bc_code"));
                             model.setDate(array.getJSONObject(i).getString("bc_recorddate"));
                             model.setName(array.getJSONObject(i).getString("bc_description"));
                             model.setPhone(array.getJSONObject(i).getString("bc_tel"));
                             model.setNote(array.getJSONObject(i).getString("bc_remark"));
                             model.setSource(array.getJSONObject(i).getString("bc_from"));
-                            if (array.getJSONObject(i).getObject("bc_id",Object.class) instanceof Integer)
-                            { model.setBc_id(array.getJSONObject(i).getInteger("bc_id"));}
+                            if (array.getJSONObject(i).getObject("bc_id", Object.class) instanceof Integer) {
+                                model.setBc_id(array.getJSONObject(i).getInteger("bc_id"));
+                            }
                             model.setType(type);
                             mData.add(model);
                         }
-                    }else{
+                    } else {
                         ToastMessage("数据加载完毕!");
                     }
 //                    "bc_tel":"",
@@ -340,7 +352,7 @@ public class BusinessDetailActivty extends BaseActivity {
 //                        "bc_id":730
                     mAdapter = new BussinessDetailAdapter(ct, mData);
                     mlist.setAdapter(mAdapter);
-                    if (page!=1) {
+                    if (page != 1) {
                         mlist.getRefreshableView().setSelection(mAdapter.getCount());
                     }
                     mlist.onRefreshComplete();
@@ -350,35 +362,63 @@ public class BusinessDetailActivty extends BaseActivity {
                     Log.i(TAG, "handleMessage:" + msg.getData().getString("result"));
                     mlist.onRefreshComplete();
                     break;
+                case BUSINESS_QIANG:
+                    Log.i(TAG, "handleMessage:" + msg.getData().getString("result"));
+                    progressDialog.dismiss();
+                    ToastMessage("抢商机成功!");
+                    startActivity(new Intent(ct, BusinessActivity.class));
+                    break;
+                case BUSINESS_FENPEI:
+                    progressDialog.dismiss();
+                    ToastMessage("分配商机成功!");
+                    startActivity(new Intent(ct, BusinessActivity.class));
+                    break;
             }
         }
     };
 
-    private void sendHttpResquest(int what,int page){
+    private void sendHttpResquest(int what, int page) {
         progressDialog.show();
-        String url= Constants.getAppBaseUrl(ct)+"mobile/common/list.action";
-        Map<String,Object> params=new HashMap<>();
-        if (page==1)mData.clear();
+        String url = Constants.getAppBaseUrl(ct) + "mobile/common/list.action";
+        Map<String, Object> params = new HashMap<>();
+        if (page == 1) mData.clear();
         params.put("page", page);
         params.put("pageSize", 10);
-        params.put("caller","BusinessChance");
-        params.put("condition", "1=1");
-        LinkedHashMap<String , Object> headers=new LinkedHashMap<>();
+        params.put("caller", "BusinessChance");
+        params.put("condition", "(bc_type='公有' or nvl(bc_type,' ')=' ')");
+        //bc_currentprocess=商机阶段
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, what, null, null, "post");
     }
 
+    private final int BUSINESS_FENPEI = 3;
+    private final int BUSINESS_QIANG = 2;
+
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        switch (requestCode){
+        switch (requestCode) {
             case 1:
                 if (data == null) {
                     return;
                 }
-                String en_name = data.getStringExtra("en_name");
-
+                String bt_doman = data.getStringExtra("en_name");
+                sendHttpBusinessQiang(BUSINESS_FENPEI, bc_code, bt_doman);
                 break;
         }
         super.onActivityResult(requestCode, resultCode, data);
     }
+
+
+    private void sendHttpBusinessQiang(int what, String bc_code, String bc_doman) {
+        progressDialog.show();
+        String url = Constants.getAppBaseUrl(ct) + "mobile/crm/updateBusinessChanceDoman.action";
+        Map<String, Object> params = new HashMap<>();
+        params.put("bc_code", bc_code);
+        params.put("bc_doman", bc_doman);
+        params.put("bc_domancode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, what, null, null, "post");
+    }
 }

+ 6 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessDetailInfoActivity.java

@@ -31,6 +31,7 @@ import com.xzjmyk.pm.activity.ui.erp.activity.DbfindListActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.util.DisplayUtil;
 
 import java.util.ArrayList;
@@ -132,9 +133,11 @@ public class BusinessDetailInfoActivity extends BaseActivity implements View.OnC
         bt_qiang.setOnClickListener(this);
         bt_fenpei.setOnClickListener(this);
     }
+
     private void initData() {
         sendHttpResquest(Constants.HTTP_SUCCESS_INIT, formCondition, gridCondition);
     }
+
     @Override
     public void onClick(View v) {
         switch (v.getId()) {
@@ -152,7 +155,6 @@ public class BusinessDetailInfoActivity extends BaseActivity implements View.OnC
                 break;
             case R.id.bt_fenpei:
                 startActivityForResult(new Intent(ct, DbfindListActivity.class), 1);
-                //sendHttpBusinessQiang(BUSINESS_FENPEI,bt_code,bt_doman);
                 break;
         }
     }
@@ -312,12 +314,12 @@ public class BusinessDetailInfoActivity extends BaseActivity implements View.OnC
                     // ViewUtil.ToastMessage(ct, msg.getData().getString("result"));
                     progressDialog.dismiss();
                     ToastMessage("抢商机成功!");
-                    startActivity(new Intent(ct, BusinessActivity.class));
+                    startActivity(new Intent(ct, BusinessDetailActivty.class).putExtra("bt_type",1));
                     break;
                 case BUSINESS_FENPEI:
                     progressDialog.dismiss();
                     ToastMessage("分配商机成功!");
-                    startActivity(new Intent(ct, BusinessActivity.class));
+                    startActivity(new Intent(ct, BusinessDetailActivty.class).putExtra("bt_type",2));
                     break;
                 case BUSINESS_RELEASE:
                     ToastMessage("商机释放成功!");
@@ -338,7 +340,7 @@ public class BusinessDetailInfoActivity extends BaseActivity implements View.OnC
         String url = Constants.getAppBaseUrl(ct) + "mobile/common/getPanel.action";
         Map<String, Object> params = new HashMap<>();
         params.put("caller", "BusinessChance");
-        params.put("formCondition", formCondition);
+        params.put("formCondition", "bc_id"+formCondition);
         params.put("gridCondition", gridCondition);
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));

+ 1 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/BusinessStateActivity.java

@@ -310,7 +310,6 @@ public class BusinessStateActivity extends BaseActivity implements View.OnClickL
                         searchResults.values=mData;
                         searchResults.count=mData.size();
                     }else{
-                        ArrayList<String> searchKey = new ArrayList<String>();
                         ArrayList<Business> newBusiness=new ArrayList<>();
                         for (Business business:mdata){
                             String num=business.getNum();
@@ -324,12 +323,6 @@ public class BusinessStateActivity extends BaseActivity implements View.OnClickL
                             {
                                 newBusiness.add(business);
                             }
-//                            searchKey.add(num);
-//                            searchKey.add(name);
-//                            searchKey.add(source);
-//                            searchKey.add(links);
-//                            searchKey.add(remark);
-//                            searchKey.add(date);
                         }
                         searchResults.values=newBusiness;
                         searchResults.count=newBusiness.size();
@@ -339,7 +332,6 @@ public class BusinessStateActivity extends BaseActivity implements View.OnClickL
 
                 @Override
                 protected void publishResults(CharSequence constraint, FilterResults results) {
-                    //装配数据
                     mdata= (ArrayList<Business>) results.values;
                     if (mAdapter.getCount() == 0) {
 
@@ -425,7 +417,7 @@ public class BusinessStateActivity extends BaseActivity implements View.OnClickL
                             mData.add(model);
                         }
                     }else{
-                        ToastMessage("暂时没有数据!");
+                      
                     }
                     mAdapter = new BussinessDetailAdapter(ct, mData);
                     mlist.setAdapter(mAdapter);

+ 58 - 8
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/CustomerListActivity.java

@@ -31,7 +31,9 @@ import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.crm.Business;
+import com.xzjmyk.pm.activity.bean.oa.MeetUserEntity;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.UserSelectActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
@@ -59,6 +61,12 @@ public class CustomerListActivity extends BaseActivity {
     private TextView tv_count_end;
     @ViewInject(R.id.tv_count_total)
     private TextView tv_count_total;
+    @ViewInject(R.id.tv_name)
+    private TextView tv_name;
+    @ViewInject(R.id.tv_department)
+    private TextView tv_department;
+    @ViewInject(R.id.tv_position)
+    private TextView tv_position;
     @ViewInject(R.id.list_business)
     private PullToRefreshListView mlist;
     private ArrayList<Business> mData = new ArrayList<Business>();
@@ -77,6 +85,7 @@ public class CustomerListActivity extends BaseActivity {
         ct = this;
         ViewUtils.inject(this);
         getSupportActionBar().setTitle("客户");
+        tv_name.setText(CommonUtil.getSharedPreferences(ct,"erp_username"));
     }
 
     private void initListener() {
@@ -85,12 +94,12 @@ public class CustomerListActivity extends BaseActivity {
             @Override
             public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                 page=1;
-                sendHttpResquest(Constants.HTTP_SUCCESS_INIT,0,page);
+                sendHttpResquest(Constants.HTTP_SUCCESS_INIT,0,page,isSelected,"");
             }
 
             @Override
             public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
-                sendHttpResquest(Constants.HTTP_SUCCESS_INIT,0,++page);
+                sendHttpResquest(Constants.HTTP_SUCCESS_INIT,0,++page,isSelected,"");
             }
         });
         mlist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@@ -114,7 +123,8 @@ public class CustomerListActivity extends BaseActivity {
     }
 
     private void initData() {
-        sendHttpResquest(Constants.HTTP_SUCCESS_INIT,0,page);
+        em_code= CommonUtil.getSharedPreferences(ct,"erp_username");
+        sendHttpResquest(Constants.HTTP_SUCCESS_INIT,kind,page,0,"");
     }
 
     @Override
@@ -228,7 +238,27 @@ public class CustomerListActivity extends BaseActivity {
             plist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                 @Override
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-
+                   switch (position){
+                       case 0:
+                           em_code=  CommonUtil.getSharedPreferences(ct,"erp_username");
+                           isSelected=0;
+                           page=1;
+                           kind=0;
+                           sendHttpResquest(Constants.HTTP_SUCCESS_INIT,kind,page,isSelected,"");
+                           popupWindow.dismiss();
+                           break;
+                       case 1:
+                           Intent intent = new Intent(ct, UserSelectActivity.class);
+                           intent.putExtra("single", true);
+                           intent.putExtra("net", true);
+                           startActivityForResult(intent, 0x11);
+                           popupWindow.dismiss();
+                           break;
+                       case 2:
+                           popupWindow.dismiss();
+                           break;
+                       
+                   }
                 }
             });
             popupWindow = new PopupWindow(view, windowManager.getDefaultDisplay().getWidth() / 3, windowManager.getDefaultDisplay().getHeight() / 3);
@@ -308,20 +338,40 @@ public class CustomerListActivity extends BaseActivity {
         }
     };
 
-    private void sendHttpResquest(int what,int kind,int page){
+    private void sendHttpResquest(int what,int kind,int page,int isSelected,String emplist){
         progressDialog.show();
         String url= Constants.getAppBaseUrl(ct)+"/mobile/crm/getCustomerDetail.action";
         Map<String,Object> params=new HashMap<>();
-        params.put("emcode", CommonUtil.getSharedPreferences(ct,"erp_username"));
+        params.put("emcode", em_code);
         params.put("page", page);
         params.put("pageSize", "10");
+        params.put("isSelected",isSelected);
+        params.put("emplist",emplist);
         params.put("type", "2");
         params.put("kind",kind);
         LinkedHashMap<String , Object> headers=new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, params, mHandler, headers, what, null, null, "post");
     }
-
-
+    
+    private int isSelected=0;
+    private int kind;
+    private String em_code;
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (data == null) return;
+        if (requestCode == 0x11 && 0x11 == resultCode) {
+            MeetUserEntity entity = data.getParcelableExtra("data");
+            if (entity == null || entity.getEmCode() == null) return;
+            isSelected=1;
+            page=1;
+            kind=0;
+            em_code=entity.getEmCode();
+            tv_name.setText(entity.getName());
+            tv_department.setText(entity.getImId());
+            tv_position.setText("");
+            sendHttpResquest(Constants.HTTP_SUCCESS_INIT,kind,page,isSelected,em_code);
+        }
+    }
 
 }

+ 4 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/SalesRankingActivity.java

@@ -115,16 +115,15 @@ public class SalesRankingActivity extends BaseActivity {
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case R.id.sale_date_select:
-                DatePicker picker = new DatePicker(this);
+                DatePicker picker = new DatePicker(this,DatePicker.YEAR_MONTH);
                 picker.setRange(1950, 2030);
                 picker.setAnimationStyle(R.style.Animation_CustomPopup);
                 picker.setSelectedItem(
                         calendar.get(Calendar.YEAR),
-                        calendar.get(Calendar.MONTH) + 1,
-                        calendar.get(Calendar.DAY_OF_MONTH));
-                picker.setOnDatePickListener(new DatePicker.OnYearMonthDayPickListener() {
+                        calendar.get(Calendar.MONTH) + 1);
+                picker.setOnDatePickListener(new DatePicker.OnYearMonthPickListener() {
                     @Override
-                    public void onDatePicked(String year, String month, String day) {
+                    public void onDatePicked(String year, String month) {
                         sendHttpResquest(Constants.HTTP_SUCCESS_INIT,year+month);
                         tv_date_title.setText(year+"年"+month+"月荣誉墙");
                     }

+ 101 - 518
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/FunnelView.java

@@ -2,105 +2,63 @@ package com.xzjmyk.pm.activity.view;
 
 import android.animation.ObjectAnimator;
 import android.animation.ValueAnimator;
+import android.annotation.SuppressLint;
 import android.content.Context;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.Path;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.util.TypedValue;
 import android.view.View;
 import android.view.animation.AccelerateDecelerateInterpolator;
 
+import com.alibaba.fastjson.JSON;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+
 import java.util.ArrayList;
 import java.util.List;
 
 /**
  * Created by zhengjiong on 16/1/20.
  */
+@SuppressLint("NewApi")
 public class FunnelView extends View implements ValueAnimator.AnimatorUpdateListener {
-    public static final float ANGLE_SCALE = 3.0f;
+    public static final float ANGLE_SCALE = 2.0f;
     private List<Integer> mMoneys = new ArrayList<>();
     private int maxMoney;
-
     private float phaseX = 1f;
     private int textAlpha = 255;
-
-    private Paint mPaint1;
-    private Paint mPaint2;
-    private Paint mPaint3;
-    private Paint mPaint4;
-    private Paint mPaint5;
-    private Paint mPaint6;
-    private Paint mPaint7;
-    private Paint mPaint8;
-    private Paint mPaint9;
-    private Paint mPaint10;
-
+    private ArrayList<Paint> mPaints = new ArrayList<>();
+    private ArrayList<String> colors = new ArrayList<>();
     private Paint mPaintLine;
     private Paint mPaintText;
-
-
-    private Path mPath1;
-    private Path mPath2;
-    private Path mPath3;
-    private Path mPath4;
-    private Path mPath5;
-
-    private Path mPath6;
-    private Path mPath7;
-    private Path mPath8;
-    private Path mPath9;
-    private Path mPath10;
-
-
     private float mTotalHeight = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 250, getResources().getDisplayMetrics());
-
-    private float mPath1Height;
-    private float mPath2Height;
-    private float mPath3Height;
-    private float mPath4Height;
-    private float mPath5Height;
-    private float mPath6Height;
-    private float mPath7Height;
-    private float mPath8Height;
-    private float mPath9Height;
-    private float mPath10Height;
-
-    private float mPath1AngleWidth;
-    private float mPath2AngleWidth;
-    private float mPath3AngleWidth;
-    private float mPath4AngleWidth;
-    private float mPath5AngleWidth;
-    private float mPath6AngleWidth;
-    private float mPath7AngleWidth;
-    private float mPath8AngleWidth;
-    private float mPath9AngleWidth;
-    private float mPath10AngleWidth;
-
-
-    private float mPath3LineStartX;
-    private float mPath3LineStartY;
-
-    private float mPath4LineStartX;
-    private float mPath4LineStartY;
-
-    private float mPath5LineStartX;
-    private float mPath5LineStartY;
-
-    private float maxWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 330, getResources().getDisplayMetrics());
-    private float maxLineH = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 90, getResources().getDisplayMetrics());
-    private float minLineH = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics());
-
-    private float startOffsetX = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics());
-    private float startOffsetY = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics());
-
-    private float lineStartOffsetX = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics());
-    private float textStartOffsetX = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 7, getResources().getDisplayMetrics());
+    private ArrayList<Float> mPathHeights = new ArrayList<>();
+    private ArrayList<Float> mPathAngleWidths = new ArrayList<>();
+
+    private float maxWidth = 
+            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 330, getResources().getDisplayMetrics());
+    private float maxLineH = 
+            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 250, getResources().getDisplayMetrics());
+    private float minLineH = 
+            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics());
+
+    private float startOffsetX =
+            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics());
+    private float startOffsetY =
+            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getResources().getDisplayMetrics());
+
+    private float lineStartOffsetX =
+            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics());
+    private float textStartOffsetX =
+            TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 7, getResources().getDisplayMetrics());
 
     private float mLastX;
     private float mLastY;
     private float mLastWidth;
+    private int maxHight;
 
     public FunnelView(Context context) {
         this(context, null);
@@ -112,208 +70,56 @@ public class FunnelView extends View implements ValueAnimator.AnimatorUpdateList
 
     public FunnelView(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
-
         init();
     }
 
-    public void setData(List<Integer> moneys, int maxMoney) {
+    public void setColors(ArrayList<String> colors) {
+        this.colors = colors;
+    }
+
+    public void setData(List<Integer> moneys, int maxMoney,ArrayList<String> colors) {
         this.mMoneys = moneys;
         this.maxMoney = maxMoney;
+        this.colors=colors;
+        init();
         calculate();
-        //int averageHeight = (int) (mTotalHeight / 5);
-        invalidate();
+        requestLayout();
     }
 
     private void calculate() {
+        Log.i("Arison", "setData:moneys:" + JSON.toJSONString(mMoneys));
+        Log.i("Arison", "setData:maxMoney:" + maxMoney);
+        mPathHeights.clear();
+        mPathAngleWidths.clear();
         for (int i = 0; i < mMoneys.size(); i++) {
             int money = mMoneys.get(i);
             float scale = (float) money / maxMoney;
-            switch (i) {
-                case 0:
-                    mPath1Height = mTotalHeight * scale * phaseX;
-                    if (mPath1Height < minLineH * phaseX) {
-                        mPath1Height = minLineH * phaseX;
-                    } else if (mPath1Height > maxLineH * phaseX) {
-                        mPath1Height = maxLineH * phaseX;
-                    }
-                    mPath1AngleWidth = mPath1Height / ANGLE_SCALE;
-                    //System.out.println("mPath1Height=" + mPath1Height + " ,phaseX=" + phaseX);
-                    break;
-                case 1:
-                    mPath2Height = mTotalHeight * scale * phaseX;
-                    if (mPath2Height < minLineH * phaseX) {
-                        mPath2Height = minLineH * phaseX;
-                    } else if (mPath2Height > maxLineH * phaseX) {
-                        mPath2Height = maxLineH * phaseX;
-                    }
-
-                    mPath2AngleWidth = mPath2Height / ANGLE_SCALE;
-
-                    //System.out.println("mPath2Height=" + mPath2Height);
-                    break;
-                case 2:
-                    mPath3Height = mTotalHeight * scale * phaseX;
-                    if (mPath3Height < minLineH * phaseX) {
-                        mPath3Height = minLineH * phaseX;
-                    } else if (mPath3Height > maxLineH * phaseX) {
-                        mPath3Height = maxLineH * phaseX;
-                    }
-
-                    mPath3AngleWidth = mPath3Height / ANGLE_SCALE;
-
-                    //System.out.println("mPath3Height=" + mPath3Height);
-                    break;
-                case 3:
-                    mPath4Height = mTotalHeight * scale * phaseX;
-                    if (mPath4Height < minLineH * phaseX) {
-                        mPath4Height = minLineH * phaseX;
-                    } else if (mPath4Height > maxLineH * phaseX) {
-                        mPath4Height = maxLineH * phaseX;
-                    }
-
-                    mPath4AngleWidth = mPath4Height / ANGLE_SCALE;
-
-                    //System.out.println("mPath4Height=" + mPath4Height);
-                    break;
-                case 4:
-                    mPath5Height = mTotalHeight * scale * phaseX;
-                    if (mPath5Height < minLineH * phaseX) {
-                        mPath5Height = minLineH * phaseX;
-                    } else if (mPath5Height > maxLineH * phaseX) {
-                        mPath5Height = maxLineH * phaseX;
-                    }
-
-                    mPath5AngleWidth = mPath5Height / ANGLE_SCALE;
-
-                    //System.out.println("mPath5Height=" + mPath5Height);
-                    break;
-                case 5:
-                    mPath6Height = mTotalHeight * scale * phaseX;
-                    if (mPath6Height < minLineH * phaseX) {
-                        mPath6Height = minLineH * phaseX;
-                    } else if (mPath6Height > maxLineH * phaseX) {
-                        mPath6Height = maxLineH * phaseX;
-                    }
-
-                    mPath6AngleWidth = mPath6Height / ANGLE_SCALE;
-                    break;
-                case 6:
-                    mPath7Height = mTotalHeight * scale * phaseX;
-                    if (mPath7Height < minLineH * phaseX) {
-                        mPath7Height = minLineH * phaseX;
-                    } else if (mPath7Height > maxLineH * phaseX) {
-                        mPath7Height = maxLineH * phaseX;
-                    }
-
-                    mPath7AngleWidth = mPath7Height / ANGLE_SCALE;
-                    break;
-                case 7:
-                    mPath8Height = mTotalHeight * scale * phaseX;
-                    if (mPath8Height < minLineH * phaseX) {
-                        mPath8Height = minLineH * phaseX;
-                    } else if (mPath8Height > maxLineH * phaseX) {
-                        mPath8Height = maxLineH * phaseX;
-                    }
-
-                    mPath8AngleWidth = mPath8Height / ANGLE_SCALE;
-                    break;
-                case 8:
-                    mPath9Height = mTotalHeight * scale * phaseX;
-                    if (mPath9Height < minLineH * phaseX) {
-                        mPath9Height = minLineH * phaseX;
-                    } else if (mPath9Height > maxLineH * phaseX) {
-                        mPath9Height = maxLineH * phaseX;
-                    }
-
-                    mPath9AngleWidth = mPath9Height / ANGLE_SCALE;
-                    break;
-                case 9:
-                    mPath10Height = mTotalHeight * scale * phaseX;
-                    if (mPath10Height < minLineH * phaseX) {
-                        mPath10Height = minLineH * phaseX;
-                    } else if (mPath10Height > maxLineH * phaseX) {
-                        mPath10Height = maxLineH * phaseX;
-                    }
-
-                    mPath10AngleWidth = mPath10Height / ANGLE_SCALE;
-                    break;
+            Float mPathHeight = mTotalHeight * scale * phaseX;
+            if (mPathHeight < minLineH * phaseX) {
+                mPathHeight = minLineH * phaseX;
+            } else if (mPathHeight > maxLineH * phaseX) {
+                mPathHeight = maxLineH * phaseX;
             }
-
+            mPathHeights.add(i,mPathHeight);
+            Float mPathAngleWidth = mPathHeight / ANGLE_SCALE;
+            mPathAngleWidths.add(i,mPathAngleWidth);
         }
     }
 
     private void init() {
-        mPaint1 = new Paint();
-        mPaint2 = new Paint();
-        mPaint3 = new Paint();
-        mPaint4 = new Paint();
-        mPaint5 = new Paint();
-        mPaint6 = new Paint();
-        mPaint7 = new Paint();
-        mPaint8 = new Paint();
-        mPaint9 = new Paint();
-        mPaint10 = new Paint();
+        mPaints.clear();
+        for (int i = 0; i < mMoneys.size(); i++) {
+            Log.i("FunnelView", "init:" + i);
+            Paint mPaint = new Paint();
+            mPaint.setColor(Color.parseColor(colors.get(i)));
+            mPaint.setStyle(Paint.Style.FILL);
+            mPaint.setDither(true);
+            mPaint.setAntiAlias(true);
+            mPaints.add(mPaint);
+        }
         mPaintLine = new Paint();
         mPaintText = new Paint();
-//        FF0000   00CCFF   FFFF00  00FF00    FF00FF   FF9900  993366  C0C0C0  FFCC99
-        mPaint1.setColor(Color.parseColor("#FF0000"));
-        mPaint1.setStyle(Paint.Style.FILL);
-        mPaint1.setDither(true); //设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰
-        mPaint1.setAntiAlias(true);
-
-        mPaint2.setColor(Color.parseColor("#00CCFF"));
-        mPaint2.setStyle(Paint.Style.FILL);
-        mPaint2.setDither(true);
-        mPaint2.setAntiAlias(true);
-
-        mPaint3.setColor(Color.parseColor("#FFFF00"));
-        mPaint3.setStyle(Paint.Style.FILL);
-        mPaint3.setDither(true);
-        mPaint3.setAntiAlias(true);
-
-        mPaint4.setColor(Color.parseColor("#00FF00"));
-        mPaint4.setStyle(Paint.Style.FILL);
-        mPaint4.setDither(true);
-        mPaint4.setAntiAlias(true);
-
-        mPaint5.setColor(Color.parseColor("#FF00FF"));
-        mPaint5.setStyle(Paint.Style.FILL);
-        mPaint5.setDither(true);
-        mPaint5.setAntiAlias(true);
-
-
-        mPaint6.setColor(Color.parseColor("#FF9900"));
-        mPaint6.setStyle(Paint.Style.FILL);
-        mPaint6.setDither(true);
-        mPaint6.setAntiAlias(true);
-
-
-        mPaint7.setColor(Color.parseColor("#993366"));
-        mPaint7.setStyle(Paint.Style.FILL);
-        mPaint7.setDither(true);
-        mPaint7.setAntiAlias(true);
-
-
-        mPaint8.setColor(Color.parseColor("#C0C0C0"));
-        mPaint8.setStyle(Paint.Style.FILL);
-        mPaint8.setDither(true);
-        mPaint8.setAntiAlias(true);
-
-
-        mPaint9.setColor(Color.parseColor("#FFCC99"));
-        mPaint9.setStyle(Paint.Style.FILL);
-        mPaint9.setDither(true);
-        mPaint9.setAntiAlias(true);
-
-
-        mPaint10.setColor(Color.parseColor("#FFCC99"));
-        mPaint10.setStyle(Paint.Style.FILL);
-        mPaint10.setDither(true);
-        mPaint10.setAntiAlias(true);
-
-
         mPaintLine.setColor(Color.parseColor("#A8ADB2"));
-//        mPaintLine.setColor(Color.parseColor("#A8ADB2"));
         mPaintLine.setStyle(Paint.Style.FILL);
         mPaintLine.setStrokeWidth(2);
 
@@ -323,194 +129,36 @@ public class FunnelView extends View implements ValueAnimator.AnimatorUpdateList
         mPaintText.setTextAlign(Paint.Align.LEFT);
     }
 
-    private void draw1(Canvas canvas) {
-        mLastX = startOffsetX;
-        mLastY = startOffsetY;
-        mLastWidth = maxWidth - startOffsetX;
-
-        mPath1 = new Path();
-        mPath1.moveTo(mLastX, startOffsetY);
-        mPath1.lineTo(mLastX + mLastWidth, startOffsetY);
-        mPath1.lineTo(mLastX + mLastWidth - mPath1AngleWidth, mLastY + mPath1Height);
-        mPath1.lineTo(mLastX + mPath1AngleWidth, mLastY + mPath1Height);
-
-        mPath1.close();
-        canvas.drawPath(mPath1, mPaint1);
-        mLastWidth = mLastWidth - 2 * mPath1AngleWidth;
-        mLastX = mLastX + mPath1AngleWidth;
-        mLastY = mLastY + mPath1Height;
-
-    }
-
-
-    private void draw2(Canvas canvas) {
-
-        mPath2 = new Path();
-
-        mPath2.moveTo(mLastX, mLastY);
-        mPath2.lineTo(mLastX + mLastWidth, mLastY);
-        mPath2.lineTo(mLastX + mLastWidth - mPath2AngleWidth, mLastY + mPath2Height);
-        mPath2.lineTo(mLastX + mPath2AngleWidth, mLastY + mPath2Height);
-        mPath2.close();
-        canvas.drawPath(mPath2, mPaint2);
-
-        mLastWidth = mLastWidth - mPath2AngleWidth - mPath2AngleWidth;
-        mLastX = mLastX + mPath2AngleWidth;
-        mLastY = mLastY + mPath2Height;
-    }
-
-
-    private void draw3(Canvas canvas) {
-
-        mPath3 = new Path();
-
-        mPath3.moveTo(mLastX, mLastY);
-        mPath3.lineTo(mLastX + mLastWidth, mLastY);
-        mPath3.lineTo(mLastX + mLastWidth - mPath3AngleWidth, mLastY + mPath3Height);
-        mPath3.lineTo(mLastX + mPath3AngleWidth, mLastY + mPath3Height);
-        mPath3.close();
-        canvas.drawPath(mPath3, mPaint3);
-
-        mLastWidth = mLastWidth - mPath3AngleWidth - mPath3AngleWidth;
-        mLastX = mLastX + mPath3AngleWidth;
-        mLastY = mLastY + mPath3Height;
-        mPath3LineStartX = mLastX + mLastWidth + mPath3AngleWidth / 2;
-        mPath3LineStartY = mLastY - mPath3Height / 2;
-    }
-
-    private void draw4(Canvas canvas) {
-
-        mPath4 = new Path();
-
-        mPath4.moveTo(mLastX, mLastY);
-        mPath4.lineTo(mLastX + mLastWidth, mLastY);
-        mPath4.lineTo(mLastX + mLastWidth - mPath4AngleWidth, mLastY + mPath4Height);
-        mPath4.lineTo(mLastX + mPath4AngleWidth, mLastY + mPath4Height);
-        mPath4.close();
-        canvas.drawPath(mPath4, mPaint4);
-
-        mLastWidth = mLastWidth - 2 * mPath4AngleWidth;//最新长度
-        mLastX = mLastX + mPath4AngleWidth;//第四个点的x坐标
-        mLastY = mLastY + mPath4Height;//第四个点的y坐标
-        mPath4LineStartX = mLastX + mLastWidth + mPath4AngleWidth / 2;
-        mPath4LineStartY = mLastY - mPath4Height / 2;
-    }
-
-    private void draw5(Canvas canvas) {
-        mPath5 = new Path();
-
-        mPath5.moveTo(mLastX, mLastY);
-        mPath5.lineTo(mLastX + mLastWidth, mLastY);
-        mPath5.lineTo(mLastX + mLastWidth - mPath5AngleWidth, mLastY + mPath5Height);
-        mPath5.lineTo(mLastX + mPath5AngleWidth, mLastY + mPath5Height);
-        mPath5.close();
-        canvas.drawPath(mPath5, mPaint5);
-
-
-        //mLastWidth = maxWidth - startOffsetX;
-        //mLastX = mLastX;
-//        mLastY = mLastY + mPath5Height;
-//        mPath5LineStartX = mLastX + mLastWidth;
-//        mPath5LineStartY = mLastY - mPath5Height / 2;
-
-        mLastWidth = mLastWidth - 2 * mPath5AngleWidth;//最新长度
-        mLastX = mLastX + mPath5AngleWidth;//第四个点的x坐标
-        mLastY = mLastY + mPath5Height;//第四个点的y坐标
-    }
-
-
-    private void draw6(Canvas canvas) {
-        mPath6 = new Path();
-        mPath6.moveTo(mLastX, mLastY);
-        mPath6.lineTo(mLastX + mLastWidth, mLastY);
-        mPath6.lineTo(mLastX + mLastWidth - mPath6AngleWidth, mLastY + mPath6Height);
-        mPath6.lineTo(mLastX + mPath6AngleWidth, mLastY + mPath6Height);
-        mPath6.close();
-        canvas.drawPath(mPath6, mPaint6);
-        mLastWidth = mLastWidth - 2 * mPath6AngleWidth;//最新长度
-        mLastX = mLastX + mPath6AngleWidth;//第四个点的x坐标
-        mLastY = mLastY + mPath6Height;//第四个点的y坐标
-    }
-
-
-    private void draw7(Canvas canvas) {
-        mPath7 = new Path();
-        mPath7.moveTo(mLastX, mLastY);
-        mPath7.lineTo(mLastX + mLastWidth, mLastY);
-        mPath7.lineTo(mLastX + mLastWidth - mPath7AngleWidth, mLastY + mPath7Height);
-        mPath7.lineTo(mLastX + mPath7AngleWidth, mLastY + mPath7Height);
-        mPath7.close();
-        canvas.drawPath(mPath7, mPaint7);
-        mLastWidth = mLastWidth - 2 * mPath7AngleWidth;//最新长度
-        mLastX = mLastX + mPath7AngleWidth;//第四个点的x坐标
-        mLastY = mLastY + mPath7Height;//第四个点的y坐标
-    }
-
-
-    private void draw8(Canvas canvas) {
-        mPath8 = new Path();
-        mPath8.moveTo(mLastX, mLastY);
-        mPath8.lineTo(mLastX + mLastWidth, mLastY);
-        mPath8.lineTo(mLastX + mLastWidth - mPath8AngleWidth, mLastY + mPath8Height);
-        mPath8.lineTo(mLastX + mPath8AngleWidth, mLastY + mPath8Height);
-        mPath8.close();
-        canvas.drawPath(mPath8, mPaint8);
-        mLastWidth = mLastWidth - 2 * mPath8AngleWidth;//最新长度
-        mLastX = mLastX + mPath8AngleWidth;//第四个点的x坐标
-        mLastY = mLastY + mPath8Height;//第四个点的y坐标
-    }
-
-
-    private void draw9(Canvas canvas) {
-        mPath9 = new Path();
-        mPath9.moveTo(mLastX, mLastY);
-        mPath9.lineTo(mLastX + mLastWidth, mLastY);
-        mPath9.lineTo(mLastX + mLastWidth - mPath9AngleWidth, mLastY + mPath9Height);
-        mPath9.lineTo(mLastX + mPath9AngleWidth, mLastY + mPath9Height);
-        mPath9.close();
-        canvas.drawPath(mPath9, mPaint9);
-//        mLastWidth = mLastWidth - 2 * mPath9AngleWidth;//最新长度
-//        mLastX = mLastX + mPath9AngleWidth;//第四个点的x坐标
-        mLastY = mLastY + mPath9Height;//第四个点的y坐标
+    Path mPath;
+    
+    private void draw2(Canvas canvas, Paint mPaint, Float mPathAngleWidth, Float mPathHeight,int i) {
+        if (i==0){
+            mLastX = startOffsetX;
+            mLastY = startOffsetY;
+            mLastWidth = maxWidth - startOffsetX;
+        }
+        mPath = new Path();
+        mPath.moveTo(mLastX, mLastY);
+        mPath.lineTo(mLastX + mLastWidth, mLastY);
+        mPath.lineTo(mLastX + mLastWidth - mPathAngleWidth, mLastY + mPathHeight);
+        mPath.lineTo(mLastX + mPathAngleWidth, mLastY + mPathHeight);
+        mPath.close();
+        canvas.drawPath(mPath, mPaint);
+        mLastWidth = mLastWidth - 2 * mPathAngleWidth;
+        mLastX = mLastX + mPathAngleWidth;
+        mLastY = mLastY + mPathHeight;
     }
 
 
-    private void draw10(Canvas canvas) {
-        mPath10 = new Path();
-        mPath10.moveTo(mLastX, mLastY);
-        mPath10.lineTo(mLastX + mLastWidth, mLastY);
-        mPath10.lineTo(mLastX + mLastWidth - mPath10AngleWidth, mLastY + mPath10Height);
-        mPath10.lineTo(mLastX + mPath10AngleWidth, mLastY + mPath10Height);
-        mPath10.close();
-        canvas.drawPath(mPath10, mPaint10);
-        mLastWidth = mLastWidth - 2 * mPath10AngleWidth;//最新长度
-        mLastX = mLastX + mPath10AngleWidth;//第四个点的x坐标
-        mLastY = mLastY + mPath10Height;//第四个点的y坐标
-    }
-
     @Override
     protected void onDraw(Canvas canvas) {
         super.onDraw(canvas);
-        draw1(canvas);
-        // drawText1(canvas);
-        draw2(canvas);
-        // drawText2(canvas);
-
-        draw3(canvas);
-        // drawLine3(canvas);
-        //  drawText3(canvas);
-        draw4(canvas);
-        //  drawLine4(canvas);
-        //  drawText4(canvas);
-        draw5(canvas);
-        //  drawLine5(canvas);
-        //  drawText5(canvas);
-        draw6(canvas);
-        draw7(canvas);
-        draw8(canvas);
-        draw9(canvas);
+      
+        for (int i = 0; i < mMoneys.size(); i++) {
+            draw2(canvas, mPaints.get(i), mPathAngleWidths.get(i), mPathHeights.get(i),i);
+        }
+        maxHight = Math.round(mLastY);
         drawText9(canvas);
-        //  draw10(canvas);
     }
 
     public void animateY() {
@@ -522,7 +170,7 @@ public class FunnelView extends View implements ValueAnimator.AnimatorUpdateList
 
         ObjectAnimator alphaAnimator = ObjectAnimator.ofInt(this, "textAlpha", 0, 255);
         alphaAnimator.setDuration(2000);
-        //alphaAnimator.addUpdateListener(this);
+        alphaAnimator.addUpdateListener(this);
         alphaAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
         alphaAnimator.start();
     }
@@ -530,18 +178,25 @@ public class FunnelView extends View implements ValueAnimator.AnimatorUpdateList
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        /*int specMode = MeasureSpec.getMode(heightMeasureSpec);
-        int specSize = MeasureSpec.getSize(heightMeasureSpec);
+        setMeasuredDimension(getMeasuredLength(widthMeasureSpec, true),
+                getMeasuredLength(heightMeasureSpec, false));
+    }
 
-        int height = 0;
+
+    private int getMeasuredLength(int length, boolean isWidth) {
+        int specMode = MeasureSpec.getMode(length);
+        int specSize = MeasureSpec.getSize(length);
+        int size;
         if (specMode == MeasureSpec.EXACTLY) {
-            height = specSize;
+            size = specSize;
         } else {
-            height = (int) mLastY;
+            
+            size = maxHight + 20;
+            if (size<900)
+                size=900;
+            Log.i("Arison", "getMeasuredLength:size :" + size  );
         }
-        System.out.println("onMeasure mLastY=" + mLastY);
-
-        setMeasuredDimension(MeasureSpec.getMode(widthMeasureSpec), height);*/
+        return size;
     }
 
     public float getPhaseX() {
@@ -560,6 +215,7 @@ public class FunnelView extends View implements ValueAnimator.AnimatorUpdateList
         this.textAlpha = textAlpha;
     }
 
+
     @Override
     public void onAnimationUpdate(ValueAnimator animation) {
         calculate();
@@ -567,86 +223,13 @@ public class FunnelView extends View implements ValueAnimator.AnimatorUpdateList
     }
 
 
-    private void drawText1(Canvas canvas) {
-        Paint.FontMetrics fontMetrics = mPaintText.getFontMetrics();
-
-        float fontTotalHeight = fontMetrics.bottom - fontMetrics.top;
-
-        float offY = fontTotalHeight / 2 - fontMetrics.bottom;
-        //System.out.println("offY=" +offY);
-        //float newY = baseY + offY;
-
-        mPaintText.setAlpha(textAlpha);
-        canvas.drawText("初期沟通(10%)", maxWidth + textStartOffsetX, mLastY - mPath1Height / 2 + offY, mPaintText);
-    }
-
-    private void drawText2(Canvas canvas) {
-        Paint.FontMetrics fontMetrics = mPaintText.getFontMetrics();
-
-        float fontTotalHeight = fontMetrics.bottom - fontMetrics.top;
-
-        float offY = fontTotalHeight / 2 - fontMetrics.bottom;
-        //float newY = baseY + offY;
-
-        canvas.drawText("立项跟踪(10%)", maxWidth + textStartOffsetX, mLastY - mPath2Height / 2 + offY, mPaintText);
-    }
-
-    private void drawLine3(Canvas canvas) {
-        canvas.drawLine(mPath3LineStartX + lineStartOffsetX, mPath3LineStartY, maxWidth, mPath3LineStartY, mPaintLine);
-    }
-
-    private void drawText3(Canvas canvas) {
-        Paint.FontMetrics fontMetrics = mPaintText.getFontMetrics();
-
-        float fontTotalHeight = fontMetrics.bottom - fontMetrics.top;
-
-        float offY = fontTotalHeight / 2 - fontMetrics.bottom;
-        //float newY = baseY + offY;
-
-        canvas.drawText("呈报方案(10%)", maxWidth + textStartOffsetX, mLastY - mPath3Height / 2 + offY, mPaintText);
-    }
-
-    private void drawLine4(Canvas canvas) {
-        canvas.drawLine(mPath4LineStartX + lineStartOffsetX, mPath4LineStartY, maxWidth, mPath4LineStartY, mPaintLine);
-    }
-
-    private void drawText4(Canvas canvas) {
-        Paint.FontMetrics fontMetrics = mPaintText.getFontMetrics();
-
-        float fontTotalHeight = fontMetrics.bottom - fontMetrics.top;
-
-        float offY = fontTotalHeight / 2 - fontMetrics.bottom;
-        //float newY = baseY + offY;
-
-        canvas.drawText("商务谈判(10%)", maxWidth + textStartOffsetX, mLastY - mPath4Height / 2 + offY, mPaintText);
-    }
-
-
     private void drawText9(Canvas canvas) {
         Paint.FontMetrics fontMetrics = mPaintText.getFontMetrics();
-
         float fontTotalHeight = fontMetrics.bottom - fontMetrics.top;
-
         float offY = fontTotalHeight / 2 - fontMetrics.bottom;
-        //float newY = baseY + offY;
-
-        canvas.drawText("销售漏斗", mLastX + mLastWidth - mPath9AngleWidth + 3 * textStartOffsetX, mLastY - mPath9Height / 2 + offY, mPaintText);
+        canvas.drawText("销售漏斗", mLastX + mLastWidth - mPathAngleWidths.get(mPathAngleWidths.size()-1) + 3 * textStartOffsetX, mLastY -
+                mPathHeights.get(mPathHeights.size()-1) / 2 + offY, mPaintText);
     }
 
 
-    private void drawLine5(Canvas canvas) {
-        canvas.drawLine(mPath5LineStartX + lineStartOffsetX, mPath5LineStartY, maxWidth, mPath5LineStartY, mPaintLine);
-    }
-
-    private void drawText5(Canvas canvas) {
-        Paint.FontMetrics fontMetrics = mPaintText.getFontMetrics();
-
-        float fontTotalHeight = fontMetrics.bottom - fontMetrics.top;
-
-        float offY = fontTotalHeight / 2 - fontMetrics.bottom;
-        //float newY = baseY + offY;
-
-        canvas.drawText("赢单(10%)", maxWidth + textStartOffsetX, mLastY - mPath5Height / 2 + offY, mPaintText);
-    }
-
 }

+ 27 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/wheel/DatePicker.java

@@ -9,6 +9,8 @@ import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import com.xzjmyk.pm.activity.util.DateFormatUtil;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
@@ -60,7 +62,8 @@ public class DatePicker extends WheelPicker {
     public DatePicker(Activity activity) {
         this(activity, YEAR_MONTH_DAY);
     }
-
+    
+    private boolean loadMoreMonth=false;
     /**
      * Instantiates a new Date picker.
      *
@@ -74,10 +77,23 @@ public class DatePicker extends WheelPicker {
         super(activity);
         this.mode = mode;
         for (int i = 2000; i <= 2050; i++) {
-            years.add(String.valueOf(i));
+            if (!loadMoreMonth){
+                if (i<=DateFormatUtil.getCurrentYear()) {
+                    years.add(String.valueOf(i));
+                }
+            }else{
+                years.add(String.valueOf(i));
+            }
+          
         }
         for (int i = 1; i <= 12; i++) {
-            months.add(DateUtils.fillZero(i));
+            if (!loadMoreMonth){
+                if (i<=DateFormatUtil.getCurrentMonth()) {
+                    months.add(DateUtils.fillZero(i));
+                }
+            }else{
+                months.add(DateUtils.fillZero(i));
+            }
         }
         for (int i = 1; i <= 31; i++) {
             days.add(DateUtils.fillZero(i));
@@ -106,7 +122,14 @@ public class DatePicker extends WheelPicker {
     public void setRange(int startYear, int endYear) {
         years.clear();
         for (int i = startYear; i <= endYear; i++) {
-            years.add(String.valueOf(i));
+            if (!loadMoreMonth){
+                if (i<=DateFormatUtil.getCurrentYear()){
+                    years.add(String.valueOf(i));
+                }
+            }else{
+                years.add(String.valueOf(i));
+            }
+          
         }
     }
 

+ 12 - 32
WeiChat/src/main/res/drawable/shape_brounds_bottom.xml

@@ -2,50 +2,30 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_focused="true">
         <layer-list>
-            <item
-                android:bottom="0.5dp"
-                android:top="-1dp"
-                android:left="-1dp"
-                android:right="-1dp">
+            <item android:bottom="0.5dp" android:left="-1dp" android:right="-1dp" android:top="-1dp">
                 <shape>
-                <solid
-                    android:color="#00F5FF" />
-                <stroke
-                    android:width="0.5dp"
-                    android:color="#00F5FF" />
-            </shape>
+                    <solid android:color="#00F5FF" />
+                    <stroke android:width="0.5dp" android:color="#00F5FF" />
+                </shape>
             </item>
         </layer-list>
     </item>
     <item android:state_selected="true">
         <layer-list>
-            <item
-                android:bottom="0.0dp"
-                android:top="-2.6dp"
-                android:left="-2.6dp"
-                android:right="-2.6dp"><shape>
-                <solid
-                    android:color="@color/white" />
-                <stroke
-                    android:width="2.5dp"
-                    android:color="@color/yellow_home" />
-            </shape>
+            <item android:bottom="0.0dp" android:left="-2.7dp" android:right="-2.7dp" android:top="-2.7dp">
+                <shape>
+                    <solid android:color="@color/white" />
+                    <stroke android:width="2.5dp" android:color="@color/yellow_home" />
+                </shape>
             </item>
         </layer-list>
     </item>
     <item>
         <layer-list>
-            <item
-                android:bottom="0.5dp"
-                android:top="-1dp"
-                android:left="-1dp"
-                android:right="-1dp">
+            <item android:bottom="0.5dp" android:left="-1dp" android:right="-1dp" android:top="-1dp">
                 <shape>
-                  <solid
-                      android:color="@color/white" />
-                  <stroke
-                      android:width="0.5dp"
-                      android:color="@color/white" />
+                    <solid android:color="@color/white" />
+                    <stroke android:width="0.5dp" android:color="@color/white" />
                 </shape>
             </item>
         </layer-list>

+ 63 - 48
WeiChat/src/main/res/layout/activity_business.xml

@@ -1,58 +1,73 @@
 <?xml version="1.0" encoding="utf-8"?>
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:fillViewport="true"
-    android:background="@color/crm_basic_bg">
-    <RelativeLayout
+    android:layout_height="match_parent">
+    <ScrollView
+        android:id="@+id/sv_funnel"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        tools:context="com.xzjmyk.pm.activity.ui.erp.activity.crm.BusinessActivity">
-        <LinearLayout
-            android:id="@+id/ll_funnel"
+        android:background="@color/crm_basic_bg"
+        android:layout_above="@+id/ll_bottom"
+        android:fillViewport="true">
+
+        <RelativeLayout
             android:layout_width="match_parent"
-            android:layout_height="250dp"
-            android:orientation="vertical">
-            <com.xzjmyk.pm.activity.view.FunnelView
-                android:id="@+id/funnelview"
+            android:layout_height="match_parent"
+            tools:context="com.xzjmyk.pm.activity.ui.erp.activity.crm.BusinessActivity">
+
+            <LinearLayout
+                android:id="@+id/ll_funnel"
                 android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:background="#ffffff" />
-        </LinearLayout>
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
 
-        <include
-            android:id="@+id/inc_grid"
-            android:layout_below="@+id/ll_funnel"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            layout="@layout/inculde_grid_view"></include>
-
-        <LinearLayout
-            style="@style/LinearLayout_horizontal"
-            android:weightSum="4"
-            android:layout_below="@+id/inc_grid">
-
-            <Button
-                android:id="@+id/bt_create"
-                android:text="创建商机"
-                style="@style/crm_business_btn" />
-
-            <Button
-                android:id="@+id/bt_qiang"
-                android:text="抢商机"
-                style="@style/crm_business_btn" />
-
-            <Button
-                android:id="@+id/bt_manage"
-                android:text="商机分配"
-                style="@style/crm_business_btn" />
-
-            <Button
-                android:id="@+id/bt_go"
-                android:text="商机跟进"
-                style="@style/crm_business_btn" />
-        </LinearLayout>
+                <com.xzjmyk.pm.activity.view.FunnelView
+                    android:id="@+id/funnelview"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="#ffffff"
+                    android:maxHeight="10000dp"
+                    android:minHeight="200dp" />
+            </LinearLayout>
+
+            <include
+                android:id="@+id/inc_grid"
+                layout="@layout/inculde_grid_view"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/ll_funnel"></include>
+
+
+        </RelativeLayout>
+
+
+    </ScrollView>
+    <LinearLayout
+        android:id="@+id/ll_bottom"
+        style="@style/LinearLayout_horizontal"
+        android:layout_alignParentBottom="true"
+        android:weightSum="4">
+        <Button
+            android:id="@+id/bt_create"
+            style="@style/crm_business_btn"
+            android:text="创建商机" />
+
+        <Button
+            android:id="@+id/bt_qiang"
+            style="@style/crm_business_btn"
+            android:text="抢商机" />
+
+        <Button
+            android:id="@+id/bt_manage"
+            style="@style/crm_business_btn"
+            android:text="商机分配" />
+
+        <Button
+            android:id="@+id/bt_go"
+            style="@style/crm_business_btn"
+            android:text="商机跟进" />
+    </LinearLayout>
     </RelativeLayout>
-</ScrollView>
 

+ 0 - 8
WeiChat/src/main/res/layout/activity_business_detail_info.xml

@@ -138,7 +138,6 @@
 
                 <TextView
                     android:layout_marginLeft="5dp"
-                    android:text="会议销售"
                     style="@style/TextView_VerticalCenter"
                     android:id="@+id/bc_from" />
             </LinearLayout>
@@ -156,7 +155,6 @@
 
                 <TextView
                     android:layout_marginLeft="5dp"
-                    android:text="158********"
                     style="@style/TextView_VerticalCenter"
                     android:id="@+id/bc_phone" />
             </LinearLayout>
@@ -174,7 +172,6 @@
 
                 <TextView
                     android:layout_marginLeft="5dp"
-                    android:text="行业交流大会,****************************************"
                     style="@style/TextView_VerticalCenter"
                     android:id="@+id/bc_remark" />
             </LinearLayout>
@@ -215,7 +212,6 @@
 
                 <TextView
                     android:layout_marginLeft="5dp"
-                    android:text="已分配"
                     style="@style/TextView_VerticalCenter"
                     android:id="@+id/bc_state" />
             </LinearLayout>
@@ -233,7 +229,6 @@
 
                 <TextView
                     android:layout_marginLeft="5dp"
-                    android:text="深圳商机库"
                     style="@style/TextView_VerticalCenter"
                     android:id="@+id/bc_name" />
             </LinearLayout>
@@ -251,7 +246,6 @@
 
                 <TextView
                     android:layout_marginLeft="5dp"
-                    android:text="***"
                     style="@style/TextView_VerticalCenter"
                     android:id="@+id/bc_recorder" />
             </LinearLayout>
@@ -269,7 +263,6 @@
 
                 <TextView
                     android:layout_marginLeft="5dp"
-                    android:text="2016-06-27 14:43"
                     style="@style/TextView_VerticalCenter"
                     android:id="@+id/bc_recorddate" />
             </LinearLayout>
@@ -287,7 +280,6 @@
 
                 <TextView
                     android:layout_marginLeft="5dp"
-                    android:text="2016-06-27 14:43"
                     style="@style/TextView_VerticalCenter"
                     android:id="@+id/bc_recorddate_update" />
             </LinearLayout>

+ 7 - 13
WeiChat/src/main/res/layout/activity_client.xml

@@ -111,15 +111,6 @@
             </LinearLayout>
         </LinearLayout>
         <!--我的排名-->
-        <com.xzjmyk.pm.activity.view.shadow.ShadowLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_margin="5dp"
-            app:sl_shadowRadius="8dp"
-            app:sl_shadowColor="@color/shadow"
-            app:sl_dx="0dp"
-            app:sl_dy="2dp"
-            app:sl_cornerRadius="12dp">
         <LinearLayout
             android:layout_margin="0dp"
             style="@style/crm_ll_card">
@@ -219,7 +210,7 @@
                 </LinearLayout>
             </LinearLayout>
         </LinearLayout>
-        </com.xzjmyk.pm.activity.view.shadow.ShadowLayout>
+   
         <LinearLayout style="@style/crm_ll_card">
 
             <RelativeLayout
@@ -740,7 +731,8 @@
                 <TextView
                     style="@style/TextView_Basic"
                     android:text="深圳优软科技有限公司"
-                    android:layout_margin="20dp" />
+                    android:layout_margin="20dp"
+                    android:id="@+id/tv_customer_name" />
 
                 <LinearLayout
                     android:weightSum="2"
@@ -759,14 +751,16 @@
 
                         <TextView
                             style="@style/TextView_Basic"
-                            android:text="2016年07月1日 18:00" />
+                            android:text="2016年07月1日 18:00"
+                            android:id="@+id/tv_customer_lastTime" />
                     </LinearLayout>
 
                     <TextView
                         android:layout_weight="1"
                         android:gravity="center_vertical"
                         style="@style/TextView_Basic_match"
-                        android:text="距离上次跟进188天" />
+                        android:text="距离上次跟进188天"
+                        android:id="@+id/tv_customer_days" />
                 </LinearLayout>
             </LinearLayout>
 

+ 6 - 3
WeiChat/src/main/res/layout/activity_customer_list.xml

@@ -27,7 +27,8 @@
             <TextView
                 android:text="chensir"
                 android:textColor="@color/white"
-                style="@style/TextView_Basic" />
+                style="@style/TextView_Basic"
+                android:id="@+id/tv_name" />
 
             <LinearLayout
                 android:layout_width="wrap_content"
@@ -36,7 +37,8 @@
                 <TextView
                     android:text="深圳总部"
                     android:textColor="@color/white"
-                    style="@style/TextView_Basic" />
+                    style="@style/TextView_Basic"
+                    android:id="@+id/tv_department" />
 
                 <View style="@style/app_line_v_1dp" />
 
@@ -44,7 +46,8 @@
                     android:text="总经理"
                     android:layout_marginLeft="15dp"
                     android:textColor="@color/white"
-                    style="@style/TextView_Basic" />
+                    style="@style/TextView_Basic"
+                    android:id="@+id/tv_position" />
             </LinearLayout>
         </LinearLayout>