From 9f6256dd51b773c7263a6c34cbf0f2eed6a67c3e Mon Sep 17 00:00:00 2001 From: leiyun Date: Fri, 5 Jan 2024 15:24:39 +0800 Subject: [PATCH] save --- app/build.gradle | 4 +- .../main/java/com/yzx/escreen/MainActivity.kt | 16 ++ .../yzx/escreen/adapter/HomeGridAdapter.kt | 69 +++++++ .../com/yzx/escreen/config/YzxInterface.kt | 1 + .../com/yzx/escreen/fragment/HomeFragment.kt | 167 ++++++++++++++- .../com/yzx/escreen/model/EventBugBean.kt | 4 +- .../java/com/yzx/escreen/model/StuLeave.kt | 4 +- .../yzx/escreen/presenter/HomePresenter.kt | 138 ++++++++++--- .../com/yzx/escreen/widget/LeaveDialog.kt | 16 +- .../main/res/drawable/shape_leave_item.xml | 5 + app/src/main/res/layout/dialog_leave.xml | 48 +++-- app/src/main/res/layout/fragment_home.xml | 194 +++++++++++++++++- app/src/main/res/layout/fragment_visitor.xml | 6 +- .../main/res/layout/layout_leave_table2.xml | 89 ++++++++ app/src/main/res/mipmap-xhdpi/icon_grid.png | Bin 0 -> 705 bytes app/src/main/res/mipmap-xhdpi/icon_list.png | Bin 0 -> 713 bytes app/src/main/res/values/styles.xml | 6 +- 17 files changed, 707 insertions(+), 60 deletions(-) create mode 100644 app/src/main/java/com/yzx/escreen/adapter/HomeGridAdapter.kt create mode 100644 app/src/main/res/drawable/shape_leave_item.xml create mode 100644 app/src/main/res/layout/layout_leave_table2.xml create mode 100644 app/src/main/res/mipmap-xhdpi/icon_grid.png create mode 100644 app/src/main/res/mipmap-xhdpi/icon_list.png diff --git a/app/build.gradle b/app/build.gradle index 716f581..1268afc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { // minSdkVersion 26 minSdkVersion 21 targetSdkVersion 25 - versionCode 30102 - versionName "3.1.2" + versionCode 30200 + versionName "3.2.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { diff --git a/app/src/main/java/com/yzx/escreen/MainActivity.kt b/app/src/main/java/com/yzx/escreen/MainActivity.kt index cc8780c..1c0b4cc 100644 --- a/app/src/main/java/com/yzx/escreen/MainActivity.kt +++ b/app/src/main/java/com/yzx/escreen/MainActivity.kt @@ -250,6 +250,22 @@ class MainActivity : BaseActivity(), NetworkUtils.OnNetworkStatus dialogLayout.removeView(it) dialogList.remove(it) } + dialog.onSureClick= {view, item -> + + val sureDialog = QMUIDialog.MessageDialogBuilder(this) + sureDialog.setMessage("是否确认已放行?") + sureDialog.setTitle("温馨提示") + sureDialog.addAction("取消"){ _dialog, index -> + _dialog?.dismiss() + } + sureDialog.addAction("确认"){ _dialog, index -> + _dialog?.dismiss() + dialogLayout.removeView(view) + dialogList.remove(view) + EventBus.getDefault().post(SureOutSchool(item)) + } + sureDialog.show() + } dialogLayout.addView(dialog) dialogList.add(dialog) } diff --git a/app/src/main/java/com/yzx/escreen/adapter/HomeGridAdapter.kt b/app/src/main/java/com/yzx/escreen/adapter/HomeGridAdapter.kt new file mode 100644 index 0000000..fca8be9 --- /dev/null +++ b/app/src/main/java/com/yzx/escreen/adapter/HomeGridAdapter.kt @@ -0,0 +1,69 @@ +package com.yzx.escreen.adapter + +import android.annotation.SuppressLint +import android.content.res.ColorStateList +import android.graphics.Color +import android.view.View +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.yzx.escreen.R +import com.yzx.escreen.model.StuLeave +import com.yzx.escreen.utils.setSrc +import com.yzx.escreen.utils.toTime +import kotlinx.android.synthetic.main.layout_leave_table2.view.* + +class HomeGridAdapter(list: MutableList) : + BaseQuickAdapter(R.layout.layout_leave_table2, list) { + + init { + addChildClickViewIds(R.id.faceEmpty,R.id.statusName) + + } + + @SuppressLint("SetTextI18n") + override fun convert(holder: BaseViewHolder, item: StuLeave) { + holder.itemView.studentName.text = item.leave_student_name + if (item.face_key.isNullOrBlank()) { + holder.itemView.faceEmpty.visibility = View.VISIBLE + holder.itemView.faceImg.visibility = View.GONE + } else { + holder.itemView.faceImg.visibility = View.VISIBLE + holder.itemView.faceEmpty.visibility = View.GONE + holder.itemView.faceImg.setSrc(item.face_identity, item.face_key) + } + holder.itemView.className.text = "${item.grade_name}${item.class_name}" + holder.itemView.statusName.text = when (item.status) { + 1 -> "待处理" + 2 -> "已确认" + 3 -> "已拒绝" + 4 -> "正常销假" + 5 -> "超时销假" + else -> "--" + } + holder.itemView.statusName.setBackgroundColor( + when (item.status) { + 1 -> Color.parseColor("#cccccc") + 2 -> Color.parseColor("#3c7ef6") + 3 -> Color.parseColor("#ff4040") + 4 -> Color.parseColor("#3c7ef6") + 5 -> Color.parseColor("#ff4040") + else -> Color.parseColor("#cccccc") + } + ) + holder.itemView.statusName.setStrokeColors( + ColorStateList.valueOf( + when (item.status) { + 1 -> Color.parseColor("#cccccc") + 2 -> Color.parseColor("#3c7ef6") + 3 -> Color.parseColor("#ff4040") + 4 -> Color.parseColor("#3c7ef6") + 5 -> Color.parseColor("#ff4040") + else -> Color.parseColor("#cccccc") + } + ) + ) + holder.itemView.applyTime.text = item.add_time.toTime() + + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yzx/escreen/config/YzxInterface.kt b/app/src/main/java/com/yzx/escreen/config/YzxInterface.kt index 49d0e96..77a61c1 100644 --- a/app/src/main/java/com/yzx/escreen/config/YzxInterface.kt +++ b/app/src/main/java/com/yzx/escreen/config/YzxInterface.kt @@ -28,6 +28,7 @@ object YzxInterface { const val INTERFACE_STUDENT_GET_SHOW_BOX_LIST_OLD= "/edu/attendance/student/getStudentLeaveIds" //获取需要弹出的数据 const val INTERFACE_STUDENT_GET_SHOW_BOX_LIST= "/edu/attendance/student/getStudentLeaveIdsV2" //获取需要弹出的数据 const val INTERFACE_STUDENT_POST_LEAVE_VACATION= "/edu/attendance/student/studentLeaveVacation"//人工销假操作 + const val INTERFACE_STUDENT_POST_HIDE_LEAVE= "/edu/attendance/hideStudentLeave"//离校 /** * 学籍异动 */ diff --git a/app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt b/app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt index 263c91f..9013a0f 100644 --- a/app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt +++ b/app/src/main/java/com/yzx/escreen/fragment/HomeFragment.kt @@ -12,6 +12,7 @@ import android.view.View import android.widget.EditText import android.widget.ImageView import android.widget.TextView +import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import com.blankj.utilcode.util.* import com.huantansheng.easyphotos.EasyPhotos @@ -20,6 +21,7 @@ import com.qmuiteam.qmui.widget.dialog.QMUIDialog import com.qmuiteam.qmui.widget.dialog.QMUITipDialog import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton import com.yzx.escreen.R +import com.yzx.escreen.adapter.HomeGridAdapter import com.yzx.escreen.adapter.HomeListAdapter import com.yzx.escreen.fragment.base.BaseFragment import com.yzx.escreen.model.* @@ -56,6 +58,11 @@ class HomeFragment : BaseFragment(), HomeView, HomeListAdapter(list) } + private val mGridAdapter: HomeGridAdapter by lazy { + val list = mutableListOf() + HomeGridAdapter(list) + } + private var mPager = Pager() var list = mutableListOf() private val statusBtnList = mutableListOf() @@ -71,6 +78,8 @@ class HomeFragment : BaseFragment(), HomeView, private val mVacation = Vacation() private val mVacationAttachment = Attachment("", "", "") private var isRefresh = false + private var listType = 2 //1 列表模式 2 grid模式 + private var is_hide = 0 //1 离校 0 未离校 private val refreshRun = Runnable { refreshData() @@ -85,8 +94,14 @@ class HomeFragment : BaseFragment(), HomeView, LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) recyclerView.adapter = mAdapter + recyclerView2.layoutManager = + GridLayoutManager(context, 5, GridLayoutManager.VERTICAL, false) + recyclerView2.adapter = mGridAdapter + preTxtBtn.setOnClickListener { pre() } nextTxtBtn.setOnClickListener { next() } + preTxtBtn2.setOnClickListener { pre() } + nextTxtBtn2.setOnClickListener { next() } allBtn.setOnClickListener { changeStatus(0) } yesterday.setOnClickListener { changeStatus(2) } last7Days.setOnClickListener { changeStatus(3) } @@ -122,6 +137,17 @@ class HomeFragment : BaseFragment(), HomeView, } } + mGridAdapter.setOnItemClickListener { adapter, view, position -> + val curr = TimeUtils.getNowMills() + if (curr - lastClickTime > 500) { + lastClickTime = curr + LogUtils.d("获取详情开始", TimeUtils.getNowMills(), mAdapter.getItem(position).id) + showLayoutLoading() + mPresenter?.getDetail(mGridAdapter.getItem(position).id) + } + } + + mAdapter.setOnItemChildClickListener { adapter, view, position -> LogUtils.d("setOnItemChildClickListener", position) val curr = TimeUtils.getNowMills() @@ -141,6 +167,21 @@ class HomeFragment : BaseFragment(), HomeView, } } + mGridAdapter.setOnItemChildClickListener { adapter, view, position -> + LogUtils.d("setOnItemChildClickListener", position) + val curr = TimeUtils.getNowMills() + if (curr - lastClickTime > 500) { + lastClickTime = curr + when (view.id) { + R.id.sureBtn, + R.id.faceEmpty -> { + showLayoutLoading() + mPresenter?.getDetail(mGridAdapter.getItem(position).id) + } + } + } + } + switchBtn.setOnCheckedChangeListener { buttonView, isChecked -> SPUtils.getInstance().put("auto_show_leave", isChecked) @@ -156,6 +197,28 @@ class HomeFragment : BaseFragment(), HomeView, EventBus.getDefault().post(AutoSwitchChange(1)) } + + hideType0.setOnClickListener { + + is_hide = if(is_hide==0){ + -1 + }else{ + 0 + } + changeSwitch2BtnTxt() + initData() + } + hideType1.setOnClickListener { + is_hide = if(is_hide==1){ + -1 + }else{ + 1 + } + changeSwitch2BtnTxt() + initData() + } + changeSwitch2BtnTxt() + keywordInput.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -191,9 +254,26 @@ class HomeFragment : BaseFragment(), HomeView, showLayoutLoading() initData() } + goPageOne2.setOnClickListener { + showLayoutLoading() + initData() + } filterBtn.setOnClickListener { showFilterDialog(this.status) } + + listType1Btn.setOnClickListener { + listType1Btn.visibility = View.GONE + listType2Btn.visibility = View.VISIBLE + listType = 1 + initData() + } + listType2Btn.setOnClickListener { + listType2Btn.visibility = View.GONE + listType1Btn.visibility = View.VISIBLE + listType = 2 + initData() + } } private fun showLayoutLoading() { @@ -328,6 +408,19 @@ class HomeFragment : BaseFragment(), HomeView, } } + private fun changeSwitch2BtnTxt() { + if (is_hide == 0) { + hideType0.isSelected = true + hideType1.isSelected = false + } else if (is_hide == 1) { + hideType0.isSelected = false + hideType1.isSelected = true + } else { + hideType0.isSelected = false + hideType1.isSelected = false + } + } + @SuppressLint("SetTextI18n") private fun showLeaveDialog(detail: StuLeave) { EventBus.getDefault().post(detail) @@ -376,7 +469,7 @@ class HomeFragment : BaseFragment(), HomeView, if (NetworkUtils.isConnected()) { showEmpty(1) isLoading = true - mPresenter?.getLeaveList(mPager.page_no, keyword, status, add_time) + mPresenter?.getLeaveList(mPager.page_no, keyword, status, add_time, listType, is_hide) } else { showEmpty(2) } @@ -394,6 +487,12 @@ class HomeFragment : BaseFragment(), HomeView, this.QMUIEmptyView.setLoadingShowing(true) this.QMUIEmptyView.setTitleText("数据加载中") } + + mGridAdapter.setEmptyView(R.layout.layout_loading) + mGridAdapter.emptyLayout?.apply { + this.QMUIEmptyView.setLoadingShowing(true) + this.QMUIEmptyView.setTitleText("数据加载中") + } } 2 -> { @@ -403,10 +502,18 @@ class HomeFragment : BaseFragment(), HomeView, NetworkUtils.openWirelessSettings() } } + + mGridAdapter.setEmptyView(R.layout.layout_loading) + mGridAdapter.emptyLayout?.apply { + this.QMUIEmptyView.show(false, null, "网络连接异常,请检查", "去设置") { + NetworkUtils.openWirelessSettings() + } + } } 3 -> { mAdapter.setEmptyView(R.layout.layout_empty) + mGridAdapter.setEmptyView(R.layout.layout_empty) } } @@ -418,7 +525,7 @@ class HomeFragment : BaseFragment(), HomeView, } isLoading = true if (NetworkUtils.isConnected()) { - mPresenter?.getLeaveList(mPager.page_no, keyword, status, add_time) + mPresenter?.getLeaveList(mPager.page_no, keyword, status, add_time, listType, is_hide) } } @@ -431,7 +538,14 @@ class HomeFragment : BaseFragment(), HomeView, } else { isLoading = true showLayoutLoading() - mPresenter?.getLeaveList(mPager.page_no - 1, keyword, status, add_time) + mPresenter?.getLeaveList( + mPager.page_no - 1, + keyword, + status, + add_time, + listType, + is_hide + ) } } @@ -444,7 +558,14 @@ class HomeFragment : BaseFragment(), HomeView, } else { isLoading = true showLayoutLoading() - mPresenter?.getLeaveList(mPager.page_no + 1, keyword, status, add_time) + mPresenter?.getLeaveList( + mPager.page_no + 1, + keyword, + status, + add_time, + listType, + is_hide + ) } } @@ -458,29 +579,45 @@ class HomeFragment : BaseFragment(), HomeView, isRefresh = false } mAdapter.setList(list) + mGridAdapter.setList(list) + mPager = pager pageTv.text = "${pager.page_no} / ${pager.total_pages}" totalTv.text = "共${pager.total_count}条" + pageTv2.text = "${pager.page_no} / ${pager.total_pages}" + totalTv2.text = "共${pager.total_count}条" + val disabledColor = Color.parseColor("#666666") - val color = Color.parseColor("#3ca0e9") if (pager.page_no <= 1) { preTxtBtn.textColor = disabledColor goPageOne.visibility = View.GONE + preTxtBtn2.textColor = disabledColor + goPageOne2.visibility = View.GONE } else { preTxtBtn.textColor = resources.getColor(R.color.s_app_color_blue) goPageOne.visibility = View.VISIBLE + preTxtBtn2.textColor = resources.getColor(R.color.s_app_color_blue) + goPageOne2.visibility = View.VISIBLE } if (pager.page_no >= pager.total_pages) { nextTxtBtn.textColor = disabledColor + nextTxtBtn2.textColor = disabledColor } else { - nextTxtBtn.textColor = resources.getColor(R.color.s_app_color_blue) + nextTxtBtn2.textColor = resources.getColor(R.color.s_app_color_blue) } isLoading = false showEmpty(3) hideLayoutLoading() + if (listType == 1) { + listTypeLayout2.visibility = View.GONE + listTypeLayout1.visibility = View.VISIBLE + } else { + listTypeLayout1.visibility = View.GONE + listTypeLayout2.visibility = View.VISIBLE + } pageTv.postDelayed({ refreshData() }, 30 * 1000) @@ -493,6 +630,13 @@ class HomeFragment : BaseFragment(), HomeView, EventBus.getDefault().unregister(this) } + //接收异动消息 + @Subscribe(threadMode = ThreadMode.MAIN) + fun onMessageEvent(detail: SureOutSchool) { + showLoading("处理中...") + mPresenter?.outSchool(detail.item) + } + override fun onLeaveListError(error: String) { isLoading = false hideLayoutLoading() @@ -619,5 +763,16 @@ class HomeFragment : BaseFragment(), HomeView, override fun onError(msg: String) { LogUtils.d(msg) } + + override fun postHideSuccess(msg: String) { + showDialogToast(msg, 2000L) + hideLoading() + initData() + } + + override fun postHideError(msg: String) { + showDialogToast(msg, 2000L) + hideLoading() + } } diff --git a/app/src/main/java/com/yzx/escreen/model/EventBugBean.kt b/app/src/main/java/com/yzx/escreen/model/EventBugBean.kt index 5c206d2..e7036a5 100644 --- a/app/src/main/java/com/yzx/escreen/model/EventBugBean.kt +++ b/app/src/main/java/com/yzx/escreen/model/EventBugBean.kt @@ -5,4 +5,6 @@ class EventBugBean { data class EventLeaveIds(var ids:String="") -data class UserVersionCheck(var userCheck:Boolean = true) \ No newline at end of file +data class UserVersionCheck(var userCheck:Boolean = true) + +data class SureOutSchool(val item:StuLeave) \ No newline at end of file diff --git a/app/src/main/java/com/yzx/escreen/model/StuLeave.kt b/app/src/main/java/com/yzx/escreen/model/StuLeave.kt index 9e86f65..023537c 100644 --- a/app/src/main/java/com/yzx/escreen/model/StuLeave.kt +++ b/app/src/main/java/com/yzx/escreen/model/StuLeave.kt @@ -1,5 +1,6 @@ package com.yzx.escreen.model +import android.os.Parcel import android.os.Parcelable import com.yzx.escreen.utils.durationStr import kotlinx.android.parcel.Parcelize @@ -37,7 +38,8 @@ data class StuLeave( val start_time: Int = 0, val status: Int = 0, val todo_list_id: Int = 0, - val todo_status: Int = 0 + val todo_status: Int = 0, + val is_hide:Int = 0 ) : Parcelable { fun getStep(): MutableList { diff --git a/app/src/main/java/com/yzx/escreen/presenter/HomePresenter.kt b/app/src/main/java/com/yzx/escreen/presenter/HomePresenter.kt index f0a7cab..64f6e1c 100644 --- a/app/src/main/java/com/yzx/escreen/presenter/HomePresenter.kt +++ b/app/src/main/java/com/yzx/escreen/presenter/HomePresenter.kt @@ -20,45 +20,104 @@ import java.util.Calendar class HomePresenter(view: HomeView) : BasePresenter(view) { - fun getLeaveList(pageNo: Int, keyword: String, status: String, add_time: String) { - if(User.getUser().token.isEmpty()){ + fun getLeaveList( + pageNo: Int, + keyword: String, + status: String, + add_time: String, + listType: Int, + is_hide: Int + ) { + if (User.getUser().token.isEmpty()) { return } val calendar = Calendar.getInstance() - var endTime: Long =0 - var startTime: Long =0 + var endTime: Long = 0 + var startTime: Long = 0 when (add_time) { "today" -> { - calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DATE),23,59,59) - endTime = calendar.timeInMillis/1000 // 当前时间戳 - calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DATE),0,0,0) - startTime = calendar.timeInMillis/1000 // 开始时间戳 + calendar.set( + calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), + calendar.get(Calendar.DATE), + 23, + 59, + 59 + ) + endTime = calendar.timeInMillis / 1000 // 当前时间戳 + calendar.set( + calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), + calendar.get(Calendar.DATE), + 0, + 0, + 0 + ) + startTime = calendar.timeInMillis / 1000 // 开始时间戳 } + "yesterday" -> { calendar.add(Calendar.DAY_OF_YEAR, -1) // 将日期往前推1天 - calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DATE),23,59,59) - endTime = calendar.timeInMillis/1000 // 当前时间戳 - calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DATE),0,0,0) - startTime = calendar.timeInMillis/1000 // 开始时间戳 + calendar.set( + calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), + calendar.get(Calendar.DATE), + 23, + 59, + 59 + ) + endTime = calendar.timeInMillis / 1000 // 当前时间戳 + calendar.set( + calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), + calendar.get(Calendar.DATE), + 0, + 0, + 0 + ) + startTime = calendar.timeInMillis / 1000 // 开始时间戳 } + "last7Days" -> { - calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DATE),23,59,59) - endTime = calendar.timeInMillis/1000 // 当前时间戳 + calendar.set( + calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), + calendar.get(Calendar.DATE), + 23, + 59, + 59 + ) + endTime = calendar.timeInMillis / 1000 // 当前时间戳 calendar.add(Calendar.DAY_OF_YEAR, -6) // 将日期往前推6天 - calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DATE),0,0,0) - startTime = calendar.timeInMillis/1000 // 近七天的开始时间戳 + calendar.set( + calendar.get(Calendar.YEAR), + calendar.get(Calendar.MONTH), + calendar.get(Calendar.DATE), + 0, + 0, + 0 + ) + startTime = calendar.timeInMillis / 1000 // 近七天的开始时间戳 } } - val params = HashMap() + val params = HashMap() params["keyword"] = keyword params["status"] = status - params["page_size"] = "6" + if (listType == 1) { + params["page_size"] = "6" + } else { + params["page_size"] = "20" + } params["page_no"] = "$pageNo" - if(add_time!=""){ + if (add_time != "") { params["start_time"] = "$startTime" params["end_time"] = "$endTime" } + if (is_hide == 0 || is_hide == 1) { + params["is_hide"] = "${is_hide}" + } + val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_GET_STU_LEAVE_LIST}" OkGo.post>(url) .tag(this) @@ -80,8 +139,9 @@ class HomePresenter(view: HomeView) : BasePresenter(view) { } }) } + fun getLeaveShowIds() { - if(User.getUser().token.isEmpty()){ + if (User.getUser().token.isEmpty()) { return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_GET_SHOW_BOX_LIST}" @@ -91,7 +151,7 @@ class HomePresenter(view: HomeView) : BasePresenter(view) { override fun onSuccess(response: Response>?) { if (response?.isSuccessful == true) { mView?.onLeaveIDsSuccess(response.body().list) - LogUtils.d("getLeaveShowIds",response.body().list) + LogUtils.d("getLeaveShowIds", response.body().list) } } @@ -104,7 +164,7 @@ class HomePresenter(view: HomeView) : BasePresenter(view) { } fun getDetail(id: Int) { - if(User.getUser().token.isEmpty()){ + if (User.getUser().token.isEmpty()) { return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_GET_STU_LEAVE_INFO_DETAIL}" @@ -129,8 +189,8 @@ class HomePresenter(view: HomeView) : BasePresenter(view) { }) } - fun postVacation(data:Vacation){ - if(User.getUser().token.isEmpty()){ + fun postVacation(data: Vacation) { + if (User.getUser().token.isEmpty()) { return } val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_POST_LEAVE_VACATION}" @@ -159,6 +219,33 @@ class HomePresenter(view: HomeView) : BasePresenter(view) { }) } + fun outSchool(item:StuLeave){ + if (User.getUser().token.isEmpty()) { + return + } + val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_POST_HIDE_LEAVE}" + OkGo.post(url) + .tag(this) + .params("is_hide", 1) + .params("id", item.id) + .execute(object : JsonCallBack() { + + + override fun onSuccess(response: Response?) { + LogUtils.d(response) + if (response?.isSuccessful == true) { + mView?.postHideSuccess("已放行!") + } + } + + override fun onError(response: Response?) { + super.onError(response) + LogUtils.d(response) + mView?.postHideError(response?.body()?.msg ?: "操作失败,请重试!") + } + }) + } + } interface HomeView : IView { @@ -169,4 +256,7 @@ interface HomeView : IView { fun onLeaveIDsSuccess(list: MutableList) fun postVacationSuccess(msg: String) fun postVacationError(msg: String) + + fun postHideSuccess(msg: String) + fun postHideError(msg: String) } \ No newline at end of file diff --git a/app/src/main/java/com/yzx/escreen/widget/LeaveDialog.kt b/app/src/main/java/com/yzx/escreen/widget/LeaveDialog.kt index 92f7cbe..7b368cb 100644 --- a/app/src/main/java/com/yzx/escreen/widget/LeaveDialog.kt +++ b/app/src/main/java/com/yzx/escreen/widget/LeaveDialog.kt @@ -36,7 +36,8 @@ class LeaveDialog( val adapter: HomeDialogStepAdapter by lazy { HomeDialogStepAdapter(mutableListOf()) } - var onCloseClick: (view:View) -> Unit = {} + var onCloseClick: (view: View) -> Unit = {} + var onSureClick: (view: View, item: StuLeave) -> Unit = { view: View, stuLeave: StuLeave -> } init { val view = LayoutInflater.from(context).inflate(R.layout.dialog_leave, null) @@ -49,7 +50,7 @@ class LeaveDialog( view.layoutParams = layoutParams addView(view) background = ContextCompat.getDrawable(context, R.color.dialog_bg) - setOnClickListener { } //阻止事件冒泡 + setOnClickListener { } //阻止事件冒泡 } @SuppressLint("SetTextI18n") @@ -65,7 +66,8 @@ class LeaveDialog( find(R.id.face_img).visibility = View.GONE } find(R.id.face_img).setOnClickListener { - EventBus.getDefault().post(ViewImage(detail.id,detail.face_identity,detail?.face_key?:"")) + EventBus.getDefault() + .post(ViewImage(detail.id, detail.face_identity, detail?.face_key ?: "")) } find(R.id.class_name).text = "${detail.grade_name}${detail.class_name}" find(R.id.leave_request_type_name).text = detail.leave_request_type_name @@ -96,5 +98,13 @@ class LeaveDialog( find(R.id.closeBtn).setOnClickListener { onCloseClick(this) } + find(R.id.sureBtn).setOnClickListener { + onSureClick(this, detail) + } + find(R.id.sureBtn).visibility = if (detail.is_hide == 0) { + View.VISIBLE + } else { + View.GONE + } } } \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_leave_item.xml b/app/src/main/res/drawable/shape_leave_item.xml new file mode 100644 index 0000000..4821a17 --- /dev/null +++ b/app/src/main/res/drawable/shape_leave_item.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_leave.xml b/app/src/main/res/layout/dialog_leave.xml index 62c300d..cbfea7a 100644 --- a/app/src/main/res/layout/dialog_leave.xml +++ b/app/src/main/res/layout/dialog_leave.xml @@ -172,18 +172,42 @@ - + android:layout_height="wrap_content" + android:layout_marginBottom="@dimen/d_20"> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 1b2b144..a5bcb1c 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -67,8 +67,8 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -152,15 +239,18 @@ android:layout_gravity="center_vertical" android:layout_marginStart="@dimen/d_10" android:gravity="center" - android:text="自动弹出请假单" + android:text="自动弹出" + android:includeFontPadding="false" android:textColor="#53a051" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_visitor.xml b/app/src/main/res/layout/fragment_visitor.xml index 051f1e9..ed5ea43 100644 --- a/app/src/main/res/layout/fragment_visitor.xml +++ b/app/src/main/res/layout/fragment_visitor.xml @@ -67,8 +67,8 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xhdpi/icon_grid.png b/app/src/main/res/mipmap-xhdpi/icon_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..e6558668ef23deeab3d3110de17f797e17b739ad GIT binary patch literal 705 zcmV;y0zUnTP)Px%dr3q=RCr$PThWn%Kn&e@jc6y@0iO3SRH9Y_{+~(*M<+)knw#ao0fY@sHV$f- z@kbzpw|Uu@Apzq!f;gB?CT0x?b7Rc3{JCx!!@0b4B1gpi#h5IO((1n(|Dem`+KX?; z@J37@as*5+7qjmI;s$`PIG7{A5A&g8yuAS8xK4L<=NbTf#z6=G@ff}Lofe>Q@-% zfEdBR#Mj`Bzg6&Wso27enFGLv(k%$Mg#qE8AHvhjzpJtqEf637+qo5ReMbhXWclm5 z2oa+yW6HYh-}-=^Ew=zTv;P@!=8}^B-S%g(i~_sBeFqJ|Av|@;Wq)qUTA~)1i~t2d zBS0zO%mEa~+7yz$zMWC1=dp7D^#BE+l|!Tf(+FrGKmo24pb(;Tz`gfNU#}EU3N#U* zB95H{WR*PMx&lB{yBYyhh)}x#KS*UQQ18c%0O|oMg;feS%W3I|Q6Z#4=)porI;8Kl zuM|)UJeUHqGKO!Rq7YjM@m-X)pa5tw%agNDwhC!asFg$JSbXa?4xC#+x nD|~HFT|edcJYd%M;uQdYRG0Uycq8oe00000NkvXXu0mjf)C@f! literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/icon_list.png b/app/src/main/res/mipmap-xhdpi/icon_list.png new file mode 100644 index 0000000000000000000000000000000000000000..30407a849b6a40d9a3586f7e74cf118019647b86 GIT binary patch literal 713 zcmV;)0yh1LP)Px%gGod|RCr$PTV0ZZFbrygeB)xVfR10kA0R=NP7; z0Gh-nbL!>pg+Y53=w_!hg$uC-fD=`>AmAA^+&{j#k4-n?cDJhp;^RM^%L1onBJY_SAD$^K8ojjELF&W83oXI>x;-1N`@+}uZPxoj_9KRZwcCOv=w zU=QFBP;vkjW7QC%)|)Z|6{6I6)*L_`zyMS@gaV8`zz_ir0U}FL9>*L&A!O@fOoDSK zK|{{!eL3af)*R5gMurD60K|2lJ%Dl%&H|Q&2B*Qfr$N&YqShOdys!;XYZ9as;t=2v zDF38Jc?^euAp(PQfT6s-FQ+`tngn~-$nZc0fbRn8|30llfO0Xe1Go<0I-vB|8Wl2z zB+qw&!3!bEqD+EJf-@&UQ_|{tJr$zXg;3uLnV!c0@Lj<2E->XrNf|CWA)suP1;kxG zTwof1L$B9p1W!9fWka!?3Ttd9oo}-=2Kw#tipi^?EnPgn&@NBTKFLOK&}b+glYXtr zBKeI+W+bFb^nyIQz3%E7jM=LD4Y^q{vy}%Yug(b&<}fbXh;MZQW=W&7qOPV{!tk_^ v(_z(_;oL=(t?-4MdYt6=JYdwMcn-iH0S=k1{A(HA00000NkvXXu0mjfM^!$9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 56ceb71..ce3d306 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -205,9 +205,9 @@