浏览代码

风险管理4月17日提交代码-liu.bolan

Liu.bolan 4 年之前
父节点
当前提交
d737c49891
共有 15 个文件被更改,包括 1376 次插入46 次删除
  1. 4 0
      RMA/app/src/main/AndroidManifest.xml
  2. 2 2
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt
  3. 14 6
      RMA/app/src/main/java/cn/muchinfo/rma/business/account/adapter/AccountAdapter.kt
  4. 133 14
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/AccMgrLoginUserData.kt
  5. 71 2
      RMA/app/src/main/java/cn/muchinfo/rma/global/data/AccMgrTaaccountData.kt
  6. 7 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/AccountManagerActivity.kt
  7. 66 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/AccountManagerViewModel.kt
  8. 15 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/AccountManagerViewHolder.kt
  9. 86 4
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/AccountUserViewHolder.kt
  10. 484 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddLoginRoleActivity.kt
  11. 407 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddRoleActivity.kt
  12. 6 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddRoleSetActivity.kt
  13. 2 0
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/RoleLoginVIewHolder.kt
  14. 5 1
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/RoleSetViewHolder.kt
  15. 74 16
      RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/RoleSetViewModel.kt

+ 4 - 0
RMA/app/src/main/AndroidManifest.xml

@@ -236,6 +236,10 @@
 
         <activity android:name=".view.base.home.accountmanager.AccountManagerActivity"/>
 
+        <activity android:name=".view.base.home.rolemanagement.AddRoleActivity"
+            android:screenOrientation="portrait"
+            android:windowSoftInputMode="adjustPan"/>
+
     </application>
 
 </manifest>

+ 2 - 2
RMA/app/src/main/java/cn/muchinfo/rma/business/account/AccountManager.kt

