From f7dcab6507ed4667549c7bcbbd2ccdd4d7e3448b Mon Sep 17 00:00:00 2001 From: hwf452 Date: Thu, 20 Feb 2025 18:33:24 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E6=A3=80=20=E5=85=8D=E6=A3=80?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E7=AE=A1=E7=90=86=20=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E8=B0=83=E7=94=A8=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 8 + .../adapter/MjAdapterBtnClickListener.java | 5 + .../rehome/dywoa/adapter/MjApplyAdapter.kt | 48 ++ .../dywoa/adapter/MjApplyManageAdapter.kt | 51 +++ .../com/rehome/dywoa/bean/MjApplyBean.java | 92 ++++ .../rehome/dywoa/bean/MjApplyManageBean.java | 73 +++ .../ui/activity/sbxdjgl/MjApplyActivity.kt | 112 ++++- .../activity/sbxdjgl/MjApplyManageActivity.kt | 427 ++++++++++++++++++ .../activity/sbxdjgl/MjApplySubmitActivity.kt | 152 +++++++ .../ui/activity/sbxdjgl/SdjgzActivity.java | 2 +- .../ui/activity/sbxdjgl/SjcjFragment.java | 9 +- .../ui/activity/vpn/PrimaryAuthActivity.java | 16 +- .../dywoa/ui/fragment/HomeFragment.java | 2 +- .../rehome/dywoa/vpn/AuthSessionDialog.java | 9 + .../com/rehome/dywoa/weiget/InputLayout.java | 241 ++++++++++ .../rehome/dywoa/weiget/NumAddSubView.java | 118 +++++ app/src/main/res/drawable-xhdpi/add.png | Bin 0 -> 1070 bytes app/src/main/res/drawable/btn_normal_mj.xml | 9 + .../main/res/drawable/btn_normal_mj_tg.xml | 9 + .../res/drawable/btn_selector_mj_status.xml | 10 + .../drawable/btn_selector_mj_status_tg.xml | 10 + app/src/main/res/layout/activity_mj_apply.xml | 6 +- .../res/layout/activity_mj_apply_manage.xml | 194 ++++++++ .../res/layout/activity_mj_apply_submit.xml | 91 ++++ app/src/main/res/layout/adapter_mj_apply.xml | 214 +++++++++ .../res/layout/adapter_mj_apply_manage.xml | 177 ++++++++ app/src/main/res/layout/layout_input.xml | 84 ++++ .../main/res/layout/num_add_sub_layout.xml | 33 ++ app/src/main/res/mipmap-xhdpi/add.png | Bin 0 -> 1070 bytes app/src/main/res/mipmap-xhdpi/add_gray.png | Bin 0 -> 1303 bytes app/src/main/res/mipmap-xhdpi/edit.png | Bin 0 -> 969 bytes app/src/main/res/mipmap-xhdpi/sub.png | Bin 0 -> 1023 bytes 32 files changed, 2181 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/com/rehome/dywoa/adapter/MjAdapterBtnClickListener.java create mode 100644 app/src/main/java/com/rehome/dywoa/adapter/MjApplyAdapter.kt create mode 100644 app/src/main/java/com/rehome/dywoa/adapter/MjApplyManageAdapter.kt create mode 100644 app/src/main/java/com/rehome/dywoa/bean/MjApplyBean.java create mode 100644 app/src/main/java/com/rehome/dywoa/bean/MjApplyManageBean.java create mode 100644 app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplyManageActivity.kt create mode 100644 app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplySubmitActivity.kt create mode 100644 app/src/main/java/com/rehome/dywoa/weiget/InputLayout.java create mode 100644 app/src/main/java/com/rehome/dywoa/weiget/NumAddSubView.java create mode 100755 app/src/main/res/drawable-xhdpi/add.png create mode 100644 app/src/main/res/drawable/btn_normal_mj.xml create mode 100644 app/src/main/res/drawable/btn_normal_mj_tg.xml create mode 100644 app/src/main/res/drawable/btn_selector_mj_status.xml create mode 100644 app/src/main/res/drawable/btn_selector_mj_status_tg.xml create mode 100644 app/src/main/res/layout/activity_mj_apply_manage.xml create mode 100644 app/src/main/res/layout/activity_mj_apply_submit.xml create mode 100644 app/src/main/res/layout/adapter_mj_apply.xml create mode 100644 app/src/main/res/layout/adapter_mj_apply_manage.xml create mode 100644 app/src/main/res/layout/layout_input.xml create mode 100644 app/src/main/res/layout/num_add_sub_layout.xml create mode 100755 app/src/main/res/mipmap-xhdpi/add.png create mode 100755 app/src/main/res/mipmap-xhdpi/add_gray.png create mode 100755 app/src/main/res/mipmap-xhdpi/edit.png create mode 100755 app/src/main/res/mipmap-xhdpi/sub.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 46fe69c..4ac8850 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -257,6 +257,14 @@ android:name=".ui.activity.sbxdjgl.MjApplyActivity" android:exported="false" android:screenOrientation="portrait" /> + + , var btnMjOnClickListener: MjAdapterBtnClickListener) : BaseViewBindingAdapter(context) { + + + override fun getCount(): Int { + return data.count() + } + + override fun getItem(position: Int): Any { + return data[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getBinding( + inflater: LayoutInflater, + parent: ViewGroup? + ) = AdapterMjApplyBinding.inflate(inflater, parent, false) + override fun handleData(position: Int, binding: AdapterMjApplyBinding) { + val item: MjApplyBean.Row = data[position] + binding.tvJhmc.text = item.jhmc + + binding.tvZy.text = item.zymc + binding.tvZxsj.text = item.zxsj + binding.tvZds.text = item.zds + + binding.tvYjds.text = item.yjds + binding.tvLjds.text = item.ljds + binding.btnMjApply.setOnClickListener { + btnMjOnClickListener.onClick(position) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/dywoa/adapter/MjApplyManageAdapter.kt b/app/src/main/java/com/rehome/dywoa/adapter/MjApplyManageAdapter.kt new file mode 100644 index 0000000..d3558d2 --- /dev/null +++ b/app/src/main/java/com/rehome/dywoa/adapter/MjApplyManageAdapter.kt @@ -0,0 +1,51 @@ +package com.rehome.dywoa.adapter + + + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.rehome.dywoa.base.BaseViewBindingAdapter +import com.rehome.dywoa.bean.MjApplyManageBean +import com.rehome.dywoa.databinding.AdapterMjApplyManageBinding + + +class MjApplyManageAdapter(var context: Context, + var data: MutableList) : BaseViewBindingAdapter(context) { + + + override fun getCount(): Int { + return data.count() + } + + override fun getItem(position: Int): Any { + return data[position] + } + + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getBinding( + inflater: LayoutInflater, + parent: ViewGroup? + ) = AdapterMjApplyManageBinding.inflate(inflater, parent, false) + override fun handleData(position: Int, binding: AdapterMjApplyManageBinding) { + val item: MjApplyManageBean.Row = data[position] + binding.tvSqr.text = item.applyName + + binding.tvSqsj.text = item.applyTime + binding.tvSqbm.text = item.department + binding.tvReason.text = item.reason + + + if("审批通过" == item.status){ + binding.btnMjDsp.visibility= View.GONE + binding.btnMjSptg.visibility= View.VISIBLE + }else{ + binding.btnMjDsp.visibility= View.VISIBLE + binding.btnMjSptg.visibility= View.GONE + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/dywoa/bean/MjApplyBean.java b/app/src/main/java/com/rehome/dywoa/bean/MjApplyBean.java new file mode 100644 index 0000000..d036864 --- /dev/null +++ b/app/src/main/java/com/rehome/dywoa/bean/MjApplyBean.java @@ -0,0 +1,92 @@ +package com.rehome.dywoa.bean; + +import java.util.List; + +public class MjApplyBean extends BaseListBean{ + + private List Rows; + + public List getRows() { + return Rows; + } + + public void setRows(List rows) { + Rows = rows; + } + + public static class Row { + private String JHID; + private String JHMC; + private String ZYMC; + private String ZXSJ; + private String ZXZT; + private String ZDS; + private String YJDS; + private String LJDS; + + public String getJHID() { + return JHID; + } + + public void setJHID(String JHID) { + this.JHID = JHID; + } + + public String getJHMC() { + return JHMC; + } + + public void setJHMC(String JHMC) { + this.JHMC = JHMC; + } + + public String getZYMC() { + return ZYMC; + } + + public void setZYMC(String ZYMC) { + this.ZYMC = ZYMC; + } + + public String getZXSJ() { + return ZXSJ; + } + + public void setZXSJ(String ZXSJ) { + this.ZXSJ = ZXSJ; + } + + public String getZDS() { + return ZDS; + } + + public void setZDS(String ZDS) { + this.ZDS = ZDS; + } + + + public String getYJDS() { + return YJDS; + } + + public void setYJDS(String YJDS) { + this.YJDS = YJDS; + } + + public String getZXZT() { + return ZXZT; + } + + public void setZXZT(String ZXZT) { + this.ZXZT = ZXZT; + } + + public String getLJDS() { + return LJDS; + } + + public void setLJDS(String LJDS) { + this.LJDS = LJDS; + } + } +} diff --git a/app/src/main/java/com/rehome/dywoa/bean/MjApplyManageBean.java b/app/src/main/java/com/rehome/dywoa/bean/MjApplyManageBean.java new file mode 100644 index 0000000..0c2ef81 --- /dev/null +++ b/app/src/main/java/com/rehome/dywoa/bean/MjApplyManageBean.java @@ -0,0 +1,73 @@ +package com.rehome.dywoa.bean; + +import java.util.List; + +public class MjApplyManageBean extends BaseListBean{ + + private List Rows; + + public List getRows() { + return Rows; + } + + public void setRows(List rows) { + Rows = rows; + } + + public static class Row { + private String mjid; + private String applyName; + private String department; + private String reason; + private String status; + private String applyTime; + + public String getMjid() { + return mjid; + } + + public void setMjid(String mjid) { + this.mjid = mjid; + } + + public String getApplyName() { + return applyName; + } + + public void setApplyName(String applyName) { + this.applyName = applyName; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getApplyTime() { + return applyTime; + } + + public void setApplyTime(String applyTime) { + this.applyTime = applyTime; + } + } +} diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplyActivity.kt b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplyActivity.kt index 84e53ee..2995b67 100644 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplyActivity.kt +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplyActivity.kt @@ -1,12 +1,20 @@ package com.rehome.dywoa.ui.activity.sbxdjgl +import android.content.Intent +import android.util.Log import android.view.View import com.rehome.dywoa.Contans +import com.rehome.dywoa.adapter.DjZhTjAdapter +import com.rehome.dywoa.adapter.MjAdapterBtnClickListener +import com.rehome.dywoa.adapter.MjApplyAdapter import com.rehome.dywoa.base.BaseActivityOaToolbarViewBinding +import com.rehome.dywoa.bean.DjZhTjBean import com.rehome.dywoa.bean.KksDataBean +import com.rehome.dywoa.bean.MjApplyBean import com.rehome.dywoa.databinding.ActivityMjApplyBinding import com.rehome.dywoa.utils.GsonUtils import com.rehome.dywoa.utils.HttpListener +import com.rehome.dywoa.utils.NoProgresshttpUtils import com.rehome.dywoa.utils.NohttpUtils import com.yolanda.nohttp.NoHttp import com.yolanda.nohttp.RequestMethod @@ -21,6 +29,9 @@ class MjApplyActivity : BaseActivityOaToolbarViewBinding private lateinit var calendar:Calendar private lateinit var calendarSunday:Calendar; + private lateinit var adapter: MjApplyAdapter + private var datas: MutableList = mutableListOf() + //格式化日期的对象(转化成习惯的时间格式) private val sdFormat = SimpleDateFormat("yyyy-MM-dd") @@ -33,6 +44,25 @@ class MjApplyActivity : BaseActivityOaToolbarViewBinding } + adapter = MjApplyAdapter(context, datas + ) { position -> + val item: MjApplyBean.Row = datas[position]; + val intentMjApplySumbit = Intent( + context, + MjApplySubmitActivity::class.java + ) + intentMjApplySumbit.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + intentMjApplySumbit.putExtra("item",GsonUtils.GsonString(item)) + startActivity(intentMjApplySumbit) + } + binding.lv.adapter = adapter + binding.tvNodata.visibility= View.VISIBLE + binding.lv.visibility=View.GONE + + //MjApplyAdapter adapter_mj_apply MjApplyBean + + //MjApplySubmitActivity + resetCurrentWeek() // binding.tvSt.setOnClickListener(View.OnClickListener { view: View? -> @@ -106,10 +136,23 @@ class MjApplyActivity : BaseActivityOaToolbarViewBinding resetCurrentYear() getListData() } + binding.tvMjApplyManage.setOnClickListener { + val intentMjApplyManage = Intent( + context, + MjApplyManageActivity::class.java + ) + intentMjApplyManage.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) + startActivity(intentMjApplyManage) + } } override fun initData() { - getListData() + checkServerConnectStatus() + } + + override fun onRestart() { + super.onRestart() + checkServerConnectStatus() } private fun resetCurrentWeek(){ @@ -361,6 +404,40 @@ class MjApplyActivity : BaseActivityOaToolbarViewBinding binding.tvEt.text = sundayStr } + //检查服务器连接状态 + private fun checkServerConnectStatus() { + var param = HashMap() + param["login"] = "dywoa"; + val json = GsonUtils.GsonString(param) + val url = Contans.IP + Contans.check_server_connect + Log.i("app",url) + Log.i("app",json) + val request = NoHttp.createStringRequest( + url, + RequestMethod.POST + ) + request.setDefineRequestBodyForJson(json) + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + if (result != null) { + showLog("-----onSucceed----") + showLog(result) + if(result == "1"){ + showLog("connect server success") + //获取数据 + getListData() + } + } + } + + override fun onFailed(what: Int, response: Response?) { + showLog("connect server onFailed") + showToast("无法连接到服务器,请检查网络环境") + } + }) + } + private fun getListData() { var param = HashMap() @@ -377,19 +454,26 @@ class MjApplyActivity : BaseActivityOaToolbarViewBinding if (response != null) { val result = response.get() showLog(result) -// val bean = GsonUtils.GsonToBean(result, KksDataBean::class.java) -// if (bean != null && bean.total != 0) { -// if (bean.rows != null && bean.rows.size>0) { -// binding.lv.visibility= View.VISIBLE -// binding.tvNodata.visibility= View.GONE -// val row: KksDataBean.Row = bean.rows[0] -// -// -// }else { -// binding.tvNodata.visibility= View.VISIBLE -// binding.lv.visibility= View.GONE -// } -// } + val bean = GsonUtils.GsonToBean(result, MjApplyBean::class.java) + if (bean != null && bean.total != 0) { + if (bean.rows != null && bean.rows.size>0) { + binding.lv.visibility= View.VISIBLE + binding.tvNodata.visibility= View.GONE + datas.clear() + datas.addAll(bean.rows) + adapter.notifyDataSetChanged() + }else { + datas.clear() + adapter.notifyDataSetChanged() + binding.tvNodata.visibility= View.VISIBLE + binding.lv.visibility= View.GONE + } + }else { + datas.clear() + adapter.notifyDataSetChanged() + binding.tvNodata.visibility= View.VISIBLE + binding.lv.visibility=View.GONE + } } } diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplyManageActivity.kt b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplyManageActivity.kt new file mode 100644 index 0000000..a4ea128 --- /dev/null +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplyManageActivity.kt @@ -0,0 +1,427 @@ +package com.rehome.dywoa.ui.activity.sbxdjgl + +import android.os.Bundle +import android.util.Log +import android.view.View +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import com.rehome.dywoa.Contans +import com.rehome.dywoa.R +import com.rehome.dywoa.adapter.MjApplyAdapter +import com.rehome.dywoa.adapter.MjApplyManageAdapter +import com.rehome.dywoa.base.BaseActivityOaToolbarViewBinding +import com.rehome.dywoa.bean.MjApplyBean +import com.rehome.dywoa.bean.MjApplyManageBean +import com.rehome.dywoa.databinding.ActivityMjApplyManageBinding +import com.rehome.dywoa.utils.GsonUtils +import com.rehome.dywoa.utils.HttpListener +import com.rehome.dywoa.utils.NoProgresshttpUtils +import com.rehome.dywoa.utils.NohttpUtils +import com.rehome.dywoa.weiget.OAToolbar +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.Response +import java.text.SimpleDateFormat +import java.util.Calendar + +class MjApplyManageActivity : BaseActivityOaToolbarViewBinding() { + + private var stime: String = "" + private var etime: String = "" + private lateinit var calendar: Calendar + private lateinit var calendarSunday: Calendar; + + private lateinit var adapter: MjApplyManageAdapter + private var datas: MutableList = mutableListOf() + + //格式化日期的对象(转化成习惯的时间格式) + private val sdFormat = SimpleDateFormat("yyyy-MM-dd") + + + override fun getViewBinding() = ActivityMjApplyManageBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + initToolbar("免检申请管理", "") { + + } + + adapter = MjApplyManageAdapter(context, datas) + binding.lv.adapter = adapter + binding.tvNodata.visibility= View.VISIBLE + binding.lv.visibility= View.GONE + + + resetCurrentYear() + + + binding.tvLastMonth.setOnClickListener { + resetLastMonth() + getListData() + } + binding.tvCurrentMonth.setOnClickListener { + resetCurrentMonth() + getListData() + } + binding.tvLastWeek.setOnClickListener { + resetLastWeek() + getListData() + } + binding.tvCurrentWeek.setOnClickListener { + resetCurrentWeek() + getListData() + } + binding.tvLastDay.setOnClickListener { + resetYesterday() + getListData() + } + binding.tvCurrentQuarter.setOnClickListener { + resetCurrentQuarter() + getListData() + } + binding.tvLastQuarter.setOnClickListener { + resetLastQuarter() + getListData() + } + binding.tvCurrentYear.setOnClickListener { + resetCurrentYear() + getListData() + } + } + + override fun initData() { + checkServerConnectStatus() + } + + private fun resetCurrentWeek(){ + calendar = Calendar.getInstance() + val dayOfWeek: Int = calendar.get(Calendar.DAY_OF_WEEK) // 获取当前是周几(1代表周日,2代表周一,依次类推) + + if (dayOfWeek == Calendar.SUNDAY) { + calendar.add(Calendar.DAY_OF_MONTH, -6) // 如果是周日,向前推6天 + } else { + calendar.add( + Calendar.DAY_OF_MONTH, + -dayOfWeek + 2 + ) // 向前推dayOfWeek-2天(dayOfWeek减2代表前一周的周一) + } + + val startDateStr = sdFormat.format(calendar.time) + showLog("周一:") + showLog(startDateStr) + + calendarSunday = Calendar.getInstance() + calendarSunday.time=calendar.time; + calendarSunday.add(Calendar.DAY_OF_MONTH, 6) // 如果是周日,向前推6天 + + val sundayStr = sdFormat.format(calendarSunday.time) + + showLog("本周日:") + showLog(sundayStr) + + binding.tvSt.text = startDateStr + binding.tvEt.text = sundayStr + } + private fun resetLastWeek(){ + calendar = Calendar.getInstance() + val dayOfWeek: Int = calendar.get(Calendar.DAY_OF_WEEK) // 获取当前是周几(1代表周日,2代表周一,依次类推) + + if (dayOfWeek == Calendar.SUNDAY) { + calendar.add(Calendar.DAY_OF_MONTH, -6) // 如果是周日,向前推6天 + } else { + calendar.add( + Calendar.DAY_OF_MONTH, + -dayOfWeek + 2 + ) // 向前推dayOfWeek-2天(dayOfWeek减2代表前一周的周一) + } + + calendar.add(Calendar.DAY_OF_MONTH, -7) + val startDateStr = sdFormat.format(calendar.time) + showLog("上周一:") + showLog(startDateStr) + + calendarSunday = Calendar.getInstance() + calendarSunday.time=calendar.time; + calendarSunday.add(Calendar.DAY_OF_MONTH, 6) // 如果是周日,向前推6天 + + val sundayStr = sdFormat.format(calendarSunday.time) + showLog("上周日:") + showLog(sundayStr) + + binding.tvSt.text = startDateStr + binding.tvEt.text = sundayStr + } + private fun resetCurrentMonth(){ + + // 获取当前日期 + calendar = Calendar.getInstance() + // 将日期设置为本月1号 + calendar[Calendar.DAY_OF_MONTH] = 1 + + val startDateStr = sdFormat.format(calendar.time) + showLog("本月1号:") + showLog(startDateStr) + + + // 获取当前日期 + calendarSunday = Calendar.getInstance() + // 将日期设置为本月第一天 + calendarSunday[Calendar.DAY_OF_MONTH] = 1 + // 将日期向前推一天,即上个月的最后一天 + calendarSunday.add(Calendar.MONTH, 1) + calendarSunday.add(Calendar.DAY_OF_MONTH, -1) + + val sundayStr = sdFormat.format(calendarSunday.time) + showLog("本月最后一天:") + showLog(sundayStr) + binding.tvSt.text = startDateStr + binding.tvEt.text = sundayStr + } + private fun resetLastMonth(){ + // 获取当前日期 + calendar = Calendar.getInstance() + // 将日期设置为本月1号 + calendar[Calendar.DAY_OF_MONTH] = 1 + calendar.add(Calendar.MONTH, -1) + + val startDateStr = sdFormat.format(calendar.time) + showLog("上月1号:") + showLog(startDateStr) + + + // 获取当前日期 + calendarSunday = Calendar.getInstance() + // 将日期设置为本月第一天 + calendarSunday[Calendar.DAY_OF_MONTH] = 1 + // 将日期向前推一天,即上个月的最后一天 + calendarSunday.add(Calendar.DAY_OF_MONTH, -1) + + val sundayStr = sdFormat.format(calendarSunday.time) + showLog("上月最后一天:") + showLog(sundayStr) + binding.tvSt.text = startDateStr + binding.tvEt.text = sundayStr + } + + private fun resetYesterday(){ + calendar = Calendar.getInstance() + calendar.add(Calendar.DAY_OF_MONTH, -1) + + val startDateStr = sdFormat.format(calendar.time) + showLog("昨天:") + showLog(startDateStr) + + calendarSunday = Calendar.getInstance() + calendarSunday.add(Calendar.DAY_OF_MONTH, -1) + + val sundayStr = sdFormat.format(calendarSunday.time) + showLog("昨天:") + showLog(sundayStr) + + binding.tvSt.text = startDateStr + binding.tvEt.text = sundayStr + } + + private fun resetCurrentQuarter(){ + + // 获取当前日期 + calendar = Calendar.getInstance() + // 获取当前月份 + val month = calendar[Calendar.MONTH] + // 计算当前季度的第一个月 + val firstMonthOfQuarter = (month / 3) * 3 + // 设置日期为本季度的第一天 + calendar[Calendar.MONTH] = firstMonthOfQuarter + calendar[Calendar.DAY_OF_MONTH] = 1 + + val startDateStr = sdFormat.format(calendar.time) + showLog("季度的第一天:") + showLog(startDateStr) + + + // 获取当前日期 + calendarSunday = Calendar.getInstance() + // 获取当前月份 + val monthEnd = calendarSunday[Calendar.MONTH] + // 计算当前季度的最后一个月 + val lastMonthOfQuarter = ((monthEnd / 3) + 1) * 3 - 1 + // 设置月份为当前季度的最后一个月 + calendarSunday[Calendar.MONTH] = lastMonthOfQuarter + // 获取当前季度的最后一天 + val lastDayOfQuarter = calendarSunday.getActualMaximum(Calendar.DAY_OF_MONTH) + // 设置日期为当前季度的最后一天 + calendarSunday[Calendar.DAY_OF_MONTH] = lastDayOfQuarter + + val sundayStr = sdFormat.format(calendarSunday.time) + showLog("当前季度的最后一天:") + showLog(sundayStr) + + binding.tvSt.text = startDateStr + binding.tvEt.text = sundayStr + + } + + private fun resetLastQuarter(){ + + // 获取当前日期 + calendar = Calendar.getInstance() + // 获取当前月份 + val currentMonth = calendar[Calendar.MONTH] + // 计算上一季度的月份 + var previousQuarterMonth = ((currentMonth / 3) * 3) - 3 + if (previousQuarterMonth < 0) { + previousQuarterMonth += 12 + calendar.add(Calendar.YEAR, -1) // 如果上一季度在上一年,年份减一 + } + // 设置月份为上一季度的第一个月 + calendar[Calendar.MONTH] = previousQuarterMonth + // 设置日期为1号 + calendar[Calendar.DAY_OF_MONTH] = 1 + + val startDateStr = sdFormat.format(calendar.time) + showLog("上一季度的第一天:") + showLog(startDateStr) + + + // 获取当前日期 + calendarSunday = Calendar.getInstance() + // 获取当前月份 + val currentMonthEnd = calendarSunday[Calendar.MONTH] + // 计算上一季度的最后一个月 + var lastQuarterEndMonth = ((currentMonthEnd / 3) * 3) - 1 + // 如果上一季度的最后一个月是负数,说明当前季度是第一季度,上一季度就是去年的第四季度 + if (lastQuarterEndMonth < 0) { + lastQuarterEndMonth = Calendar.DECEMBER // 12月 + calendarSunday.add(Calendar.YEAR, -1) // 年份减一 + } + // 设置月份为上一季度的最后一个月 + calendarSunday[Calendar.MONTH] = lastQuarterEndMonth + // 获取上一季度的最后一天 + val lastDayOfLastQuarter = calendarSunday.getActualMaximum(Calendar.DAY_OF_MONTH) + // 设置日期为上一季度的最后一天 + calendarSunday[Calendar.DAY_OF_MONTH] = lastDayOfLastQuarter + + val sundayStr = sdFormat.format(calendarSunday.time) + showLog("上一季度的最后一天:") + showLog(sundayStr) + + binding.tvSt.text = startDateStr + binding.tvEt.text = sundayStr + } + + private fun resetCurrentYear(){ + + // 获取当前日期实例 + calendar = Calendar.getInstance() + // 将日期设置为今年的第一天 + calendar[Calendar.DAY_OF_YEAR] = 1 + + val startDateStr = sdFormat.format(calendar.time) + showLog("今年的第一天:") + showLog(startDateStr) + + + // 获取当前日期 + calendarSunday = Calendar.getInstance() + + + // 设置年份为当前年份,月份为12月(11表示12月,因为月份从0开始),日期为1日 + calendarSunday[Calendar.YEAR] = calendarSunday[Calendar.YEAR] + calendarSunday[Calendar.MONTH] = Calendar.DECEMBER + calendarSunday[Calendar.DAY_OF_MONTH] = 1 + // 获取今年最后一天 + val lastDayOfYear = calendarSunday.getActualMaximum(Calendar.DAY_OF_YEAR) + // 设置日期为今年最后一天 + calendarSunday[Calendar.DAY_OF_YEAR] = lastDayOfYear + + val sundayStr = sdFormat.format(calendarSunday.time) + showLog("今年的最后一天:") + showLog(sundayStr) + + binding.tvSt.text = startDateStr + binding.tvEt.text = sundayStr + } + + //检查服务器连接状态 + private fun checkServerConnectStatus() { + var param = HashMap() + param["login"] = "dywoa"; + val json = GsonUtils.GsonString(param) + val url = Contans.IP + Contans.check_server_connect + Log.i("app",url) + Log.i("app",json) + val request = NoHttp.createStringRequest( + url, + RequestMethod.POST + ) + request.setDefineRequestBodyForJson(json) + NoProgresshttpUtils.getInstance().add(this, 0, request, object : HttpListener { + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + if (result != null) { + showLog("-----onSucceed----") + showLog(result) + if(result == "1"){ + showLog("connect server success") + //获取数据 + getListData() + } + } + } + + override fun onFailed(what: Int, response: Response?) { + showLog("connect server onFailed") + showToast("无法连接到服务器,请检查网络环境") + } + }) + } + + private fun getListData() { + + var param = HashMap() + param["startDate"] = binding.tvSt.text.toString().trim(); + param["endDate"] = binding.tvEt.text.toString().trim(); + val json = GsonUtils.GsonString(param) + showLog(json) + + val url: String = Contans.IP + Contans.GET_NEED_MJ_MANAGE_LIST + val request = NoHttp.createStringRequest(url, RequestMethod.POST) + request.setDefineRequestBodyForJson(json) + NohttpUtils.getInstance().add(this, 0, request, object : HttpListener { + override fun onSucceed(what: Int, response: Response?) { + if (response != null) { + val result = response.get() + showLog(result) + val bean = GsonUtils.GsonToBean(result, MjApplyManageBean::class.java) + if (bean != null && bean.total != 0) { + if (bean.rows != null && bean.rows.size>0) { + binding.lv.visibility= View.VISIBLE + binding.tvNodata.visibility= View.GONE + datas.clear() + datas.addAll(bean.rows) + adapter.notifyDataSetChanged() + }else { + datas.clear() + adapter.notifyDataSetChanged() + binding.tvNodata.visibility= View.VISIBLE + binding.lv.visibility= View.GONE + } + }else { + datas.clear() + adapter.notifyDataSetChanged() + binding.tvNodata.visibility= View.VISIBLE + binding.lv.visibility=View.GONE + } + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + + }, true, true, "正在加载数据...") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplySubmitActivity.kt b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplySubmitActivity.kt new file mode 100644 index 0000000..6ba5587 --- /dev/null +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/MjApplySubmitActivity.kt @@ -0,0 +1,152 @@ +package com.rehome.dywoa.ui.activity.sbxdjgl + +import android.content.DialogInterface +import android.graphics.Color +import android.text.TextUtils +import android.util.Log +import com.rehome.dywoa.App +import com.rehome.dywoa.Contans +import com.rehome.dywoa.base.BaseActivityOaToolbarViewBinding +import com.rehome.dywoa.bean.MjApplyBean +import com.rehome.dywoa.bean.StatusInfo +import com.rehome.dywoa.databinding.ActivityMjApplySubmitBinding +import com.rehome.dywoa.utils.GsonUtils +import com.rehome.dywoa.utils.HttpListener +import com.rehome.dywoa.utils.NohttpUtils +import com.rehome.dywoa.weiget.ConfirmDialog +import com.yolanda.nohttp.NoHttp +import com.yolanda.nohttp.RequestMethod +import com.yolanda.nohttp.rest.Response + +class MjApplySubmitActivity : BaseActivityOaToolbarViewBinding() { + + private lateinit var item: MjApplyBean.Row + + private lateinit var username: String + private lateinit var sqrName: String + + + override fun getViewBinding() = ActivityMjApplySubmitBinding.inflate(layoutInflater) + + override fun getToolbar() = binding.toolbarView.toolbar + + override fun initView() { + initToolbar("免检申请提交", "提交") { + if (TextUtils.isEmpty(binding.etMjReason.getContentText())) { + showToast("免检原因必填,请填写免检原因后再提交") + }else{ + val builder = android.app.AlertDialog.Builder(context) + builder.setMessage("您确定要提交免检申请吗?") + builder.setTitle("提示") + builder.setPositiveButton( + "确定" + ) { dialog, _ -> + dialog.dismiss() + checkServerConnectStatus() + } + builder.setNegativeButton( + "取消" + ) { dialog, _ -> dialog.dismiss()} + val dialog = builder.create() + dialog.show() + + //确定按钮 + val btnPos = dialog.getButton(DialogInterface.BUTTON_POSITIVE) + //取消按钮 + val btnNeg = dialog.getButton(DialogInterface.BUTTON_NEGATIVE) + btnPos.setTextColor(Color.BLACK) + btnNeg.setTextColor(Color.BLACK) + } + } + + item = GsonUtils.GsonToBean(intent.getStringExtra("item")!!,MjApplyBean.Row::class.java) + username = App.getInstance().userInfo.manid + sqrName = App.getInstance().userInfo.usernames + + binding.ilSqr.content = sqrName + binding.ilJhmc.content = item.jhmc + binding.ilMjdj.content = item.ljds + binding.ilZxsj.content = item.zxsj + + } + + override fun initData() { + + + + } + + //检查服务器连接状态 + private fun checkServerConnectStatus() { + var param = HashMap() + param["login"] = "dywoa"; + val json = GsonUtils.GsonString(param) + val url = Contans.IP + Contans.check_server_connect + Log.i("app",url) + Log.i("app",json) + val request = NoHttp.createStringRequest( + url, + RequestMethod.POST + ) + request.setDefineRequestBodyForJson(json) + NohttpUtils.getInstance().add(this, 0, request, object : HttpListener { + override fun onSucceed(what: Int, response: Response?) { + val result = response?.get() + if (result != null) { + showLog("-----onSucceed----") + showLog(result) + if(result == "1"){ + showLog("connect server success") + //提交免检 + submitData() + } + } + } + + override fun onFailed(what: Int, response: Response?) { + showLog("connect server onFailed") + showToast("无法连接到服务器,请检查网络环境") + } + }) + } + + private fun submitData() { + + var param = HashMap() + param["JHID"] = item.jhid + param["reason"] = binding.etMjReason.contentText.trim(); + param["gh"] = username + val json = GsonUtils.GsonString(param) + showLog(json) + + val url: String = Contans.IP + Contans.SUBMIT_MJ_APPLY_API + val request = NoHttp.createStringRequest(url, RequestMethod.POST) + request.setDefineRequestBodyForJson(json) + NohttpUtils.getInstance().add(this, 0, request, object : HttpListener { + override fun onSucceed(what: Int, response: Response?) { + if (response != null) { + val result = response.get() + showLog(result) + val bean = GsonUtils.GsonToBean(result, StatusInfo::class.java) + if (bean != null && bean.state == 1) { + //提交成功 + val confirmDialog = ConfirmDialog( + context, "免检申请提交成功" + ) { finish() } + confirmDialog.setTvTitle("提示") + confirmDialog.setCancelable(true) + confirmDialog.show() + }else { + //免检申请提交失败 + showToast("免检申请提交失败") + } + } + } + + override fun onFailed(what: Int, response: Response?) { + + } + + }, true, true, "数据处理中,请稍候...") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SdjgzActivity.java b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SdjgzActivity.java index 1fca04b..965bfad 100644 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SdjgzActivity.java +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SdjgzActivity.java @@ -334,7 +334,7 @@ public class SdjgzActivity extends BaseActivity { DjjhRwQy djjhItem = djjhs.get(0); if(TextUtils.isEmpty(djjhItem.getSecond())){ showLog(djjhItem.getSecond()); - final AlertDialog.Builder builder = new AlertDialog.Builder(context); + AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setCancelable(false); builder.setTitle("系统提示"); builder.setMessage("是否要浏览该区域下的工作内容"); diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java index ebc79f5..8d59689 100644 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java @@ -168,7 +168,14 @@ public class SjcjFragment extends BaseFragment { getActivity().finish(); } }); - builder.create().show(); + AlertDialog dialog = builder.create(); + dialog.show(); + //确定按钮 + Button btnPos = dialog.getButton(DialogInterface.BUTTON_POSITIVE); + //取消按钮 + Button btnNeg = dialog.getButton(DialogInterface.BUTTON_NEGATIVE); + btnPos.setTextColor(Color.BLACK); + btnNeg.setTextColor(Color.BLACK); } else { getActivity().finish(); } diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/vpn/PrimaryAuthActivity.java b/app/src/main/java/com/rehome/dywoa/ui/activity/vpn/PrimaryAuthActivity.java index 0db6d6e..a3537f8 100644 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/vpn/PrimaryAuthActivity.java +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/vpn/PrimaryAuthActivity.java @@ -7,6 +7,7 @@ import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.graphics.Color; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; @@ -331,7 +332,7 @@ public class PrimaryAuthActivity extends BaseActivity implements SFAuthResultLis runOnUiThread(new Runnable() { @Override public void run() { - Dialog messageDialog = new AlertDialog.Builder(PrimaryAuthActivity.this) + AlertDialog messageDialog = new AlertDialog.Builder(PrimaryAuthActivity.this) .setTitle(PrimaryAuthActivity.this.getString(com.sangfor.sdk.R.string.info)) .setMessage(errMsg) .setIcon(android.R.drawable.ic_dialog_alert) @@ -344,6 +345,12 @@ public class PrimaryAuthActivity extends BaseActivity implements SFAuthResultLis .create(); messageDialog.show(); + //确定按钮 + Button btnPos = messageDialog.getButton(DialogInterface.BUTTON_POSITIVE); + //取消按钮 + Button btnNeg = messageDialog.getButton(DialogInterface.BUTTON_NEGATIVE); + btnPos.setTextColor(Color.BLACK); + btnNeg.setTextColor(Color.BLACK); } }); } @@ -473,6 +480,13 @@ public class PrimaryAuthActivity extends BaseActivity implements SFAuthResultLis .create(); //显示认证对话框 mAuthDialog.show(); + + //确定按钮 + Button btnPos = mAuthDialog.getButton(DialogInterface.BUTTON_POSITIVE); + //取消按钮 + Button btnNeg = mAuthDialog.getButton(DialogInterface.BUTTON_NEGATIVE); + btnPos.setTextColor(Color.BLACK); + btnNeg.setTextColor(Color.BLACK); } /** diff --git a/app/src/main/java/com/rehome/dywoa/ui/fragment/HomeFragment.java b/app/src/main/java/com/rehome/dywoa/ui/fragment/HomeFragment.java index 6b02f8b..20dd197 100644 --- a/app/src/main/java/com/rehome/dywoa/ui/fragment/HomeFragment.java +++ b/app/src/main/java/com/rehome/dywoa/ui/fragment/HomeFragment.java @@ -291,7 +291,7 @@ public class HomeFragment extends BaseFragment { break; case 5: //点检 - if((firstDeparment!=null&&firstDeparment.equals("设备部"))||(firstDeparment!=null&&firstDeparment.equals("承包商"))||(username!=null&&username.equals("371522"))||(username!=null&&username.equals("ceshi1"))||(username!=null&&username.equals("RH00001"))){ + if((firstDeparment!=null&&firstDeparment.equals("设备部"))||(firstDeparment!=null&&firstDeparment.equals("粤电服大亚湾项目部"))||(firstDeparment!=null&&firstDeparment.equals("承包商"))||(username!=null&&username.equals("371522"))||(username!=null&&username.equals("ceshi1"))||(username!=null&&username.equals("RH00001"))){ Intent intentDj= new Intent(mActivity, SbxdjglActivity.class); intentDj.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); intentDj.putExtra("edit",false); diff --git a/app/src/main/java/com/rehome/dywoa/vpn/AuthSessionDialog.java b/app/src/main/java/com/rehome/dywoa/vpn/AuthSessionDialog.java index a74cc67..97f5cbf 100644 --- a/app/src/main/java/com/rehome/dywoa/vpn/AuthSessionDialog.java +++ b/app/src/main/java/com/rehome/dywoa/vpn/AuthSessionDialog.java @@ -4,6 +4,9 @@ package com.rehome.dywoa.vpn; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; +import android.graphics.Color; +import android.widget.Button; + import com.rehome.dywoa.R; import com.sangfor.sdk.entry.SFLaunchInfo; @@ -62,6 +65,12 @@ public class AuthSessionDialog { } mDialog.show(); + //确定按钮 + Button btnPos = mDialog.getButton(DialogInterface.BUTTON_POSITIVE); + //取消按钮 + Button btnNeg = mDialog.getButton(DialogInterface.BUTTON_NEGATIVE); + btnPos.setTextColor(Color.BLACK); + btnNeg.setTextColor(Color.BLACK); } public void dismiss() { diff --git a/app/src/main/java/com/rehome/dywoa/weiget/InputLayout.java b/app/src/main/java/com/rehome/dywoa/weiget/InputLayout.java new file mode 100644 index 0000000..1a4ed0a --- /dev/null +++ b/app/src/main/java/com/rehome/dywoa/weiget/InputLayout.java @@ -0,0 +1,241 @@ +package com.rehome.dywoa.weiget; + +import android.content.Context; +import android.content.res.TypedArray; +import androidx.annotation.Nullable; +import android.text.Html; +import android.text.InputType; +import android.util.AttributeSet; +import android.view.KeyEvent; +import android.view.View; +import android.widget.ImageButton; +import android.widget.TextView; +import com.rehome.dywoa.R; +import com.zhy.autolayout.AutoLinearLayout; +import com.zhy.autolayout.utils.AutoUtils; + +/** + * Created by Rehome-rjb1 on 2017/5/9. + *

+ * 输入框 + * + * + * + * + * + * + * + * + * + */ + +public class InputLayout extends AutoLinearLayout { + + TextView tvTitle; + ClearEditText etContent; + TextView tvContent; + NumAddSubView numAddSubView; + ImageButton ibtnSelect; + + + + private View view; + + public InputLayout(Context context) { + super(context, null); + initView(); + } + + public InputLayout(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + initView(); + if (attrs != null) { + TypedArray type = context.obtainStyledAttributes(attrs, R.styleable.InputLayout); + + String title = type.getString(R.styleable.InputLayout_tv_title); + Boolean isShowSelect = type.getBoolean(R.styleable.InputLayout_isShowSelect, false); + Boolean isShowTextView = type.getBoolean(R.styleable.InputLayout_isShowTextView, false); + Boolean isShowNumSubView = type.getBoolean(R.styleable.InputLayout_isShowNumSubView, false); + String hintText = type.getString(R.styleable.InputLayout_hintText); + Boolean must = type.getBoolean(R.styleable.InputLayout_must, false); + + int minValue = type.getInt(R.styleable.InputLayout_minValue, 1); + numAddSubView.setMinNum(minValue); + + setHintText(hintText); + setTvTitle(title, must); + isShowIbtnSelect(isShowSelect); + isShowTextView(isShowTextView); + isShowNumSubView(isShowNumSubView); + type.recycle(); + } + } + + + public InputLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(); + } + + private void findView(){ + tvTitle = view.findViewById(R.id.tv_title); + etContent = view.findViewById(R.id.et_content); + tvContent = view.findViewById(R.id.tv_content); + numAddSubView = view.findViewById(R.id.numAddSubView); + ibtnSelect = view.findViewById(R.id.ibtn_select); + } + + private void initView() { + + if (view == null) { + view = View.inflate(getContext(), R.layout.layout_input, this); + AutoUtils.auto(view); + findView(); + } + + + + etContent.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { + + if (event != null) { + return (event.getKeyCode() == KeyEvent.KEYCODE_ENTER); + } else { + return false; + } + } + }); + + } + + public void setTvTitle(String title, boolean must) { + + if (must) { + String mustTitle = title + "*"; + tvTitle.setText(Html.fromHtml(mustTitle + ":")); + } else { + tvTitle.setText(title + ":"); + } + } + + public void isShowIbtnSelect(boolean isShow) { + ibtnSelect.setVisibility(isShow ? VISIBLE : GONE); + } + + public void isShowTextView(boolean isShow) { + + if (isShow) { + tvContent.setVisibility(VISIBLE); + etContent.setVisibility(GONE); + } + } + + public void isShowNumSubView(boolean isShow) { + numAddSubView.setVisibility(isShow ? VISIBLE : GONE); + } + + /** + * 设置选择控件的点击事件 + * + * @param listener + */ + public void setIbtnSelectOnClickListener(OnClickListener listener) { + ibtnSelect.setOnClickListener(listener); + } + + /** + * 设置文本框点击事件 + * + * @param listener + */ + public void setTvContentOnClickListener(OnClickListener listener) { + tvContent.setOnClickListener(listener); + } + + + /** + * 设置文本内容 + * + * @param content + */ + public void setContent(String content) { + + if (tvContent.getVisibility() == VISIBLE) { + tvContent.setText(content); + } else { + etContent.setText(content); + } + } + + public void setHintText(String hintText) { + tvContent.setHint(hintText); + } + + /** + * 获取文本内容 + * + * @return + */ + public String getContent() { + String content; + if (tvContent.getVisibility() == VISIBLE) { + content = tvContent.getText().toString(); + } else { + content = etContent.getText().toString(); + } + return content; + } + + /** + * 设置为+号的按钮 + */ + public void setIbtnSelectIcon() { + ibtnSelect.setImageResource(R.mipmap.add_gray); + } + + /** + * 获取加减控件的值 + * + * @return + */ + public String getNum() { + return numAddSubView.getNum(); + } + + public void setNum(String num) { + numAddSubView.setNum(num); + } + + /** + * 设置不可编辑 + * + * @param enabled + */ + @Override + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + + etContent.setVisibility(VISIBLE); + tvContent.setVisibility(GONE); + + etContent.setEnabled(enabled); + tvContent.setEnabled(enabled); + ibtnSelect.setEnabled(enabled); + numAddSubView.setEnabled(enabled); + } + + /** + * 设置为数字类型的InputType + */ + public void setEtNumInputType() { + etContent.setInputType(InputType.TYPE_CLASS_NUMBER); + } + + /** + * 设置为数字类型的InputType 可加小数点 + */ + public void setNo() { + etContent.setInputType(InputType.TYPE_CLASS_PHONE); + } +} diff --git a/app/src/main/java/com/rehome/dywoa/weiget/NumAddSubView.java b/app/src/main/java/com/rehome/dywoa/weiget/NumAddSubView.java new file mode 100644 index 0000000..fefc69c --- /dev/null +++ b/app/src/main/java/com/rehome/dywoa/weiget/NumAddSubView.java @@ -0,0 +1,118 @@ +package com.rehome.dywoa.weiget; + + +import android.content.Context; +import android.content.res.TypedArray; +import androidx.annotation.Nullable; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.TextView; +import com.rehome.dywoa.R; + +/** + * 可以加减的控件 + */ +public class NumAddSubView extends LinearLayout { + + ImageButton ibtnSub; + TextView tvNum; + ImageButton ibtnAdd; + + private View view; + + private int maxNum = 100; + private int minNum = 1; + + public NumAddSubView(Context context) { + super(context, null); + initView(); + } + + public NumAddSubView(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + initView(); + + if (attrs != null) { + TypedArray type = context.obtainStyledAttributes(attrs, R.styleable.NumAddSubView); + maxNum = type.getInt(R.styleable.NumAddSubView_maxNum, 100); + minNum = type.getInt(R.styleable.NumAddSubView_minNum, 1); + } + } + + public NumAddSubView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(); + } + + private void initView() { + + if (view == null) { + view = View.inflate(getContext(), R.layout.num_add_sub_layout, this); + findView(); + } + + tvNum.setText("1"); + } + + private void findView(){ + ibtnSub = view.findViewById(R.id.ibtn_sub); + tvNum = view.findViewById(R.id.tv_num); + ibtnAdd = view.findViewById(R.id.ibtn_add); + ibtnAdd.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int nowMax = getNum(tvNum) + 1; + if (nowMax <= maxNum) { + tvNum.setText(nowMax + ""); + if (listener != null) { + listener.numChange(tvNum.getText().toString()); + } + } + } + }); + ibtnSub.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + int nowMin = getNum(tvNum) - 1; + if (nowMin >= minNum) { + tvNum.setText(nowMin + ""); + if (listener != null) { + listener.numChange(tvNum.getText().toString()); + } + } + } + }); + } + + public void setMaxNum(int maxNum) { + this.maxNum = maxNum; + } + + public void setMinNum(int minNum) { + this.minNum = minNum; + } + + public void setNum(String num) { + tvNum.setText(num); + } + + public int getNum(TextView num) { + return Integer.parseInt(num.getText().toString()); + } + + public String getNum() { + return tvNum.getText().toString(); + } + + private NumChangeListener listener; + + public void setListener(NumChangeListener listener) { + this.listener = listener; + } + + public interface NumChangeListener { + void numChange(String num); + } +} diff --git a/app/src/main/res/drawable-xhdpi/add.png b/app/src/main/res/drawable-xhdpi/add.png new file mode 100755 index 0000000000000000000000000000000000000000..4d27ea96a0c1a466420fc7e1bd1c739aab482095 GIT binary patch literal 1070 zcmV+}1kwA6P)5dPLFAf$rOL7)Pl0-%B))F`0=rvpW5p zPCDyOr^q^w z5Y`W~z#Z=(#Tf`kKqj=$NWhq3gd3dD(r2MQw;uo{_%#UoeGjg!W6UwaMIRu30PcAU zKXD1*yhZR8fLZpXNbmwlDUbmEg)NLSD~Yw_d)czb1QA{MD8(Is2*J2-aGUW6#ssG{ z_c<81EWUCM!ePT#QXJ!yzPjw^20#h_Wbk}}6d$|=H>DCFBYXg`r~M_)e&9l>ZUF7V zUm&81i-w%%#4NPD_64yXKvVb?QXBuv*I&X9`Vu3BsGd+KCxoFs8C)^UsA*J@jp0BCE&SM&02RT!zd8FjGbDU-Q8(9w;jYB zjH_U4sCR-(J7}KMdMW%cRg7kRmeJ9~OXB}{- z^4lFiA)OhWDyh|@on-G3q#Rk*o|vTDoaRqVwnxD=OPegNtYE^Tkyqun}C>QPV}w};@x#$f<-@l*(uhi + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_normal_mj_tg.xml b/app/src/main/res/drawable/btn_normal_mj_tg.xml new file mode 100644 index 0000000..f84c333 --- /dev/null +++ b/app/src/main/res/drawable/btn_normal_mj_tg.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/btn_selector_mj_status.xml b/app/src/main/res/drawable/btn_selector_mj_status.xml new file mode 100644 index 0000000..dfebbd1 --- /dev/null +++ b/app/src/main/res/drawable/btn_selector_mj_status.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/src/main/res/drawable/btn_selector_mj_status_tg.xml b/app/src/main/res/drawable/btn_selector_mj_status_tg.xml new file mode 100644 index 0000000..efb9256 --- /dev/null +++ b/app/src/main/res/drawable/btn_selector_mj_status_tg.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_mj_apply.xml b/app/src/main/res/layout/activity_mj_apply.xml index c6a132b..4ca96c3 100644 --- a/app/src/main/res/layout/activity_mj_apply.xml +++ b/app/src/main/res/layout/activity_mj_apply.xml @@ -179,8 +179,8 @@ android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent" - android:divider="#00000000" - android:dividerHeight="0px"/> + android:divider="#dddddd" + android:dividerHeight="5dp"/> + + + + + + + + + + + + +