Ver código fonte

添加信用卡界面部分逻辑

guoxin 8 anos atrás
pai
commit
2d17be34ad

+ 5 - 0
app/src/main/java/com/kfzs/duanduan/fragment/FgtCreditCard.java

@@ -1,9 +1,11 @@
 package com.kfzs.duanduan.fragment;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.webkit.WebView;
 
 import com.kfzs.duanduan.BaseCompatFragment;
+import com.sheep.groups.creditcard.ApplyForCreditCardActivity;
 import com.sheep.jiuyan.samllsheep.R;
 
 /**
@@ -13,9 +15,12 @@ import com.sheep.jiuyan.samllsheep.R;
  */
 public class FgtCreditCard extends BaseCompatFragment{
 
+    private WebView fgt_bp_webview;
+
     @Override
     protected void initView(Bundle savedInstanceState) {
         setContentView(R.layout.fgt_bp);
+        startActivity(new Intent(getActivity(), ApplyForCreditCardActivity.class));
     }
 
 }

+ 49 - 6
app/src/main/java/com/sheep/groups/creditcard/ApplyForCreditCardBasicInfoFragment.java

@@ -73,6 +73,7 @@ public class ApplyForCreditCardBasicInfoFragment extends DaggerFragment implemen
     private CreditCardDisplayFragment normalCardDisplayFragment;
     private CreditCardDisplayFragment goldCardDisplayFragment;
     private int curType = CreditCardDisplayFragment.CARD_TYPE_NORMAL;
+    private String ticket;
 
     @Override
     public void onAttach(Context context) {
@@ -159,15 +160,38 @@ public class ApplyForCreditCardBasicInfoFragment extends DaggerFragment implemen
         tvDynamic.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                Map<String,String> map = new HashMap<>();
-                map.put("name",etName.getText().toString());
-                map.put("mobile",etMobile.getText().toString());
-                map.put("id_card",etIdNo.getText().toString());
-                map.put("card_id",getCardId());
-                presenter.getDynamic(map);
+                sendDynamic();
             }
         });
 
+
+    }
+
+    private void sendDynamic(){
+
+        if(TextUtils.isEmpty(etName.getText().toString())){
+            Toast.makeText(activity,"请填写姓名",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etMobile.getText().toString())){
+            Toast.makeText(activity,"请填写手机号",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etIdNo.getText().toString())){
+            Toast.makeText(activity,"请填写身份证号",Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        Map<String,String> map = new HashMap<>();
+        map.put("name",etName.getText().toString());
+        map.put("mobile",etMobile.getText().toString());
+        map.put("id_card",etIdNo.getText().toString());
+        map.put("card_id",getCardId());
+        presenter.getDynamic(map);
+        new CountDownUtil(tvDynamic)
+                .setCountDownMillis(60_000L)//倒计时60000ms
+                .setCountDownColor(R.color.credit_blue_color,R.color.credit_blue_color)//不同状态字体颜色
+                .start();
     }
 
     private String getCardId(){
@@ -192,6 +216,13 @@ public class ApplyForCreditCardBasicInfoFragment extends DaggerFragment implemen
     @Override
     public void onConfirm() {
 
+
+        if(TextUtils.isEmpty(ticket)){
+            Toast.makeText(activity,"请先获取验证码",Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+
         Map<String,String> map = new HashMap<>();
 
         map.put("name",etName.getText().toString());
@@ -199,12 +230,24 @@ public class ApplyForCreditCardBasicInfoFragment extends DaggerFragment implemen
         map.put("id_card",etIdNo.getText().toString());
         map.put("token", SpUtils.getOpenId(SheepApp.mContext));
         map.put("card_id",getCardId());
+        map.put("code",etDynamic.getText().toString());
+        map.put("ticket",ticket);
+
 
         presenter.commitBasic(map);
 
     }
     @Override
     public void goNext(){
+        //记录信息
+        CreditCardInfosManager manager = CreditCardInfosManager.getInstance();
+        manager.card_id = getCardId();
+        manager.b_name = etName.getText().toString();
+        manager.b_mobile = etMobile.getText().toString();
+        manager.b_card = etIdNo.getText().toString();
+        manager.b_sms = etDynamic.getText().toString();
+        manager.ticket = ticket;
+
         onNextStepCallback.onNextStep(ApplyForCreditCardActivity.STEP_BASICS);
     }
 

+ 311 - 13
app/src/main/java/com/sheep/groups/creditcard/ApplyForCreditCardDetailsFragment.java

@@ -1,18 +1,36 @@
 package com.sheep.groups.creditcard;
 
+import android.app.DatePickerDialog;
 import android.content.Context;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v7.widget.AppCompatSpinner;
+import android.text.TextUtils;
 import android.view.View;
+import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.DatePicker;
+import android.widget.RadioGroup;
+import android.widget.Spinner;
+import android.widget.TextView;
+import android.widget.Toast;
 
 import com.kfzs.libs.DaggerFragment;
 import com.kfzs.libs.IPresenter;
 import com.kfzs.libs.IView;
 import com.kfzs.libs.widget.CompleteCommitEditText;
+import com.kfzs.libs.widget.alpha.AlphaButton;
 import com.sheep.jiuyan.samllsheep.R;
 
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.inject.Inject;
+
 import butterknife.BindView;
 import butterknife.OnClick;
 
@@ -20,12 +38,8 @@ import butterknife.OnClick;
  * Created by guoxin on 2018/4/2.
  */
 
-public class ApplyForCreditCardDetailsFragment extends DaggerFragment{
+public class ApplyForCreditCardDetailsFragment extends DaggerFragment implements DetailsContact.View{
 
-    @BindView(R.id.sp_relationship_immediate_relatives)
-    AppCompatSpinner spRelationshipImmediateRelatives;
-    @BindView(R.id.sp_relationship_other)
-    AppCompatSpinner spRelationshipOther;
 
     @BindView(R.id.et_city)
     CompleteCommitEditText etCity;
@@ -55,8 +69,8 @@ public class ApplyForCreditCardDetailsFragment extends DaggerFragment{
     CompleteCommitEditText etOtherName;
     @BindView(R.id.et_other_r_mobile)
     CompleteCommitEditText etOtherMobile;
-    @BindView(R.id.et_id_no_expire)
-    CompleteCommitEditText etIdCardExpire;
+    @BindView(R.id.tv_id_no_expire)
+    TextView tvIdCardExpire;
     @BindView(R.id.et_car_no)
     CompleteCommitEditText etCarNo;
     @BindView(R.id.et_home_q)
@@ -66,7 +80,26 @@ public class ApplyForCreditCardDetailsFragment extends DaggerFragment{
     @BindView(R.id.et_qq)
     CompleteCommitEditText etQQ;
 
+    @BindView(R.id.rg_marray)
+    RadioGroup rgMarray;
+    @BindView(R.id.cb_agreement)
+    CheckBox cbAgreement;
+    @BindView(R.id.sp_relationship_immediate_relatives)
+    Spinner spImmediateRelationship;
+    @BindView(R.id.sp_relationship_other)
+    Spinner spOtherRelationship;
+    @BindView(R.id.cb_expire)
+    CheckBox cbExpire;
+
+    @BindView(R.id.btn_next)
+    AlphaButton btnNext;
+
+    @Inject
+    DetailsPresenter presenter;
     OnNextStepCallback onNextStepCallback;
+    private ArrayAdapter<CharSequence> adapterImmediateRelatives;
+    private ArrayAdapter<CharSequence> adapterOther;
+
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
@@ -84,12 +117,12 @@ public class ApplyForCreditCardDetailsFragment extends DaggerFragment{
 
     @Override
     public IPresenter currentPresenter() {
-        return null;
+        return presenter;
     }
 
     @Override
     public IView currentIView() {
-        return null;
+        return this;
     }
 
     @Override
@@ -100,16 +133,281 @@ public class ApplyForCreditCardDetailsFragment extends DaggerFragment{
     @Override
     public void setupViews(@Nullable Bundle savedInstanceState) {
 
-        ArrayAdapter<CharSequence> adapterImmediateRelatives = ArrayAdapter.createFromResource(activity, R.array.credit_card_relationship_immediate_relatives_type, R.layout.spinner_text_item);
-        spRelationshipImmediateRelatives.setAdapter(adapterImmediateRelatives);
+        adapterImmediateRelatives = ArrayAdapter.createFromResource(activity, R.array.credit_card_relationship_immediate_relatives_type, R.layout.spinner_text_item);
+        spImmediateRelationship.setAdapter(adapterImmediateRelatives);
+
+        adapterOther = ArrayAdapter.createFromResource(activity, R.array.credit_card_relationship_other_type, R.layout.spinner_text_item);
+        spOtherRelationship.setAdapter(adapterOther);
+
+        //
+        setOnCompleteEdit(etCity,"p_city");
+        setOnCompleteEdit(etAddress,"p_address");
+        setOnCompleteEdit(etEmail,"p_email");
+        //p_marray
+        rgMarray.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(RadioGroup group, int checkedId) {
+                String value = (String) group.findViewById(group.getCheckedRadioButtonId()).getTag();
+//                if(checkedId == R.id.rb_marray_n){
+//
+//                }
+//                else if(checkedId == R.id.rb_marray_y){
+//
+//                }
+//                else if(checkedId == R.id.rb_marray_o){
+//
+//                }
+                presenter.commitFormData("p_marray",value,CreditCardInfosManager.getInstance().card_id);
+                CreditCardInfosManager.getInstance().p_marray = value;
+            }
+        });
+
+
+        setOnCompleteEdit(etEducation,"p_edu");
+        setOnCompleteEdit(etCompanyName,"w_name");
+        setOnCompleteEdit(etCompanyCity,"w_city");
+        setOnCompleteEdit(etCompanyAddress,"w_address");
+        setOnCompleteEditDouble(etCompanyPhoneNo,etCompanyPhoneQ,"w_tel");//要取得两个值,所以单独设置
+//        setOnCompleteEdit(etCompanyPhoneQ,"p_city");
+        setOnCompleteEdit(etWorkYear,"w_age");
+        setOnCompleteEdit(etIRName,"c_d_name");
+        setOnCompleteEdit(etIRMobile,"c_d_mobile");
+        //c_d_relation
+        spImmediateRelationship.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                String value = (String) adapterImmediateRelatives.getItem(position);
+                CreditCardInfosManager.getInstance().c_d_relation = value;
+                presenter.commitFormData("c_d_relation",value,CreditCardInfosManager.getInstance().card_id);
+            }
+        });
+        //c_o_relation
+        spOtherRelationship.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                String value = (String) adapterOther.getItem(position);
+                CreditCardInfosManager.getInstance().c_d_relation = value;
+                presenter.commitFormData("c_o_relation",value,CreditCardInfosManager.getInstance().card_id);
+            }
+        });
+        setOnCompleteEdit(etOtherName,"c_o_name");
+        setOnCompleteEdit(etOtherMobile,"c_o_mobile");
+        tvIdCardExpire.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                //显示日历,key为c_id_expire
+                showDatePicker();
+            }
+        });
+        //c_id_expire
+        cbExpire.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                tvIdCardExpire.setVisibility(isChecked ? View.GONE : View.VISIBLE);
+                if(isChecked){
+                    String expire = "2099-12-31";
+                    CreditCardInfosManager.getInstance().c_id_expire = expire;
+                    presenter.commitFormData("c_id_expire",expire,CreditCardInfosManager.getInstance().card_id);
+                }
+                else CreditCardInfosManager.getInstance().c_id_expire = (String) tvIdCardExpire.getText();
+
+            }
+        });
+
+
+
+
+        setOnCompleteEdit(etCarNo,"o_p_number");
+//        setOnCompleteEdit(etHomeQ,"p_city");
+        setOnCompleteEditDouble(etHomePhone,etHomeQ,"o_tel");//要取得两个值,所以单独设置
+        setOnCompleteEdit(etQQ,"o_qq");
+        //is_agree
+        cbAgreement.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                CreditCardInfosManager.getInstance().is_agree = isChecked;
+                presenter.commitFormData("is_agree",String.valueOf(isChecked),CreditCardInfosManager.getInstance().card_id);
+            }
+        });
 
-        ArrayAdapter<CharSequence> adapterOther = ArrayAdapter.createFromResource(activity, R.array.credit_card_relationship_other_type, R.layout.spinner_text_item);
-        spRelationshipOther.setAdapter(adapterOther);
 
     }
 
+    private void showDatePicker(){
+        // 获得日历对象
+        Calendar c = Calendar.getInstance();
+        // 获取当前年份
+        int year = c.get(Calendar.YEAR);
+        // 获取当前月份
+        int monthOfYear = c.get(Calendar.MONTH);
+        // 获取当前月份的天数
+        int dayOfMonth = c.get(Calendar.DAY_OF_MONTH);
+
+        new DatePickerDialog(activity, new DatePickerDialog.OnDateSetListener() {
+            @Override
+            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
+                String expire = year + "-" + month + "-" + dayOfMonth;
+                tvIdCardExpire.setText(expire);
+                CreditCardInfosManager.getInstance().c_id_expire = expire;
+                presenter.commitFormData("c_id_expire",expire,CreditCardInfosManager.getInstance().card_id);
+            }
+        },year,monthOfYear,dayOfMonth).show();
+
+    }
+
+    private void setOnCompleteEdit(final CompleteCommitEditText et, final String key){
+        et.setOnCompleteEditListener(new CompleteCommitEditText.OnCompleteEditListener() {
+            @Override
+            public void onCompleteEdit(String text) {
+                presenter.commitFormData(key,et.getText().toString(),CreditCardInfosManager.getInstance().card_id);
+            }
+        });
+    }
+
+    private void setOnCompleteEditDouble(final CompleteCommitEditText et,final CompleteCommitEditText etQ, final String key){
+        et.setOnCompleteEditListener(new CompleteCommitEditText.OnCompleteEditListener() {
+            @Override
+            public void onCompleteEdit(String text) {
+                presenter.commitFormData(key,etQ.getText().toString()+et.getText().toString(),CreditCardInfosManager.getInstance().card_id);
+            }
+        });
+    }
+
+
+
     @OnClick(R.id.btn_next)
     public void btnClick(View view){
+
+        if(TextUtils.isEmpty(etCity.getText().toString())){
+            Toast.makeText(activity,"请填写住宅城市",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etAddress.getText().toString())){
+            Toast.makeText(activity,"请填写住宅地址",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etEmail.getText().toString())){
+            Toast.makeText(activity,"请填写电子邮箱",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(CreditCardInfosManager.getInstance().p_marray)){
+            Toast.makeText(activity,"请选择婚姻状况",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etEducation.getText().toString())){
+            Toast.makeText(activity,"请填写教育程度",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etCompanyName.getText().toString())){
+            Toast.makeText(activity,"请填写单位名称",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etCompanyAddress.getText().toString())){
+            Toast.makeText(activity,"请填写单位地址",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etCompanyPhoneNo.getText().toString()) || TextUtils.isEmpty(etCompanyPhoneQ.getText().toString())){
+            Toast.makeText(activity,"请填写单位电话",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etWorkYear.getText().toString())){
+            Toast.makeText(activity,"请填写工作年限",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etIRName.getText().toString())){
+            Toast.makeText(activity,"请填写直属亲属姓名",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etIRMobile.getText().toString())){
+            Toast.makeText(activity,"请填写直属亲属手机号",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(CreditCardInfosManager.getInstance().c_d_relation)){
+            Toast.makeText(activity,"请选择直属亲属关系",Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        if(TextUtils.isEmpty(etOtherName.getText().toString())){
+            Toast.makeText(activity,"请填写其他联系人姓名",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etOtherMobile.getText().toString())){
+            Toast.makeText(activity,"请填写其他联系人手机号",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(CreditCardInfosManager.getInstance().c_o_relation)){
+            Toast.makeText(activity,"请选择其他联系人关系",Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        //有效期
+        if(TextUtils.isEmpty(tvIdCardExpire.getText().toString())){
+            Toast.makeText(activity,"请选择证件有效期",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etCarNo.getText().toString())){
+            Toast.makeText(activity,"请填写车牌号码",Toast.LENGTH_SHORT).show();
+            return;
+        }
+        if(TextUtils.isEmpty(etHomePhone.getText().toString()) || TextUtils.isEmpty(etHomeQ.getText().toString())){
+            Toast.makeText(activity,"请填写住宅电话",Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        if(TextUtils.isEmpty(etQQ.getText().toString())){
+            Toast.makeText(activity,"请填写常用QQ号码",Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+
+        Map<String,String> map = new HashMap<>();
+
+        map.put("p_city",etCity.getText().toString());
+        map.put("p_address",etAddress.getText().toString());
+        map.put("p_email",etEmail.getText().toString());
+        map.put("p_marray",CreditCardInfosManager.getInstance().p_marray);
+
+        map.put("p_edu",etEducation.getText().toString());
+        map.put("w_name",etCompanyName.getText().toString());
+        map.put("w_city",etCompanyCity.getText().toString());
+        map.put("w_address",etCompanyAddress.getText().toString());
+        map.put("w_tel",etCompanyPhoneQ.getText().toString() + etCompanyPhoneNo.getText().toString());
+        map.put("w_age",etWorkYear.getText().toString());
+        map.put("c_d_name",etIRName.getText().toString());
+        map.put("c_d_mobile",etIRMobile.getText().toString());
+        map.put("c_d_relation",CreditCardInfosManager.getInstance().c_d_relation);
+
+        map.put("c_o_name",etOtherName.getText().toString());
+        map.put("c_o_mobile",etOtherMobile.getText().toString());
+        map.put("c_o_relation",CreditCardInfosManager.getInstance().c_o_relation);
+
+        if(cbExpire.isChecked()){
+            map.put("c_id_expire",CreditCardInfosManager.getInstance().c_id_expire);
+        }
+        else {
+            map.put("c_id_expire",tvIdCardExpire.getText().toString());
+        }
+
+        map.put("o_p_number",etCarNo.getText().toString());
+        map.put("o_tel",etHomeQ.getText().toString() + etHomePhone.getText().toString());
+        map.put("o_qq",etQQ.getText().toString());
+        map.put("is_agree",String.valueOf(CreditCardInfosManager.getInstance().is_agree));
+        presenter.commitDetails(map);
+    }
+
+
+    @Override
+    public boolean isViewActive() {
+        return isAdded();
+    }
+
+    @Override
+    public void showProgress(String msg) {
+
+    }
+
+    @Override
+    public void goNext() {
         onNextStepCallback.onNextStep(ApplyForCreditCardActivity.STEP_DETAILS);
     }
 }

+ 10 - 0
app/src/main/java/com/sheep/groups/creditcard/BasicInfoPresenter.java

@@ -28,6 +28,12 @@ public class BasicInfoPresenter implements BasicInfoContact.Presenter {
     HttpService httpService;
     BasicInfoContact.View view;
 
+    private String ticket;
+
+    public String getTicket() {
+        return ticket;
+    }
+
     @Inject
     public BasicInfoPresenter(HttpService service){
         this.httpService = service;
@@ -159,7 +165,11 @@ public class BasicInfoPresenter implements BasicInfoContact.Presenter {
                     @Override
                     public void onNext(String s) {
                         Log.e(TAG, "onNext: "+s );
+                        //保存ticket
+//                        ticket = ;
+
                         if(isContactViewActive()){
+                            //提示验证码发送情况
                         }
                     }
                 });

+ 167 - 0
app/src/main/java/com/sheep/groups/creditcard/CountDownUtil.java

@@ -0,0 +1,167 @@
+package com.sheep.groups.creditcard;
+
+/**
+ * Created by guoxin on 2018/4/3.
+ */
+
+import android.os.Handler;
+import android.os.Message;
+import android.support.annotation.ColorRes;
+import android.support.annotation.Nullable;
+import android.view.View;
+import android.widget.TextView;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * 倒计时工具
+ * Created by weijing on 2017-08-22 11:50.
+ */
+
+public class CountDownUtil {
+    /**
+     * 开始倒计时code
+     */
+    private final int MSG_WHAT_START = 10_010;
+    /**
+     * 弱引用
+     */
+    private WeakReference<TextView> mWeakReference;
+    /**
+     * 倒计时时间
+     */
+    private long mCountDownMillis = 60_000;
+    /**
+     * 提示文字
+     */
+    private String mHintText = "重新发送";
+
+    /**
+     * 剩余倒计时时间
+     */
+    private long mLastMillis;
+
+    /**
+     * 间隔时间差(两次发送handler)
+     */
+    private long mIntervalMillis = 1_000;
+
+    /**
+     * 可用状态下字体颜色Id
+     */
+    private int usableColorId = android.R.color.holo_blue_light;
+    /**
+     * 不可用状态下字体颜色Id
+     */
+    private int unusableColorId = android.R.color.darker_gray;
+
+
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+
+            switch (msg.what) {
+                case MSG_WHAT_START:
+                    if (mLastMillis > 0) {
+                        setUsable(false);
+                        mLastMillis -= mIntervalMillis;
+                        if (mWeakReference.get() != null) {
+                            mHandler.sendEmptyMessageDelayed(MSG_WHAT_START, mIntervalMillis);
+                        }
+                    } else {
+                        setUsable(true);
+                    }
+                    break;
+            }
+        }
+    };
+
+    public CountDownUtil(TextView textView) {
+        mWeakReference = new WeakReference<>(textView);
+    }
+
+    public CountDownUtil(TextView textView, long countDownMillis) {
+        mWeakReference = new WeakReference<>(textView);
+        this.mCountDownMillis = countDownMillis;
+    }
+
+    public CountDownUtil setCountDownMillis(long countDownMillis) {
+        this.mCountDownMillis = countDownMillis;
+        return this;
+    }
+
+
+    /**
+     * 设置是否可用
+     *
+     * @param usable
+     */
+    private void setUsable(boolean usable) {
+        TextView mTextView = mWeakReference.get();
+        if (mTextView != null) {
+            if (usable) {
+                //可用
+                if (!mTextView.isClickable()) {
+                    mTextView.setClickable(usable);
+                    mTextView.setTextColor(mTextView.getResources().getColor(usableColorId));
+                    mTextView.setText(mHintText);
+                }
+            } else {
+                //不可用
+                if (mTextView.isClickable()) {
+                    mTextView.setClickable(usable);
+                    mTextView.setTextColor(mTextView.getResources().getColor(unusableColorId));
+                }
+//                String content = mLastMillis / 1000 + "秒后" + mHintText;
+                String content = mLastMillis / 1000 + "秒";
+                mTextView.setText(content);
+
+            }
+        }
+    }
+
+    /**
+     * 设置倒计时颜色
+     *
+     * @param usableColorId   可用状态下的颜色
+     * @param unusableColorId 不可用状态下的颜色
+     */
+    public CountDownUtil setCountDownColor(@ColorRes int usableColorId, @ColorRes int unusableColorId) {
+        this.usableColorId = usableColorId;
+        this.unusableColorId = unusableColorId;
+        return this;
+    }
+
+    /**
+     * 开始倒计时
+     */
+    public CountDownUtil start() {
+        mLastMillis = mCountDownMillis;
+        mHandler.sendEmptyMessage(MSG_WHAT_START);
+        return this;
+    }
+
+    public CountDownUtil setOnClickListener(@Nullable final View.OnClickListener onClickListener) {
+        TextView mTextView = mWeakReference.get();
+        if (mTextView != null)
+            mTextView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    mHandler.removeMessages(MSG_WHAT_START);
+                    start();
+                    onClickListener.onClick(v);
+                }
+            });
+        return this;
+    }
+
+    /**
+     * 重置停止倒计时
+     */
+    public CountDownUtil reset() {
+        mLastMillis = 0;
+        mHandler.sendEmptyMessage(MSG_WHAT_START);
+        return this;
+    }
+}

+ 67 - 0
app/src/main/java/com/sheep/groups/creditcard/CreditCardInfosManager.java

@@ -0,0 +1,67 @@
+package com.sheep.groups.creditcard;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by guoxin on 2018/4/3.
+ */
+
+public class CreditCardInfosManager {
+
+    private static CreditCardInfosManager instance;
+
+    private CreditCardInfosManager(){
+
+    }
+
+    public static CreditCardInfosManager getInstance(){
+        if(instance == null){
+            synchronized (instance){
+                if(instance == null){
+                    instance = new CreditCardInfosManager();
+                }
+            }
+        }
+        return instance;
+    }
+
+
+
+    public String card_id;//卡类型
+    public String b_name;
+    public String b_mobile;
+    public String b_card;//身份证号
+    public String b_sms;
+    public String ticket;
+    public String p_city;
+    public String p_address;
+    public String p_email;
+    public String p_marray;
+    public String p_edu;
+    public String w_name;
+    public String w_city;
+    public String w_address;
+    public String w_tel;
+    public String w_age;
+    public String c_d_name;
+    public String c_d_mobile;
+    public String c_d_relation;
+    public String c_o_name;
+    public String c_o_mobile;
+    public String c_o_relation;
+    public String c_id_expire;
+    public String o_p_number;
+    public String o_tel;
+    public String o_qq;
+    public boolean is_agree = false;
+
+
+    private Map<String,String> makeMap(){
+        Map<String,String> map = new HashMap<>();
+
+        return map;
+    }
+
+
+}

+ 15 - 0
app/src/main/java/com/sheep/groups/creditcard/DetailsComponent.java

@@ -0,0 +1,15 @@
+package com.sheep.groups.creditcard;
+
+import com.kfzs.libs.di.http.HttpComponent;
+import com.kfzs.libs.di.http.HttpScope;
+
+import dagger.Component;
+
+/**
+ * Created by guoxin on 2018/4/2.
+ */
+@HttpScope
+@Component(dependencies = HttpComponent.class)
+public interface DetailsComponent {
+    void inject(ApplyForCreditCardDetailsFragment fragment);
+}

+ 25 - 0
app/src/main/java/com/sheep/groups/creditcard/DetailsContact.java

@@ -0,0 +1,25 @@
+package com.sheep.groups.creditcard;
+
+
+import com.kfzs.libs.IPresenter;
+import com.kfzs.libs.IView;
+
+import java.util.Map;
+
+/**
+ * Created by guoxin on 2018/3/29.
+ */
+
+ interface DetailsContact {
+
+    interface View extends IView {
+        void showProgress(String msg);
+        void goNext();
+    }
+
+    interface Presenter extends IPresenter {
+        void commitFormData(String key, String value, String cardId);
+        void commitDetails(Map<String,String> map);
+    }
+
+}

+ 109 - 0
app/src/main/java/com/sheep/groups/creditcard/DetailsPresenter.java

@@ -0,0 +1,109 @@
+package com.sheep.groups.creditcard;
+
+import android.util.Log;
+
+import com.kfzs.libs.IView;
+import com.kfzs.libs.di.http.HttpService;
+import com.sheep.jiuyan.samllsheep.SheepApp;
+import com.sheep.jiuyan.samllsheep.utils.SpUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.inject.Inject;
+
+import rx.Observer;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.schedulers.Schedulers;
+
+/**
+ * Created by guoxin on 2018/4/2.
+ */
+
+public class DetailsPresenter implements DetailsContact.Presenter {
+
+    public static final String TAG = "DetailsPresenter";
+
+    HttpService httpService;
+    DetailsContact.View view;
+
+    @Inject
+    public DetailsPresenter(HttpService service){
+        this.httpService = service;
+    }
+
+    @Override
+    public void attachedView(IView view) {
+        this.view = (DetailsContact.View) view;
+    }
+
+    @Override
+    public void detachedView() {
+        this.view = null;
+    }
+
+    @Override
+    public boolean isContactViewActive() {
+        if (view != null) {
+            return view.isViewActive();
+        }
+        return false;
+    }
+
+
+
+    @Override
+    public void commitFormData(String key, String value, String cardId) {
+        Map<String,String> map = new HashMap<>();
+        map.put("token", SpUtils.getOpenId(SheepApp.mContext));
+        map.put("key",key);
+        map.put("value",value);
+        map.put("card_id",cardId);
+        httpService
+                .commitCreditCardFiled(map)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Observer<String>() {
+                    @Override
+                    public void onCompleted() {
+
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        Log.e(TAG, "onError: "+e.getMessage() );
+                    }
+
+                    @Override
+                    public void onNext(String s) {
+                        Log.e(TAG, "onNext: "+s );
+                    }
+                });
+    }
+
+    @Override
+    public void commitDetails(Map<String, String> map) {
+        httpService
+                .commitCreditCardDetails(map)
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Observer<String>() {
+                    @Override
+                    public void onCompleted() {
+
+                    }
+
+                    @Override
+                    public void onError(Throwable e) {
+                        Log.e(TAG, "onError: "+e.getMessage() );
+                    }
+
+                    @Override
+                    public void onNext(String s) {
+                        Log.e(TAG, "onNext: "+s );
+                    }
+                });
+    }
+
+
+}

+ 12 - 5
app/src/main/res/layout/fragment_apply_for_credit_card_details.xml

@@ -73,18 +73,23 @@
                         style="@style/creditCardInputItemTitleStyle"
                         android:text="婚姻状况" />
 
-                    <RadioGroup style="@style/creditCardInputItemRadiogroupStyle">
+                    <RadioGroup
+                        android:id="@+id/rg_marray"
+                        style="@style/creditCardInputItemRadiogroupStyle">
                         <RadioButton
+                            android:id="@+id/rb_marray_n"
                             android:text=" 未婚"
-                            android:tag="Y"
+                            android:tag="N"
                             style="@style/creditCardInputItemRadioBtnStyle" />
 
                         <RadioButton
+                            android:id="@+id/rb_marray_y"
                             android:text=" 已婚"
-                            android:tag="N"
+                            android:tag="Y"
                             style="@style/creditCardInputItemRadioBtnStyle" />
 
                         <RadioButton
+                            android:id="@+id/rb_marray_o"
                             android:text=" 其他"
                             android:tag="O"
                             style="@style/creditCardInputItemRadioBtnStyle" />
@@ -278,8 +283,8 @@
                         style="@style/creditCardInputItemTitleStyle"
                         android:text="证件有效期" />
 
-                    <com.kfzs.libs.widget.CompleteCommitEditText
-                        android:id="@+id/et_id_no_expire"
+                    <TextView
+                        android:id="@+id/tv_id_no_expire"
                         style="@style/creditCardInputItemEtStyle"
                         android:layout_weight="1"
                         android:hint="身份证有效期终止日期"
@@ -287,6 +292,7 @@
                         />
 
                     <CheckBox
+                        android:id="@+id/cb_expire"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:button="@drawable/gx_credit_card_radiobtn"
@@ -358,6 +364,7 @@
                             style="@style/creditCardInputItemTitleStyle"
                             android:text="开通快捷还款" />
                         <CheckBox
+                            android:id="@+id/cb_agreement"
                             android:layout_width="wrap_content"
                             android:layout_height="wrap_content"
                             android:button="@drawable/gx_credit_card_radiobtn"

+ 2 - 0
app/src/main/res/values/gx_strings.xml

@@ -22,4 +22,6 @@
         <item>同事</item>
         <item>其他</item>
     </string-array>
+
+    <color name="credit_blue_color">#0089ee</color>
 </resources>

+ 5 - 0
kfzslibrary/src/main/java/com/kfzs/libs/di/http/HttpService.java

@@ -34,4 +34,9 @@ public interface HttpService {
     @FormUrlEncoded
     @POST("credits/cmbc/code")
     Observable<String> getCreditCardDynamic(@FieldMap Map<String, String> map);
+
+    //表格形式发送
+    @FormUrlEncoded
+    @POST("credits/cmbc/code")
+    Observable<String> commitCreditCardDetails(@FieldMap Map<String, String> map);
 }