@@ -774,8 +774,8 @@ class AccountManager {
         accountname : String = "",
         password : String = "",
         mobile : String = "",
-        roleids : List<Long>,
-        logintaaccounts : List<ManageServiceMI2.LoginTaaccount>,
+        roleids : List<Long> = arrayListOf(),
+        logintaaccounts : List<ManageServiceMI2.LoginTaaccount> = arrayListOf(),
         callback: (isCompleted: Boolean, err: Error?) -> Unit
     ){
         val tradeSocketManager = MyApplication.getInstance()?.tradeSocketManager.guard {

+ 14 - 6
RMA/app/src/main/java/cn/muchinfo/rma/business/account/adapter/AccountAdapter.kt

@@ -584,8 +584,8 @@ class AccountAdapter {
             accountname : String = "",
             password : String = "",
             mobile : String = "",
-            roleids : List<Long>,
-            logintaaccounts : List<ManageServiceMI2.LoginTaaccount>
+            roleids : List<Long> = arrayListOf(),
+            logintaaccounts : List<ManageServiceMI2.LoginTaaccount> = arrayListOf()
         ) : Packet50{
             val builder = ManageServiceMI2.LoginaccountOperateReq.newBuilder()
             val loginInfo = GlobalDataCollection.instance?.loginRsp!!
@@ -602,8 +602,12 @@ class AccountAdapter {
             builder.modifierid = loginInfo.loginID
             builder.areauserid = loginInfo.userID.toLong()
             builder.operatetype = operatetype
-            builder.userid = userid
-            builder.loginid =loginid
+            if (userid != 0L){
+                builder.userid = userid
+            }
+            if (loginid != 0L){
+                builder.loginid =loginid
+            }
             if (logincode.isNotEmpty()){
                 builder.logincode = logincode
             }
@@ -616,8 +620,12 @@ class AccountAdapter {
             if (mobile.isNotEmpty()){
                 builder.mobile = mobile
             }
-            builder.addAllRoleids(roleids)
-            builder.addAllLogintaaccounts(logintaaccounts)
+            if (roleids.isNotEmpty()){
+                builder.addAllRoleids(roleids)
+            }
+            if (logintaaccounts.isNotEmpty()){
+                builder.addAllLogintaaccounts(logintaaccounts)
+            }
 
             val arrayOutputStream = ByteArrayOutputStream()
             builder.build().writeTo(arrayOutputStream)

+ 133 - 14
RMA/app/src/main/java/cn/muchinfo/rma/global/data/AccMgrLoginUserData.kt

@@ -1,5 +1,9 @@
 package cn.muchinfo.rma.global.data
 
+import android.os.Parcel
+import android.os.Parcelable
+import mtp.polymer.com.autowidget.dialog.SelectData
+
 /**
  * 账户管理登录账号(账户管理/登录账号)
  */
@@ -7,20 +11,135 @@ data class AccMgrLoginUserData(
     val rolename : String? = "",//角色名称
     val userlist : List<Userlist>? = arrayListOf(),//用户列表
     val usertype : String? = "",//用户类型 2-机构 7-企业成员(云平台)
-    var isSelect : Int = 0//是否展开
-)
+    var isSelect : Int = 0, //是否展开
+    val roleid : String? = ""//角色id
+): Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.createTypedArrayList(Userlist),
+        parcel.readString(),
+        parcel.readInt(),
+        parcel.readString()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(rolename)
+        parcel.writeTypedList(userlist)
+        parcel.writeString(usertype)
+        parcel.writeInt(isSelect)
+        parcel.writeString(roleid)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<AccMgrLoginUserData> {
+        override fun createFromParcel(parcel: Parcel): AccMgrLoginUserData {
+            return AccMgrLoginUserData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<AccMgrLoginUserData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}
 
 data class Userlist(
-    val accountname : String = "",//用户名称
-    val clientroleid : String = "",//角色id(usertype=2)
-    val createtime : String = "",//创建时间
-    val loginstatus : String = "",//登录账户状态 - 1:正常 2:冻结 3:无效
-    val memberuserid : String = "",//所属会员id
-    val modifytime : String = "",//修改时间
-    val rolename : String = "",//角色名称
-    val rolestatus : String = "",//角色状态 1-启用 2-停用
-    val roletype : String = "",//角色类型(逗号隔开,如22,23), 22:业务员 23:跟单员 24:交易员
-    val userid : String = "",//用户id
-    val usertype : String = "",//用户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
+    val accountname: String? = "",//用户名称
+    val clientroleid: String? = "",//角色id(usertype=2)
+    val createtime: String? = "",//创建时间
+    val loginstatus: String? = "",//登录账户状态 - 1:正常 2:冻结 3:无效
+    val memberuserid: String? = "",//所属会员id
+    val modifytime: String? = "",//修改时间
+    val rolename: String? = "",//角色名称
+    val rolestatus: String? = "",//角色状态 1-启用 2-停用
+    val loginid : String? = "",//登录id(LOGINID)
+    val roletype: String? = "",//角色类型(逗号隔开,如22,23), 22:业务员 23:跟单员 24:交易员
+    val userid: String? = "",//用户id
+    val usertype: String? = "",//用户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
     var isSelect: Int = 0//是否点击展开
-)
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readInt()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(accountname)
+        parcel.writeString(clientroleid)
+        parcel.writeString(createtime)
+        parcel.writeString(loginstatus)
+        parcel.writeString(memberuserid)
+        parcel.writeString(modifytime)
+        parcel.writeString(rolename)
+        parcel.writeString(rolestatus)
+        parcel.writeString(loginid)
+        parcel.writeString(roletype)
+        parcel.writeString(userid)
+        parcel.writeString(usertype)
+        parcel.writeInt(isSelect)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<Userlist> {
+        override fun createFromParcel(parcel: Parcel): Userlist {
+            return Userlist(parcel)
+        }
+
+        override fun newArray(size: Int): Array<Userlist?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}
+
+
+/**
+ * 用于新增角色时的role的类型的传递
+ */
+data class RoleTypeData(
+    val id : String? = "",
+    var selectDataList : List<SelectData>? = arrayListOf()
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        TODO("selectDataList")
+    )
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(id)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<RoleTypeData> {
+        override fun createFromParcel(parcel: Parcel): RoleTypeData {
+            return RoleTypeData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<RoleTypeData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

+ 71 - 2
RMA/app/src/main/java/cn/muchinfo/rma/global/data/AccMgrTaaccountData.kt

@@ -1,5 +1,8 @@
 package cn.muchinfo.rma.global.data
 
+import android.os.Parcel
+import android.os.Parcelable
+
 /**
  * 账户管理期货账号(账户管理/期货账号)
  */
@@ -7,7 +10,35 @@ data class AccMgrTaaccountData(
     val mainAcc : AccMgrTaaccountSonData? = AccMgrTaaccountSonData(),
     val subacclist : List<AccMgrTaaccountSonData>? = arrayListOf(),//子账户列表
     var isSelect : Int = 0//是否点击展开
-)
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readParcelable(AccMgrTaaccountSonData::class.java.classLoader),
+        parcel.createTypedArrayList(AccMgrTaaccountSonData),
+        parcel.readInt()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeParcelable(mainAcc, flags)
+        parcel.writeTypedList(subacclist)
+        parcel.writeInt(isSelect)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<AccMgrTaaccountData> {
+        override fun createFromParcel(parcel: Parcel): AccMgrTaaccountData {
+            return AccMgrTaaccountData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<AccMgrTaaccountData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}
 
 data class AccMgrTaaccountSonData(
     val accountid : String? = "",//账户id
@@ -18,4 +49,42 @@ data class AccMgrTaaccountSonData(
     val relateduserid : String? = "",//关联userid
     val tradestatus : String? = "",//交易状态 - 1:正常 2:受限 3:冻结 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已注销
     var isSelect: Int = 0//是否点击展开
-)
+) : Parcelable{
+    constructor(parcel: Parcel) : this(
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readString(),
+        parcel.readInt()
+    ) {
+    }
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(accountid)
+        parcel.writeString(accountname)
+        parcel.writeString(currencyid)
+        parcel.writeString(ismain)
+        parcel.writeString(parentaccountid)
+        parcel.writeString(relateduserid)
+        parcel.writeString(tradestatus)
+        parcel.writeInt(isSelect)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<AccMgrTaaccountSonData> {
+        override fun createFromParcel(parcel: Parcel): AccMgrTaaccountSonData {
+            return AccMgrTaaccountSonData(parcel)
+        }
+
+        override fun newArray(size: Int): Array<AccMgrTaaccountSonData?> {
+            return arrayOfNulls(size)
+        }
+    }
+
+}

+ 7 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/AccountManagerActivity.kt

@@ -27,6 +27,8 @@ import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
 import com.qmuiteam.qmui.widget.tab.QMUITabSegment
 import com.sfit.ctp.info.DeviceInfoManager
 import mtp.polymer.com.autowidget.adapter.BaseAdapter
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
 import org.jetbrains.anko.*
 import org.jetbrains.anko.support.v4.viewPager
 
@@ -55,6 +57,8 @@ class AccountManagerActivity : BaseActivity<AccountManagerViewModel>(){
      */
     private val futuresAccountManager by lazy { FuturesAccountManager(this,viewModel) }
 
+    val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
+
     private val pagerAdapter: PagerAdapter by lazy {
         object : PagerAdapter() {
 
@@ -97,6 +101,7 @@ class AccountManagerActivity : BaseActivity<AccountManagerViewModel>(){
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         verticalLayout {
+            dialog.bindTaskStatus(context, viewModel.loadingDialogStatus)
             topBar {
                 commonLeftButton()
                 commonTitle {
@@ -163,10 +168,11 @@ class LoginAccountManager(
     private lateinit var swipeToLayout: SwipeToLoadLayout
     private lateinit var statusLayout: StatusLayout
 
-    //期货合约
+    //登录账户的adapter
     private val accountManagerAdapter: BaseAdapter<AccMgrLoginUserData, AccountManagerViewHolder> =
         BaseAdapter { _, _ -> AccountManagerViewHolder(activity, viewModel) }
 
+    //登录账户是否可选择
     val isClickSelect : MutableLiveData<Int> = MutableLiveData<Int>().apply { value = 1 }
 
     init {

+ 66 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/AccountManagerViewModel.kt

@@ -3,12 +3,22 @@ package cn.muchinfo.rma.view.base.home.accountmanager
 import androidx.lifecycle.MutableLiveData
 import cn.muchinfo.rma.global.GlobalDataCollection
 import cn.muchinfo.rma.global.data.*
+import cn.muchinfo.rma.netManage.base.InteractiveException
+import cn.muchinfo.rma.protobuf.protoclasses.ManageServiceMI2
 import cn.muchinfo.rma.view.MyApplication
 import cn.muchinfo.rma.view.base.BaseViewModel
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
+import mtp.polymer.com.autowidget.utils.TaskUiModel
 
 class AccountManagerViewModel : BaseViewModel(){
 
     /**
+     * 加载状态控制
+     */
+    val loadingDialogStatus: MutableLiveData<TaskUiModel> = MutableLiveData()
+
+    /**
      * 登录账号列表
      */
     val accountManagerList : MutableLiveData<List<AccMgrLoginUserData>> = MutableLiveData()
@@ -52,6 +62,20 @@ class AccountManagerViewModel : BaseViewModel(){
     }
 
     /**
+     * 新增角色时传递值
+     * @return List<AccMgrLoginUserData>
+     */
+    fun getPassRoleList() : List<AccMgrLoginUserData>{
+        val newDataList = arrayListOf<AccMgrLoginUserData>()
+        accountManagerList.value?.forEach {
+            if (it.usertype == "2"){
+                newDataList.add(it)
+            }
+        }
+        return newDataList
+    }
+
+    /**
      * 更新hoefragment的account
      */
     fun initAccountData(){
@@ -156,4 +180,46 @@ class AccountManagerViewModel : BaseViewModel(){
     }
 
 
+    /**
+     * 登录账户操作请求报文装箱
+     * @param operatetype Int 操作类型-1:新增 2:修改 3:新增管理员 4:修改管理员 5:锁定 6:解锁 7:注销 8:恢复 9:重置密码
+     * @param userid Long 用户ID(新增成功接口返回的userid)
+     * @param loginid Long 登录ID(新增成功接口返回的loginid)
+     * @param logincode String 登录账号
+     * @param accountname String 账户名称
+     * @param password String 登录密码(明文)
+     * @param mobile String 手机号码(明文)
+     * @param roleids List<Long> 账号角色
+     * @param logintaaccounts List<LoginTaaccount> 期货账户(勾选交易员必填)
+     * @return Packet50
+     */
+    fun LoginaccountOperateReq(
+        operatetype : Int,
+        userid : Long = 0,
+        loginid : Long = 0,
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.accountManager?.LoginaccountOperateReq(
+                operatetype = operatetype,
+                userid = userid,
+                loginid = loginid
+            ){ isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
 }

+ 15 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/AccountManagerViewHolder.kt

@@ -1,5 +1,7 @@
 package cn.muchinfo.rma.view.base.home.accountmanager.accountviewholder
 
+import android.content.Intent
+import android.os.Parcelable
 import android.view.Gravity
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
@@ -12,9 +14,12 @@ import cn.muchinfo.rma.view.base.future.trade.itemView
 import cn.muchinfo.rma.view.base.home.accountmanager.AccountManagerViewModel
 import cn.muchinfo.rma.view.base.home.commodity.newcommodity.newhedge.HedgeFutureContractViewHolder
 import cn.muchinfo.rma.view.base.home.contract.emptyView
+import cn.muchinfo.rma.view.base.home.rolemanagement.AddRoleActivity
+import com.blankj.utilcode.util.ActivityUtils
 import mtp.polymer.com.autowidget.adapter.BaseAdapter
 import mtp.polymer.com.autowidget.adapter.BaseViewHolder
 import org.jetbrains.anko.*
+import java.io.Serializable
 
 /**
  * 账户管理/登录账号viewholder
@@ -58,7 +63,17 @@ class AccountManagerViewHolder(
 
                 imageView {
                     onThrottleFirstClick {
+                        if (data.value?.usertype == "2"){// usertype 2-机构 7-企业成员(云平台
+                            val intent = Intent()
+                            intent.putExtra("type","1")
+                            intent.putExtra("data",data.value)
+                            intent.putExtra("data1",AccMgrLoginUserData())
+                            intent.putExtra("seletType", viewModel.getPassRoleList() as Serializable)
+                            intent.setClass(context,AddRoleActivity::class.java)
+                            ActivityUtils.startActivity(intent)
+                        }else{
 
+                        }
                     }
                     imageResource = R.mipmap.rma_account_add
                 }.lparams(autoSize(43), autoSize(43)){

+ 86 - 4
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/accountmanager/accountviewholder/AccountUserViewHolder.kt

@@ -1,10 +1,12 @@
 package cn.muchinfo.rma.view.base.home.accountmanager.accountviewholder
 
 
+import android.content.Intent
 import android.view.Gravity
 import android.view.View
 import androidx.appcompat.app.AppCompatActivity
 import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.data.AccMgrLoginUserData
 import cn.muchinfo.rma.global.data.Userlist
 import cn.muchinfo.rma.global.loginstatus
 import cn.muchinfo.rma.lifecycle.bindOptional
@@ -14,8 +16,11 @@ import cn.muchinfo.rma.view.autoWidget.textColorInt
 import cn.muchinfo.rma.view.autoWidget.textSizeAuto
 import cn.muchinfo.rma.view.base.home.accountmanager.AccountManagerViewModel
 import cn.muchinfo.rma.view.base.home.contract.emptyView
+import cn.muchinfo.rma.view.base.home.rolemanagement.AddRoleActivity
+import com.blankj.utilcode.util.ActivityUtils
 import mtp.polymer.com.autowidget.adapter.BaseViewHolder
 import org.jetbrains.anko.*
+import java.io.Serializable
 
 /**
  * 账户管理-登录账号的子item
@@ -89,7 +94,13 @@ class AccountUserViewHolder(
                 emptyView()
                 textView {
                     onThrottleFirstClick {
-
+                        val intent = Intent()
+                        intent.putExtra("data1",data.value)
+                        intent.putExtra("data", AccMgrLoginUserData())
+                        intent.putExtra("seletType", arrayListOf<AccMgrLoginUserData>() as Serializable)
+                        intent.putExtra("type","2")
+                        intent.setClass(context,AddRoleActivity::class.java)
+                        ActivityUtils.startActivity(intent)
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
@@ -101,8 +112,21 @@ class AccountUserViewHolder(
                 }
 
                 textView {
+                    data.bindOptional(context){
+                        if (it?.loginstatus == "1"){
+                            visibility = View.VISIBLE
+                        }else{
+                            visibility = View.GONE
+                        }
+                    }
                     onThrottleFirstClick {
-
+                        val intent = Intent()
+                        intent.putExtra("data1",data.value)
+                        intent.putExtra("data", AccMgrLoginUserData())
+                        intent.putExtra("seletType", arrayListOf<AccMgrLoginUserData>() as Serializable)
+                        intent.putExtra("type","3")
+                        intent.setClass(context,AddRoleActivity::class.java)
+                        ActivityUtils.startActivity(intent)
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
@@ -114,6 +138,13 @@ class AccountUserViewHolder(
                 }
 
                 textView {
+                    data.bindOptional(context){
+                        if (it?.loginstatus == "1"){
+                            visibility = View.VISIBLE
+                        }else{
+                            visibility = View.GONE
+                        }
+                    }
                     onThrottleFirstClick {
 
                     }
@@ -127,8 +158,21 @@ class AccountUserViewHolder(
                 }
 
                 textView {
+                    data.bindOptional(context){
+                        if (it?.loginstatus == "1"){
+                            visibility = View.VISIBLE
+                        }else{
+                            visibility = View.GONE
+                        }
+                    }
                     onThrottleFirstClick {
-
+                        viewModel.LoginaccountOperateReq(
+                            operatetype = 5,
+                            userid = data.value?.userid?.toLong() ?: 0,
+                            loginid = data.value?.loginid?.toLong() ?: 0
+                        ){
+                            viewModel.queryAccMgrLoginUser()
+                        }
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
@@ -140,8 +184,21 @@ class AccountUserViewHolder(
                 }
 
                 textView {
+                    data.bindOptional(context){
+                        if (it?.loginstatus == "1"){
+                            visibility = View.VISIBLE
+                        }else{
+                            visibility = View.GONE
+                        }
+                    }
                     onThrottleFirstClick {
-
+                        viewModel.LoginaccountOperateReq(
+                            operatetype = 7,
+                            userid = data.value?.userid?.toLong() ?: 0,
+                            loginid = data.value?.loginid?.toLong() ?: 0
+                        ){
+                            viewModel.queryAccMgrLoginUser()
+                        }
                     }
                     backgroundResource = R.drawable.rma_item_click_bg
                     gravity = Gravity.CENTER
@@ -151,6 +208,31 @@ class AccountUserViewHolder(
                 }.lparams(autoSize(110), autoSize(48)) {
                     marginEnd = autoSize(24)
                 }
+                textView {
+                    data.bindOptional(context){
+                        if (it?.loginstatus == "2"){
+                            visibility = View.VISIBLE
+                        }else{
+                            visibility = View.GONE
+                        }
+                    }
+                    onThrottleFirstClick {
+                        viewModel.LoginaccountOperateReq(
+                            operatetype = 6,
+                            userid = data.value?.userid?.toLong() ?: 0,
+                            loginid = data.value?.loginid?.toLong() ?: 0
+                        ){
+                            viewModel.queryAccMgrLoginUser()
+                        }
+                    }
+                    backgroundResource = R.drawable.rma_item_click_bg
+                    gravity = Gravity.CENTER
+                    text = "解锁"
+                    textColorInt = R.color.rma_item_click_color
+                    textSizeAuto = 26
+                }.lparams(autoSize(110), autoSize(48)) {
+                    marginEnd = autoSize(24)
+                }
 
             }.lparams(matchParent, autoSize(72))
         }.lparams(matchParent, wrapContent) {

+ 484 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddLoginRoleActivity.kt

@@ -0,0 +1,484 @@
+package cn.muchinfo.rma.view.base.home.rolemanagement
+
+import android.os.Bundle
+import android.view.Gravity
+import android.view.View
+import android.view.inputmethod.EditorInfo
+import android.widget.EditText
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.MTPEnums
+import cn.muchinfo.rma.global.data.AccMgrLoginUserData
+import cn.muchinfo.rma.global.data.Userlist
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.future.trade.itemView
+import cn.muchinfo.rma.view.base.home.contract.emptyView
+import com.blankj.utilcode.util.ToastUtils
+import mtp.polymer.com.autowidget.dialog.SelectData
+import mtp.polymer.com.autowidget.dialog.creatBottomSheetDialog
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
+import org.jetbrains.anko.*
+
+/**
+ * 账户管理进入的新增登录账户
+ * @property dialog Dialog
+ */
+class AddLoginRoleActivity : BaseActivity<RoleSetViewModel>() {
+
+    val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
+
+    /**
+     * 1 新增 2 详情 3 修改 4 锁定 5 注销
+     */
+    val type by lazy { intent.getSerializableExtra("type") }
+
+    /**
+     * 传入的可供选择的账户角色类型
+     */
+    val seletType by lazy { intent.getSerializableExtra("seletType") as List<AccMgrLoginUserData> }
+
+    /**
+     * 当前选择操作的账户角色类型
+     */
+    val data by lazy { intent.getParcelableExtra<AccMgrLoginUserData>("data") as AccMgrLoginUserData }
+
+    /**
+     * 当页面是详情 修改 锁定 注销时的数据回填用
+     */
+    val data1 by lazy { intent.getParcelableExtra<Userlist>("data1") as Userlist }
+
+    /**
+     * 输入的登录账户
+     */
+    lateinit var login_account: EditText
+
+    /**
+     * 输入的账户名称
+     */
+    lateinit var account_name: EditText
+
+    /**
+     * 输入的登录密码
+     */
+    lateinit var login_password: EditText
+
+    /**
+     * 手机号码
+     */
+    lateinit var phone_number: EditText
+
+    /**
+     * 选择的账户角色
+     */
+    val roleTypeSelectData: MutableLiveData<SelectData> = MutableLiveData()
+
+    /**
+     * 页面数据的初始化
+     */
+    fun init() {
+        roleTypeSelectData.postValue(
+            SelectData(
+                id = data.roleid ?: "",
+                value = data.rolename ?: ""
+            )
+        )
+    }
+
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        verticalLayout {
+            init()
+            dialog.bindTaskStatus(context, viewModel.loadingDialogStatus)
+            background = resources.getDrawable(R.color.main_hit_bg_color)
+            //页面标题
+            topBar {
+                commonLeftButton()
+                commonTitle {
+                    if (type == "1") {
+                        text = "新增角色"
+                    } else if (type == "2") {
+                        text = "角色详情"
+                    } else if (type == "3") {
+                        text = "修改"
+                    } else if (type == "4") {
+                        text = "锁定"
+                    } else if (type == "5") {
+                        text = "注销"
+                    }
+                }
+            }
+
+            frameLayout {
+                nestedScrollView {
+                    verticalLayout {
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            gravity = Gravity.CENTER_VERTICAL
+
+                            textView {
+                                visibility = View.INVISIBLE
+                                text = "*"
+                                textColorInt = R.color.rma_star_color
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(37)
+                            }
+                            textView {
+                                text = "登录账号"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(10)
+                            }
+
+                            editText {
+                                isEnabled = type == "1" || type == "3"
+                                if (type != "1") {
+                                    setText(data1.rolename)
+                                }
+                                login_account = this
+                                hint = "请输入登录账号"
+                                background = null
+                                inputType = EditorInfo.TYPE_CLASS_TEXT
+//                    setDecimalInputType()
+                                hintColorStr = "#CCCCCC"
+                                textSizeAuto = 31
+                                textColorStr = "#333333"
+                            }.lparams(matchParent, autoSize(132)) {
+                                marginStart = autoSize(80)
+                            }
+                        }.lparams(matchParent, autoSize(132))
+
+                        itemView()
+
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            gravity = Gravity.CENTER_VERTICAL
+
+                            textView {
+                                visibility = View.INVISIBLE
+                                text = "*"
+                                textColorInt = R.color.rma_star_color
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(37)
+                            }
+                            textView {
+                                text = "账户名称"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(10)
+                            }
+
+                            editText {
+                                account_name = this
+                                isEnabled = type == "1" || type == "3"
+                                if (type != "1") {
+                                    setText(data1.accountname)
+                                }
+                                hint = "请输入账户名称"
+                                background = null
+                                inputType = EditorInfo.TYPE_CLASS_TEXT
+//                    setDecimalInputType()
+                                hintColorStr = "#CCCCCC"
+                                textSizeAuto = 31
+                                textColorStr = "#333333"
+                            }.lparams(matchParent, autoSize(132)) {
+                                marginStart = autoSize(80)
+                            }
+                        }.lparams(matchParent, autoSize(132))
+
+                        itemView()
+
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            gravity = Gravity.CENTER_VERTICAL
+
+                            textView {
+                                visibility = View.INVISIBLE
+                                text = "*"
+                                textColorInt = R.color.rma_star_color
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(37)
+                            }
+                            textView {
+                                text = "登录密码"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(10)
+                            }
+
+                            editText {
+                                login_password = this
+                                isEnabled = type == "1" || type == "3"
+                                if (type != "1") {
+                                    setText("********")
+                                }
+                                hint = "请输入登录密码"
+                                background = null
+                                inputType = EditorInfo.TYPE_CLASS_TEXT
+//                    setDecimalInputType()
+                                hintColorStr = "#CCCCCC"
+                                textSizeAuto = 31
+                                textColorStr = "#333333"
+                            }.lparams(matchParent, autoSize(132)) {
+                                marginStart = autoSize(80)
+                            }
+
+
+                        }.lparams(matchParent, autoSize(132))
+
+                        itemView()
+
+
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            gravity = Gravity.CENTER_VERTICAL
+
+                            textView {
+                                visibility = View.INVISIBLE
+                                text = "*"
+                                textColorInt = R.color.rma_star_color
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(37)
+                            }
+                            textView {
+                                text = "手机号码"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(10)
+                            }
+
+                            editText {
+                                phone_number = this
+                                isEnabled = type == "1" || type == "3"
+                                if (type != "1") {
+                                    setText("")
+                                }
+                                hint = "非必填,用于找回密码"
+                                background = null
+                                inputType = EditorInfo.TYPE_CLASS_PHONE
+//                    setDecimalInputType()
+                                hintColorStr = "#CCCCCC"
+                                textSizeAuto = 31
+                                textColorStr = "#333333"
+                            }.lparams(matchParent, autoSize(132)) {
+                                marginStart = autoSize(80)
+                            }
+
+
+                        }.lparams(matchParent, autoSize(132))
+
+                        itemView()
+
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            gravity = Gravity.CENTER_VERTICAL
+                            onThrottleFirstClick {
+                                creatBottomSheetDialog("请选择合同类型", getSelectDataList()) {
+                                    roleTypeSelectData.postValue(this)
+                                }
+                            }
+                            textView {
+                                visibility = View.INVISIBLE
+                                text = "*"
+                                textColorInt = R.color.rma_star_color
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(37)
+                            }
+
+                            textView {
+                                text = "账户角色"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(10)
+                            }
+
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                imageView {
+                                    imageResource = R.mipmap.rma_select_click
+                                }.lparams(autoSize(25), autoSize(25)) {
+                                    marginStart = autoSize(20)
+                                }
+
+                                textView {
+                                    textSizeAuto = 31
+                                    text = "业务员"
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(10)
+                                    marginEnd = autoSize(20)
+                                }
+                            }.lparams(wrapContent, autoSize(132))
+
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                imageView {
+                                    imageResource = R.mipmap.rma_select_click
+                                }.lparams(autoSize(25), autoSize(25)) {
+                                    marginStart = autoSize(20)
+                                }
+
+                                textView {
+                                    textSizeAuto = 31
+                                    text = "跟单员"
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(10)
+                                    marginEnd = autoSize(20)
+                                }
+                            }.lparams(wrapContent, autoSize(132))
+
+                            linearLayout {
+                                gravity = Gravity.CENTER_VERTICAL
+                                imageView {
+                                    imageResource = R.mipmap.rma_select_click
+                                }.lparams(autoSize(25), autoSize(25)) {
+                                    marginStart = autoSize(20)
+                                }
+
+                                textView {
+                                    textSizeAuto = 31
+                                    text = "交易员"
+                                }.lparams(wrapContent, wrapContent) {
+                                    marginStart = autoSize(10)
+                                    marginEnd = autoSize(20)
+                                }
+                            }.lparams(wrapContent, autoSize(132))
+
+                        }.lparams(matchParent, autoSize(132))
+
+                        linearLayout {
+                            background = resources.getDrawable(R.color.white)
+                            gravity = Gravity.CENTER_VERTICAL
+
+                            textView {
+                                visibility = View.INVISIBLE
+                                text = "*"
+                                textColorInt = R.color.rma_star_color
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(37)
+                            }
+                            textView {
+                                text = "授权期货账户"
+                                textSizeAuto = 31
+                                textColorInt = R.color.rma_black_33
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(10)
+                            }
+
+                            textView {
+                                text = "请勾选期货账户"
+                                textColorInt = R.color.rma_yellow_text_color
+                                textSizeAuto = 31
+                            }.lparams(wrapContent, wrapContent) {
+                                marginStart = autoSize(40)
+                            }
+                        }.lparams(matchParent, autoSize(132))
+                        recyclerView {
+                            background = resources.getDrawable(R.color.add_role_bg_color)
+//                            adapter = addRoleAdapter
+                            isNestedScrollingEnabled = false
+                        }.lparams(matchParent, wrapContent){
+                            bottomMargin = autoSize(200)
+                        }
+                    }
+                }
+                linearLayout {
+                    background = resources.getDrawable(R.color.white)
+                    gravity = Gravity.CENTER_VERTICAL
+
+
+                    textView {
+                        onThrottleFirstClick {
+                            if (check().not()) {
+                                return@onThrottleFirstClick
+                            }
+                            if (type == "1") {// 1 新增 2 详情 3 修改 4 锁定 5 注销
+                                viewModel.LoginaccountOperateReq(
+                                    operatetype = 3,
+                                    logincode = login_account.text.toString(),
+                                    accountname = account_name.text.toString(),
+                                    password = login_password.text.toString(),
+                                    mobile = phone_number.text.toString(),
+                                    roleids = arrayListOf(
+                                        roleTypeSelectData.value?.id?.toLong() ?: 0
+                                    )
+                                ) {
+                                    finish()
+                                }
+                            } else if (type == "3") {//修改
+                                viewModel.LoginaccountOperateReq(
+                                    operatetype = 4,
+                                    logincode = login_account.text.toString(),
+                                    accountname = account_name.text.toString(),
+                                    password = login_password.text.toString(),
+                                    mobile = phone_number.text.toString(),
+                                    roleids = arrayListOf(
+                                        roleTypeSelectData.value?.id?.toLong() ?: 0
+                                    )
+                                ) {
+                                    finish()
+                                }
+                            }
+                        }
+                        gravity = Gravity.CENTER
+                        backgroundResource = R.mipmap.rma_submit_bg
+                        text = "完成"
+                        textColorInt = R.color.white
+                        textSizeAuto = 38
+                    }.lparams(matchParent, autoSize(119)) {
+                        marginStart = autoSize(60)
+                        marginEnd = autoSize(60)
+                    }
+                }.lparams(matchParent, autoSize(144)) {
+                    gravity = Gravity.BOTTOM
+                }
+
+            }.lparams(matchParent, matchParent)
+        }
+    }
+
+    /**
+     * 可选择的账户角色
+     */
+    fun getSelectDataList(): List<SelectData> {
+        val selectList = arrayListOf<SelectData>()
+        seletType.forEach {
+            selectList.add(SelectData(id = it.roleid ?: "", value = it.rolename ?: ""))
+        }
+        return selectList
+    }
+
+    /**
+     * 操作前的数据效验
+     * @return Boolean
+     */
+    fun check(): Boolean {
+        if (login_account.text.toString().isNullOrEmpty()) {
+            ToastUtils.showLong("请输入登录账号")
+            return false
+        }
+        if (account_name.text.toString().isNullOrEmpty()) {
+            ToastUtils.showLong("请输入账户名称")
+            return false
+        }
+        if (login_password.text.toString().isNullOrEmpty()) {
+            ToastUtils.showLong("请输入登录密码")
+            return false
+        }
+        return true
+    }
+
+}

+ 407 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddRoleActivity.kt

@@ -0,0 +1,407 @@
+package cn.muchinfo.rma.view.base.home.rolemanagement
+
+import android.os.Bundle
+import android.view.Gravity
+import android.view.View
+import android.view.inputmethod.EditorInfo
+import android.widget.EditText
+import androidx.lifecycle.MutableLiveData
+import cn.muchinfo.rma.R
+import cn.muchinfo.rma.global.MTPEnums
+import cn.muchinfo.rma.global.data.AccMgrLoginUserData
+import cn.muchinfo.rma.global.data.Userlist
+import cn.muchinfo.rma.lifecycle.bindOptional
+import cn.muchinfo.rma.view.autoWidget.*
+import cn.muchinfo.rma.view.base.BaseActivity
+import cn.muchinfo.rma.view.base.future.trade.itemView
+import cn.muchinfo.rma.view.base.home.contract.emptyView
+import com.blankj.utilcode.util.ToastUtils
+import mtp.polymer.com.autowidget.dialog.SelectData
+import mtp.polymer.com.autowidget.dialog.creatBottomSheetDialog
+import mtp.polymer.com.autowidget.dialog.createLoadingDialog
+import mtp.polymer.com.autowidget.utils.bindTaskStatus
+import org.jetbrains.anko.*
+
+/**
+ * 账户管理进入的新增角色
+ * @property dialog Dialog
+ */
+class AddRoleActivity : BaseActivity<RoleSetViewModel>() {
+
+    val dialog by lazy { createLoadingDialog(hintStr = "请求中...") }
+
+    /**
+     * 1 新增 2 详情 3 修改 4 锁定 5 注销
+     */
+    val type by lazy { intent.getSerializableExtra("type") }
+
+    /**
+     * 传入的可供选择的账户角色类型
+     */
+    val seletType by lazy { intent.getSerializableExtra("seletType") as List<AccMgrLoginUserData> }
+
+    /**
+     * 当前选择操作的账户角色类型
+     */
+    val data by lazy { intent.getParcelableExtra<AccMgrLoginUserData>("data") as AccMgrLoginUserData }
+
+    /**
+     * 当页面是详情 修改 锁定 注销时的数据回填用
+     */
+    val data1 by lazy { intent.getParcelableExtra<Userlist>("data1")  as Userlist}
+
+    /**
+     * 输入的登录账户
+     */
+    lateinit var login_account: EditText
+
+    /**
+     * 输入的账户名称
+     */
+    lateinit var account_name: EditText
+
+    /**
+     * 输入的登录密码
+     */
+    lateinit var login_password: EditText
+
+    /**
+     * 手机号码
+     */
+    lateinit var phone_number: EditText
+
+    /**
+     * 选择的账户角色
+     */
+    val roleTypeSelectData: MutableLiveData<SelectData> = MutableLiveData()
+
+    /**
+     * 页面数据的初始化
+     */
+    fun init() {
+        roleTypeSelectData.postValue(
+            SelectData(
+                id = data.roleid ?: "",
+                value = data.rolename ?: ""
+            )
+        )
+    }
+
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        verticalLayout {
+            init()
+            dialog.bindTaskStatus(context, viewModel.loadingDialogStatus)
+            background = resources.getDrawable(R.color.main_hit_bg_color)
+            //页面标题
+            topBar {
+                commonLeftButton()
+                commonTitle {
+                    if (type == "1"){
+                        text = "新增角色"
+                    }else if (type == "2"){
+                        text = "角色详情"
+                    }else if (type == "3"){
+                        text = "修改"
+                    }else if (type == "4"){
+                        text = "锁定"
+                    }else if (type == "5"){
+                        text = "注销"
+                    }
+                }
+            }
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+
+                textView {
+                    visibility = View.INVISIBLE
+                    text = "*"
+                    textColorInt = R.color.rma_star_color
+                    textSizeAuto = 31
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(37)
+                }
+                textView {
+                    text = "登录账号"
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(10)
+                }
+
+                editText {
+                    isEnabled = type == "1" || type == "3"
+                    if (type != "1"){
+                        setText(data1.rolename)
+                    }
+                    login_account = this
+                    hint = "请输入登录账号"
+                    background = null
+                    inputType = EditorInfo.TYPE_CLASS_TEXT
+//                    setDecimalInputType()
+                    hintColorStr = "#CCCCCC"
+                    textSizeAuto = 31
+                    textColorStr = "#333333"
+                }.lparams(matchParent, autoSize(132)) {
+                    marginStart = autoSize(80)
+                }
+            }.lparams(matchParent, autoSize(132))
+
+            itemView()
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+
+                textView {
+                    visibility = View.INVISIBLE
+                    text = "*"
+                    textColorInt = R.color.rma_star_color
+                    textSizeAuto = 31
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(37)
+                }
+                textView {
+                    text = "账户名称"
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(10)
+                }
+
+                editText {
+                    account_name = this
+                    isEnabled = type == "1" || type == "3"
+                    if (type != "1"){
+                        setText(data1.accountname)
+                    }
+                    hint = "请输入账户名称"
+                    background = null
+                    inputType = EditorInfo.TYPE_CLASS_TEXT
+//                    setDecimalInputType()
+                    hintColorStr = "#CCCCCC"
+                    textSizeAuto = 31
+                    textColorStr = "#333333"
+                }.lparams(matchParent, autoSize(132)) {
+                    marginStart = autoSize(80)
+                }
+            }.lparams(matchParent, autoSize(132))
+
+            itemView()
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+
+                textView {
+                    visibility = View.INVISIBLE
+                    text = "*"
+                    textColorInt = R.color.rma_star_color
+                    textSizeAuto = 31
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(37)
+                }
+                textView {
+                    text = "登录密码"
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(10)
+                }
+
+                editText {
+                    login_password = this
+                    isEnabled = type == "1" || type == "3"
+                    if (type != "1"){
+                        setText("********")
+                    }
+                    hint = "请输入登录密码"
+                    background = null
+                    inputType = EditorInfo.TYPE_CLASS_TEXT
+//                    setDecimalInputType()
+                    hintColorStr = "#CCCCCC"
+                    textSizeAuto = 31
+                    textColorStr = "#333333"
+                }.lparams(matchParent, autoSize(132)) {
+                    marginStart = autoSize(80)
+                }
+
+
+            }.lparams(matchParent, autoSize(132))
+
+            itemView()
+
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+
+                textView {
+                    visibility = View.INVISIBLE
+                    text = "*"
+                    textColorInt = R.color.rma_star_color
+                    textSizeAuto = 31
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(37)
+                }
+                textView {
+                    text = "手机号码"
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(10)
+                }
+
+                editText {
+                    phone_number = this
+                    isEnabled = type == "1" || type == "3"
+                    if (type != "1"){
+                        setText("")
+                    }
+                    hint = "非必填,用于找回密码"
+                    background = null
+                    inputType = EditorInfo.TYPE_CLASS_PHONE
+//                    setDecimalInputType()
+                    hintColorStr = "#CCCCCC"
+                    textSizeAuto = 31
+                    textColorStr = "#333333"
+                }.lparams(matchParent, autoSize(132)) {
+                    marginStart = autoSize(80)
+                }
+
+
+            }.lparams(matchParent, autoSize(132))
+
+            itemView()
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+                onThrottleFirstClick {
+                    creatBottomSheetDialog("请选择合同类型", getSelectDataList()) {
+                        roleTypeSelectData.postValue(this)
+                    }
+                }
+                textView {
+                    visibility = View.INVISIBLE
+                    text = "*"
+                    textColorInt = R.color.rma_star_color
+                    textSizeAuto = 31
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(37)
+                }
+
+                textView {
+                    text = "账户角色"
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(10)
+                }
+
+                textView {
+                    roleTypeSelectData.bindOptional(context) {
+                        text = it?.value
+                    }
+                    textSizeAuto = 31
+                    textColorInt = R.color.rma_black_33
+                }.lparams(wrapContent, wrapContent) {
+                    marginStart = autoSize(80)
+                }
+
+                emptyView()
+
+                imageView {
+                    imageResource = R.mipmap.rma_more
+                }.lparams(autoSize(36), autoSize(36)) {
+                    marginEnd = autoSize(25)
+                }
+            }.lparams(matchParent, autoSize(132))
+
+            view {
+
+            }.lparams(autoSize(1), 0, 1f)
+
+
+            linearLayout {
+                background = resources.getDrawable(R.color.white)
+                gravity = Gravity.CENTER_VERTICAL
+
+
+                textView {
+                    onThrottleFirstClick {
+                        if (check().not()) {
+                            return@onThrottleFirstClick
+                        }
+                        if (type == "1"){// 1 新增 2 详情 3 修改 4 锁定 5 注销
+                            viewModel.LoginaccountOperateReq(
+                                operatetype = 3,
+                                logincode = login_account.text.toString(),
+                                accountname = account_name.text.toString(),
+                                password = login_password.text.toString(),
+                                mobile = phone_number.text.toString(),
+                                roleids = arrayListOf(roleTypeSelectData.value?.id?.toLong() ?: 0)
+                            ){
+                                finish()
+                            }
+                        }else if (type == "3"){//修改
+                            viewModel.LoginaccountOperateReq(
+                                operatetype = 4,
+                                logincode = login_account.text.toString(),
+                                accountname = account_name.text.toString(),
+                                password = login_password.text.toString(),
+                                mobile = phone_number.text.toString(),
+                                roleids = arrayListOf(roleTypeSelectData.value?.id?.toLong() ?: 0)
+                            ){
+                                finish()
+                            }
+                        }
+                    }
+                    gravity = Gravity.CENTER
+                    backgroundResource = R.mipmap.rma_submit_bg
+                    text = "完成"
+                    textColorInt = R.color.white
+                    textSizeAuto = 38
+                }.lparams(matchParent, autoSize(119)) {
+                    marginStart = autoSize(60)
+                    marginEnd = autoSize(60)
+                }
+            }.lparams(matchParent, autoSize(144))
+        }
+    }
+
+    /**
+     * 可选择的账户角色
+     */
+    fun getSelectDataList(): List<SelectData> {
+        val selectList = arrayListOf<SelectData>()
+        seletType.forEach {
+            selectList.add(SelectData(id = it.roleid ?: "", value = it.rolename ?: ""))
+        }
+        return selectList
+    }
+
+    /**
+     * 操作前的数据效验
+     * @return Boolean
+     */
+    fun check(): Boolean {
+        if (login_account.text.toString().isNullOrEmpty()) {
+            ToastUtils.showLong("请输入登录账号")
+            return false
+        }
+        if (account_name.text.toString().isNullOrEmpty()) {
+            ToastUtils.showLong("请输入账户名称")
+            return false
+        }
+        if (login_password.text.toString().isNullOrEmpty()) {
+            ToastUtils.showLong("请输入登录密码")
+            return false
+        }
+        return true
+    }
+
+}

+ 6 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/AddRoleSetActivity.kt

@@ -93,6 +93,12 @@ class AddRoleSetActivity : BaseActivity<RoleSetViewModel>() {
 
                             editText {
                                 role_name_edittext = this
+                                if (type != "1"){
+                                    setText(data.rolename)
+                                }
+                                if (type == "3"){
+                                    isEnabled = false
+                                }
                                 gravity = Gravity.RIGHT
                                 hint = "请填写角色名称"
                                 background = null

+ 2 - 0
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/RoleLoginVIewHolder.kt

@@ -0,0 +1,2 @@
+package cn.muchinfo.rma.view.base.home.rolemanagement
+

+ 5 - 1
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/RoleSetViewHolder.kt

@@ -113,7 +113,11 @@ class RoleSetViewHolder(private val activity : AppCompatActivity,private val vie
                  }
                  textView {
                      onThrottleFirstClick {
-
+                         val intent = Intent()
+                         intent.putExtra("type","3")
+                         intent.putExtra("data",data.value)
+                         intent.setClass(context,AddRoleSetActivity::class.java)
+                         ActivityUtils.startActivity(intent)
                      }
                      backgroundResource = R.drawable.rma_item_click_bg
                      gravity = Gravity.CENTER

+ 74 - 16
RMA/app/src/main/java/cn/muchinfo/rma/view/base/home/rolemanagement/RoleSetViewModel.kt

@@ -47,9 +47,7 @@ class RoleSetViewModel : BaseViewModel(){
     fun queryAccMgrRoleMenu(roleid : String = ""){
         val params = mutableMapOf<String, String>().apply {
             put("userid", GlobalDataCollection.instance?.loginRsp?.userID.toString())
-            if (roleid.isNotEmpty()){
-                put("roleid",roleid)
-            }
+
         }
         MyApplication.getInstance()?.accountManager?.queryAccMgrRoleMenu(params = params){isSuccess, respData, error ->
             if (isSuccess){
@@ -88,20 +86,29 @@ class RoleSetViewModel : BaseViewModel(){
         return newMenuDataList
     }
 
+    /**
+     * 通过所有的选择列表和已经选择的进行合并
+     * @param haveMenuList List<AccMgrRoleMenuData>
+     */
     fun flexibleMenu(haveMenuList : List<AccMgrRoleMenuData>){
-        val emptyMenuList = roleMenuDataList.value
-        val newMenuDataList = arrayListOf<AccMgrRoleMenuData>()
-        emptyMenuList?.forEach {
-            val newSonMenuList = arrayListOf<RoleSonMenuData>()
-
-//            haveMenuList.forEach {data ->
-//                 if (it.Menu?.resourcecode == data.Menu?.resourcecode){
-//                     data.SubMenu?.let { it1 -> newSonMenuList.addAll(it1) }
-//                 }
-//            }
-            it.SubMenu?.let { it1 -> newSonMenuList.addAll(it1) }
-
-            newMenuDataList.add(it.copy(SubMenu = newSonMenuList))
+        val emptyMenuList = roleMenuDataList.value//请求的全部未选择的列表
+        val newMenuDataList = arrayListOf<AccMgrRoleMenuData>()//用来存放组合后的列表
+        emptyMenuList?.forEach {data1 ->//遍历
+            val newSonMenuList = arrayListOf<RoleSonMenuData>()//存放data的子列表的容器
+            val haveMenuData = haveMenuList.find { data1.Menu?.resourcecode == it.Menu?.resourcecode }//找到两个列表相同的实体
+            if (haveMenuData?.Menu?.resourcecode?.isNotEmpty() == true){
+                data1.SubMenu?.forEach {emptySonData ->//子列表遍历
+                    val haveSonData = haveMenuData.SubMenu?.find { it.resourcecode == emptySonData.resourcecode }
+                    if (haveSonData?.resourcecode?.isNotEmpty() == true){
+                        newSonMenuList.add(haveSonData.copy(isSelcet = 1))
+                    }else{
+                        newSonMenuList.add(emptySonData)
+                    }
+                }
+            }else{
+                data1.SubMenu?.let { newSonMenuList.addAll(it) }
+            }
+            newMenuDataList.add(data1.copy(SubMenu = newSonMenuList))
         }
         roleMenuDataList.postValue(newMenuDataList)
     }
@@ -263,4 +270,55 @@ class RoleSetViewModel : BaseViewModel(){
         roleSetDataList.postValue(datanewList)
     }
 
+    /**
+     * 登录账户操作请求报文装箱
+     * @param operatetype Int 操作类型-1:新增 2:修改 3:新增管理员 4:修改管理员 5:锁定 6:解锁 7:注销 8:恢复 9:重置密码
+     * @param userid Long 用户ID(新增成功接口返回的userid)
+     * @param loginid Long 登录ID(新增成功接口返回的loginid)
+     * @param logincode String 登录账号
+     * @param accountname String 账户名称
+     * @param password String 登录密码(明文)
+     * @param mobile String 手机号码(明文)
+     * @param roleids List<Long> 账号角色
+     * @param logintaaccounts List<LoginTaaccount> 期货账户(勾选交易员必填)
+     * @return Packet50
+     */
+    fun LoginaccountOperateReq(
+        operatetype : Int,
+        userid : Long = 0,
+        loginid : Long = 0,
+        logincode : String = "",
+        accountname : String = "",
+        password : String = "",
+        mobile : String = "",
+        roleids : List<Long>,
+        logintaaccounts : List<ManageServiceMI2.LoginTaaccount> = arrayListOf(),
+        isSuccess: (isCompleted: Boolean) -> Unit
+    ){
+        loadingDialogStatus.value = TaskUiModel.inFlight()
+        GlobalScope.launch {
+            MyApplication.getInstance()?.accountManager?.LoginaccountOperateReq(
+                operatetype = operatetype,
+                logincode = logincode,
+                accountname = accountname,
+                password = password,
+                mobile = mobile,
+                roleids = roleids
+            ){ isCompleted, err ->
+                if (isCompleted) {
+                    loadingDialogStatus.postValue(TaskUiModel.success(msg = "请求成功"))
+                    isSuccess(true)
+                } else {
+                    loadingDialogStatus.postValue(
+                        TaskUiModel.failed(
+                            InteractiveException(
+                                errorMessage = err?.message!!
+                            )
+                        )
+                    )
+                }
+            }
+        }
+    }
+
 }