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
import android.os.Parcelable
import com.google.gson.annotations.SerializedName
import kotlinx.android.parcel.Parcelize
/**
* 账号列表数据类
......@@ -12,6 +14,7 @@ data class AccountListDto(
val users: List<AccountUser>? = null
)
@Parcelize
data class AccountAdmin(
@SerializedName("life_account_id")
val lifeAccountId: Long? = null,
......@@ -29,7 +32,7 @@ data class AccountAdmin(
val showButton: Int? = null,
@SerializedName("user_id")
val userId: Long? = null
)
) : Parcelable
data class AccountUser(
@SerializedName("life_account_id")
......
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.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
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 {
return ActivityManagerInfoBinding.inflate(layoutInflater)
......@@ -17,4 +27,45 @@ class ManagerInfoActivity: BaseActivity<ActivityManagerInfoBinding>() {
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
import com.yidian.common.XRouterPathConstants
import com.yidian.common.XRouterPathConstants.Companion.PERSONAL_MY_STAFF
import com.yidian.common.base.BaseActivity
import com.yidian.common.extensions.initTitleBar
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityMyStaffBinding
import com.yidian.shenghuoquan.newscontent.personnel.adapter.MyStaffListAdapter
......@@ -44,14 +45,11 @@ class MyStaffActivity : BaseActivity<ActivityMyStaffBinding>(), IPersonalAccount
}
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
}
private fun initClick() {
viewBind.layoutCommonHeader.ivBack.setOnClickListener {
XPageManager.pop(null)
}
// 管理员信息
viewBind.clManager.setOnClickListener {
managerInfo?.let {
......@@ -87,11 +85,14 @@ class MyStaffActivity : BaseActivity<ActivityMyStaffBinding>(), IPersonalAccount
private fun initManager(admin: AccountAdmin) {
viewBind.tvName.text = admin.nickName
viewBind.tvMobile.text = admin.mobile
val stringBuilder = StringBuilder()
admin.roleList?.forEach {
stringBuilder.append("$it|")
val sb = StringBuilder()
admin.roleList?.forEachIndexed { index, s ->
sb.append(s)
if (index < admin.roleList.size - 1) {
sb.append("|")
}
}
viewBind.tvRole.text = stringBuilder
viewBind.tvRole.text = sb
}
override fun getAccountListFailure(message: String?) {
......
......@@ -23,7 +23,7 @@ object SensitiveInfoUtil {
if (content.isBlank() || content.length < 18) {
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 {
if (mobile.isBlank() || mobile.length != 11) {
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(
private var textPaint: Paint
private val textSizeReal = 16
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 textColor = context.resources.getColor(R.color.gray_333)
private val borderWidth = YdUiUtils.dip2px(24, context)
......@@ -166,4 +166,4 @@ class NumberWithBorderEditText @JvmOverloads constructor(
return ""
}
}
}
\ 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" android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:fitsSystemWindows="true"
android:orientation="vertical">
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
<include
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 @@
android:orientation="vertical">
<include
android:id="@+id/layout_common_header"
layout="@layout/layout_common_header" />
android:id="@+id/include"
layout="@layout/layout_common_toolbar" />
<TextView
android:layout_width="wrap_content"
......
......@@ -10,7 +10,7 @@
android:layout_width="27dp"
android:layout_height="27dp"
android:layout_marginStart="19dp"
android:src="@mipmap/icon_back"
android:src="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="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 @@
<color name="red_account_tips">#FF3A3A</color>
<color name="account_hint">#c2c2c2</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="color_F5F6F7">#F5F5F5</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