diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index bffa1b7..bd0cb99 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -52,6 +52,10 @@ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index bffa1b7..bd0cb99 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -52,6 +52,10 @@ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7e81e6c..2e322eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -39,6 +39,10 @@ waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index bffa1b7..bd0cb99 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -52,6 +52,10 @@ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7e81e6c..2e322eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -39,6 +39,10 @@ waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index 040202a..e447de4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -73,6 +73,10 @@ } } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { agentWeb.webCreator.webView.loadUrl(url) diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index bffa1b7..bd0cb99 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -52,6 +52,10 @@ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7e81e6c..2e322eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -39,6 +39,10 @@ waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index 040202a..e447de4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -73,6 +73,10 @@ } } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { agentWeb.webCreator.webView.loadUrl(url) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index bdae44e..6b8c1e7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -42,6 +42,15 @@ wellDetailViewModel.obtainWellDetail(wellId) } + override fun observeRequestState() { + wellDetailViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -72,15 +81,5 @@ wellLocationView.text = wellPosition } }) - wellDetailViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index bffa1b7..bd0cb99 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -52,6 +52,10 @@ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7e81e6c..2e322eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -39,6 +39,10 @@ waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index 040202a..e447de4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -73,6 +73,10 @@ } } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { agentWeb.webCreator.webView.loadUrl(url) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index bdae44e..6b8c1e7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -42,6 +42,15 @@ wellDetailViewModel.obtainWellDetail(wellId) } + override fun observeRequestState() { + wellDetailViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -72,15 +81,5 @@ wellLocationView.text = wellPosition } }) - wellDetailViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index bffa1b7..bd0cb99 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -52,6 +52,10 @@ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7e81e6c..2e322eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -39,6 +39,10 @@ waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index 040202a..e447de4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -73,6 +73,10 @@ } } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { agentWeb.webCreator.webView.loadUrl(url) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index bdae44e..6b8c1e7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -42,6 +42,15 @@ wellDetailViewModel.obtainWellDetail(wellId) } + override fun observeRequestState() { + wellDetailViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -72,15 +81,5 @@ wellLocationView.text = wellPosition } }) - wellDetailViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml deleted file mode 100644 index 831c4c4..0000000 --- a/app/src/main/res/drawable/ic_device.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index bffa1b7..bd0cb99 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -52,6 +52,10 @@ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7e81e6c..2e322eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -39,6 +39,10 @@ waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index 040202a..e447de4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -73,6 +73,10 @@ } } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { agentWeb.webCreator.webView.loadUrl(url) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index bdae44e..6b8c1e7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -42,6 +42,15 @@ wellDetailViewModel.obtainWellDetail(wellId) } + override fun observeRequestState() { + wellDetailViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -72,15 +81,5 @@ wellLocationView.text = wellPosition } }) - wellDetailViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml deleted file mode 100644 index 831c4c4..0000000 --- a/app/src/main/res/drawable/ic_device.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml deleted file mode 100644 index 52e376f..0000000 --- a/app/src/main/res/drawable/ic_location.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index bffa1b7..bd0cb99 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -52,6 +52,10 @@ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7e81e6c..2e322eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -39,6 +39,10 @@ waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index 040202a..e447de4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -73,6 +73,10 @@ } } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { agentWeb.webCreator.webView.loadUrl(url) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index bdae44e..6b8c1e7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -42,6 +42,15 @@ wellDetailViewModel.obtainWellDetail(wellId) } + override fun observeRequestState() { + wellDetailViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -72,15 +81,5 @@ wellLocationView.text = wellPosition } }) - wellDetailViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml deleted file mode 100644 index 831c4c4..0000000 --- a/app/src/main/res/drawable/ic_device.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml deleted file mode 100644 index 52e376f..0000000 --- a/app/src/main/res/drawable/ic_location.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_storage.xml b/app/src/main/res/drawable/ic_storage.xml deleted file mode 100644 index 898c1cf..0000000 --- a/app/src/main/res/drawable/ic_storage.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - diff --git a/app/build.gradle b/app/build.gradle index e1b7a51..c88fd48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,13 +67,13 @@ //沉浸式状态栏。基础依赖包,必须要依赖 implementation 'com.gyf.immersionbar:immersionbar:3.0.0' //MVVM+LiveData - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.4.1" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1' - implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0" implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" //Kotlin协程 implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1' //图片加载框架 implementation 'com.github.bumptech.glide:glide:4.9.0' //图片选择框架 @@ -92,7 +92,7 @@ implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0' //官方Json解析库 - implementation 'com.google.code.gson:gson:2.8.6' + implementation 'com.google.code.gson:gson:2.9.0' //上拉加载下拉刷新 implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0' //图表 diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..9f8c814 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt new file mode 100644 index 0000000..b2ffb04 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/BarChart.kt @@ -0,0 +1,50 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.BarChart +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun BarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + xAxis.labelRotationAngle = -45f //X轴标签斜45度 + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt new file mode 100644 index 0000000..671d455 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/HorizontalBarChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.HorizontalBarChart +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.github.mikephil.charting.formatter.ValueFormatter +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun HorizontalBarChart.init(context: Context, barLabels: MutableList) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + if (barLabels.isEmpty()) { + this.clearValues() + return + } + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.animateY(1200, Easing.EaseInOutQuad) + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.setScaleEnabled(false) + //去掉描述 + this.description.isEnabled = false + //去掉图例 + this.legend.isEnabled = false + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.labelCount = barLabels.size // 设置x轴上的标签个数 + xAxis.valueFormatter = object : ValueFormatter() { + override fun getFormattedValue(value: Float): String { + return barLabels[value.toInt()] + } + } + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt new file mode 100644 index 0000000..82ee407 --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/LineChart.kt @@ -0,0 +1,49 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.LineChart +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.components.XAxis +import com.github.mikephil.charting.components.YAxis +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun LineChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setDrawGridBackground(false) + this.setDrawBorders(false) + this.animateY(1200, Easing.EaseInOutQuad) + //设置样式 + val rightAxis: YAxis = this.axisRight + //设置图表右边的y轴禁用 + rightAxis.isEnabled = false + val leftAxis: YAxis = this.axisLeft + leftAxis.axisMinimum = 0f + this.isScaleXEnabled = true //X轴可缩放 + this.isScaleYEnabled = false //Y轴不可缩放 + //设置x轴 + val xAxis: XAxis = this.xAxis + xAxis.textColor = R.color.lib_text_color.convertColor(context) + xAxis.textSize = 10f + xAxis.setLabelCount(7, true) + xAxis.setDrawLabels(true) //绘制标签 指x轴上的对应数值 + xAxis.setDrawAxisLine(true) //是否绘制轴线 + xAxis.setDrawGridLines(false) //设置x轴上每个点对应的线 + xAxis.granularity = 1f //禁止放大后x轴标签重绘 + xAxis.position = XAxis.XAxisPosition.BOTTOM + this.extraBottomOffset = 5f //解决X轴显示不完全问题 + //去掉描述 + this.description.isEnabled = false + //设置图例 + val legend = this.legend + legend.orientation = Legend.LegendOrientation.HORIZONTAL + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt new file mode 100644 index 0000000..5d819ca --- /dev/null +++ b/app/src/main/java/com/casic/qd/smartwell/extensions/PieChart.kt @@ -0,0 +1,40 @@ +package com.casic.qd.smartwell.extensions + +import android.content.Context +import android.graphics.Color +import com.casic.qd.smartwell.R +import com.github.mikephil.charting.animation.Easing +import com.github.mikephil.charting.charts.Chart +import com.github.mikephil.charting.charts.PieChart +import com.github.mikephil.charting.components.Legend +import com.pengxh.kt.lite.extensions.convertColor +import com.pengxh.kt.lite.extensions.sp2px + +fun PieChart.init(context: Context) { + this.setNoDataText("无数据,无法渲染...") + this.setNoDataTextColor(R.color.red) + this.getPaint(Chart.PAINT_INFO).textSize = 14f.sp2px(context).toFloat() + this.setUsePercentValues(false) //百分比数字显示 + this.description.isEnabled = false + this.dragDecelerationFrictionCoef = 0.95f //图表转动阻力摩擦系数[0,1] + this.setBackgroundColor(Color.WHITE) //设置图表背景色 + this.rotationAngle = 0f + this.isRotationEnabled = false + this.isHighlightPerTapEnabled = true + this.animateY(1200, Easing.EaseInOutQuad) // 设置图表展示动画效果 + this.setDrawEntryLabels(false) //不显示分类标签 + this.isDrawHoleEnabled = false //圆环显示 + this.setDrawCenterText(false) //圆环中心文字 + this.centerText = "分区用水占比图" + this.setEntryLabelColor(R.color.blue.convertColor(context)) //图表文本字体颜色 + this.setEntryLabelTextSize(12f) + //设置图表上下左右的偏移,类似于外边距,可以控制饼图大小 + this.setExtraOffsets(7.5f, 2.5f, 7.5f, 2.5f) + //设置图例位置 + val legend = this.legend + legend.verticalAlignment = Legend.LegendVerticalAlignment.BOTTOM + legend.horizontalAlignment = Legend.LegendHorizontalAlignment.CENTER + legend.orientation = Legend.LegendOrientation.HORIZONTAL + //图例是否自动换行 + legend.isWordWrapEnabled = true +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt index d41c71e..b99fa83 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderCompletedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderCompletedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt index f59c975..212e923 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderInHandleFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { orderInHandleLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt index 1f8009d..cedc1bd 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotConfirmedFragment.kt @@ -45,6 +45,10 @@ super.onResume() } + override fun observeRequestState() { + + } + override fun initEvent() { notConfirmedLayout.setOnRefreshListener { isRefresh = true diff --git a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt index 99bc1a9..15a9104 100644 --- a/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt +++ b/app/src/main/java/com/casic/qd/smartwell/fragment/OrderNotProcessedFragment.kt @@ -52,6 +52,21 @@ super.onResume() } + override fun observeRequestState() { + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + notProcessedAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { notProcessedLayout.setOnRefreshListener { isRefresh = true @@ -90,24 +105,6 @@ weakReferenceHandler.sendEmptyMessage(2022061504) } }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(requireActivity(), "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - notProcessedAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainWorkOrderList() { diff --git a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt index 07acdc8..43a9ebf 100644 --- a/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/qd/smartwell/utils/ChartViewHelper.kt @@ -1,6 +1,7 @@ package com.casic.qd.smartwell.utils import com.casic.qd.smartwell.R +import com.casic.qd.smartwell.extensions.init import com.casic.qd.smartwell.model.LineChartEntryModel import com.casic.qd.smartwell.widgets.BarChartMarkerView import com.casic.qd.smartwell.widgets.LineChartMarkerView @@ -13,7 +14,6 @@ import com.github.mikephil.charting.interfaces.datasets.IBarDataSet import com.github.mikephil.charting.interfaces.datasets.ILineDataSet import com.pengxh.kt.lite.extensions.convertColor -import com.pengxh.kt.lite.extensions.init import java.text.DecimalFormat diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt index 5239f65..bfd7344 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmManagementActivity.kt @@ -57,6 +57,21 @@ super.onResume() } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmListLayout.setOnRefreshListener { isRefresh = true @@ -95,23 +110,6 @@ weakReferenceHandler.sendEmptyMessage(2022041301) } }) - - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainAlarmListByPage() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt index e72898d..a2c81b0 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/AlarmSearchResultActivity.kt @@ -56,6 +56,31 @@ obtainSearchResult() } + override fun observeRequestState() { + searchAlarmViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //消警状态处理 + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //刷新列表 + alarmListAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { resultRefreshLayout.setOnRefreshListener { isRefresh = true @@ -94,37 +119,6 @@ weakReferenceHandler.sendEmptyMessage(2022041501) } }) - - searchAlarmViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //消警状态处理 - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //刷新列表 - alarmListAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt index 40240d5..6855e44 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/BigImageActivity.kt @@ -54,6 +54,10 @@ }) } + override fun observeRequestState() { + + } + override fun initEvent() { leftBackView.setOnClickListener { this.finish() } } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt index 04cdd6b..b492fd7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/DeviceDataDetailActivity.kt @@ -38,12 +38,20 @@ override fun initData() { deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + + } + + override fun onResume() { //默认加载近一周的数据 val time = System.currentTimeMillis() val startTime = time.timestampToLastWeekTime() val endTime = time.timestampToTime() deviceViewModel.obtainSevenDayData(deviceCode, startTime, endTime) deviceViewModel.obtainTotalDayData(deviceCode, startTime, endTime) + super.onResume() } override fun initEvent() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt index 0d8062e..4f7ae7f 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/LoginActivity.kt @@ -35,6 +35,15 @@ userDetailViewModel = ViewModelProvider(this).get(UserDetailViewModel::class.java) } + override fun observeRequestState() { + loginViewModel.loadState.observe(this, { loginState -> + when (loginState) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "登录中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { loginButton.setOnClickListener { val account = userNameView.text.toString().trim() @@ -82,16 +91,6 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "登录中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } }) } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt index 704e484..46beec5 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MainActivity.kt @@ -167,13 +167,9 @@ loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) changePwdViewModel = ViewModelProvider(this).get(ChangePasswordViewModel::class.java) - - waterViewModel.waterStatistics() } - override fun initEvent() { - navigationView.setNavigationItemSelectedListener(this) - + override fun observeRequestState() { loginViewModel.loadState.observe(this, { if (it == LoadState.Success) { AuthenticationHelper.removeToken() @@ -182,6 +178,24 @@ } }) + changePwdViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "修改中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + AuthenticationHelper.removeToken() + navigatePageTo() + PageNavigationManager.finishAllActivity() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { + navigationView.setNavigationItemSelectedListener(this) + + waterViewModel.waterStatistics() waterViewModel.resultModel.observe(this, { totalWaterView.text = String.format("${it["total"]}t") monthWaterView.text = String.format("${it["month"]}t") @@ -228,23 +242,6 @@ expandChartView.setOnClickListener { navigatePageTo() } - - changePwdViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "修改中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - AuthenticationHelper.removeToken() - navigatePageTo() - PageNavigationManager.finishAllActivity() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } override fun onDrawerSlide(drawerView: View, slideOffset: Float) { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt index 1ee58ff..d1f15bb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/MapActivity.kt @@ -99,6 +99,22 @@ } override fun initData() { + aMap = mapView.map + aMap.mapType = AMap.MAP_TYPE_NORMAL + val uiSettings = aMap.uiSettings + uiSettings.isCompassEnabled = true + uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER + uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 + + // 地图加载成功监听 + aMap.addOnMapLoadedListener(this) + // 地图缩放监听 + aMap.addOnCameraChangeListener(this) + // marker点击事件监听 + aMap.addOnMarkerClickListener(this) + // 点击marker弹出自定义popup + aMap.setInfoWindowAdapter(this) + val userDeviceJson = SaveKeyValues.getValue(LocaleConstant.USER_DEVICE_TYPE, "") as String if (userDeviceJson.isNotBlank()) { authenticatedType = Gson().fromJson( @@ -107,6 +123,18 @@ } //获取权限内所有窨井数据 deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) + } + + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + + override fun initEvent() { authenticatedType.forEach { deviceViewModel.obtainMapDeviceResult("", it) } @@ -134,11 +162,7 @@ .title(dataModel.deviceTypeName) .snippet(dataModel.deviceName) ) - } else { -// Log.d(kTag, "${dataModel.devcode}闸井经纬度不在国内,异常经纬度 ===> [${lng},${lat}]") } - } else { -// Log.d(kTag, "${dataModel.devcode}设备经纬度异常,异常经纬度 ===> [${lng},${lat}]") } } //计算所有点的中心点位置 @@ -149,34 +173,6 @@ aMap.animateCamera(cameraUpdate, 1500, null) } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - } - - override fun initEvent() { - aMap = mapView.map - aMap.mapType = AMap.MAP_TYPE_NORMAL - val uiSettings = aMap.uiSettings - uiSettings.isCompassEnabled = true - uiSettings.zoomPosition = AMapOptions.ZOOM_POSITION_RIGHT_CENTER - uiSettings.isTiltGesturesEnabled = false//不许地图随手势倾斜角度 - - // 地图加载成功监听 - aMap.addOnMapLoadedListener(this) - // 地图缩放监听 - aMap.addOnCameraChangeListener(this) - // marker点击事件监听 - aMap.addOnMarkerClickListener(this) - // 点击marker弹出自定义popup - aMap.setInfoWindowAdapter(this) } override fun onMapLoaded() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt index 6ccba4b..847c5f8 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderCompletedDetailActivity.kt @@ -27,6 +27,7 @@ class OrderCompletedDetailActivity : KotlinBaseActivity() { private lateinit var workOrderViewModel: WorkOrderViewModel + private lateinit var jobId: String private val context: Context = this@OrderCompletedDetailActivity override fun initLayoutView(): Int = R.layout.activity_order_completed_detail @@ -41,13 +42,22 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) - workOrderViewModel.obtainWorkOrderDetail(jobId) + } + + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -131,17 +141,5 @@ dispatchDateView.text = orderDetail.createTime } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt index e03d313..23d5280 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderInHandleDetailActivity.kt @@ -75,6 +75,35 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //处理完成工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { sceneEditView.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { @@ -206,18 +235,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -251,32 +268,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //处理完成工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt index 483307d..449ac37 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderManagementActivity.kt @@ -49,6 +49,10 @@ orderTabLayout.setupWithViewPager(orderViewPager) } + override fun observeRequestState() { + + } + override fun initEvent() { } diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt index a8828a9..5b38b7c 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotConfirmedDetailActivity.kt @@ -44,6 +44,7 @@ private lateinit var operationViewModel: OperationViewModel private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler + private lateinit var jobId: String private lateinit var needHandle: String private val context: Context = this@OrderNotConfirmedDetailActivity private val imagePaths: ArrayList = ArrayList() //服务器返回的拍照数据集 @@ -61,7 +62,7 @@ } override fun initData() { - val jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! + this.jobId = intent.getStringExtra(LocaleConstant.INTENT_PARAM)!! //初始化图片九宫格 imageAdapter = EditableImageAdapter(this, 3, 13f) addImageRecyclerView.adapter = imageAdapter @@ -70,8 +71,35 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) + } - workOrderViewModel.obtainWorkOrderDetail(jobId) + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + uploadImageViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //确认工单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "处理中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -96,6 +124,7 @@ } }) + workOrderViewModel.obtainWorkOrderDetail(jobId) workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { val orderDetail = it.data!![0] @@ -171,18 +200,6 @@ } }) - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - imageAdapter.setOnItemClickListener(object : EditableImageAdapter.OnItemClickListener { override fun onAddImageClick() { selectPicture() @@ -216,32 +233,6 @@ } } }) - uploadImageViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "图片上传中,请稍后...") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //确认工单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "处理中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun selectPicture() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt index f21bae3..ab1b795 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -50,6 +50,28 @@ workOrderViewModel.obtainWorkOrderDetail(jobId) } + override fun observeRequestState() { + //数据加载状态处理 + workOrderViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + this.finish() + } + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { workOrderViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -118,33 +140,5 @@ } } }) - - //数据加载状态处理 - workOrderViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - this.finish() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt index 7d3463d..a453bf4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/OrderSearchResultActivity.kt @@ -57,8 +57,31 @@ weakReferenceHandler = WeakReferenceHandler(callback) operationViewModel = ViewModelProvider(this).get(OperationViewModel::class.java) workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + workOrderViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + //接单状态处理 + operationViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "接单中,请稍后") + is LoadState.Success -> { + DialogHelper.dismissLoadingDialog() + //接单成功之后刷新数据 + searchResultAdapter.notifyItemRemoved(clickedPosition) + dataBeans.removeAt(clickedPosition) + } + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { @@ -74,6 +97,7 @@ obtainSearchResult() } + obtainSearchResult() workOrderViewModel.searchResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -99,36 +123,6 @@ weakReferenceHandler.sendEmptyMessage(2022040101) } }) - workOrderViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - - //接单状态处理 - operationViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "接单中,请稍后") - } - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - //接单成功之后刷新数据 - searchResultAdapter.notifyItemRemoved(clickedPosition) - dataBeans.removeAt(clickedPosition) - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt index f53a0d8..012e918 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/PermissionActivity.kt @@ -1,46 +1,31 @@ package com.casic.qd.smartwell.view +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity import com.amap.api.navi.NaviSetting import com.casic.qd.smartwell.R import com.casic.qd.smartwell.utils.LocaleConstant -import com.gyf.immersionbar.ImmersionBar -import com.pengxh.kt.lite.base.KotlinBaseActivity -import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil -import kotlinx.android.synthetic.main.activity_permssion.* import pub.devrel.easypermissions.EasyPermissions import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks -class PermissionActivity : KotlinBaseActivity(), PermissionCallbacks { +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { - override fun initLayoutView(): Int = R.layout.activity_permssion - - override fun setupTopBarLayout() { - ImmersionBar.with(this).statusBarDarkFont(true).init() - ImmerseStatusBarUtil.setColor(this, R.color.white.convertColor(this)) - } - - override fun initData() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 if (EasyPermissions.hasPermissions(this, *LocaleConstant.USER_PERMISSIONS)) { startSplashScreenActivity() } else { - enterMainButton.setOnClickListener { - EasyPermissions.requestPermissions( - this@PermissionActivity, - resources.getString(R.string.app_name) + "需要获取相关权限", - LocaleConstant.PERMISSIONS_CODE, - *LocaleConstant.USER_PERMISSIONS - ) - } + EasyPermissions.requestPermissions( + this@PermissionActivity, + resources.getString(R.string.app_name) + "需要获取相关权限", + LocaleConstant.PERMISSIONS_CODE, + *LocaleConstant.USER_PERMISSIONS + ) } } - override fun initEvent() { - - } - private fun startSplashScreenActivity() { //先把导航隐私政策声明,后面导航会用到 NaviSetting.updatePrivacyShow(this, true, true) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt index db0c05f..f59d552 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchAlarmActivity.kt @@ -45,6 +45,22 @@ areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) } + override fun observeRequestState() { + alarmViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { alarmTypeView.setOnClickListener { alarmViewModel.obtainAlarmType() @@ -94,17 +110,6 @@ } }) - alarmViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) - //地区三级联动 areaView.setOnClickListener { areaViewModel.obtainArea() @@ -136,16 +141,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) startTimeView.setOnClickListener { TimePickerDialog.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt index 9aa1057..431b574 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDataActivity.kt @@ -73,12 +73,29 @@ weakReferenceHandler = WeakReferenceHandler(callback) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - //默认加载所有数据 - obtainSearchResult() + override fun observeRequestState() { + deviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + //默认加载所有数据 + obtainSearchResult() deviceViewModel.deviceDataModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -105,19 +122,6 @@ } }) - deviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -158,16 +162,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt index f1937ae..ebe4ed2 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchDeviceActivity.kt @@ -99,11 +99,42 @@ deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) areaViewModel = ViewModelProvider(this).get(AreaViewModel::class.java) + } - obtainSearchResult() + override fun observeRequestState() { + searchDeviceViewModel.loadState.observe(this, { + if (!isLoadMore && !isRefresh) { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + } + }) + + deviceViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + authenticateViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + + areaViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) } override fun initEvent() { + obtainSearchResult() searchDeviceViewModel.deviceResultModel.observe(this, { if (it.code == 200) { val dataRows = it.data?.rows @@ -130,19 +161,6 @@ } }) - searchDeviceViewModel.loadState.observe(this, { - if (!isLoadMore && !isRefresh) { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - } - }) - resultRefreshLayout.setOnRefreshListener { isRefresh = true //刷新之后页码重置 @@ -281,16 +299,6 @@ } } }) - deviceViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) authenticateViewModel.resultModel.observe(this, { if (it.code == 200) { @@ -312,16 +320,6 @@ }.build().show() } }) - authenticateViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) areaViewModel.areaModel.observe(this, { if (it.code == 200) { @@ -350,16 +348,6 @@ }).build().show() } }) - areaViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } private fun obtainSearchResult() { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt index aa5a6be..b6adec3 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SearchOrderActivity.kt @@ -55,6 +55,10 @@ workOrderViewModel = ViewModelProvider(this).get(WorkOrderViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { contentTypeViewModel.obtainAlarmContent("1") contentTypeViewModel.contentModel.observe(this, { diff --git a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt index 157c5e8..4054328 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/SplashScreenActivity.kt @@ -34,6 +34,10 @@ authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { LocaleConstant.NEWS_PAGE.forEach { WebCrawler.Builder() diff --git a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt index bffa1b7..bd0cb99 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/StatisticsActivity.kt @@ -52,6 +52,10 @@ alarmViewModel = ViewModelProvider(this).get(AlarmViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt index 7e81e6c..2e322eb 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WaterExpandedActivity.kt @@ -39,6 +39,10 @@ waterViewModel = ViewModelProvider(this).get(WaterStatisticsViewModel::class.java) } + override fun observeRequestState() { + + } + override fun initEvent() { //默认选择近7天的数据 periodSpinner.setSelection(3) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt index 040202a..e447de4 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WebsiteActivity.kt @@ -73,6 +73,10 @@ } } + override fun observeRequestState() { + + } + override fun initEvent() { rightOptionView.setOnClickListener { agentWeb.webCreator.webView.loadUrl(url) diff --git a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt index bdae44e..6b8c1e7 100644 --- a/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/qd/smartwell/view/WellDetailActivity.kt @@ -42,6 +42,15 @@ wellDetailViewModel.obtainWellDetail(wellId) } + override fun observeRequestState() { + wellDetailViewModel.loadState.observe(this, { + when (it) { + is LoadState.Loading -> DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") + else -> DialogHelper.dismissLoadingDialog() + } + }) + } + override fun initEvent() { wellDetailViewModel.detailModel.observe(this, { if (it.code == 200) { @@ -72,15 +81,5 @@ wellLocationView.text = wellPosition } }) - wellDetailViewModel.loadState.observe(this, { - when (it) { - is LoadState.Loading -> { - DialogHelper.showLoadingDialog(this, "数据加载中,请稍后") - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } - }) } } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_camera.xml b/app/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index b612ce9..0000000 --- a/app/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_device.xml b/app/src/main/res/drawable/ic_device.xml deleted file mode 100644 index 831c4c4..0000000 --- a/app/src/main/res/drawable/ic_device.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_location.xml b/app/src/main/res/drawable/ic_location.xml deleted file mode 100644 index 52e376f..0000000 --- a/app/src/main/res/drawable/ic_location.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_storage.xml b/app/src/main/res/drawable/ic_storage.xml deleted file mode 100644 index 898c1cf..0000000 --- a/app/src/main/res/drawable/ic_storage.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_permssion.xml b/app/src/main/res/layout/activity_permssion.xml deleted file mode 100644 index 732e95d..0000000 --- a/app/src/main/res/layout/activity_permssion.xml +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -