浏览代码

1.身份认证。

石慧云 4 年之前
父节点
当前提交
498ae69640

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

@@ -87,6 +87,7 @@
         <activity android:name=".activity.AreaSelectActivity"/>
         <activity android:name=".activity.SourceDetailsActivity"/>
         <activity android:name=".activity.AllCarActivity"/>
+        <activity android:name=".activity.InvoiceActivity"/>
 
 
     </application >

+ 76 - 0
app/src/main/java/com/quansu/heifengwuliu/activity/InvoiceActivity.kt

@@ -0,0 +1,76 @@
+package com.quansu.heifengwuliu.activity
+
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import com.quansu.heifengwuliu.R
+import com.quansu.heifengwuliu.adapter.InvoiceAdapter
+import com.quansu.heifengwuliu.base.MBRActivity
+import com.quansu.heifengwuliu.config.MIntentAction
+import com.quansu.heifengwuliu.databinding.ActivityInvoiceBinding
+import com.quansu.heifengwuliu.utils.net.NetEngine
+import com.quansu.heifengwuliu.vmodel.InvoiceVModel
+import com.ysnows.base.net.IResponse
+import com.ysnows.base.utils.UiSwitch
+import io.reactivex.Observable
+
+class InvoiceActivity : MBRActivity<InvoiceVModel, InvoiceAdapter, ActivityInvoiceBinding>() {
+
+    var k:String=""
+
+    override fun initView(view: View?) {
+        super.initView(view)
+        titleBar()?.setRightText(getString(R.string.invoice_title))
+        titleBar()?.tvRight!!.setOnClickListener {
+            //发票抬头
+
+        }
+    }
+
+
+    override fun initCreate(savedInstanceState: Bundle?) {
+        super.initCreate(savedInstanceState)
+
+    }
+
+    override fun listeners() {
+        super.listeners()
+        binding.butSure.setOnClickListener{
+
+            UiSwitch.singleRes(this, AllCarActivity::class.java,
+                    MIntentAction.REQUEST_CODE_ONE)
+        }
+    }
+
+
+
+
+    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+        super.onActivityResult(requestCode, resultCode, data)
+        if (MIntentAction.REQUEST_CODE_ONE == requestCode && resultCode == Activity.RESULT_OK) {
+            //刷新列表
+            onRefresh()
+        }
+    }
+
+    override fun binding(): ActivityInvoiceBinding {
+        return ActivityInvoiceBinding.inflate(layoutInflater)
+    }
+
+
+    override fun initAdapter(): InvoiceAdapter {
+        return InvoiceAdapter()
+    }
+
+    override fun api(): Observable<out IResponse<*>> {
+        return NetEngine.service.myDriver(k, vm?.repository()?.autoPage()!!)
+    }
+
+    override fun title(): String? {
+        return getString(R.string.invoice)
+    }
+    override fun vmClass(): Class<InvoiceVModel> {
+        return InvoiceVModel::class.java
+    }
+}

+ 21 - 2
app/src/main/java/com/quansu/heifengwuliu/activity/PersonalVerityActivity.kt

@@ -2,12 +2,15 @@ package com.quansu.heifengwuliu.activity
 
 import android.app.Activity
 import android.content.Intent
+import android.os.Bundle
+import android.util.Log
 import com.luck.picture.lib.PictureSelector
 import com.quansu.heifengwuliu.R
 import com.quansu.heifengwuliu.base.MBActivity
 import com.quansu.heifengwuliu.config.MIntentAction
 import com.quansu.heifengwuliu.databinding.ActivityPersonalVerifyBinding
 import com.quansu.heifengwuliu.inte.OnUploadCallback
+import com.quansu.heifengwuliu.model.User
 import com.quansu.heifengwuliu.repository.PersonalVerifyRepository
 import com.quansu.heifengwuliu.utils.OssUtils
 import com.quansu.heifengwuliu.vmodel.PersonalVerityVModel
