Commit 96bc9bd8 authored by shiyl's avatar shiyl

管理员信息页面搭建

parent 9f9c4b02
package com.yidian.common.extensions
import android.app.Activity
import android.view.inputmethod.InputMethodManager
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import com.yidian.common.R
import com.yidian.xpage.XPageManager
fun Activity.hideKeyBoard(): Boolean {
val mInputMethodManager = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
return if (currentFocus != null) {
mInputMethodManager.hideSoftInputFromWindow(currentFocus!!.windowToken, 0)
} else {
false
}
}
fun AppCompatActivity.initTitleBar(toolbar: Toolbar, textView: TextView, title: String) {
toolbar.title = ""
setSupportActionBar(toolbar)
supportActionBar?.let {
it.setDisplayHomeAsUpEnabled(true)
it.setDisplayShowHomeEnabled(true)
}
toolbar.setNavigationIcon(R.drawable.icon_back)
toolbar.setNavigationOnClickListener {
onBackPressed()
// 在XPage服务中pop
XPageManager.pop(null)
}
// 设置title
textView.text = title
}
package com.yidian.common.extensions
import android.os.SystemClock
import android.view.View
import android.widget.TextView
import androidx.annotation.ColorRes
import androidx.core.content.ContextCompat
/**
* 按钮点击防抖
*/
fun View?.clickAntiShake(intervalMillis: Long = 300, listener: (View) -> Unit) {
// 最近一次点击的时间
var lastClickTime: Long = 0
this?.setOnClickListener {
// 自启动以来的毫秒数,包括在睡眠中花费的时间
val currentTime = SystemClock.elapsedRealtime()
if (currentTime - lastClickTime >= intervalMillis) {
listener.invoke(it)
lastClickTime = currentTime
}
}
}
fun View.hide() {
this.visibility = View.GONE
}
fun View.show() {
this.visibility = View.VISIBLE
}
fun View.toggleVisibility() {
if (this.visibility == View.GONE) {
this.show()
} else {
this.hide()
}
}
fun View.toggleVisibility(show: Boolean) {
if (show) {
this.show()
} else {
this.hide()
}
}
fun View.setBgColor(@ColorRes colorId: Int) {
val colorInt = ContextCompat.getColor(context, colorId)
setBackgroundColor(colorInt)
}
fun TextView.setFgColor(@ColorRes colorId: Int) {
val colorInt = ContextCompat.getColor(context, colorId)
setTextColor(colorInt)
}
fun TextView.clearDrawable() {
setCompoundDrawables(null, null, null, null)
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
android:minHeight="50dp"
android:paddingStart="@dimen/dp15"
android:paddingEnd="@dimen/dp15"
app:layout_scrollFlags="scroll|enterAlways"
app:navigationIcon="@drawable/icon_back">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="#FF333333"
android:textSize="18sp"
tools:text="标题" />
<TextView
android:id="@+id/tv_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF333333"
android:textSize="16sp" />
</androidx.appcompat.widget.Toolbar>
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:layout_width="match_parent"
android:layout_height="@dimen/dp50"
android:background="@color/white"
android:fitsSystemWindows="true"
android:paddingStart="@dimen/dp15"
android:paddingEnd="@dimen/dp15">
<ImageView
android:id="@+id/iv_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/dp5"
android:src="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#333333"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="标题" />
<TextView
android:id="@+id/tv_menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/dp10"
android:textColor="#333333"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="菜单" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
This diff is collapsed.
package com.yidian.shenghuoquan.newscontent.personnel.bean package com.yidian.shenghuoquan.newscontent.personnel.bean
import android.os.Parcelable
import com.google.gson.annotations.SerializedName import com.google.gson.annotations.SerializedName
import kotlinx.android.parcel.Parcelize
/** /**
* 账号列表数据类 * 账号列表数据类
...@@ -12,6 +14,7 @@ data class AccountListDto( ...@@ -12,6 +14,7 @@ data class AccountListDto(
val users: List<AccountUser>? = null val users: List<AccountUser>? = null
) )
@Parcelize
data class AccountAdmin( data class AccountAdmin(
@SerializedName("life_account_id") @SerializedName("life_account_id")
val lifeAccountId: Long? = null, val lifeAccountId: Long? = null,
...@@ -29,7 +32,7 @@ data class AccountAdmin( ...@@ -29,7 +32,7 @@ data class AccountAdmin(
val showButton: Int? = null, val showButton: Int? = null,
@SerializedName("user_id") @SerializedName("user_id")
val userId: Long? = null val userId: Long? = null
) ) : Parcelable
data class AccountUser( data class AccountUser(
@SerializedName("life_account_id") @SerializedName("life_account_id")
......
package com.yidian.shenghuoquan.newscontent.personnel.ui package com.yidian.shenghuoquan.newscontent.personnel.ui
import android.content.Intent
import android.os.Bundle
import androidx.core.content.ContextCompat
import com.yidian.common.XRouterPathConstants
import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_MANAGER_INFO import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_MANAGER_INFO
import com.yidian.common.base.BaseActivity import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityManagerInfoBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityManagerInfoBinding
import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountAdmin
import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil
import com.yidian.xpage.XPageManager
/** /**
* 人员管理 —— 管理员信息 * 人员管理 —— 管理员信息
*/ */
class ManagerInfoActivity: BaseActivity<ActivityManagerInfoBinding>() { class ManagerInfoActivity : BaseActivity<ActivityManagerInfoBinding>() {
private var managerMobile: String = ""
override fun createViewBinding(): ActivityManagerInfoBinding { override fun createViewBinding(): ActivityManagerInfoBinding {
return ActivityManagerInfoBinding.inflate(layoutInflater) return ActivityManagerInfoBinding.inflate(layoutInflater)
...@@ -17,4 +27,45 @@ class ManagerInfoActivity: BaseActivity<ActivityManagerInfoBinding>() { ...@@ -17,4 +27,45 @@ class ManagerInfoActivity: BaseActivity<ActivityManagerInfoBinding>() {
return PERSONAL_MANAGER_INFO return PERSONAL_MANAGER_INFO
} }
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
initTitle()
getIntentData(intent)
}
private fun initTitle() {
viewBind.include.tvTitle.text = "管理员信息"
viewBind.include.ivBack.setOnClickListener {
XPageManager.pop(null)
}
viewBind.include.tvMenu.text = "更换"
viewBind.include.tvMenu.setOnClickListener {
val hashMap = HashMap<String, String?>()
hashMap["mobile"] = managerMobile
XPageManager.push(XRouterPathConstants.PERSONAL_MANAGER_CHANGE, hashMap)
}
viewBind.include.tvMenu.setTextColor(ContextCompat.getColor(this, R.color.color_1852F1))
}
private fun getIntentData(intent: Intent?) {
val paramsMap = intent?.getSerializableExtra(XRouterPathConstants.ParamsKey)
if (paramsMap != null) {
paramsMap as HashMap<*, *>
val managerInfo = paramsMap["managerInfo"] as AccountAdmin
viewBind.tvUserName.text = managerInfo.nickName
viewBind.tvLoginAccount.text = managerInfo.mobile?.let {
managerMobile = it
SensitiveInfoUtil.mobileEncrypt(it)
}
val sb = StringBuilder()
managerInfo.roleList?.forEachIndexed { index, s ->
sb.append(s)
if (index < managerInfo.roleList.size - 1) {
sb.append("|")
}
}
viewBind.tvCurrentRole.text = sb
}
}
} }
...@@ -4,6 +4,7 @@ import android.os.Bundle ...@@ -4,6 +4,7 @@ import android.os.Bundle
import com.yidian.common.XRouterPathConstants import com.yidian.common.XRouterPathConstants
import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_MY_STAFF import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_MY_STAFF
import com.yidian.common.base.BaseActivity import com.yidian.common.base.BaseActivity
import com.yidian.common.extensions.initTitleBar
import com.yidian.shenghuoquan.newscontent.R import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityMyStaffBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityMyStaffBinding
import com.yidian.shenghuoquan.newscontent.personnel.adapter.MyStaffListAdapter import com.yidian.shenghuoquan.newscontent.personnel.adapter.MyStaffListAdapter
...@@ -44,14 +45,11 @@ class MyStaffActivity : BaseActivity<ActivityMyStaffBinding>(), IPersonalAccount ...@@ -44,14 +45,11 @@ class MyStaffActivity : BaseActivity<ActivityMyStaffBinding>(), IPersonalAccount
} }
private fun initView() { private fun initView() {
viewBind.layoutCommonHeader.tvTitle.text = resources.getString(R.string.my_staff) initTitleBar(viewBind.include.toolbar, viewBind.include.tvTitle, resources.getString(R.string.my_staff))
viewBind.rvStaffList.adapter = myStaffAdapter viewBind.rvStaffList.adapter = myStaffAdapter
} }
private fun initClick() { private fun initClick() {
viewBind.layoutCommonHeader.ivBack.setOnClickListener {
XPageManager.pop(null)
}
// 管理员信息 // 管理员信息
viewBind.clManager.setOnClickListener { viewBind.clManager.setOnClickListener {
managerInfo?.let { managerInfo?.let {
...@@ -87,11 +85,14 @@ class MyStaffActivity : BaseActivity<ActivityMyStaffBinding>(), IPersonalAccount ...@@ -87,11 +85,14 @@ class MyStaffActivity : BaseActivity<ActivityMyStaffBinding>(), IPersonalAccount
private fun initManager(admin: AccountAdmin) { private fun initManager(admin: AccountAdmin) {
viewBind.tvName.text = admin.nickName viewBind.tvName.text = admin.nickName
viewBind.tvMobile.text = admin.mobile viewBind.tvMobile.text = admin.mobile
val stringBuilder = StringBuilder() val sb = StringBuilder()
admin.roleList?.forEach { admin.roleList?.forEachIndexed { index, s ->
stringBuilder.append("$it|") sb.append(s)
if (index < admin.roleList.size - 1) {
sb.append("|")
}
} }
viewBind.tvRole.text = stringBuilder viewBind.tvRole.text = sb
} }
override fun getAccountListFailure(message: String?) { override fun getAccountListFailure(message: String?) {
......
...@@ -23,7 +23,7 @@ object SensitiveInfoUtil { ...@@ -23,7 +23,7 @@ object SensitiveInfoUtil {
if (content.isBlank() || content.length < 18) { if (content.isBlank() || content.length < 18) {
return content return content
} }
return content.replace("(?<=\\w{3})\\w(?=\\w{4})", "*"); return content.replace(("(?<=\\w{3})\\w(?=\\w{4})").toRegex(), "*");
} }
/** /**
...@@ -33,7 +33,7 @@ object SensitiveInfoUtil { ...@@ -33,7 +33,7 @@ object SensitiveInfoUtil {
if (mobile.isBlank() || mobile.length != 11) { if (mobile.isBlank() || mobile.length != 11) {
return mobile return mobile
} }
return mobile.replace("(\\d{3})\\d{4}(\\d{4})", "$1****$2") return mobile.replace(("(\\d{3})\\d{4}(\\d{4})").toRegex(), "$1****$2")
} }
} }
...@@ -37,7 +37,7 @@ class NumberWithBorderEditText @JvmOverloads constructor( ...@@ -37,7 +37,7 @@ class NumberWithBorderEditText @JvmOverloads constructor(
private var textPaint: Paint private var textPaint: Paint
private val textSizeReal = 16 private val textSizeReal = 16
private var borderStroke =3f private var borderStroke =3f
private val selectedBorderColor = context.resources.getColor(R.color.edit_text_border_blue) private val selectedBorderColor = context.resources.getColor(R.color.color_1852F1)
private val normalBorderColor = context.resources.getColor(R.color.edit_text_border_gray) private val normalBorderColor = context.resources.getColor(R.color.edit_text_border_gray)
private val textColor = context.resources.getColor(R.color.gray_333) private val textColor = context.resources.getColor(R.color.gray_333)
private val borderWidth = YdUiUtils.dip2px(24, context) private val borderWidth = YdUiUtils.dip2px(24, context)
...@@ -166,4 +166,4 @@ class NumberWithBorderEditText @JvmOverloads constructor( ...@@ -166,4 +166,4 @@ class NumberWithBorderEditText @JvmOverloads constructor(
return "" return ""
} }
} }
} }
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"> android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:fitsSystemWindows="true"
android:orientation="vertical">
</androidx.constraintlayout.widget.ConstraintLayout> <include
\ No newline at end of file android:id="@+id/include"
layout="@layout/layout_toolbar_menu" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp60"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp120"
android:layout_height="match_parent"
android:gravity="center"
android:text="用户名"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp16" />
<TextView
android:id="@+id/tv_user_name"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
tools:text="店老大" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp60"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp120"
android:layout_height="match_parent"
android:gravity="center"
android:text="登录账号"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp16" />
<TextView
android:id="@+id/tv_login_account"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
tools:text="店老大" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp60"
android:orientation="horizontal">
<TextView
android:layout_width="@dimen/dp120"
android:layout_height="match_parent"
android:gravity="center"
android:text="当前角色"
android:textColor="@color/color_666666"
android:textSize="@dimen/sp16" />
<TextView
android:id="@+id/tv_current_role"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
tools:text="超级管理员" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
android:orientation="vertical"> android:orientation="vertical">
<include <include
android:id="@+id/layout_common_header" android:id="@+id/include"
layout="@layout/layout_common_header" /> layout="@layout/layout_common_toolbar" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
android:layout_width="27dp" android:layout_width="27dp"
android:layout_height="27dp" android:layout_height="27dp"
android:layout_marginStart="19dp" android:layout_marginStart="19dp"
android:src="@mipmap/icon_back" android:src="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
......
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/menu_manager_change"
android:title="更换"
android:orderInCategory="80"
app:showAsAction="ifRoom" />
</menu>
\ No newline at end of file
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<color name="red_account_tips">#FF3A3A</color> <color name="red_account_tips">#FF3A3A</color>
<color name="account_hint">#c2c2c2</color> <color name="account_hint">#c2c2c2</color>
<color name="base">#FF1852F1</color> <color name="base">#FF1852F1</color>
<color name="edit_text_border_blue">#1852F1</color> <color name="color_1852F1">#1852F1</color>
<color name="edit_text_border_gray">#cccccc</color> <color name="edit_text_border_gray">#cccccc</color>
<color name="color_F5F6F7">#F5F5F5</color> <color name="color_F5F6F7">#F5F5F5</color>
<color name="color_1A000000">#1A000000</color> <color name="color_1A000000">#1A000000</color>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment