Commit 67014c68 authored by shiyuelong's avatar shiyuelong

add 员工管理页面搭建完成

parent 205d0c15
......@@ -98,6 +98,7 @@
<activity
android:name=".personnel.ui.MyStaffActivity"
android:launchMode="singleTask"
android:theme="@style/Transparent" />
<activity
android:name=".personnel.ui.ManagerInfoActivity"
......
......@@ -90,7 +90,7 @@ class NewsContentApplication : YdBaseApplication() {
intent.putExtra(XRouterPathConstants.ParamsKey, params as HashMap)
}
intent.setClass(context, LoginLifeCircleActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
intent.flags = (Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
}
}),
......@@ -259,7 +259,7 @@ class NewsContentApplication : YdBaseApplication() {
context.startActivity(intent)
}
}),
XPageNode (PERSONAL_MANAGER_CHANGE, XPageNodePageType.NATIVE, object : XPageHandler {
XPageNode(PERSONAL_MANAGER_CHANGE, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
......@@ -270,7 +270,7 @@ class NewsContentApplication : YdBaseApplication() {
context.startActivity(intent)
}
}),
XPageNode (PERSONAL_STAFF_INFO, XPageNodePageType.NATIVE, object : XPageHandler {
XPageNode(PERSONAL_STAFF_INFO, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
......@@ -281,7 +281,7 @@ class NewsContentApplication : YdBaseApplication() {
context.startActivity(intent)
}
}),
XPageNode (PERSONAL_STAFF_MANAGE, XPageNodePageType.NATIVE, object : XPageHandler {
XPageNode(PERSONAL_STAFF_MANAGE, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
......@@ -292,7 +292,7 @@ class NewsContentApplication : YdBaseApplication() {
context.startActivity(intent)
}
}),
XPageNode (PERSONAL_ADD_STAFF, XPageNodePageType.NATIVE, object : XPageHandler {
XPageNode(PERSONAL_ADD_STAFF, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
......@@ -303,7 +303,7 @@ class NewsContentApplication : YdBaseApplication() {
context.startActivity(intent)
}
}),
XPageNode (SYSTEM_SETTING, XPageNodePageType.NATIVE, object : XPageHandler {
XPageNode(SYSTEM_SETTING, XPageNodePageType.NATIVE, object : XPageHandler {
override fun handler(params: Map<String, Any?>?) {
val intent = Intent()
if (params != null) {
......
......@@ -3,9 +3,11 @@ package com.yidian.shenghuoquan.newscontent.personnel.adapter
import android.widget.TextView
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.yidian.common.XRouterPathConstants
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountUser
import com.yidian.utils.ToastUtil
import com.yidian.xpage.XPageManager
/**
* 我的员工列表的适配器
......@@ -17,15 +19,20 @@ class MyStaffListAdapter : BaseQuickAdapter<AccountUser, BaseViewHolder>(R.layou
holder.getView<TextView>(R.id.tv_mobile).text = item.mobile
if (!item.roleList.isNullOrEmpty()) {
val sb = StringBuilder()
item.roleList.forEach {
sb.append("$it|")
item.roleList.forEachIndexed { index, s ->
sb.append(s)
if (index < item.roleList.size - 1) {
sb.append("|")
}
}
holder.getView<TextView>(R.id.tv_role_list).text = sb
}
// 点击管理,进入员工信息
// 点击管理,进入员工管理
holder.getView<TextView>(R.id.tv_manage).setOnClickListener {
ToastUtil.showToast(context, "点击${item.nickName}")
val hashMap = HashMap<String, Any?>()
hashMap["staffInfo"] = item
XPageManager.push(XRouterPathConstants.PERSONAL_STAFF_MANAGE, hashMap)
}
}
}
......@@ -34,6 +34,7 @@ data class AccountAdmin(
val userId: Long? = null
) : Parcelable
@Parcelize
data class AccountUser(
@SerializedName("life_account_id")
val lifeAccountId: Long? = null,
......@@ -51,4 +52,4 @@ data class AccountUser(
val showButton: Int? = null,
@SerializedName("user_id")
val userId: Int? = null
)
) : Parcelable
......@@ -6,10 +6,7 @@ import com.yidian.common.http.HttpResultSubscriber
import com.yidian.common.http.TransformUtil
import com.yidian.http.ServiceFactory
import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountListDto
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalAccountListCallback
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalChangeAccountCallBack
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalCheckSmsCodeCallBack
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalGetSmsCodeCallBack
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.*
/**
* 人员管理远程数据源
......@@ -100,4 +97,43 @@ object PersonalRemoteDataSource {
})
}
/**
* 添加非管理员
*/
fun postAddUser(apiCallback: IPersonalAddUserCallBack, requestParams: HashMap<String, String?>) {
val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp)
api
.postAddUser(publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<Any?>() {
override fun onSuccess(result: HttpResult<Any?>?) {
apiCallback.addUserSuccess()
}
override fun onFailer(result: HttpResult<Any?>?) {
}
})
}
/**
* 解除关系
*/
fun getDissolveRelationship(apiCallback: IPersonalDissolveCallBack, requestParams: HashMap<String, String?>) {
val timeStamp = System.currentTimeMillis()
val publicParamsMap = HttpParamsUtils.getPublicParamsMap(timeStamp)
val privateParamsMap = HttpParamsUtils.getPrivateParamsMap(requestParams, timeStamp)
api
.getDissolveRelationship(publicParamsMap, privateParamsMap)
.compose(TransformUtil.defaultSchedulers())
.subscribe(object : HttpResultSubscriber<Any?>() {
override fun onSuccess(result: HttpResult<Any?>?) {
apiCallback.dissolveSuccess()
}
override fun onFailer(result: HttpResult<Any?>?) {
}
})
}
}
......@@ -301,10 +301,10 @@ class ManagerChangeActivity : BaseActivity<ActivityManagerChangeBinding>() {
}
override fun onRightOption() {
XPageManager.push(XRouterPathConstants.LOGIN_LIFE_CIRCLE, null)
ToastUtil.showToast(this@ManagerChangeActivity, "进入登录页面")
}
})
}).show()
}
override fun onDestroy() {
......
......@@ -10,6 +10,7 @@ import com.yidian.shenghuoquan.newscontent.databinding.ActivityMyStaffBinding
import com.yidian.shenghuoquan.newscontent.personnel.adapter.MyStaffListAdapter
import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountAdmin
import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountListDto
import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountUser
import com.yidian.shenghuoquan.newscontent.personnel.http.callback.IPersonalAccountListCallback
import com.yidian.shenghuoquan.newscontent.personnel.http.PersonalRemoteDataSource
import com.yidian.xpage.XPageManager
......@@ -35,6 +36,10 @@ class MyStaffActivity : BaseActivity<ActivityMyStaffBinding>(), IPersonalAccount
super.init(savedInstanceState)
initClick()
initView()
}
override fun onResume() {
super.onResume()
requestAccountList()
}
......@@ -70,6 +75,13 @@ class MyStaffActivity : BaseActivity<ActivityMyStaffBinding>(), IPersonalAccount
viewBind.tvAddStaff.setOnClickListener {
XPageManager.push(XRouterPathConstants.PERSONAL_ADD_STAFF, null)
}
// 点击员工信息
myStaffAdapter.setOnItemChildClickListener { adapter, _, position ->
val user = adapter.data[position] as AccountUser
val hashMap = HashMap<String, Any?>()
hashMap["staffInfo"] = user
XPageManager.push(XRouterPathConstants.PERSONAL_STAFF_INFO, hashMap)
}
}
override fun getAccountListSuccess(response: AccountListDto?) {
......
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_STAFF_INFO
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityStaffInfoBinding
import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountUser
import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil
import com.yidian.xpage.XPageManager
/**
* 员工信息
*/
class StaffInfoActivity : BaseActivity<ActivityStaffInfoBinding>() {
private var staffInfo: AccountUser? = null
override fun createViewBinding(): ActivityStaffInfoBinding {
return ActivityStaffInfoBinding.inflate(layoutInflater)
}
......@@ -16,4 +26,45 @@ class StaffInfoActivity : BaseActivity<ActivityStaffInfoBinding>() {
override fun getXPageName(): String {
return PERSONAL_STAFF_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.setTextColor(ContextCompat.getColor(this, R.color.color_1852F1))
viewBind.include.tvMenu.setOnClickListener {
val hashMap = HashMap<String, Any?>()
hashMap["staffInfo"] = staffInfo
XPageManager.push(XRouterPathConstants.PERSONAL_STAFF_MANAGE, hashMap)
}
}
private fun getIntentData(intent: Intent?) {
val paramsMap = intent?.getSerializableExtra(XRouterPathConstants.ParamsKey)
if (paramsMap != null) {
paramsMap as HashMap<*, *>
staffInfo = paramsMap["staffInfo"] as AccountUser
viewBind.tvUserName.text = staffInfo?.nickName
viewBind.tvLoginAccount.text = staffInfo?.mobile?.let {
SensitiveInfoUtil.mobileEncrypt(it)
}
val sb = StringBuilder()
staffInfo?.roleList?.forEachIndexed { index, s ->
sb.append(s)
if (index < staffInfo!!.roleList!!.size - 1) {
sb.append("|")
}
}
viewBind.tvCurrentRole.text = sb
}
}
}
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_STAFF_MANAGE
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.bean.HintOptionBean
import com.yidian.shenghuoquan.newscontent.databinding.ActivityStaffManageBinding
import com.yidian.shenghuoquan.newscontent.personnel.bean.AccountUser
import com.yidian.shenghuoquan.newscontent.ui.dialog.HintDialog
import com.yidian.shenghuoquan.newscontent.utils.SensitiveInfoUtil
import com.yidian.xpage.XPageManager
/**
* 人员管理 —— 员工管理页面
......@@ -16,4 +26,61 @@ class StaffManageActivity : BaseActivity<ActivityStaffManageBinding>() {
override fun getXPageName(): String {
return PERSONAL_STAFF_MANAGE
}
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.setTextColor(ContextCompat.getColor(this, R.color.color_FFFF3A3A))
viewBind.include.tvMenu.setOnClickListener {
showConfirmDialog()
}
}
private fun getIntentData(intent: Intent?) {
val paramsMap = intent?.getSerializableExtra(XRouterPathConstants.ParamsKey)
if (paramsMap != null) {
paramsMap as HashMap<*, *>
val staffInfo = paramsMap["staffInfo"] as AccountUser
viewBind.tvUserName.text = staffInfo.nickName
viewBind.tvLoginAccount.text = staffInfo.mobile?.let {
SensitiveInfoUtil.mobileEncrypt(it)
}
val sb = StringBuilder()
staffInfo.roleList?.forEachIndexed { index, s ->
sb.append(s)
if (index < staffInfo.roleList.size - 1) {
sb.append("|")
}
}
viewBind.tvCurrentRole.text = sb
}
}
private fun showConfirmDialog() {
val dialog = HintDialog(this, resources.getString(R.string.dissolve_relationship),
arrayListOf(HintOptionBean("关闭"), HintOptionBean("解除关系")),
object : HintDialog.OnHintOptionCallback {
override fun onLeftOption() {
}
override fun onRightOption() {
// 返回员工列表并刷新
XPageManager.push(XRouterPathConstants.PERSONAL_MY_STAFF, null)
}
})
dialog.setRightBtnColor(ContextCompat.getColor(this, R.color.color_FFFF3A3A))
dialog.show()
}
}
......@@ -47,6 +47,7 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>() {
}
private fun initView() {
Hawk.put(HawkConfig.LoginStatus, false)
setLoginButtonStatus(false)
mCountDownTimerUtils = CountDownTimerUtils(viewBind.tvGetCode, 60000, 1000)
}
......
......@@ -4,6 +4,8 @@ import android.content.Context
import android.os.Bundle
import android.view.View
import android.view.WindowManager
import androidx.annotation.ColorInt
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.yidian.common.base.BaseDialog
import com.yidian.shenghuoquan.newscontent.R
......@@ -22,8 +24,7 @@ class HintDialog(
val content: String,
val options: ArrayList<HintOptionBean>,
val callback: OnHintOptionCallback?
) :
BaseDialog<DialogHintBinding>(context), View.OnClickListener {
) : BaseDialog<DialogHintBinding>(context), View.OnClickListener {
override fun createViewBinding(): DialogHintBinding {
return DialogHintBinding.inflate(layoutInflater)
......@@ -68,6 +69,8 @@ class HintDialog(
} else if (v?.id == R.id.btn_right) {
callback?.onRightOption()
}
// 点击左右均要关闭弹框
dismiss()
}
interface OnHintOptionCallback {
......@@ -82,4 +85,18 @@ class HintDialog(
fun onRightOption()
}
/***
* 设置左侧按钮颜色
*/
fun setLeftBtnColor(@ColorInt color: Int) {
viewBinding.btnLeft.setTextColor(color)
}
/***
* 设置右侧按钮颜色
*/
fun setRightBtnColor(@ColorInt color: Int) {
viewBinding.btnRight.setTextColor(color)
}
}
<?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
<?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
......@@ -147,8 +147,6 @@
<string name="my_staff">我的员工</string>
<string name="manager_account_change_tips">管理员账号替换后,原账户将无法操作生活号所有功能,同时将自动退出当前登录状态,新账号将继承原账号所有权益。</string>
<string name="manager_register_tips">未注册生活圈的手机号,登录时将自动注册,且代表你已经同意《用户协议》《隐私政策》。</string>
<string name="manager_register_tips1">未注册生活圈的手机号,登录时将自动注册,且代表你</string>
<string name="manager_register_tips2">已经同意</string>
<string name="manager_privacy_policy">《隐私政策》</string>
<string name="dissolve_relationship">解除关系后此账号将不再有权限管理企业信息,账号已产生内容仍属企业</string>
</resources>
\ No newline at end of file
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