| @@ -19,8 +19,8 @@ android { | |||||
| // minSdkVersion 26 | // minSdkVersion 26 | ||||
| minSdkVersion 21 | minSdkVersion 21 | ||||
| targetSdkVersion 25 | targetSdkVersion 25 | ||||
| versionCode 30102 | |||||
| versionName "3.1.2" | |||||
| versionCode 30200 | |||||
| versionName "3.2.0" | |||||
| testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | ||||
| ndk { | ndk { | ||||
| @@ -250,6 +250,22 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus | |||||
| dialogLayout.removeView(it) | dialogLayout.removeView(it) | ||||
| dialogList.remove(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) | dialogLayout.addView(dialog) | ||||
| dialogList.add(dialog) | dialogList.add(dialog) | ||||
| } | } | ||||
| @@ -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<StuLeave>) : | |||||
| BaseQuickAdapter<StuLeave, BaseViewHolder>(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() | |||||
| } | |||||
| } | |||||
| @@ -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_OLD= "/edu/attendance/student/getStudentLeaveIds" //获取需要弹出的数据 | ||||
| const val INTERFACE_STUDENT_GET_SHOW_BOX_LIST= "/edu/attendance/student/getStudentLeaveIdsV2" //获取需要弹出的数据 | 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_LEAVE_VACATION= "/edu/attendance/student/studentLeaveVacation"//人工销假操作 | ||||
| const val INTERFACE_STUDENT_POST_HIDE_LEAVE= "/edu/attendance/hideStudentLeave"//离校 | |||||
| /** | /** | ||||
| * 学籍异动 | * 学籍异动 | ||||
| */ | */ | ||||
| @@ -12,6 +12,7 @@ import android.view.View | |||||
| import android.widget.EditText | import android.widget.EditText | ||||
| import android.widget.ImageView | import android.widget.ImageView | ||||
| import android.widget.TextView | import android.widget.TextView | ||||
| import androidx.recyclerview.widget.GridLayoutManager | |||||
| import androidx.recyclerview.widget.LinearLayoutManager | import androidx.recyclerview.widget.LinearLayoutManager | ||||
| import com.blankj.utilcode.util.* | import com.blankj.utilcode.util.* | ||||
| import com.huantansheng.easyphotos.EasyPhotos | 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.dialog.QMUITipDialog | ||||
| import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | ||||
| import com.yzx.escreen.R | import com.yzx.escreen.R | ||||
| import com.yzx.escreen.adapter.HomeGridAdapter | |||||
| import com.yzx.escreen.adapter.HomeListAdapter | import com.yzx.escreen.adapter.HomeListAdapter | ||||
| import com.yzx.escreen.fragment.base.BaseFragment | import com.yzx.escreen.fragment.base.BaseFragment | ||||
| import com.yzx.escreen.model.* | import com.yzx.escreen.model.* | ||||
| @@ -56,6 +58,11 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| HomeListAdapter(list) | HomeListAdapter(list) | ||||
| } | } | ||||
| private val mGridAdapter: HomeGridAdapter by lazy { | |||||
| val list = mutableListOf<StuLeave>() | |||||
| HomeGridAdapter(list) | |||||
| } | |||||
| private var mPager = Pager() | private var mPager = Pager() | ||||
| var list = mutableListOf<StuLeave>() | var list = mutableListOf<StuLeave>() | ||||
| private val statusBtnList = mutableListOf<QMUIRoundButton>() | private val statusBtnList = mutableListOf<QMUIRoundButton>() | ||||
| @@ -71,6 +78,8 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| private val mVacation = Vacation() | private val mVacation = Vacation() | ||||
| private val mVacationAttachment = Attachment("", "", "") | private val mVacationAttachment = Attachment("", "", "") | ||||
| private var isRefresh = false | private var isRefresh = false | ||||
| private var listType = 2 //1 列表模式 2 grid模式 | |||||
| private var is_hide = 0 //1 离校 0 未离校 | |||||
| private val refreshRun = Runnable { | private val refreshRun = Runnable { | ||||
| refreshData() | refreshData() | ||||
| @@ -85,8 +94,14 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) | LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) | ||||
| recyclerView.adapter = mAdapter | recyclerView.adapter = mAdapter | ||||
| recyclerView2.layoutManager = | |||||
| GridLayoutManager(context, 5, GridLayoutManager.VERTICAL, false) | |||||
| recyclerView2.adapter = mGridAdapter | |||||
| preTxtBtn.setOnClickListener { pre() } | preTxtBtn.setOnClickListener { pre() } | ||||
| nextTxtBtn.setOnClickListener { next() } | nextTxtBtn.setOnClickListener { next() } | ||||
| preTxtBtn2.setOnClickListener { pre() } | |||||
| nextTxtBtn2.setOnClickListener { next() } | |||||
| allBtn.setOnClickListener { changeStatus(0) } | allBtn.setOnClickListener { changeStatus(0) } | ||||
| yesterday.setOnClickListener { changeStatus(2) } | yesterday.setOnClickListener { changeStatus(2) } | ||||
| last7Days.setOnClickListener { changeStatus(3) } | last7Days.setOnClickListener { changeStatus(3) } | ||||
| @@ -122,6 +137,17 @@ class HomeFragment : BaseFragment<HomePresenter>(), 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 -> | mAdapter.setOnItemChildClickListener { adapter, view, position -> | ||||
| LogUtils.d("setOnItemChildClickListener", position) | LogUtils.d("setOnItemChildClickListener", position) | ||||
| val curr = TimeUtils.getNowMills() | val curr = TimeUtils.getNowMills() | ||||
| @@ -141,6 +167,21 @@ class HomeFragment : BaseFragment<HomePresenter>(), 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 -> | switchBtn.setOnCheckedChangeListener { buttonView, isChecked -> | ||||
| SPUtils.getInstance().put("auto_show_leave", isChecked) | SPUtils.getInstance().put("auto_show_leave", isChecked) | ||||
| @@ -156,6 +197,28 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| EventBus.getDefault().post(AutoSwitchChange(1)) | 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 { | keywordInput.addTextChangedListener(object : TextWatcher { | ||||
| override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { | override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { | ||||
| @@ -191,9 +254,26 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| showLayoutLoading() | showLayoutLoading() | ||||
| initData() | initData() | ||||
| } | } | ||||
| goPageOne2.setOnClickListener { | |||||
| showLayoutLoading() | |||||
| initData() | |||||
| } | |||||
| filterBtn.setOnClickListener { | filterBtn.setOnClickListener { | ||||
| showFilterDialog(this.status) | 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() { | private fun showLayoutLoading() { | ||||
| @@ -328,6 +408,19 @@ class HomeFragment : BaseFragment<HomePresenter>(), 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") | @SuppressLint("SetTextI18n") | ||||
| private fun showLeaveDialog(detail: StuLeave) { | private fun showLeaveDialog(detail: StuLeave) { | ||||
| EventBus.getDefault().post(detail) | EventBus.getDefault().post(detail) | ||||
| @@ -376,7 +469,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| if (NetworkUtils.isConnected()) { | if (NetworkUtils.isConnected()) { | ||||
| showEmpty(1) | showEmpty(1) | ||||
| isLoading = true | isLoading = true | ||||
| mPresenter?.getLeaveList(mPager.page_no, keyword, status, add_time) | |||||
| mPresenter?.getLeaveList(mPager.page_no, keyword, status, add_time, listType, is_hide) | |||||
| } else { | } else { | ||||
| showEmpty(2) | showEmpty(2) | ||||
| } | } | ||||
| @@ -394,6 +487,12 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| this.QMUIEmptyView.setLoadingShowing(true) | this.QMUIEmptyView.setLoadingShowing(true) | ||||
| this.QMUIEmptyView.setTitleText("数据加载中") | this.QMUIEmptyView.setTitleText("数据加载中") | ||||
| } | } | ||||
| mGridAdapter.setEmptyView(R.layout.layout_loading) | |||||
| mGridAdapter.emptyLayout?.apply { | |||||
| this.QMUIEmptyView.setLoadingShowing(true) | |||||
| this.QMUIEmptyView.setTitleText("数据加载中") | |||||
| } | |||||
| } | } | ||||
| 2 -> { | 2 -> { | ||||
| @@ -403,10 +502,18 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| NetworkUtils.openWirelessSettings() | NetworkUtils.openWirelessSettings() | ||||
| } | } | ||||
| } | } | ||||
| mGridAdapter.setEmptyView(R.layout.layout_loading) | |||||
| mGridAdapter.emptyLayout?.apply { | |||||
| this.QMUIEmptyView.show(false, null, "网络连接异常,请检查", "去设置") { | |||||
| NetworkUtils.openWirelessSettings() | |||||
| } | |||||
| } | |||||
| } | } | ||||
| 3 -> { | 3 -> { | ||||
| mAdapter.setEmptyView(R.layout.layout_empty) | mAdapter.setEmptyView(R.layout.layout_empty) | ||||
| mGridAdapter.setEmptyView(R.layout.layout_empty) | |||||
| } | } | ||||
| } | } | ||||
| @@ -418,7 +525,7 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| } | } | ||||
| isLoading = true | isLoading = true | ||||
| if (NetworkUtils.isConnected()) { | 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<HomePresenter>(), HomeView, | |||||
| } else { | } else { | ||||
| isLoading = true | isLoading = true | ||||
| showLayoutLoading() | 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<HomePresenter>(), HomeView, | |||||
| } else { | } else { | ||||
| isLoading = true | isLoading = true | ||||
| showLayoutLoading() | 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<HomePresenter>(), HomeView, | |||||
| isRefresh = false | isRefresh = false | ||||
| } | } | ||||
| mAdapter.setList(list) | mAdapter.setList(list) | ||||
| mGridAdapter.setList(list) | |||||
| mPager = pager | mPager = pager | ||||
| pageTv.text = "${pager.page_no} / ${pager.total_pages}" | pageTv.text = "${pager.page_no} / ${pager.total_pages}" | ||||
| totalTv.text = "共${pager.total_count}条" | totalTv.text = "共${pager.total_count}条" | ||||
| pageTv2.text = "${pager.page_no} / ${pager.total_pages}" | |||||
| totalTv2.text = "共${pager.total_count}条" | |||||
| val disabledColor = Color.parseColor("#666666") | val disabledColor = Color.parseColor("#666666") | ||||
| val color = Color.parseColor("#3ca0e9") | |||||
| if (pager.page_no <= 1) { | if (pager.page_no <= 1) { | ||||
| preTxtBtn.textColor = disabledColor | preTxtBtn.textColor = disabledColor | ||||
| goPageOne.visibility = View.GONE | goPageOne.visibility = View.GONE | ||||
| preTxtBtn2.textColor = disabledColor | |||||
| goPageOne2.visibility = View.GONE | |||||
| } else { | } else { | ||||
| preTxtBtn.textColor = resources.getColor(R.color.s_app_color_blue) | preTxtBtn.textColor = resources.getColor(R.color.s_app_color_blue) | ||||
| goPageOne.visibility = View.VISIBLE | 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) { | if (pager.page_no >= pager.total_pages) { | ||||
| nextTxtBtn.textColor = disabledColor | nextTxtBtn.textColor = disabledColor | ||||
| nextTxtBtn2.textColor = disabledColor | |||||
| } else { | } else { | ||||
| nextTxtBtn.textColor = resources.getColor(R.color.s_app_color_blue) | |||||
| nextTxtBtn2.textColor = resources.getColor(R.color.s_app_color_blue) | |||||
| } | } | ||||
| isLoading = false | isLoading = false | ||||
| showEmpty(3) | showEmpty(3) | ||||
| hideLayoutLoading() | hideLayoutLoading() | ||||
| if (listType == 1) { | |||||
| listTypeLayout2.visibility = View.GONE | |||||
| listTypeLayout1.visibility = View.VISIBLE | |||||
| } else { | |||||
| listTypeLayout1.visibility = View.GONE | |||||
| listTypeLayout2.visibility = View.VISIBLE | |||||
| } | |||||
| pageTv.postDelayed({ | pageTv.postDelayed({ | ||||
| refreshData() | refreshData() | ||||
| }, 30 * 1000) | }, 30 * 1000) | ||||
| @@ -493,6 +630,13 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| EventBus.getDefault().unregister(this) | EventBus.getDefault().unregister(this) | ||||
| } | } | ||||
| //接收异动消息 | |||||
| @Subscribe(threadMode = ThreadMode.MAIN) | |||||
| fun onMessageEvent(detail: SureOutSchool) { | |||||
| showLoading("处理中...") | |||||
| mPresenter?.outSchool(detail.item) | |||||
| } | |||||
| override fun onLeaveListError(error: String) { | override fun onLeaveListError(error: String) { | ||||
| isLoading = false | isLoading = false | ||||
| hideLayoutLoading() | hideLayoutLoading() | ||||
| @@ -619,5 +763,16 @@ class HomeFragment : BaseFragment<HomePresenter>(), HomeView, | |||||
| override fun onError(msg: String) { | override fun onError(msg: String) { | ||||
| LogUtils.d(msg) | LogUtils.d(msg) | ||||
| } | } | ||||
| override fun postHideSuccess(msg: String) { | |||||
| showDialogToast(msg, 2000L) | |||||
| hideLoading() | |||||
| initData() | |||||
| } | |||||
| override fun postHideError(msg: String) { | |||||
| showDialogToast(msg, 2000L) | |||||
| hideLoading() | |||||
| } | |||||
| } | } | ||||
| @@ -5,4 +5,6 @@ class EventBugBean { | |||||
| data class EventLeaveIds(var ids:String="") | data class EventLeaveIds(var ids:String="") | ||||
| data class UserVersionCheck(var userCheck:Boolean = true) | |||||
| data class UserVersionCheck(var userCheck:Boolean = true) | |||||
| data class SureOutSchool(val item:StuLeave) | |||||
| @@ -1,5 +1,6 @@ | |||||
| package com.yzx.escreen.model | package com.yzx.escreen.model | ||||
| import android.os.Parcel | |||||
| import android.os.Parcelable | import android.os.Parcelable | ||||
| import com.yzx.escreen.utils.durationStr | import com.yzx.escreen.utils.durationStr | ||||
| import kotlinx.android.parcel.Parcelize | import kotlinx.android.parcel.Parcelize | ||||
| @@ -37,7 +38,8 @@ data class StuLeave( | |||||
| val start_time: Int = 0, | val start_time: Int = 0, | ||||
| val status: Int = 0, | val status: Int = 0, | ||||
| val todo_list_id: Int = 0, | val todo_list_id: Int = 0, | ||||
| val todo_status: Int = 0 | |||||
| val todo_status: Int = 0, | |||||
| val is_hide:Int = 0 | |||||
| ) : Parcelable { | ) : Parcelable { | ||||
| fun getStep(): MutableList<LeaveActivity> { | fun getStep(): MutableList<LeaveActivity> { | ||||
| @@ -20,45 +20,104 @@ import java.util.Calendar | |||||
| class HomePresenter(view: HomeView) : BasePresenter<HomeView>(view) { | class HomePresenter(view: HomeView) : BasePresenter<HomeView>(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 | return | ||||
| } | } | ||||
| val calendar = Calendar.getInstance() | val calendar = Calendar.getInstance() | ||||
| var endTime: Long =0 | |||||
| var startTime: Long =0 | |||||
| var endTime: Long = 0 | |||||
| var startTime: Long = 0 | |||||
| when (add_time) { | when (add_time) { | ||||
| "today" -> { | "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" -> { | "yesterday" -> { | ||||
| calendar.add(Calendar.DAY_OF_YEAR, -1) // 将日期往前推1天 | 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" -> { | "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.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<String,String>() | |||||
| val params = HashMap<String, String>() | |||||
| params["keyword"] = keyword | params["keyword"] = keyword | ||||
| params["status"] = status | params["status"] = status | ||||
| params["page_size"] = "6" | |||||
| if (listType == 1) { | |||||
| params["page_size"] = "6" | |||||
| } else { | |||||
| params["page_size"] = "20" | |||||
| } | |||||
| params["page_no"] = "$pageNo" | params["page_no"] = "$pageNo" | ||||
| if(add_time!=""){ | |||||
| if (add_time != "") { | |||||
| params["start_time"] = "$startTime" | params["start_time"] = "$startTime" | ||||
| params["end_time"] = "$endTime" | 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}" | val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_GET_STU_LEAVE_LIST}" | ||||
| OkGo.post<YzxResponse<StuLeave>>(url) | OkGo.post<YzxResponse<StuLeave>>(url) | ||||
| .tag(this) | .tag(this) | ||||
| @@ -80,8 +139,9 @@ class HomePresenter(view: HomeView) : BasePresenter<HomeView>(view) { | |||||
| } | } | ||||
| }) | }) | ||||
| } | } | ||||
| fun getLeaveShowIds() { | fun getLeaveShowIds() { | ||||
| if(User.getUser().token.isEmpty()){ | |||||
| if (User.getUser().token.isEmpty()) { | |||||
| return | return | ||||
| } | } | ||||
| val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_GET_SHOW_BOX_LIST}" | val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_GET_SHOW_BOX_LIST}" | ||||
| @@ -91,7 +151,7 @@ class HomePresenter(view: HomeView) : BasePresenter<HomeView>(view) { | |||||
| override fun onSuccess(response: Response<YzxResponse<LeaveID>>?) { | override fun onSuccess(response: Response<YzxResponse<LeaveID>>?) { | ||||
| if (response?.isSuccessful == true) { | if (response?.isSuccessful == true) { | ||||
| mView?.onLeaveIDsSuccess(response.body().list) | 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<HomeView>(view) { | |||||
| } | } | ||||
| fun getDetail(id: Int) { | fun getDetail(id: Int) { | ||||
| if(User.getUser().token.isEmpty()){ | |||||
| if (User.getUser().token.isEmpty()) { | |||||
| return | return | ||||
| } | } | ||||
| val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_GET_STU_LEAVE_INFO_DETAIL}" | val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_GET_STU_LEAVE_INFO_DETAIL}" | ||||
| @@ -129,8 +189,8 @@ class HomePresenter(view: HomeView) : BasePresenter<HomeView>(view) { | |||||
| }) | }) | ||||
| } | } | ||||
| fun postVacation(data:Vacation){ | |||||
| if(User.getUser().token.isEmpty()){ | |||||
| fun postVacation(data: Vacation) { | |||||
| if (User.getUser().token.isEmpty()) { | |||||
| return | return | ||||
| } | } | ||||
| val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_POST_LEAVE_VACATION}" | val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_POST_LEAVE_VACATION}" | ||||
| @@ -159,6 +219,33 @@ class HomePresenter(view: HomeView) : BasePresenter<HomeView>(view) { | |||||
| }) | }) | ||||
| } | } | ||||
| fun outSchool(item:StuLeave){ | |||||
| if (User.getUser().token.isEmpty()) { | |||||
| return | |||||
| } | |||||
| val url = "${Config.BASE_URL}${YzxInterface.INTERFACE_STUDENT_POST_HIDE_LEAVE}" | |||||
| OkGo.post<SimpleResponse>(url) | |||||
| .tag(this) | |||||
| .params("is_hide", 1) | |||||
| .params("id", item.id) | |||||
| .execute(object : JsonCallBack<SimpleResponse>() { | |||||
| override fun onSuccess(response: Response<SimpleResponse>?) { | |||||
| LogUtils.d(response) | |||||
| if (response?.isSuccessful == true) { | |||||
| mView?.postHideSuccess("已放行!") | |||||
| } | |||||
| } | |||||
| override fun onError(response: Response<SimpleResponse>?) { | |||||
| super.onError(response) | |||||
| LogUtils.d(response) | |||||
| mView?.postHideError(response?.body()?.msg ?: "操作失败,请重试!") | |||||
| } | |||||
| }) | |||||
| } | |||||
| } | } | ||||
| interface HomeView : IView { | interface HomeView : IView { | ||||
| @@ -169,4 +256,7 @@ interface HomeView : IView { | |||||
| fun onLeaveIDsSuccess(list: MutableList<LeaveID>) | fun onLeaveIDsSuccess(list: MutableList<LeaveID>) | ||||
| fun postVacationSuccess(msg: String) | fun postVacationSuccess(msg: String) | ||||
| fun postVacationError(msg: String) | fun postVacationError(msg: String) | ||||
| fun postHideSuccess(msg: String) | |||||
| fun postHideError(msg: String) | |||||
| } | } | ||||
| @@ -36,7 +36,8 @@ class LeaveDialog( | |||||
| val adapter: HomeDialogStepAdapter by lazy { | val adapter: HomeDialogStepAdapter by lazy { | ||||
| HomeDialogStepAdapter(mutableListOf()) | HomeDialogStepAdapter(mutableListOf()) | ||||
| } | } | ||||
| var onCloseClick: (view:View) -> Unit = {} | |||||
| var onCloseClick: (view: View) -> Unit = {} | |||||
| var onSureClick: (view: View, item: StuLeave) -> Unit = { view: View, stuLeave: StuLeave -> } | |||||
| init { | init { | ||||
| val view = LayoutInflater.from(context).inflate(R.layout.dialog_leave, null) | val view = LayoutInflater.from(context).inflate(R.layout.dialog_leave, null) | ||||
| @@ -49,7 +50,7 @@ class LeaveDialog( | |||||
| view.layoutParams = layoutParams | view.layoutParams = layoutParams | ||||
| addView(view) | addView(view) | ||||
| background = ContextCompat.getDrawable(context, R.color.dialog_bg) | background = ContextCompat.getDrawable(context, R.color.dialog_bg) | ||||
| setOnClickListener { } //阻止事件冒泡 | |||||
| setOnClickListener { } //阻止事件冒泡 | |||||
| } | } | ||||
| @SuppressLint("SetTextI18n") | @SuppressLint("SetTextI18n") | ||||
| @@ -65,7 +66,8 @@ class LeaveDialog( | |||||
| find<View>(R.id.face_img).visibility = View.GONE | find<View>(R.id.face_img).visibility = View.GONE | ||||
| } | } | ||||
| find<ImageView>(R.id.face_img).setOnClickListener { | find<ImageView>(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<TextView>(R.id.class_name).text = "${detail.grade_name}${detail.class_name}" | find<TextView>(R.id.class_name).text = "${detail.grade_name}${detail.class_name}" | ||||
| find<TextView>(R.id.leave_request_type_name).text = detail.leave_request_type_name | find<TextView>(R.id.leave_request_type_name).text = detail.leave_request_type_name | ||||
| @@ -96,5 +98,13 @@ class LeaveDialog( | |||||
| find<View>(R.id.closeBtn).setOnClickListener { | find<View>(R.id.closeBtn).setOnClickListener { | ||||
| onCloseClick(this) | onCloseClick(this) | ||||
| } | } | ||||
| find<View>(R.id.sureBtn).setOnClickListener { | |||||
| onSureClick(this, detail) | |||||
| } | |||||
| find<View>(R.id.sureBtn).visibility = if (detail.is_hide == 0) { | |||||
| View.VISIBLE | |||||
| } else { | |||||
| View.GONE | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -0,0 +1,5 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <shape xmlns:android="http://schemas.android.com/apk/res/android"> | |||||
| <solid android:color="#fff"/> | |||||
| <stroke android:color="#f5f5f5" android:width="1dp"/> | |||||
| </shape> | |||||
| @@ -172,18 +172,42 @@ | |||||
| </LinearLayout> | </LinearLayout> | ||||
| </androidx.appcompat.widget.LinearLayoutCompat> | </androidx.appcompat.widget.LinearLayoutCompat> | ||||
| <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | |||||
| android:id="@+id/closeBtn" | |||||
| android:layout_width="300dp" | |||||
| android:layout_height="80dp" | |||||
| <androidx.appcompat.widget.LinearLayoutCompat | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_gravity="center_horizontal" | android:layout_gravity="center_horizontal" | ||||
| android:layout_marginTop="@dimen/dp_40" | |||||
| android:layout_marginBottom="@dimen/d_20" | |||||
| android:padding="@dimen/d_10" | |||||
| android:text="关闭" | |||||
| android:textSize="@dimen/sp20" | |||||
| android:textColor="@color/black" | |||||
| app:qmui_borderColor="@color/gray" | |||||
| app:qmui_radius="@dimen/d_5" /> | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_marginBottom="@dimen/d_20"> | |||||
| <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | |||||
| android:id="@+id/closeBtn" | |||||
| android:layout_width="300dp" | |||||
| android:layout_height="80dp" | |||||
| android:layout_gravity="center_horizontal" | |||||
| android:layout_marginTop="@dimen/dp_40" | |||||
| android:padding="@dimen/d_10" | |||||
| android:text="关闭" | |||||
| android:textSize="@dimen/sp20" | |||||
| android:textColor="@color/black" | |||||
| app:qmui_borderColor="@color/gray" | |||||
| app:qmui_radius="@dimen/d_5" /> | |||||
| <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | |||||
| android:id="@+id/sureBtn" | |||||
| android:layout_width="300dp" | |||||
| android:layout_height="80dp" | |||||
| android:layout_gravity="center_horizontal" | |||||
| android:layout_marginTop="@dimen/dp_40" | |||||
| android:padding="@dimen/d_10" | |||||
| android:text="已放行" | |||||
| android:layout_marginLeft="@dimen/d_30" | |||||
| android:textSize="@dimen/sp20" | |||||
| android:textColor="@color/white" | |||||
| app:qmui_borderColor="@color/blue" | |||||
| app:qmui_backgroundColor="@color/blue" | |||||
| app:qmui_radius="@dimen/d_5" /> | |||||
| </androidx.appcompat.widget.LinearLayoutCompat> | |||||
| </com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout> | </com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout> | ||||
| </FrameLayout> | </FrameLayout> | ||||
| @@ -67,8 +67,8 @@ | |||||
| <EditText | <EditText | ||||
| android:id="@+id/keywordInput" | android:id="@+id/keywordInput" | ||||
| android:layout_width="300dp" | |||||
| android:layout_height="60dp" | |||||
| android:layout_width="200dp" | |||||
| android:layout_height="50dp" | |||||
| android:background="@color/transparent" | android:background="@color/transparent" | ||||
| android:hint="输入学生姓名" | android:hint="输入学生姓名" | ||||
| android:imeOptions="actionSearch" | android:imeOptions="actionSearch" | ||||
| @@ -91,7 +91,7 @@ | |||||
| <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | ||||
| android:id="@+id/allBtn" | android:id="@+id/allBtn" | ||||
| style="@style/home_status_btn" | style="@style/home_status_btn" | ||||
| android:layout_marginStart="50dp" | |||||
| android:layout_marginStart="30dp" | |||||
| android:text="全部" | android:text="全部" | ||||
| android:textColor="@color/s_app_color_status_text" | android:textColor="@color/s_app_color_status_text" | ||||
| app:qmui_backgroundColor="@color/s_app_color_status_bg" | app:qmui_backgroundColor="@color/s_app_color_status_bg" | ||||
| @@ -126,21 +126,108 @@ | |||||
| android:layout_height="1px" | android:layout_height="1px" | ||||
| android:layout_weight="1" /> | android:layout_weight="1" /> | ||||
| <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | |||||
| android:id="@+id/hideType0" | |||||
| style="@style/home_status_btn" | |||||
| android:text="未放行" | |||||
| android:textColor="@color/s_app_color_status_text" | |||||
| app:qmui_backgroundColor="@color/s_app_color_status_bg" | |||||
| app:qmui_borderColor="@color/s_app_color_status_border" /> | |||||
| <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | |||||
| android:id="@+id/hideType1" | |||||
| style="@style/home_status_btn" | |||||
| android:text="已放行" | |||||
| android:textColor="@color/s_app_color_status_text" | |||||
| app:qmui_backgroundColor="@color/s_app_color_status_bg" | |||||
| app:qmui_borderColor="@color/s_app_color_status_border" /> | |||||
| <View | |||||
| android:layout_width="0dp" | |||||
| android:layout_height="1px" | |||||
| android:layout_weight="1" /> | |||||
| <TextView | <TextView | ||||
| android:id="@+id/filterBtn" | android:id="@+id/filterBtn" | ||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
| android:text=" 筛选" | android:text=" 筛选" | ||||
| android:drawableLeft="@mipmap/ic_filter" | android:drawableLeft="@mipmap/ic_filter" | ||||
| android:layout_marginEnd="30dp" | |||||
| android:layout_marginEnd="20dp" | |||||
| android:textColor="#3c7ef6" | android:textColor="#3c7ef6" | ||||
| android:textSize="16dp"/> | android:textSize="16dp"/> | ||||
| <androidx.appcompat.widget.LinearLayoutCompat | |||||
| android:id="@+id/listType1Btn" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_gravity="center_vertical" | |||||
| android:gravity="center" | |||||
| android:layout_marginRight="10dp" | |||||
| android:orientation="horizontal"> | |||||
| <ImageView | |||||
| android:layout_width="@dimen/d_20" | |||||
| android:layout_height="@dimen/d_20" | |||||
| android:src="@mipmap/icon_list"/> | |||||
| <TextView | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:textColor="@color/green2" | |||||
| android:includeFontPadding="false" | |||||
| android:layout_marginLeft="@dimen/d_6" | |||||
| android:text="列表模式"/> | |||||
| </androidx.appcompat.widget.LinearLayoutCompat> | |||||
| <androidx.appcompat.widget.LinearLayoutCompat | |||||
| android:id="@+id/listType2Btn" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_gravity="center_vertical" | |||||
| android:visibility="gone" | |||||
| android:gravity="center" | |||||
| android:layout_marginRight="10dp" | |||||
| android:orientation="horizontal"> | |||||
| <ImageView | |||||
| android:layout_width="@dimen/d_20" | |||||
| android:layout_height="@dimen/d_20" | |||||
| android:src="@mipmap/icon_grid"/> | |||||
| <TextView | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:textColor="@color/green2" | |||||
| android:includeFontPadding="false" | |||||
| android:layout_marginLeft="@dimen/d_6" | |||||
| android:text="网格模式"/> | |||||
| </androidx.appcompat.widget.LinearLayoutCompat> | |||||
| <!-- <Switch--> | |||||
| <!-- android:id="@+id/switchBtn2"--> | |||||
| <!-- android:layout_width="48dp"--> | |||||
| <!-- android:layout_height="@dimen/d_28"--> | |||||
| <!-- android:checked="true"--> | |||||
| <!-- android:layout_gravity="center_vertical"--> | |||||
| <!-- android:thumb="@drawable/switch_ios_thumb"--> | |||||
| <!-- android:track="@drawable/switch_ios_track_selector"--> | |||||
| <!-- tools:ignore="UseSwitchCompatOrMaterialXml" />--> | |||||
| <!-- <TextView--> | |||||
| <!-- android:id="@+id/switchBtnTxt2"--> | |||||
| <!-- android:layout_width="wrap_content"--> | |||||
| <!-- android:layout_height="@dimen/d_28"--> | |||||
| <!-- android:layout_gravity="center_vertical"--> | |||||
| <!-- android:layout_marginStart="@dimen/d_10"--> | |||||
| <!-- android:gravity="center"--> | |||||
| <!-- android:text="仅看在校"--> | |||||
| <!-- android:includeFontPadding="false"--> | |||||
| <!-- android:layout_marginEnd="@dimen/d_10"--> | |||||
| <!-- android:textColor="#53a051" />--> | |||||
| <Switch | <Switch | ||||
| android:id="@+id/switchBtn" | android:id="@+id/switchBtn" | ||||
| android:layout_width="48dp" | android:layout_width="48dp" | ||||
| android:layout_height="@dimen/d_28" | android:layout_height="@dimen/d_28" | ||||
| android:checked="true" | android:checked="true" | ||||
| android:layout_gravity="center_vertical" | |||||
| android:thumb="@drawable/switch_ios_thumb" | android:thumb="@drawable/switch_ios_thumb" | ||||
| android:track="@drawable/switch_ios_track_selector" | android:track="@drawable/switch_ios_track_selector" | ||||
| tools:ignore="UseSwitchCompatOrMaterialXml" /> | tools:ignore="UseSwitchCompatOrMaterialXml" /> | ||||
| @@ -152,15 +239,18 @@ | |||||
| android:layout_gravity="center_vertical" | android:layout_gravity="center_vertical" | ||||
| android:layout_marginStart="@dimen/d_10" | android:layout_marginStart="@dimen/d_10" | ||||
| android:gravity="center" | android:gravity="center" | ||||
| android:text="自动弹出请假单" | |||||
| android:text="自动弹出" | |||||
| android:includeFontPadding="false" | |||||
| android:textColor="#53a051" /> | android:textColor="#53a051" /> | ||||
| </androidx.appcompat.widget.LinearLayoutCompat> | </androidx.appcompat.widget.LinearLayoutCompat> | ||||
| <androidx.appcompat.widget.LinearLayoutCompat | <androidx.appcompat.widget.LinearLayoutCompat | ||||
| android:id="@+id/listTypeLayout1" | |||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="0dp" | android:layout_height="0dp" | ||||
| android:layout_weight="1" | android:layout_weight="1" | ||||
| android:visibility="gone" | |||||
| android:background="@color/white" | android:background="@color/white" | ||||
| android:orientation="vertical" | android:orientation="vertical" | ||||
| android:paddingStart="@dimen/dp_10" | android:paddingStart="@dimen/dp_10" | ||||
| @@ -303,6 +393,100 @@ | |||||
| android:textSize="@dimen/sp18" /> | android:textSize="@dimen/sp18" /> | ||||
| </androidx.appcompat.widget.LinearLayoutCompat> | |||||
| </androidx.appcompat.widget.LinearLayoutCompat> | |||||
| <androidx.appcompat.widget.LinearLayoutCompat | |||||
| android:id="@+id/listTypeLayout2" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="0dp" | |||||
| android:layout_weight="1" | |||||
| android:orientation="vertical" | |||||
| android:paddingStart="@dimen/dp_10" | |||||
| android:paddingEnd="@dimen/dp_10"> | |||||
| <androidx.recyclerview.widget.RecyclerView | |||||
| android:id="@+id/recyclerView2" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="0dp" | |||||
| android:layout_weight="1" | |||||
| app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" | |||||
| tools:itemCount="20" | |||||
| app:spanCount="5" | |||||
| tools:listitem="@layout/layout_leave_table2" /> | |||||
| <View | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="1px" | |||||
| android:background="@color/backgroundColor" /> | |||||
| <androidx.appcompat.widget.LinearLayoutCompat | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:gravity="center_vertical" | |||||
| android:orientation="horizontal" | |||||
| android:paddingHorizontal="@dimen/dp_40" | |||||
| android:paddingVertical="@dimen/d_20"> | |||||
| <TextView | |||||
| android:id="@+id/totalTv2" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:text="共0条数据" | |||||
| android:textSize="@dimen/sp18" /> | |||||
| <TextView | |||||
| android:id="@+id/btnRefresh2" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:layout_marginStart="@dimen/d_20" | |||||
| android:text="刷新数据" | |||||
| android:textColor="@color/s_app_color_blue" | |||||
| android:textSize="@dimen/sp18" /> | |||||
| <View | |||||
| android:layout_width="0dp" | |||||
| android:layout_height="1px" | |||||
| android:layout_weight="1" /> | |||||
| <TextView | |||||
| android:id="@+id/goPageOne2" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:text="回首页" | |||||
| android:textColor="@color/s_app_color_blue" | |||||
| android:textSize="@dimen/sp18" | |||||
| android:layout_marginEnd="@dimen/d_20" | |||||
| android:visibility="gone"/> | |||||
| <TextView | |||||
| android:id="@+id/preTxtBtn2" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:text="上一页" | |||||
| android:textColor="#3ca0e9" | |||||
| android:textSize="@dimen/sp18" /> | |||||
| <TextView | |||||
| android:id="@+id/pageTv2" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:paddingStart="@dimen/d_20" | |||||
| android:paddingEnd="@dimen/d_20" | |||||
| android:text="0/0" | |||||
| android:textColor="#333" | |||||
| android:textSize="@dimen/sp18" /> | |||||
| <TextView | |||||
| android:id="@+id/nextTxtBtn2" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:text="下一页" | |||||
| android:textColor="#3ca0e9" | |||||
| android:textSize="@dimen/sp18" /> | |||||
| </androidx.appcompat.widget.LinearLayoutCompat> | </androidx.appcompat.widget.LinearLayoutCompat> | ||||
| </androidx.appcompat.widget.LinearLayoutCompat> | </androidx.appcompat.widget.LinearLayoutCompat> | ||||
| </androidx.appcompat.widget.LinearLayoutCompat> | </androidx.appcompat.widget.LinearLayoutCompat> | ||||
| @@ -67,8 +67,8 @@ | |||||
| <EditText | <EditText | ||||
| android:id="@+id/keywordInput" | android:id="@+id/keywordInput" | ||||
| android:layout_width="300dp" | |||||
| android:layout_height="60dp" | |||||
| android:layout_width="200dp" | |||||
| android:layout_height="50dp" | |||||
| android:background="@color/transparent" | android:background="@color/transparent" | ||||
| android:hint="输入访客姓名" | android:hint="输入访客姓名" | ||||
| android:imeOptions="actionSearch" | android:imeOptions="actionSearch" | ||||
| @@ -91,7 +91,7 @@ | |||||
| <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | ||||
| android:id="@+id/allBtn" | android:id="@+id/allBtn" | ||||
| style="@style/home_status_btn" | style="@style/home_status_btn" | ||||
| android:layout_marginStart="50dp" | |||||
| android:layout_marginStart="30dp" | |||||
| android:text="全部" | android:text="全部" | ||||
| android:textColor="@color/s_app_color_status_text" | android:textColor="@color/s_app_color_status_text" | ||||
| app:qmui_backgroundColor="@color/s_app_color_status_bg" | app:qmui_backgroundColor="@color/s_app_color_status_bg" | ||||
| @@ -0,0 +1,89 @@ | |||||
| <?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" | |||||
| android:layout_width="380dp" | |||||
| android:layout_height="wrap_content" | |||||
| android:orientation="vertical" | |||||
| android:clickable="true" | |||||
| android:padding="10dp"> | |||||
| <androidx.appcompat.widget.LinearLayoutCompat | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:gravity="center_vertical" | |||||
| android:orientation="horizontal" | |||||
| android:background="@drawable/shape_leave_item" | |||||
| android:padding="1dp"> | |||||
| <FrameLayout | |||||
| android:layout_height="match_parent" | |||||
| android:layout_width="wrap_content" | |||||
| android:text="人脸"> | |||||
| <ImageView | |||||
| android:id="@+id/faceImg" | |||||
| android:layout_width="132dp" | |||||
| android:layout_height="151dp" | |||||
| app:qmui_border_color="@color/white" | |||||
| app:qmui_radius="0dp"/> | |||||
| <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | |||||
| android:id="@+id/faceEmpty" | |||||
| android:layout_width="132dp" | |||||
| android:layout_height="151dp" | |||||
| android:paddingTop="@dimen/d_5" | |||||
| android:paddingBottom="@dimen/d_5" | |||||
| android:text="未设置" | |||||
| android:textColor="@color/white" | |||||
| app:qmui_backgroundColor="#ccc" | |||||
| app:qmui_borderColor="#ccc" | |||||
| app:qmui_radius="1px" /> | |||||
| </FrameLayout> | |||||
| <androidx.appcompat.widget.LinearLayoutCompat | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="match_parent" | |||||
| android:layout_weight="1" | |||||
| android:layout_marginLeft="20dp" | |||||
| android:orientation="vertical" | |||||
| android:paddingBottom="@dimen/d_10" | |||||
| android:paddingTop="10dp"> | |||||
| <TextView | |||||
| android:id="@+id/studentName" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:textStyle="bold" | |||||
| android:textSize="20dp" | |||||
| android:includeFontPadding="false" | |||||
| android:text="李晓晓"/> | |||||
| <TextView | |||||
| android:id="@+id/className" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:textSize="16dp" | |||||
| android:layout_marginTop="@dimen/d_10" | |||||
| android:text="高中三年级一班"/> | |||||
| <TextView | |||||
| android:id="@+id/applyTime" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="wrap_content" | |||||
| android:textSize="16dp" | |||||
| android:text="2024-1-4 15:57"/> | |||||
| <View | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="0dp" | |||||
| android:layout_weight="1"/> | |||||
| <com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton | |||||
| android:id="@+id/statusName" | |||||
| android:layout_width="wrap_content" | |||||
| android:layout_height="wrap_content" | |||||
| android:paddingHorizontal="@dimen/d_20" | |||||
| android:paddingVertical="@dimen/d_6" | |||||
| android:textColor="#fff" | |||||
| app:qmui_backgroundColor="#ff4040" | |||||
| android:text="已确认" | |||||
| app:qmui_radius="@dimen/d_20" /> | |||||
| </androidx.appcompat.widget.LinearLayoutCompat> | |||||
| </androidx.appcompat.widget.LinearLayoutCompat> | |||||
| </LinearLayout> | |||||
| @@ -205,9 +205,9 @@ | |||||
| </style> | </style> | ||||
| <style name="home_status_btn"> | <style name="home_status_btn"> | ||||
| <item name="android:layout_width">160dp</item> | |||||
| <item name="android:layout_height">60dp</item> | |||||
| <item name="android:layout_marginLeft">@dimen/d_30</item> | |||||
| <item name="android:layout_width">140dp</item> | |||||
| <item name="android:layout_height">50dp</item> | |||||
| <item name="android:layout_marginLeft">@dimen/d_20</item> | |||||
| <item name="android:paddingTop">@dimen/d_5</item> | <item name="android:paddingTop">@dimen/d_5</item> | ||||
| <item name="android:paddingBottom">@dimen/d_5</item> | <item name="android:paddingBottom">@dimen/d_5</item> | ||||
| <item name="android:textSize">@dimen/sp20</item> | <item name="android:textSize">@dimen/sp20</item> | ||||