@@ -16,6 +19,16 @@ import java.util.*
 
 class PersonalVerityActivity : MBActivity<PersonalVerityVModel, ActivityPersonalVerifyBinding>(), OnUploadCallback<String> {
 
+
+    override fun initCreate(savedInstanceState: Bundle?) {
+        super.initCreate(savedInstanceState)
+        var user= User.get()
+        if(null!=user&&user.isInfo){
+            vm.getInfo()
+        }
+
+    }
+
     override fun binding(): ActivityPersonalVerifyBinding {
         return ActivityPersonalVerifyBinding.inflate(layoutInflater)
     }
@@ -48,9 +61,9 @@ class PersonalVerityActivity : MBActivity<PersonalVerityVModel, ActivityPersonal
                 }
 
                 OssUtils(this)
-                        .setUpLoad("detail", list, this)
+                        .setUpLoad("idcard", list, this)
+
 
-                vm.imgIDMan.value=list[0]
 
             }
 
@@ -72,7 +85,13 @@ class PersonalVerityActivity : MBActivity<PersonalVerityVModel, ActivityPersonal
 
         val ss: Array<String> = t.split(",".toRegex()).toTypedArray()
         //ss[0]--//不完整路径-接口需要   ss[1]完整路径
+
         //todo:
+        if(vm.type=="1") {
+            vm.imgIDMan.value = ss[1]
+        }else{
+            vm.imgIDEmblem.value = ss[1]
+        }
 
 
     }

+ 18 - 0
app/src/main/java/com/quansu/heifengwuliu/adapter/InvoiceAdapter.kt

@@ -0,0 +1,18 @@
+package com.quansu.heifengwuliu.adapter
+
+import com.chad.library.adapter.base.viewholder.BaseDataBindingHolder
+import com.quansu.heifengwuliu.R
+import com.quansu.heifengwuliu.databinding.ItemInvoiceBinding
+import com.quansu.heifengwuliu.model.DriverBean
+import com.ysnows.base.base.BAdapter
+
+class InvoiceAdapter() : BAdapter<DriverBean, BaseDataBindingHolder<ItemInvoiceBinding>>(R.layout.item_invoice) {
+    override fun convert(holder: BaseDataBindingHolder<ItemInvoiceBinding>, item: DriverBean) {
+        holder.dataBinding?.item = item
+
+        holder.dataBinding?.imgCheck!!.setOnClickListener {
+            if(item.checked==0) item.checked=1 else item.checked=0
+            notifyItemChanged(holder.adapterPosition)
+        }
+    }
+}

+ 69 - 31
app/src/main/java/com/quansu/heifengwuliu/model/User.java

@@ -25,11 +25,38 @@ public class User implements IUser, Parcelable, IModel {
     public String create_time;
     public String update_time;
     public String delete_time;
+    public int is_info;// 个人认证  1已认证 0未认证
+    public int is_car;//车辆认证  1已认证  0未认证
+    public int is_company;//公司认证  1已认证 0未认证
+    public int is_pay_pwd; //支付密码 1已填写  0未填写
+    public int is_pwd; //登录密码 1已填写  0未填写
+
 
     public Boolean isDriver() {
         return type == 1;
     }
 
+    public Boolean isInfo() {
+        return is_info == 1;
+    }
+    public Boolean isCar() {
+        return is_car == 1;
+    }
+    public Boolean isCompany() {
+        return is_company == 1;
+    }
+    public Boolean isPayPwd() {
+        return is_pay_pwd == 1;
+    }
+    public Boolean isPwd() {
+        return is_pwd == 1;
+    }
+
+
+
+
+
+
     public Boolean isShipper() {
         return type == 2;
     }
@@ -58,47 +85,56 @@ public class User implements IUser, Parcelable, IModel {
         return get() != null;
     }
 
-
-    @Override
-    public int describeContents() {
-        return 0;
+    protected User(Parcel in) {
+        uid = in.readString();
+        name = in.readString();
+        mobile = in.readString();
+        avatar = in.readString();
+        money = in.readString();
+        type = in.readInt();
+        status = in.readString();
+        openid = in.readString();
+        union_id = in.readString();
+        create_time = in.readString();
+        update_time = in.readString();
+        delete_time = in.readString();
+        is_info = in.readInt();
+        is_car = in.readInt();
+        is_company = in.readInt();
+        is_pay_pwd = in.readInt();
+        is_pwd = in.readInt();
     }
 
     @Override
     public void writeToParcel(Parcel dest, int flags) {
-        dest.writeString(this.uid);
-        dest.writeString(this.name);
-        dest.writeString(this.mobile);
-        dest.writeString(this.avatar);
-        dest.writeString(this.money);
-        dest.writeInt(this.type);
-        dest.writeString(this.status);
-        dest.writeString(this.openid);
-        dest.writeString(this.union_id);
-        dest.writeString(this.create_time);
-        dest.writeString(this.update_time);
-        dest.writeString(this.delete_time);
+        dest.writeString(uid);
+        dest.writeString(name);
+        dest.writeString(mobile);
+        dest.writeString(avatar);
+        dest.writeString(money);
+        dest.writeInt(type);
+        dest.writeString(status);
+        dest.writeString(openid);
+        dest.writeString(union_id);
+        dest.writeString(create_time);
+        dest.writeString(update_time);
+        dest.writeString(delete_time);
+        dest.writeInt(is_info);
+        dest.writeInt(is_car);
+        dest.writeInt(is_company);
+        dest.writeInt(is_pay_pwd);
+        dest.writeInt(is_pwd);
     }
 
-    protected User(Parcel in) {
-        this.uid = in.readString();
-        this.name = in.readString();
-        this.mobile = in.readString();
-        this.avatar = in.readString();
-        this.money = in.readString();
-        this.type = in.readInt();
-        this.status = in.readString();
-        this.openid = in.readString();
-        this.union_id = in.readString();
-        this.create_time = in.readString();
-        this.update_time = in.readString();
-        this.delete_time = in.readString();
+    @Override
+    public int describeContents() {
+        return 0;
     }
 
     public static final Creator<User> CREATOR = new Creator<User>() {
         @Override
-        public User createFromParcel(Parcel source) {
-            return new User(source);
+        public User createFromParcel(Parcel in) {
+            return new User(in);
         }
 
         @Override
@@ -106,4 +142,6 @@ public class User implements IUser, Parcelable, IModel {
             return new User[size];
         }
     };
+
+
 }

+ 17 - 1
app/src/main/java/com/quansu/heifengwuliu/utils/OssUtils.kt

@@ -1,6 +1,8 @@
 package com.quansu.heifengwuliu.utils
 
 import android.text.TextUtils
+import android.util.Log
+import com.google.gson.Gson
 import com.quansu.heifengwuliu.R
 import com.quansu.heifengwuliu.inte.OnCall
 import com.quansu.heifengwuliu.inte.OnUploadCallback
@@ -76,8 +78,21 @@ class OssUtils(var bView: BView) {
                         key = imageSign.key
                     }
                     imageSign.key = key + spe + name
-                    val request: HashMap<String, String>? = RequestModelUtils.toMaps(imageSign)
+                    val request: HashMap<String, String> = HashMap<String, String>()
+                    request["OSSAccessKeyId"] = imageSign.OSSAccessKeyId
+                    request["policy"] = imageSign.policy
+                    request["Signature"] = imageSign.Signature
+                    request["host"] = imageSign.host
+                    request["expire"] = imageSign.expire.toString()
+                    request["success_action_status"] = imageSign.success_action_status.toString()
+                    request["key"] = imageSign.key
+
+
                     val fileName = name //文件名
+                    Log.e("-shy-", "fileName=: "+fileName )
+
+                    Log.e("-shy-", "request=: "+Gson().toJson(request) )
+
                     val requestCall = OkHttpUtils.post()
                             .url(imageSign.host)
                             .addFile("file", fileName, File(urls[i]))
@@ -89,6 +104,7 @@ class OssUtils(var bView: BView) {
                     requestCall.execute(object : StringCallback() {
                         override fun onError(call: Call, e: Exception, id: Int) {
                             bView.toast(bView.getStr(R.string.upload_pic_fail))
+                            Log.e("-shy-", "onError: $e")
                             size[0]--
                             if (size[0] <= 0) {
                                 qmuiProgressDialog[0]!!.dismiss()

+ 0 - 55
app/src/main/java/com/quansu/heifengwuliu/utils/RequestModelUtils.kt

@@ -1,55 +0,0 @@
-package com.quansu.heifengwuliu.utils
-
-import com.githang.statusbar.BuildConfig
-import com.ysnows.base.utils.StringUtil
-import java.lang.reflect.Method
-import java.util.*
-
-/**
- *Created by shihuiyun
- *on 2020/9/16
- */
-class RequestModelUtils {
-    companion object {
-        fun toMaps(o: Any): HashMap<String, String>? {
-            val hashMap = HashMap<String, String>()
-            val fields = o.javaClass.fields
-            for (field in fields) {
-                try {
-                    val value = field[o] ?: continue
-                    if (value is Int && value == -1) {
-                        continue
-                    }
-                    var method: Method? = null
-                    method = try {
-                        o.javaClass.getDeclaredMethod("set" + StringUtil.setterName(field.name), getClazz(value))
-                    } catch (e: NoSuchMethodException) {
-                        if (BuildConfig.DEBUG) e.printStackTrace()
-                        continue
-                    }
-                    if (method != null) {
-                        hashMap[field.name] = value.toString() + ""
-                    }
-                } catch (e: IllegalAccessException) {
-                    e.printStackTrace()
-                }
-            }
-            return hashMap
-        }
-
-        fun getClazz(value: Any?): Class<*>? {
-            if (value is Int) {
-                return Int::class.javaPrimitiveType
-            } else if (value is String) {
-                return String::class.java
-            } else if (value is Float) {
-                return Float::class.javaPrimitiveType
-            } else if (value is Double) {
-                return Double::class.javaPrimitiveType
-            }
-            return null
-        }
-
-
-    }
-}

+ 20 - 2
app/src/main/java/com/quansu/heifengwuliu/utils/net/ApiService.kt

@@ -53,8 +53,9 @@ interface ApiService {
 //    ------------
 
 
-    @GET("index/getOssSign")
-    fun getSignedUrl(@Query("type") type: String?): Observable<Response<ImageSign>>
+    @POST("api/common/getOssSign")
+    @FormUrlEncoded
+    fun getSignedUrl(@Field("type") type: String?): Observable<Response<ImageSign>>
 
 
     /**
@@ -268,6 +269,23 @@ interface ApiService {
 
 
 
+    /**
+     * 身份认证
+     * @return
+     */
+    @POST("api/user/setInfo")
+    @FormUrlEncoded
+    fun setInfo(@Field("idcard_z") idcard_z: String?, @Field("idcard_f") idcard_f: String?,
+                @Field("name") name: String?, @Field("idcard") idcard: String?
+    ): Observable<Response<Any>>
+
 
 
+    /**
+     * 所有司机
+     * @return
+     */
+    @GET("api/user/getInfo")
+    fun getInfo(@Query("type") type: String?): Observable<Response<Any>>
+
 }

+ 33 - 0
app/src/main/java/com/quansu/heifengwuliu/vmodel/InvoiceVModel.kt

@@ -0,0 +1,33 @@
+package com.quansu.heifengwuliu.vmodel
+
+import android.app.Activity
+import android.content.Intent
+import com.quansu.heifengwuliu.utils.net.NetEngine
+import com.ysnows.base.base.BRRepository
+import com.ysnows.base.base.BRViewModel
+
+class InvoiceVModel : BRViewModel<BRRepository>() {
+
+
+    fun setSaveDriver(arr:String){
+        //添加司机
+
+        repository()
+                .lreq(NetEngine.service.setDriver(arr))
+                .doOnNext {
+                    if (it.ok(true)) {
+                        val intent = Intent()
+                        var con = repository().context as Activity
+                        con.setResult(Activity.RESULT_OK, intent)
+                        con.finish()
+                    }
+                }
+                .subscribe()
+    }
+
+
+
+
+
+
+}

+ 21 - 0
app/src/main/java/com/quansu/heifengwuliu/vmodel/MineVModel.kt

@@ -9,6 +9,7 @@ import com.quansu.heifengwuliu.repository.MineRepository
 import com.ysnows.base.base.BViewModel
 import com.ysnows.base.utils.B
 import com.ysnows.base.utils.DialUtils
+import com.ysnows.base.utils.MMKVManager
 import com.ysnows.base.utils.UiSwitch
 
 /**
@@ -40,6 +41,14 @@ open class MineVModel : BViewModel<MineRepository>() {
             putString("type", "0") })
 
     }
+    fun goInvoice() {
+        //发票
+        single(InvoiceActivity::class.java)
+    }
+
+
+
+
 
     fun goPersonalVerify() {
         single(PersonalVerityActivity::class.java)
@@ -49,6 +58,14 @@ open class MineVModel : BViewModel<MineRepository>() {
         single(AccountActivity::class.java)
     }
 
+
+    fun goLogOut(){
+        //退出登录
+        MMKVManager.instance().clearAll()
+        UiSwitch.single_new_task_with_clear_task(repository().context, OneLoginActivity::class.java)
+
+    }
+
     override fun firstReq() {
         super.firstReq()
         repository().getUserInfo()
@@ -71,4 +88,8 @@ open class MineVModel : BViewModel<MineRepository>() {
 
     }
 
+
+
+
+
 }

+ 55 - 1
app/src/main/java/com/quansu/heifengwuliu/vmodel/PersonalVerityVModel.kt

@@ -1,16 +1,25 @@
 package com.quansu.heifengwuliu.vmodel
 
+import android.app.Activity
+import android.text.TextUtils
 import androidx.databinding.Bindable
 import androidx.lifecycle.MutableLiveData
 import com.quansu.heifengwuliu.BR
+import com.quansu.heifengwuliu.activity.HomeActivity
+import com.quansu.heifengwuliu.model.LoginBean
 import com.quansu.heifengwuliu.repository.PersonalVerifyRepository
 import com.quansu.heifengwuliu.utils.ChosePhotoUtils
+import com.quansu.heifengwuliu.utils.net.NetEngine
+import com.tencent.mmkv.MMKV
 import com.ysnows.base.base.BViewModel
+import com.ysnows.base.utils.UiSwitch
 
 class PersonalVerityVModel : BViewModel<PersonalVerifyRepository>() {
 
+    //https://cdnheifengwuliu.qs110.com/idcard/xuzgomb3/android/v/mmexport1599207639412.jpg
     var imgIDMan: MutableLiveData<String> = MutableLiveData("")
     var imgIDEmblem: MutableLiveData<String> = MutableLiveData("")
+    var type:String="1"//1:身份证正面  2:身份证背面
 
 
     @Bindable
@@ -28,11 +37,56 @@ class PersonalVerityVModel : BViewModel<PersonalVerifyRepository>() {
         }
 
 
-    fun choseImg(){
+    fun choseImg(type:Int){
         //选择照片
+        this.type=type.toString()
         ChosePhotoUtils.getChosePhoto(view()!!.context(), 1)
 
     }
 
+    fun  toSubmit(){
+
+        if(TextUtils.isEmpty(imgIDMan.value)){
+            toast("请上传省份证人像面图片")
+            return
+        }
+
+        if(TextUtils.isEmpty(imgIDEmblem.value)){
+            toast("请上传国徽面图片")
+            return
+        }
+        if(TextUtils.isEmpty(name)){
+            toast("请输入姓名")
+            return
+        }
+
+        if(TextUtils.isEmpty(iDNumber)){
+            toast("请输入身份证号")
+            return
+        }
+
+        repository().lreq(NetEngine.service.setInfo(imgIDMan.value, imgIDEmblem.value,name,iDNumber))
+                .doOnNext {
+                    if (it.ok(true)) {
+                        (repository().context as Activity).finish()
+                    }
+                }
+                .subscribe()
+
+    }
+
+
+    fun getInfo(){
+        //获取个人信息
+        repository().lreq(NetEngine.service.getInfo("1"))
+                .doOnNext {
+                    if (it.ok(true)) {
+                        (repository().context as Activity).finish()
+                    }
+                }
+                .subscribe()
+
+    }
+
 
 }

+ 51 - 0
app/src/main/res/layout/activity_invoice.xml

@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools" >
+
+    <data >
+        <variable
+            name="vm"
+            type="com.quansu.heifengwuliu.vmodel.InvoiceVModel" />
+    </data >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical" >
+
+
+        <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" >
+
+            <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
+                android:id="@+id/refresh_layout"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent" >
+
+                <androidx.recyclerview.widget.RecyclerView
+                    android:id="@+id/recycler_view"
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:paddingBottom="70dp"
+                    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
+                    tools:listitem="@layout/item_invoice" />
+
+            </androidx.swiperefreshlayout.widget.SwipeRefreshLayout >
+
+            <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
+                android:id="@+id/but_sure"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/dp_40"
+                android:layout_gravity="bottom"
+                android:layout_marginStart="@dimen/dp_30"
+                android:layout_marginEnd="@dimen/dp_30"
+                android:layout_marginBottom="@dimen/dp_30"
+                android:text="@string/add_vehicle" />
+
+        </FrameLayout >
+
+    </LinearLayout >
+
+</layout >

+ 6 - 4
app/src/main/res/layout/activity_personal_verify.xml

@@ -30,12 +30,13 @@
             android:layout_width="146dp"
             android:layout_height="96dp"
             android:layout_marginTop="@dimen/dp_8"
-            android:onClick="@{v->vm.choseImg()}"
+            android:onClick="@{v->vm.choseImg(1)}"
             android:scaleType="fitXY"
+            android:src="@drawable/ic_default_image"
             app:layout_constraintStart_toStartOf="@id/tv_title"
             app:layout_constraintTop_toBottomOf="@id/tv_title"
             app:qmui_radius="1dp"
-            android:src="@{vm.imgIDMan,default=@drawable/ic_default_image}"
+            app:url="@{vm.imgIDMan}"
             />
 
         <com.qmuiteam.qmui.widget.QMUIRadiusImageView
@@ -45,9 +46,10 @@
             android:scaleType="fitXY"
             android:src="@drawable/ic_default_image"
             app:layout_constraintEnd_toEndOf="parent"
+            android:onClick="@{v->vm.choseImg(2)}"
             app:layout_constraintTop_toTopOf="@id/img_id_man"
             app:qmui_radius="1dp"
-            app:url="@{vm.imgIDEmblem}" />
+            app:url="@{vm.imgIDEmblem}"/>
 
         <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout
             android:id="@+id/lay_input"
@@ -81,7 +83,6 @@
                     android:layout_height="match_parent"
                     android:background="@color/white"
                     android:hint="@string/name_must_equal_to_id_card"
-                    android:inputType="phone"
                     android:paddingStart="@dimen/dp_18"
                     android:text="@={vm.name}"
                     android:textSize="@dimen/sp_13" />
@@ -133,6 +134,7 @@
             android:layout_marginStart="@dimen/dp_30"
             android:layout_marginEnd="@dimen/dp_30"
             android:layout_marginBottom="@dimen/dp_30"
+            android:onClick="@{v->vm.toSubmit()}"
             android:text="@string/submit"
             app:layout_constraintBottom_toBottomOf="parent" />
 

+ 26 - 2
app/src/main/res/layout/fragment_mine.xml

@@ -104,7 +104,7 @@
                         android:layout_height="26dp"
                         android:layout_marginEnd="@dimen/dp_10"
                         android:onClick="@{v->vm.goPersonalVerify()}"
-                        android:text="@string/identity_unverified"
+                        android:text="@{vm.user.isInfo()?@string/identity_certified:@string/identity_unverified,default=@string/identity_unverified}"
                         android:textColor="#459AEA"
                         android:textSize="@dimen/sp_13"
                         app:layout_constraintBottom_toTopOf="@id/btn_com_unverified"
@@ -121,7 +121,7 @@
                         android:layout_marginTop="@dimen/dp_8"
                         android:layout_marginEnd="@dimen/dp_10"
                         android:onClick="@{v->vm.user.isDriver()?vm.goVehicleVerify():vm.goComVerify()}"
-                        android:text="@{vm.user.isDriver()?@string/vehicle_unverified:@string/com_unverified}"
+                        android:text="@{vm.user.isDriver()? vm.user.isCar()? @string/vehicle_certified:@string/vehicle_unverified :vm.user.isCompany()?@string/com_certified:@string/com_unverified}"
                         android:textColor="#459AEA"
                         android:textSize="@dimen/sp_13"
                         app:layout_constraintBottom_toBottomOf="@id/img_user_avater"
@@ -194,6 +194,8 @@
                         android:layout_height="wrap_content"
                         android:layout_weight="1"
                         android:gravity="center"
+                        android:onClick="@{v->vm.goInvoice()}"
+
                         android:orientation="vertical" >
 
                         <ImageView
@@ -276,6 +278,28 @@
 
                     </LinearLayout >
 
+
+                    <View style="@style/line_mine" />
+
+                    <LinearLayout
+                        android:id="@+id/lay_sign_out"
+                        style="@style/mine_list"
+                        android:onClick="@{v->vm.goLogOut()}" >
+
+                        <ImageView
+                            style="@style/mine_img"
+                            android:src="@drawable/ic_private_settings" />
+
+                        <TextView
+                            style="@style/mine_text"
+                            android:text="退出登录" />
+
+                        <ImageView
+                            style="@style/mine_arrow_right"
+                            android:src="@drawable/mine_right" />
+
+                    </LinearLayout >
+
                     <View style="@style/line_mine" />
 
                     <LinearLayout

+ 109 - 0
app/src/main/res/layout/item_invoice.xml

@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools" >
+
+    <data >
+
+        <variable
+            name="item"
+            type="com.quansu.heifengwuliu.model.DriverBean" />
+
+    </data >
+
+    <RelativeLayout
+        android:id="@+id/rl_todo"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:paddingLeft="@dimen/dp_10"
+        android:background="#ffffff"
+        android:paddingTop="@dimen/dp_20"
+        android:paddingBottom="@dimen/dp_20"
+        android:layout_marginBottom="@dimen/dp_10"
+        android:paddingRight="@dimen/dp_10" >
+
+
+        <ImageView
+            android:id="@+id/img_check"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:padding="10dp"
+            android:layout_centerVertical="true"
+            android:src="@{item.checked==0?@drawable/select_off:@drawable/select_on}"
+            >
+
+        </ImageView>
+
+<!--        <ImageView-->
+<!--            android:id="@+id/img_check"-->
+<!--            android:layout_width="15dp"-->
+<!--            android:layout_height="15dp"-->
+<!--            android:layout_centerVertical="true"-->
+<!--            android:src="@{item.checked==0?@drawable/select_off:@drawable/select_on}"-->
+<!--             />-->
+
+        <ImageView
+            android:id="@+id/img_icon"
+            android:layout_width="50dp"
+            android:layout_height="50dp"
+            android:layout_centerVertical="true"
+            android:layout_toEndOf="@id/img_check"
+            android:padding="@dimen/dp_13"
+            android:background="@mipmap/ic_launcher"
+            app:url="@{item.avatar}"
+             />
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:layout_marginStart="@dimen/dp_8"
+            android:layout_toEndOf="@id/img_icon"
+            android:orientation="vertical" >
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal" >
+
+                <TextView
+                    android:id="@+id/tv_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:ellipsize="end"
+                    android:maxLines="1"
+                    android:text="@{item.name}"
+                    android:textColor="@{item.checked==1?@color/text_hint:@color/text_black}"
+                    android:textSize="@dimen/sp_16"
+                    tools:text="@string/app_name" />
+
+                <TextView
+                    android:id="@+id/tv_phone"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:ellipsize="end"
+                    android:maxLines="1"
+                    android:text="@{item.mobile}"
+                    android:textColor="@{item.checked==1?@color/text_hint:@color/text_black}"
+                    android:textSize="@dimen/sp_16"
+                    tools:text="@string/app_name" />
+
+            </LinearLayout >
+
+            <TextView
+                android:id="@+id/tv_desc"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/dp_2"
+                android:text="@{item.number+item.car_cate}"
+
+                android:textColor="@{item.checked==1?@color/text_hint:@color/text_black}"
+                tools:text="@string/app_name" />
+
+        </LinearLayout >
+
+
+    </RelativeLayout >
+</layout >

+ 13 - 0
app/src/main/res/values/strings.xml

@@ -422,8 +422,17 @@ Api 已达到使用限制
     <string name="topup" >充值</string >
     <string name="bill_detail" >账单明细</string >
     <string name="identity_unverified" >身份未认证</string >
+    <string name="identity_certified" >身份已认证</string >
+
+
     <string name="com_unverified" >公司未认证</string >
+
+    <string name="com_certified" >公司已认证</string >
+
     <string name="vehicle_unverified" >车辆未认证</string >
+    <string name="vehicle_certified" >车辆已认证</string >
+
+
     <string name="id_information_upload" >身份证信息上传</string >
     <string name="name_must_equal_to_id_card" >姓名需与身份证姓名一致</string >
     <string name="name" >姓名</string >
@@ -451,6 +460,10 @@ Api 已达到使用限制
     <string name="upload_pic_fail" >上传失败</string >
     <string name="uploading" >正在上传...</string >
     <string name="Requesting_please_wait" >正在请求,请稍候</string >
+    <string name="invoice" >发票</string >
+    <string name="invoice_title" >发票抬头</string >
+
+